{"version":3,"file":"chunk.358.65de054e0bded2b517ab.js","names":["ConsoleApiName","log","debug","info","warn","error","globalConsole","console","originalConsoleMethods","Object","keys","forEach","name","PREFIX","display","bind","DOCS_ORIGIN","catchUserErrors","fn","errorMsg","args","_i","arguments","length","apply","err","onMonitorErrorCollected","debugMode","setDebugMode","newDebugMode","monitor","callMonitored","this","context","e","displayIfDebugEnabled","__spreadArray","includes","candidate","search","indexOf","arrayFrom","arrayLike","Array","from","array","Set","item","push","i","find","predicate","objectValues","object","map","key","objectEntries","startsWith","slice","assign","target","toAssign","source","prototype","hasOwnProperty","call","getGlobalObject","globalThis","defineProperty","get","configurable","globalObject","_dd_temp_","self","window","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","test","TextEncoder","encode","Blob","size","getZoneJsOriginalValue","original","browserWindow","Zone","__symbol__","setTimeout","callback","delay","clearTimeout","timeoutId","setInterval","clearInterval","throttle","wait","options","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","leading","needTrailingExecution","trailing","inWaitPeriod","throttled","parameters","cancel","noop","jsonStringify","value","replacer","space","JSON","stringify","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","_a","objectToJson","toJSON","shallowClone","objectHasValue","some","isEmptyObject","createCustomerDataTracker","checkCustomerDataLimit","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","getBytesCount","stop","getType","isArray","mergeInto","destination","circularReferenceChecker","WeakSet","set_1","hasAlreadyBeenSeen","has","add","createCircularReferenceChecker","Date","getTime","RegExp","flags","global","ignoreCase","multiline","sticky","unicode","join","merged_1","merged","deepClone","combine","sources","sources_1","sanitize","maxCharacterCount","r","containerQueue","visitedObjectsWithPath","WeakMap","sanitizedData","sanitizeProcessor","JSON_PATH_ROOT_ELEMENT","accumulatedCharacterCount","containerToProcess","shift","separatorLength","targetData","path","warnOverCharacterLimit","parentPath","queue","sourceToSanitize","concat","toString","description","sanitizedSource","Event","isTrusted","match","sourceAsObject","currentPath","set","changeType","Observable","onFirstSubscribe","observers","subscribe","f","_this","onLastUnsubscribe","unsubscribe","filter","other","notify","data","observer","mergeObservables","observables","globalObservable","subscriptions","observable","subscription","createContextManager","customerDataTracker","changeObservable","contextManager","getContext","setContext","newContext","clearContext","setContextProperty","property","removeContextProperty","ExperimentalFeature","TrackingConsent","GRANTED","NOT_GRANTED","WRITABLE_RESOURCE_GRAPHQL","CUSTOM_VITALS","TOLERANT_RESOURCE_TIMINGS","REMOTE_CONFIGURATION","PLUGINS","enabledExperimentalFeatures","isExperimentalFeatureEnabled","featureName","performDraw","threshold","Math","random","round","num","decimals","toFixed","isPercentage","isNumber","navigationStart","ONE_SECOND","ONE_MINUTE","ONE_HOUR","relativeToClocks","relative","timeStamp","relativeTime","correctedOrigin","dateNow","performance","now","getNavigationStart","addDuration","timeStampToClocks","getRelativeTime","toServerDuration","duration","timeStampNow","relativeNow","clocksNow","clocksOrigin","elapsed","start","end","a","b","timestamp","timing","UNKNOWN_FUNCTION","computeStackTrace","ex","stack","stackProperty","tryToGetString","exString","String","split","line","stackFrame","parts","CHROME_LINE_RE","exec","isNative","isEval","submatch","CHROME_EVAL_RE","column","func","url","CHROME_ANONYMOUS_FUNCTION_RE","WINJS_LINE_RE","GECKO_LINE_RE","GECKO_EVAL_RE","message","fileUrl","filePosition","ERROR_TYPES_RE","createHandlingStack","formattedStack","Error","stackTrace","toStackTraceString","result","formatErrorMessage","frame","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","originalError","handlingStack","startClocks","nonErrorPrefix","handling","isErrorInstance","causes","flattenErrorCauses","type","fingerprint","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","cause","INTAKE_SITE_STAGING","INTAKE_SITE_US1","PCI_INTAKE_HOST_US1","sendToExtension","payload","__ddBrowserSdkExtensionCallback","getConnectivity","navigator","status","onLine","interfaces","connection","effective_type","effectiveType","removeItem","index","splice","DOM_EVENT","BoundedBuffer","buffer","remove","drain","arg","TelemetryType","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","preStartTelemetryBuffer","onRawTelemetryEventCollected","event","addTelemetryDebug","addTelemetryError","kind","scrubCustomerFrames","addTelemetryUsage","usage","allowedFrameUrl","addEventListener","configuration","eventTarget","eventName","listener","addEventListeners","eventNames","_b","once","capture","passive","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","BEFORE_UNLOAD","CLICK","DBL_CLICK","KEY_DOWN","LOAD","POP_STATE","SCROLL","TOUCH_START","TOUCH_END","TOUCH_MOVE","VISIBILITY_CHANGE","PAGE_SHOW","FREEZE","RESUME","DOM_CONTENT_LOADED","POINTER_DOWN","POINTER_UP","POINTER_CANCEL","HASH_CHANGE","PAGE_HIDE","MOUSE_DOWN","MOUSE_UP","MOUSE_MOVE","FOCUS","BLUR","CONTEXT_MENU","RESIZE","CHANGE","INPUT","PLAY","PAUSE","SECURITY_POLICY_VIOLATION","SELECTION_CHANGE","STORAGE","storageListeners","storeContextManager","productKey","customerDataType","storageKey","getFromStorage","rawContext","localStorage","getItem","parse","setItem","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","write","additionalEncodedBytesCount","finish","finishSync","rawBytesCount","pendingData","estimateEncodedBytesCount","sanitizeUser","newUser","user","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","t","getPrivacyLevel","getAllowedWebViewHosts","send","eventType","viewId","view","id","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","location","hostname","allowedHost","generateUUID","placeholder","parseInt","replace","initCookieParsed","getCurrentSiteCache","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","rawString","lastIndex","safeTruncate","suffix","lastChar","charCodeAt","correctedLength","setCookie","expireDelay","date","setTime","expires","toUTCString","sameSite","crossSite","domain","secure","partitioned","document","cookie","getCookie","getInitCookie","Map","deleteCookie","browserCache","willSyntheticsInjectRum","Boolean","_DATADOG_SYNTHETICS_INJECTS_RUM","detectBrowserCached","userAgent","chrome","vendor","documentMode","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","isSessionInNotStartedState","session","isSessionStarted","isSessionInExpiredState","isExpired","sessionState","created","Number","expire","expandSessionState","toSessionString","toSessionState","sessionString","entry","matches","retrieveSessionCookie","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","ongoingOperations","bufferedOperations","processSessionStoreOperations","operations","sessionStoreStrategy","numberOfRetries","n","isLockEnabled","persistSession","expireSession","persistWithLock","lock","currentLock","retrieveStore","retrieveSession","next","currentStore","retryLater","processedSession","process","after","sessionStore","currentNumberOfRetries","nextOperations","selectSessionStoreStrategyType","sessionStoreStrategyType","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","testCookieName","domainLevels","candidateDomain","pop","testCookieValue","isCookieCorrectlySet","allowFallbackToLocalStorage","testKey","retrievedId","normalizeUrl","buildUrl","href","base","supportedURL","isURLSupported","originalURL","doc","anchorElement","createElement","baseElement","implementation","createHTMLDocument","head","appendChild","body","URL","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","proxy","normalizedProxyUrl_1","encodeURIComponent","host","site","internalAnalyticsSubdomain","usePciIntake","domainParts","extension","build","api","clientToken","retry","encoding","tags","count","lastFailureStatus","reverse","urlPrefix","FORBIDDEN_CHARACTERS","buildTag","rawValue","valueSizeLimit","sanitizedValue","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","ALL","SAMPLED","checkIfString","tag","tagName","isMatchOption","itemType","matchList","list","useStartsWith","clearTracingIfNeeded","isAborted","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","inject","getCrypto","findTrackedSession","propagatorTypes","tracingHeaders","tracingOption","allowedTracingUrls","traceSampleRate","traceContextInjection","TraceIdentifier","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","b3","crypto","msCrypto","Uint8Array","getRandomValues","radix","high","readInt32","low","str","mod","floor","offset","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","applicationId","sessionReplaySampleRate","excludedActivityUrls","service","tracingOptions_1","option","expectedItem","baseConfiguration","o","sessionSampleRate","telemetrySampleRate","telemetryConfigurationSampleRate","telemetryUsageSampleRate","version","env","trackingConsent","beforeSend","_c","_d","_e","storeContextsAcrossPages","batchBytesLimit","eventRateLimiterThreshold","maxTelemetryEventsPerPage","flushTimeout","batchMessagesLimit","messageBytesLimit","datacenter","endpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","intakeUrlPrefixes","builder","replicaConfiguration","replica","replicaEndpointBuilders","isIntakeUrl","intakeEndpoint","actionNameAttribute","startSessionReplayRecordingManually","workerUrl","compressIntakeRequests","trackUserInteractions","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","enablePrivacyForActionName","customerDataTelemetrySampleRate","plugins","getSelectedTracingPropagators","usedTracingPropagators","displayRemoteConfigurationFetchingError","PageExitReason","HIDDEN","UNLOADING","PAGEHIDE","FROZEN","isPageExitReason","reason","getMutationObserverConstructor","constructor","MutationObserver","originalInstance","runOnReadyState","expectedReadyState","readyState","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","_","areInOrder","numbers","computePerformanceResourceDetails","isValidEntry","startTime","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","details","download","formatTiming","responseEnd","first_byte","connect","ssl","dns","redirect","areCommonTimingsInOrder","areRedirectionTimingsInOrder","origin","computeSize","encodedBodySize","decodedBodySize","encoded_body_size","decoded_body_size","transfer_size","transferSize","isAllowedRequestUrl","DATA_URL_REGEX","isLongDataUrl","substring","sanitizeDataUrl","isTextNode","node","nodeType","Node","TEXT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","child","firstChild","nextSibling","getParentNode","parentNode","RumPerformanceEntryType","getDocumentTraceId","traceIdMeta","querySelector","traceTimeMeta","createDocumentTraceData","content","comment","childNodes","getTraceCommentFromNode","traceTime","rawTraceTime","COMMENT_NODE","supportPerformanceObject","supportPerformanceTimingEvent","entryType","PerformanceObserver","supportedEntryTypes","startPerformanceCollection","lifeCycle","cleanupTasks","forcedAttributes","RESOURCE","NAVIGATION","getEntriesByType","navigationEntry","relativePerformanceTiming","computeRelativePerformanceTiming","renderBlockingStatus","handleRumPerformanceEntries","performanceEntries_1","getEntries","handlePerformanceEntryList_1","entries","mainEntries","LONG_TASK","PAINT","experimentalEntries","LARGEST_CONTENTFUL_PAINT","FIRST_INPUT","LAYOUT_SHIFT","EVENT","observe","buffered","durationThreshold","disconnect","mainObserver_1","entryTypes","removePerformanceListener","clearResourceTimings","sendFakeTiming","stopFirstInputTiming","startTimeStamp","timingSent","removeEventListeners","evt","cancelable","processingStart","processingEnd","sendTiming","task","numberKey","timingElement","rumAllowedPerformanceEntries","loadEventEnd","ErrorSource","createEventRateLimiter","limit","onLimitReached","eventCount","allowNextEvent","isLimitReached","current","fields","field","isValidObject","isValidObjectContaining","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","ROOT_MODIFIABLE_FIELD_PATHS","startRumAssembly","viewContexts","urlContexts","actionContexts","displayContext","ciVisibilityContext","getCommonContext","reportError","u","h","resource","action","long_task","vital","eventRateLimiters","syntheticsContext","testId","_DATADOG_SYNTHETICS_PUBLIC_ID","resultId","_DATADOG_SYNTHETICS_RESULT_ID","test_id","result_id","injected","rawRumEvent","domainContext","savedCommonContext","customerContext","viewContext","findView","urlContext","findUrl","commonContext","actionId","findActionId","serverRumEvent","_dd","format_version","drift","session_sample_rate","session_replay_sample_rate","browser_sdk_version","application","referrer","synthetics","ci_test","connectivity","has_replay","hasReplay","sampled_for_replay","sessionReplay","usr","modifiableFieldPaths","modifier","clone","fieldPath","fieldType","newValue","newType","xhrObservable","LifeCycle","AbstractLifeCycle","callbacks","eventCallbacks","END_OF_TIMES","Infinity","ValueHistory","maxEntries","clearOldValuesInterval","clearOldValues","endTime","close","unshift","returnInactive","closeActive","latestEntry","findAll","reset","oldTimeThreshold","instrumentMethod","targetPrototype","method","onPreCall","computeHandlingStack","stopped","instrumentation","postCallCallback","onPostCall","instrumentSetter","originalDescriptor","getOwnPropertyDescriptor","stoppedInstrumentation","instrumentationWrapper","fetchObservable","xhrContexts","openXhr","xhr","state","toUpperCase","abortXhr","nextRequestIndex","startRequestCollection","tracer","traceFetch","input","Request","init","headers","append","headers_1","Headers","header","traceXhr","setRequestHeader","stopInstrumentingStart","XMLHttpRequest","stopInstrumentingSend","startContext","hasBeenReported","stopInstrumentingOnReadyStateChange","DONE","onEnd","unsubscribeLoadEndListener","completeContext","stopInstrumentingAbort","requestIndex","getNextRequestIndex","fetch","methodFromParams","responsePromise","reportFetch","response","DOMException","code","ABORT_ERR","responseType","then","clonedResponse","stream","reader","getReader","chunks","readBytesCount","onDone","catch","collectStreamBody","completeBuffer_1","offset_1","chunk","bytesLimit","readMore","read","done","POSITIVE_INFINITY","discardNegativeDuration","trackEventCounts","isChildEvent","onChange","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","request","stopTrackingWindowOpen","s","isBusy","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","complete","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","requestUrl","cssEscape","CSS","escape","ch","asCodePoint","elementMatches","element","selector","msMatchesSelector","getParentElement","parentElement","initialValues","delete","NodePrivacyLevel","IGNORE","PRIVACY_ATTR_NAME","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","OUTPUT","TEXTAREA","SELECT","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","cache","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","inputElement","autocomplete","getAttribute","getPrivacySelector","nodeName","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","hasAttribute","toLowerCase","shouldMaskNode","privacyLevel","isFormElement","getTextContent","textNode","ignoreWhiteSpace","parentTagName","textContent","trim","text","censorText","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElement","userProgrammaticAttribute","defaultActionName","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosestResult","HTMLElement","closest","truncate","normalizeWhitespace","supportsLabelPropertyResult","privacy","HTMLInputElement","labels","getTextualContent","label","ownerDocument","querySelectorAll","htmlFor","privacyEnabledActionName","labelledByAttribute","refElement","getElementById","strategies","recursionCounter","strategies_1","name_1","trimmedName","isContentEditable","text_1","innerText","removeTextFromElements","query","element_1","textToReplace","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","classList","classes","className","getSelectorFromElement","isConnected","documentElement","contains","targetElementSelector","currentElement","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","attributeName","sibling","firstElementChild","elementIndex","nextElementSibling","selectorGetters","childSelector","selectorGetters_1","elementSelector","currentElementSelector","isSiblingMatching","scopedSelector_1","parent","isSelectionEmpty","selection","getSelection","isCollapsed","isValidPointerEvent","Element","isPrimary","isDead","click","hasPageActivity","getUserActivity","scroll","trackClickActions","currentClickChain","history","stopObservable","stopClickChain","stopActionEventsListener","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","listeners","localUserActivity_1","pointerDownEvent","clickActionBase","rect","getBoundingClientRect","width","height","position","x","clientX","left","y","clientY","top","hadActivityOnPointerDown","pageActivityEndEvent","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","viewEndedSubscription","endClocks","stopSubscription","tryAppend","rageClick_1","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","tryFinalize","dontAcceptMoreClick","every","isStopped","first","second","sqrt","pow","clicks","rageClick","isRage","addFrustration","hasError","hasSelectionChanged","validate","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","counts","events","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","actionEvent","in_foreground","wasInPageStateAt","consoleObservablesByApi","RawReportType","buildStack","sourceFile","lineNumber","columnNumber","undefined","startErrorCollection","featureFlagContexts","errorObservable","apis","consoleObservables","originalConsoleApi","params","param","firstErrorParam","consoleError","handleRuntimeError","rawError","stopInstrumentingOnError","messageObj","errorObj","stopInstrumentingOnUnhandledRejection","trackRuntimeError","blockedURI","effectiveDirective","subtype","originalPolicy","originalReport","reportTypes","ReportingObserver","handleReports","reports","report","types","csp","disposition","handling_stack","source_type","featureFlagContext","findFeatureFlagEvaluations","feature_flags","addError","alreadyMatchedEntries","processResourceEntry","tracingInfo","trace_id","rule_psr","getRulePsr","statusCode","pathname","RESOURCE_TYPES_1","entryMetrics","computePerformanceEntryMetrics","resourceEvent","status_code","responseStatus","performanceEntry","render_blocking_status","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","entries_1","navigationTimings","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","firstByte","firstHidden","stopListeners","visibilityState","stopFCPTracking","firstContentfulPaint","fcpEntry","stopLCPTracking","firstInteractionTimestamp","stopEventListener","biggestLcpSize","unsubscribeLifeCycle","largestContentfulPaint","lcpEntry","lcpTargetSelector","targetSelector","stopFIDTracking","firstInput","firstInputEntry","firstInputDelay","firstInputTargetSelector","time","getTargetFromSource","viewportObservable","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","getInteractionCount","interactionCount","getScrollX","scrollX","visual","visualViewport","pageLeft","offsetLeft","pageXOffset","getScrollY","scrollY","pageTop","offsetTop","pageYOffset","initViewportObservable","updateDimension","getViewportDimension","scale","innerWidth","innerHeight","trackCommonViewMetrics","loadingType","viewStart","commonViewMetrics","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","newLoadingTime","max","loadingTime","stopLoadingTimeTracking","stopScrollMetricsTracking","scrollValues","throttleDuration","ResizeObserver","throttledNotify_1","scrollTop","scrollHeight","scrollingElement","scrollDepth","observerTarget_1","resizeObserver_1","eventListener_1","unobserve","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","shouldUpdate","maxDepth","min","maxDepthScrollTop","newScrollMetrics","stopCLSTracking","maxClsTarget","maxClsStartTime","maxClsValue","cumulatedValue","maxValue","update","isMaxValue","hadRecentInput","WeakRef","deref","cumulativeLayoutShift","viewLoadingType","PerformanceEventTiming","getInteractionToNextPaint","setViewEnd","interactionToNextPaintTargetSelector","interactionToNextPaintStartTime","interactionId","previousInteractionCount","computeViewInteractionCount","getViewInteractionCount","stopViewInteractionCount","viewEnd","longestInteractions","sortAndTrimLongestInteractions","sort","interactionIndex","findIndex","interaction","minLongestInteraction","estimateP98Interaction","interactionToNextPaint","viewEndTime","newInteraction","stopINPTracking","getCommonViewMetrics","getPathFromHash","hash","startViewCollection","locationChangeObservable","recorderApi","initialViewOptions","l","c","d","p","m","g","v","w","replayStats","getReplayStats","pageStates","viewEvent","document_version","documentVersion","replay_stats","page_states","start_session_replay_recording_manually","cumulative_layout_shift","cumulative_layout_shift_time","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","_f","dom_interactive","_g","first_contentful_paint","first_input_delay","_h","first_input_time","_j","first_input_target_selector","_k","interaction_to_next_paint","_l","interaction_to_next_paint_time","_m","interaction_to_next_paint_target_selector","_o","is_active","isActive","largest_contentful_paint","_p","largest_contentful_paint_target_selector","_q","load_event","_r","loading_type","time_spent","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","sessionIsActive","replay_level","customTimings","custom_timings","newObject","areViewsTrackedAutomatically","locationChangeSubscription","activeViews","currentView","startNewView","viewOptions","newlyCreatedView","initialLocation","viewCreatedEvent","triggerViewUpdate","cancelScheduleViewUpdate","stopCommonViewMetricsTracking","stopInitialViewMetricsTracking","stopEventCountsTracking","keepAliveIntervalId","currentEnd","addTiming","sanitized","pageExitEvent","currentLocation","otherLocation","correspondingId","oldLocation","newLocation","startView","stopCallbacks","startSessionManager","computeSessionState","trackingConsentState","renewObservable","expireObservable","sessionCache","cookieStore","sessionStateUpdateObservable","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","LOGS_SESSION_KEY","RUM_SESSION_KEY","watchSessionTimeoutId","getExpiredSessionState","synchronizeSession","startSession","synchronizedSession","trackingType","isTracked","hasSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","previousState","newState","expandOrRenewSession","expandSession","getSession","restartSession","updateSessionState","partialSessionState","startSessionStore","sessionContextHistory","buildSessionContext","isReplayForced","forcedReplay","isGranted","expandSessionWhenVisible","visibilityCheckInterval","cb","findSession","isTypeTracked","rumSessionType","Batch","encoder","flushController","upsertBuffer","flushSubscription","flushObservable","flush","addOrUpdate","upsert","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","bytesCount","serializedMessage","estimatedMessageBytesCount","hasMessageFor","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","removedMessage","messageBytesCount","notifyAfterRemoveMessage","MAX_QUEUE_BYTES_COUNT","sendWithRetryStrategy","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","dequeue","currentBackoffTime","ongoingRequestCount","isFull","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","fetchUrl","keepalive","mode","xhrUrl","sendXHR","sendBeacon","beaconUrl","hasReportedBeaconError","open","startRumBatch","telemetryEventObservable","pageExitObservable","sessionExpireObservable","createEncoder","batch","primary","primaryBatch","createBatch","replicaBatch","endpoint","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","flushReason","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","replicated","transformMessage","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","measure","sum","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","getPageState","hasFocus","watchCookieFallback","cookieName","previousCookieValue","watchCookieIntervalId","cookieValue","statsPerView","CI_VISIBILITY_TEST_ID_COOKIE_NAME","getSegmentsCount","getOrCreateReplayStats","segments_count","records_count","segments_total_raw_size","isFirst_1","_value","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","RecordType","NodeType","IncrementalSource","MouseInteractionType","MediaInteractionType","serializeStyleSheets","cssStyleSheets","cssStyleSheet","rules","cssRules","cssRule","cssText","disabled","media","serializeAttribute","attributeValue","image","naturalWidth","naturalHeight","getCssRulesString","cssHref","getCssRuleStringForSafari","getCssRuleString","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","quote","baseUrl","rule","selectorText","styleSheet","serializeNodeWithId","serializedNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","isShadowRoot","serializationContext","shadowRootsController","addShadowRoot","DOCUMENT_TYPE_NODE","documentType","publicId","systemId","el","isSVG","SVGElement","attributes","rr_width","rr_height","safeAttrs","formValue","optionElement","selected","stylesheet","styleSheets","_cssText","sheet","scrollLeft","checked","mediaElement","rr_mediaState","paused","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","CDATA_SECTION_NODE","_nextId","serializedNodeWithId","serializeNodeId","childNode","serializedChildNode","serializeDocument","isTouchEvent","changedTouches","getEventTarget","composed","composedPath","assembleIncrementalSnapshot","Qa","trackMove","moveCb","coordinates","tryToComputeCoordinates","timeOffset","positions","updatePosition","cancelThrottle","removeListener","normalized","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","abs","convertMouseEventToLayoutCoordinates","isFinite","eventTypeToMouseInteraction","trackMouseInteraction","mouseInteractionCb","recordIds","record","getIdForEvent","trackScroll","scrollCb","scrollPositions","trackViewportResize","viewportResizeCb","viewportResizeSubscription","trackMediaInteraction","mediaInteractionCb","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","ownerNode","instrumentationStoppers","CSSStyleSheet","adds","removes","instrumentGroupingCSSRuleClass","cls","parentStyleSheet","getPathToNestedCSSRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","stopper","currentRule","parentRule","index_1","trackFocus","focusCb","has_focus","trackFrustration","frustrationCb","frustrationSubscription","trackViewEnd","viewEndCb","viewEndSubscription","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","stopEventListeners","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","inputState","isChecked","cbWithDedup","lastInputState","trackMutation","mutationCallback","mutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","throttledFlush","addMutations","mutations","opts","requestIdleCallback","cancelIdleCallback","id_1","requestAnimationFrame","cancelAnimationFrame","timeout","createMutationBatch","nodePrivacyLevelCache","mutation","removedNodes","removedNode","traverseRemovedShadowDom","removeShadowRoot","filteredMutations","addedAndMovedNodes","addedNodes","mutations_1","sortedAddedAndMovedNodes","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","getNextSibling","parentId","removedNodeMutations","texts","textMutations","handledNodes","filteredMutations_1","oldValue","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","takeRecords","attributeOldValue","characterData","characterDataOldValue","childList","subtree","shadowDomRemovedCallback","Segment","creationReason","encodedBytesCount","metadata","creation_reason","has_full_snapshot","index_in_view","addRecord","prefix","additionalBytesCount","isBrowserSupported","createObjectURL","NodeList","createDeflateEncoder","worker","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","trailer","nextPendingAction","writeCallback","byteLength","finishCallback","consumeResult","buffers","reduce","total","buffers_1","sendResetIfNeeded","postMessage","pendingWriteAction","createDeflateWorker","Worker","startDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","removeErrorListener_1","onError","removeMessageListener_1","initializationFailureCallbacks","getDeflateWorkerStatus","baseMessage","worker_version","stream_id","startRecordingImpl","onRumStart","isRecording","getSessionReplayLink","startStrategy","stopStrategy","getSessionReplayLinkStrategy","cachedDeflateEncoder","force","deflateEncoder","makeRecorderApi","stopRecording","httpRequest","replayRequest","SEGMENT_BYTES_LIMIT","segmentCollection","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","segment","rawSegmentBytesCount","formData","FormData","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","serializedMetadataAndSegmentSizes","expirationTimeoutId","startSegmentCollection","emit","scrollPositionsByElement","emitAndComputeStats","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","stopFullSnapshots","flushMutations","fullSnapshotCallback","takeFullSnapshot","records","initialOffset","trackers","viewEndRecord","tracker","setForcedReplay","isRecordingStarted","errorType","sessionId","rumConfiguration","datadogRum","startRumImpl","currentConsent","customerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","initialBytesCount","bytesCountLimit","createDetachedTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","clear","globalContextManager","userContextManager","tryToInit","stub","publicApi","strategy","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","startRumResult","doInit","eventBridgeAvailable","baseSerializedConfiguration","telemetry_sample_rate","telemetry_configuration_sample_rate","telemetry_usage_sample_rate","use_before_send","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","allow_fallback_to_local_storage","store_contexts_across_pages","allow_untrusted_events","tracking_consent","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","enable_privacy_for_action_name","use_excluded_activity_urls","use_worker_url","compress_intake_requests","track_views_manually","track_user_interactions","track_resources","track_long_task","plugin","getConfigurationTelemetry","enableExperimentalFeatures","flag","methodName","parameter","plugins_1","onInit","remoteConfigurationId","responseText","remoteInitConfiguration","getInternalContext","stopSession","addAction","providedError","addFeatureFlagEvaluation","startDurationVital","vitalStart","stopDurationVital","createPreStartStrategy","rumPublicApi","feature","stopClocks","stopTime","telemetry","telemetryService","contextProvider","alreadySentEvents","telemetryEnabled","telemetryEnabledPerType","runtimeEnvInfo","is_local_file","protocol","is_worker","rawEvent","stringifiedEvent","event_1","runtime_env","experimental_features","setContextProvider","provider","enabled","bridge_1","currentContext","stopBeforeUnloadListener","rawTrackingType","sessionEntity","batch_1","batchFlushObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","onLocationChange","stopHashTracking","onHashChange","viewContextHistory","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","persisted","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","wasInPageStateDuringPeriod","viewport","viewportDimension","cookieObservable","detectCookieChangeStrategy","changeEvent","changed","deleted","testExecutionId","Cypress","cookieObservableSubscription","test_execution_id","stopRumEventCollection","matchingTiming","sameNameEntries","getEntriesByName","candidates","span_id","correspondingTimingOverrides","requestInput","requestInit","startResourceCollection","stopViewCollection","stopPerformanceCollection","vitalCollection","vitalStartsByName","vitalStop","valueComputedBySdk","custom","computed_value","internalContext","application_id","session_id","user_action","preStartStrategy","sanitizedOptions","setTrackingConsent","setGlobalContext","getGlobalContext","setGlobalContextProperty","removeGlobalContextProperty","clearGlobalContext","getInitConfiguration","setUser","isValid","getUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","startSessionReplayRecording","stopSessionReplayRecording","onReady","enumerable","existingGlobalVariable","q","commonjsGlobal","exports","getDefaultExportFromCjs","__esModule","default","hasRequiredIndex254d04f0","index254d04f0","requireIndex254d04f0","localTransformTagName","getNamespacedTagFor","Proxy","thisArg","Reflect","isElementWithTagName","setTransformTagName","transform","hasRequiredMarketAccessory_cjs_entry","hasRequiredIndexC43effe9","hasRequiredMarketAccordionItem_cjs_entry","_commonjsHelpers","require","index_cjs$1","loader_cjs","index37364565","marketAccessory_cjs_entry","marketAccordionItem_cjs_entry","indexC43effe9","requireIndexC43effe9","ACCORDION_HEADING_10_VARIANT_EXPANDED_PHASE_ICON_ASSET","ACCORDION_HEADING_20_VARIANT_EXPANDED_PHASE_ICON_ASSET","ACCORDION_HEADING_30_VARIANT_EXPANDED_PHASE_ICON_ASSET","BUTTON_GROUP_OVERFLOW_BUTTON_ICON_ASSET","BUTTON_GROUP_SPACING","CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION","CORE_ANIMATION_EXIT_TRANSITION_FAST_SPEED_DURATION","CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION","CORE_BLUE_FILL_COLOR","CORE_BREAKPOINT_NARROW_MAX_WIDTH","CORE_BROWN_FILL_COLOR","CORE_BURGUNDY_FILL_COLOR","CORE_FOREST_FILL_COLOR","CORE_GOLD_FILL_COLOR","CORE_GREEN_FILL_COLOR","CORE_ORANGE_FILL_COLOR","CORE_PINK_FILL_COLOR","CORE_PURPLE_FILL_COLOR","CORE_RED_FILL_COLOR","CORE_SKY_FILL_COLOR","CORE_TAUPE_FILL_COLOR","CORE_TEAL_FILL_COLOR","CORE_TYPE_PARAGRAPH_20_FONT_FAMILY","CORE_TYPE_PARAGRAPH_20_SIZE","CORE_TYPE_PARAGRAPH_30_FONT_FAMILY","CORE_TYPE_PARAGRAPH_30_SIZE","CORE_YELLOW_FILL_COLOR","HEADER_CLOSE_BUTTON_ICON_ASSET","MODAL_DIALOG_ANIMATION_ENTER_TRANSITION_DURATION","MODAL_DIALOG_ANIMATION_EXIT_TRANSITION_DURATION","MODAL_FULL_ANIMATION_ENTER_TRANSITION_DURATION","MODAL_FULL_ANIMATION_EXIT_TRANSITION_DURATION","MODAL_PARTIAL_ANIMATION_ENTER_TRANSITION_DURATION","MODAL_PARTIAL_ANIMATION_EXIT_TRANSITION_DURATION","MODAL_SHEET_HANDLE_HEIGHT","MODAL_SHEET_HANDLE_PADDING_BOTTOM_SIZE","MODAL_SHEET_HANDLE_PADDING_TOP_SIZE","ROW_FOCUS_RING_BORDER_SIZE","ROW_FOCUS_RING_BUFFER_SIZE","ROW_MEDIUM_SIZE_CARET_ICON_ASSET","ROW_SMALL_SIZE_CARET_ICON_ASSET","SEGMENTED_CONTROL_PADDING_HORIZONTAL","TEXTAREA_MAXIMUM_HEIGHT","hasRequiredElementTypeGuardE6549907","hasRequiredMarketActionCard_cjs_entry","marketActionCard_cjs_entry","elementTypeGuardE6549907","requireElementTypeGuardE6549907","isCheckboxElement","isRadioElement","isRowElement","isToggleElement","hasRequiredMarketActivityIndicator_cjs_entry","hasRequiredMarketActivityIndicatorBar_cjs_entry","hasRequiredClassnames6fb22aa3","marketActivityIndicator_cjs_entry","marketActivityIndicatorBar_cjs_entry","marketBanner_cjs_entry","classnames6fb22aa3","requireClassnames6fb22aa3","classNames","_len2","_key2","cn","hasRequiredV48e8d6fbc","hasRequiredMarketBanner_cjs_entry","v48e8d6fbc","requireV48e8d6fbc","rnds8","rng","REGEX","byteToHex","substr","v4","buf","rnds","i2","arr","uuid","TypeError","hasRequiredDialog8459b0d0","marketBlade_cjs_entry","dialog8459b0d0","requireDialog8459b0d0","ALL_DIALOG_TYPES","DIALOGS_META","veil","blade","dialog","getDialogSelector","setupDialogCompactHandler","modal","main","compact","cachedPaddingTop","scheduledUpdate","updateCompactState","headingDiv","headingDivStyles","getComputedStyle","marginTop","style","paddingTop","lastArgs","frameId","wrapperFn","_len","_key","hasRequiredFocusTrapD7750c92","hasRequiredMarketBlade_cjs_entry","focusTrapD7750c92","requireFocusTrapD7750c92","candidateSelectors","candidateSelector","NoElement","webkitMatchesSelector","getRootNode","_element$getRootNode","isInert","isInert2","lookUp","_node$getAttribute","inertAtt","getCandidates","includeContainer","getCandidatesIteratively","getCandidatesIteratively2","elements","elementsToCheck","assigned","assignedElements","nestedCandidates","children","flatten","scopeParent","getShadowRoot","validShadowRoot","shadowRootFilter","_nestedCandidates","hasTabIndex","isNaN","getTabIndex","tabIndex","_node$getAttribute2","attValue","sortOrderedTabbables","documentOrder","isInput","isZeroArea","_node$getBoundingClie","isNodeMatchingSelectorFocusable","_ref","displayCheck","visibility","nodeUnderDetails","originalNode","rootNode","assignedSlot","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","nodeRoot","nodeRootHost","attached","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","getClientRects","isNodeMatchingSelectorTabbable","radioSet","radioScope","form","queryRadios","nodes","isValidShadowRootTabbable","shadowHostNode","sortByOrder","sortByOrder2","regularTabbables","orderedTabbables","isScope","candidateTabindex","acc","sortable","isTabbable","focusableCandidateSelector","isFocusable","_arrayLikeToArray","_defineProperty","Symbol","toPrimitive","writable","ownKeys","getOwnPropertySymbols","r2","_objectSpread2","getOwnPropertyDescriptors","defineProperties","isTabEvent","keyCode","isKeyForward","shiftKey","isKeyBackward","valueOrHandler","getActualTarget","internalTrapStack","createAndActivateFocusTrap","_ref8","activateOptions","trapStack","userOptions","trap","config","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","active","manuallyPaused","delayInitialFocusTimer","recentNavEvent","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","container","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","iterator","_nonIterableSpread","getInitialFocusNode","tabbableOptions","activeElement","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","nextTabbableNode","forward","nodeIdx","group","_getActiveElement","_tryFocus","focus","preventScroll","select","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","_destinationGroupIndex","_destinationGroup","checkPointerDown","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","preventDefault","checkFocusIn","targetContained","Document","nextNode","stopImmediatePropagation","navAcrossContainers","mruContainerIdx","mruTabIdx","checkTabKey","checkEscapeKey","checkClick","addListeners","activeTrap","_setPausedState","trapIndex","removeListeners","removeEventListener","mutationObserver","updateObservedNodes","activate","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","_isManuallyPaused","finishDeactivation","pause","pauseOptions","unpause","unpauseOptions","updateContainerElements","containerElements","elementsAsArray","onPause","onPostPause","onUnpause","onPostUnpause","createFocusTrap","hasRequiredAria71b861a0","hasRequiredMarketButton_cjs_entry","marketButton_cjs_entry","aria71b861a0","requireAria71b861a0","applyExpandableAriaControls","controlEl","_ref9","expanded","popoverId","setAttribute","getControlInputAriaLabel","attrIsValid","attr","controlAriaLabel","ariaLabelledBy","labelledByText","ariaLabel","getTextInputAriaLabel","inputEl","slottedLabel","innerHTML","observeAriaAttributes","onMutationObserved","ariaAttributes","getAttributeNames","hasRequiredDropdownB9b27ed3","hasRequiredMarketButtonDropdown_cjs_entry","marketButtonDropdown_cjs_entry","dropdownB9b27ed3","requireDropdownB9b27ed3","supportedDropdownTriggers","freeze","hasRequiredRafEa414557","marketButtonGroup_cjs_entry","rafEa414557","requireRafEa414557","asyncRequestAnimationFrame","Promise","resolve","hasRequiredIsObject7dcf0083","throttle88e2e29a","isObject7dcf0083","requireIsObject7dcf0083","freeGlobal$1","freeSelf","root$1","Function","Symbol$1","objectProto$1","nativeObjectToString$1","symToStringTag$1","toStringTag","nativeObjectToString","symToStringTag","baseGetTag","isOwn","unmasked","freeGlobal","isObject","isObjectLike","root","hasRequiredIsSymbolFbd13c73","hasRequiredThrottle88e2e29a","hasRequiredMarketButtonGroup_cjs_entry","isSymbolFbd13c73","requireIsSymbolFbd13c73","isSymbol","requireThrottle88e2e29a","reWhitespace","reTrimStart","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","NaN","valueOf","string","charAt","isBinary","now$1","nativeMax","nativeMin","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","debounced","isInvoking","hasRequiredMarketCheckbox_cjs_entry","hasRequiredMarketChoiceButton_cjs_entry","hasRequiredMarketCodeDisplay_cjs_entry","hasRequiredMarketCodeInput_cjs_entry","hasRequiredColorE689fb5f","hasRequiredMarketColorPicker_cjs_entry","marketCheckbox_cjs_entry","marketChoiceButton_cjs_entry","marketCodeDisplay_cjs_entry","marketCodeInput_cjs_entry","marketColorPicker_cjs_entry","colorE689fb5f","requireColorE689fb5f","hsvToRgb","hArg","sArg","vArg","rgbToHsv","rArg","gArg","bArg","minVal","maxVal","delta","dr","dg","db","hslToHsv","lArg","ns","hexToHsv","hex","numResult","numarize","hsvToHex","v2","padStart","isColorBright","color","tempElement","computedColor","removeChild","parseToHSVA","validColorValueRegex","rgba","hsla","hsva","hexa","colorType","regex","numarizedResult","values","raw","hasRequiredUtils608a13a9","hasRequiredMarketColorPickerGradient_cjs_entry","marketColorPickerGradient_cjs_entry","utils608a13a9","requireUtils608a13a9","getCoordsFromEvent","hasRequiredMarketColorPickerInput_cjs_entry","hasRequiredMarketColorSwatchList_cjs_entry","hasRequiredMarketContentCard_cjs_entry","hasRequiredMarketContext_cjs_entry","hasRequiredMarketContextManager_cjs_entry","hasRequiredMenu122781f5","marketColorPickerInput_cjs_entry","marketColorSwatchList_cjs_entry","marketContentCard_cjs_entry","marketContext_cjs_entry","marketContextManager_cjs_entry","marketDatePicker_cjs_entry","menu122781f5","requireMenu122781f5","MENU_SLOT_NAMES","TODAY","YESTERDAY","THIS_WEEK","LAST_WEEK","THIS_MONTH","LAST_MONTH","THIS_YEAR","LAST_YEAR","PAY_PERIOD","CUSTOM","hasRequiredIndexB1e6d30f","indexB1e6d30f","requireIndexB1e6d30f","_typeof","o2","requiredArgs","required","defaultOptions","getDefaultOptions","toDate","argument","argStr","toInteger","dirtyNumber","number","ceil","hasRequiredIndex01bbb062","hasRequiredMarketDatePicker_cjs_entry","index01bbb062","requireIndex01bbb062","startOfDay","dirtyDate","setHours","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isSameDay","dirtyDateLeft","dirtyDateRight","dateLeftStartOfDay","dateRightStartOfDay","requireMarketDatePicker_cjs_entry","index$1","requireIndex37364565","menu","index$3","index$2","addMonths","dirtyAmount","amount","dayOfMonth","getDate","endOfDesiredMonth","setMonth","getMonth","setFullYear","getFullYear","startOfWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","day","getDay","diff","setDate","startOfMonth","startOfYear","cleanDate","endOfWeek","lastDayOfMonth","month","lastDayOfYear","year","Day","today","MarketDatePicker","hostRef","registerInstance","marketDateRangeChanged","createEvent","marketMenuSelectionChanged","yearViewMonthList","selectionType","selectedStartDate","selectedEndDate","payPeriodStartDate","payPeriodEndDate","presetMenuOption","displayMenu","mobileMenuPosition","excludeMenuItems","timeframe","isDateDisabled","language","displayedDate","withInputs","invalid","disableViewToggle","yearViewActive","displayedMonth","displayedWeekdays","yearViewYearsList","hoveredDate","resetMenu","menu2","row","buildWeekdays","weekday","getLocaleFirstDayOfWeek","weekdayText","toLocaleDateString","getFirstDayOfWeek","firstDay","intl","Intl","Locale","weekInfo","getWeekInfo","addHoveredDateRangeStyling","currentDate","datePickerDay","currentStartDate","addDateSelectionAttributes","calendarDate","currentEndDate","buildCalendar","currentDisplayedDate","calendar","firstDayOffset","days","clearDateSelections","navigateMonth","increment","toISOString","dateInputDateSet","_ref12","detail","newDate","newYear","newMonth","newDay","hour","minute","_selectDate","selectDate","_ref13","dateElement","updateDisplayedHeader","hoverDate","_ref14","mousedOutDate","selectMenuRow","menuOption","menuSelection","prevStartDate","prevEndDate","_setMenuRowOption","startDate","endDate","setInvalidState","_ref15","lastWeekDate","lastMonthDate","lastYearDate","checkedMonth","getHours","getMinutes","_selectCustomRow","toggleCaret","validateDisplayedDate","buildInitialYearView","currentYear","monthName","updateDisplayedYearList","updatedDate","monthValue","getExcludedMenuItems","componentWillLoad","datePickerLabel","componentWillRender","toLocaleString","render","MarketDatePickerMenuTagName","MarketDatePickerDateTagName","MarketDatePickerInputDateTagName","MarketButtonTagName","MarketIconTagName","MarketDividerTagName","Host","class","slot","onClick","caret","rank","role","range","withTime","getElement","market_date_picker","hasRequiredMarketDatePickerDate_cjs_entry","hasRequiredIndexF2237153","hasRequiredMarketDatePickerInputDate_cjs_entry","marketDatePickerDate_cjs_entry","marketDatePickerInputDate_cjs_entry","indexF2237153","requireIndexF2237153","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeek","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","dateLongFormatter","pattern","formatLong2","timeLongFormatter","longFormatters$1","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","protectedDayOfYearTokens","protectedWeekYearTokens","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong$1","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","localize$1","ordinalNumber","_options","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","valueCallback","rest","parsePattern","parseResult","any","index2","defaultLocale","formatDistance","token","tokenValue","addSuffix","comparison","formatLong","formatRelative","_date","_baseDate","localize","getTimezoneOffsetInMilliseconds","utcDate","UTC","getSeconds","getMilliseconds","getUTCISOWeek","fourthOfJanuary","getUTCWeek","firstWeek","isProtectedDayOfYearToken","isProtectedWeekYearToken","longFormatters","millisecondsInHour","millisecondsInMinute","millisecondsInSecond","subMilliseconds","throwProtectedError","format","requireMarketDatePickerInputDate_cjs_entry","index$4","addLeadingZeros","targetLength","sign","formatters","G","signedYear","unit","formatters$3","Y","signedWeekYear","weekYear","R","Q","getUTCMonth","M","L","week","I","isoWeek","D","dayOfYear","setUTCMonth","difference","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","hours","B","H","K","k","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","formatters$1","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseDateUnit","parseTimeUnit","parseFloat","daysInMonths","isLeapYearIndex","MarketDateInputDate","marketDatePickerInputDateSet","marketDatePickerInputDateInvalidStateChanged","isRangeInvalid","emitInvalidStateEvent","formatDate","isTime","dateObj","dirtyFormatStr","_ref6","_defaultOptions$local3","_defaultOptions$local4","formatStr","formatterOptions","firstCharacter","matched","formatter","isInvalidDateForTimeframe","isFutureDate","isPastDate","updateInvalidState","isDateInvalid","additionalDigits","dateStrings","dateString","timeString","parseYearResult","captures","restDateString","century","isWeekDate","_year","isoWeekYear","seconds","timezoneString","_hours","emitDateSetStart","ev","emitDateSet","emitDateSetEnd","emitDateSetStartTime","emitDateSetEndTime","timeInput","stopPropagation","valueToSubmit","realLength","MarketInputTextTagName","MarketBannerTagName","inputWrapper","dateInput","onInput","variant","watchers","market_date_picker_input_date","hasRequiredMarketDatePickerMenu_cjs_entry","hasRequiredMarketDialog_cjs_entry","hasRequiredMarketDivider_cjs_entry","hasRequiredMarketDragHandle_cjs_entry","hasRequiredMarketDropdown_cjs_entry","marketDatePickerMenu_cjs_entry","marketDialog_cjs_entry","marketDivider_cjs_entry","marketDragHandle_cjs_entry","marketDropdown_cjs_entry","requireMarketDropdown_cjs_entry","aria","dropdown","bottom","right","auto","basePlacements","popper","variationPlacements","placement","placements","modifierPhases","getNodeName","getWindow","defaultView","isElement","isHTMLElement","ShadowRoot","applyStyles$1","phase","styles","name2","removeAttribute","effect","initialStyles","margin","arrow","reference","style2","attribute","requires","getBasePlacement","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","addVisualOffsets","getLayoutRect","isSameNode","isTableElement","getDocumentElement","getTrueOffsetParent","offsetParent","getOffsetParent","window2","isFirefox","currentNode","css","perspective","contain","willChange","getMainAxisFromPlacement","within","min$1","max$1","mergePaddingObject","paddingObject","expandToHashMap","hashMap","getVariation","unsetSides","mapToStyles","_Object$assign2","popper2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","hash$1","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","clientHeight","layoutViewport","clientTop","clientLeft","winScroll","scrollWidth","direction","computeOffsets","reference2","basePlacement","commonX","commonY","mainAxis","len","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","rects","clippingClientRect","mainClippingParents","clippingParents2","clipperElement","firstClippingParent","clippingRect","accRect","contextElement","referenceClientRect","popperOffsets2","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","offset2","multiply","axis","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","order","modifiers","visited","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","areValidElements","createPopper","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","defaultModifiers2","_generatorOptions$def2","fn2","pending","orderedModifiers","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","options2","cleanupModifierEffects","scrollParents","merged2","existing","_ref$options","effect2","cleanupFn","forceUpdate","_state$elements","reference3","popper3","_state$orderedModifie","_state$orderedModifie2","destroy","state2","onFirstUpdate","popperGenerator","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","popperOffsets","_options$offset","invertDistance","skidding","distance","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","placements2","placement2","_options$allowedAutoP","placements$1","allowedPlacements","overflows","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","_i2","fittingPlacement","checks2","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","max2","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","min2","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","MarketDropdown","marketDropdownOpened","marketDropdownClosed","popperInstance","popperInitialized","popoverPlacement","popoverStrategy","popoverSkidding","popoverDistance","windowClick","closeDropdown","onExpandedChange","initializePopper","openDropdown","syncDisabledState","elName","toggleDropdown","defaultPrevented","async","handleHoverInteractions","KeyboardEvent","trigger","popover","updatePopoverConfig","connectedCallback","disconnectedCallback","registerTrigger","slottedTriggerEl","handleInteraction","onmouseover","onmouseout","onKeyDown","onFocus","onBlur","onSlotchange","market_dropdown","hasRequiredMarketEmptyState_cjs_entry","hasRequiredMarketField_cjs_entry","hasRequiredMarketFileUpload_cjs_entry","hasRequiredUtils8cc937f5","hasRequiredMarketFilter_cjs_entry","marketEmptyState_cjs_entry","marketField_cjs_entry","marketFileUpload_cjs_entry","marketFilter_cjs_entry","utils8cc937f5","requireUtils8cc937f5","ListItemSelectableType","getRowSelectableType","interactive","transient","slottedControl","CHECKBOX","RADIO","SWITCH","SELECTABLE_WITHOUT_CONTROL","getItemSelectableType","innerRow","isValidControl","control","toLocaleLowerCase","isValueEmpty","hasRequiredMarketFilterButton_cjs_entry","hasRequiredMarketFilterDropdownMenu_cjs_entry","hasRequiredMarketFilterGroup_cjs_entry","hasRequiredMarketFooter_cjs_entry","hasRequiredMarketHeader_cjs_entry","hasRequiredMarketIcon_cjs_entry","hasRequiredMarketInlineSectionHeader_cjs_entry","hasRequiredMarketInlineStatus_cjs_entry","hasRequiredForms08db29a3","hasRequiredMarketInputPassword_cjs_entry","marketFilterButton_cjs_entry","marketFilterDropdownMenu_cjs_entry","marketFilterGroup_cjs_entry","marketFooter_cjs_entry","marketHeader_cjs_entry","marketIcon_cjs_entry","marketInlineSectionHeader_cjs_entry","marketInlineStatus_cjs_entry","marketInputPassword_cjs_entry","forms08db29a3","requireForms08db29a3","submitFormImplicitly","submitButton","hasRequiredAutocompleteD3ecf142","hasRequiredMarketInputSearch_cjs_entry","marketInputSearch_cjs_entry","autocompleteD3ecf142","requireAutocompleteD3ecf142","AUTOCOMPLETE2","AUTOCOMPLETE","TRUE","FALSE","ON","OFF","autocompleteWatcher","hasRequiredMarketInputText_cjs_entry","hasRequiredMarketLink_cjs_entry","hasRequiredMaxZIndex536dd36e","hasRequiredDraggableA7663027","hasRequiredReorderable3af89049","marketInputText_cjs_entry","marketLink_cjs_entry","marketList_cjs_entry","reorderable3af89049","draggableA7663027","maxZIndex536dd36e","requireMaxZIndex536dd36e","getMaxZIndex","zIndex","requireDraggableA7663027","maxZIndex","raf","transitionToPromise","computedStyle","transitionProperty","properties","all","transitionEnded","propertyName","isMarketTableV2Row","isMarketTableV2Group","SCROLL_DELAY","MarketTableV2GroupTag","measureElement","Draggable","anchor","coords","canceled","startCoords","previousCoords","referenceElement","startTop","startRight","startLeft","startWidth","startHeight","elementsFromPoint","cloneNode","dispatchEvent","CustomEvent","bubbles","scrollableY","scrollableX","opacity","finalWidth","finalHeight","setProperty","move","newTarget","target2","deltaX","deltaY","scrollInterval","collapsedTableGroup","farthest2","pointer","nextClosest","draggedIntoCollapsedGroup","finalTop","finalRight","finalLeft","pointerEvents","removeProperty","cloneBottom","cloneTop","cloneRight","cloneLeft","scrollParentBottom","scrollParentTop","scrollParentRight","scrollParentLeft","deltaBottom","deltaTop","deltaRight","deltaLeft","scrollBy","isDraggable","dragEnabled","requireReorderable3af89049","draggable","isReorderable","reorderable","Reorderable","static","cursor","_ref20","accepts","isValidDrag","dragged","reorderableSource","reorderableTarget","bothExternal","closestReorderable","node1","node2","dragMove","tableGroupExpandTimeout","targetSibling","el2","collapsible","collapsed","oneThird","twoThirds","before","setCollapsed","dragLeave","dragEnd","oldIndex","getReorderableItems","newIndex","previousElementSibling","items","itemsWithoutDraggedEl","originalPosition","replaceWith","createCursor","hasRequired_getNative666f22b9","_baseIsEqual9956408d","_arrayPush24af5aa3","_getNative666f22b9","require_getNative666f22b9","isFunction","coreJsData$1","uid","maskSrcKey","IE_PROTO","funcToString$1","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","getNative","hasRequired_Map07e1b6b7","hasRequired_arrayPush24af5aa3","_Map07e1b6b7","require_Map07e1b6b7","_getNative","isArray$1","baseIsArguments","propertyIsEnumerable","isArguments","isArguments$1","Map$1","isLength","require_arrayPush24af5aa3","_Map","reIsUint","eq","nativeCreate$1","hasOwnProperty$1","Hash","assocIndexOf","__data__","ListCache","getMapData","MapCache","arrayPush","isIndex","hasRequired_getTag7be0e78a","hasRequired_baseIsEqual9956408d","_getTag7be0e78a","require_getTag7be0e78a","module","WeakMap$1","isPrototype","Ctor","freeExports$1","freeModule$1","Buffer","isBuffer$1","isBuffer","typedArrayTags","freeExports","freeModule","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","isTypedArray$1","nativeKeys","nativeKeys$1","DataView$1","Promise$2","Set$1","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","ctorString","getTag$1","baseKeys","isArrayLike","require_baseIsEqual9956408d","_arrayPush","_getTag","hasOwnProperty$2","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","Stack","pairs","LARGE_ARRAY_SIZE","nativeGetSymbols","getSymbols$1","resIndex","symbol","getAllKeys","keysFunc","symbolsFunc","Uint8Array$1","SetCache","arraySome","cacheHas","equalArrays","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othValue2","othIndex","mapToArray","setToArray","symbolProto","symbolValueOf","argsTag","arrayTag","objectTag","baseIsEqual","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteOffset","convert","stacked","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","hasRequiredHasInEb92da66","hasInEb92da66","requireHasInEb92da66","symbolToString","baseToString","reIsDeepProp","reIsPlainProp","isKey","memoize","resolver","memoized","Cache","rePropName","reEscapeChar","stringToPath","subString","stringToPath$1","castPath","toKey","baseHasIn","baseGet","hasIn","hasFunc","hasRequiredIdentity8189b2e1","hasRequiredMarketList_cjs_entry","identity8189b2e1","requireIdentity8189b2e1","identity","requireMarketList_cjs_entry","utils","_baseIsEqual","baseIsNaN","arrayIncludes","fromIndex","fromRight","isStrictComparable","matchesStrictComparable","srcValue","createSet$1","MarketList","marketListSelectionsDidChange","marketListSlotChange","marketListItemsReordered","marketListItemsFiltered","marketInternalListValueChange","multiselect","filterStrategy","reorderMode","hideSelectableCount","hasSearch","selections","filteredItems","reorderableWatcher","setReorderable","valueWatcher","setSelectionsFromValue","hideSelectableCountWatcher","injectCountOnControlRow","rowSelectedEventHandler","handleItemSelectedEvent","rowDeselectedEventHandler","handleItemDeselectedEvent","cardSelectedEventHandler","cardDeselectedEventHandler","marketInputSearchValueChangeEventHander","_ref21","filterItems","getEventSelectionDetails","prevSelectionValues","currentSelections","comparator","isCommon","outer","computed","seenIndex","baseUniq","defaultValue","COMPARE_PARTIAL_FLAG","matchData","COMPARE_PARTIAL_FLAG$1","COMPARE_UNORDERED_FLAG$1","uniqBy","controlRow","currentSelectionValues","selectedItem","selectAllItems","selectItem","newSelection","newSelectionValue","newDeselection","newDeselectionValue","deselectedItem","visible","deselectAllItems","deselectItem","deselectItems","selectableItems","selectedItems","deselect","visibleItemsSet","selectedItemsToKeep","syncListInteractiveWithItems","processItems","cardRow","setRowProperties","getCurrentSelectionValues","togglable","silentlySelect","silentlyDeselect","setSelectionsFromRowAttributes","initialSelections","setListAndItemsRoles","itemSelectableTypes","setInternalState","isCheckbox","countAccessoryEl","newEl","filteredItems2","_a2","labelEl","hidden","visibleSelected","toggle","prevItems","updateSelectedItemsInFilteredItems","handleSearchSlotchange","inputSearchEl","defaultSlotchangeHandler","controlRowSlotchangeHandler","slottedRow","setEmptyStateVisibility","emptyStateEl","willShowEmptyState","initItemDisabledAttributeObserver","itemDisabledAttribute","attributeFilter","syncControlRowWithSelections","componentDidLoad","handleKeydown","handleArrowDown","handleArrowUp","focused","prevFocusedRowIndex","reject","reorderable$1","reorder","onDragMove","onDragLeave","onDragEnd","onDragDrop","dragDrop","componentDidRender","MarketEmptyState","onKeydown","onMarketDragMove","onMarketDragLeave","onMarketDragEnd","onMarketDragDrop","viewBox","xmlns","fill","market_list","hasRequiredMarketModalFull_cjs_entry","hasRequiredMarketModalPartial_cjs_entry","hasRequiredMarketPagination_cjs_entry","hasRequiredMarketPaginationNav_cjs_entry","hasRequiredMarketPaginationPageSize_cjs_entry","hasRequiredMarketPill_cjs_entry","hasRequiredMarketPopover_cjs_entry","hasRequired_overRest15f291dd","hasRequiredMarketProgressTracker_cjs_entry","marketModalFull_cjs_entry","marketModalPartial_cjs_entry","marketPagination_cjs_entry","marketPaginationNav_cjs_entry","marketPaginationPageSize_cjs_entry","marketPill_cjs_entry","marketPopover_cjs_entry","marketProgressTracker_cjs_entry","_overRest15f291dd","require_overRest15f291dd","nativeNow","defineProperty$1","lastCalled","baseSetToString","setToString","stamp","remaining","setToString$1","overRest","otherArgs","requireMarketProgressTracker_cjs_entry","_overRest","assignValue","spreadableSymbol","isConcatSpreadable","isFlattenable","baseSet","nested","pick$1","paths","depth","isStrict","MarketProgressTracker","connectorless","currentStepIndex","indicator","orientation","reversed","marketProgressTrackerStepClickEventHandler","currentStepIndexWatcher","updateStepState","reversedWatcher","otherPropsWatcher","propKey","propagatePropsToSteps","stepEls","childEl","orderedSteps","stepEl","dataset","stepIndex","completed","activeIndex","connector","propValues","handleDefaultSlotChange","market_progress_tracker","hasRequiredMarketProgressTrackerStep_cjs_entry","marketProgressTrackerStep_cjs_entry","requireMarketProgressTrackerStep_cjs_entry","classnames","MarketProgressTrackerStep","marketProgressTrackerStepClick","defaultIcon","updateDefaultIcon","slottedIcon","_ref22","cx","cy","handleClick","MarketAccessoryTagName","HorizontalWrapperTagName","renderContent","Fragment","part","market_progress_tracker_step","hasRequiredMarketQrcode_cjs_entry","hasRequiredMarketRadio_cjs_entry","hasRequiredMarketRow_cjs_entry","hasRequiredMarketSegment_cjs_entry","hasRequiredMarketSegmentedControl_cjs_entry","hasRequiredMarketSelect_cjs_entry","marketQrcode_cjs_entry","marketRadio_cjs_entry","marketRow_cjs_entry","marketSegment_cjs_entry","marketSegmentedControl_cjs_entry","marketSelect_cjs_entry","requireMarketSelect_cjs_entry","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","__spreadValues","prop","__spreadProps","__objRest","exclude","forms","alignments","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","getAlignment","getOppositeAxis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","computeCoordsFromPlacement","rtl","floating","sideAxis","alignmentAxis","alignLength","commonAlign","_await$platform$isEle","platform","platform2","getClippingRect","offsetScale","getScale","convertOffsetParentRelativeRectToViewportRelativeRect","originSides","hasWindow","isNode","invalidOverflowDisplayValues","isOverflowElement","tableElements","topLayerSelectors","isTopLayer","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","containerType","backdropFilter","supports","lastTraversableNodeNames","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","frameElement","getFrameElement","getCssDimensions","hasOffset","shouldFallback","$","unwrapElement","domElement","noOffsets","getVisualOffsets","visualOffsets","floatingOffsetParent","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","paddingLeft","leftScroll","getHTMLOffset","ignoreScrollbarX","htmlRect","absoluteOrFixed","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","offsetRect","htmlOffset","isStaticPositioned","polyfill","rawOffsetParent","svgOffsetParent","topLayer","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","currentNodeIsContaining","ancestor","firstClippingAncestor","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","isRTL","rectsAreEqual","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","middlewareData","crossAxis","alignment","autoAlignment","detectOverflowOptions","currentIndex","currentPlacement","alignmentSides","mainAlignmentSide","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","alignment2","resetPlacement","checkCrossAxis","limiter","x2","y2","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_state$middlewareData","_state$middlewareData2","isYAxis","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","MarketSelect","marketSelectValueDidChange","marketSelectOpened","marketSelectClosed","rowsText","keypresses","debounceDelay","setFocusOnMatch","debounce","_len3","_key3","searchString","isKeyboardNavigating","nextMatch","focusedRowIndex","matchIndex","matchingRow","rows","listIsActive","newSelectedOption","newDeselectedOption","currentSelectedOptions","popoverElement","readonly","popoverContainer","hasLeadingAccessory","hasTrailingAccessory","propagateValue","multiselectWatcher","focusedRowIndexWatcher","focusedRow","ensureRowVisibility","rowRect","popoverRect","focusRingBuffer","handleListSelection","_ref23","setFocusedRow","handleListItemsFiltered","updatePopper","closeList","getValues","getValuesCount","getMatchingRows","hasMultipleSelections","getMultiselectDisplayValue","getDisplayedSelectionRow","matchingRows","displaySelection","selectedRows","clonedRow","multiselectDisplayRow","selectedTranslationSlot","selectedTranslation","initListObserver","onListChange","initRows","moveListToPopover","initPopperListeners","cleanupPopperListeners","moveListToSelect","openList","handleTriggerKeyDown","handleArrowKey","handleSpacebar","handleEnterKey","handleEscape","handleTab","handleHomeKey","handleEndKey","typeaheadHandler","handleListKeyDown","handleListEnter","handleListSpacebar","storeKeypresses","handleFocus","handleTriggerClick","toggleList","handleListClick","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","cleanupIo","onMove","io","cleanup","_io","refresh","skip","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","computePosition","mergedOptions","platformWithCache","middleware","validMiddleware","statefulPlacement","resetCount","nextX","initialPlacement","nextY","_middlewareData$offse","_middlewareData$arrow","diffCoords","mainAxisMulti","crossAxisMulti","alignmentOffset","_ref24","maxHeight","_ref25","initPopover","initList","registerSlottedAccessories","leadingAccessory","trailingAccessory","tabindex","market_select","hasRequiredMarketSheet_cjs_entry","hasRequiredMarketStepper_cjs_entry","hasRequiredMarketTab_cjs_entry","hasRequiredMarketTabList_cjs_entry","hasRequiredMarketTabPanel_cjs_entry","hasRequiredMarketTable_cjs_entry","hasRequiredMarketTableArea_cjs_entry","hasRequiredMarketTableCell_cjs_entry","hasRequiredMarketTableColumn_cjs_entry","hasRequiredMarketTableRow_cjs_entry","hasRequiredUtils94f130b4","hasRequiredMarketTableV2_cjs_entry","marketSheet_cjs_entry","marketStepper_cjs_entry","marketTab_cjs_entry","marketTabList_cjs_entry","marketTabPanel_cjs_entry","marketTable_cjs_entry","marketTableArea_cjs_entry","marketTableCell_cjs_entry","marketTableColumn_cjs_entry","marketTableRow_cjs_entry","marketTableV2_cjs_entry","utils94f130b4","requireUtils94f130b4","arr2","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","step","_e2","return","_assertThisInitialized","ReferenceError","_setPrototypeOf","setPrototypeOf","p2","__proto__","_inherits","subClass","superClass","create","_getPrototypeOf","_isNativeReflectConstruct","construct","t2","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_classCallCheck","Constructor","toPropertyKey","_createClass","protoProps","staticProps","props","descriptor","Setter","Setter2","_utcDate","ValueSetter","_Setter","ValueSetter2","_super","validateValue","setValue","priority","subPriority","DateToSystemTimezoneSetter","_Setter2","DateToSystemTimezoneSetter2","_super2","_this2","timestampIsSet","convertedDate","Parser","Parser2","setter","EraParser","_Parser","EraParser2","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","isCommonEra","absCurrentYear","rangeEnd","YearParser","YearParser2","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","LocalWeekYearParser2","ISOWeekYearParser","ISOWeekYearParser2","_flags","firstWeekOfYear","ExtendedYearParser","ExtendedYearParser2","QuarterParser","QuarterParser2","StandAloneQuarterParser","StandAloneQuarterParser2","MonthParser","MonthParser2","StandAloneMonthParser","StandAloneMonthParser2","LocalWeekParser","LocalWeekParser2","dirtyWeek","ISOWeekParser","ISOWeekParser2","dirtyISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","DateParser2","isLeapYear","DayOfYearParser","DayOfYearParser2","setUTCDay","dirtyDay","DayParser","DayParser2","LocalDayParser","LocalDayParser2","wholeWeekDays","StandAloneLocalDayParser","StandAloneLocalDayParser2","ISODayParser","ISODayParser2","AMPMParser","AMPMParser2","AMPMMidnightParser","AMPMMidnightParser2","DayPeriodParser","DayPeriodParser2","Hour1to12Parser","Hour1to12Parser2","isPM","Hour0to23Parser","Hour0to23Parser2","Hour0To11Parser","Hour0To11Parser2","Hour1To24Parser","Hour1To24Parser2","MinuteParser","MinuteParser2","setUTCMinutes","SecondParser","SecondParser2","setUTCSeconds","FractionOfSecondParser","FractionOfSecondParser2","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneWithZParser2","ISOTimezoneParser","ISOTimezoneParser2","TimestampSecondsParser","TimestampSecondsParser2","TimestampMillisecondsParser","TimestampMillisecondsParser2","parsers","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","parser","incompatibleTokens","incompatibleToken","usedToken","fullToken","run","_ret","uniquePrioritySetters","setter2","setterArray","_step2","_iterator2","sortItems","_ref32","sortedItems","childA","childB","rowA","rowB","_ref33","numberA","numberB","_ref35","contentA","contentB","dateA","dateB","_ref34","hasRequiredMarketTableV2Cell_cjs_entry","marketTableV2Cell_cjs_entry","requireMarketTableV2Cell_cjs_entry","isMarketCheckbox","MarketTableV2Cell","marketTableV2CellCaretClicked","marketTableV2CellSortClicked","marketInternalTableV2CellSelectionChange","align","caretAriaLabelExpanded","caretAriaLabelCollapsed","indent","nowrap","sortAriaLabelAscending","sortAriaLabelDescending","sortAriaLabelNone","sortOrder","sortStrategy","sortStrategyFormat","valign","setSelected","silent","prevSelected","previous","setControlSelected","setSelection","setIndeterminate","getStyles","getSortButtonLabel","onCaretClick","onSortClick","syncControlState","renderCaretButton","renderSortAscendingSvg","renderSortDecendingSvg","renderSortNoneSvg","renderSortSvg","market_table_v2_cell","hasRequiredMarketTableV2Group_cjs_entry","hasRequiredMarketTableV2Row_cjs_entry","hasRequiredMarketTabs_cjs_entry","hasRequiredMarketTag_cjs_entry","hasRequiredMarketTextarea_cjs_entry","hasRequiredMarketTile_cjs_entry","hasRequiredMarketToast_cjs_entry","hasRequiredMarketToaster_cjs_entry","hasRequiredMarketToggle_cjs_entry","hasRequiredMarketTooltip_cjs_entry","hasRequiredMarketColorSwatch_cjs_entry","hasRequiredIndex37364565","marketTableV2Group_cjs_entry","marketTableV2Row_cjs_entry","marketTabs_cjs_entry","marketTag_cjs_entry","marketTextarea_cjs_entry","marketTile_cjs_entry","marketToast_cjs_entry","marketToaster_cjs_entry","marketToggle_cjs_entry","marketTooltip_cjs_entry","marketColorSwatch_cjs_entry","__defProp2","_interopNamespace","NAMESPACE","EMPTY_OBJ","isComplexType","queryNonceMetaTagContent","doc2","__export","ok","unwrap","unwrapErr","isOk","isErr","val","newVal","scopeId","contentRef","hostTagName","HYDRATE_ID","HYDRATED_STYLE_ID","HYDRATE_CHILD_ID","SLOT_FB_CSS","XLINK_NS","FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS","vnodeData","slotName","simple","lastSimple","vNodeChildren","walk","$text$","newVNode","_len4","_key4","classData","vdomFnUtils","vnode","$attrs$","$children$","$key$","$name$","$flags$","$tag$","$elm$","convertToPublic","convertToPrivate","vattrs","vchildren","vkey","vname","vtag","vtext","clientHydrate","parentVNode","childRenderNodes","slotNodes","shadowRootNodes","hostElm","hostId","childNodeType","childIdSplt","childVNode","$hostId$","$nodeId$","$depth$","$index$","nodeValue","insertBefore","initializeDocumentHydrate","orgLocNodes","ref","getHostRef","$hostElement$","emitEvent","elm","plt","ce","rootAppliedStyles","registerStyle","scopeId2","allowCS","supportsConstructableStylesheets","replaceSync","addStyle","styleContainerNode","cmpMeta","getScopeId","styleElm","appliedStyles","nonce","$nonce$","cmp","$tagName$","setAccessor","memberName","isSvg","isProp","isMemberInElement","ln","oldClasses","parseClassList","newClasses","isComplex","xlink","removeAttributeNS","setAttributeNS","endsWith","CAPTURE_EVENT_SUFFIX","CAPTURE_EVENT_REGEX","rel","ael","parseClassListRegex","updateElement","oldVnode","newVnode","isSvgMode2","oldVnodeAttrs","newVnodeAttrs","sortedAttrNames","attrNames","useNativeShadowDom","checkSlotFallbackVisibility","checkSlotRelocate","isSvgMode","createElm","oldParentVNode","newParentVNode","childIndex","parentElm","newVNode2","oldVNode","createTextNode","createElementNS","putBackInOriginalLocation","recursive","oldSlotChildNodes","parentReferenceNode","referenceNode","addVnodes","vnodes","startIdx","endIdx","containerElm","removeVnodes","nullifyVNodeRefs","isSameVnode","leftVNode","rightVNode","isInitialRender","patch","oldChildren","newChildren","defaultHolder","oldCh","newCh","elmToMove","oldStartIdx","newStartIdx","idxInOld","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateFallbackSlotVisibility","siblingNode","relocateNodes","markSlotContentForRelocation","hostContentNodes","j","isNodeLocatedInSlot","relocateNodeData","$nodeToRelocate$","$slotRefNode$","relocateNode","nodeToRelocate","vNode","attachToAncestor","ancestorComponent","$onRenderResolve$","scheduleUpdate","isInitialLoad","$ancestorComponent$","writeTask","dispatchHooks","endSchedule","$cmpMeta$","$lazyInstance$","maybePromise","$queuedListeners$","_ref40","safeCall","emitLifecycleEvent","updateComponent","isPromisey","endUpdate","rc","endAttachStyles","endRender","callRender","childrenPromises","postUpdate","postUpdateComponent","renderFnResults","$vnode$","rootVnode","$attrsToReflect$","_ref39","propName","relocateData","orgLocationNode","slotRefNode","parentNodeRef","insertBeforeNode","previousSibling","refNode","addHydratedFlag","$onReadyResolve$","appDidLoad","$onInstanceResolve$","nextTick","who","namespace","lifecycleName","proxyComponent","Cstr","cbName","_len5","_key5","$onReadyPromise$","instance2","$members$","$watchers$","members","_ref41","memberFlags","$instanceValues$","getValue","oldVal","parsePropertyValue","propValue","propType","areBothNaN","watchMethods","watchMethodName","_len6","_key6","$onInstancePromise$","_a3","attrNameToPropName","attributeChangedCallback","attrName","jmp","flags2","callbackName","observedAttributes","_ref42","_ref43","fireConnectedCallback","setContentReference","contentRefElm","createComment","disconnectInstance","addHostEventListeners","attachParentListeners","_ref45","getHostListenerTarget","handler","hostListenerProxy","hostListenerOpts","$rmListeners$","supportsListenerOptions","hostRefs","cmpModules","loadModule","hmrVersionId","exportName","bundleId","$lazyBundleId$","processMod","importedModule","MarketAccessory","market_accessory","sizeToHeadingType","large","small","MarketAccordionItem","marketAccordionItemExpandedChange","customTrigger","marketAccordionToggleHandler","setExpanded","newExpanded","setDisabled","getAccordionIcon","Heading","market_accordion_item","elementTypeGuard","MarketActionCard","marketCardSelected","marketCardDeselected","handleRowSelection","handleRowDeselection","rowEl","removeRowTabIndex","containerEl","syncRowAttributes","handleSlotChangeDefault","actionCardEl","market_action_card","MarketActivityIndicator","market_activity_indicator","MarketActivityIndicatorBar","percentComplete","market_activity_indicator_bar","MarketBanner","marketBannerDismissed","iconImageTitleId","dismissable","dismissButtonAriaLabel","iconImageTitle","hasTitle","hasAction","renderIcon","handleTitleSlotChange","handleActionSlotChange","dismiss","MarketAccessoryTag","market_banner","focusTrap","MarketBlade","marketDialogLoaded","marketDialogDismissed","marketDialogDidDismiss","skipAnimation","dialogID","animationDuration","animationEnterDuration","animationExitDuration","trapFocus","reenableAnimation","headerNavigateEventHandler","dismissOptions","onTrapFocusChanged","activateFocusTrap","deactivateFocusTrap","setFocus","showNavigation","market_blade","MarketButton","handleImplicitSubmission","fakeButton","iconOnly","innerTabindex","isLoading","focusedChangeHandler","innerTag","blur","convertSvgHexToCurrentColor","svg","elementsWithFill","elementsWithStroke","handleSlotChange","iconSlot","hasIcon","buttonText","iconText","hasLabelText","TagType","TagTypeAttrs","MarketActivityIndicatorTagName","market_button","MarketButtonDropdown","marketButtonDropdownOpened","marketButtonDropdownClosed","noCaret","persistListSelections","dropdownIsActive","dropdownOpenedEventHandler","setCaret","dropdownClosedEventHandler","syncTriggerDisabledState","slottedButton","MarketListTagName","popoverContent","MarketDropdownTagName","MarketPopoverTagName","market_button_dropdown","MarketButtonGroup","_buttonEls","_observers","throttledHandleResize","handleResize","_sortedButtonEls","getComputedWidth","buttonGroupWidth","tempEl","buttonWidths","buttonEl","dropdownMenuButtonWidth","clonedButtonEl","buttonElWidth","sortVisibleAndOverflowButtons","_buttonCutoffIndex","findButtonCutoffIndex","registerSlottedButtons","observeContent","_ref0","MarketButtonDropdownTagName","market_button_group","MarketCheckbox","marketCheckboxValueChange","indeterminate","hovered","prevValue","innerInput","setActive","setHover","getCheckedState","stroke","market_checkbox","MarketChoiceButton","marketChoiceButtonSelected","marketChoiceButtonDeselected","market_choice_button","MarketCodeDisplay","marketCodeCopied","codeChars","slottedCodeTag","initCodeChars","copyButton","onclick","copyToClipboard","slottedCopyText","copyText","insertAdjacentElement","codeLen","BLANK_CODE_SPAN","clipboard","writeText","market_code_display","MarketCodeInput","marketCodeInputValueChange","_code","valueChangeHandler","sanitizeValue","setInputsFromValue","focusFirstEmptyInput","isValidChar","char","inputs","initCode","getValueFromInputs","prevChar","spreadChars","chars","insertChars","updateValue","previousValue","onKeyUp","onHostClick","inputmode","maxlength","readOnly","market_code_input","MarketColorPicker","marketColorPickerValueChange","gradientValueChange","swatchList","colorInput","swatchValueChange","formatInputValue","gradientPicker","inputValueChange","colorString","parsedValue","setSubcomponentValues","market_color_picker","PRIMARY_ID","SECONDARY_ID","PRIMARY_COORDINATES","SECONDARY_COORDINATES","MarketColorPickerGradient","marketColorPickerGradientValueChange","secondaryPointerCoordinates","boundOnDragMove","boundOnDragEnd","throttledUpdatePointerOnDrag","updatePointerOnDrag","onDragStart","button","draggablePointer","posX","posY","elem","elemOffsetX","elemOffsetY","updatedX","updatedY","setPointerCoordinates","pointerOffset","setPrimaryGradientColor","setSecondaryGradientColor","primaryHue","primaryPointer","background","updateSecondaryGradient","saturation","colorValue","secondaryPointer","updateGradientsByValue","convertedColor","primaryX","secondaryX","secondaryY","primaryOptions","secondaryOptions","setInitialPointers","pointers","pointerCoordinates","pointerOptions","onMouseDown","onTouchStart","market_color_picker_gradient","MarketColorPickerInput","marketColorPickerInputValueChange","displayLeadingAccessory","MarketColorSwatchTagName","formatAndUpdateValue","updatedValue","market_color_picker_input","MarketColorSwatchList","marketColorSwatchListValueChange","setSelectionFromValue","colorSwatchSelectedEventHandler","eventInfo","selectedValue","swatchValue","market_color_swatch_list","MarketContentCard","market_content_card","MarketContext","marketContextContentsChanged","marketContextEmptied","currentDialog","noVeil","totalCount","dialogMeta","currentDialogWatcher","newDialog","stackWatcher","dialog2","setContextVeil","doesStackContainDialogThatRequiresVeil","dialog$1","_ref1","_ref10","stackHasDialog","dialogEl","modalLoadedEventHandler","generatedDialogID","generateDialogID","indexOfType","dialogDismissedEventHandler","getDialogByID","dialogTemplate","dialog3","persistent","closeCurrent","dialogType","market_context","MarketContextManager","marketContextManagerActivated","marketContextManagerDeactivated","initChildListObserver","childListObserver","updateChildList","contextEmptiedEventHandler","_ref11","emptiedContext","windowKeydown","shouldCreateNewContext","createNewContext","lastElementChild","handleMouseEvents","mouseDownEl","mouseUpEl","onMouseUp","market_context_manager","MarketDatePickerDate","marketDatePickerDateSelected","marketDatePickerDateMousedOver","marketDatePickerDateMousedOut","isKeyboardEnter","onkeydown","market_date_picker_date","MarketDatePickerMenu","marketDatePickerMenuSelectionChanged","handleMarketListSelectionsDidChange","MarketRowTagName","excludedItems","market_date_picker_menu","MarketDialog","removeTopMarginOfFirstHeading","headings","handleSlotchange","connectedCallbackTimeout","market_dialog","MarketDivider","market_divider","MarketDragHandle","marketDragHandleDragStart","marketDragHandleDragMove","marketDragHandleDragEnd","market_drag_handle","showActions","handleSlottedContent","market_empty_state","MarketField","errorSlotId","getSlottedInputs","flatMap","getElementsByTagName","getErrorSlot","getBottomAccessorySlot","getInputElAriaDescribedby","describedBy","handleErrorAttributes","errorSlotEl","handleBottomAccessoryAttributes","bottomAccessorySlotEl","inputElAriaDescribedby","market_field","MarketFileUpload","marketFileUploadValueChange","accept","multiple","fileSubtext","fileMetadata","deleteButtonAriaLabel","isDraggingOver","files","watchValueHandler","watchDisabledHandler","slottedCompactButtons","hasSingleFileSelected","interactiveElementTagnames","draggingOver","endDrag","dataTransfer","addFiles","handleButtonClick","fileInputElement","handleDeleteKeydown","removeFile","emitFileChange","labelContainerClassNames","onInputChange","handleCompactSlotChange","renderFilesAsMarketRows","file","index$12","rowConfig","filename","secondaryText","leadingIcon","trailingIcon","bytes","dm","leadingIconName","fidelity","MarketFieldTagName","fileMarketRows","showUploadLabel","showList","ondragenter","ondragover","ondragleave","ondrop","market_file_upload","MarketFilter","marketFilterClosed","marketFilterOpened","marketFilterExpandedChanged","marketFilterValueDidChange","dropdownInteraction","selectedDisplayValue","filterType","filterButtonEl","listEl","setDisplayValueFromSlottedElement","datePickerEl","handleListValueChange","handleListSelectionChange","isMultiselect","handleDateRangeChange","setDisplayValueFromDateEvent","handleDropdownOpened","handleDropdownClosed","autoId","initListValueObserver","initRowObservers","syncRowContent","getTextContentOfRowWithValue","marketRowTag","displayValueEl","valueCount","_ref16","startAndEndInTheSameYear","startDateString","dateStyle","endDateString","presetMenuTextContent","isMultiselectList","hasDatePicker","MarketFilterButtonTagName","market_filter","MarketFilterButton","handleDisabledChange","market_filter_button","MarketFilterDropdownMenu","filtersWithSelectedValue","hasSelectedFilter","isDropdownActive","deselectFilter","handleHeaderNavigate","handleOverflowFiltersSlotChange","filterEls","assignedNodes","createRowsFromFilters","calculateFiltersWithSelectedValue","filterRowEls","filterRowEl","filterRowElsByValue","filterNames","rowsByName","filterEl","currentRowEl","newRowEl","handleFilterSelection","filterLabelEl","_ref17","filterEl2","clonedLabelEl","getFilterType","clonedDatePickerEl","handleDatePickerFilterSelection","clonedListEl","handleListFilterSelection","__setAndEmitDatePickerValue","__setAndEmitListValue","datePicker","MarketHeaderTagName","market_filter_dropdown_menu","MarketFilterGroup","_isSearchActive","_willFocusOnFirstFilter","_willDelayDropdownOpen","maxVisibleFilters","_sortedFilterEls","maxVisibleFiltersWatcher","marketInputSearchFocusHandler","_ref18","marketDropdownOpenedHandler","_dropdownMenuEl","updateDropdownPosition","calculateOverflowButtonWidth","hasValueCount","canvasEl","font","feedbackTextWidth","measureText","FILTER_BUTTON_WIDTH","filterGroupWidth","searchWidth","_slottedInputSearchEl","filterWidths","_filterEls","clonedFilterEl","filterElWidth","sortVisibleAndOverflowFilters","_filterCutoffIndex","findFilterCutoffIndex","dropdownEl","checkIfSearchShouldBeCompact","isNarrowBreakpoint","hasFilters","hasMoreThanMaxFilters","searchShouldBeCompact","handleInputSearchTabKeydown","handleInputSearchFocus","registerSlottedInputSearch","registerSlottedFilters","filtersOnSlotChangeHandler","_ref19","dropdownMenuButtonSize","MarketFilterDropdownMenuTagName","market_filter_group","MarketFooter","market_footer","MarketHeader","marketHeaderNavigate","closeButtonAriaLabel","disableCloseButton","compactTitle","hideCompactWayfinding","handleCompact","minHeight","handleSlottedNavigation","customNavEl","handleSlottedNavClick","handleSlottedActions","actions","handleCloseButtonClick","checkForNavigation","cloneDefaultHeadingToCompactHeading","handleMutation","mutationList","shouldClone","hasModalParent","hasCustomNavigation","compactSlottedContent","wayfindingEl","subheadingEl","defaultSlotContent","compactTitleEl","renderDefaultNavigation","market_header","core","icon","expand","asset","tintable","collapse","continue","back","ascend","descend","more","loading","drag","warning","alert","attention","succeed","success","inform","deny","denied","cancelled","recommend","recommendation","cycle","checkmark","help","show","hide","look","ascending","descending","unsorted","settings","undo","redo","edit","picture","getFidelityToken","getMarketIconSVGSymbol","marketIconSVGSpriteID","MarketIcon","cloneSymbol","assetName","svg2","fidelityToken","currentFidelity","dimensions","defaultFidelity","template","sprite","iconToken","market_icon","MarketInlineSectionHeader","market_inline_section_header","MarketInlineStatus","market_inline_status","MarketInputPassword","inputId","minlength","marketInputText","registerSlottedInput","slottedInput","togglePasswordVisibility","handleKeyDown","isComposing","renderSvgHidden","renderSvgVisible","market_input_password","InputText","marketInputSearchCleared","marketInputSearchValueChange","marketInputSearchFocus","marketInternalInputSearchCompactAnimation","marketInputSearchDidLoad","internals","attachInternals","autofocus","inputAriaLabel","clearButtonAriaLabel","searchIconButtonAriaLabel","focusedWatcher","nativeInputEl","disabledWatcher","_autocomplete","clearInput","originalEvent","clearButtonClicked","handleValueChange","updateElementInternals","handleAnimation","animationName","handleAccessoryClicked","isBackIcon","slottedInputEl","updateSharedInputProps","prevSharedProps","sharedProps","setFormValue","setValidity","validity","validationMessage","componentWillUpdate","onAnimationEnd","onAnimationStart","handleClearButtonClicked","formAssociated","market_input_search","marketInputValueChange","marketInputDidLoad","autovalidate","autofilled","nativeInput","handleMarketDialogLoaded","valueDidChange","validatingThroughSubmission","checkValidity","handleAutofill","handleSubmissionInvalid","getInputElement","onInvalid","market_input_text","MarketLink","destructive","highlight","market_link","MarketModalFull","layout","layoutWatcher","repositionHeader","slottedHeader","market_modal_full","MarketModalPartial","market_modal_partial","MarketPagination","marketPaginationPageSizeChange","marketPaginationNavigation","currentPage","totalPages","hasNextPage","hasPreviousPage","pageSize","pageSizeOptions","changePageSize","navigatePage","MarketPaginationPageSizeTagName","MarketPaginationNavTagName","market_pagination","market_pagination_nav","marketInternalPaginationNavigation","listSelectionEventHandler","page","prevPage","handlePrev","handleNext","nextPage","pageList","renderPageInfo","pageNum","market_pagination_page_size","marketInternalPaginationPageSizeChange","listSelectionEventHander","MarketPill","renderIndicator","market_pill","Popover","initInteractiveList","lists","localName","market_popover","ALIGNMENT_PATTERN_LOCATIONS","DATA_CAPACITY","LOW","MEDIUM","QUARTER","HIGH","ENCODING","NUMERIC","ALPHANUMERIC","KANJI","BYTE","ERROR_CORRECTION","BitWriter","length2","byte","bit","bitsLeft","bytesLeft","codeForAlphaNUMERICal","lookIn","completeByte","nextPutAlphaNUMERIC","last","nextPutBits","int","bits","nextPutByte","byteArray","nextPutCompleteByte","nextPutKanji","charCode","lByte","bByte","nextPutNumeric","asNumbers","Matrix$1","at","copy","col","put","BooleanMatrix","rowInteger","asIntegerArray","integer","bool","bitAt","fillAlignmentPatternAt","fillFinderPatternAt","QRCodeMap","errorCorrection","polynomials","polynomial","multiplier","factor","product","firstValue","firstIndex","secondValue","secondIndex","productIndex","fromGF256Alpha","toGF256Alpha","dividend","divisor","quotient","dividendIndex","startEntry","alpha","divisorIndex","quotientIndex","masks","maskArray","generator","instances","dimension","AVAILABLE","super","initialize","misdecodeProtectionCodewords","chunking","chunkingAt","dataWidth","errorCorrectionWidth","errorCorrectionCapacity","chunkingOffsets","chunkingOffset","dataI","numberOfDataCodewords","errorCorrectionI","numberOfErrorCorrectionCodewords","combined","pixels","byteAndChunk","chunk2","AVOID","QRCode$1","alignmentPatternPositions","pixel","halfOdd","codewordsFor","codewords","bytePosition","withErrorCorrection","dataFor","remainder","subtract","encodedData","withAll","isDataPixel","maskedDataFor","mask","masked","GENERATOR_FUNCTIONS","locations","far","eci","_encoding","finderPatternPositions","hasEci","hasAlignmentPattern","timingPatternPositions","MAX_VERSION","qrcode","Matrix","QRCode","QRCodeEncoder","contents","initializeEncoding","initializeVersion","initializeCodewords","initializeMapping","initializeMasking","writer","toUtf16Bytes","toUtf8Bytes","for","mapCodewords","mapData","choices","dataIndex","lowestPenalty","matrix","penalty","penaltyForMatrix","errorCorrections","bitVersion","versionForLength","versions","capacity","runTest","finderPattern","lastY","allows","SquareQRCodeEncoder$1","minimumVersion","PENALTY_FOR_NEGATIVE_CAPACITY","initializeTurtleData","initializeSvg","svgOffset","svgDimension","foregroundStyle","svgForegroundStyle","backgroundStyle","svgBackgroundStyle","svgTag","svgFinderPattern","svgBackground","svgFinderPatterns","svgTurtle","point","turtleData","inverted","invert","hasBorder","border","_png","Image","imageBlob","src","decode","canvas","drawImage","toDataURL","cornerRadius","fromOptions","styleBackground","styleForeground","Turtle","PENALTY_FOR_LEFTOVER_CAPACITY","visitedLocations","generateElement","clearVisited","fromLocation","_element","startX","startY","startEdge","outsideEdges","edge","tops","rights","bottoms","lefts","toLocation","visitLocation","hasPixelAtCoordinate","interior","hasVisitedLocation","fanOutFrom","hasPixelAtLocation","topRight","topRightX","topRightY","hasVisitedCoordinate","visitCoordinate","squareQrcode","SquareQRCodeEncoder","JEWEL_VALUE","UNDECIDED","qrcodeEncoder","MarketQRCodeEncoder","jewel","logoStyle","svgLogoStyle","svgLogo","logoPosition","isMonochrome","monochrome","messedUpBytes","getJewel","yData","xData","leftoverCapacity","styleLogo","MarketQrcode","containerStyle","market_qrcode","MarketRadio","marketRadioValueChange","market_radio","isValidRowControl","MarketRow","marketRowSelected","marketRowDeselected","slottedControlEl","controlPosition","dragHandlePosition","hasSideText","selectedWatcher","hrefWatcher","variantWatcher","handleControlSlotChange","querySlots","slottedControlLabel","setControlActive","setControlHover","pointerType","checkIfSideTextIsPresent","sideTextEl","determineRowRole","ContainerTag","ContainerTagAttrs","leadingControl","MarketDragHandleTagName","drillIconName","onMouseEnter","onMouseLeave","onMarketDragHandleDragStart","onMarketDragHandleDragMove","onMarketDragHandleDragEnd","delegatesFocus","market_row","MarketSegment","marketSegmentSelectedChanged","setSelectedState","selectSegment","market_segment","MarketSegmentedControl","marketSegmentedSelectionDidChange","disabledChangeHandler","setSliderPosition","selectedSlider","setSliderSize","newSelectionIndex","marketSegmentSelectedEventHandler","prevSelection","selectedSegment","selectedSegmentValue","deselectedSegment","deselectedSegmentValue","market_segmented_control","delay$1","compressDefaults","linearRatio","quadraticRatio","lerp","getDelta","endCoords","TOP_GAP","MarketSheet","boundOnScrollDrag","onScrollDrag","openMode","disableFocus","closeHandleAriaLabel","initialFocus","focusTrapActivateOptions","setState","targetState","resetTopByState","calculateTopBoundary","paddingBottom","topBoundary","compressionRatio","setTop","newTop","inverter","outputDelta","dragStartTop","eventCoords","dragEventStack","touchStartCoords","dragDelta","pruneStack","naturalTop","halfwayBreakpoint","bottomDropBreakpoint","topDropBreakpoint","minSwipeDistance","gestureDelta","getGestureDelta","cleanupDragging","onScrollStart","scrollStart","mainContent","maxScroll","dragCoords","scrollDelta","scrollTarget","currentTop","previousTop","hiddenHandler","heightObserver","prevOffsetTop","relatedTarget","currOffsetTop","scrollIntoView","behavior","block","inline","market_sheet","MarketStepper","marketStepperValueChange","marketStepperInputFocus","decrementAriaLabel","incrementAriaLabel","incrementDisabled","decrementDisabled","updateButtonDisabledStates","nextValue","emitChangeEvent","onInputFocus","emitInputFocusEvent","onDecrementClick","stepValue","onIncrementClick","decimalPlaces","hasMax","hasMin","hasValue","market_stepper","MarketTab","marketTabSelectedChanged","panelId","tabId","market_tab","MarketTabList","marketTabListSelectedTabChanged","selectedTab","defaultTab","marketTabSelectedChangedEventHandler","tabEls","tabEl","tabWatcher","newTabId","selectTab","sizeWatcher","newSize","propagateSizeProp","focusOnTab","currentTabIndex","focusableTabEls","market_tab_list","MarketTabPanel","market_tab_panel","MarketTable","throttledDetectStyleDeclaration","detectStyleDeclaration","styleDeclaration","gridColumnTemplate","allColumns","visibleColumns","columnsStuckLeft","columnsStuckRight","columnsUnstuck","allRows","rowsStuckTop","rowsStuckBottom","rowsUnstuck","hasAccordionRows","styleDeclarationObserver","getPropertyValue","gridTemplateColumnsValue","cssPropertyValue","unsupportedValuesText","repeatedColCount","endOfRepeatFunctionIndex","item2","repeatedValues","gridTemplateObserver","setColumnWidths","updateGridLayout","allColumnsObserver","columns","forwardColumnPropertiesToCells","allRowsObserver","updateStickyRows","stuckRowsObserver","marketTableHeaderLoadedEventHandler","_ref26","checkColumnVisibility","marketTableRowStickEventHandler","_ref27","marketTableRowUnstickEventHandler","_ref28","originalSlot","_ref29","_stickColumn","_ref30","_unstickColumn","marketTableColumnVisibilityChangeHandler","_ref31","_syncColumnVisibilityWithCells","columnName","gridTemplate","tableColumns","stickTo","mainGrid","leftGrid","rightGrid","gridTemplateMain","gridTemplateLeft","gridTemplateRight","footer","hasAccordionElements","initResizeObserver","initInlineStyleObserver","inlineStyle","initContentObserver","MarketTableAreaTagName","market_table","MarketTableArea","assignGridTemplate","gridTemplateColumns","placementObserver","gridColumn","market_table_area","MarketTableCell","marketTableCellClicked","leadingIndentation","_updateColumnRelatedProperties","_stickSelf","_updateFirstCellProperties","_unstickSelf","market_table_cell","MarketTableColumn","marketTableColumnStick","marketTableColumnUnstick","marketTableColumnSort","marketTableColumnVisibilityChange","emitVisibilityChangeEvent","stick","unstick","clickHandler","previousSortOrder","market_table_column","MarketTableRow","marketTableHeaderLoaded","marketTableRowClicked","marketTableRowStick","marketTableRowUnstick","marketAccordionToggled","marketNestedRowToggled","componentLoaded","cells","nestedRowToggleButton","formNewGridTemplate","tableAreaLeft","tableAreaMain","tableAreaRight","stickyObserver","emitStickyEvents","columnsObserver","setCellColumnProperties","updateCellProperties","oldCellList","newCellList","updateFirstCellProperties","_setFirstCellProperties","updateNestedRowButton","ariaExpanded","svgElement","updateSlottedControlCheckedValue","updateSlottedControlDisabledValue","handleMarketCheckboxValueChange","cell","isStylableCell","setLeadingIndentation","toggleNestedRow","_getMarketRowElement","_addCaretButtonToFirstCell","_registerSlottedControl","accordionElement","parentRow","parentAccordionElement","tagname","market_table_row","MarketTableV2","marketTableV2RowsReordered","eventSelected","setSelectedFromChildEvent","onMarketTableV2CellSortClicked","groups","sortedCell","newSortOrder","headerChildren","sortedColumnIndex","sortedChildren","watchCollapsible","watchReorderable","rowTagName","groupTagName","syncDragEnabled","childSelected","childrenSelected","tableSelected","getElements","reorderable2","reorderEnabled","onSlotChange","market_table_v2","MarketTableV2Group","marketInternalTableV2GroupSelectionChange","marketTableV2GroupCollapsedChange","onMarketTableV2CellCaretClicked","onDragHandleMove","propagateNestedState","hasChildren","watchDragEnabled","prevCollapsed","_ref36","groupSelected","market_table_v2_group","MarketTableV2Row","marketInternalTableV2RowSelectionChange","marketTableV2RowSelectionChange","dragHandleVisibility","firstCell","watchCaret","watchIndent","MarketTableV2CellTagName","initFirstCell","renderDragHandleCell","market_table_v2_row","MarketTabs","showPanelWithId","setTab","tabListEl","panelEls","panelEl","market_tabs","MarketTag","marketTagDismissed","handleDismissTagEvent","market_tag","MarketTextarea","marketTextareaValueChange","registerSlottedTextarea","slottedTextarea","textareaValueDidChange","syncSharedPropsToSlottedTextarea","updateSharedPropsAndSyncSlottedTextarea","shouldSetElementFocus","market_textarea","MarketTile","marketTileSelectedChanged","marketTileRemoveClicked","hasTrailingAccessorySlot","hasIndicatorTextSlot","hasSlottedMedia","onSizeChange","adjustSlottedLabels","handleRemoveActionKeydown","handleRemoveActionClick","renderDefaultRemoveAction","hint","subtext","labelLineClamp","checkSlottedMedia","market_tile","MarketToast","marketToastAutoDismissed","marketToastManuallyDismissed","progress","durationTilAutoDismiss","showActionsNav","startAutoDismissTimer","handleManualDismiss","checkIfActionsArePresent","getVariantIcon","progressStyle","market_toast","MarketToaster","toasts","toastEl","positionToasts","toast","removeAll","allActiveToasts","toastAutoDismissedEventHandler","_ref37","toastManuallyDismissedEventHandler","_ref38","market_toaster","MarketToggle","marketToggleChange","rx","market_toggle","MarketTooltip","marketTooltipOpened","marketTooltipClosed","openTooltip","innerDropdown","closeTooltip","styleLinks","slottedContent","slottedHtmlLinks","slottedMarketLinks","link","fontSize","fontWeight","lineHeight","letterSpacing","textTransform","textDecoration","textUnderlineOffset","outline","market_tooltip","MarketColorSwatch","marketColorSwatchSelectedChange","toggleSelection","checkmarkClass","market_color_swatch","$resourcesUrl$","h2","supportsListenerOptions2","promiseResolve","queuePending","queueDomReads","queueDomWrites","consume","queueTask","bootstrapLazy","lazyBundles","cmpTags","customElements2","customElements","metaCharset","dataStyles","deferredConnectedCallbacks","styles2","appLoadFallback","isBootstrapping","resourcesUrl","baseURI","hasSlotRelocation","lazyBundle","compactMeta","$listeners$","transformTagName","HostElement","registerHost","hostElement","attachShadow","endConnected","initializeClientHydrate","$orgLocNodes$","orgLocationId","shadowRootNode","_ref44","endLoad","isProxied","endNewInstance","whenDefined","endRegisterStyles","schedule","rmListener","componentOnReady","define","lazyInstance","setNonce","hasRequiredAppGlobals3a1e7e63","hasRequiredLoader_cjs","hasRequiredIndex_cjs","appGlobals3a1e7e63","index_cjsExports","appGlobals","globalScripts","defineCustomElements","applyPolyfills","index_cjs","ctx","base64","b64","s64","fromCharCode","invalidEncoding","EventEmitter","_listeners","on","off","factory","Float32Array","f32","f8b","le","writeFloat_f32_cpy","pos","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloatLE","writeFloatBE","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","exponent","LN2","readFloat_ieee754","readUint","uint","mantissa","writeUintLE","writeUintBE","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","inquire","moduleName","eval","alloc","SIZE","MAX","slab","utf8","c1","c2","BrowserClient","BaseClient","names","_metadata","sdk","packages","SDK_VERSION","WINDOW","SENTRY_SDK_SOURCE","getSDKSource","sendClientReports","_flushOutcomes","eventFromException","exception","stackParser","attachStacktrace","eventFromMessage","level","captureUserFeedback","feedback","_isEnabled","DEBUG_BUILD","logger","envelope","createUserFeedbackEnvelope","getSdkMetadata","dsn","getDsn","tunnel","getOptions","_sendEnvelope","_prepareEvent","scope","outcomes","_clearOutcomes","_dsn","discarded_events","clientReportItem","dateTimestampInSeconds","createEnvelope","createClientReportEnvelope","dsnToString","__SENTRY_DEBUG__","exceptionFromError","frames","parseStackFrames","extractMessage","stacktrace","eventFromError","popSize","framesToPop","reactMinifiedRegexp","eventFromUnknownInput","syntheticException","addExceptionMechanism","event_id","resolvedSyncPromise","eventFromString","isUnhandledRejection","isErrorEvent","isDOMError","isDOMException","domException","addExceptionTypeValue","_objectSpread","isError","isPlainObject","isEvent","client","getClient","normalizeDepth","getNonErrorObjectExceptionValue","extra","__serialized__","normalizeToSize","synthetic","isParameterizedString","__sentry_template_string__","__sentry_template_values__","logentry","extractExceptionKeysForMessage","captureType","Wz","m9","re","GLOBAL_OBJ","ignoreOnError","shouldIgnoreOnError","wrap","wrapper","__sentry_wrapped__","getOriginalFunction","sentryWrapped","wrappedArguments","withScope","addEventProcessor","mechanism","captureException","_oO","markFunctionWrapped","addNonEnumerableProperty","Breadcrumbs","ft","BrowserProfilingIntegration","bd","BrowserTracing","kc","Dedupe","pt","Feedback","Rs","FunctionToString","GlobalHandlers","mt","HttpContext","gt","Hub","Xb","InboundFilters","Integrations","Sd","LinkedErrors","vt","ModuleMetadata","Replay","aa","ReplayCanvas","Ha","Qe","J","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","Scope","et","sX","TryCatch","bt","addBreadcrumb","U","n_","tt","addGlobalEventProcessor","rt","cc","addIntegration","M5","addTracingExtensions","De","breadcrumbsIntegration","browserApiErrorsIntegration","browserProfilingIntegration","vd","browserTracingIntegration","Oc","captureConsoleIntegration","js","captureEvent","eN","Tb","captureMessage","uT","captureSession","cg","ht","Jd","chromeStackLineParser","ct","$3","xv","configureScope","contextLinesIntegration","Hs","continueTrace","createTransport","nt","ut","debugIntegration","Ws","dedupeIntegration","Zs","defaultIntegrations","SS","defaultRequestInstrumentationOptions","hc","defaultStackLineParsers","d8","defaultStackParser","Dt","endSession","TM","dt","aB","GJ","extraErrorDataIntegration","il","extractTraceparentData","N","feedbackIntegration","Ns","yl","forceLoad","Eg","functionToStringIntegration","C","geckoStackLineParser","$Q","getActiveSpan","getActiveTransaction","s3","getCurrentHub","Gd","getCurrentScope","nZ","getDefaultIntegrations","nV","getHubFromCarrier","vi","getReplay","la","getSpanStatusFromHttpCode","globalHandlersIntegration","httpClientIntegration","dl","httpContextIntegration","inboundFiltersIntegration","S1","instrumentOutgoingRequests","fc","isInitialized","dk","lastEventId","eW","linkedErrorsIntegration","makeBrowserOfflineTransport","Vc","makeFetchTransport","st","makeMain","pj","makeMultiplexedTransport","Fe","makeXHRTransport","lt","metrics","Ze","moduleMetadataIntegration","onLoad","lA","onProfilingStartRouteTransaction","pd","opera10StackLineParser","NP","opera11StackLineParser","HH","parameterize","Xe","replayCanvasIntegration","Ba","replayIntegration","ia","reportingObserverIntegration","rewriteFramesIntegration","Tl","sendFeedback","vs","sessionTimingIntegration","Pl","setCurrentClient","ot","setExtra","sU","setExtras","rJ","setHttpStatus","ue","setMeasurement","Je","YA","setTags","mG","av","showReportDialog","jp","spanStatusfromHttpCode","de","startBrowserTracingNavigationSpan","Ac","startBrowserTracingPageLoadSpan","Ic","startInactiveSpan","yj","startSpan","startSpanManual","Z","startTransaction","Yr","trace","winjsStackLineParser","R2","withActiveSpan","withIsolationScope","wi","$e","INTEGRATION_NAME","defineIntegration","setupOnce","preprocessEvent","applyAggregateErrorsToEvent","maxValueLength","convertIntegrationFnToClass","filenameMetadataMap","parsedStacks","getMetadataForUrl","_sentryModuleMetadata","_moduleMetadataIntegration","setup","forEachEnvelopeItem","module_metadata","processEvent","_hint","A","maybeHub","getScope","getTransaction","extractTraceparentData$1","errorsInstrumented","errorCallback","activeTransaction","setStatus","handleCallbackErrors","maybePromiseResult","onFinally","isThenable","res","hasTracingEnabled","maybeOptions","__SENTRY_TRACING__","enableTracing","W","afterFinish","hub","parentSpan","getSpan","spanContext","normalizeContext","activeSpan","createChildSpanOrTransaction","forceTransaction","setSpan","runWithAsyncContext","onlyIfParent","spanToJSON","finishAndSetSpan","temporaryScope","sentryTrace","baggage","currentScope","traceparentData","dynamicSamplingContext","propagationContext","tracingContextFromHeaders","setPropagationContext","transactionContext","dropUndefinedKeys","isolationScope","getIsolationScope","span","startChild","dsc","getDynamicSamplingContextFromSpan","parentSpanId","sampled","spanIsSampled","parentSampled","getPropagationContext","ISOLATION_SCOPE_ON_START_SPAN_FIELD","SCOPE_ON_START_SPAN_FIELD","startTimestamp","spanTimeInputToSeconds","SPAN_METRIC_SUMMARY","getMetricStorageForSpan","getMetricSummaryJsonForSpan","storage","exportKey","summary","SpanStatus","httpStatus","Ok","DeadlineExceeded","Unauthenticated","PermissionDenied","NotFound","ResourceExhausted","InvalidArgument","Unimplemented","Unavailable","InternalError","UnknownError","Cancelled","AlreadyExists","FailedPrecondition","Aborted","OutOfRange","DataLoss","setData","spanStatus","he","fe","pe","SpanRecorder","maxlen","_maxlen","spans","spanRecorder","Span","_traceId","uuid4","_spanId","_startTime","timestampInSeconds","instrumenter","_attributes","setAttributes","op","_name","_parentSpanId","_sampled","_status","endTimestamp","_endTime","exclusiveTime","_exclusiveTime","_measurements","measurements","updateName","traceFlags","TRACE_FLAG_SAMPLED","TRACE_FLAG_NONE","childSpan","rootSpan","getRootSpan","transaction","logMessage","_logMessage","setName","isSuccess","toTraceparent","spanToTraceHeader","toContext","_getData","updateWithContext","getTraceContext","spanToTraceContext","getSpanJSON","parent_span_id","start_timestamp","_metrics_summary","profile_id","exclusive_time","hasData","hasAttributes","ve","be","ye","Transaction","_contexts","_hub","_trimEnd","trimEnd","incomingDynamicSamplingContext","_frozenDynamicSamplingContext","newName","spanMetadata","sampleRate","initSpanRecorder","setMetadata","newMetadata","timestampInS","_finishTransaction","getDynamicSamplingContext","setHub","getProfileId","profile","recordDroppedEvent","finishedSpans","endTimes","prev","capturedSpanScope","capturedSpanIsolationScope","contexts","sdkProcessingMetadata","transaction_info","TRACING_DEFAULTS","idleTimeout","finalTimeout","heartbeatInterval","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","originalEnd","IdleTransaction","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","delayAutoFinishUntilSignal","activities","_heartbeatCounter","_finished","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","_autoFinishAllowed","_restartIdleTimeout","endTimestampInS","spanStartedBeforeTransactionFinish","timeoutWithMarginOfError","spanEndedBeforeFinalTimeout","stringifiedSpan","registerBeforeFinishCallback","pushActivity","popActivity","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","setFinishReason","sendAutoFinishSignal","_beat","heartbeatString","_prevHeartbeatString","sampleTransaction","samplingContext","tracesSampler","tracesSampleRate","isValidSampleRate","rate","Te","Oe","Ie","traceHeaders","_startTransaction","customSamplingContext","configInstrumenter","transactionInstrumenter","_experiments","maxSpans","startIdleTransaction","onScope","carrier","getMainCarrier","__SENTRY__","extensions","addGlobalErrorInstrumentationHandler","addGlobalUnhandledRejectionInstrumentationHandler","Ne","Re","Le","Me","ze","eventFromEnvelope","matcher","fallbackTransport","otherTransports","getTransport","release","transport","validatedDsn","dsnFromString","getEnvelopeEndpointWithUrlEncodedAuth","transports","getEvent","eventTypes","promises","Ue","METRIC_MAP","weight","_last","_sum","_count","simpleHash","BrowserMetricsAggregator","_client","_buckets","_interval","metricType","unsanitizedName","unsanitizedUnit","unsanitizedTags","maybeFloatTimestamp","sanitizeMetricKey","sanitizeTags","sanitizeUnit","bucketKey","getBucketKey","bucketItem","previousWeight","metric","sanitizedName","captureAggregateMetrics","metricBuckets","metricsAggregatorIntegration","_metricsAggregatorIntegration","metricsAggregator","Ge","We","Ye","addToMetricsAggregator","environment","metricTags","distribution","gauge","MetricsAggregator","qe","strings","formatted","_optionalChain","ops","lastAccessLHS","isSentryRequestUrl","hubOrClient","removeTrailingSlash","_t","St","xt","Et","Ct","Tt","Ot","It","At","$t","isBrowser","isNodeEnv","bindReporter","reportAllChanges","forceReport","getNavigationEntry","__WEB_VITALS_POLYFILL__","getNavigationEntryFromPerformanceTiming","navigation","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","rating","po","onHidden","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","updateEstimate","getInteractionCountForNavigation","longestInteractionList","longestInteractionMap","processEntry","existingInteraction","latency","onINP","onReport","handleEntries","prevEntry","inp","estimateP98LongestInteraction","candidateInteractionIndex","reportedMetricIDs","whenReady","handlers","instrumented","_previousCls","_previousFid","_previousLcp","_previousTtfb","_previousInp","addLcpInstrumentationHandler","addMetricObserver","instrumentLcp","addPerformanceInstrumentationHandler","addHandler","triggerHandlers","getCleanupCallback","typeHandlers","getFunctionName","instrumentCls","sessionValue","sessionEntries","firstSessionEntry","lastSessionEntry","stopListening","onCLS","instrumentFid","visibilityWatcher","handleEntry","onFID","lastEntry","onLCP","instrumentTtfb","onTTFB","instrumentInp","instrumentFn","stopOnCallback","Er","Cr","Tr","REPLAY_SESSION_KEY","REPLAY_EVENT_NAME","UNABLE_TO_SEND_REPLAY","DEFAULT_FLUSH_MIN_DELAY","DEFAULT_FLUSH_MAX_DELAY","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","REPLAY_MAX_EVENT_BUFFER_SIZE","MIN_REPLAY_DURATION","MAX_REPLAY_DURATION","_optionalChain$5","NodeType$1","_2","isNativeShadowDom","stringifyStylesheet","stringifyRule","importStringified","statement","layerName","supportsText","mediaText","DocumentType","Text","CDATA","Comment","Mirror","idNodeMap","nodeMetaMap","getId","lhs","_3","getMeta","_4","_5","getNode","getIds","removeNodeFromMap","hasNode","meta","oldNode","shouldMaskInput","maskInputOptions","maskInputValue","isMasked","maskInputFn","repeat","ORIGINAL_ATTRIBUTE_NAME","getInputType","getInputValue","_id","tagNameRegex","genId","canvasService","canvasCtx","URL_PROTOCOL_MATCH","URL_WWW_MATCH","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","getHref","transformAttribute","maskAttributeFn","collectCharacters","regEx","descriptorsStr","inParens","ignoreAttribute","distanceToMatch","matchPredicate","createMatchPredicate","eIndex","e2","needMaskingText","maskTextClass","maskTextSelector","unmaskTextClass","unmaskTextSelector","maskAllText","maskDistance","unmaskDistance","lowerIfExists","maybeAttr","mirror","blockClass","blockSelector","unblockSelector","skipChild","inlineStylesheet","maskTextFn","slimDOMOptions","dataURLOptions","inlineImages","recordCanvas","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","keepIframeSrcFn","newlyAddedElement","preserveWhiteSpace","_serializedNode","rootId","docId","compatMode","needBlock","HTMLFormElement","forceMask","__context","getImageData","originalGetImageData","Uint32Array","rr_dataURL","quality","canvasDataURL","blankCanvas","crossOrigin","recordInlineImage","currentSrc","rr_mediaCurrentTime","currentTime","isCustomElement","contentDocument","rr_src","ownerSVGElement","isCustom","isStyle","isScript","isTextarea","_6","_7","_8","textarea","sn","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","IGNORED_NODE","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","isShadow","iframeEl","contentWindow","fired","timer","blankUrl","iframeDoc","serializedIframeNode","styleSheetLoadTimeout","styleSheetLoaded","serializedLinkNode","_optionalChain$4","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle$1","getImplementation","setTimeout$1","hookSetter","isRevoked","replacement","wrapped","__rrweb_original__","receiver","nowTimestamp","_9","_10","_11","_12","_13","_14","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","checkAncestors","blockedPredicate","isUnblocked","blockDistance","unblockDistance","isIgnored","isAncestorRemoved","legacy_isTouchEvent","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","_18","StyleSheetMirror","styleIDMap","idStyleMap","newId","getStyle","generateId","getShadowHost","shadowHost","_19","_20","_21","inDom","rootShadowHost","cachedImplementations","cached","impl","sandbox","EventType","EventType2","DomContentLoaded","Load","FullSnapshot","IncrementalSnapshot","Meta","Custom","Plugin","IncrementalSource2","Mutation","MouseMove","MouseInteraction","Scroll","ViewportResize","Input","TouchMove","MediaInteraction","StyleSheetRule","CanvasMutation","Font","Log","Drag","StyleDeclaration","Selection","AdoptedStyleSheet","CustomElement","MouseInteractions","MouseInteractions2","MouseUp","MouseDown","Click","ContextMenu","DblClick","Focus","Blur","TouchStart","TouchMove_Departed","TouchEnd","TouchCancel","PointerTypes","PointerTypes2","Mouse","Pen","Touch","_optionalChain$3","isNodeInLinkedList","DoubleLinkedList","tail","addNode","__ln","removeNode","moveKey","MutationBuffer","frozen","locked","attributeMap","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","processMutation","addedIds","addList","getNextId","pushAdd","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","tailNode","_node","unhandledNode","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","isInputMasked","unattachedDoc","old","pname","newPriority","getPropertyPriority","genAdds","nodeId","deepDelete","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","unlock","addsSet","_isParentRemoved","_isAncestorInSet","errorHandler","registerErrorHandler","unregisterErrorHandler","callbackWrapper","_optionalChain$2","mutationBuffers","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","__rrMutationObserver","angularZoneSymbol","onMutation","initScrollObserver","sampling","scrollLeftTop","INPUT_TAGS","lastInputValueMap","initInputObserver","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","lastInputValue","currentWindow","propertyDescriptor","hookProperties","HTMLOptionElement","getNestedCSSRulePositions","childRule","hasNestedCSSRule","CSSConditionRule","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","patchTarget","originalPropertyDescriptor","sheets","_15","_16","adoptStyleSheets","initObservers","mousemoveHandler","mousemoveCb","mousemove","callbackThreshold","mousemoveCallback","timeBaseline","wrappedCb","totalOffset","DragEvent","MouseEvent","mouseInteractionHandler","mouseInteraction","disableMap","currentPointerType","eventKey","thisEventKey","PointerEvent","scrollHandler","viewportResizeHandler","_ref7","lastH","lastW","inputHandler","mediaInteractionHandler","volume","muted","playbackRate","styleSheetObserver","styleSheetRuleCb","insertRule","argumentsList","deleteRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","adoptedStyleSheetObserver","styleDeclarationCb","ignoreCSSAttributes","CSSStyleDeclaration","_17","fontObserver","collectFonts","fontCb","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","fonts","selectionObserver","selectionCb","updateSelection","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","customElementObserver","customElementCb","pluginHandlers","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","_optionalChain$1","_len7","_key7","IframeManagerNoop","crossOriginIframeMirror","crossOriginIframeRootIdMap","addLoadListener","IframeManager","iframes","crossOriginIframeMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","loadListener","isAttachIframe","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","replaceIdOnNode","patchRootIdOnNode","replaceIds","replaceStyleIds","iframeMirror","ShadowDomManagerNoop","ShadowDomManager","shadowDoms","restoreHandlers","patchAttachShadow","iframeElement","manager","CanvasManagerNoop","snapshot","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","loop","periodicallyClear","onRequestAnimationFrame","thisBuffer","_takeFullSnapshot","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","maxCanvasSize","packFn","mousemoveWait","recordAfter","getCanvasManager","inEmittingFrame","passEmitsToParent","email","tel","radio","checkbox","lastFullSnapshotEvent","DOMTokenList","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","__RRWEB_EXCLUDE_IFRAME__","getMirror","nodeMirror","getCanvasManagerFn","__RRWEB_EXCLUDE_SHADOW_DOM__","slimDOM","canvasMutationCb","timestampToMs","timestampToS","addBreadcrumbEvent","replay","breadcrumb","category","triggerUserActivity","checkAndHandleExpiredSession","addUpdate","throttledAddEvent","normalize","getClosestInteractive","getClickTargetNode","getTargetNode","ClickDetector","slowClickConfig","_addBreadcrumbEvent","_lastMutation","_lastScroll","_clicks","_timeout","_threshold","_scollTimeout","scrollTimeout","_replay","_ignoreSelector","cleanupWindowOpen","nowInSeconds","originalWindowOpen","_len8","_key8","_teardown","_checkClickTimeout","SLOW_CLICK_TAGS","clickBreadcrumb","clickCount","_scheduleCheckClicks","registerMutation","registerScroll","registerClick","_handleMultiClick","_getClicks","_checkClicks","timedOutClicks","mutationAfter","scrollAfter","_generateBreadcrumbs","hadScroll","hadMutation","isSlowClick","timeAfterClickMs","endReason","route","getCurrentRoute","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","normalizedKey","getBaseDomBreadcrumb","ENTRY_TYPES","getAbsoluteTime","paint","domContentLoadedEventStart","loadEventStart","redirectCount","createPerformanceEntry","browserPerformanceTimeOrigin","timeOrigin","logInfo","shouldAddBreadcrumb","addLogBreadcrumb","logInfoNextTick","EventBufferSizeExceededError","EventBufferArray","_totalSize","hasCheckout","hasEvents","eventSize","eventsRet","getEarliestTimestamp","WorkerHandler","_worker","ensureReady","_ensureReadyPromise","terminate","_getAndIncrementId","EventBufferCompressionWorker","_earliestTimestamp","addEvent","_sendEventToWorker","_finishRequest","EventBufferProxy","_fallback","_compression","_used","_ensureWorkerIsLoadedPromise","_ensureWorkerIsLoaded","ensureWorkerIsLoaded","_switchToCompressionWorker","addEventPromises","hasSessionStorage","sessionStorage","isSampled","makeSession","started","lastActivity","segmentId","previousSessionId","saveSession","createSession","allowBuffering","stickySession","initialTime","expiry","targetTime","isSessionExpired","maxReplayDuration","sessionIdleExpire","shouldRefreshSession","loadOrCreateSession","sessionOptions","traceInternals","existingSession","sessionStringFromStorage","sessionObj","addEventSync","shouldAddEvent","_addEvent","eventBuffer","recordingMode","eventAfterPossibleCallback","beforeAddRecordingEvent","isPaused","isEnabled","timestampInMs","timeouts","sessionIdlePause","initialTimestamp","isTransactionEvent","isFeedbackEvent","handleAfterSendEvent","enforceStatusCode","__sentry__baseTransport__","sendResponse","replayContext","traceIds","errorIds","replayId","beforeErrorSampling","sendBufferedReplayOrFlush","createPerformanceSpans","addNetworkBreadcrumb","getBodySize","textEncoder","URLSearchParams","formDataStr","_serializeFormData","parseContentLengthHeader","getBodyString","mergeWarning","_meta","warnings","newMeta","existingWarnings","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","buildNetworkRequestOrResponse","normalizedBody","exceedsSizeLimit","isProbablyJson","truncatedBody","e3","getAllowedHeaders","allowedHeaders","filteredHeaders","urlMatches","urls","fullUrl","fixedUrl","stringMatchesSomePattern","_getFetchRequestArgBody","fetchArgs","getAllHeaders","allHeaders","getHeadersFromOptions","_LAST_BREADCRUMB","hasHooks","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","memory","getHandleRecordingEmit","hadFirstEvent","_isCheckout","clickDetector","setInitialState","shouldRecordCanvas","isRecordingCanvas","errorSampleRate","useCompressionOption","useCompression","blockAllMedia","networkDetailHasUrls","networkDetailAllowUrls","networkCaptureBodies","networkRequestHasHeaders","networkRequestHeaders","networkResponseHasHeaders","networkResponseHeaders","earliestEvent","TransportStatusCodeError","RateLimitError","rateLimits","sendReplay","replayData","retryConfig","interval","recordingData","segment_id","eventContext","preparedRecordingData","payloadWithSequence","replayHeaders","sequence","baseEvent","replay_start_timestamp","error_ids","trace_ids","replay_id","replay_type","replayEvent","eventHint","integrations","_integrations","preparedEvent","prepareEvent","createEventEnvelopeHeaders","getSdkMetadataForEnvelopeHeader","updateRateLimits","isRateLimited","_retryCount","captureExceptions","THROTTLED","ReplayContainer","recordingOptions","__init","__init2","__init3","__init4","__init5","__init6","performanceEntries","replayPerformanceEntries","_lastActivity","_isPaused","_hasInitializedCoreListeners","_context","initialUrl","_recordingOptions","_debouncedFlush","callbackReturnValue","maxTimerId","cancelTimers","_flush","flushMinDelay","flushMaxDelay","_throttledAddEvent","maxCount","durationSeconds","counter","isThrottled","wasThrottled","slowClickTimeout","slowClickIgnoreSelectors","_canvas","initializeSampling","_initializeSessionForSampling","_initializeRecording","_handleException","_updateUserActivity","startBuffering","startRecording","canvasOptions","_stopRecording","_onMutationHandler","forceFlush","_removeListeners","resume","_checkSession","continueRecording","flushImmediate","activityTime","hasStoppedRecording","_updateSessionActivity","_maybeSaveSession","cbResult","updateUserActivity","conditionalFlush","cancelFlush","getSessionId","urlPath","_clearContext","lastTransaction","customWorkerUrl","__SENTRY_EXCLUDE_REPLAY_WORKER__","_addListeners","currentSession","_refreshSession","_handleVisibilityChange","_handleWindowBlur","_handleWindowFocus","_handleKeyboardEvent","addScopeListener","newBreadcrumb","getLastBreadcrumb","isTruncated","normalizedArgs","normalizedArg","addClickKeypressInstrumentationHandler","handlerData","isClick","htmlTreeAsString","maxStringLength","altKey","metaKey","ctrlKey","addHistoryInstrumentationHandler","to","networkDetailDenyUrls","reqSize","resSize","getResponseHeader","request_body_size","response_body_size","requestBodySize","responseBodySize","xhrInfo","SENTRY_XHR_DATA_KEY","request_headers","getAllResponseHeaders","requestBody","requestWarning","responseBody","responseWarning","errors","outerHTML","captureDetails","bodyStr","bodyText","txt","finally","addFetchInstrumentationHandler","fetchData","addXhrInstrumentationHandler","sentryXhrData","handleNetworkBreadcrumbs","afterSendHandler","breadcrumbs","feedbackId","originalException","__rrweb__","isErrorEventSampled","exceptionValue","feedbackEvent","includeReplay","_performanceCleanupCallback","addPerformanceEntry","onEntries","clearCallbacks","clearCallback","_doChangeToForegroundTasks","_doChangeToBackgroundTasks","hasModifierKey","isCharacterKey","_createCustomBreadcrumb","_addPerformanceEntries","_updateInitialTimestampFromEventBuffer","_popEventContext","tooShort","minReplayDuration","tooLong","_flushLock","_runFlush","mutationLimit","overMutationLimit","mutationBreadcrumbLimit","selectors","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","allSelectors","consoleSandbox","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","replayIntegration$1","Replay$1","maskAttributes","unmask","unblock","ignore","maskFn","privacyOptions","password","_initialOptions","_getMergedNetworkHeaders","_isInitialized","_setup","_initialize","getReplayId","_maybeLoadFromReplayCanvasIntegration","finalOptions","initialOptions","opt","replaysSessionSampleRate","replaysOnErrorSampleRate","canvasIntegration","getIntegrationByName","getReplay$1","__initStatic","CanvasContext","CanvasContext2","WebGL","WebGL2","lookup","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","ctor","contextMap","serializeArg","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","arraybuffer","DataView","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","getOwnPropertyNames","recordArgs","hookHandler","CanvasManager","pendingCanvasMutations","resetObservers","rafStamps","latestId","invokeId","enableManualSnapshot","initCanvasMutationObserver","initCanvasFPSObserver","fps","canvasContextReset","rafId","takeSnapshot","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL2RenderingContext","canvasElement","isManualSnapshot","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","bitmap","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","_excluded","CANVAS_QUALITY","DEFAULT_MAX_CANVAS_SIZE","maxCanvasWidth","maxCanvasHeight","_canvasOptions","canvasManagerResolve","_canvasManager","getCanvasManagerOptions","LIGHT_BACKGROUND","INHERIT","SUBMIT_COLOR","LIGHT_THEME","fontFamily","backgroundHover","foreground","borderRadius","boxShadow","submitBackground","submitBackgroundHover","submitBorder","submitOutlineFocus","submitForeground","submitForegroundHover","cancelBackground","cancelBackgroundHover","cancelBorder","cancelOutlineFocus","cancelForeground","cancelForegroundHover","inputBackground","inputForeground","inputBorder","inputOutlineFocus","formBorderRadius","formContentBorderRadius","DEFAULT_THEME","light","dark","ACTOR_LABEL","CANCEL_BUTTON_LABEL","SUBMIT_BUTTON_LABEL","FORM_TITLE","EMAIL_PLACEHOLDER","EMAIL_LABEL","MESSAGE_PLACEHOLDER","MESSAGE_LABEL","NAME_PLACEHOLDER","NAME_LABEL","IS_REQUIRED_LABEL","SUCCESS_MESSAGE_TEXT","FEEDBACK_WIDGET_SOURCE","FEEDBACK_API_SOURCE","getLocationHref","contact_email","clearBreadcrumbs","setLevel","createEventEnvelope","mergeOptions","optionOverrides","themeDark","themeLight","getThemedCssVariables","theme","setAttributesNS","retrieveStringValue","createWidget","actor","shadow","shouldCreateActor","attachTo","_objectWithoutProperties","_excluded2","isDialogOpen","_handleFeedbackSubmit","emptyField","isNameRequired","nameLabel","isEmailRequired","emailLabel","messageLabel","showError","hideError","removeDialog","onRemove","clipPath","speakerDefs","speakerClipPathDef","speakerRect","successMessageText","showActor","onSubmitSuccess","onSubmitError","handleOpenDialog","hideActor","openDialog","onFormOpen","userKey","useSentryUser","formTitle","showBranding","showName","showEmail","colorScheme","defaultName","defaultEmail","onClosed","onCancel","onSubmit","textLabels","formEl","namePlaceholder","emailPlaceholder","messagePlaceholder","isRequiredLabel","cancelButtonLabel","submitButtonLabel","submitEl","errorEl","nameEl","emailEl","messageEl","autoFocus","cancelEl","title","defs","checkIsOpen","Dialog","onFormClose","closeDialog","handleActorClick","buttonLabel","removeActor","autoInject","_host","_shadow","_widget","_widgets","_hasInsertedActorStyles","_cleanupWidgetIfExists","_createWidget","_ensureShadowHost","targetEl","widget","removeWidget","getWidget","existingFeedback","needsAppendHost","themes","sentryFeedbackColorscheme","levels","CONSOLE_LEVELS","addConsoleInstrumentationHandler","captureContext","severityLevelFromString","handled","safeJoin","contextLines","frameContextLines","htmlFilename","stripUrlQueryAndFragment","exceptions","htmlLines","linesOfContext","lineno","addContextToFrame","Vs","qs","debugger","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","previousException","_getExceptionFromEvent","currentException","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","colno","function","currentFingerprint","previousFingerprint","tl","rl","nl","captureErrorCause","exceptionName","errorData","extraErrorInfo","serializedError","oO","normalizedErrorData","failedRequestStatusCodes","failedRequestTargets","supportsNativeFetch","requestInfo","_shouldCaptureResponse","bodyUsed","requestHeaders","responseHeaders","requestCookies","responseCookies","_shouldSendDefaultPii","cookies","cookieHeader","cookieString","_parseCookieString","_createEvent","responseURL","_getResponseSizeFromHeaders","contentLength","givenRequestTarget","body_size","sendDefaultPii","SETUP_CLIENTS","plainBody","crashId","supportsReportingObserver","splitPathRe","resolvedPath","resolvedAbsolute","allowAboveRoot","up","Sl","xl","El","isWindowsFrame","startsWithSlash","fromParts","toParts","samePartsLength","outputParts","ext","truncated","_processStacktrace","processedEvent","Ol","Il","Al","registerBackgroundTabDetection","statusType","createSpanItem","isMeasurementValue","_startChild","Fl","Ul","Bl","msToSec","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","startTrackingWebVitals","mark","fidCallback","fid","clsCallback","lcpCallback","lcp","ttfbCallback","ttfb","startTrackingLongTasks","startTrackingInteractions","componentName","getComponentName","startTrackingINP","interactionIdtoRouteNameMapping","interactionsSampleRate","inpCallback","interactionIdToRouteNameMapping","INP_ENTRY_MAP","interactionType","routeName","parentContext","userDisplay","ip_address","profileId","sent_at","pointerdown","pointerup","mousedown","mouseup","touchstart","touchend","mouseover","mouseout","mouseenter","mouseleave","pointerover","pointerout","pointerenter","pointerleave","dragstart","dragend","dragenter","dragleave","dragover","drop","keydown","keyup","keypress","addPerformanceEntries","transactionStartTime","_addPerformanceNavigationTiming","measureStartTimestamp","measureEndTimestamp","shouldRecord","fp","fcp","resourceUrl","parsedUrl","parseUrl","setResourceEntrySizeData","rtt","deviceMemory","hardwareConcurrency","measurementTimestamp","normalizedValue","fidMark","measurementName","eventEnd","dataKey","entryVal","oc","ic","ac","sc","lc","dc","DEFAULT_TRACE_PROPAGATION_TARGETS","traceXHR","enableHTTPTimings","tracingOrigins","tracePropagationTargets","shouldCreateSpanForRequest","shouldCreateSpan","shouldAttachHeadersWithTargets","createdSpan","shouldAttachHeaders","spanOrigin","shouldCreateSpanResult","__span","contentLengthNum","requestSpan","sentryTraceHeader","generateSentryTraceHeader","sentryBaggageHeader","dynamicSamplingContextToSentryBaggageHeader","getDynamicSamplingContextFromClient","isInstanceOf","newHeaders","BAGGAGE_HEADER_NAME","existingBaggageHeader","newBaggageHeaders","getFullURL","addHTTPTimings","__sentry_own_request__","__sentry_xhr_span_id__","nextHopProtocol","spanData","resourceTiming","timingSpanData","vc","bc","yc","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","enableLongTask","enableInp","_hasSetTracePropagationTargets","_collectWebVitals","_interactionIdToRouteNameMapping","enableInteractions","_latestRoute","_getCurrentHub","clientOptions","instrumentRouting","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","_registerInteractionListener","_registerInpInteractionListener","beforeNavigate","isPageloadTransaction","expandedContext","getMetaContent","propagationContextFromHeaders","modifiedContext","finalContext","idleTransaction","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","getSource","minInteractionId","metaName","metaTag","getDomElement","sourceFromAttributes","sourceFromData","sourceFromMetadata","xc","Ec","Cc","instrumentNavigation","instrumentPageLoad","markBackgroundSpan","latestRoute","beforeStartSpan","afterAllSetup","MAX_INTERACTIONS","spanOptions","msg","zc","jc","Fc","promisifyRequest","oncomplete","onsuccess","onabort","onerror","store","createIndexedDbStore","getStore","dbName","storeName","indexedDB","onupgradeneeded","createObjectStore","dbp","objectStore","insert","serialized","serializeEnvelope","maxQueueSize","deserialized","parseEnvelope","textDecoder","TextDecoder","createStore","flushTimer","retryDelay","flushIn","found","unref","flushWithBackOff","parseRetryAfterHeader","envelopeContainsItemType","shouldStore","flushAtStartup","qc","Gc","MS_TO_NS","THREAD_ID_STRING","OS_PLATFORM","OS_PLATFORM_VERSION","OS_ARCH","OS_BROWSER","OS_MODEL","OS_LOCALE","languages","isAutomatedPageLoadTransaction","getHighEntropyValues","ua","architecture","model","platformVersion","fullVersionList","firstUa","debugIdStackParserCache","applyDebugMetadata","resource_paths","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","images","code_file","debug_id","PROFILING_CONSTRUCTOR_FAILED","shouldProfileTransaction","profilesSampleRate","createProfilingEvent","samples","processed_profile","enrichedThreadProfile","EMPTY_STACK_ID","STACK_ID","stacks","thread_metadata","Yc","adjustForOriginChange","jsSample","stackId","elapsed_since_start_ns","stack_id","thread_id","stackTop","abs_path","resourceId","resources","sample","transactionStartMs","transactionEndMs","DEFAULT_ENVIRONMENT","runtime","os","build_number","device","manufacturer","is_emulator","debug_meta","transactions","active_thread_id","relative_start_ns","relative_end_ns","createProfilePayload","PROFILE_MAP","takeProfileFromGlobalCache","startProfileForTransaction","profiler","JSProfilerConstructor","Profiler","maxSamples","MAX_PROFILE_DURATION_MS","sampleInterval","maxBufferSize","onProfileHandler","maxDurationTimeoutID","_browserProfilingIntegration","profiledTransactionEvents","profilesToAddToEnvelope","profiledTransaction","profileEvent","profiles","windowIntegrations","Sentry","INTEGRATIONS","dom","sentry","keyAttrs","parsedLoc","parsedFrom","parsedTo","getEventDescription","onunhandledrejection","stackTraceLimit","isString","_enhanceEventWithInitialFrame","globalHandlerLog","isPrimitive","ev0","ev0s","ev0sf","in_app","_httpContextIntegration","Referer","DEFAULT_EVENT_TARGET","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","originalSend","wrapOptions","originalFunction","proto","handleEvent","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","stackParserFromStackParserOptions","getIntegrationsToSetup","supportsFetch","initAndBind","ignoreDuration","getStackTop","eventId","getReportDialogEndpoint","onload","onClose","reportDialogClosedMessageHandler","injectionPoint","wrap$1","createFrame","chromeRegex","chromeEvalRegex","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","winjsRegex","opera10Regex","opera11Regex","createStackParser","isSafariExtension","isSafariWebExtension","cachedFetchImpl","nativeFetch","isNativeFetch","fetchImpl","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","fetchOptions","rejectedSyncPromise","SyncPromise","onreadystatechange","getBaseApiEndpoint","port","tunnelOrOptions","sdkInfo","projectId","urlEncode","sentry_key","publicKey","sentry_version","sentry_client","dsnLike","dialogOptions","makeDsn","encodedOptions","ALREADY_SEEN_ERROR","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_eventProcessors","_transport","transportOptions","checkOrSetAlreadyCaught","_process","_captureEvent","eventMessage","promisedEvent","sendSession","updateSession","_isClientDoneProcessing","clientFinished","transportFlushed","getEventProcessors","setupIntegrations","forceInitialize","_setupIntegrations","getIntegrationById","integrationId","integrationName","getIntegration","integration","isAlreadyInstalled","setupIntegration","afterSetupIntegrations","sendEvent","attachment","attachments","addItemToEnvelope","createAttachmentEnvelopeItem","promise","createSessionEnvelope","eventOrCount","metricBucketItems","metricsEnvelope","serializeMetricBuckets","hook","_updateSessionFromEvent","crashed","errored","sessionNonTerminal","ticked","_processEvent","finalEvent","sentryError","logLevel","isTransaction","beforeSendLabel","SentryError","dataCategory","prepared","__sentry__","beforeSendTransaction","spanCountBefore","spanCountBeforeProcessing","beforeSendResult","invalidValueError","spanCount","droppedSpanCount","transactionInfo","quantity","envelopeHeaders","envelopeItem","eventItem","RP","fH","getGlobalEventProcessors","getGlobalSingleton","notifyEventProcessors","processors","processor","final","parseEventHintOrCaptureContext","extras","setSession","closeSession","_sendSessionUpdate","aF","cu","API_VERSION","DEFAULT_BREADCRUMBS","assignedScope","assignedIsolationScope","_version","setClient","_stack","bindClient","_isolationScope","isOlderThan","pushScope","getStack","popScope","_lastEventId","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","oldHub","_callExtensionMethod","shouldSendDefaultPii","registry","setHubOnCarrier","acs","RN","_I","m7","m8","q4","uf","installedIntegrations","userIntegrations","isDefaultInstance","arrayify","finalIntegrations","integrationsByName","currentInstance","existingInstance","debugIndex","debugInstance","integrationIndex","originalFunctionToString","_functionToStringIntegration","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","possibleMessages","lastException","_getEventFilterUrl","Bg","OC","uv","localeCompare","rv","out","tagEntries","maybeTags","sanitizeTagKey","tagValueReplacements","lW","globalScope","_notifyingListeners","_scopeListeners","_breadcrumbs","_attachments","_user","_tags","_extra","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","username","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","setTransactionName","scopeToMerge","scopeData","getScopeData","scopeContext","maxCrumbs","addAttachment","getAttachments","clearAttachments","eventProcessors","transactionName","applyToEvent","additionalEventProcessors","applyScopeDataToEvent","setSDKProcessingMetadata","newData","getGlobalScope","clientClass","enable","initialScope","CT","Hv","RJ","startingTime","sid","did","abnormal_mechanism","attrs","ipAddress","user_agent","public_key","user_segment","txn","v7FrozenDsc","maybeSampleRate","sample_rate","jsonSpan","makeRequest","taskProducer","capturedSetTimeout","bufferSize","filteredEnvelopeItems","envelopeItemTypeToDataCategory","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","gi","yo","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","mergedBreadcrumbs","mergeScopeData","mergeData","mergeAndOverwriteScopeData","mergeVal","U0","normalizeMaxBreadth","dist","integrationNames","finalScope","clientEventProcessors","isolationData","finalScopeData","maxBreadth","captureContextKeys","$k","Hb","XU","i0","wy","ensureTimestampInSeconds","exceptionFromErrorImplementation","maxValueLimit","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parent_id","EN","IQ","bU","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","curr","currBaggageObject","baggageHeaderToObject","objectKey","objectValue","baggageEntry","newBaggageHeader","dscKey","dscValue","keyOrValue","decodeURIComponent","Rt","iY","l4","qT","currentElem","MAX_TRAVERSE_HEIGHT","separator","sepLength","nextStr","_htmlElementAsString","sentryComponent","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","DSN_REGEX","withPassword","pass","lastPath","projectMatch","dsnFromComponents","components","component","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","BO","Cd","HY","V$","f4","gv","mL","zQ","newItem","envelopeItems","encodeUTF8","envHeaders","itemHeaders","stringifiedPayload","totalLength","readBinary","bin","subarray","readJson","envelopeHeader","itemHeader","binaryLength","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","replay_event","replay_recording","check_in","statsd","metadataOrEvent","D2","Hj","rK","maybeInstrument","instrumentConsole","originalConsoleMethod","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","globalListener","_sentryCaptured","_sentryId","DEBOUNCE_DURATION","instrumentFetch","originalFetch","getUrlFromResource","hasProp","finishedHandlerData","erroredHandlerData","V","_oldOnErrorHandler","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","instrumentUnhandledRejection","lastHref","instrumentHistory","chromeVar","isChromePackagedApp","app","hasHistoryApi","pushState","replaceState","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","UK","xU","instrumentXHR","xhrproto","originalOpen","onreadystatechangeHandler","readyStateArgs","setRequestHeaderArgs","Cy","HD","J8","Kj","PO","TX","V9","VW","VZ","cO","fm","kK","y1","objectToString","wat","isBuiltin","isRegExp","isSyntheticEvent","isVueViewModel","__isVue","_isVue","Cf","LD","RU","kg","wrappedFuncs","wrappedLevels","disable","makeLogger","gbl","getRandomByte","randomUUID","typedArray","getFirstException","firstException","newMechanism","currentMechanism","mergedData","lines","maxLines","sourceLine","pre_context","snipLine","context_line","post_context","__sentry_captured__","maybeArray","KV","hmd","Fv","Qy","maxProperties","visit","ERROR","maxSize","encodeURI","memo","hasWeakSet","inner","unmemoize","stringified","_events","objName","__sentry_skip_normalization__","remainingDepth","__sentry_override_normalization_depth__","valueWithToJSON","numAdded","visitable","convertToPlainObject","visitKey","visitValue","HK","Jr","Sh","hl","xp","zf","replacementFactory","o_O","__sentry_original__","getOwnProperties","newObj","serializeEventTarget","currentTarget","extractedProps","maxLength","includedKeys","_dropUndefinedKeys","memoizationMap","memoVal","returnValue","JY","WG","headerDelay","headerDate","limits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","namespaces","VT","validSeverityLevels","$P","Sq","pE","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","sortedParsers","skipFirst","cleanedLine","localStack","defaultFunctionName","$G","JM","nK","newLine","lineLength","testString","requireExactStringMatch","Ak","Du","t$","zb","Response","EdgeRuntime","$2","WD","cW","States","PENDING","RESOLVED","REJECTED","executor","_state","_handlers","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","onfinally","isRejected","_setResult","cachedHandlers","Z1","ph","yW","approxStartingTimeOrigin","_browserPerformanceTimeOriginMode","performanceNow","timeOriginDelta","timeOriginIsReliable","navigationStartDelta","$p","KA","pT","qG","TRACEPARENT_REGEXP","sampledString","fragment","en","isGlobalObj","creator","emberRpc","alwaysWait","rpc","urlForMethod","loggerFactory","errorDeserializer","additionalHeaders","responseParser","sendSpeleoTraceId","Ember","Test","registerWaiter","unregisterWaiter","signal","Ae","DataType","He","Product","Project","Status","Ve","TokenType","createBooleanFlag","createDoubleFlag","createFeatureRelayClient","createIntegerFlag","createJSONFlag","createStringFlag","getFlags","readFlagValueFromResponse","ie","allOwnKeys","Ce","xe","DIGIT","ALPHA","ALPHA_DIGIT","isArrayBuffer","isFormData","isArrayBufferView","isView","isBoolean","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","isFileList","merge","ee","caseless","extend","stripBOM","inherits","toFlatObject","kindOf","kindOfTest","toArray","forEachEntry","matchAll","isHTMLForm","hasOwnProp","reduceDescriptors","freezeMethods","toObjectSet","toCamelCase","wt","toFiniteNumber","findKey","isContextDefined","ALPHABET","generateString","isSpecCompliantForm","toJSONObject","isAsyncFn","captureStackTrace","fileName","te","metaTokens","dots","indexes","visitor","defaultVisitor","convertValue","isVisitable","me","ae","_pairs","Pe","Be","serialize","Ee","use","fulfilled","rejected","synchronous","runWhen","eject","ke","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","Pt","protocols","Bt","kt","WorkerGlobalScope","importScripts","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","je","transitional","adapter","transformRequest","getContentType","setContentType","formSerializer","transformResponse","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","Jt","accessors","accessor","__CANCEL__","ERR_CANCELED","Yt","toGMTString","Zt","ge","loaded","lengthComputable","estimated","rn","withXSRFToken","cancelToken","auth","unescape","btoa","baseURL","ERR_BAD_REQUEST","statusText","paramsSerializer","onloadend","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","withCredentials","onDownloadProgress","onUploadProgress","upload","abort","aborted","ne","http","_unused","throwIfRequested","Se","we","timeoutMessage","decompress","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","ERR_DEPRECATED","assertOptions","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","validators","defaults","interceptors","_request","boolean","getUri","an","se","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","Axios","CanceledError","CancelToken","isCancel","VERSION","toFormData","AxiosError","Cancel","spread","isAxiosError","mergeConfig","AxiosHeaders","formToJSON","getAdapter","HttpStatusCode","BOOLEAN","INTEGER","DOUBLE","STRING","UNKNOWN","SUCCESS","SDK_ERROR","INVALID_REQUEST","NOT_FOUND","WRONG_TYPE","SERVICE_NOT_READY","UNIT","MERCHANT","DEVICE_ID","ANONYMOUS_VISITOR","PERSON","NOT_SUPPLIED","PIE","CAPITAL","SQUARE_CONSOLE","TIDAL","SHOP","dn","SQUARE","REGISTER","DASHBOARD","RETAIL","RESTAURANT","INVOICES","APPOINTMENTS","READERSDK","KDS","SIGNIN","SINGLE_BINARY","TERMINALAPI","WEEBLY","TERMINAL","TERMINAL_API","KDS_EXPO","PAYROLL","CARDCASE","RESTAURANT_MOBILE","BALANCE","FNBKIOSK","GO","hn","mn","En","Ke","gn","Rn","oe","_unused2","withAttributes","converter","withConverter","Sn","_p$flag_responses","flagRequests","userToken","project","userAttributes","flag_requests","user_token","user_attributes","On","post","wn","flag_responses","string_value","flag_type","flag_name","bool_value","int_value","double_value","_unused3","flagKey","stringifiedValue","Fn","flagType","Dn","flagConfig","flagResponse","onIncorrectFlagType","onMalformedJsonFlagValue","expectedType","In","flagConfigs","offlineMode","onMissingFlagValue","onUnexpectedFlagValue","bootstrapFlags","getFlagValue","_O$value","getMock","isSet","loadFlags","dataType","setMockValue","clearMockValue","Ln","Un","isInteger","Pn","Bn","kn","strictlyNecessary","performanceAndAnalytics","functionality","retargetingOrAdvertising","passSquareGeoToOneTrust","oneTrustPreferencesSet","strictlyNecessaryCookiesBlocked","performanceAndAnalyticsCookiesBlocked","functionalityCookiesBlocked","retargetingOrAdvertisingCookiesBlocked","locationDataHash","userLocatedInEU","allCookiesAllowed","optanonConsentCookieString","optanonAlertBoxClosedCookieString","squareGeoCookieString","squareGeoCookieCountry","squareGeoCookieRegion","squareGeoLocationHash","squareGeoInEu","artificialIntelligenceFunctionalityBlocked","groupConsentHash","defaultConsentRequired","accessToDataPrivacyPreferencesRequired","_passSquareGeoToOneTrust","_init","_setVars","_setGeolocationData","_onUpdatedCookiePreferences","_setAIData","_getCookieValue","isUserLocatedInEU","checkIfUserLocatedInEU","country","isSquareGeoInEu","isartificialIntelligenceFunctionalityBlocked","isAccessToDataPrivacyPreferencesRequired","_getCountryInLocationDataHash","isDefaultConsentRequired","_dispatchUpdateEvent","_oneTrustGroupChoicesSet","_buildHashOfGroupConsentChoices","_buildHashOfGroupConsentFromActiveGroups","_setConsentChoices","_OneTrust$getGeolocat","_OneTrust","_parseSquareGeoCookieForLocationData","OneTrust","geolocationResponse","stateCode","countryCode","getGeolocationData","OnetrustActiveGroups","ZP","actualLength","RpcLoggerFactory","requestLoggerClass","_requestLoggerClass","SilentRequestLogger","logRequest","logResponse","logError","parseResponse","arrayBuffer","characters","identityPromise","defaultUrlForMethod","_method","derivedUrl","beforeRequest","afterResponse","requestData","fullName","credentials","responseData","responseError","deserializedResponse","BuildType","Environment","NetworkType","OperatingSystemName","ScreenOrientation","protobufPackage","UNKNOWN_BUILD_TYPE","APP_STORE","BETA","DEVELOPMENT","DEMO_APP","UNRECOGNIZED","UNKNOWN_ENVIRONMENT","PRODUCTION","TEST_PRODUCTION","STAGING","TEST_STAGING","OTHER","UNKNOWN_NETWORK","BLUETOOTH","WIFI","CELLULAR","UNKNOWN_OS","IOS","ANDROID","WEB","WINDOWS","MAC_OS","LINUX","IOS_WEB","ANDROID_WEB","UNKNOWN_SCREEN_ORIENTATION","PORTRAIT","LANDSCAPE","gclidKeySet","cookiePrefixMap","falseyValues","entities","LIBRARY_VERSION","LIBRARY_NAME","aud","cmtp","crcopy","crcta","crim","crtype","exp","lang","meta1","meta2","pr","sq","subch","subcmtp","subp","tar","tarpr","campaignDefaults","queryParams","pair","decodedKey","decodedVal","trackCookieArray","trackCookieVal","getTrackCookiesBase64","atob","trackCookieObject","keyValStr","paramKey","constants_1","kv","utmCampaign","utm_campaign","utmContent","utm_content","utmMedium","utm_medium","utmSource","utm_source","utmTerm","utm_term","trackCookieBase64","utils_1","enums_1","CookieNames","trackCookie","cookeNamesToExclude","getFilteredCookies","fromEntries","StoreNames","LegacyStoreNames","cookieKey","__createBinding","k2","desc","__exportStar","canonical","canonicalUrl","canon","canonicalPath","lastPartOfString","__importDefault","makeContextObj","ua_parser_js_1","contextObj","browser","campaign","campaign_1","cookies_1","library","network","network_1","getNetworkInfo","location_1","realPath","realUrl","referrer_1","pageDefaults","session_1","getSessionInfo","subject","makeContextSubject","traits","entityTraits","truncate_object_1","truncateObject","convertContext","screen_orientation","context_1","is_tablet","geo","country_code","latitude","longitude","getOsName","public_version","build_id","incremental_version","security_version","registry_name","build_type","browser_name","browser_version","height_px","width_px","getEnvironment","is_super_pos","person_token","personToken","merchant_token","merchantToken","anonymous_token","anonymousToken","unit_token","unitToken","employment_token","employmentToken","credential_token","credentialToken","start_time_millis","startTimeMillis","Environments","stage","production","osName","refUrl","referrerHost","referrerPath","referrerSearch","messageOptions","pageSessionToken","session_token","normalizedPageSessionToken","pageStartTimeMillis","entityId","validate_identity_1","getAndSetAvtSafe","entityMatch","EntityTypes","employee","getProp","merchant","person","legalEntityToken","deviceCredentialToken","employmentCanAccessMobileRegister","employmentCanAccessSharedRegister","employmentIsOwner","accountCountryCode","registeredCountryCode","entityTypeKey","entityType","LSNames","LegacyLSNames","LsKeysV1","LogEventsToConsole","EmittedEvents","CdpVersion","Regex","anonVisitor","capitalCustomer","developer","weeblyUser","squareEmployee","buyer","userEntityType","userEntityId","avt","userEntityTraits","groupProps","anonId","groupId","lockKey","development","localDev","BatchCompleted","BatchFailed","BatchSent","DeliveryFailure","DeliverySuccess","DoNotRetry","ExcessiveColumns","Invoke","V1","V2","getAvt","isOptions","isMerchantToken","isUUID","isTraits","isEntity","CDP","user_1","dispatch_queue_1","track_message_1","track_schema_message_1","identify_message_1","page_message_1","group_message_1","apiKey","batchSize","maxRetryAttempts","maxTimeBetweenFlushes","logEventsToConsole","useSameOrigin","User","assignReadOnly","v1","DispatchQueue","setConfig","setting","throwError","shouldLogEventsToConsole","getConfig","track","callbackFn","isRecord","trackStrict","eventProps","trackArgs","fire","trackWithSchema","identify","identifyStrict","identifyArgs","_identify","pageCategory","pageName","pageStrict","pageArgs","groupStrict","groupArgs","type_guards_1","enums_2","message_1","GroupMessage","apiMethod","IdentifyMessage","getMessageVersion","message_version_1","uuid_1","clean_1","merge_1","assign_not_found_1","isTrack","isPage","makePayload","overrides","cdpVersion","isIdentify","assignNotFoundValues","isTrackWithSchema","anonymousId","messageId","originalTimestamp","sentAt","PageMessage","TrackMessage","TrackSchemaMessage","__awaiter","_arguments","throw","__rest","on_page_visibility_change_1","signature_1","utils_2","make_context_schema_1","DEFAULT_BATCH_SIZE","DEFAULT_MAX_TIME_BETWEEN_FLUSHES","DEFAULT_MAX_RETRY_ATTEMPTS","pageUnloaded","eventsAttempts","mutex","onUnlock","saved","lastSeen","getPersistedQueue","getEventsAttempts","onVisibilityChange","flushUpTo64kb","persistEventsToStorage","persistEventsAttempts","scheduleFlush","filteredEvents","attempts","updateRetryAttempt","keepMessage","includesMessage","getRetryAttempt","batchSizeLimitReached","backToQueue","createUnifiedEventingMessage","message_id","entity_type","entity_id","event_name","stringifyEvent","sendBatch","cdpMessages","ueMessages","apiMessage","unifiedEventingMessage","sendCdpMessages","sendUeMessages","apiMessageBatch","payloadStr","requestSignature","authKey","markMessageId","startBatchTracking","batchId","emitBatchSent","authorization","resp","requestLatency","endBatchTrackingAndGetLatency","emitBatchCompleted","handleResponse","emitBatchFailed","messages","ue_messages","rejectedMessages","json","logRejectedMessages","convertedContext","rejectedMessage","isMessageSuccessful","schemaError","eventOptions","logEvent","warnAboutExcessiveColumns","batchedEvents","currPayloadSize","eventWithSentAt","currEventSize","kilobytes","unloaded","ls","stored","attempt","allowed","lockExpirationTime","cdf_entity","cdf_action","measureRequest","clearMarks","clearMeasures","replaceAll","hmac_sha256_1","enc_base64_1","persistant_store_1","PersistentStore","getEntityId","getEntityType","getEntityTraits","_setEntityId","passedId","setEntityId","_setEntityType","passedEntity","setEntity","_setEntityTraits","passedTraits","newTraits","setEntityTraits","entityIdAndTypeMatch","entityFromCurrentStore","entityFromLegacyStore","idFromCurrentStore","idFromLegacyStore","isEntityId","traitsFromLegacyStore","traitsFromCurrentStore","legacyTraits","currentStoreTraits","setAvt","obj1","obj2","mutatedObj","recursiveClean","isNull","methodColors","groupEnd","getEventName","getProperties","getTraits","schemaContext","appRegistryName","groupCollapsed","parseDomain","js_cookie_1","domain_match","MAX_ACCEPTABLE_COLUMNS","numberOfColumns","console_wrapper_1","LocalStorageUtil","objects","mergeArrays","withOptions","MAX_STR_LENGTH","truncatedValue","isNothing","isSomething","isStructuralType","entity","CryptoJS","cryptoSecureRandomInt","randomBytes","readInt32LE","C_lib","lib","Base","mixIn","$super","WordArray","words","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","_data","_nDataBytes","_append","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","C_algo","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","Base64","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bitsCombined","HmacSHA256","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","isPrime","sqrtN","getFractionalBits","nPrime","SHA256","_hash","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_interopRequireDefault","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","length32","hexTab","olda","oldb","oldc","oldd","length8","_default","ROTL","unsafeStringify","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tmh","_md","DNS","hashfunc","_namespace","_native","_sha","_regex","mergeObjects","filterUrl","filteredParams","queryArray","key_value","regexEmail","getPageMetrics","full_url","base_url","getBrowserAndOSMetrics","UAParser","browser_major_version","major","os_name","os_version","getUtmCampaignData","QueryString","utmCampaignData","useCapture","attachEvent","assert","EventstreamClient","EVENTSTREAM_ENDPOINT","EVENTSTREAM_V2_ENDPOINT","ANONYMOUS_VISITOR_TOKEN_COOKIE","TRACK_COOKIE","OPTIMIZELY_END_USER_ID_COOKIE","IDENTIFIED_VISITOR_TOKEN_PARAM","ANONYMOUS_VISITOR_TOKEN_PARAM","MERCHANT_TOKEN_PARAM","SESSION_TOKEN_PARAM","UNIT_TOKEN_PARAM","PERSON_TOKEN_PARAM","EMPLOYMENT_TOKEN_PARAM","PAYMENT_TOKEN_PARAM","ES2_COOKIE_PREFIX_MAP","callCount","applicationName","userId","merchantId","unitId","personId","employmentId","paymentId","defaultFields","trackV2PageView","trackV2WithDefaults","catalog_name","trackV2PageClick","client_params","page_click_action","page_click_description","page_click_detail","toTrack","webpageData","webpageProp","utmData","utmProp","device_screen_height","screen","device_screen_width","browser_height","browser_width","trackV2","eventValue","rawData","_applyDefaults","_getEncodedCookieValue","optimizelyEndUserIdCookie","_getApiHost","rawDataArray","screen_height","screen_width","track_cookie","optimizely_end_user_id_cookie","_urlFor","app_name","u_library_name","u_library_version","subject_anonymous_token","subject_user_token","subject_merchant_token","subject_unit_token","subject_person_token","subject_employment_token","subject_payment_token","paramKeys","_addTrackCookiesToData","_es2UrlFor","queryString","cookieData","fullCookie","trackCookieKey","underscoreSplitCookie","dashSplitCookie","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","enums","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","cpu","engine","EDGE","getResult","_ua","_rgxmap","mergedRegexes","getBrowser","_browser","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","monadic","serializer","cacheKey","computedValue","variadic","assemble","strategyDefault","serializerDefault","ObjectWithoutPrototypeCache","cacheDefault","SKELETON_TYPE","SyntaxError","createLiteralElement","createNumberElement","isArgumentElement","isDateElement","isDateTimeSkeleton","isLiteralElement","isNumberElement","isNumberSkeleton","isPluralElement","isPoundElement","isSelectElement","isTagElement","isTimeElement","pegParse","literal","plural","pound","DATE_TIME_REGEX","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","stem","notation","minimumIntegerDigits","parseNotationOptions","parseNumberSkeleton","tokens_1","currency","useGrouping","maximumFractionDigits","compactDisplay","__assign","currencyDisplay","unitDisplay","g3","g4","g5","minimumFractionDigits","signOpts","conciseScientificAndEngineeringOpts","expected","__extends","buildMessage","literalEscape","classEscape","describeExpectation","expectation","escapedParts","expected1","descriptions","found1","peg$result","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$startRuleFunction","peg$c3","peg$c4","peg$literalExpectation","peg$c5","peg$c9","peg$c11","peg$otherExpectation","peg$c12","insertLocation","peg$c14","peg$c15","peg$c17","peg$c20","peg$c21","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$classExpectation","peg$c30","peg$c31","peg$c33","peg$c35","peg$c37","parsedOptions","shouldParseSkeleton","peg$c38","peg$c39","peg$c42","messageCtx","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","skeleton","hour12","hourCycle","timeZoneName","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","pluralType","optionLocation","peg$c69","peg$c70","peg$c71","peg$c73","peg$c75","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","peg$c82","peg$c83","peg$c84","peg$c85","peg$c87","peg$c90","peg$c91","peg$c92","peg$c97","peg$c99","peg$c100","peg$c101","peg$c103","peg$c105","peg$c106","peg$c107","peg$c108","peg$c110","peg$c111","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","peg$computeLocation","location1","text1","peg$computePosDetails","startPos","endPos","startPosDetails","endPosDetails","peg$fail","peg$parsemessage","s0","s1","peg$parsemessageElement","s2","ignoreTag","peg$c0","peg$parseselfClosingTag","peg$parseopeningTag","peg$parseclosingTag","peg$parsemessageText","messageText","peg$c7","s5","peg$parse_","peg$parseargNameOrNumber","s7","s9","s10","s11","s12","peg$parsenumberSkeletonToken","peg$c41","peg$parsedateTimeSkeletonLiteral","peg$parsedateTimeSkeletonPattern","peg$c57","s13","s14","s15","peg$parsenumber","peg$parsepluralOption","peg$parseselectOption","peg$c2","peg$parsedoubleApostrophes","peg$parsequotedString","peg$parseunquotedString","peg$parsenonTagStartingAngleBracket","s4","peg$parsevalidTag","peg$parsenumberSkeletonId","peg$parsewhiteSpace","peg$parsenumberSkeletonTokenOption","peg$c36","s6","peg$parseargName","peg$parsepatternSyntax","peg$parseargNumber","negative","peg$c88","isInPluralOption","peg$c98","escapedChar","quotedChars","peg$c94","peg$c95","digits","peg$c109","captureLocation","PLURAL_HASHTAG_REGEX","normalizeHashtagInPlural","els","matchingLiteralElIndex","literalEl","el_1","newEls","ErrorCode","FormatError","IntlMessageFormat","InvalidValueError","InvalidValueTypeError","MissingValueError","PART_TYPE","formatToParts","isFormatXMLElementFn","ErrorKind","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","MALFORMED_ARGUMENT","EXPECT_ARGUMENT_TYPE","INVALID_ARGUMENT_TYPE","EXPECT_ARGUMENT_STYLE","INVALID_NUMBER_SKELETON","INVALID_DATE_TIME_SKELETON","EXPECT_NUMBER_SKELETON","EXPECT_DATE_TIME_SKELETON","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","EXPECT_SELECT_ARGUMENT_OPTIONS","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","EXPECT_SELECT_ARGUMENT_SELECTOR","EXPECT_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","INVALID_TAG","INVALID_TAG_NAME","UNMATCHED_CLOSING_TAG","UNCLOSED_TAG","SPACE_SEPARATOR_REGEX","parseDateTimeSkeleton","WHITE_SPACE_REGEX","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","hasNativeStartsWith","hasNativeFromCodePoint","fromCodePoint","hasNativeFromEntries","hasNativeCodePointAt","codePointAt","hasTrimStart","trimStart","hasTrimEnd","isSafeInteger","REGEX_SUPPORTS_U_AND_Y","RE","matchIdentifierAtIndex","codePoints","IDENTIFIER_PREFIX_RE_1","_isWhiteSpace","_isPatternSyntax","requiresOtherClause","shouldParseSkeletons","parseMessage","nestingLevel","parentArgType","expectingCloseTag","isEOF","parseArgument","peek","clonePosition","_isAlpha","parseTag","parseLiteral","bump","startPosition","parseTagName","bumpSpace","bumpIf","childrenResult","endTagStartPosition","closingTagNameStartPosition","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","codepoint","openingBracePosition","parseIdentifierIfPossible","parseArgumentOptions","startingPosition","bumpTo","typeStartPosition","argType","typeEndPosition","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","styleLocation","argCloseResult","tryParseArgumentClose","parseNumberSkeletonFromString","typeEndPosition_1","identifierAndLocation","pluralOffset","tryParseDecimalInteger","optionsResult","tryParsePluralOrSelectOptions","location_2","nestedBraces","apostrophePosition","bumpUntil","stringTokens_1","stemAndOptions","options_1","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","fragmentResult","expectNumberError","invalidNumberError","hasDigits","decimal","currentOffset","targetOffset","nextCode","pruneLocation","originalMessage","MISSING_VALUE","INVALID_VALUE","MISSING_INTL_API","variableId","locales","currentPluralValue","els_1","getNumberFormat","varName","getDateTimeFormat","value_1","formatFn","PluralRules","getPluralRules","lastPart","createFastMemoizeCache","overrideFormats","defaultConfig","configs","formatterCache","pluralRules","ast","resolvedOptions","NumberFormat","supportedLocalesOf","getAst","__parse","DateTimeFormat","memoizedDefaultLocale","percent","defaultAttributes","stringifiedAttributes","jar","propIsEnumerable","test1","test2","test3","letter","symbols","protobuf","configure","util","_configure","Writer","BufferWriter","Reader","BufferReader","roots","LongBits","indexOutOfRange","writeLength","create_array","readLongVarint","readFixed32_end","readFixed64","_slice","uint32","int32","sint32","fixed32","sfixed32","float","double","nativeBuffer","skipType","wireType","BufferReader_","Long","int64","uint64","sint64","zzDecode","fixed64","sfixed64","utf8Slice","Service","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","asPromise","endedByRPC","zero","zzEncode","zeroHash","fromNumber","fromString","unsigned","toLong","fromHash","toHash","part0","part1","part2","dst","ifNotSet","newError","CustomError","pool","emptyArray","emptyObject","isset","utf8Write","_Buffer_from","_Buffer_allocUnsafe","newBuffer","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","lcFirst","ProtocolError","oneOfGetter","fieldNames","fieldMap","oneOfSetter","toJSONOptions","longs","allocUnsafe","Op","State","states","writeByte","VarintOp","writeVarint64","writeFixed32","_push","writeBytes","fork","ldelim","BufferWriter_","writeStringBuffer","writeBytesBuffer","objectAssign","keysSorter","Qc","arrayFormat","accumulator","ret","ZT","pi","extendStatics","__","MAJOR","SHARP","CHROMIUM_OS","SUFFIX_BROWSER","tablet","_navigator","_uach","_isSelfNav","brave","isBrave","mobile","standalone","maxTouchPoints","v7","v6ToV1","v6","v5","v3","v1ToV6","NIL","max_js_1","nil_js_1","parse_js_1","stringify_js_1","v1_js_1","v1ToV6_js_1","v3_js_1","v4_js_1","v5_js_1","v6_js_1","v6ToV1_js_1","v7_js_1","validate_js_1","version_js_1","xpad","of","newBytes","updateV1State","rng_js_1","_state$msecs","_state$nsecs","v1Bytes","_msecs","_nsecs","_options$_v","isV6","_v6","optionsKeys","_options$random","_options$rng","_options2","v6Bytes","md5_js_1","v35_js_1","v35_js_2","stringToBytes","valueBytes","namespaceBytes","native_js_1","sha1_js_1","updateV7State","_state$seq","seq","v7Bytes","_seq","regex_js_1","_PhoneNumber","_AsYouTypeState","_AsYouTypeFormatter","_interopRequireWildcard","_AsYouTypeParser","_getCountryByCallingCode","_getCountryByNationalNumber","_isObject","_toPropertyKey","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa2","getCountryAndCallingCode","defaultCountry","defaultCallingCode","hasCountry","_this$parser$input","justLeadingPlus","formattedOutput","formattedNationalNumber","determineTheCountryIfNeeded","nationalSignificantNumber","narrowDownMatchingFormats","hasSelectedNumberingPlan","reExtractNationalSignificantNumber","nationalDigits","getNationalDigits","getFullNumber","getNonFormattedNumber","onCountryChange","onCallingCodeChange","callingCode","selectNumberingPlan","numberingPlan","onNationalSignificantNumberChange","international","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","getDigitsWithoutInternationalPrefix","getInternationalPrefixBeforeCountryCallingCode","spacing","_this$state","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","nationalPrefix","nationalSignificantNumberIsModified","getNonFormattedNationalNumberWithPrefix","DIGIT_PLACEHOLDER","countryCodes","getCountryCodesForCallingCode","setCountry","nationalNumber","_this$state2","countryCallingCode","_this$state3","carrierCode","_callingCode","ambiguousCountries","exactCountry","countries","phoneNumber","getNumber","isPossible","getTemplate","getNonFormattedTemplate","_defineProperties","_AsYouTypeFormatterPatternParser","_createForOfIteratorHelperLoose","_match","tree","characterString","matchedChars","partialMatch","restCharacters","_result","_char","PatternMatcher","matchTree","allowOverflow","parseOneOfSet","PatternParser","or","instructions","_this$context$","branches","expandSingleElementArray","OPERATOR","operator","rightPart","endContext","oneOfSet","ILLEGAL_CHARACTER_REGEXP","canFormatCompleteNumber","_checkNumberLength","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","_parseDigits","_formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","_AsYouTypeFormatterUtil","_AsYouTypeFormatterComplete","_AsYouTypeFormatterPatternMatcher","_constants","_applyInternationalSeparatorStyle","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","NON_ALTERING_FORMAT_REG_EXP","VALID_PUNCTUATION","AsYouTypeFormatter","resetFormat","chosenFormat","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","nextDigits","_format","formattedCompleteNumber","setNationalNumberTemplate","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","leadingDigits","leadingDigitsPatternIndex","formatSuits","formatMatches","usesNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","leadingDigitsPattern","internationalFormat","_this3","getFormatFormat","createTemplateForFormat","getTemplateForFormat","nationalPrefixFormattingRule","IDDPrefix","missingPlus","internationalPrefix","cutAndStripNonPairedParens","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","populateTemplateWithDigits","closeNonPairedParens","cut_before","retained_template","dangling_braces","countOccurences","cutBeforeIndex","stripNonPairedParens","digit","DIGIT_PLACEHOLDER_MATCHER","times","cleared_string","_dangling_braces","extractFormattedDigitsAndPlus","_extractCountryCallingCode2","_extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","_extractNationalNumberFromPossiblyIncompleteNumber","_stripIddPrefix","_slicedToArray","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_DIGITS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","PLUS_CHARS","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","_extractFormattedDigi4","extractedNumber","hasPlus","startsAt","formattedDigits","AsYouTypeParser","_extractFormattedDigi2","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","_extractCountryCallin","setCallingCode","nationalPrefixForParsing","_nationalPrefixForParsing","couldPossiblyExtractAnotherNationalSignificantNumber","_extractNationalNumbe","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIndex","prefixBeforeNationalNumber","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","numberWithoutIDD","newCallingCode","resetNationalSignificantNumber","AsYouTypeState","initCountryAndCallingCode","_Object$keys","_Error","ParseError","_wrapNativeSuper","_isPossible","_isValid","_getNumberType","_getPossibleCountriesForNumber","_extractCountryCallingCode","_format2","PhoneNumber","countryOrCountryCallingCode","e164Number","E164_NUMBER_REGEXP","validateMetadata","_getCountryAndCountry","metadataJson","isCountryCode","getMetadata","isNonGeographicCallingCode","_createExtensionPattern","_RegExpCache","_util","_utf","_Leniency","_parsePreCandidate","_isValidPreCandidate","_isValidCandidate","_parsePhoneNumber","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","pZ","PZ","leadLimit","punctuationLimit","digitBlockLimit","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","blockLimit","punctuation","digitSequence","pNd","PATTERN","LEAD_CLASS","UNWANTED_END_CHAR_PATTERN","_pN","_pL","MAX_SAFE_INTEGER","PhoneNumberMatcher","isSupportedCountry","leniency","extended","maxTries","searchIndex","regExpCache","parseAndVerify","extractInnerMatch","endsAt","phone","innerMatchRegExp","isFirstMatch","candidateMatch","_candidate","trimAfterFirstMatch","candidateIndexGuess","lastMatch","hasNext","WHITESPACE","MIN_LENGTH_FOR_NSN","LRUCache","ensureLimit","containsMoreThanOneSlashInNationalNumber","_matchPhoneNumberStringAgainstPhoneNumber","_metadata2","containsOnlyValidXChars","charAtIndex","charAtNextIndex","isNationalPrefixPresentIfRequired","__countryCallingCodeSource","chooseFormatForNumber","firstSlashInBodyIndex","secondSlashInBodyIndex","checkNumberGroupingIsValid","checkGroups","POSSIBLE","VALID","STRICT_GROUPING","EXACT_GROUPING","_LRUCache","RegExpCache","regExp","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","LEAD_CLASS_LEADING","previousChar","isInvalidPunctuationSymbol","isLatinLetter","lastCharIndex","nextChar","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","BRACKET_PAIR_LIMIT","SLASH_SEPARATED_DATES","TIME_STAMPS","followingText","TIME_STAMPS_SUFFIX_LEADING","phoneNumberString","phoneNumberStringContainsCallingCode","parsedPhoneNumber","SECOND_NUMBER_START_PATTERN","character","pSc_regexp","pL_regexp","pMn_regexp","latinLetterRegexp","_pZ","pL","pSc","pMn","lower","upper","regexp","_normalizeArguments","_normalizeArguments2","_PhoneNumberMatcher","results","addExtension","formatExtension","_RFC","formatRFC3966","fromCountry","getCountryCallingCode","iddPrefix","_getIddPrefix","_matchesEntirely","formatAs","availableFormats","testFunction","lastLeadingDigitsPattern","_AsYouType","getCountries","examples","parseRFC3966","_unsupportedIterableToArray","_part$split2","_isViablePhoneNumber","checkNumberLengthForType","_mergeArrays","type_info","possible_lengths","possibleLengths","mobile_type","actual_length","minimum_length","purpose","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","possibleSeparatorsNumberExtLabelNoComma","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","EXTN_PATTERN","numberWithoutExtension","isNumberWithIddPrefix","shorterNumber","countryCallingCodeSource","_countryCallingCode","hasCallingCode","_getCountryCallingCode","possibleShorterNumber","possibleShorterNationalNumber","_extractNationalNumber","nationalNumberPattern","numberToParse","extractFormattedPhoneNumber","phoneContext","_extractPhoneContext","isPhoneContextValid","_ParseError","PLUS_SIGN","indexOfNationalNumber","indexOfRfc3966Prefix","RFC3966_PREFIX_","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","indexOfIsdn","RFC3966_ISDN_SUBADDRESS_","nationalNumberBefore","nationalNumberAfter","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","nationalPrefixTransformRule","possiblePositionOfTheFirstCapturedGroup","numberToExtractFrom","phoneContextStart","phoneContextEnd","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","ALPHANUM_","nationalPhoneNumber","USE_NON_GEOGRAPHIC_COUNTRY_CODE","possibleCountries","countryMetadata","defaultIDDPrefix","SINGLE_IDD_PREFIX_REG_EXP","isNumberTypeEqualTo","NON_FIXED_LINE_PHONE_TYPES","objectConstructor","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumberStart","VALID_PHONE_NUMBER_START_REG_EXP","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_WITH_EXTENSION","regularExpressionText","DIGITS","parseDigit","IDDPrefixPattern","matchedGroups","CAPTURING_DIGIT_PATTERN","isPossibleNumber","extract","_parsePhoneNumber_","hasTypes","WHITESPACE_IN_THE_BEGINNING_PATTERN","PUNCTUATION_IN_THE_END_PATTERN","PhoneNumberSearch","parseCandidate","last_match","_normalizeArguments3","_findPhoneNumbersInitialImplementation","Pf","searchPhoneNumbers","_PhoneNumberSearch","phones","iterable","arg_1","arg_2","arg_3","arg_4","arg_5","normalizeArguments","_getNumberType2","_isValidNumberForRegion_","Metadata","getExtPrefix","DEFAULT_EXT_PREFIX","_semverCompare","CALLING_CODE_REG_EXP","setVersion","nonGeographic","nonGeographical","getCountryMetadata","countryCallingCodes","NumberingPlan","getNumberingPlanMetadata","getCountryCodeForCallingCode","_type","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_getNationalPrefixIsOptionalWhenFormatting","_type2","Type","FIRST_GROUP_ONLY_PREFIX_PATTERN","typeOf","_Array$prototype$slic2","_parseInput","_extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","throwOnError","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","withExtensionStripped","_extractExtension","formattedPhoneNumber","_parseIncompletePhoneNumber","valid","possible","parsePhoneNumberCharacter","prevParsedCharacters","eventListener","_parsePhoneNumberWithError_","pa","pb","na","nb","LocalStorageMap","_localStorageKey","localStorageKey","_saveLocalStorage","getLocalStorageAsMap","localStorageString","resultsMapArray","RAW_USER_JOURNEY_EVENT_NAME","RAW_USER_JOURNEY_RESULT_NAME","isOptionalString","isOptionalStringArray","FRUSTRATION_SIGNAL_SUM_KEY_PREFIX","FRICTION_SIGNAL_SUM_KEY_PREFIX","LOG_STYLE","finalMessage","DEFAULT_TERMINATED_TIMEOUT","LOCAL_STORAGE_KEY_PREFIX","_results","_timeouts","_applicationId","_track","_timeoutMs","_showLogs","_silenceErrors","_silenceAccumulatedValueErrors","timeoutMs","showLogs","silenceErrors","silenceAccumulatedValueErrors","_endAsProcessKilled","_endAsTerminated","_createNewJourney","trackableResult","createdAt","frustrationSignals","frictionSignals","userJourneyName","outcome","_end","durationRealTimeMs","_throwError","setVariant","addBatchMetadata","addFrustrationSignal","frustrationSignal","accumulatedValues","summedPropertiesMap","addFrictionSignal","frictionSignal","setMapEntry","_shouldRecordMapEntryValue","propertiesMap","addSumMapEntry","_shouldRecordAccumulatedNumber","addMaxMapEntry","maxPropertiesMap","addCheckpoint","checkpointName","millisSinceStart","addTag","_mergeAccumulatedValues","addBatchMetadataAndEnd","terminationReason","_sanitizeAccumulatedValues","accumulatedValueProperties","propertiesMapJson","summedPropertiesMapJson","maxPropertiesMapJson","_throwAccumulatedValueError","_normalizeAccumulatedValues","silenceError","isRawUserJourneyResultEventProps","parsePhoneNumberFromString","parsePhoneNumberWithError","parsePhoneNumber","isValidPhoneNumber","isPossiblePhoneNumber","validatePhoneNumberLength","findNumbers","searchNumbers","findPhoneNumbersInText","searchPhoneNumbersInText","getExampleNumber","formatIncompletePhoneNumber","parseIncompletePhoneNumber","parseDigits","withMetadataArgument","parse_","parseNumber","format_","formatNumber","getNumberType_","getNumberType","isPossibleNumber_","isValidNumber_","isValidNumber","isValidNumberForRegion_","isValidNumberForRegion","findPhoneNumbers_","findPhoneNumbers","searchPhoneNumbers_","PhoneNumberSearch_","getPhoneCode"],"sources":["webpack://__ember_auto_import__/src/tools/display.ts","webpack://__ember_auto_import__/src/tools/catchUserErrors.ts","webpack://__ember_auto_import__/src/tools/monitor.ts","webpack://__ember_auto_import__/src/tools/utils/polyfills.ts","webpack://__ember_auto_import__/src/tools/getGlobalObject.ts","webpack://__ember_auto_import__/src/tools/utils/byteUtils.ts","webpack://__ember_auto_import__/src/tools/getZoneJsOriginalValue.ts","webpack://__ember_auto_import__/src/tools/timer.ts","webpack://__ember_auto_import__/src/tools/utils/functionUtils.ts","webpack://__ember_auto_import__/src/tools/serialisation/jsonStringify.ts","webpack://__ember_auto_import__/src/tools/utils/objectUtils.ts","webpack://__ember_auto_import__/src/domain/context/customerDataTracker.ts","webpack://__ember_auto_import__/src/tools/utils/typeUtils.ts","webpack://__ember_auto_import__/src/tools/mergeInto.ts","webpack://__ember_auto_import__/src/tools/serialisation/sanitize.ts","webpack://__ember_auto_import__/src/tools/observable.ts","webpack://__ember_auto_import__/src/domain/context/contextManager.ts","webpack://__ember_auto_import__/src/domain/trackingConsent.ts","webpack://__ember_auto_import__/src/tools/experimentalFeatures.ts","webpack://__ember_auto_import__/src/tools/utils/numberUtils.ts","webpack://__ember_auto_import__/src/tools/utils/timeUtils.ts","webpack://__ember_auto_import__/src/tools/stackTrace/computeStackTrace.ts","webpack://__ember_auto_import__/src/tools/stackTrace/handlingStack.ts","webpack://__ember_auto_import__/src/domain/error/error.ts","webpack://__ember_auto_import__/src/domain/configuration/intakeSites.ts","webpack://__ember_auto_import__/src/tools/sendToExtension.ts","webpack://__ember_auto_import__/src/domain/connectivity/connectivity.ts","webpack://__ember_auto_import__/src/tools/utils/arrayUtils.ts","webpack://__ember_auto_import__/src/tools/boundedBuffer.ts","webpack://__ember_auto_import__/src/browser/addEventListener.ts","webpack://__ember_auto_import__/src/domain/telemetry/rawTelemetryEvent.types.ts","webpack://__ember_auto_import__/src/domain/telemetry/telemetry.ts","webpack://__ember_auto_import__/src/domain/context/storeContextManager.ts","webpack://__ember_auto_import__/src/tools/encoder.ts","webpack://__ember_auto_import__/src/domain/user/user.ts","webpack://__ember_auto_import__/src/boot/displayAlreadyInitializedError.ts","webpack://__ember_auto_import__/src/transport/eventBridge.ts","webpack://__ember_auto_import__/src/tools/utils/stringUtils.ts","webpack://__ember_auto_import__/src/browser/cookie.ts","webpack://__ember_auto_import__/src/domain/synthetics/syntheticsWorkerValues.ts","webpack://__ember_auto_import__/src/tools/utils/browserDetection.ts","webpack://__ember_auto_import__/src/domain/session/storeStrategies/sessionStoreStrategy.ts","webpack://__ember_auto_import__/src/domain/session/sessionConstants.ts","webpack://__ember_auto_import__/src/domain/session/sessionState.ts","webpack://__ember_auto_import__/src/domain/session/storeStrategies/sessionInCookie.ts","webpack://__ember_auto_import__/src/domain/session/storeStrategies/sessionInLocalStorage.ts","webpack://__ember_auto_import__/src/domain/session/sessionStoreOperations.ts","webpack://__ember_auto_import__/src/domain/session/sessionStore.ts","webpack://__ember_auto_import__/src/tools/utils/urlPolyfill.ts","webpack://__ember_auto_import__/src/domain/configuration/endpointBuilder.ts","webpack://__ember_auto_import__/src/domain/configuration/tags.ts","webpack://__ember_auto_import__/src/domain/configuration/configuration.ts","webpack://__ember_auto_import__/src/tools/matchOption.ts","webpack://__ember_auto_import__/src/domain/tracing/tracer.ts","webpack://__ember_auto_import__/src/domain/configuration/transportConfiguration.ts","webpack://__ember_auto_import__/src/domain/configuration/remoteConfiguration.ts","webpack://__ember_auto_import__/src/browser/pageExitObservable.ts","webpack://__ember_auto_import__/src/browser/domMutationObservable.ts","webpack://__ember_auto_import__/src/browser/runOnReadyState.ts","webpack://__ember_auto_import__/src/domain/resource/resourceUtils.ts","webpack://__ember_auto_import__/src/browser/htmlDomUtils.ts","webpack://__ember_auto_import__/src/domain/tracing/getDocumentTraceId.ts","webpack://__ember_auto_import__/src/browser/performanceCollection.ts","webpack://__ember_auto_import__/src/domain/error/error.types.ts","webpack://__ember_auto_import__/src/domain/eventRateLimiter/createEventRateLimiter.ts","webpack://__ember_auto_import__/src/domain/limitModification.ts","webpack://__ember_auto_import__/src/domain/assembly.ts","webpack://__ember_auto_import__/src/domain/contexts/syntheticsContext.ts","webpack://__ember_auto_import__/src/tools/abstractLifeCycle.ts","webpack://__ember_auto_import__/src/browser/xhrObservable.ts","webpack://__ember_auto_import__/src/domain/lifeCycle.ts","webpack://__ember_auto_import__/src/tools/valueHistory.ts","webpack://__ember_auto_import__/src/tools/instrumentMethod.ts","webpack://__ember_auto_import__/src/browser/fetchObservable.ts","webpack://__ember_auto_import__/src/domain/requestCollection.ts","webpack://__ember_auto_import__/src/tools/utils/responseUtils.ts","webpack://__ember_auto_import__/src/tools/readBytesFromStream.ts","webpack://__ember_auto_import__/src/domain/discardNegativeDuration.ts","webpack://__ember_auto_import__/src/domain/trackEventCounts.ts","webpack://__ember_auto_import__/src/domain/waitPageActivityEnd.ts","webpack://__ember_auto_import__/src/browser/polyfills.ts","webpack://__ember_auto_import__/src/domain/privacy.ts","webpack://__ember_auto_import__/src/domain/action/getActionNameFromElement.ts","webpack://__ember_auto_import__/src/domain/getSelectorFromElement.ts","webpack://__ember_auto_import__/src/domain/action/listenActionEvents.ts","webpack://__ember_auto_import__/src/domain/action/computeFrustration.ts","webpack://__ember_auto_import__/src/domain/action/trackClickActions.ts","webpack://__ember_auto_import__/src/domain/action/clickChain.ts","webpack://__ember_auto_import__/src/domain/action/actionCollection.ts","webpack://__ember_auto_import__/src/domain/console/consoleObservable.ts","webpack://__ember_auto_import__/src/domain/report/reportObservable.ts","webpack://__ember_auto_import__/src/domain/error/errorCollection.ts","webpack://__ember_auto_import__/src/domain/error/trackConsoleError.ts","webpack://__ember_auto_import__/src/domain/error/trackRuntimeError.ts","webpack://__ember_auto_import__/src/domain/error/trackReportError.ts","webpack://__ember_auto_import__/src/domain/resource/matchRequestTiming.ts","webpack://__ember_auto_import__/src/domain/resource/resourceCollection.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackInitialViewMetrics.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackNavigationTimings.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackFirstHidden.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackFirstContentfulPaint.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackLargestContentfulPaint.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackFirstInput.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackCumulativeLayoutShift.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/interactionCountPolyfill.ts","webpack://__ember_auto_import__/src/browser/viewportObservable.ts","webpack://__ember_auto_import__/src/browser/scroll.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackCommonViewMetrics.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackLoadingTime.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackScrollMetrics.ts","webpack://__ember_auto_import__/src/domain/view/viewMetrics/trackInteractionToNextPaint.ts","webpack://__ember_auto_import__/src/domain/view/trackViews.ts","webpack://__ember_auto_import__/src/domain/view/viewCollection.ts","webpack://__ember_auto_import__/src/domain/view/trackViewEventCounts.ts","webpack://__ember_auto_import__/src/domain/session/sessionManager.ts","webpack://__ember_auto_import__/src/domain/session/oldCookiesMigration.ts","webpack://__ember_auto_import__/src/domain/rumSessionManager.ts","webpack://__ember_auto_import__/src/transport/batch.ts","webpack://__ember_auto_import__/src/transport/sendWithRetryStrategy.ts","webpack://__ember_auto_import__/src/transport/httpRequest.ts","webpack://__ember_auto_import__/src/transport/startRumBatch.ts","webpack://__ember_auto_import__/src/transport/startBatchWithReplica.ts","webpack://__ember_auto_import__/src/transport/flushController.ts","webpack://__ember_auto_import__/src/domain/contexts/urlContexts.ts","webpack://__ember_auto_import__/src/domain/startCustomerDataTelemetry.ts","webpack://__ember_auto_import__/src/domain/contexts/pageStateHistory.ts","webpack://__ember_auto_import__/src/browser/cookieObservable.ts","webpack://__ember_auto_import__/src/domain/contexts/ciVisibilityContext.ts","webpack://__ember_auto_import__/src/domain/replayStats.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializationUtils.ts","webpack://__ember_auto_import__/src/types/sessionReplayConstants.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializeStyleSheets.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializeAttribute.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializeAttributes.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializeNode.ts","webpack://__ember_auto_import__/src/domain/record/serialization/serializeDocument.ts","webpack://__ember_auto_import__/src/domain/record/eventsUtils.ts","webpack://__ember_auto_import__/src/domain/record/assembly.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackMove.ts","webpack://__ember_auto_import__/src/domain/record/viewports.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackMouseInteraction.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackScroll.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackViewportResize.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackMediaInteraction.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackStyleSheet.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackFocus.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackFrustration.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackViewEnd.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackInput.ts","webpack://__ember_auto_import__/src/domain/record/trackers/trackMutation.ts","webpack://__ember_auto_import__/src/domain/record/mutationBatch.ts","webpack://__ember_auto_import__/src/domain/segmentCollection/segment.ts","webpack://__ember_auto_import__/src/boot/isBrowserSupported.ts","webpack://__ember_auto_import__/src/domain/deflate/deflateEncoder.ts","webpack://__ember_auto_import__/src/domain/deflate/deflateWorker.ts","webpack://__ember_auto_import__/src/entries/main.ts","webpack://__ember_auto_import__/src/boot/recorderApi.ts","webpack://__ember_auto_import__/src/boot/startRecording.ts","webpack://__ember_auto_import__/src/domain/segmentCollection/segmentCollection.ts","webpack://__ember_auto_import__/src/domain/startRecordBridge.ts","webpack://__ember_auto_import__/src/domain/segmentCollection/buildReplayPayload.ts","webpack://__ember_auto_import__/src/domain/record/record.ts","webpack://__ember_auto_import__/src/domain/record/elementsScrollPositions.ts","webpack://__ember_auto_import__/src/domain/record/shadowRootsController.ts","webpack://__ember_auto_import__/src/domain/record/startFullSnapshots.ts","webpack://__ember_auto_import__/src/domain/record/recordIds.ts","webpack://__ember_auto_import__/src/domain/getSessionReplayLink.ts","webpack://__ember_auto_import__/src/domain/getSessionReplayUrl.ts","webpack://__ember_auto_import__/src/boot/rumPublicApi.ts","webpack://__ember_auto_import__/src/domain/contexts/commonContext.ts","webpack://__ember_auto_import__/src/boot/init.ts","webpack://__ember_auto_import__/src/boot/preStartRum.ts","webpack://__ember_auto_import__/src/domain/plugins.ts","webpack://__ember_auto_import__/src/boot/startRum.ts","webpack://__ember_auto_import__/src/domain/contexts/featureFlagContext.ts","webpack://__ember_auto_import__/src/transport/startRumEventBridge.ts","webpack://__ember_auto_import__/src/browser/locationChangeObservable.ts","webpack://__ember_auto_import__/src/domain/contexts/viewContexts.ts","webpack://__ember_auto_import__/src/domain/contexts/displayContext.ts","webpack://__ember_auto_import__/src/domain/longTask/longTaskCollection.ts","webpack://__ember_auto_import__/src/domain/vital/vitalCollection.ts","webpack://__ember_auto_import__/src/domain/contexts/internalContext.ts","webpack://__ember_auto_import__/node_modules/@market/web-components/dist/_commonjsHelpers-BJu3ubxk.js","webpack://__ember_auto_import__/node_modules/@market/web-components/dist/index-254d04f0-z3_1-JvI.js","webpack://__ember_auto_import__/node_modules/@market/web-components/dist/loader/index.cjs.js","webpack://__ember_auto_import__/node_modules/@protobufjs/aspromise/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/base64/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/eventemitter/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/float/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/inquire/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/pool/index.js","webpack://__ember_auto_import__/node_modules/@protobufjs/utf8/index.js","webpack://__ember_auto_import__/src/clientreport.ts","webpack://__ember_auto_import__/src/client.ts","webpack://__ember_auto_import__/src/utils/sdkMetadata.ts","webpack://__ember_auto_import__/src/debug-build.ts","webpack://__ember_auto_import__/src/eventbuilder.ts","webpack://__ember_auto_import__/src/helpers.ts","webpack://__ember_auto_import__/src/integrations/linkederrors.ts","webpack://__ember_auto_import__/src/index.ts","webpack://__ember_auto_import__/src/metadata.ts","webpack://__ember_auto_import__/src/integrations/metadata.ts","webpack://__ember_auto_import__/src/semanticAttributes.ts","webpack://__ember_auto_import__/src/tracing/utils.ts","webpack://__ember_auto_import__/src/tracing/errors.ts","webpack://__ember_auto_import__/src/utils/handleCallbackErrors.ts","webpack://__ember_auto_import__/src/utils/hasTracingEnabled.ts","webpack://__ember_auto_import__/src/tracing/trace.ts","webpack://__ember_auto_import__/src/metrics/metric-summary.ts","webpack://__ember_auto_import__/src/tracing/spanstatus.ts","webpack://__ember_auto_import__/src/tracing/span.ts","webpack://__ember_auto_import__/src/tracing/transaction.ts","webpack://__ember_auto_import__/src/tracing/idletransaction.ts","webpack://__ember_auto_import__/src/tracing/sampling.ts","webpack://__ember_auto_import__/src/tracing/hubextensions.ts","webpack://__ember_auto_import__/src/transports/multiplexed.ts","webpack://__ember_auto_import__/src/metrics/instance.ts","webpack://__ember_auto_import__/src/metrics/browser-aggregator.ts","webpack://__ember_auto_import__/src/metrics/constants.ts","webpack://__ember_auto_import__/src/metrics/integration.ts","webpack://__ember_auto_import__/src/metrics/exports.ts","webpack://__ember_auto_import__/src/utils/parameterize.ts","webpack://__ember_auto_import__/src/tracing/measurement.ts","webpack://__ember_auto_import__/src/buildPolyfills/_optionalChain.ts","webpack://__ember_auto_import__/src/utils/isSentryRequestUrl.ts","webpack://__ember_auto_import__/src/isBrowser.ts","webpack://__ember_auto_import__/src/common/debug-build.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/bindReporter.ts","webpack://__ember_auto_import__/src/browser/types.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/getNavigationEntry.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/getActivationStart.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/initMetric.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/generateUniqueID.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/observe.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/onHidden.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/getVisibilityWatcher.ts","webpack://__ember_auto_import__/src/browser/web-vitals/lib/polyfills/interactionCountPolyfill.ts","webpack://__ember_auto_import__/src/browser/web-vitals/getINP.ts","webpack://__ember_auto_import__/src/browser/web-vitals/getLCP.ts","webpack://__ember_auto_import__/src/browser/web-vitals/onTTFB.ts","webpack://__ember_auto_import__/src/browser/instrument.ts","webpack://__ember_auto_import__/src/browser/web-vitals/getCLS.ts","webpack://__ember_auto_import__/src/browser/web-vitals/getFID.ts","webpack://__ember_auto_import__/src/constants.ts","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/utils.js","webpack://__ember_auto_import__/src/buildPolyfills/_nullishCoalesce.ts","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/types/dist/rrweb-types.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/index.js","webpack://__ember_auto_import__/src/util/timestamp.ts","webpack://__ember_auto_import__/src/coreHandlers/util/addBreadcrumbEvent.ts","webpack://__ember_auto_import__/src/coreHandlers/util/domUtils.ts","webpack://__ember_auto_import__/src/coreHandlers/util/onWindowOpen.ts","webpack://__ember_auto_import__/src/coreHandlers/handleClick.ts","webpack://__ember_auto_import__/src/util/createBreadcrumb.ts","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb-snapshot/es/rrweb-snapshot.js","webpack://__ember_auto_import__/src/coreHandlers/util/getAttributesToRecord.ts","webpack://__ember_auto_import__/src/coreHandlers/handleDom.ts","webpack://__ember_auto_import__/src/util/createPerformanceEntries.ts","webpack://__ember_auto_import__/src/util/log.ts","webpack://__ember_auto_import__/src/eventBuffer/error.ts","webpack://__ember_auto_import__/src/eventBuffer/EventBufferArray.ts","webpack://__ember_auto_import__/src/eventBuffer/WorkerHandler.ts","webpack://__ember_auto_import__/src/eventBuffer/EventBufferCompressionWorker.ts","webpack://__ember_auto_import__/src/eventBuffer/EventBufferProxy.ts","webpack://__ember_auto_import__/src/util/hasSessionStorage.ts","webpack://__ember_auto_import__/src/util/isSampled.ts","webpack://__ember_auto_import__/src/session/Session.ts","webpack://__ember_auto_import__/src/session/saveSession.ts","webpack://__ember_auto_import__/src/session/createSession.ts","webpack://__ember_auto_import__/src/util/isExpired.ts","webpack://__ember_auto_import__/src/util/isSessionExpired.ts","webpack://__ember_auto_import__/src/session/shouldRefreshSession.ts","webpack://__ember_auto_import__/src/session/loadOrCreateSession.ts","webpack://__ember_auto_import__/src/session/fetchSession.ts","webpack://__ember_auto_import__/src/util/addEvent.ts","webpack://__ember_auto_import__/src/util/eventUtils.ts","webpack://__ember_auto_import__/src/coreHandlers/handleAfterSendEvent.ts","webpack://__ember_auto_import__/src/util/createPerformanceSpans.ts","webpack://__ember_auto_import__/src/coreHandlers/util/addNetworkBreadcrumb.ts","webpack://__ember_auto_import__/src/util/shouldFilterRequest.ts","webpack://__ember_auto_import__/src/coreHandlers/util/networkUtils.ts","webpack://__ember_auto_import__/src/coreHandlers/util/fetchUtils.ts","webpack://__ember_auto_import__/src/coreHandlers/handleScope.ts","webpack://__ember_auto_import__/src/util/addGlobalListeners.ts","webpack://__ember_auto_import__/src/util/addMemoryEntry.ts","webpack://__ember_auto_import__/src/util/handleRecordingEmit.ts","webpack://__ember_auto_import__/src/types/rrweb.ts","webpack://__ember_auto_import__/src/util/sendReplayRequest.ts","webpack://__ember_auto_import__/src/util/sendReplay.ts","webpack://__ember_auto_import__/src/util/prepareRecordingData.ts","webpack://__ember_auto_import__/src/util/prepareReplayEvent.ts","webpack://__ember_auto_import__/src/util/createReplayEnvelope.ts","webpack://__ember_auto_import__/src/util/throttle.ts","webpack://__ember_auto_import__/src/replay.ts","webpack://__ember_auto_import__/src/util/debounce.ts","webpack://__ember_auto_import__/src/session/clearSession.ts","webpack://__ember_auto_import__/src/eventBuffer/index.ts","webpack://__ember_auto_import__/replay-worker/build/npm/esm/index.js","webpack://__ember_auto_import__/replay-worker/build/npm/esm/worker.ts","webpack://__ember_auto_import__/src/coreHandlers/handleHistory.ts","webpack://__ember_auto_import__/src/coreHandlers/handleNetworkBreadcrumbs.ts","webpack://__ember_auto_import__/src/coreHandlers/util/xhrUtils.ts","webpack://__ember_auto_import__/src/coreHandlers/handleFetch.ts","webpack://__ember_auto_import__/src/coreHandlers/handleXhr.ts","webpack://__ember_auto_import__/src/coreHandlers/handleGlobalEvent.ts","webpack://__ember_auto_import__/src/coreHandlers/util/addFeedbackBreadcrumb.ts","webpack://__ember_auto_import__/src/util/isRrwebError.ts","webpack://__ember_auto_import__/src/coreHandlers/util/shouldSampleForBufferEvent.ts","webpack://__ember_auto_import__/src/coreHandlers/handleBeforeSendEvent.ts","webpack://__ember_auto_import__/src/coreHandlers/performanceObserver.ts","webpack://__ember_auto_import__/src/coreHandlers/handleKeyboardEvent.ts","webpack://__ember_auto_import__/src/util/getPrivacyOptions.ts","webpack://__ember_auto_import__/src/integration.ts","webpack://__ember_auto_import__/src/util/maskAttribute.ts","webpack://__ember_auto_import__/src/util/getReplay.ts","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-worker/es/rrweb-worker/index.js","webpack://__ember_auto_import__/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-worker/es/rrweb-worker/image-bitmap-data-url-worker.js","webpack://__ember_auto_import__/src/canvas.ts","webpack://__ember_auto_import__/src/sendFeedback.ts","webpack://__ember_auto_import__/src/util/sendFeedbackRequest.ts","webpack://__ember_auto_import__/src/util/prepareFeedbackEvent.ts","webpack://__ember_auto_import__/src/util/mergeOptions.ts","webpack://__ember_auto_import__/src/widget/Main.css.ts","webpack://__ember_auto_import__/src/util/setAttributesNS.ts","webpack://__ember_auto_import__/src/widget/util/createElement.ts","webpack://__ember_auto_import__/src/widget/Form.ts","webpack://__ember_auto_import__/src/widget/createWidget.ts","webpack://__ember_auto_import__/src/util/handleFeedbackSubmit.ts","webpack://__ember_auto_import__/src/widget/SuccessMessage.ts","webpack://__ember_auto_import__/src/widget/SuccessIcon.ts","webpack://__ember_auto_import__/src/widget/Dialog.ts","webpack://__ember_auto_import__/src/widget/SubmitButton.ts","webpack://__ember_auto_import__/src/widget/Logo.ts","webpack://__ember_auto_import__/src/widget/Actor.ts","webpack://__ember_auto_import__/src/widget/Icon.ts","webpack://__ember_auto_import__/src/widget/Actor.css.ts","webpack://__ember_auto_import__/src/widget/createShadowHost.ts","webpack://__ember_auto_import__/src/widget/Dialog.css.ts","webpack://__ember_auto_import__/src/captureconsole.ts","webpack://__ember_auto_import__/src/contextlines.ts","webpack://__ember_auto_import__/src/debug.ts","webpack://__ember_auto_import__/src/dedupe.ts","webpack://__ember_auto_import__/src/extraerrordata.ts","webpack://__ember_auto_import__/src/httpclient.ts","webpack://__ember_auto_import__/src/reportingobserver.ts","webpack://__ember_auto_import__/src/path.ts","webpack://__ember_auto_import__/src/rewriteframes.ts","webpack://__ember_auto_import__/src/sessiontiming.ts","webpack://__ember_auto_import__/src/browser/backgroundtab.ts","webpack://__ember_auto_import__/src/span.ts","webpack://__ember_auto_import__/src/browser/metrics/utils.ts","webpack://__ember_auto_import__/src/browser/metrics/index.ts","webpack://__ember_auto_import__/src/browser/request.ts","webpack://__ember_auto_import__/src/common/fetch.ts","webpack://__ember_auto_import__/src/browser/browsertracing.ts","webpack://__ember_auto_import__/src/browser/router.ts","webpack://__ember_auto_import__/src/browser/browserTracingIntegration.ts","webpack://__ember_auto_import__/src/transports/offline.ts","webpack://__ember_auto_import__/src/profiling/utils.ts","webpack://__ember_auto_import__/src/profiling/hubextensions.ts","webpack://__ember_auto_import__/src/profiling/integration.ts","webpack://__ember_auto_import__/src/integrations/breadcrumbs.ts","webpack://__ember_auto_import__/src/integrations/dedupe.ts","webpack://__ember_auto_import__/src/integrations/globalhandlers.ts","webpack://__ember_auto_import__/src/integrations/httpcontext.ts","webpack://__ember_auto_import__/src/integrations/trycatch.ts","webpack://__ember_auto_import__/src/sdk.ts","webpack://__ember_auto_import__/src/stack-parsers.ts","webpack://__ember_auto_import__/src/transports/utils.ts","webpack://__ember_auto_import__/src/transports/fetch.ts","webpack://__ember_auto_import__/src/transports/xhr.ts","webpack://__ember_auto_import__/src/userfeedback.ts","webpack://__ember_auto_import__/src/api.ts","webpack://__ember_auto_import__/src/baseclient.ts","webpack://__ember_auto_import__/src/metrics/envelope.ts","webpack://__ember_auto_import__/src/envelope.ts","webpack://__ember_auto_import__/src/eventProcessors.ts","webpack://__ember_auto_import__/src/exports.ts","webpack://__ember_auto_import__/src/hub.ts","webpack://__ember_auto_import__/src/integrations/functiontostring.ts","webpack://__ember_auto_import__/src/integrations/inboundfilters.ts","webpack://__ember_auto_import__/src/metrics/utils.ts","webpack://__ember_auto_import__/src/scope.ts","webpack://__ember_auto_import__/src/session.ts","webpack://__ember_auto_import__/src/tracing/dynamicSamplingContext.ts","webpack://__ember_auto_import__/src/transports/base.ts","webpack://__ember_auto_import__/src/promisebuffer.ts","webpack://__ember_auto_import__/src/utils/applyScopeDataToEvent.ts","webpack://__ember_auto_import__/src/utils/getRootSpan.ts","webpack://__ember_auto_import__/src/utils/prepareEvent.ts","webpack://__ember_auto_import__/src/utils/spanUtils.ts","webpack://__ember_auto_import__/src/version.ts","webpack://__ember_auto_import__/src/aggregate-errors.ts","webpack://__ember_auto_import__/src/baggage.ts","webpack://__ember_auto_import__/src/browser.ts","webpack://__ember_auto_import__/src/dsn.ts","webpack://__ember_auto_import__/src/env.ts","webpack://__ember_auto_import__/src/error.ts","webpack://__ember_auto_import__/src/instrument/_handlers.ts","webpack://__ember_auto_import__/src/instrument/console.ts","webpack://__ember_auto_import__/src/instrument/dom.ts","webpack://__ember_auto_import__/src/instrument/fetch.ts","webpack://__ember_auto_import__/src/instrument/globalError.ts","webpack://__ember_auto_import__/src/instrument/globalUnhandledRejection.ts","webpack://__ember_auto_import__/src/vendor/supportsHistory.ts","webpack://__ember_auto_import__/src/instrument/history.ts","webpack://__ember_auto_import__/src/instrument/xhr.ts","webpack://__ember_auto_import__/src/is.ts","webpack://__ember_auto_import__/src/logger.ts","webpack://__ember_auto_import__/src/misc.ts","webpack://__ember_auto_import__/src/node.ts","webpack://__ember_auto_import__/src/normalize.ts","webpack://__ember_auto_import__/src/memo.ts","webpack://__ember_auto_import__/src/object.ts","webpack://__ember_auto_import__/src/ratelimit.ts","webpack://__ember_auto_import__/src/severity.ts","webpack://__ember_auto_import__/src/stacktrace.ts","webpack://__ember_auto_import__/src/string.ts","webpack://__ember_auto_import__/src/supports.ts","webpack://__ember_auto_import__/src/syncpromise.ts","webpack://__ember_auto_import__/src/time.ts","webpack://__ember_auto_import__/src/tracing.ts","webpack://__ember_auto_import__/src/url.ts","webpack://__ember_auto_import__/src/worldwide.ts","webpack://__ember_auto_import__/node_modules/@square/ember-rpc-client/ember-rpc/index.js","webpack://__ember_auto_import__/node_modules/@square/feature-relay-web-sdk/dist/lib/index.es.js","webpack://__ember_auto_import__/src/SqOneTrust.ts","webpack://__ember_auto_import__/node_modules/@square/qrcode-encoder/index.js","webpack://__ember_auto_import__/node_modules/@square/qrcode-encoder/lib/market-qrcode.js","webpack://__ember_auto_import__/node_modules/@square/qrcode-encoder/lib/qrcode.js","webpack://__ember_auto_import__/node_modules/@square/qrcode-encoder/lib/square-qrcode.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/utils/logger.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/utils/parse-response.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/utils/trace-id.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/rpc/rpc.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/rpc/index.js","webpack://__ember_auto_import__/node_modules/@square/web-rpc-client/dist/esm/utils/get-rpc-path.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/protos/squareup/unifiedeventing/messages/context.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/constants.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/campaign.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/cookies.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/index.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/location.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/make-context-obj.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/make-context-schema.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/network.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/referrer.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/session.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/context/subject.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/enums.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/index.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/group-message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/identify-message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/message-version.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/page-message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/track-message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/messages/track-schema-message.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/queue/dispatch-queue.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/queue/on-page-visibility-change.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/queue/utils.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/signature.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/user/index.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/user/persistant-store.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/user/validate-identity.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/assign-not-found.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/assign-read-only.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/clean.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/console-wrapper.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/cookies.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/deep-nesting.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/index.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/local-storage.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/merge.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/timeout.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/truncate-object.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/dist/cjs/src/cdp/utils/type-guards.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/crypto-js/core.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/crypto-js/enc-base64.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/crypto-js/hmac-sha256.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/crypto-js/hmac.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/crypto-js/sha256.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/index.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/md5.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/native.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/nil.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/parse.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/regex.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/rng.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/sha1.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/stringify.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/v1.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/v3.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/v35.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/v4.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/v5.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/validate.js","webpack://__ember_auto_import__/node_modules/@squareup/cdp/node_modules/uuid/dist/commonjs-browser/version.js","webpack://__ember_auto_import__/node_modules/crypto-js/core.js","webpack://__ember_auto_import__/node_modules/crypto-js/sha256.js","webpack://__ember_auto_import__/node_modules/eventstream.js/utils.js","webpack://__ember_auto_import__/node_modules/eventstream.js/eventstream.js","webpack://__ember_auto_import__/node_modules/eventstream.js/node_modules/ua-parser-js/src/ua-parser.js","webpack://__ember_auto_import__/node_modules/fast-memoize/src/index.js","webpack://__ember_auto_import__/node_modules/intl-messageformat-parser/lib/src/types.js","webpack://__ember_auto_import__/node_modules/intl-messageformat-parser/lib/src/skeleton.js","webpack://__ember_auto_import__/node_modules/intl-messageformat-parser/lib/src/parser.js","webpack://__ember_auto_import__/node_modules/intl-messageformat-parser/lib/src/normalize.js","webpack://__ember_auto_import__/node_modules/intl-messageformat-parser/lib/index.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://__ember_auto_import__/node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack://__ember_auto_import__/node_modules/@formatjs/fast-memoize/lib/index.js","webpack://__ember_auto_import__/node_modules/intl-messageformat/lib/src/error.js","webpack://__ember_auto_import__/node_modules/intl-messageformat/lib/src/formatters.js","webpack://__ember_auto_import__/node_modules/intl-messageformat/lib/src/core.js","webpack://__ember_auto_import__/node_modules/intl-messageformat/lib/index.js","webpack://__ember_auto_import__/node_modules/js-cookie/dist/js.cookie.js","webpack://__ember_auto_import__/node_modules/object-assign/index.js","webpack://__ember_auto_import__/node_modules/protobufjs/minimal.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/index-minimal.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/reader.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/reader_buffer.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/roots.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/rpc.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/rpc/service.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/util/longbits.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/util/minimal.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/writer.js","webpack://__ember_auto_import__/node_modules/protobufjs/src/writer_buffer.js","webpack://__ember_auto_import__/node_modules/query-string/index.js","webpack://__ember_auto_import__/node_modules/strict-uri-encode/index.js","webpack://__ember_auto_import__/node_modules/tslib/tslib.es6.js","webpack://__ember_auto_import__/node_modules/ua-parser-js/src/ua-parser.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/index.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/max.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/md5.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/native.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/nil.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/parse.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/regex.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/rng.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/sha1.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/stringify.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v1.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v1ToV6.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v3.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v35.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v4.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v5.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v6.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v6ToV1.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/v7.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/validate.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/node_modules/uuid/dist/cjs-browser/version.js","webpack://__ember_auto_import__/source/AsYouType.js","webpack://__ember_auto_import__/source/AsYouTypeFormatter.PatternMatcher.js","webpack://__ember_auto_import__/source/AsYouTypeFormatter.PatternParser.js","webpack://__ember_auto_import__/source/AsYouTypeFormatter.complete.js","webpack://__ember_auto_import__/source/AsYouTypeFormatter.js","webpack://__ember_auto_import__/source/AsYouTypeFormatter.util.js","webpack://__ember_auto_import__/source/AsYouTypeParser.js","webpack://__ember_auto_import__/source/AsYouTypeState.js","webpack://__ember_auto_import__/source/ParseError.js","webpack://__ember_auto_import__/source/PhoneNumber.js","webpack://__ember_auto_import__/source/PhoneNumberMatcher.js","webpack://__ember_auto_import__/source/constants.js","webpack://__ember_auto_import__/source/findNumbers/LRUCache.js","webpack://__ember_auto_import__/source/findNumbers/Leniency.js","webpack://__ember_auto_import__/source/findNumbers/RegExpCache.js","webpack://__ember_auto_import__/source/findNumbers/isValidCandidate.js","webpack://__ember_auto_import__/source/findNumbers/isValidPreCandidate.js","webpack://__ember_auto_import__/source/findNumbers/matchPhoneNumberStringAgainstPhoneNumber.js","webpack://__ember_auto_import__/source/findNumbers/parsePreCandidate.js","webpack://__ember_auto_import__/source/findNumbers/utf-8.js","webpack://__ember_auto_import__/source/findNumbers/util.js","webpack://__ember_auto_import__/source/findPhoneNumbersInText.js","webpack://__ember_auto_import__/source/format.js","webpack://__ember_auto_import__/source/formatIncompletePhoneNumber.js","webpack://__ember_auto_import__/source/getCountries.js","webpack://__ember_auto_import__/source/getCountryCallingCode.js","webpack://__ember_auto_import__/source/getExampleNumber.js","webpack://__ember_auto_import__/source/helpers/RFC3966.js","webpack://__ember_auto_import__/source/helpers/applyInternationalSeparatorStyle.js","webpack://__ember_auto_import__/source/helpers/checkNumberLength.js","webpack://__ember_auto_import__/source/helpers/extension/createExtensionPattern.js","webpack://__ember_auto_import__/source/helpers/extension/extractExtension.js","webpack://__ember_auto_import__/source/helpers/extractCountryCallingCode.js","webpack://__ember_auto_import__/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","webpack://__ember_auto_import__/source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","webpack://__ember_auto_import__/source/helpers/extractNationalNumber.js","webpack://__ember_auto_import__/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","webpack://__ember_auto_import__/source/helpers/extractPhoneContext.js","webpack://__ember_auto_import__/source/helpers/formatNationalNumberUsingFormat.js","webpack://__ember_auto_import__/source/helpers/getCountryByCallingCode.js","webpack://__ember_auto_import__/source/helpers/getCountryByNationalNumber.js","webpack://__ember_auto_import__/source/helpers/getIddPrefix.js","webpack://__ember_auto_import__/source/helpers/getNumberType.js","webpack://__ember_auto_import__/source/helpers/getPossibleCountriesForNumber.js","webpack://__ember_auto_import__/source/helpers/isObject.js","webpack://__ember_auto_import__/source/helpers/isViablePhoneNumber.js","webpack://__ember_auto_import__/source/helpers/matchesEntirely.js","webpack://__ember_auto_import__/source/helpers/mergeArrays.js","webpack://__ember_auto_import__/source/helpers/parseDigits.js","webpack://__ember_auto_import__/source/helpers/stripIddPrefix.js","webpack://__ember_auto_import__/source/isPossible.js","webpack://__ember_auto_import__/source/isPossiblePhoneNumber.js","webpack://__ember_auto_import__/source/isValid.js","webpack://__ember_auto_import__/source/isValidPhoneNumber.js","webpack://__ember_auto_import__/source/legacy/PhoneNumberSearch.js","webpack://__ember_auto_import__/source/legacy/findNumbers.js","webpack://__ember_auto_import__/source/legacy/findPhoneNumbers.js","webpack://__ember_auto_import__/source/legacy/findPhoneNumbersInitialImplementation.js","webpack://__ember_auto_import__/source/legacy/format.js","webpack://__ember_auto_import__/source/legacy/getNumberType.js","webpack://__ember_auto_import__/source/legacy/isPossibleNumber.js","webpack://__ember_auto_import__/source/legacy/isValidNumber.js","webpack://__ember_auto_import__/source/legacy/isValidNumberForRegion.js","webpack://__ember_auto_import__/source/legacy/isValidNumberForRegion_.js","webpack://__ember_auto_import__/source/legacy/parse.js","webpack://__ember_auto_import__/source/legacy/searchNumbers.js","webpack://__ember_auto_import__/source/metadata.js","webpack://__ember_auto_import__/source/normalizeArguments.js","webpack://__ember_auto_import__/source/parse.js","webpack://__ember_auto_import__/source/parseIncompletePhoneNumber.js","webpack://__ember_auto_import__/source/parsePhoneNumber.js","webpack://__ember_auto_import__/source/parsePhoneNumberWithError.js","webpack://__ember_auto_import__/source/parsePhoneNumberWithError_.js","webpack://__ember_auto_import__/source/parsePhoneNumber_.js","webpack://__ember_auto_import__/source/searchPhoneNumbersInText.js","webpack://__ember_auto_import__/source/tools/semver-compare.js","webpack://__ember_auto_import__/source/validatePhoneNumberLength.js","webpack://__ember_auto_import__/node_modules/@squareup/user-journey-web/dist/index.cjs","webpack://__ember_auto_import__/node_modules/libphonenumber-js/core/index.cjs","webpack://__ember_auto_import__/node_modules/libphonenumber-js/index.cjs","webpack://__ember_auto_import__/node_modules/libphonenumber-js/min/index.cjs"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'use strict';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nexports.commonjsGlobal = commonjsGlobal;\nexports.getDefaultExportFromCjs = getDefaultExportFromCjs;\n","'use strict';\n\nvar index254d04f0 = {};\n\nvar hasRequiredIndex254d04f0;\n\nfunction requireIndex254d04f0 () {\n\tif (hasRequiredIndex254d04f0) return index254d04f0;\n\thasRequiredIndex254d04f0 = 1;\n\tlet localTransformTagName;\n\tfunction getNamespacedTagFor(tagName) {\n\t  return new Proxy((tag) => tag, {\n\t    apply(target, thisArg, args) {\n\t      return Reflect.apply(localTransformTagName !== null && localTransformTagName !== void 0 ? localTransformTagName : target, thisArg, args);\n\t    }\n\t  })(tagName);\n\t}\n\tconst setTransformTagName = (transform) => {\n\t  localTransformTagName = transform;\n\t};\n\tfunction isElementWithTagName(el, tagName) {\n\t  var _a, _b;\n\t  return ((_b = (_a = el === null || el === void 0 ? void 0 : el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a)) === getNamespacedTagFor(tagName);\n\t}\n\tindex254d04f0.getNamespacedTagFor = getNamespacedTagFor;\n\tindex254d04f0.isElementWithTagName = isElementWithTagName;\n\tindex254d04f0.setTransformTagName = setTransformTagName;\n\treturn index254d04f0;\n}\n\nexports.requireIndex254d04f0 = requireIndex254d04f0;\n","'use strict';\n\nvar _commonjsHelpers = require('../_commonjsHelpers-BJu3ubxk.js');\nvar index254d04f0 = require('../index-254d04f0-z3_1-JvI.js');\n\nvar index_cjs$1 = {exports: {}};\n\nvar loader_cjs = {};\n\nvar index37364565 = {};\n\nvar marketAccessory_cjs_entry = {};\n\nvar hasRequiredMarketAccessory_cjs_entry;\n\nfunction requireMarketAccessory_cjs_entry () {\n\tif (hasRequiredMarketAccessory_cjs_entry) return marketAccessory_cjs_entry;\n\thasRequiredMarketAccessory_cjs_entry = 1;\n\tObject.defineProperty(marketAccessory_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketAccessoryCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;justify-content:center;align-items:center}:host(:focus-visible){border-radius:var(--core-radius-66)}:host([size=\"icon\"]){width:var(--accessory-icon-variant-medium-size-width);height:var(--accessory-icon-variant-medium-size-height)}:host([size=\"image\"]){width:var(--accessory-medium-size-width);height:var(--accessory-medium-size-height)}:host ::slotted(.market-icon){}:host ::slotted(img){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}:host([size=\"icon\"]) ::slotted(img){border-radius:var(--accessory-background-radius)}:host([size=\"image\"]) ::slotted(img){border-radius:var(--accessory-background-radius)}';\n\tconst MarketAccessoryStyle0 = marketAccessoryCss;\n\tconst MarketAccessory = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.size = void 0;\n\t  }\n\t  /* TODO: add optional height/width props for custom sizing of slotted image */\n\t  render() {\n\t    return index.h(index.Host, { key: \"ce321a0739c785b655c6483c94ace4248f7adcbb\", class: \"market-accessory\", size: this.size }, index.h(\"slot\", { key: \"4190735a507d572868ad9f54da6a6039a66794e5\" }));\n\t  }\n\t};\n\tMarketAccessory.style = MarketAccessoryStyle0;\n\tmarketAccessory_cjs_entry.market_accessory = MarketAccessory;\n\treturn marketAccessory_cjs_entry;\n}\n\nvar marketAccordionItem_cjs_entry = {};\n\nvar indexC43effe9 = {};\n\nvar hasRequiredIndexC43effe9;\n\nfunction requireIndexC43effe9 () {\n\tif (hasRequiredIndexC43effe9) return indexC43effe9;\n\thasRequiredIndexC43effe9 = 1;\n\tconst ACCORDION_HEADING_10_VARIANT_EXPANDED_PHASE_ICON_ASSET = \"chevron-down\";\n\tconst ACCORDION_HEADING_20_VARIANT_EXPANDED_PHASE_ICON_ASSET = \"chevron-down\";\n\tconst ACCORDION_HEADING_30_VARIANT_EXPANDED_PHASE_ICON_ASSET = \"chevron-down\";\n\tconst BUTTON_GROUP_OVERFLOW_BUTTON_ICON_ASSET = \"ellipsis-horizontal\";\n\tconst BUTTON_GROUP_SPACING = 16;\n\tconst CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION = 240;\n\tconst CORE_ANIMATION_EXIT_TRANSITION_FAST_SPEED_DURATION = 100;\n\tconst CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION = 160;\n\tconst CORE_BLUE_FILL_COLOR = \"rgb(0, 106, 255)\";\n\tconst CORE_BREAKPOINT_NARROW_MAX_WIDTH = 599;\n\tconst CORE_BROWN_FILL_COLOR = \"rgb(102, 74, 46)\";\n\tconst CORE_BURGUNDY_FILL_COLOR = \"rgb(153, 8, 56)\";\n\tconst CORE_FOREST_FILL_COLOR = \"rgb(25, 128, 42)\";\n\tconst CORE_GOLD_FILL_COLOR = \"rgb(255, 159, 64)\";\n\tconst CORE_GREEN_FILL_COLOR = \"rgb(0, 178, 59)\";\n\tconst CORE_ORANGE_FILL_COLOR = \"rgb(242, 91, 61)\";\n\tconst CORE_PINK_FILL_COLOR = \"rgb(217, 54, 176)\";\n\tconst CORE_PURPLE_FILL_COLOR = \"rgb(135, 22, 217)\";\n\tconst CORE_RED_FILL_COLOR = \"rgb(204, 0, 35)\";\n\tconst CORE_SKY_FILL_COLOR = \"rgb(38, 147, 255)\";\n\tconst CORE_TAUPE_FILL_COLOR = \"rgb(166, 124, 83)\";\n\tconst CORE_TEAL_FILL_COLOR = \"rgb(18, 191, 148)\";\n\tconst CORE_TYPE_PARAGRAPH_20_FONT_FAMILY = \"Square Sans Text\";\n\tconst CORE_TYPE_PARAGRAPH_20_SIZE = 14;\n\tconst CORE_TYPE_PARAGRAPH_30_FONT_FAMILY = \"Square Sans Text\";\n\tconst CORE_TYPE_PARAGRAPH_30_SIZE = 16;\n\tconst CORE_YELLOW_FILL_COLOR = \"rgb(255, 191, 0)\";\n\tconst HEADER_CLOSE_BUTTON_ICON_ASSET = \"x\";\n\tconst MODAL_DIALOG_ANIMATION_ENTER_TRANSITION_DURATION = 240;\n\tconst MODAL_DIALOG_ANIMATION_EXIT_TRANSITION_DURATION = 160;\n\tconst MODAL_FULL_ANIMATION_ENTER_TRANSITION_DURATION = 240;\n\tconst MODAL_FULL_ANIMATION_EXIT_TRANSITION_DURATION = 160;\n\tconst MODAL_PARTIAL_ANIMATION_ENTER_TRANSITION_DURATION = 240;\n\tconst MODAL_PARTIAL_ANIMATION_EXIT_TRANSITION_DURATION = 160;\n\tconst MODAL_SHEET_HANDLE_HEIGHT = 6;\n\tconst MODAL_SHEET_HANDLE_PADDING_BOTTOM_SIZE = 8;\n\tconst MODAL_SHEET_HANDLE_PADDING_TOP_SIZE = 26;\n\tconst ROW_FOCUS_RING_BORDER_SIZE = 2;\n\tconst ROW_FOCUS_RING_BUFFER_SIZE = 2;\n\tconst ROW_MEDIUM_SIZE_CARET_ICON_ASSET = \"chevron-right\";\n\tconst ROW_SMALL_SIZE_CARET_ICON_ASSET = \"chevron-right\";\n\tconst SEGMENTED_CONTROL_PADDING_HORIZONTAL = 4;\n\tconst TEXTAREA_MAXIMUM_HEIGHT = 320;\n\tindexC43effe9.ACCORDION_HEADING_10_VARIANT_EXPANDED_PHASE_ICON_ASSET = ACCORDION_HEADING_10_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\tindexC43effe9.ACCORDION_HEADING_20_VARIANT_EXPANDED_PHASE_ICON_ASSET = ACCORDION_HEADING_20_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\tindexC43effe9.ACCORDION_HEADING_30_VARIANT_EXPANDED_PHASE_ICON_ASSET = ACCORDION_HEADING_30_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\tindexC43effe9.BUTTON_GROUP_OVERFLOW_BUTTON_ICON_ASSET = BUTTON_GROUP_OVERFLOW_BUTTON_ICON_ASSET;\n\tindexC43effe9.BUTTON_GROUP_SPACING = BUTTON_GROUP_SPACING;\n\tindexC43effe9.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION = CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION;\n\tindexC43effe9.CORE_ANIMATION_EXIT_TRANSITION_FAST_SPEED_DURATION = CORE_ANIMATION_EXIT_TRANSITION_FAST_SPEED_DURATION;\n\tindexC43effe9.CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION = CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION;\n\tindexC43effe9.CORE_BLUE_FILL_COLOR = CORE_BLUE_FILL_COLOR;\n\tindexC43effe9.CORE_BREAKPOINT_NARROW_MAX_WIDTH = CORE_BREAKPOINT_NARROW_MAX_WIDTH;\n\tindexC43effe9.CORE_BROWN_FILL_COLOR = CORE_BROWN_FILL_COLOR;\n\tindexC43effe9.CORE_BURGUNDY_FILL_COLOR = CORE_BURGUNDY_FILL_COLOR;\n\tindexC43effe9.CORE_FOREST_FILL_COLOR = CORE_FOREST_FILL_COLOR;\n\tindexC43effe9.CORE_GOLD_FILL_COLOR = CORE_GOLD_FILL_COLOR;\n\tindexC43effe9.CORE_GREEN_FILL_COLOR = CORE_GREEN_FILL_COLOR;\n\tindexC43effe9.CORE_ORANGE_FILL_COLOR = CORE_ORANGE_FILL_COLOR;\n\tindexC43effe9.CORE_PINK_FILL_COLOR = CORE_PINK_FILL_COLOR;\n\tindexC43effe9.CORE_PURPLE_FILL_COLOR = CORE_PURPLE_FILL_COLOR;\n\tindexC43effe9.CORE_RED_FILL_COLOR = CORE_RED_FILL_COLOR;\n\tindexC43effe9.CORE_SKY_FILL_COLOR = CORE_SKY_FILL_COLOR;\n\tindexC43effe9.CORE_TAUPE_FILL_COLOR = CORE_TAUPE_FILL_COLOR;\n\tindexC43effe9.CORE_TEAL_FILL_COLOR = CORE_TEAL_FILL_COLOR;\n\tindexC43effe9.CORE_TYPE_PARAGRAPH_20_FONT_FAMILY = CORE_TYPE_PARAGRAPH_20_FONT_FAMILY;\n\tindexC43effe9.CORE_TYPE_PARAGRAPH_20_SIZE = CORE_TYPE_PARAGRAPH_20_SIZE;\n\tindexC43effe9.CORE_TYPE_PARAGRAPH_30_FONT_FAMILY = CORE_TYPE_PARAGRAPH_30_FONT_FAMILY;\n\tindexC43effe9.CORE_TYPE_PARAGRAPH_30_SIZE = CORE_TYPE_PARAGRAPH_30_SIZE;\n\tindexC43effe9.CORE_YELLOW_FILL_COLOR = CORE_YELLOW_FILL_COLOR;\n\tindexC43effe9.HEADER_CLOSE_BUTTON_ICON_ASSET = HEADER_CLOSE_BUTTON_ICON_ASSET;\n\tindexC43effe9.MODAL_DIALOG_ANIMATION_ENTER_TRANSITION_DURATION = MODAL_DIALOG_ANIMATION_ENTER_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_DIALOG_ANIMATION_EXIT_TRANSITION_DURATION = MODAL_DIALOG_ANIMATION_EXIT_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_FULL_ANIMATION_ENTER_TRANSITION_DURATION = MODAL_FULL_ANIMATION_ENTER_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_FULL_ANIMATION_EXIT_TRANSITION_DURATION = MODAL_FULL_ANIMATION_EXIT_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_PARTIAL_ANIMATION_ENTER_TRANSITION_DURATION = MODAL_PARTIAL_ANIMATION_ENTER_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_PARTIAL_ANIMATION_EXIT_TRANSITION_DURATION = MODAL_PARTIAL_ANIMATION_EXIT_TRANSITION_DURATION;\n\tindexC43effe9.MODAL_SHEET_HANDLE_HEIGHT = MODAL_SHEET_HANDLE_HEIGHT;\n\tindexC43effe9.MODAL_SHEET_HANDLE_PADDING_BOTTOM_SIZE = MODAL_SHEET_HANDLE_PADDING_BOTTOM_SIZE;\n\tindexC43effe9.MODAL_SHEET_HANDLE_PADDING_TOP_SIZE = MODAL_SHEET_HANDLE_PADDING_TOP_SIZE;\n\tindexC43effe9.ROW_FOCUS_RING_BORDER_SIZE = ROW_FOCUS_RING_BORDER_SIZE;\n\tindexC43effe9.ROW_FOCUS_RING_BUFFER_SIZE = ROW_FOCUS_RING_BUFFER_SIZE;\n\tindexC43effe9.ROW_MEDIUM_SIZE_CARET_ICON_ASSET = ROW_MEDIUM_SIZE_CARET_ICON_ASSET;\n\tindexC43effe9.ROW_SMALL_SIZE_CARET_ICON_ASSET = ROW_SMALL_SIZE_CARET_ICON_ASSET;\n\tindexC43effe9.SEGMENTED_CONTROL_PADDING_HORIZONTAL = SEGMENTED_CONTROL_PADDING_HORIZONTAL;\n\tindexC43effe9.TEXTAREA_MAXIMUM_HEIGHT = TEXTAREA_MAXIMUM_HEIGHT;\n\treturn indexC43effe9;\n}\n\nvar hasRequiredMarketAccordionItem_cjs_entry;\n\nfunction requireMarketAccordionItem_cjs_entry () {\n\tif (hasRequiredMarketAccordionItem_cjs_entry) return marketAccordionItem_cjs_entry;\n\thasRequiredMarketAccordionItem_cjs_entry = 1;\n\tObject.defineProperty(marketAccordionItem_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst marketAccordionItemCss = ':host{display:block;box-shadow:inset\\n    0\\n    calc(var(--accordion-heading-30-variant-separator-size) * -1)\\n    0\\n    var(--accordion-heading-30-variant-separator-color)}:host .market-icon{transition-duration:var(\\n        --accordion-normal-state-accessory-transition-duration,\\n        var(--core-animation-exit-transition-slow-speed-duration)\\n      )}:host .accordion-content[hidden]{display:none}button{all:unset;display:flex;justify-content:space-between;align-items:center;width:100%;color:var(--accordion-normal-state-content-color);cursor:pointer}button:focus-visible{border-radius:var(--core-radius-66);outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color)}button:hover{color:var(--accordion-hover-state-content-color)}button:active{color:var(--accordion-pressed-state-content-color)}:host([expanded]) .market-icon{transform:rotate(-180deg)}:host([expanded]) .accordion-content{display:block}:host([disabled]) button{color:var(--accordion-disabled-state-content-color);cursor:not-allowed;pointer-events:none}h2{margin:0;font-weight:var(--accordion-heading-30-variant-text-weight);font-size:var(--accordion-heading-30-variant-text-size);font-family:var(--accordion-heading-30-variant-text-font-family)}h2 button{padding:var(--accordion-heading-30-variant-vertical-padding)\\n      var(--accordion-heading-30-variant-horizontal-padding)}h2+.accordion-content{padding-bottom:var(--accordion-heading-30-variant-vertical-padding)}h2 .market-icon{width:var(--accordion-heading-30-variant-expanded-phase-icon-width);height:var(--accordion-heading-30-variant-expanded-phase-icon-height)}h3{margin:0;font-weight:var(--accordion-heading-20-variant-text-weight);font-size:var(--accordion-heading-20-variant-text-size);font-family:var(--accordion-heading-20-variant-text-font-family)}h3 button{padding:var(--accordion-heading-20-variant-vertical-padding)\\n      var(--accordion-heading-20-variant-horizontal-padding)}h3+.accordion-content{padding-bottom:var(--accordion-heading-20-variant-vertical-padding)}h3 .market-icon{width:var(--accordion-heading-20-variant-expanded-phase-icon-width);height:var(--accordion-heading-20-variant-expanded-phase-icon-height)}h4{margin:0;font-weight:var(--accordion-heading-10-variant-text-weight);font-size:var(--accordion-heading-10-variant-text-size);font-family:var(--accordion-heading-10-variant-text-font-family)}h4 button{padding:var(--accordion-heading-10-variant-vertical-padding)\\n      var(--accordion-heading-10-variant-horizontal-padding)}h4+.accordion-content{padding-bottom:var(--accordion-heading-10-variant-vertical-padding)}h4 .market-icon{width:var(--accordion-heading-10-variant-expanded-phase-icon-width);height:var(--accordion-heading-10-variant-expanded-phase-icon-height)}:host([size=\"medium\"]) svg{width:20px;height:20px}:host([size=\"small\"]) svg{width:16px;height:16px}';\n\tconst MarketAccordionItemStyle0 = marketAccordionItemCss;\n\tconst sizeToHeadingType = {\n\t  large: \"2\",\n\t  medium: \"3\",\n\t  small: \"4\"\n\t};\n\tconst MarketAccordionItem = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketAccordionItemExpandedChange = index.createEvent(this, \"marketAccordionItemExpandedChange\", 7);\n\t    this.name = void 0;\n\t    this.expanded = false;\n\t    this.disabled = false;\n\t    this.size = \"medium\";\n\t    this.customTrigger = void 0;\n\t  }\n\t  marketAccordionToggleHandler(e) {\n\t    e.stopPropagation();\n\t    this.setExpanded(!this.expanded);\n\t  }\n\t  /**\n\t   * Used to set the \"open\" state of the accordion.\n\t   */\n\t  setExpanded(newExpanded) {\n\t    const oldExpanded = this.expanded;\n\t    if (newExpanded !== oldExpanded) {\n\t      const { defaultPrevented } = this.marketAccordionItemExpandedChange.emit({\n\t        expanded: newExpanded\n\t      });\n\t      if (!defaultPrevented) {\n\t        this.expanded = newExpanded;\n\t        if (this.customTrigger) {\n\t          this.customTrigger.expanded = newExpanded;\n\t        }\n\t      }\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `disabled` state. Allows external elements to programmatically trigger disabled styling.\n\t   */\n\t  setDisabled(value) {\n\t    this.disabled = value;\n\t    return Promise.resolve();\n\t  }\n\t  getAccordionIcon() {\n\t    switch (this.size) {\n\t      case \"small\":\n\t        return index$1.ACCORDION_HEADING_10_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\t      case \"large\":\n\t        return index$1.ACCORDION_HEADING_30_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\t      default:\n\t        return index$1.ACCORDION_HEADING_20_VARIANT_EXPANDED_PHASE_ICON_ASSET;\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.customTrigger = this.el.querySelector('[slot=\"custom-trigger\"]');\n\t    if (this.customTrigger) {\n\t      this.customTrigger.expanded = this.expanded;\n\t    }\n\t  }\n\t  render() {\n\t    const Heading = `h${sizeToHeadingType[this.size]}`;\n\t    const MarketIconTagName = index$2.getNamespacedTagFor(\"market-icon\");\n\t    return index.h(index.Host, { key: \"4b20d0e24e4357e3bdcaa587cd5b755c5308469a\", class: \"market-accordion-item\" }, this.customTrigger ? index.h(\"slot\", { name: \"custom-trigger\" }) : index.h(Heading, null, index.h(\"button\", { id: `${this.name}__button`, type: \"button\", \"aria-expanded\": this.expanded, \"aria-controls\": `${this.name}__content`, \"aria-disabled\": this.disabled, disabled: this.disabled, onClick: () => this.setExpanded(!this.expanded) }, index.h(\"slot\", { name: \"label\" }), index.h(MarketIconTagName, { name: this.getAccordionIcon() }))), index.h(\"div\", { key: \"27b328eaae1415483e27939374e51ba5f750638c\", id: `${this.name}__content`, class: \"accordion-content\", role: \"region\", \"aria-labelledby\": `${this.name}__button`, hidden: !this.expanded }, index.h(\"slot\", { key: \"37cf277011e3c66788f2f9bf8ce8867e09f53546\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketAccordionItem.style = MarketAccordionItemStyle0;\n\tmarketAccordionItem_cjs_entry.market_accordion_item = MarketAccordionItem;\n\treturn marketAccordionItem_cjs_entry;\n}\n\nvar marketActionCard_cjs_entry = {};\n\nvar elementTypeGuardE6549907 = {};\n\nvar hasRequiredElementTypeGuardE6549907;\n\nfunction requireElementTypeGuardE6549907 () {\n\tif (hasRequiredElementTypeGuardE6549907) return elementTypeGuardE6549907;\n\thasRequiredElementTypeGuardE6549907 = 1;\n\tconst index = index254d04f0.requireIndex254d04f0();\n\tfunction isCheckboxElement(el) {\n\t  return (el === null || el === void 0 ? void 0 : el.tagName) === index.getNamespacedTagFor(\"market-checkbox\").toUpperCase();\n\t}\n\tfunction isRadioElement(el) {\n\t  return (el === null || el === void 0 ? void 0 : el.tagName) === index.getNamespacedTagFor(\"market-radio\").toUpperCase();\n\t}\n\tfunction isRowElement(el) {\n\t  return (el === null || el === void 0 ? void 0 : el.tagName) === index.getNamespacedTagFor(\"market-row\").toUpperCase();\n\t}\n\tfunction isToggleElement(el) {\n\t  return (el === null || el === void 0 ? void 0 : el.tagName) === index.getNamespacedTagFor(\"market-toggle\").toUpperCase();\n\t}\n\telementTypeGuardE6549907.isCheckboxElement = isCheckboxElement;\n\telementTypeGuardE6549907.isRadioElement = isRadioElement;\n\telementTypeGuardE6549907.isRowElement = isRowElement;\n\telementTypeGuardE6549907.isToggleElement = isToggleElement;\n\treturn elementTypeGuardE6549907;\n}\n\nvar hasRequiredMarketActionCard_cjs_entry;\n\nfunction requireMarketActionCard_cjs_entry () {\n\tif (hasRequiredMarketActionCard_cjs_entry) return marketActionCard_cjs_entry;\n\thasRequiredMarketActionCard_cjs_entry = 1;\n\tObject.defineProperty(marketActionCard_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst elementTypeGuard = requireElementTypeGuardE6549907();\n\tindex254d04f0.requireIndex254d04f0();\n\tfunction getRowInActionCard(actionCardEl) {\n\t  if (!(actionCardEl === null || actionCardEl === void 0 ? void 0 : actionCardEl.children)) {\n\t    return null;\n\t  }\n\t  return [...actionCardEl.children].find(elementTypeGuard.isRowElement);\n\t}\n\tconst marketActionCardCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--focus-ring-color:color-mix(in srgb, var(--action-card-focus-ring-color) 100%, transparent);display:block;padding:var(--action-card-padding-vertical-size) var(--action-card-padding-horizontal-size);border-radius:var(--action-card-border-radius);background-color:var(--action-card-background-color);box-shadow:inset\\n    0\\n    0\\n    0\\n    var(--action-card-normal-state-unselected-value-border-width)\\n    var(--action-card-normal-state-unselected-value-border-color);opacity:var(--action-card-normal-state-content-opacity);cursor:pointer}:host(:hover){background-color:var(--action-card-hover-state-unselected-value-background-color);box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-hover-state-unselected-value-border-width)\\n      var(--action-card-hover-state-unselected-value-border-color)}:host(:active){background-color:var(--action-card-active-state-unselected-value-background-color);box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-active-state-unselected-value-border-width)\\n      var(--action-card-active-state-unselected-value-border-color)}:host([disabled]){box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-disabled-state-unselected-value-border-width)\\n      var(--action-card-disabled-state-unselected-value-border-color);opacity:var(--action-card-disabled-state-content-opacity)}:host([selected]){box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-normal-state-selected-value-border-width)\\n      var(--action-card-normal-state-selected-value-border-color)}:host([selected]:hover){background-color:var(--action-card-hover-state-selected-value-background-color);box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-hover-state-selected-value-border-width)\\n      var(--action-card-hover-state-selected-value-border-color)}:host([selected]:active){background-color:var(--action-card-active-state-selected-value-background-color);box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-active-state-selected-value-border-width)\\n      var(--action-card-active-state-selected-value-border-color)}:host([selected][disabled]){box-shadow:inset\\n      0\\n      0\\n      0\\n      var(--action-card-disabled-state-selected-value-border-width)\\n      var(--action-card-disabled-state-selected-value-border-color)}:host(.has-slotted-row){padding:0 var(--row-background-horizontal-outset-padding)}:host(.has-slotted-row) ::slotted(.market-row){--row-normal-variant-hover-state-text-color:var(--row-normal-variant-normal-state-text-color);--row-normal-variant-hover-state-subtext-color:var(--row-normal-variant-normal-state-subtext-color);--row-normal-variant-hover-state-side-text-primary-color:var(--row-normal-variant-normal-state-side-text-primary-color);--row-normal-variant-hover-state-side-text-secondary-color:var(--row-normal-variant-normal-state-side-text-secondary-color);--row-normal-variant-selected-state-text-color:var(--row-normal-variant-normal-state-text-color);--row-normal-variant-selected-state-subtext-color:var(--row-normal-variant-normal-state-subtext-color);--row-normal-variant-selected-state-side-text-primary-color:var(--row-normal-variant-normal-state-side-text-primary-color);--row-normal-variant-selected-state-side-text-secondary-color:var(--row-normal-variant-normal-state-side-text-secondary-color);--row-normal-variant-pressed-state-text-color:var(--row-normal-variant-normal-state-text-color);--row-normal-variant-pressed-state-subtext-color:var(--row-normal-variant-normal-state-subtext-color);--row-normal-variant-pressed-state-side-text-primary-color:var(--row-normal-variant-normal-state-side-text-primary-color);--row-normal-variant-pressed-state-side-text-secondary-color:var(--row-normal-variant-normal-state-side-text-secondary-color);padding-right:calc(\\n          var(--action-card-padding-horizontal-size) -\\n          var(--row-normal-variant-background-horizontal-outset-padding)\\n        );padding-left:calc(\\n          var(--action-card-padding-horizontal-size) -\\n          var(--row-normal-variant-background-horizontal-outset-padding)\\n        );background-color:transparent}:host(:focus-visible){outline:var(--action-card-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--action-card-focus-ring-buffer-size)}\";\n\tconst MarketActionCardStyle0 = marketActionCardCss;\n\tconst MarketActionCard = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketCardSelected = index.createEvent(this, \"marketCardSelected\", 7);\n\t    this.marketCardDeselected = index.createEvent(this, \"marketCardDeselected\", 7);\n\t    this.selected = false;\n\t    this.disabled = false;\n\t    this.value = void 0;\n\t    this.transient = false;\n\t  }\n\t  /**\n\t   * When rows are slotted into cards, we want to catch their selection events\n\t   * and emit our own, so that the containing `market-list` only gets one set\n\t   * of selection events.\n\t   */\n\t  handleRowSelection(e) {\n\t    this.select();\n\t    e.stopPropagation();\n\t  }\n\t  /**\n\t   * When rows are slotted into cards, we want to catch their selection events\n\t   * and emit our own, so that the containing `market-list` only gets one set\n\t   * of selection events.\n\t   */\n\t  handleRowDeselection(e) {\n\t    this.deselect();\n\t    e.stopPropagation();\n\t  }\n\t  /**\n\t   * Set `selected` to `true` and emit `marketCardSelected`. Generally speaking,\n\t   * it is preferable to avoid using this method from outside this component\n\t   * and allow `market-action-card` to manage its own selection state based on user\n\t   * interaction. It should only be used for parent components that need to\n\t   * manage a group of rows, such as `market-list`.\n\t   */\n\t  async select() {\n\t    var _a, _b;\n\t    this.selected = true;\n\t    await ((_a = this.rowEl) === null || _a === void 0 ? void 0 : _a.silentlySelect());\n\t    const { defaultPrevented } = this.marketCardSelected.emit({ value: this.value });\n\t    if (defaultPrevented) {\n\t      this.selected = false;\n\t      await ((_b = this.rowEl) === null || _b === void 0 ? void 0 : _b.silentlyDeselect());\n\t    }\n\t  }\n\t  /**\n\t   * Set `selected` to `false` and emit `marketCardDeselected`. Generally speaking,\n\t   * it is preferable to avoid using this method from outside this component\n\t   * and allow `market-action-card` to manage its own selection state based on user\n\t   * interaction. It should only be used for parent components that need to\n\t   * manage a group of rows, such as `market-list`.\n\t   */\n\t  async deselect() {\n\t    var _a, _b;\n\t    this.selected = false;\n\t    await ((_a = this.rowEl) === null || _a === void 0 ? void 0 : _a.silentlyDeselect());\n\t    const { defaultPrevented } = this.marketCardDeselected.emit({ value: this.value });\n\t    if (defaultPrevented) {\n\t      this.selected = true;\n\t      await ((_b = this.rowEl) === null || _b === void 0 ? void 0 : _b.silentlySelect());\n\t    }\n\t  }\n\t  /**\n\t   * Used for setting the selection state to true without emitting events.\n\t   * Useful for scenarios where another component (ex. `<market-list>`) needs\n\t   * to sync state with slotted `<market-action-card>`s.\n\t   */\n\t  async silentlySelect() {\n\t    var _a;\n\t    this.selected = true;\n\t    await ((_a = this.rowEl) === null || _a === void 0 ? void 0 : _a.silentlySelect());\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Set `selected` to `false`. Generally speaking,\n\t   * it is preferable to avoid using this method from outside this component\n\t   * and allow `market-action-card` to manage its own selection state based on user\n\t   * interaction. It should only be used for parent components that need to\n\t   * manage a group of rows, such as `market-list`.\n\t   */\n\t  async silentlyDeselect() {\n\t    var _a;\n\t    this.selected = false;\n\t    await ((_a = this.rowEl) === null || _a === void 0 ? void 0 : _a.silentlyDeselect());\n\t    return Promise.resolve();\n\t  }\n\t  isContentEditable(el) {\n\t    const inputTagnames = [\"input\", \"textarea\"];\n\t    return inputTagnames.some((str) => el.tagName.includes(str)) || el.isContentEditable;\n\t  }\n\t  handleClick(e) {\n\t    if (this.isContentEditable(e.target)) {\n\t      return;\n\t    }\n\t    if (this.disabled || this.transient || this.rowEl) {\n\t      return;\n\t    }\n\t    if (!this.selected) {\n\t      this.select();\n\t    } else {\n\t      this.deselect();\n\t    }\n\t  }\n\t  handleKeydown(e) {\n\t    if (this.isContentEditable(e.target)) {\n\t      return;\n\t    }\n\t    if (e.key === \"Enter\" || e.key === \" \") {\n\t      e.preventDefault();\n\t      if (this.rowEl) {\n\t        this.rowEl.click();\n\t      } else {\n\t        this.el.click();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Removes the tabIndex attribute from both the slotted row element and its container div\n\t   * to prevent focus when rows are slotted inside action cards.\n\t   */\n\t  removeRowTabIndex() {\n\t    if (!this.rowEl) {\n\t      return;\n\t    }\n\t    requestAnimationFrame(() => {\n\t      var _a;\n\t      this.rowEl.removeAttribute(\"tabIndex\");\n\t      const containerEl = (_a = this.rowEl.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[part=\"container\"]');\n\t      if (containerEl) {\n\t        containerEl.removeAttribute(\"tabIndex\");\n\t      }\n\t    });\n\t  }\n\t  syncRowAttributes() {\n\t    if (!this.rowEl) {\n\t      return;\n\t    }\n\t    this.rowEl.interactive = true;\n\t    this.rowEl.selected = this.selected;\n\t    this.removeRowTabIndex();\n\t  }\n\t  handleSlotChangeDefault() {\n\t    this.rowEl = getRowInActionCard(this.el);\n\t    this.el.classList.toggle(\"has-slotted-row\", Boolean(this.rowEl));\n\t    this.syncRowAttributes();\n\t  }\n\t  componentDidRender() {\n\t    this.removeRowTabIndex();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"9df44686b00f0c3bb79081574c839aba79bdde7f\", \"aria-selected\": this.selected.toString(), class: \"market-action-card\", onClick: this.handleClick.bind(this), onKeydown: this.handleKeydown.bind(this), role: \"option\", tabindex: this.disabled ? null : \"0\" }, index.h(\"slot\", { key: \"5a1265f847e80dcb717a58eb059e0cd7f66d00b7\", onSlotchange: () => this.handleSlotChangeDefault() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketActionCard.style = MarketActionCardStyle0;\n\tmarketActionCard_cjs_entry.market_action_card = MarketActionCard;\n\treturn marketActionCard_cjs_entry;\n}\n\nvar marketActivityIndicator_cjs_entry = {};\n\nvar hasRequiredMarketActivityIndicator_cjs_entry;\n\nfunction requireMarketActivityIndicator_cjs_entry () {\n\tif (hasRequiredMarketActivityIndicator_cjs_entry) return marketActivityIndicator_cjs_entry;\n\thasRequiredMarketActivityIndicator_cjs_entry = 1;\n\tObject.defineProperty(marketActivityIndicator_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketActivityIndicatorCss = ':root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}.market-activity-indicator{display:inline-block;width:var(--icon-width, 48px);height:var(--icon-height, 48px)}.market-activity-indicator[size=\"small\"]{--icon-width:var(--spinner-small-size-width, 24px);--icon-height:var(--spinner-small-size-height, 24px)}.market-activity-indicator[size=\"large\"]{--icon-width:var(--spinner-large-size-width, 48px);--icon-height:var(--spinner-large-size-height, 48px)}.market-activity-indicator[size=\"x-large\"]{--icon-width:var(--spinner-xlarge-size-width, 80px);--icon-height:var(--spinner-xlarge-size-height, 80px)}.market-activity-indicator[size=\"xx-large\"]{--icon-width:var(--spinner-xxlarge-size-width, 136px);--icon-height:var(--spinner-xxlarge-size-height, 136px)}.market-activity-indicator svg{width:100%;height:100%;fill:currentcolor;animation:market-activity-indicator-rotation\\n    var(--animation-infinite-duration)\\n    var(--animation-infinite-iteration-count)\\n    var(--animation-infinite-timing-function)}';\n\tconst MarketActivityIndicatorStyle0 = marketActivityIndicatorCss;\n\tconst MarketActivityIndicator = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.size = \"large\";\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"d00717a17435b7572e27ffac67192b3ba12216b2\", class: \"market-activity-indicator\" }, index.h(\"svg\", { key: \"17d4ebe0f92b1dff8961d3c5de7ccf2719dab31a\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"b35cffd2d1179465f1832c12bbe8d6f52dc389aa\", \"clip-rule\": \"evenodd\", \"fill-rule\": \"evenodd\", d: \"M21.3333 12C21.3333 6.84534 17.1547 2.66667 12 2.66667V0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12H2.66667C2.66667 17.1547 6.84534 21.3333 12 21.3333C17.1547 21.3333 21.3333 17.1547 21.3333 12Z\" })));\n\t  }\n\t};\n\tMarketActivityIndicator.style = MarketActivityIndicatorStyle0;\n\tmarketActivityIndicator_cjs_entry.market_activity_indicator = MarketActivityIndicator;\n\treturn marketActivityIndicator_cjs_entry;\n}\n\nvar marketActivityIndicatorBar_cjs_entry = {};\n\nvar hasRequiredMarketActivityIndicatorBar_cjs_entry;\n\nfunction requireMarketActivityIndicatorBar_cjs_entry () {\n\tif (hasRequiredMarketActivityIndicatorBar_cjs_entry) return marketActivityIndicatorBar_cjs_entry;\n\thasRequiredMarketActivityIndicatorBar_cjs_entry = 1;\n\tObject.defineProperty(marketActivityIndicatorBar_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketActivityIndicatorBarCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--activity-indicator-bar-height:4px;--activity-indicator-bar-border-radius:6px;--activity-indicator-bar-bar-color:var(--core-fill-40-color);--activity-indicator-bar-value-color:var(--core-emphasis-fill-color);display:block;height:var(--activity-indicator-bar-height)}progress{display:block;width:100%;height:100%;border:none;border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-bar-color);-webkit-appearance:none;-moz-appearance:none;appearance:none}progress[value]::-webkit-progress-value{border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-value-color)}progress[value]::-webkit-progress-bar,progress:not([value])::-webkit-progress-bar{border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-bar-color)}progress[value]::-moz-progress-bar{border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-value-color)}progress:not([value])::-moz-progress-bar{visibility:hidden}.progress-bar{width:100%;height:100%;border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-bar-color)}.progress-bar>span{display:block;height:100%;border-radius:var(--activity-indicator-bar-border-radius);background-color:var(--activity-indicator-bar-value-color);text-indent:-9999px}\";\n\tconst MarketActivityIndicatorBarStyle0 = marketActivityIndicatorBarCss;\n\tconst MarketActivityIndicatorBar = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.value = 0;\n\t    this.max = 1;\n\t  }\n\t  render() {\n\t    const max = this.max > 0 ? this.max : 1;\n\t    const value = this.value > 0 ? Math.min(this.value, this.max) : 0;\n\t    const percentComplete = value / max * 100;\n\t    return index.h(index.Host, { key: \"61e07b33b68f0fea7810d5924e8a63b4f6af87a3\", class: \"market-activity-indicator-bar\", role: \"progressbar\", \"aria-valuenow\": value, \"aria-valuemin\": \"0\", \"aria-valuemax\": max, \"aria-valuetext\": `${percentComplete}%` }, index.h(\"progress\", { key: \"fda630a69882437f906a0cc5827af8a61746d338\", value, max }, index.h(\"div\", { key: \"0b5ce28682aea994116a707e34b784e6dbe89069\", class: \"progress-bar\" }, index.h(\"span\", { key: \"eb5a9381955d887d76eda7ea30327acbca9f5e60\", style: { width: `${percentComplete}%` } }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketActivityIndicatorBar.style = MarketActivityIndicatorBarStyle0;\n\tmarketActivityIndicatorBar_cjs_entry.market_activity_indicator_bar = MarketActivityIndicatorBar;\n\treturn marketActivityIndicatorBar_cjs_entry;\n}\n\nvar marketBanner_cjs_entry = {};\n\nvar classnames6fb22aa3 = {};\n\nvar hasRequiredClassnames6fb22aa3;\n\nfunction requireClassnames6fb22aa3 () {\n\tif (hasRequiredClassnames6fb22aa3) return classnames6fb22aa3;\n\thasRequiredClassnames6fb22aa3 = 1;\n\tfunction classNames(...args) {\n\t  return args.reduce((result, arg) => {\n\t    if (typeof arg === \"string\") {\n\t      result.push(arg);\n\t    } else if (typeof arg === \"object\") {\n\t      for (const cn of Object.keys(arg)) {\n\t        if (arg[cn]) {\n\t          result.push(cn);\n\t        }\n\t      }\n\t    }\n\t    return result;\n\t  }, []).join(\" \");\n\t}\n\tclassnames6fb22aa3.classNames = classNames;\n\treturn classnames6fb22aa3;\n}\n\nvar v48e8d6fbc = {};\n\nvar hasRequiredV48e8d6fbc;\n\nfunction requireV48e8d6fbc () {\n\tif (hasRequiredV48e8d6fbc) return v48e8d6fbc;\n\thasRequiredV48e8d6fbc = 1;\n\tvar getRandomValues;\n\tvar rnds8 = new Uint8Array(16);\n\tfunction rng() {\n\t  if (!getRandomValues) {\n\t    getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== \"undefined\" && typeof msCrypto.getRandomValues === \"function\" && msCrypto.getRandomValues.bind(msCrypto);\n\t    if (!getRandomValues) {\n\t      throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n\t    }\n\t  }\n\t  return getRandomValues(rnds8);\n\t}\n\tconst REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\tfunction validate(uuid) {\n\t  return typeof uuid === \"string\" && REGEX.test(uuid);\n\t}\n\tvar byteToHex = [];\n\tfor (var i = 0; i < 256; ++i) {\n\t  byteToHex.push((i + 256).toString(16).substr(1));\n\t}\n\tfunction stringify(arr) {\n\t  var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n\t  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n\t  if (!validate(uuid)) {\n\t    throw TypeError(\"Stringified UUID is invalid\");\n\t  }\n\t  return uuid;\n\t}\n\tfunction v4(options, buf, offset) {\n\t  options = options || {};\n\t  var rnds = options.random || (options.rng || rng)();\n\t  rnds[6] = rnds[6] & 15 | 64;\n\t  rnds[8] = rnds[8] & 63 | 128;\n\t  if (buf) {\n\t    offset = offset || 0;\n\t    for (var i2 = 0; i2 < 16; ++i2) {\n\t      buf[offset + i2] = rnds[i2];\n\t    }\n\t    return buf;\n\t  }\n\t  return stringify(rnds);\n\t}\n\tv48e8d6fbc.v4 = v4;\n\treturn v48e8d6fbc;\n}\n\nvar hasRequiredMarketBanner_cjs_entry;\n\nfunction requireMarketBanner_cjs_entry () {\n\tif (hasRequiredMarketBanner_cjs_entry) return marketBanner_cjs_entry;\n\thasRequiredMarketBanner_cjs_entry = 1;\n\tObject.defineProperty(marketBanner_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst v4 = requireV48e8d6fbc();\n\tconst marketBannerCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;align-items:flex-start;width:100%;padding:var(--banner-vertical-padding) var(--banner-horizontal-padding);border-width:var(--banner-border-width);border-style:solid;border-radius:var(--banner-border-radius);font-weight:var(--banner-text-weight);font-size:var(--banner-text-size);line-height:var(--banner-text-leading);letter-spacing:var(--banner-text-tracking);text-transform:var(--banner-text-case);-moz-column-gap:var(--banner-icon-spacing);column-gap:var(--banner-icon-spacing)}.icon-container,.dismiss-container{display:flex;flex-shrink:0;align-items:center}.dismiss-container button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;border:none;background-color:transparent;cursor:pointer;transition:opacity var(--core-animation-enter-transition-moderate-speed-duration);-webkit-appearance:none;-moz-appearance:none;appearance:none}.dismiss-container button svg{fill:var(--banner-dismiss-button-normal-state-color)}.dismiss-container button:active svg{fill:var(--banner-dismiss-button-pressed-state-color)}.main{display:flex;flex-grow:1;flex-wrap:wrap;row-gap:var(--banner-multiline-spacing);-moz-column-gap:var(--banner-content-spacing);column-gap:var(--banner-content-spacing)}.main.has-title{flex-direction:column}.main.has-title .actions{justify-content:unset}::slotted([slot=\"title\"]){margin:0;font-weight:var(--banner-title-weight);font-size:var(--banner-title-size);font-family:inherit;line-height:var(--banner-title-leading);letter-spacing:var(--banner-title-tracking);text-transform:var(--banner-title-case)}section{flex-grow:1}nav{display:flex;flex-wrap:wrap;justify-content:flex-end}nav.hidden{display:none}::slotted(a),::slotted(button){margin:0;padding:0;border:none;background-color:transparent;font-weight:var(--banner-button-text-weight);font-size:var(--banner-button-text-size);font-family:inherit;line-height:var(--banner-button-text-leading);letter-spacing:var(--banner-button-text-tracking);text-decoration:underline;text-transform:var(--banner-button-text-case);cursor:pointer;transition:opacity var(--core-animation-enter-transition-moderate-speed-duration);text-underline-offset:2px;text-decoration-thickness:1px}::slotted(a:hover),::slotted(button:hover){opacity:var(--text-link-hover-state-opacity)}::slotted(a:active),::slotted(button:active){opacity:var(--text-link-pressed-state-opacity)}::slotted([slot=\"action\"]:not(:last-child):focus-visible)::after{outline:none}::slotted([slot=\"action\"]){display:flex;justify-content:center;align-items:center}::slotted([slot=\"action\"]:not(:last-child)){margin-right:calc(var(--banner-button-spacing) * 2 + var(--banner-button-separator-width))}::slotted([slot=\"action\"]:not(:last-child))::after{content:\"\";display:inline-block;width:var(--banner-button-separator-width);height:var(--banner-button-separator-height);margin-right:calc(-1 * var(--banner-button-spacing) - var(--banner-button-separator-width));margin-left:var(--banner-button-spacing);background-color:var(--banner-button-separator-color);opacity:var(--banner-button-separator-opacity);pointer-events:none}:host([variant=\"info\"]){border-color:var(--banner-info-variant-border-color);background-color:var(--banner-info-variant-background-color);color:var(--banner-info-variant-text-color)}:host([variant=\"info\"]) .icon-container svg,:host([variant=\"info\"]) ::slotted([slot=\"icon\"]){fill:var(--banner-info-variant-icon-color)}:host([variant=\"info\"]) ::slotted(a){color:var(--banner-info-variant-text-link-text-color)}:host([variant=\"info\"]) ::slotted(button){color:var(--banner-info-variant-button-text-color)}:host([variant=\"success\"]){border-color:var(--banner-success-variant-border-color);background-color:var(--banner-success-variant-background-color);color:var(--banner-success-variant-text-color)}:host([variant=\"success\"]) .icon-container svg,:host([variant=\"success\"]) ::slotted([slot=\"icon\"]){fill:var(--banner-success-variant-icon-color)}:host([variant=\"success\"]) ::slotted(a){color:var(--banner-success-variant-text-link-text-color)}:host([variant=\"success\"]) ::slotted(button){color:var(--banner-success-variant-button-text-color)}:host([variant=\"warning\"]){border-color:var(--banner-warning-variant-border-color);background-color:var(--banner-warning-variant-background-color);color:var(--banner-warning-variant-text-color)}:host([variant=\"warning\"]) .icon-container svg,:host([variant=\"warning\"]) ::slotted([slot=\"icon\"]){fill:var(--banner-warning-variant-icon-color)}:host([variant=\"warning\"]) ::slotted(a){color:var(--banner-warning-variant-text-link-text-color)}:host([variant=\"warning\"]) ::slotted(button){color:var(--banner-warning-variant-button-text-color)}:host([variant=\"critical\"]){border-color:var(--banner-critical-variant-border-color);background-color:var(--banner-critical-variant-background-color);color:var(--banner-critical-variant-text-color)}:host([variant=\"critical\"]) .icon-container svg,:host([variant=\"critical\"]) ::slotted([slot=\"icon\"]){fill:var(--banner-critical-variant-icon-color)}:host([variant=\"critical\"]) ::slotted(a){color:var(--banner-critical-variant-text-color)}:host([variant=\"critical\"]) ::slotted(button){color:var(--banner-critical-variant-button-text-color)}:host([variant=\"insight\"]){border-color:var(--banner-insight-variant-border-color);background-color:var(--banner-insight-variant-background-color);color:var(--banner-insight-variant-text-color)}:host([variant=\"insight\"]) .icon-container svg,:host([variant=\"insight\"]) ::slotted([slot=\"icon\"]){fill:var(--banner-insight-variant-icon-color)}:host([variant=\"insight\"]) ::slotted(a){color:var(--banner-insight-variant-text-link-text-color)}:host([variant=\"insight\"]) ::slotted(button){color:var(--banner-insight-variant-button-text-color)}';\n\tconst MarketBannerStyle0 = marketBannerCss;\n\tconst MarketBanner = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketBannerDismissed = index.createEvent(this, \"marketBannerDismissed\", 7);\n\t    this.iconImageTitleId = v4.v4();\n\t    this.variant = \"info\";\n\t    this.dismissable = false;\n\t    this.dismissButtonAriaLabel = \"Dismiss\";\n\t    this.iconImageTitle = \"\";\n\t    this.hasTitle = false;\n\t    this.hasAction = false;\n\t  }\n\t  renderIcon() {\n\t    if (this.variant === \"success\") {\n\t      return index.h(\"svg\", { role: \"img\", \"aria-labelledby\": this.iconImageTitleId, width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"title\", { id: this.iconImageTitleId }, this.iconImageTitle || \"Success\"), index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M3 12C3 7.03 7.03 3 12 3C16.97 3 21 7.03 21 12C21 16.97 16.97 21 12 21C7.03 21 3 16.97 3 12ZM5 12C5 15.86 8.14 19 12 19C15.86 19 19 15.86 19 12C19 8.14 15.86 5 12 5C8.14 5 5 8.14 5 12ZM8.71005 10.8L11 13.09L15.3101 8.80005L16.72 10.21L11.72 15.21C11.52 15.4 11.27 15.5 11.01 15.5C10.75 15.5 10.5 15.41 10.3 15.21L7.30005 12.21L8.71005 10.8Z\" }));\n\t    } else if (this.variant === \"info\") {\n\t      return index.h(\"svg\", { role: \"img\", \"aria-labelledby\": this.iconImageTitleId, width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"title\", { id: this.iconImageTitleId }, this.iconImageTitle || \"Info\"), index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12 3C7.04 3 3 7.04 3 12C3 16.96 7.04 21 12 21C16.96 21 21 16.96 21 12C21 7.04 16.96 3 12 3ZM12 19C8.14 19 5 15.86 5 12C5 8.14 8.14 5 12 5C15.86 5 19 8.14 19 12C19 15.86 15.86 19 12 19ZM11 10.5V17H13V10.5H11ZM13.25 8.25C13.25 8.94036 12.6904 9.5 12 9.5C11.3096 9.5 10.75 8.94036 10.75 8.25C10.75 7.55964 11.3096 7 12 7C12.6904 7 13.25 7.55964 13.25 8.25Z\" }));\n\t    } else if (this.variant === \"insight\") {\n\t      return index.h(\"svg\", { role: \"img\", \"aria-labelledby\": this.iconImageTitleId, width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"title\", { id: this.iconImageTitleId }, this.iconImageTitle || \"Insight\"), index.h(\"path\", { d: \"M11 23.1701V15.0001H3.07996L13 0.830078V9.00008H20.92L11 23.1701ZM6.91996 13.0001H13V16.8301L17.08 11.0001H11V7.17008L6.91996 13.0001Z\" }));\n\t    } else if (this.variant === \"warning\") {\n\t      return index.h(\"svg\", { role: \"img\", \"aria-labelledby\": this.iconImageTitleId, width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"title\", { id: this.iconImageTitleId }, this.iconImageTitle || \"Warning\"), index.h(\"path\", { d: \"M11 9.00005H13V14.5H11V9.00005Z\" }), index.h(\"path\", { d: \"M12 18C12.6904 18 13.25 17.4404 13.25 16.75C13.25 16.0596 12.6904 15.5 12 15.5C11.3096 15.5 10.75 16.0596 10.75 16.75C10.75 17.4404 11.3096 18 12 18Z\" }), index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12.866 2.17944C12.6874 1.87004 12.3573 1.67944 12 1.67944C11.6427 1.67944 11.3126 1.87004 11.134 2.17944L1.13397 19.5C0.955342 19.8094 0.955342 20.1905 1.13397 20.5C1.31261 20.8094 1.64273 21 2 21H22C22.3573 21 22.6874 20.8094 22.866 20.5C23.0447 20.1905 23.0447 19.8094 22.866 19.5L12.866 2.17944ZM12 4.67944L20.268 19H3.73205L12 4.67944Z\" }));\n\t    } else {\n\t      return index.h(\"svg\", { role: \"img\", \"aria-labelledby\": this.iconImageTitleId, width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"title\", { id: this.iconImageTitleId }, this.iconImageTitle || \"Critical\"), index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12 21C16.96 21 21 16.96 21 12C21 7.04 16.96 3 12 3C7.04 3 3 7.04 3 12C3 16.96 7.04 21 12 21ZM12 5C15.86 5 19 8.14 19 12C19 15.86 15.86 19 12 19C8.14 19 5 15.86 5 12C5 8.14 8.14 5 12 5ZM12 17C12.6904 17 13.25 16.4404 13.25 15.75C13.25 15.0596 12.6904 14.5 12 14.5C11.3096 14.5 10.75 15.0596 10.75 15.75C10.75 16.4404 11.3096 17 12 17ZM11 7H13V13.5H11V7Z\" }));\n\t    }\n\t  }\n\t  handleTitleSlotChange() {\n\t    this.hasTitle = Boolean(this.el.querySelector('[slot=\"title\"]'));\n\t  }\n\t  handleActionSlotChange() {\n\t    this.hasAction = Boolean(this.el.querySelector('[slot=\"action\"]'));\n\t  }\n\t  componentWillLoad() {\n\t    this.handleTitleSlotChange();\n\t    this.handleActionSlotChange();\n\t  }\n\t  dismiss() {\n\t    const { defaultPrevented } = this.marketBannerDismissed.emit();\n\t    if (defaultPrevented) {\n\t      return;\n\t    }\n\t    this.el.remove();\n\t  }\n\t  render() {\n\t    const MarketAccessoryTag = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return index.h(index.Host, { key: \"86cd70453071baa6af3f0ab31f8406d0fed38c71\", class: \"market-banner\", role: \"region\", \"aria-label\": \"Announcement\" }, index.h(\"span\", { key: \"a7a74a512a93415f56cebcbf7f8d7e68edda7423\", class: \"icon-container\" }, index.h(\"slot\", { key: \"c04634e431570f707694e46d01b16644b6edee52\", name: \"icon\" }, index.h(MarketAccessoryTag, { key: \"b84077a7101acf639bec4d285a3db629d879e44b\" }, this.renderIcon()))), index.h(\"div\", { key: \"20661728e8cd83b0da68e233084936211029912d\", class: classnames.classNames(\"main\", { \"has-title\": this.hasTitle }) }, index.h(\"section\", { key: \"aaf799d392b96ecccc6bff73846099a0be7727bb\" }, index.h(\"header\", { key: \"dd563286ea9a51f0732837c0457e674e1e2070ba\", class: \"title\" }, index.h(\"slot\", { key: \"5f073b724bf6135f1f45f2d970a9bf3cedfa5536\", name: \"title\", onSlotchange: () => this.handleTitleSlotChange() })), index.h(\"slot\", { key: \"4d54ed708a3f9f62b910740d7b10325a2b81a7bb\" })), index.h(\"nav\", { key: \"6aef96bcf28ec475635808b94e114431135930ad\", class: classnames.classNames(\"actions\", { hidden: !this.hasAction }) }, index.h(\"slot\", { key: \"2f94aaf6297152fd4b3d43ea51a75f892d3db423\", name: \"action\", onSlotchange: () => this.handleActionSlotChange() }))), this.dismissable && index.h(\"nav\", { key: \"5fe71733d802b4f8e572f04b4081510dd03a36a5\", class: \"dismiss-container\" }, index.h(\"button\", { key: \"e6f3b36172b55b9c8948791eb0617701fbcea4a7\", type: \"button\", \"aria-label\": this.dismissButtonAriaLabel, onClick: () => this.dismiss() }, index.h(\"svg\", { key: \"16745506bb3fac09e30508fb0f0149044a82976b\", role: \"presentation\", \"aria-hidden\": \"true\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"f758b771e2e3b80fe21ade93a850426d733f3f8b\", d: \"M6.71004 18.71L12 13.41L17.29 18.71L18.71 17.29L13.41 12L18.71 6.71004L17.29 5.29004L12 10.59L6.71004 5.29004L5.29004 6.71004L10.59 12L5.29004 17.29L6.71004 18.71Z\" })))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketBanner.style = MarketBannerStyle0;\n\tmarketBanner_cjs_entry.market_banner = MarketBanner;\n\treturn marketBanner_cjs_entry;\n}\n\nvar marketBlade_cjs_entry = {};\n\nvar dialog8459b0d0 = {};\n\nvar hasRequiredDialog8459b0d0;\n\nfunction requireDialog8459b0d0 () {\n\tif (hasRequiredDialog8459b0d0) return dialog8459b0d0;\n\thasRequiredDialog8459b0d0 = 1;\n\tconst index = index254d04f0.requireIndex254d04f0();\n\tvar rafSchd = function rafSchd2(fn) {\n\t  var lastArgs = [];\n\t  var frameId = null;\n\t  var wrapperFn = function wrapperFn2() {\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    lastArgs = args;\n\t    if (frameId) {\n\t      return;\n\t    }\n\t    frameId = requestAnimationFrame(function() {\n\t      frameId = null;\n\t      fn.apply(void 0, lastArgs);\n\t    });\n\t  };\n\t  wrapperFn.cancel = function() {\n\t    if (!frameId) {\n\t      return;\n\t    }\n\t    cancelAnimationFrame(frameId);\n\t    frameId = null;\n\t  };\n\t  return wrapperFn;\n\t};\n\tconst rafSchd$1 = rafSchd;\n\tconst ALL_DIALOG_TYPES = [\"modal-full\", \"modal-partial\", \"blade\", \"dialog\", \"sheet\"];\n\tconst DIALOGS_META = {\n\t  \"modal-full\": { veil: true },\n\t  \"modal-partial\": { veil: true },\n\t  blade: { veil: false },\n\t  dialog: { veil: true },\n\t  sheet: { veil: true }\n\t};\n\tconst getDialogSelector = () => ALL_DIALOG_TYPES.map((type) => {\n\t  return index.getNamespacedTagFor(`market-${type}`);\n\t}).join(\",\");\n\tfunction setupDialogCompactHandler(modal) {\n\t  const main = modal.querySelector(\"main, .main\");\n\t  const header = modal.querySelector(index.getNamespacedTagFor(\"market-header\"));\n\t  if (main && header && !header.compact) {\n\t    let cachedPaddingTop = null;\n\t    const updateCompactState = () => {\n\t      const scrollTop = main.scrollTop;\n\t      if (scrollTop > 0) {\n\t        if (!header.compact) {\n\t          if (cachedPaddingTop === null) {\n\t            const headingDiv = header.shadowRoot.querySelector(\".heading\");\n\t            const headingDivStyles = getComputedStyle(headingDiv);\n\t            cachedPaddingTop = Number.parseInt(headingDivStyles.height, 10) + Number.parseInt(headingDivStyles.marginTop, 10);\n\t          }\n\t          main.style.paddingTop = `${cachedPaddingTop}px`;\n\t          header.compact = true;\n\t        }\n\t      } else {\n\t        if (header.compact) {\n\t          main.style.paddingTop = \"\";\n\t          header.compact = false;\n\t        }\n\t      }\n\t    };\n\t    const scheduledUpdate = rafSchd$1(updateCompactState);\n\t    main.addEventListener(\"scroll\", scheduledUpdate, { passive: true });\n\t  }\n\t}\n\tdialog8459b0d0.ALL_DIALOG_TYPES = ALL_DIALOG_TYPES;\n\tdialog8459b0d0.DIALOGS_META = DIALOGS_META;\n\tdialog8459b0d0.getDialogSelector = getDialogSelector;\n\tdialog8459b0d0.setupDialogCompactHandler = setupDialogCompactHandler;\n\treturn dialog8459b0d0;\n}\n\nvar focusTrapD7750c92 = {};\n\nvar hasRequiredFocusTrapD7750c92;\n\nfunction requireFocusTrapD7750c92 () {\n\tif (hasRequiredFocusTrapD7750c92) return focusTrapD7750c92;\n\thasRequiredFocusTrapD7750c92 = 1;\n\t/*!\n\t* tabbable 6.2.0\n\t* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n\t*/\n\tvar candidateSelectors = [\"input:not([inert])\", \"select:not([inert])\", \"textarea:not([inert])\", \"a[href]:not([inert])\", \"button:not([inert])\", \"[tabindex]:not(slot):not([inert])\", \"audio[controls]:not([inert])\", \"video[controls]:not([inert])\", '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', \"details>summary:first-of-type:not([inert])\", \"details:not([inert])\"];\n\tvar candidateSelector = /* @__PURE__ */ candidateSelectors.join(\",\");\n\tvar NoElement = typeof Element === \"undefined\";\n\tvar matches = NoElement ? function() {\n\t} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\tvar getRootNode = !NoElement && Element.prototype.getRootNode ? function(element) {\n\t  var _element$getRootNode;\n\t  return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n\t} : function(element) {\n\t  return element === null || element === void 0 ? void 0 : element.ownerDocument;\n\t};\n\tvar isInert = function isInert2(node, lookUp) {\n\t  var _node$getAttribute;\n\t  if (lookUp === void 0) {\n\t    lookUp = true;\n\t  }\n\t  var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, \"inert\");\n\t  var inert = inertAtt === \"\" || inertAtt === \"true\";\n\t  var result = inert || lookUp && node && isInert2(node.parentNode);\n\t  return result;\n\t};\n\tvar isContentEditable = function isContentEditable2(node) {\n\t  var _node$getAttribute2;\n\t  var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, \"contenteditable\");\n\t  return attValue === \"\" || attValue === \"true\";\n\t};\n\tvar getCandidates = function getCandidates2(el, includeContainer, filter) {\n\t  if (isInert(el)) {\n\t    return [];\n\t  }\n\t  var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n\t  if (includeContainer && matches.call(el, candidateSelector)) {\n\t    candidates.unshift(el);\n\t  }\n\t  candidates = candidates.filter(filter);\n\t  return candidates;\n\t};\n\tvar getCandidatesIteratively = function getCandidatesIteratively2(elements, includeContainer, options) {\n\t  var candidates = [];\n\t  var elementsToCheck = Array.from(elements);\n\t  while (elementsToCheck.length) {\n\t    var element = elementsToCheck.shift();\n\t    if (isInert(element, false)) {\n\t      continue;\n\t    }\n\t    if (element.tagName === \"SLOT\") {\n\t      var assigned = element.assignedElements();\n\t      var content = assigned.length ? assigned : element.children;\n\t      var nestedCandidates = getCandidatesIteratively2(content, true, options);\n\t      if (options.flatten) {\n\t        candidates.push.apply(candidates, nestedCandidates);\n\t      } else {\n\t        candidates.push({\n\t          scopeParent: element,\n\t          candidates: nestedCandidates\n\t        });\n\t      }\n\t    } else {\n\t      var validCandidate = matches.call(element, candidateSelector);\n\t      if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n\t        candidates.push(element);\n\t      }\n\t      var shadowRoot = element.shadowRoot || // check for an undisclosed shadow\n\t      typeof options.getShadowRoot === \"function\" && options.getShadowRoot(element);\n\t      var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n\t      if (shadowRoot && validShadowRoot) {\n\t        var _nestedCandidates = getCandidatesIteratively2(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n\t        if (options.flatten) {\n\t          candidates.push.apply(candidates, _nestedCandidates);\n\t        } else {\n\t          candidates.push({\n\t            scopeParent: element,\n\t            candidates: _nestedCandidates\n\t          });\n\t        }\n\t      } else {\n\t        elementsToCheck.unshift.apply(elementsToCheck, element.children);\n\t      }\n\t    }\n\t  }\n\t  return candidates;\n\t};\n\tvar hasTabIndex = function hasTabIndex2(node) {\n\t  return !isNaN(parseInt(node.getAttribute(\"tabindex\"), 10));\n\t};\n\tvar getTabIndex = function getTabIndex2(node) {\n\t  if (!node) {\n\t    throw new Error(\"No node provided\");\n\t  }\n\t  if (node.tabIndex < 0) {\n\t    if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n\t      return 0;\n\t    }\n\t  }\n\t  return node.tabIndex;\n\t};\n\tvar getSortOrderTabIndex = function getSortOrderTabIndex2(node, isScope) {\n\t  var tabIndex = getTabIndex(node);\n\t  if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n\t    return 0;\n\t  }\n\t  return tabIndex;\n\t};\n\tvar sortOrderedTabbables = function sortOrderedTabbables2(a, b) {\n\t  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n\t};\n\tvar isInput = function isInput2(node) {\n\t  return node.tagName === \"INPUT\";\n\t};\n\tvar isHiddenInput = function isHiddenInput2(node) {\n\t  return isInput(node) && node.type === \"hidden\";\n\t};\n\tvar isDetailsWithSummary = function isDetailsWithSummary2(node) {\n\t  var r = node.tagName === \"DETAILS\" && Array.prototype.slice.apply(node.children).some(function(child) {\n\t    return child.tagName === \"SUMMARY\";\n\t  });\n\t  return r;\n\t};\n\tvar getCheckedRadio = function getCheckedRadio2(nodes, form) {\n\t  for (var i = 0; i < nodes.length; i++) {\n\t    if (nodes[i].checked && nodes[i].form === form) {\n\t      return nodes[i];\n\t    }\n\t  }\n\t};\n\tvar isTabbableRadio = function isTabbableRadio2(node) {\n\t  if (!node.name) {\n\t    return true;\n\t  }\n\t  var radioScope = node.form || getRootNode(node);\n\t  var queryRadios = function queryRadios2(name) {\n\t    return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n\t  };\n\t  var radioSet;\n\t  if (typeof window !== \"undefined\" && typeof window.CSS !== \"undefined\" && typeof window.CSS.escape === \"function\") {\n\t    radioSet = queryRadios(window.CSS.escape(node.name));\n\t  } else {\n\t    try {\n\t      radioSet = queryRadios(node.name);\n\t    } catch (err) {\n\t      console.error(\"Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s\", err.message);\n\t      return false;\n\t    }\n\t  }\n\t  var checked = getCheckedRadio(radioSet, node.form);\n\t  return !checked || checked === node;\n\t};\n\tvar isRadio = function isRadio2(node) {\n\t  return isInput(node) && node.type === \"radio\";\n\t};\n\tvar isNonTabbableRadio = function isNonTabbableRadio2(node) {\n\t  return isRadio(node) && !isTabbableRadio(node);\n\t};\n\tvar isNodeAttached = function isNodeAttached2(node) {\n\t  var _nodeRoot;\n\t  var nodeRoot = node && getRootNode(node);\n\t  var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\t  var attached = false;\n\t  if (nodeRoot && nodeRoot !== node) {\n\t    var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n\t    attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n\t    while (!attached && nodeRootHost) {\n\t      var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n\t      nodeRoot = getRootNode(nodeRootHost);\n\t      nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n\t      attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n\t    }\n\t  }\n\t  return attached;\n\t};\n\tvar isZeroArea = function isZeroArea2(node) {\n\t  var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height;\n\t  return width === 0 && height === 0;\n\t};\n\tvar isHidden = function isHidden2(node, _ref) {\n\t  var displayCheck = _ref.displayCheck, getShadowRoot = _ref.getShadowRoot;\n\t  if (getComputedStyle(node).visibility === \"hidden\") {\n\t    return true;\n\t  }\n\t  var isDirectSummary = matches.call(node, \"details>summary:first-of-type\");\n\t  var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n\t  if (matches.call(nodeUnderDetails, \"details:not([open]) *\")) {\n\t    return true;\n\t  }\n\t  if (!displayCheck || displayCheck === \"full\" || displayCheck === \"legacy-full\") {\n\t    if (typeof getShadowRoot === \"function\") {\n\t      var originalNode = node;\n\t      while (node) {\n\t        var parentElement = node.parentElement;\n\t        var rootNode = getRootNode(node);\n\t        if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true) {\n\t          return isZeroArea(node);\n\t        } else if (node.assignedSlot) {\n\t          node = node.assignedSlot;\n\t        } else if (!parentElement && rootNode !== node.ownerDocument) {\n\t          node = rootNode.host;\n\t        } else {\n\t          node = parentElement;\n\t        }\n\t      }\n\t      node = originalNode;\n\t    }\n\t    if (isNodeAttached(node)) {\n\t      return !node.getClientRects().length;\n\t    }\n\t    if (displayCheck !== \"legacy-full\") {\n\t      return true;\n\t    }\n\t  } else if (displayCheck === \"non-zero-area\") {\n\t    return isZeroArea(node);\n\t  }\n\t  return false;\n\t};\n\tvar isDisabledFromFieldset = function isDisabledFromFieldset2(node) {\n\t  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n\t    var parentNode = node.parentElement;\n\t    while (parentNode) {\n\t      if (parentNode.tagName === \"FIELDSET\" && parentNode.disabled) {\n\t        for (var i = 0; i < parentNode.children.length; i++) {\n\t          var child = parentNode.children.item(i);\n\t          if (child.tagName === \"LEGEND\") {\n\t            return matches.call(parentNode, \"fieldset[disabled] *\") ? true : !child.contains(node);\n\t          }\n\t        }\n\t        return true;\n\t      }\n\t      parentNode = parentNode.parentElement;\n\t    }\n\t  }\n\t  return false;\n\t};\n\tvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) {\n\t  if (node.disabled || // we must do an inert look up to filter out any elements inside an inert ancestor\n\t  //  because we're limited in the type of selectors we can use in JSDom (see related\n\t  //  note related to `candidateSelectors`)\n\t  isInert(node) || isHiddenInput(node) || isHidden(node, options) || // For a details element with a summary, the summary element gets the focus\n\t  isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n\t    return false;\n\t  }\n\t  return true;\n\t};\n\tvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) {\n\t  if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n\t    return false;\n\t  }\n\t  return true;\n\t};\n\tvar isValidShadowRootTabbable = function isValidShadowRootTabbable2(shadowHostNode) {\n\t  var tabIndex = parseInt(shadowHostNode.getAttribute(\"tabindex\"), 10);\n\t  if (isNaN(tabIndex) || tabIndex >= 0) {\n\t    return true;\n\t  }\n\t  return false;\n\t};\n\tvar sortByOrder = function sortByOrder2(candidates) {\n\t  var regularTabbables = [];\n\t  var orderedTabbables = [];\n\t  candidates.forEach(function(item, i) {\n\t    var isScope = !!item.scopeParent;\n\t    var element = isScope ? item.scopeParent : item;\n\t    var candidateTabindex = getSortOrderTabIndex(element, isScope);\n\t    var elements = isScope ? sortByOrder2(item.candidates) : element;\n\t    if (candidateTabindex === 0) {\n\t      isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n\t    } else {\n\t      orderedTabbables.push({\n\t        documentOrder: i,\n\t        tabIndex: candidateTabindex,\n\t        item,\n\t        isScope,\n\t        content: elements\n\t      });\n\t    }\n\t  });\n\t  return orderedTabbables.sort(sortOrderedTabbables).reduce(function(acc, sortable) {\n\t    sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n\t    return acc;\n\t  }, []).concat(regularTabbables);\n\t};\n\tvar tabbable = function tabbable2(container, options) {\n\t  options = options || {};\n\t  var candidates;\n\t  if (options.getShadowRoot) {\n\t    candidates = getCandidatesIteratively([container], options.includeContainer, {\n\t      filter: isNodeMatchingSelectorTabbable.bind(null, options),\n\t      flatten: false,\n\t      getShadowRoot: options.getShadowRoot,\n\t      shadowRootFilter: isValidShadowRootTabbable\n\t    });\n\t  } else {\n\t    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n\t  }\n\t  return sortByOrder(candidates);\n\t};\n\tvar focusable = function focusable2(container, options) {\n\t  options = options || {};\n\t  var candidates;\n\t  if (options.getShadowRoot) {\n\t    candidates = getCandidatesIteratively([container], options.includeContainer, {\n\t      filter: isNodeMatchingSelectorFocusable.bind(null, options),\n\t      flatten: true,\n\t      getShadowRoot: options.getShadowRoot\n\t    });\n\t  } else {\n\t    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n\t  }\n\t  return candidates;\n\t};\n\tvar isTabbable = function isTabbable2(node, options) {\n\t  options = options || {};\n\t  if (!node) {\n\t    throw new Error(\"No node provided\");\n\t  }\n\t  if (matches.call(node, candidateSelector) === false) {\n\t    return false;\n\t  }\n\t  return isNodeMatchingSelectorTabbable(options, node);\n\t};\n\tvar focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat(\"iframe\").join(\",\");\n\tvar isFocusable = function isFocusable2(node, options) {\n\t  options = options || {};\n\t  if (!node) {\n\t    throw new Error(\"No node provided\");\n\t  }\n\t  if (matches.call(node, focusableCandidateSelector) === false) {\n\t    return false;\n\t  }\n\t  return isNodeMatchingSelectorFocusable(options, node);\n\t};\n\t/*!\n\t* focus-trap 7.6.5\n\t* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n\t*/\n\tfunction _arrayLikeToArray(r, a) {\n\t  (null == a || a > r.length) && (a = r.length);\n\t  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n\t  return n;\n\t}\n\tfunction _arrayWithoutHoles(r) {\n\t  if (Array.isArray(r)) return _arrayLikeToArray(r);\n\t}\n\tfunction _defineProperty(e, r, t) {\n\t  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n\t    value: t,\n\t    enumerable: true,\n\t    configurable: true,\n\t    writable: true\n\t  }) : e[r] = t, e;\n\t}\n\tfunction _iterableToArray(r) {\n\t  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n\t}\n\tfunction _nonIterableSpread() {\n\t  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t}\n\tfunction ownKeys(e, r) {\n\t  var t = Object.keys(e);\n\t  if (Object.getOwnPropertySymbols) {\n\t    var o = Object.getOwnPropertySymbols(e);\n\t    r && (o = o.filter(function(r2) {\n\t      return Object.getOwnPropertyDescriptor(e, r2).enumerable;\n\t    })), t.push.apply(t, o);\n\t  }\n\t  return t;\n\t}\n\tfunction _objectSpread2(e) {\n\t  for (var r = 1; r < arguments.length; r++) {\n\t    var t = null != arguments[r] ? arguments[r] : {};\n\t    r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {\n\t      _defineProperty(e, r2, t[r2]);\n\t    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {\n\t      Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));\n\t    });\n\t  }\n\t  return e;\n\t}\n\tfunction _toConsumableArray(r) {\n\t  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n\t}\n\tfunction _toPrimitive(t, r) {\n\t  if (\"object\" != typeof t || !t) return t;\n\t  var e = t[Symbol.toPrimitive];\n\t  if (void 0 !== e) {\n\t    var i = e.call(t, r);\n\t    if (\"object\" != typeof i) return i;\n\t    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n\t  }\n\t  return (\"string\" === r ? String : Number)(t);\n\t}\n\tfunction _toPropertyKey(t) {\n\t  var i = _toPrimitive(t, \"string\");\n\t  return \"symbol\" == typeof i ? i : i + \"\";\n\t}\n\tfunction _unsupportedIterableToArray(r, a) {\n\t  if (r) {\n\t    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n\t    var t = {}.toString.call(r).slice(8, -1);\n\t    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n\t  }\n\t}\n\tvar activeFocusTraps = {\n\t  activateTrap: function activateTrap(trapStack, trap) {\n\t    if (trapStack.length > 0) {\n\t      var activeTrap = trapStack[trapStack.length - 1];\n\t      if (activeTrap !== trap) {\n\t        activeTrap._setPausedState(true);\n\t      }\n\t    }\n\t    var trapIndex = trapStack.indexOf(trap);\n\t    if (trapIndex === -1) {\n\t      trapStack.push(trap);\n\t    } else {\n\t      trapStack.splice(trapIndex, 1);\n\t      trapStack.push(trap);\n\t    }\n\t  },\n\t  deactivateTrap: function deactivateTrap(trapStack, trap) {\n\t    var trapIndex = trapStack.indexOf(trap);\n\t    if (trapIndex !== -1) {\n\t      trapStack.splice(trapIndex, 1);\n\t    }\n\t    if (trapStack.length > 0 && !trapStack[trapStack.length - 1]._isManuallyPaused()) {\n\t      trapStack[trapStack.length - 1]._setPausedState(false);\n\t    }\n\t  }\n\t};\n\tvar isSelectableInput = function isSelectableInput2(node) {\n\t  return node.tagName && node.tagName.toLowerCase() === \"input\" && typeof node.select === \"function\";\n\t};\n\tvar isEscapeEvent = function isEscapeEvent2(e) {\n\t  return (e === null || e === void 0 ? void 0 : e.key) === \"Escape\" || (e === null || e === void 0 ? void 0 : e.key) === \"Esc\" || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;\n\t};\n\tvar isTabEvent = function isTabEvent2(e) {\n\t  return (e === null || e === void 0 ? void 0 : e.key) === \"Tab\" || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;\n\t};\n\tvar isKeyForward = function isKeyForward2(e) {\n\t  return isTabEvent(e) && !e.shiftKey;\n\t};\n\tvar isKeyBackward = function isKeyBackward2(e) {\n\t  return isTabEvent(e) && e.shiftKey;\n\t};\n\tvar delay = function delay2(fn) {\n\t  return setTimeout(fn, 0);\n\t};\n\tvar valueOrHandler = function valueOrHandler2(value) {\n\t  for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t    params[_key - 1] = arguments[_key];\n\t  }\n\t  return typeof value === \"function\" ? value.apply(void 0, params) : value;\n\t};\n\tvar getActualTarget = function getActualTarget2(event) {\n\t  return event.target.shadowRoot && typeof event.composedPath === \"function\" ? event.composedPath()[0] : event.target;\n\t};\n\tvar internalTrapStack = [];\n\tvar createFocusTrap = function createFocusTrap2(elements, userOptions) {\n\t  var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n\t  var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;\n\t  var config = _objectSpread2({\n\t    returnFocusOnDeactivate: true,\n\t    escapeDeactivates: true,\n\t    delayInitialFocus: true,\n\t    isKeyForward,\n\t    isKeyBackward\n\t  }, userOptions);\n\t  var state = {\n\t    // containers given to createFocusTrap()\n\t    // @type {Array<HTMLElement>}\n\t    containers: [],\n\t    // list of objects identifying tabbable nodes in `containers` in the trap\n\t    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n\t    //  is active, but the trap should never get to a state where there isn't at least one group\n\t    //  with at least one tabbable node in it (that would lead to an error condition that would\n\t    //  result in an error being thrown)\n\t    // @type {Array<{\n\t    //   container: HTMLElement,\n\t    //   tabbableNodes: Array<HTMLElement>, // empty if none\n\t    //   focusableNodes: Array<HTMLElement>, // empty if none\n\t    //   posTabIndexesFound: boolean,\n\t    //   firstTabbableNode: HTMLElement|undefined,\n\t    //   lastTabbableNode: HTMLElement|undefined,\n\t    //   firstDomTabbableNode: HTMLElement|undefined,\n\t    //   lastDomTabbableNode: HTMLElement|undefined,\n\t    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n\t    // }>}\n\t    containerGroups: [],\n\t    // same order/length as `containers` list\n\t    // references to objects in `containerGroups`, but only those that actually have\n\t    //  tabbable nodes in them\n\t    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n\t    //  the same length\n\t    tabbableGroups: [],\n\t    nodeFocusedBeforeActivation: null,\n\t    mostRecentlyFocusedNode: null,\n\t    active: false,\n\t    paused: false,\n\t    manuallyPaused: false,\n\t    // timer ID for when delayInitialFocus is true and initial focus in this trap\n\t    //  has been delayed during activation\n\t    delayInitialFocusTimer: void 0,\n\t    // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n\t    recentNavEvent: void 0\n\t  };\n\t  var trap;\n\t  var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) {\n\t    return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n\t  };\n\t  var findContainerIndex = function findContainerIndex2(element, event) {\n\t    var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === \"function\" ? event.composedPath() : void 0;\n\t    return state.containerGroups.findIndex(function(_ref) {\n\t      var container = _ref.container, tabbableNodes = _ref.tabbableNodes;\n\t      return container.contains(element) || // fall back to explicit tabbable search which will take into consideration any\n\t      //  web components if the `tabbableOptions.getShadowRoot` option was used for\n\t      //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n\t      //  look inside web components even if open)\n\t      (composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function(node) {\n\t        return node === element;\n\t      });\n\t    });\n\t  };\n\t  var getNodeForOption = function getNodeForOption2(optionName) {\n\t    var _ref2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref2$hasFallback = _ref2.hasFallback, hasFallback = _ref2$hasFallback === void 0 ? false : _ref2$hasFallback, _ref2$params = _ref2.params, params = _ref2$params === void 0 ? [] : _ref2$params;\n\t    var optionValue = config[optionName];\n\t    if (typeof optionValue === \"function\") {\n\t      optionValue = optionValue.apply(void 0, _toConsumableArray(params));\n\t    }\n\t    if (optionValue === true) {\n\t      optionValue = void 0;\n\t    }\n\t    if (!optionValue) {\n\t      if (optionValue === void 0 || optionValue === false) {\n\t        return optionValue;\n\t      }\n\t      throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n\t    }\n\t    var node = optionValue;\n\t    if (typeof optionValue === \"string\") {\n\t      try {\n\t        node = doc.querySelector(optionValue);\n\t      } catch (err) {\n\t        throw new Error(\"`\".concat(optionName, '` appears to be an invalid selector; error=\"').concat(err.message, '\"'));\n\t      }\n\t      if (!node) {\n\t        if (!hasFallback) {\n\t          throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n\t        }\n\t      }\n\t    }\n\t    return node;\n\t  };\n\t  var getInitialFocusNode = function getInitialFocusNode2() {\n\t    var node = getNodeForOption(\"initialFocus\", {\n\t      hasFallback: true\n\t    });\n\t    if (node === false) {\n\t      return false;\n\t    }\n\t    if (node === void 0 || node && !isFocusable(node, config.tabbableOptions)) {\n\t      if (findContainerIndex(doc.activeElement) >= 0) {\n\t        node = doc.activeElement;\n\t      } else {\n\t        var firstTabbableGroup = state.tabbableGroups[0];\n\t        var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\t        node = firstTabbableNode || getNodeForOption(\"fallbackFocus\");\n\t      }\n\t    } else if (node === null) {\n\t      node = getNodeForOption(\"fallbackFocus\");\n\t    }\n\t    if (!node) {\n\t      throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n\t    }\n\t    return node;\n\t  };\n\t  var updateTabbableNodes = function updateTabbableNodes2() {\n\t    state.containerGroups = state.containers.map(function(container) {\n\t      var tabbableNodes = tabbable(container, config.tabbableOptions);\n\t      var focusableNodes = focusable(container, config.tabbableOptions);\n\t      var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : void 0;\n\t      var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : void 0;\n\t      var firstDomTabbableNode = focusableNodes.find(function(node) {\n\t        return isTabbable(node);\n\t      });\n\t      var lastDomTabbableNode = focusableNodes.slice().reverse().find(function(node) {\n\t        return isTabbable(node);\n\t      });\n\t      var posTabIndexesFound = !!tabbableNodes.find(function(node) {\n\t        return getTabIndex(node) > 0;\n\t      });\n\t      return {\n\t        container,\n\t        tabbableNodes,\n\t        focusableNodes,\n\t        /** True if at least one node with positive `tabindex` was found in this container. */\n\t        posTabIndexesFound,\n\t        /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n\t        firstTabbableNode,\n\t        /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n\t        lastTabbableNode,\n\t        // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n\t        //  would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n\t        //  because that API doesn't work with Shadow DOM as well as it should (@see\n\t        //  https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n\t        //  to address an edge case related to positive tabindex support, this seems like a much easier,\n\t        //  \"close enough most of the time\" alternative for positive tabindexes which should generally\n\t        //  be avoided anyway...\n\t        /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n\t        firstDomTabbableNode,\n\t        /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n\t        lastDomTabbableNode,\n\t        /**\n\t         * Finds the __tabbable__ node that follows the given node in the specified direction,\n\t         *  in this container, if any.\n\t         * @param {HTMLElement} node\n\t         * @param {boolean} [forward] True if going in forward tab order; false if going\n\t         *  in reverse.\n\t         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n\t         */\n\t        nextTabbableNode: function nextTabbableNode(node) {\n\t          var forward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n\t          var nodeIdx = tabbableNodes.indexOf(node);\n\t          if (nodeIdx < 0) {\n\t            if (forward) {\n\t              return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function(el) {\n\t                return isTabbable(el);\n\t              });\n\t            }\n\t            return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function(el) {\n\t              return isTabbable(el);\n\t            });\n\t          }\n\t          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n\t        }\n\t      };\n\t    });\n\t    state.tabbableGroups = state.containerGroups.filter(function(group) {\n\t      return group.tabbableNodes.length > 0;\n\t    });\n\t    if (state.tabbableGroups.length <= 0 && !getNodeForOption(\"fallbackFocus\")) {\n\t      throw new Error(\"Your focus-trap must have at least one container with at least one tabbable node in it at all times\");\n\t    }\n\t    if (state.containerGroups.find(function(g) {\n\t      return g.posTabIndexesFound;\n\t    }) && state.containerGroups.length > 1) {\n\t      throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n\t    }\n\t  };\n\t  var _getActiveElement = function getActiveElement(el) {\n\t    var activeElement = el.activeElement;\n\t    if (!activeElement) {\n\t      return;\n\t    }\n\t    if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n\t      return _getActiveElement(activeElement.shadowRoot);\n\t    }\n\t    return activeElement;\n\t  };\n\t  var _tryFocus = function tryFocus(node) {\n\t    if (node === false) {\n\t      return;\n\t    }\n\t    if (node === _getActiveElement(document)) {\n\t      return;\n\t    }\n\t    if (!node || !node.focus) {\n\t      _tryFocus(getInitialFocusNode());\n\t      return;\n\t    }\n\t    node.focus({\n\t      preventScroll: !!config.preventScroll\n\t    });\n\t    state.mostRecentlyFocusedNode = node;\n\t    if (isSelectableInput(node)) {\n\t      node.select();\n\t    }\n\t  };\n\t  var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) {\n\t    var node = getNodeForOption(\"setReturnFocus\", {\n\t      params: [previousActiveElement]\n\t    });\n\t    return node ? node : node === false ? false : previousActiveElement;\n\t  };\n\t  var findNextNavNode = function findNextNavNode2(_ref3) {\n\t    var target = _ref3.target, event = _ref3.event, _ref3$isBackward = _ref3.isBackward, isBackward = _ref3$isBackward === void 0 ? false : _ref3$isBackward;\n\t    target = target || getActualTarget(event);\n\t    updateTabbableNodes();\n\t    var destinationNode = null;\n\t    if (state.tabbableGroups.length > 0) {\n\t      var containerIndex = findContainerIndex(target, event);\n\t      var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : void 0;\n\t      if (containerIndex < 0) {\n\t        if (isBackward) {\n\t          destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n\t        } else {\n\t          destinationNode = state.tabbableGroups[0].firstTabbableNode;\n\t        }\n\t      } else if (isBackward) {\n\t        var startOfGroupIndex = state.tabbableGroups.findIndex(function(_ref4) {\n\t          var firstTabbableNode = _ref4.firstTabbableNode;\n\t          return target === firstTabbableNode;\n\t        });\n\t        if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n\t          startOfGroupIndex = containerIndex;\n\t        }\n\t        if (startOfGroupIndex >= 0) {\n\t          var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n\t          var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\t          destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n\t        } else if (!isTabEvent(event)) {\n\t          destinationNode = containerGroup.nextTabbableNode(target, false);\n\t        }\n\t      } else {\n\t        var lastOfGroupIndex = state.tabbableGroups.findIndex(function(_ref5) {\n\t          var lastTabbableNode = _ref5.lastTabbableNode;\n\t          return target === lastTabbableNode;\n\t        });\n\t        if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n\t          lastOfGroupIndex = containerIndex;\n\t        }\n\t        if (lastOfGroupIndex >= 0) {\n\t          var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n\t          var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n\t          destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n\t        } else if (!isTabEvent(event)) {\n\t          destinationNode = containerGroup.nextTabbableNode(target);\n\t        }\n\t      }\n\t    } else {\n\t      destinationNode = getNodeForOption(\"fallbackFocus\");\n\t    }\n\t    return destinationNode;\n\t  };\n\t  var checkPointerDown = function checkPointerDown2(e) {\n\t    var target = getActualTarget(e);\n\t    if (findContainerIndex(target, e) >= 0) {\n\t      return;\n\t    }\n\t    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n\t      trap.deactivate({\n\t        // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n\t        //  which will result in the outside click setting focus to the node\n\t        //  that was clicked (and if not focusable, to \"nothing\"); by setting\n\t        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n\t        //  on activation (or the configured `setReturnFocus` node), whether the\n\t        //  outside click was on a focusable node or not\n\t        returnFocus: config.returnFocusOnDeactivate\n\t      });\n\t      return;\n\t    }\n\t    if (valueOrHandler(config.allowOutsideClick, e)) {\n\t      return;\n\t    }\n\t    e.preventDefault();\n\t  };\n\t  var checkFocusIn = function checkFocusIn2(event) {\n\t    var target = getActualTarget(event);\n\t    var targetContained = findContainerIndex(target, event) >= 0;\n\t    if (targetContained || target instanceof Document) {\n\t      if (targetContained) {\n\t        state.mostRecentlyFocusedNode = target;\n\t      }\n\t    } else {\n\t      event.stopImmediatePropagation();\n\t      var nextNode;\n\t      var navAcrossContainers = true;\n\t      if (state.mostRecentlyFocusedNode) {\n\t        if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n\t          var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n\t          var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n\t          if (tabbableNodes.length > 0) {\n\t            var mruTabIdx = tabbableNodes.findIndex(function(node) {\n\t              return node === state.mostRecentlyFocusedNode;\n\t            });\n\t            if (mruTabIdx >= 0) {\n\t              if (config.isKeyForward(state.recentNavEvent)) {\n\t                if (mruTabIdx + 1 < tabbableNodes.length) {\n\t                  nextNode = tabbableNodes[mruTabIdx + 1];\n\t                  navAcrossContainers = false;\n\t                }\n\t              } else {\n\t                if (mruTabIdx - 1 >= 0) {\n\t                  nextNode = tabbableNodes[mruTabIdx - 1];\n\t                  navAcrossContainers = false;\n\t                }\n\t              }\n\t            }\n\t          }\n\t        } else {\n\t          if (!state.containerGroups.some(function(g) {\n\t            return g.tabbableNodes.some(function(n) {\n\t              return getTabIndex(n) > 0;\n\t            });\n\t          })) {\n\t            navAcrossContainers = false;\n\t          }\n\t        }\n\t      } else {\n\t        navAcrossContainers = false;\n\t      }\n\t      if (navAcrossContainers) {\n\t        nextNode = findNextNavNode({\n\t          // move FROM the MRU node, not event-related node (which will be the node that is\n\t          //  outside the trap causing the focus escape we're trying to fix)\n\t          target: state.mostRecentlyFocusedNode,\n\t          isBackward: config.isKeyBackward(state.recentNavEvent)\n\t        });\n\t      }\n\t      if (nextNode) {\n\t        _tryFocus(nextNode);\n\t      } else {\n\t        _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n\t      }\n\t    }\n\t    state.recentNavEvent = void 0;\n\t  };\n\t  var checkKeyNav = function checkKeyNav2(event) {\n\t    var isBackward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n\t    state.recentNavEvent = event;\n\t    var destinationNode = findNextNavNode({\n\t      event,\n\t      isBackward\n\t    });\n\t    if (destinationNode) {\n\t      if (isTabEvent(event)) {\n\t        event.preventDefault();\n\t      }\n\t      _tryFocus(destinationNode);\n\t    }\n\t  };\n\t  var checkTabKey = function checkTabKey2(event) {\n\t    if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n\t      checkKeyNav(event, config.isKeyBackward(event));\n\t    }\n\t  };\n\t  var checkEscapeKey = function checkEscapeKey2(event) {\n\t    if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n\t      event.preventDefault();\n\t      trap.deactivate();\n\t    }\n\t  };\n\t  var checkClick = function checkClick2(e) {\n\t    var target = getActualTarget(e);\n\t    if (findContainerIndex(target, e) >= 0) {\n\t      return;\n\t    }\n\t    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n\t      return;\n\t    }\n\t    if (valueOrHandler(config.allowOutsideClick, e)) {\n\t      return;\n\t    }\n\t    e.preventDefault();\n\t    e.stopImmediatePropagation();\n\t  };\n\t  var addListeners = function addListeners2() {\n\t    if (!state.active) {\n\t      return;\n\t    }\n\t    activeFocusTraps.activateTrap(trapStack, trap);\n\t    state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() {\n\t      _tryFocus(getInitialFocusNode());\n\t    }) : _tryFocus(getInitialFocusNode());\n\t    doc.addEventListener(\"focusin\", checkFocusIn, true);\n\t    doc.addEventListener(\"mousedown\", checkPointerDown, {\n\t      capture: true,\n\t      passive: false\n\t    });\n\t    doc.addEventListener(\"touchstart\", checkPointerDown, {\n\t      capture: true,\n\t      passive: false\n\t    });\n\t    doc.addEventListener(\"click\", checkClick, {\n\t      capture: true,\n\t      passive: false\n\t    });\n\t    doc.addEventListener(\"keydown\", checkTabKey, {\n\t      capture: true,\n\t      passive: false\n\t    });\n\t    doc.addEventListener(\"keydown\", checkEscapeKey);\n\t    return trap;\n\t  };\n\t  var removeListeners = function removeListeners2() {\n\t    if (!state.active) {\n\t      return;\n\t    }\n\t    doc.removeEventListener(\"focusin\", checkFocusIn, true);\n\t    doc.removeEventListener(\"mousedown\", checkPointerDown, true);\n\t    doc.removeEventListener(\"touchstart\", checkPointerDown, true);\n\t    doc.removeEventListener(\"click\", checkClick, true);\n\t    doc.removeEventListener(\"keydown\", checkTabKey, true);\n\t    doc.removeEventListener(\"keydown\", checkEscapeKey);\n\t    return trap;\n\t  };\n\t  var checkDomRemoval = function checkDomRemoval2(mutations) {\n\t    var isFocusedNodeRemoved = mutations.some(function(mutation) {\n\t      var removedNodes = Array.from(mutation.removedNodes);\n\t      return removedNodes.some(function(node) {\n\t        return node === state.mostRecentlyFocusedNode;\n\t      });\n\t    });\n\t    if (isFocusedNodeRemoved) {\n\t      _tryFocus(getInitialFocusNode());\n\t    }\n\t  };\n\t  var mutationObserver = typeof window !== \"undefined\" && \"MutationObserver\" in window ? new MutationObserver(checkDomRemoval) : void 0;\n\t  var updateObservedNodes = function updateObservedNodes2() {\n\t    if (!mutationObserver) {\n\t      return;\n\t    }\n\t    mutationObserver.disconnect();\n\t    if (state.active && !state.paused) {\n\t      state.containers.map(function(container) {\n\t        mutationObserver.observe(container, {\n\t          subtree: true,\n\t          childList: true\n\t        });\n\t      });\n\t    }\n\t  };\n\t  trap = {\n\t    get active() {\n\t      return state.active;\n\t    },\n\t    get paused() {\n\t      return state.paused;\n\t    },\n\t    activate: function activate(activateOptions) {\n\t      if (state.active) {\n\t        return this;\n\t      }\n\t      var onActivate = getOption(activateOptions, \"onActivate\");\n\t      var onPostActivate = getOption(activateOptions, \"onPostActivate\");\n\t      var checkCanFocusTrap = getOption(activateOptions, \"checkCanFocusTrap\");\n\t      if (!checkCanFocusTrap) {\n\t        updateTabbableNodes();\n\t      }\n\t      state.active = true;\n\t      state.paused = false;\n\t      state.nodeFocusedBeforeActivation = _getActiveElement(doc);\n\t      onActivate === null || onActivate === void 0 || onActivate();\n\t      var finishActivation = function finishActivation2() {\n\t        if (checkCanFocusTrap) {\n\t          updateTabbableNodes();\n\t        }\n\t        addListeners();\n\t        updateObservedNodes();\n\t        onPostActivate === null || onPostActivate === void 0 || onPostActivate();\n\t      };\n\t      if (checkCanFocusTrap) {\n\t        checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n\t        return this;\n\t      }\n\t      finishActivation();\n\t      return this;\n\t    },\n\t    deactivate: function deactivate(deactivateOptions) {\n\t      if (!state.active) {\n\t        return this;\n\t      }\n\t      var options = _objectSpread2({\n\t        onDeactivate: config.onDeactivate,\n\t        onPostDeactivate: config.onPostDeactivate,\n\t        checkCanReturnFocus: config.checkCanReturnFocus\n\t      }, deactivateOptions);\n\t      clearTimeout(state.delayInitialFocusTimer);\n\t      state.delayInitialFocusTimer = void 0;\n\t      removeListeners();\n\t      state.active = false;\n\t      state.paused = false;\n\t      updateObservedNodes();\n\t      activeFocusTraps.deactivateTrap(trapStack, trap);\n\t      var onDeactivate = getOption(options, \"onDeactivate\");\n\t      var onPostDeactivate = getOption(options, \"onPostDeactivate\");\n\t      var checkCanReturnFocus = getOption(options, \"checkCanReturnFocus\");\n\t      var returnFocus = getOption(options, \"returnFocus\", \"returnFocusOnDeactivate\");\n\t      onDeactivate === null || onDeactivate === void 0 || onDeactivate();\n\t      var finishDeactivation = function finishDeactivation2() {\n\t        delay(function() {\n\t          if (returnFocus) {\n\t            _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n\t          }\n\t          onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate();\n\t        });\n\t      };\n\t      if (returnFocus && checkCanReturnFocus) {\n\t        checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n\t        return this;\n\t      }\n\t      finishDeactivation();\n\t      return this;\n\t    },\n\t    pause: function pause(pauseOptions) {\n\t      if (!state.active) {\n\t        return this;\n\t      }\n\t      state.manuallyPaused = true;\n\t      return this._setPausedState(true, pauseOptions);\n\t    },\n\t    unpause: function unpause(unpauseOptions) {\n\t      if (!state.active) {\n\t        return this;\n\t      }\n\t      state.manuallyPaused = false;\n\t      if (trapStack[trapStack.length - 1] !== this) {\n\t        return this;\n\t      }\n\t      return this._setPausedState(false, unpauseOptions);\n\t    },\n\t    updateContainerElements: function updateContainerElements(containerElements) {\n\t      var elementsAsArray = [].concat(containerElements).filter(Boolean);\n\t      state.containers = elementsAsArray.map(function(element) {\n\t        return typeof element === \"string\" ? doc.querySelector(element) : element;\n\t      });\n\t      if (state.active) {\n\t        updateTabbableNodes();\n\t      }\n\t      updateObservedNodes();\n\t      return this;\n\t    }\n\t  };\n\t  Object.defineProperties(trap, {\n\t    _isManuallyPaused: {\n\t      value: function value() {\n\t        return state.manuallyPaused;\n\t      }\n\t    },\n\t    _setPausedState: {\n\t      value: function value(paused, options) {\n\t        if (state.paused === paused) {\n\t          return this;\n\t        }\n\t        state.paused = paused;\n\t        if (paused) {\n\t          var onPause = getOption(options, \"onPause\");\n\t          var onPostPause = getOption(options, \"onPostPause\");\n\t          onPause === null || onPause === void 0 || onPause();\n\t          removeListeners();\n\t          updateObservedNodes();\n\t          onPostPause === null || onPostPause === void 0 || onPostPause();\n\t        } else {\n\t          var onUnpause = getOption(options, \"onUnpause\");\n\t          var onPostUnpause = getOption(options, \"onPostUnpause\");\n\t          onUnpause === null || onUnpause === void 0 || onUnpause();\n\t          updateTabbableNodes();\n\t          addListeners();\n\t          updateObservedNodes();\n\t          onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause();\n\t        }\n\t        return this;\n\t      }\n\t    }\n\t  });\n\t  trap.updateContainerElements(elements);\n\t  return trap;\n\t};\n\tconst createAndActivateFocusTrap = ({ activateOptions, el, options }) => {\n\t  let trapStack = [];\n\t  if (typeof window !== \"undefined\") {\n\t    if (!window.trapStack) {\n\t      window.trapStack = trapStack;\n\t    } else {\n\t      trapStack = window.trapStack;\n\t    }\n\t  }\n\t  try {\n\t    return createFocusTrap(el, Object.assign(Object.assign({ allowOutsideClick: true, document, escapeDeactivates: false }, options), { tabbableOptions: Object.assign({ getShadowRoot: true }, options === null || options === void 0 ? void 0 : options.tabbableOptions), trapStack })).activate(activateOptions);\n\t  } catch (e) {\n\t    console.warn(e);\n\t  }\n\t  return void 0;\n\t};\n\tfocusTrapD7750c92.createAndActivateFocusTrap = createAndActivateFocusTrap;\n\treturn focusTrapD7750c92;\n}\n\nvar hasRequiredMarketBlade_cjs_entry;\n\nfunction requireMarketBlade_cjs_entry () {\n\tif (hasRequiredMarketBlade_cjs_entry) return marketBlade_cjs_entry;\n\thasRequiredMarketBlade_cjs_entry = 1;\n\tObject.defineProperty(marketBlade_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst dialog = requireDialog8459b0d0();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst focusTrap = requireFocusTrapD7750c92();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst marketBladeCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-direction:column;justify-content:stretch;overflow:hidden}:host ::slotted(main),:host ::slotted(.main){flex:0 1 100%;overflow-y:auto;height:100%}:host ::slotted(.market-header){margin-bottom:var(--core-metrics-spacing-300);padding-top:0}:host ::slotted(.market-footer){padding-bottom:0}:host{position:fixed;top:0;right:0;width:100%;max-width:var(--modal-blade-maximum-width-size);height:100vh;padding-top:var(--modal-blade-regular-vertical-size-class-vertical-padding);padding-bottom:var(--modal-blade-regular-vertical-size-class-vertical-padding);background-color:var(--modal-blade-background-color);box-shadow:var(--elevation-20-shadow);animation-name:market-slide-left-enter;animation-duration:var(\\n      --blade-animation-enter-transition-duration,\\n      var(--core-animation-enter-transition-moderate-speed-duration)\\n    );animation-timing-function:var(\\n      --blade-animation-enter-transition-easing,\\n      var(--core-animation-enter-transition-easing)\\n    );animation-fill-mode:forwards}:host ::slotted(*){padding-right:var(--modal-blade-regular-horizontal-size-class-horizontal-padding);padding-left:var(--modal-blade-regular-horizontal-size-class-horizontal-padding)}:host([hidden]){animation-name:market-slide-left-exit;animation-duration:var(\\n        --blade-animation-exit-transition-duration,\\n        var(--core-animation-exit-transition-moderate-speed-duration)\\n      );animation-timing-function:var(\\n        --blade-animation-exit-transition-easing,\\n        var(--core-animation-exit-transition-easing)\\n      )}:host([hidden].skip-animation){transform:translateX(100%);animation:none}@media only screen and (min-width: 1200px){:host{max-width:var(--modal-blade-wide-viewport-width-size);padding-top:var(--modal-blade-wide-viewport-padding-top-size);padding-bottom:var(--modal-blade-wide-viewport-padding-bottom-size)}::slotted(*){padding-right:var(--modal-blade-wide-viewport-padding-right-size);padding-left:var(--modal-blade-wide-viewport-padding-left-size)}}\";\n\tconst MarketBladeStyle0 = marketBladeCss;\n\tconst MarketBlade = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDialogLoaded = index.createEvent(this, \"marketDialogLoaded\", 7);\n\t    this.marketDialogDismissed = index.createEvent(this, \"marketDialogDismissed\", 7);\n\t    this.marketDialogDidDismiss = index.createEvent(this, \"marketDialogDidDismiss\", 7);\n\t    this.type = \"blade\";\n\t    this.skipAnimation = false;\n\t    this.hidden = false;\n\t    this.dialogID = void 0;\n\t    this.index = void 0;\n\t    this.animationDuration = index$1.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.animationEnterDuration = index$1.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.animationExitDuration = index$1.CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.trapFocus = false;\n\t  }\n\t  reenableAnimation() {\n\t    this.skipAnimation = false;\n\t  }\n\t  /**\n\t   * Listen to the marketHeaderNavigate event emitted by a market-header child component\n\t   * so we can emit a close event if needed\n\t   */\n\t  headerNavigateEventHandler(event) {\n\t    const { detail, target } = event;\n\t    if (detail.action === \"close\") {\n\t      if (target.closest(dialog.getDialogSelector()) === this.el) {\n\t        this.dismiss();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Emits the dismiss event\n\t   * The parent context will handle actually removing elements from the DOM,\n\t   * All the blade needs to do it emit an event so actually closing it can be\n\t   * some other elements problem\n\t   */\n\t  dismiss(dismissOptions) {\n\t    const { defaultPrevented } = this.marketDialogDismissed.emit({\n\t      dialog: this.el,\n\t      type: this.type,\n\t      origin: (dismissOptions === null || dismissOptions === void 0 ? void 0 : dismissOptions.origin) || this.el\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.hidden = true;\n\t      setTimeout(() => {\n\t        this.marketDialogDidDismiss.emit({\n\t          dialog: this.el,\n\t          type: this.type,\n\t          origin: this.el\n\t        });\n\t      }, this.animationExitDuration);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  onTrapFocusChanged(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      if (newValue) {\n\t        this.activateFocusTrap();\n\t      } else {\n\t        this.deactivateFocusTrap();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Activates the focus trap\n\t   *\n\t   * See [`focus-trap.ts`](../../utils/focus-trap.ts) for default options\n\t   *\n\t   * @param {Object} [options] [focus-trap create options](https://github.com/focus-trap/focus-trap#createoptions)\n\t   * @param {Object} [activateOptions] set options for [onActivate, onPostActivate, and checkCanFocusTrap](https://github.com/focus-trap/focus-trap#trapactivate)\n\t   */\n\t  activateFocusTrap(options, activateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.activate(activateOptions !== null && activateOptions !== void 0 ? activateOptions : {});\n\t      if (!this.trapFocus) {\n\t        this.trapFocus = true;\n\t      }\n\t    } else {\n\t      this.focusTrap = focusTrap.createAndActivateFocusTrap({\n\t        activateOptions,\n\t        el: this.el,\n\t        options\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Deactivates the focus trap\n\t   *\n\t   * @param {FocusTrapDeactivateOptions} [deactivateOptions] set options for [onDeactivate, onPostDeactivate, and checkCanReturnFocus](https://github.com/focus-trap/focus-trap#trapdeactivate)\n\t   */\n\t  deactivateFocusTrap(deactivateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.deactivate(Object.assign({ returnFocus: true, checkCanReturnFocus: (trigger) => new Promise((resolve) => {\n\t        if (typeof (trigger === null || trigger === void 0 ? void 0 : trigger.setFocus) === \"function\") {\n\t          trigger.setFocus();\n\t        } else {\n\t          resolve();\n\t        }\n\t      }) }, deactivateOptions));\n\t      this.focusTrap = void 0;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Emit a marketDialogLoaded event when the component connects.\n\t   * Need this so the context manager isn't rummaging around it's DOM\n\t   * to try and find the dialog that was just appended\n\t   */\n\t  connectedCallback() {\n\t    setTimeout(() => {\n\t      this.marketDialogLoaded.emit({\n\t        dialog: this.el,\n\t        type: this.type\n\t      });\n\t      if (this.trapFocus) {\n\t        this.activateFocusTrap();\n\t      }\n\t    }, this.animationEnterDuration);\n\t  }\n\t  componentWillLoad() {\n\t    const header = this.el.querySelector(index$2.getNamespacedTagFor(\"market-header\"));\n\t    if (header) {\n\t      header.showNavigation = true;\n\t    }\n\t    if (this.hidden) {\n\t      this.skipAnimation = true;\n\t    }\n\t    dialog.setupDialogCompactHandler(this.el);\n\t  }\n\t  disconnectedCallback() {\n\t    this.deactivateFocusTrap();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"08536cd4ca728e90cab77076cc1a22f634341c49\", role: \"dialog\", class: classnames.classNames(\"market-blade\", {\n\t      \"skip-animation\": this.skipAnimation\n\t    }) }, index.h(\"slot\", { key: \"246fb6607ce43329eb4b46735c9bd19a036d3034\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"hidden\": [\"reenableAnimation\"],\n\t      \"trapFocus\": [\"onTrapFocusChanged\"]\n\t    };\n\t  }\n\t};\n\tMarketBlade.style = MarketBladeStyle0;\n\tmarketBlade_cjs_entry.market_blade = MarketBlade;\n\treturn marketBlade_cjs_entry;\n}\n\nvar marketButton_cjs_entry = {};\n\nvar aria71b861a0 = {};\n\nvar hasRequiredAria71b861a0;\n\nfunction requireAria71b861a0 () {\n\tif (hasRequiredAria71b861a0) return aria71b861a0;\n\thasRequiredAria71b861a0 = 1;\n\tconst getAriaAttributes = (el) => {\n\t  return el.getAttributeNames().filter((attr) => attr.startsWith(\"aria-\")).reduce((acc, attr) => {\n\t    const value = el.getAttribute(attr);\n\t    if (value !== null)\n\t      acc[attr] = value;\n\t    return acc;\n\t  }, {});\n\t};\n\tconst observeAriaAttributes = (el, onMutationObserved) => {\n\t  const mutationObserver = new MutationObserver(() => {\n\t    const ariaAttributes = getAriaAttributes(el);\n\t    return onMutationObserved(ariaAttributes);\n\t  });\n\t  mutationObserver.observe(el, { attributes: true });\n\t  return mutationObserver;\n\t};\n\tconst getTextInputAriaLabel = (inputEl) => {\n\t  var _a;\n\t  const slottedLabel = (\n\t    // label slotted directly into input component\n\t    inputEl.querySelector(\"label:not([slot])\") || // label slotted into a higher-level component (market-input-password)\n\t    ((_a = inputEl.getRootNode().host) === null || _a === void 0 ? void 0 : _a.querySelector(\"label:not([slot])\"))\n\t  );\n\t  return (slottedLabel === null || slottedLabel === void 0 ? void 0 : slottedLabel.innerHTML) || inputEl.getAttribute(\"name\") || void 0;\n\t};\n\tconst getControlInputAriaLabel = (controlEl) => {\n\t  var _a;\n\t  const attrIsValid = (attr) => attr !== null && attr.trim() !== \"\";\n\t  let controlAriaLabel;\n\t  const ariaLabelledBy = controlEl.getAttribute(\"aria-labelledby\");\n\t  if (attrIsValid(ariaLabelledBy)) {\n\t    const labelledByText = (_a = document.getElementById(ariaLabelledBy)) === null || _a === void 0 ? void 0 : _a.textContent;\n\t    controlAriaLabel = controlAriaLabel || labelledByText;\n\t  }\n\t  const ariaLabel = controlEl.getAttribute(\"aria-label\");\n\t  if (attrIsValid(ariaLabel)) {\n\t    controlAriaLabel = controlAriaLabel || ariaLabel;\n\t  }\n\t  return controlAriaLabel || controlEl.getAttribute(\"name\") || void 0;\n\t};\n\tconst applyExpandableAriaControls = (controlEl, { expanded, popoverId }) => {\n\t  controlEl.setAttribute(\"aria-expanded\", expanded);\n\t  controlEl.setAttribute(\"aria-controls\", popoverId);\n\t};\n\taria71b861a0.applyExpandableAriaControls = applyExpandableAriaControls;\n\taria71b861a0.getControlInputAriaLabel = getControlInputAriaLabel;\n\taria71b861a0.getTextInputAriaLabel = getTextInputAriaLabel;\n\taria71b861a0.observeAriaAttributes = observeAriaAttributes;\n\treturn aria71b861a0;\n}\n\nvar hasRequiredMarketButton_cjs_entry;\n\nfunction requireMarketButton_cjs_entry () {\n\tif (hasRequiredMarketButton_cjs_entry) return marketButton_cjs_entry;\n\thasRequiredMarketButton_cjs_entry = 1;\n\tObject.defineProperty(marketButton_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketButtonCss = ':host, ::slotted(*), * {\\n  box-sizing: border-box;\\n}\\n\\n:host([disabled]) {\\n  cursor: not-allowed !important; /* stylelint-disable-line declaration-no-important */\\n}\\n\\n:host([disabled]) *, :host([disabled]) ::slotted(*) {\\n  cursor: not-allowed !important; /* stylelint-disable-line declaration-no-important */\\n  pointer-events: none !important; /* stylelint-disable-line declaration-no-important */\\n}\\n\\n/* focus ring styles */\\n\\n:host * {\\n  outline-color: var(--core-focus-ring-color);\\n}\\n\\n:host(:focus-visible), ::slotted(*:focus-visible) {\\n  outline: var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);\\n  outline-offset: var(--core-focus-ring-buffer-size);\\n}\\n\\n::slotted(a), ::slotted(button) {\\n  border-radius: 1px;\\n}\\n\\n\\n:host {\\n  --transition-duration: var(--core-animation-enter-transition-moderate-speed-duration);\\n  --focus-ring-color: color-mix(in srgb, var(--button-focus-ring-color) 100%, transparent);\\n\\n  position: relative;\\n  display: inline-block;\\n  border-radius: var(--button-border-radius);\\n  transition: background-color color var(--transition-duration);\\n}\\n\\n/* inner button / link */\\n.inner-tag {\\n  display: inline-flex;\\n  justify-content: center;\\n  align-items: center;\\n  width: 100%;\\n  border: none;\\n  border-radius: var(--button-border-radius);\\n  background-color: transparent;\\n  color: inherit;\\n  outline: none;\\n  font-weight: inherit;\\n  font-size: inherit;\\n  font-family: inherit;\\n  line-height: inherit;\\n  text-align: center;\\n  text-decoration: none;\\n  cursor: pointer;\\n}\\n.inner-tag:focus-visible {\\n    outline: var(--button-focus-ring-border-size) solid var(--focus-ring-color);\\n    outline-offset: var(--button-focus-ring-buffer-size);\\n  }\\n\\n::slotted([slot=\"icon\"]) {\\n  position: relative;\\n  display: flex;\\n  color: inherit;\\n  fill: currentcolor;\\n  stroke: inherit;\\n}\\n\\n.market-activity-indicator {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  line-height: 0;\\n  opacity: 0%;\\n  transform: translate(-50%, -50%);\\n}\\n\\n:host([is-loading]) {\\n  pointer-events: none;\\n}\\n\\n:host([is-loading]) .inner-tag {\\n    opacity: 0%;\\n  }\\n\\n:host([is-loading]) .market-activity-indicator {\\n    opacity: 100%;\\n  }\\n\\n:host([size=\"small\"]) {\\n  --button-small-size-minimum-width: var(--button-small-size-minimum-height);\\n\\n  font-weight: var(--button-small-size-text-weight);\\n  font-size: var(--button-small-size-text-size);\\n  line-height: var(--button-small-size-text-leading);\\n  letter-spacing: var(--button-small-size-text-tracking);\\n}\\n\\n:host([size=\"small\"]) .inner-tag {\\n    min-width: var(--button-small-size-minimum-width);\\n    min-height: var(--button-small-size-minimum-height);\\n    -moz-column-gap: var(--button-small-size-content-spacing);\\n         column-gap: var(--button-small-size-content-spacing);\\n  }\\n\\n:host([size=\"small\"][rank=\"primary\"]) .inner-tag {\\n    padding:\\n      var(--button-small-size-primary-rank-vertical-padding)\\n      var(--button-small-size-primary-rank-horizontal-padding);\\n  }\\n\\n/* 24px icons are 2px too tall for 40px buttons with 9px padding.\\n    this is reflected in figma, but not in design tokens,\\n    so manually adjust with negative vertical margins */\\n\\n:host([size=\"small\"][rank=\"primary\"]) svg, :host([size=\"small\"][rank=\"primary\"]) ::slotted([slot=\"icon\"]) {\\n    margin:\\n      calc(\\n        (var(--button-small-size-minimum-height) - var(--accessory-icon-variant-size)) / 2\\n        - var(--button-small-size-primary-rank-vertical-padding)\\n      ) 0;\\n  }\\n\\n:host([size=\"small\"][rank=\"secondary\"]) .inner-tag {\\n    padding:\\n      var(--button-small-size-secondary-rank-vertical-padding)\\n      var(--button-small-size-secondary-rank-horizontal-padding);\\n  }\\n\\n/* 24px icons are 2px too tall for 40px buttons with 9px padding.\\n    this is reflected in figma, but not in design tokens,\\n    so manually adjust with negative vertical margins */\\n\\n:host([size=\"small\"][rank=\"secondary\"]) svg, :host([size=\"small\"][rank=\"secondary\"]) ::slotted([slot=\"icon\"]) {\\n    margin:\\n      calc(\\n        (var(--button-small-size-minimum-height) - var(--accessory-icon-variant-size)) / 2\\n        - var(--button-small-size-secondary-rank-vertical-padding)\\n      ) 0;\\n  }\\n\\n:host([size=\"small\"][rank=\"tertiary\"]) .inner-tag {\\n    padding:\\n      var(--button-small-size-tertiary-rank-vertical-padding)\\n      var(--button-small-size-tertiary-rank-horizontal-padding);\\n  }\\n\\n/* 24px icons are 2px too tall for 40px buttons with 9px padding.\\n    this is reflected in figma, but not in design tokens,\\n    so manually adjust with negative vertical margins */\\n\\n:host([size=\"small\"][rank=\"tertiary\"]) svg, :host([size=\"small\"][rank=\"tertiary\"]) ::slotted([slot=\"icon\"]) {\\n    margin:\\n      calc(\\n        (var(--button-small-size-minimum-height) - var(--accessory-icon-variant-size)) / 2\\n        - var(--button-small-size-tertiary-rank-vertical-padding)\\n      ) 0;\\n  }\\n\\n:host([size=\"small\"][icon-only]) .inner-tag {\\n    padding: var(--icon-button-small-size-padding-size);\\n  }\\n\\n:host([size=\"small\"][icon-only]) .button-text {\\n    display: none;\\n  }\\n\\n/* monochrome theme border radius: ensure multi-line buttons match single-line buttons */\\n:host([size=\"small\"]):host-context([data-market-theme=\"monochrome\"]) {\\n  border-radius: calc(var(--button-small-size-minimum-height) / 2);\\n}\\n\\n:host([size=\"medium\"]) {\\n  --button-medium-size-minimum-width: var(--button-medium-size-minimum-height);\\n\\n  font-weight: var(--button-medium-size-text-weight);\\n  font-size: var(--button-medium-size-text-size);\\n  line-height: var(--button-medium-size-text-leading);\\n  letter-spacing: var(--button-medium-size-text-tracking);\\n}\\n\\n:host([size=\"medium\"]) .inner-tag {\\n    min-width: var(--button-medium-size-minimum-width);\\n    min-height: var(--button-medium-size-minimum-height);\\n    -moz-column-gap: var(--button-medium-size-content-spacing);\\n         column-gap: var(--button-medium-size-content-spacing);\\n  }\\n\\n:host([size=\"medium\"][rank=\"primary\"]) .inner-tag {\\n    padding:\\n      var(--button-medium-size-primary-rank-vertical-padding)\\n      var(--button-medium-size-primary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"medium\"][rank=\"secondary\"]) .inner-tag {\\n    padding:\\n      var(--button-medium-size-secondary-rank-vertical-padding)\\n      var(--button-medium-size-secondary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"medium\"][rank=\"tertiary\"]) .inner-tag {\\n    padding:\\n      var(--button-medium-size-tertiary-rank-vertical-padding)\\n      var(--button-medium-size-tertiary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"medium\"][icon-only]) .inner-tag {\\n    padding: var(--icon-button-medium-size-padding-size);\\n  }\\n\\n:host([size=\"medium\"][icon-only]) .button-text {\\n    display: none;\\n  }\\n\\n/* monochrome theme border radius: ensure multi-line buttons match single-line buttons */\\n:host([size=\"medium\"]):host-context([data-market-theme=\"monochrome\"]) {\\n  border-radius: calc(var(--button-medium-size-minimum-height) / 2);\\n}\\n\\n:host([size=\"large\"]) {\\n  --button-large-size-minimum-width: var(--button-large-size-minimum-height);\\n\\n  font-weight: var(--button-large-size-text-weight);\\n  font-size: var(--button-large-size-text-size);\\n  line-height: var(--button-large-size-text-leading);\\n  letter-spacing: var(--button-large-size-text-tracking);\\n}\\n\\n:host([size=\"large\"]) .inner-tag {\\n    min-width: var(--button-large-size-minimum-width);\\n    min-height: var(--button-large-size-minimum-height);\\n    -moz-column-gap: var(--button-large-size-content-spacing);\\n         column-gap: var(--button-large-size-content-spacing);\\n  }\\n\\n:host([size=\"large\"][rank=\"primary\"]) .inner-tag {\\n    padding:\\n      var(--button-large-size-primary-rank-vertical-padding)\\n      var(--button-large-size-primary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"large\"][rank=\"secondary\"]) .inner-tag {\\n    padding:\\n      var(--button-large-size-secondary-rank-vertical-padding)\\n      var(--button-large-size-secondary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"large\"][rank=\"tertiary\"]) .inner-tag {\\n    padding:\\n      var(--button-large-size-tertiary-rank-vertical-padding)\\n      var(--button-large-size-tertiary-rank-horizontal-padding);\\n  }\\n\\n:host([size=\"large\"][icon-only]) .inner-tag {\\n    padding: var(--icon-button-large-size-padding-size);\\n  }\\n\\n:host([size=\"large\"][icon-only]) .button-text {\\n    display: none;\\n  }\\n\\n/* monochrome theme border radius: ensure multi-line buttons match single-line buttons */\\n:host([size=\"large\"]):host-context([data-market-theme=\"monochrome\"]) {\\n  border-radius: calc(var(--button-large-size-minimum-height) / 2);\\n}\\n\\n:host([rank=\"primary\"]) {\\n  background-color: var(--button-normal-variant-primary-rank-normal-state-background-color);\\n  color: var(--button-normal-variant-primary-rank-normal-state-label-color);\\n}\\n\\n:host([rank=\"primary\"][icon-only]) {\\n  color: var(--icon-button-primary-rank-normal-state-icon-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([rank=\"primary\"]:hover) {\\n    background-color: var(--button-normal-variant-primary-rank-hover-state-background-color);\\n    color: var(--button-normal-variant-primary-rank-hover-state-label-color);\\n  }\\n\\n  :host([rank=\"primary\"][icon-only]:hover) {\\n    color: var(--icon-button-primary-rank-hover-state-icon-color);\\n  }\\n}\\n\\n:host([rank=\"primary\"]:active) {\\n  background-color: var(--button-normal-variant-primary-rank-pressed-state-background-color);\\n  color: var(--button-normal-variant-primary-rank-pressed-state-label-color);\\n}\\n\\n:host([rank=\"primary\"][icon-only]:active) {\\n  color: var(--icon-button-primary-rank-pressed-state-icon-color);\\n}\\n\\n:host([rank=\"primary\"][disabled]) {\\n  background-color: var(--button-normal-variant-primary-rank-disabled-state-background-color);\\n  color: var(--button-normal-variant-primary-rank-disabled-state-label-color);\\n}\\n\\n:host([rank=\"primary\"][icon-only][disabled]) {\\n  color: var(--icon-button-primary-rank-disabled-state-icon-color);\\n}\\n\\n:host([rank=\"secondary\"]) {\\n  background-color: var(--button-normal-variant-secondary-rank-normal-state-background-color);\\n  color: var(--button-normal-variant-secondary-rank-normal-state-label-color);\\n}\\n\\n:host([rank=\"secondary\"][icon-only]) {\\n  color: var(--icon-button-secondary-rank-normal-state-icon-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([rank=\"secondary\"]:hover) {\\n    background-color: var(--button-normal-variant-secondary-rank-hover-state-background-color);\\n    color: var(--button-normal-variant-secondary-rank-hover-state-label-color);\\n  }\\n\\n  :host([rank=\"secondary\"][icon-only]:hover) {\\n    color: var(--icon-button-secondary-rank-hover-state-icon-color);\\n  }\\n}\\n\\n:host([rank=\"secondary\"]:active) {\\n  background-color: var(--button-normal-variant-secondary-rank-pressed-state-background-color);\\n  color: var(--button-normal-variant-secondary-rank-pressed-state-label-color);\\n}\\n\\n:host([rank=\"secondary\"][icon-only]:active) {\\n  color: var(--icon-button-secondary-rank-pressed-state-icon-color);\\n}\\n\\n:host([rank=\"secondary\"][disabled]) {\\n  background-color: var(--button-normal-variant-secondary-rank-disabled-state-background-color);\\n  color: var(--button-normal-variant-secondary-rank-disabled-state-label-color);\\n}\\n\\n:host([rank=\"secondary\"][icon-only][disabled]) {\\n  color: var(--icon-button-secondary-rank-disabled-state-icon-color);\\n}\\n\\n:host([rank=\"tertiary\"]) {\\n  background-color: var(--button-normal-variant-tertiary-rank-normal-state-background-color);\\n  color: var(--button-normal-variant-tertiary-rank-normal-state-label-color);\\n}\\n\\n:host([rank=\"tertiary\"]) .button-text {\\n    display: inline-block;\\n    line-height: 100%;\\n    text-decoration-line: underline;\\n    text-decoration-thickness: var(--button-tertiary-rank-underline);\\n    text-decoration-style: solid;\\n    text-underline-offset: var(--button-tertiary-rank-underline-offset, 2px);\\n  }\\n\\n/* stylelint-disable-next-line length-zero-no-unit */\\n@container style(--button-tertiary-rank-underline: 0px) {\\n  :host([rank=\"tertiary\"]) .button-text {\\n    text-decoration-line: none;\\n  }\\n}\\n\\n:host([rank=\"tertiary\"][icon-only]) {\\n  color: var(--icon-button-tertiary-rank-normal-state-icon-color);\\n}\\n\\n:host([rank=\"tertiary\"][focused]) {\\n  background-color: var(--button-normal-variant-tertiary-rank-focus-state-background-color);\\n  color: var(--button-normal-variant-tertiary-rank-focus-state-label-color);\\n}\\n\\n:host([rank=\"tertiary\"][icon-only][focused]) {\\n  color: var(--icon-button-tertiary-rank-focus-state-icon-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([rank=\"tertiary\"]:hover) {\\n    background-color: var(--button-normal-variant-tertiary-rank-hover-state-background-color);\\n    color: var(--button-normal-variant-tertiary-rank-hover-state-label-color);\\n  }\\n\\n  :host([rank=\"tertiary\"][icon-only]:hover) {\\n    color: var(--icon-button-tertiary-rank-hover-state-icon-color);\\n  }\\n}\\n\\n:host([rank=\"tertiary\"]:active) {\\n  background-color: var(--button-normal-variant-tertiary-rank-pressed-state-background-color);\\n  color: var(--button-normal-variant-tertiary-rank-pressed-state-label-color);\\n}\\n\\n:host([rank=\"tertiary\"][icon-only]:active) {\\n  color: var(--icon-button-tertiary-rank-pressed-state-icon-color);\\n}\\n\\n:host([rank=\"tertiary\"][disabled]) {\\n  background-color: var(--button-normal-variant-tertiary-rank-disabled-state-background-color);\\n  color: var(--button-normal-variant-tertiary-rank-disabled-state-label-color);\\n}\\n\\n:host([rank=\"tertiary\"][icon-only][disabled]) {\\n  color: var(--icon-button-tertiary-rank-disabled-state-icon-color);\\n}\\n\\n/* destructive primary */\\n\\n:host([variant=\"destructive\"][rank=\"primary\"]) {\\n  background-color: var(--button-destructive-variant-primary-rank-normal-state-background-color);\\n  color: var(--button-destructive-variant-primary-rank-normal-state-label-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([variant=\"destructive\"][rank=\"primary\"]:hover) {\\n    background-color: var(--button-destructive-variant-primary-rank-hover-state-background-color);\\n    color: var(--button-destructive-variant-primary-rank-hover-state-label-color);\\n  }\\n}\\n\\n:host([variant=\"destructive\"][rank=\"primary\"]:active) {\\n  background-color: var(--button-destructive-variant-primary-rank-pressed-state-background-color);\\n  color: var(--button-destructive-variant-primary-rank-pressed-state-label-color);\\n}\\n\\n:host([variant=\"destructive\"][rank=\"primary\"][disabled]) {\\n  background-color: var(--button-destructive-variant-primary-rank-disabled-state-background-color);\\n  color: var(--button-destructive-variant-primary-rank-disabled-state-label-color);\\n}\\n\\n/* destructive secondary */\\n\\n:host([variant=\"destructive\"][rank=\"secondary\"]) {\\n  background-color: var(--button-destructive-variant-secondary-rank-normal-state-background-color);\\n  color: var(--button-destructive-variant-secondary-rank-normal-state-label-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([variant=\"destructive\"][rank=\"secondary\"]:hover) {\\n    background-color: var(--button-destructive-variant-secondary-rank-hover-state-background-color);\\n    color: var(--button-destructive-variant-secondary-rank-hover-state-label-color);\\n  }\\n}\\n\\n:host([variant=\"destructive\"][rank=\"secondary\"]:active) {\\n  background-color: var(--button-destructive-variant-secondary-rank-pressed-state-background-color);\\n  color: var(--button-destructive-variant-secondary-rank-pressed-state-label-color);\\n}\\n\\n:host([variant=\"destructive\"][rank=\"secondary\"][disabled]) {\\n  background-color: var(--button-destructive-variant-secondary-rank-disabled-state-background-color);\\n  color: var(--button-destructive-variant-secondary-rank-disabled-state-label-color);\\n}\\n\\n/* destructive tertiary */\\n\\n:host([variant=\"destructive\"][rank=\"tertiary\"]) {\\n  background-color: var(--button-destructive-variant-tertiary-rank-normal-state-background-color);\\n  color: var(--button-destructive-variant-tertiary-rank-normal-state-label-color);\\n}\\n\\n@media (hover: hover) {\\n  :host([variant=\"destructive\"][rank=\"tertiary\"]:hover) {\\n    background-color: var(--button-destructive-variant-tertiary-rank-hover-state-background-color);\\n    color: var(--button-destructive-variant-tertiary-rank-hover-state-label-color);\\n  }\\n}\\n\\n:host([variant=\"destructive\"][rank=\"tertiary\"]:active) {\\n  background-color: var(--button-destructive-variant-tertiary-rank-pressed-state-background-color);\\n  color: var(--button-destructive-variant-tertiary-rank-pressed-state-label-color);\\n}\\n\\n:host([variant=\"destructive\"][rank=\"tertiary\"][disabled]) {\\n  background-color: var(--button-destructive-variant-tertiary-rank-disabled-state-background-color);\\n  color: var(--button-destructive-variant-tertiary-rank-disabled-state-label-color);\\n}\\n\\n';\n\tconst MarketButtonStyle0 = marketButtonCss;\n\tconst MarketButton = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.handleImplicitSubmission = () => {\n\t      if (this.type === \"submit\") {\n\t        const form = this.el.closest(\"form\");\n\t        if (form) {\n\t          const fakeButton = document.createElement(\"button\");\n\t          fakeButton.type = this.type;\n\t          fakeButton.style.display = \"none\";\n\t          form.appendChild(fakeButton);\n\t          fakeButton.click();\n\t          fakeButton.remove();\n\t        }\n\t      }\n\t    };\n\t    this.onMutationObserved = (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    };\n\t    this.caret = \"none\";\n\t    this.disabled = false;\n\t    this.download = void 0;\n\t    this.focused = false;\n\t    this.href = void 0;\n\t    this.iconOnly = false;\n\t    this.innerTabindex = void 0;\n\t    this.isLoading = false;\n\t    this.rank = \"secondary\";\n\t    this.rel = void 0;\n\t    this.size = \"medium\";\n\t    this.target = void 0;\n\t    this.type = \"button\";\n\t    this.variant = \"regular\";\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  focusedChangeHandler(newValue) {\n\t    if (!this.innerTag) {\n\t      return;\n\t    }\n\t    if (newValue) {\n\t      this.innerTag.focus();\n\t    }\n\t  }\n\t  /* Listening for click events here allows us to stop bubbling when\n\t  disabled. Attaching listeners to Host (as the Stencil linter prefers),\n\t  seems to also work in Stencil tests, but fails in Ember for some reason.\n\t  We listen in the \"capture\" phase to ensure we're hit before any external\n\t  click handlers. See here for details:\n\t  https://www.sitepoint.com/event-bubbling-javascript/ */\n\t  handleClick(event) {\n\t    if (this.disabled || this.isLoading) {\n\t      event.stopImmediatePropagation();\n\t    }\n\t  }\n\t  /**\n\t   * Sets `focused` state, except when disabled. Allows external consumers to programmatically\n\t   * trigger focused styling.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    if (!value && this.innerTag) {\n\t      this.innerTag.blur();\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Replaces hardcoded #7B61FF colors in SVG fill and stroke attributes (from @market/icons library)\n\t   * with currentColor. This matches the behavior in the design tokens system (convertHexValuesTo).\n\t   */\n\t  convertSvgHexToCurrentColor(element) {\n\t    const svgs = element.tagName === \"svg\" ? [element] : [...element.querySelectorAll(\"svg\")];\n\t    svgs.forEach((svg) => {\n\t      const elementsWithFill = svg.querySelectorAll('[fill=\"#7B61FF\"], [fill=\"#7b61ff\"]');\n\t      const elementsWithStroke = svg.querySelectorAll('[stroke=\"#7B61FF\"], [stroke=\"#7b61ff\"]');\n\t      elementsWithFill.forEach((el) => {\n\t        el.setAttribute(\"fill\", \"currentColor\");\n\t      });\n\t      elementsWithStroke.forEach((el) => {\n\t        el.setAttribute(\"stroke\", \"currentColor\");\n\t      });\n\t    });\n\t  }\n\t  handleSlotChange() {\n\t    var _a, _b, _c, _d;\n\t    const iconSlot = this.el.querySelector('[slot=\"icon\"]');\n\t    const hasIcon = Boolean(iconSlot);\n\t    if (hasIcon) {\n\t      this.convertSvgHexToCurrentColor(iconSlot);\n\t    }\n\t    const buttonText = (_b = (_a = this.el.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : \"\";\n\t    const iconText = (_d = (_c = iconSlot === null || iconSlot === void 0 ? void 0 : iconSlot.textContent) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : \"\";\n\t    const hasLabelText = buttonText.length > iconText.length;\n\t    this.iconOnly = hasIcon && !hasLabelText;\n\t  }\n\t  componentWillLoad() {\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, this.onMutationObserved);\n\t    this.handleSlotChange();\n\t  }\n\t  render() {\n\t    const {\n\t      // props\n\t      caret,\n\t      disabled,\n\t      href,\n\t      innerTabindex,\n\t      isLoading,\n\t      target,\n\t      type,\n\t      rel,\n\t      download,\n\t      // state\n\t      ariaAttributes,\n\t      // methods\n\t      handleImplicitSubmission\n\t    } = this;\n\t    const TagType = href === void 0 ? \"button\" : \"a\";\n\t    const TagTypeAttrs = TagType === \"button\" ? { type, disabled } : { href, target, rel, download };\n\t    const MarketActivityIndicatorTagName = index$1.getNamespacedTagFor(\"market-activity-indicator\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    return index.h(index.Host, { key: \"9640d61dee7de39a76bcd38d35b337e5b4f03f6e\", class: \"market-button\", onClick: handleImplicitSubmission }, index.h(TagType, Object.assign({ key: \"7b57144fc75a6f9012255180e9157649421b6dbe\", class: \"inner-tag\" }, TagTypeAttrs, ariaAttributes, { tabindex: disabled ? -1 : innerTabindex, onFocus: () => {\n\t      this.focused = true;\n\t    }, onBlur: () => {\n\t      this.focused = false;\n\t    }, ref: (el) => this.innerTag = el }), index.h(\"slot\", { key: \"28f8817b1be18676d014f1b5a3640a662c31f2f3\", name: \"icon\", onSlotchange: () => this.handleSlotChange() }), index.h(\"span\", { key: \"4eb14ad43732a1000489a9729b6da51adb9498b0\", class: \"button-text\", part: \"button-text\" }, index.h(\"slot\", { key: \"5c9f0ce1a53cea1b6d4ad7c2d957fc9f7a6fae72\", onSlotchange: () => this.handleSlotChange() })), caret === \"down\" && index.h(MarketIconTagName, { key: \"eb65f10d6c2f7ed1f3b9ae0afab9c06cf2992b85\", name: \"expand\" }), caret === \"up\" && index.h(MarketIconTagName, { key: \"7886b76a7da513435799d3a57ef559bb45c953b2\", name: \"collapse\" })), isLoading && index.h(MarketActivityIndicatorTagName, { key: \"7c60302c9a3f245c2425112c5badcb0a2fe7b444\", size: \"small\" }));\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"focused\": [\"focusedChangeHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketButton.style = MarketButtonStyle0;\n\tmarketButton_cjs_entry.market_button = MarketButton;\n\treturn marketButton_cjs_entry;\n}\n\nvar marketButtonDropdown_cjs_entry = {};\n\nvar dropdownB9b27ed3 = {};\n\nvar hasRequiredDropdownB9b27ed3;\n\nfunction requireDropdownB9b27ed3 () {\n\tif (hasRequiredDropdownB9b27ed3) return dropdownB9b27ed3;\n\thasRequiredDropdownB9b27ed3 = 1;\n\tconst index = index254d04f0.requireIndex254d04f0();\n\tconst supportedDropdownTriggers = Object.freeze([\n\t  index.getNamespacedTagFor(\"market-button\"),\n\t  index.getNamespacedTagFor(\"market-link\"),\n\t  index.getNamespacedTagFor(\"market-filter-button\")\n\t]);\n\tdropdownB9b27ed3.supportedDropdownTriggers = supportedDropdownTriggers;\n\treturn dropdownB9b27ed3;\n}\n\nvar hasRequiredMarketButtonDropdown_cjs_entry;\n\nfunction requireMarketButtonDropdown_cjs_entry () {\n\tif (hasRequiredMarketButtonDropdown_cjs_entry) return marketButtonDropdown_cjs_entry;\n\thasRequiredMarketButtonDropdown_cjs_entry = 1;\n\tObject.defineProperty(marketButtonDropdown_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst dropdown = requireDropdownB9b27ed3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst v4 = requireV48e8d6fbc();\n\tconst marketButtonDropdownCss = \":host{display:inline-block}market-dropdown,.market-dropdown{width:100%}svg{fill:transparent}\";\n\tconst MarketButtonDropdownStyle0 = marketButtonDropdownCss;\n\tfunction isMarketButton(el) {\n\t  return el.tagName.toLowerCase() === index$1.getNamespacedTagFor(\"market-button\");\n\t}\n\tconst MarketButtonDropdown = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketButtonDropdownOpened = index.createEvent(this, \"marketButtonDropdownOpened\", 7);\n\t    this.marketButtonDropdownClosed = index.createEvent(this, \"marketButtonDropdownClosed\", 7);\n\t    this.onMutationObserved = (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    };\n\t    this.interaction = \"click\";\n\t    this.disabled = false;\n\t    this.noCaret = false;\n\t    this.popoverPlacement = \"bottom-end\";\n\t    this.popoverStrategy = \"absolute\";\n\t    this.persistListSelections = false;\n\t    this.dropdownIsActive = false;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  dropdownOpenedEventHandler(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    this.dropdownIsActive = true;\n\t    this.setCaret();\n\t    this.marketButtonDropdownOpened.emit();\n\t  }\n\t  dropdownClosedEventHandler(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    this.dropdownIsActive = false;\n\t    this.setCaret();\n\t    this.marketButtonDropdownClosed.emit();\n\t  }\n\t  syncTriggerDisabledState() {\n\t    if (this.slottedButton) {\n\t      this.slottedButton.disabled = this.disabled;\n\t    }\n\t  }\n\t  setCaret() {\n\t    if (this.noCaret || !isMarketButton(this.slottedButton)) {\n\t      return;\n\t    }\n\t    if (this.dropdownIsActive) {\n\t      this.slottedButton.caret = \"up\";\n\t    } else {\n\t      this.slottedButton.caret = \"down\";\n\t    }\n\t  }\n\t  registerTrigger() {\n\t    this.slottedButton = this.el.querySelector(dropdown.supportedDropdownTriggers.join(\",\"));\n\t    this.syncTriggerDisabledState();\n\t    this.setCaret();\n\t  }\n\t  componentWillLoad() {\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, this.onMutationObserved);\n\t  }\n\t  componentWillRender() {\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const list = this.el.querySelector(MarketListTagName);\n\t    const popoverContent = this.el.querySelector(`[slot=\"content\"]`);\n\t    if (list) {\n\t      list.interactive = true;\n\t      list.transient = !this.persistListSelections;\n\t    }\n\t    if (this.slottedButton) {\n\t      if (!popoverContent.id) {\n\t        popoverContent.id = `popover-${v4.v4()}`;\n\t      }\n\t      aria.applyExpandableAriaControls(this.slottedButton, {\n\t        expanded: this.dropdownIsActive.toString(),\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        popoverId: popoverContent.id\n\t      });\n\t    }\n\t  }\n\t  render() {\n\t    const MarketDropdownTagName = index$1.getNamespacedTagFor(\"market-dropdown\");\n\t    const MarketPopoverTagName = index$1.getNamespacedTagFor(\"market-popover\");\n\t    return index.h(index.Host, { key: \"228af1441dd4b388f9714ff50b6c1961d35e492a\", class: \"market-button-dropdown\" }, index.h(MarketDropdownTagName, { key: \"6f53ec59108690753048d1791d4714e328524ddf\", interaction: this.interaction, \"popover-strategy\": this.popoverStrategy, \"popover-placement\": this.popoverPlacement, disabled: this.disabled }, index.h(\"slot\", { key: \"d5fc0421344d648d5ea3d2162067cabc22adfd22\", name: \"trigger\", slot: \"trigger\", onSlotchange: () => this.registerTrigger() }), index.h(MarketPopoverTagName, { key: \"89b2dd2cd8c078cde996b024e5daa4ddf0e84225\", slot: \"popover\", part: \"popover\" }, index.h(\"slot\", { key: \"3156bf827b52995557e429e709682c505937e9ac\", name: \"content\" }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"disabled\": [\"syncTriggerDisabledState\"]\n\t    };\n\t  }\n\t};\n\tMarketButtonDropdown.style = MarketButtonDropdownStyle0;\n\tmarketButtonDropdown_cjs_entry.market_button_dropdown = MarketButtonDropdown;\n\treturn marketButtonDropdown_cjs_entry;\n}\n\nvar marketButtonGroup_cjs_entry = {};\n\nvar rafEa414557 = {};\n\nvar hasRequiredRafEa414557;\n\nfunction requireRafEa414557 () {\n\tif (hasRequiredRafEa414557) return rafEa414557;\n\thasRequiredRafEa414557 = 1;\n\tfunction asyncRequestAnimationFrame() {\n\t  return new Promise((resolve) => {\n\t    var _a;\n\t    ((_a = window === null || window === void 0 ? void 0 : window.requestAnimationFrame) === null || _a === void 0 ? void 0 : _a.call(window, () => resolve())) || resolve();\n\t  });\n\t}\n\trafEa414557.asyncRequestAnimationFrame = asyncRequestAnimationFrame;\n\treturn rafEa414557;\n}\n\nvar throttle88e2e29a = {};\n\nvar isObject7dcf0083 = {};\n\nvar hasRequiredIsObject7dcf0083;\n\nfunction requireIsObject7dcf0083 () {\n\tif (hasRequiredIsObject7dcf0083) return isObject7dcf0083;\n\thasRequiredIsObject7dcf0083 = 1;\n\tvar freeGlobal = typeof _commonjsHelpers.commonjsGlobal == \"object\" && _commonjsHelpers.commonjsGlobal && _commonjsHelpers.commonjsGlobal.Object === Object && _commonjsHelpers.commonjsGlobal;\n\tconst freeGlobal$1 = freeGlobal;\n\tvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n\tvar root = freeGlobal$1 || freeSelf || Function(\"return this\")();\n\tconst root$1 = root;\n\tvar Symbol = root$1.Symbol;\n\tconst Symbol$1 = Symbol;\n\tvar objectProto$1 = Object.prototype;\n\tvar hasOwnProperty = objectProto$1.hasOwnProperty;\n\tvar nativeObjectToString$1 = objectProto$1.toString;\n\tvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;\n\tfunction getRawTag(value) {\n\t  var isOwn = hasOwnProperty.call(value, symToStringTag$1), tag = value[symToStringTag$1];\n\t  try {\n\t    value[symToStringTag$1] = void 0;\n\t    var unmasked = true;\n\t  } catch (e) {\n\t  }\n\t  var result = nativeObjectToString$1.call(value);\n\t  if (unmasked) {\n\t    if (isOwn) {\n\t      value[symToStringTag$1] = tag;\n\t    } else {\n\t      delete value[symToStringTag$1];\n\t    }\n\t  }\n\t  return result;\n\t}\n\tvar objectProto = Object.prototype;\n\tvar nativeObjectToString = objectProto.toString;\n\tfunction objectToString(value) {\n\t  return nativeObjectToString.call(value);\n\t}\n\tvar nullTag = \"[object Null]\", undefinedTag = \"[object Undefined]\";\n\tvar symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0;\n\tfunction baseGetTag(value) {\n\t  if (value == null) {\n\t    return value === void 0 ? undefinedTag : nullTag;\n\t  }\n\t  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n\t}\n\tfunction isObjectLike(value) {\n\t  return value != null && typeof value == \"object\";\n\t}\n\tfunction isObject(value) {\n\t  var type = typeof value;\n\t  return value != null && (type == \"object\" || type == \"function\");\n\t}\n\tisObject7dcf0083.Symbol = Symbol$1;\n\tisObject7dcf0083.baseGetTag = baseGetTag;\n\tisObject7dcf0083.freeGlobal = freeGlobal$1;\n\tisObject7dcf0083.isObject = isObject;\n\tisObject7dcf0083.isObjectLike = isObjectLike;\n\tisObject7dcf0083.root = root$1;\n\treturn isObject7dcf0083;\n}\n\nvar isSymbolFbd13c73 = {};\n\nvar hasRequiredIsSymbolFbd13c73;\n\nfunction requireIsSymbolFbd13c73 () {\n\tif (hasRequiredIsSymbolFbd13c73) return isSymbolFbd13c73;\n\thasRequiredIsSymbolFbd13c73 = 1;\n\tconst isObject = requireIsObject7dcf0083();\n\tvar symbolTag = \"[object Symbol]\";\n\tfunction isSymbol(value) {\n\t  return typeof value == \"symbol\" || isObject.isObjectLike(value) && isObject.baseGetTag(value) == symbolTag;\n\t}\n\tisSymbolFbd13c73.isSymbol = isSymbol;\n\treturn isSymbolFbd13c73;\n}\n\nvar hasRequiredThrottle88e2e29a;\n\nfunction requireThrottle88e2e29a () {\n\tif (hasRequiredThrottle88e2e29a) return throttle88e2e29a;\n\thasRequiredThrottle88e2e29a = 1;\n\tconst isObject = requireIsObject7dcf0083();\n\tconst isSymbol = requireIsSymbolFbd13c73();\n\tvar reWhitespace = /\\s/;\n\tfunction trimmedEndIndex(string) {\n\t  var index = string.length;\n\t  while (index-- && reWhitespace.test(string.charAt(index))) {\n\t  }\n\t  return index;\n\t}\n\tvar reTrimStart = /^\\s+/;\n\tfunction baseTrim(string) {\n\t  return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, \"\") : string;\n\t}\n\tvar NAN = 0 / 0;\n\tvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\tvar reIsBinary = /^0b[01]+$/i;\n\tvar reIsOctal = /^0o[0-7]+$/i;\n\tvar freeParseInt = parseInt;\n\tfunction toNumber(value) {\n\t  if (typeof value == \"number\") {\n\t    return value;\n\t  }\n\t  if (isSymbol.isSymbol(value)) {\n\t    return NAN;\n\t  }\n\t  if (isObject.isObject(value)) {\n\t    var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n\t    value = isObject.isObject(other) ? other + \"\" : other;\n\t  }\n\t  if (typeof value != \"string\") {\n\t    return value === 0 ? value : +value;\n\t  }\n\t  value = baseTrim(value);\n\t  var isBinary = reIsBinary.test(value);\n\t  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n\t}\n\tvar now = function() {\n\t  return isObject.root.Date.now();\n\t};\n\tconst now$1 = now;\n\tvar FUNC_ERROR_TEXT$1 = \"Expected a function\";\n\tvar nativeMax = Math.max, nativeMin = Math.min;\n\tfunction debounce(func, wait, options) {\n\t  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n\t  if (typeof func != \"function\") {\n\t    throw new TypeError(FUNC_ERROR_TEXT$1);\n\t  }\n\t  wait = toNumber(wait) || 0;\n\t  if (isObject.isObject(options)) {\n\t    leading = !!options.leading;\n\t    maxing = \"maxWait\" in options;\n\t    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n\t    trailing = \"trailing\" in options ? !!options.trailing : trailing;\n\t  }\n\t  function invokeFunc(time) {\n\t    var args = lastArgs, thisArg = lastThis;\n\t    lastArgs = lastThis = void 0;\n\t    lastInvokeTime = time;\n\t    result = func.apply(thisArg, args);\n\t    return result;\n\t  }\n\t  function leadingEdge(time) {\n\t    lastInvokeTime = time;\n\t    timerId = setTimeout(timerExpired, wait);\n\t    return leading ? invokeFunc(time) : result;\n\t  }\n\t  function remainingWait(time) {\n\t    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n\t    return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n\t  }\n\t  function shouldInvoke(time) {\n\t    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n\t    return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n\t  }\n\t  function timerExpired() {\n\t    var time = now$1();\n\t    if (shouldInvoke(time)) {\n\t      return trailingEdge(time);\n\t    }\n\t    timerId = setTimeout(timerExpired, remainingWait(time));\n\t  }\n\t  function trailingEdge(time) {\n\t    timerId = void 0;\n\t    if (trailing && lastArgs) {\n\t      return invokeFunc(time);\n\t    }\n\t    lastArgs = lastThis = void 0;\n\t    return result;\n\t  }\n\t  function cancel() {\n\t    if (timerId !== void 0) {\n\t      clearTimeout(timerId);\n\t    }\n\t    lastInvokeTime = 0;\n\t    lastArgs = lastCallTime = lastThis = timerId = void 0;\n\t  }\n\t  function flush() {\n\t    return timerId === void 0 ? result : trailingEdge(now$1());\n\t  }\n\t  function debounced() {\n\t    var time = now$1(), isInvoking = shouldInvoke(time);\n\t    lastArgs = arguments;\n\t    lastThis = this;\n\t    lastCallTime = time;\n\t    if (isInvoking) {\n\t      if (timerId === void 0) {\n\t        return leadingEdge(lastCallTime);\n\t      }\n\t      if (maxing) {\n\t        clearTimeout(timerId);\n\t        timerId = setTimeout(timerExpired, wait);\n\t        return invokeFunc(lastCallTime);\n\t      }\n\t    }\n\t    if (timerId === void 0) {\n\t      timerId = setTimeout(timerExpired, wait);\n\t    }\n\t    return result;\n\t  }\n\t  debounced.cancel = cancel;\n\t  debounced.flush = flush;\n\t  return debounced;\n\t}\n\tvar FUNC_ERROR_TEXT = \"Expected a function\";\n\tfunction throttle(func, wait, options) {\n\t  var leading = true, trailing = true;\n\t  if (typeof func != \"function\") {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  if (isObject.isObject(options)) {\n\t    leading = \"leading\" in options ? !!options.leading : leading;\n\t    trailing = \"trailing\" in options ? !!options.trailing : trailing;\n\t  }\n\t  return debounce(func, wait, {\n\t    \"leading\": leading,\n\t    \"maxWait\": wait,\n\t    \"trailing\": trailing\n\t  });\n\t}\n\tthrottle88e2e29a.throttle = throttle;\n\tthrottle88e2e29a.toNumber = toNumber;\n\treturn throttle88e2e29a;\n}\n\nvar hasRequiredMarketButtonGroup_cjs_entry;\n\nfunction requireMarketButtonGroup_cjs_entry () {\n\tif (hasRequiredMarketButtonGroup_cjs_entry) return marketButtonGroup_cjs_entry;\n\thasRequiredMarketButtonGroup_cjs_entry = 1;\n\tObject.defineProperty(marketButtonGroup_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst index$2 = requireIndexC43effe9();\n\tconst raf = requireRafEa414557();\n\tconst throttle = requireThrottle88e2e29a();\n\trequireIsObject7dcf0083();\n\trequireIsSymbolFbd13c73();\n\tconst marketButtonGroupCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;flex-grow:1}.content{display:flex;flex:1;flex-flow:row nowrap;gap:var(--button-group-spacing)}:host([alignment=\"right\"]) .content{flex-direction:row-reverse}:host([alignment=\"left\"]) .content{justify-content:flex-start}:host([alignment=\"split\"]) .content{flex-direction:row-reverse;justify-content:flex-end}:host([alignment=\"split\"]) .content ::slotted(.market-button:first-of-type){margin-left:auto}:host([alignment=\"fill\"]) .content{flex-direction:row-reverse}:host([alignment=\"fill\"]) .content ::slotted(.market-button){flex:1}:host([alignment=\"stack\"]) .content{flex-direction:column}[slot=\"content\"]{display:flex;flex-direction:column;gap:var(--button-group-spacing)}::slotted([slot=\"overflow-buttons\"]){width:100%}';\n\tconst MarketButtonGroupStyle0 = marketButtonGroupCss;\n\tconst MAX_VISIBLE_BUTTONS = 2;\n\tconst DROPDOWN_MENU_BUTTON_WIDTH = 48;\n\tconst RESIZE_DEBOUNCE_DURATION = 16;\n\tconst MarketButtonGroup = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this._buttonEls = [];\n\t    this._observers = {};\n\t    this.throttledHandleResize = throttle.throttle(this.handleResize.bind(this), RESIZE_DEBOUNCE_DURATION);\n\t    this.alignment = \"right\";\n\t    this.popoverStrategy = \"absolute\";\n\t    this._sortedButtonEls = {\n\t      overflow: [],\n\t      visible: []\n\t    };\n\t  }\n\t  getComputedWidth(el) {\n\t    return Number.parseFloat(window.getComputedStyle(el).width);\n\t  }\n\t  /**\n\t   * Find out where the cutoff will happen.\n\t   * Main chunk of the overflow logic happens here\n\t   */\n\t  async findButtonCutoffIndex() {\n\t    if (this.alignment === \"stack\") {\n\t      return this._buttonEls.length;\n\t    }\n\t    const buttonGroupWidth = this.getComputedWidth(this.el);\n\t    const tempEl = document.createElement(\"div\");\n\t    tempEl.style.width = \"auto\";\n\t    tempEl.style.position = \"absolute\";\n\t    tempEl.style.visibility = \"hidden\";\n\t    this.el.shadowRoot.appendChild(tempEl);\n\t    let index2 = 0;\n\t    let buttonWidths = 0;\n\t    for (const buttonEl of this._buttonEls) {\n\t      if (index2 === MAX_VISIBLE_BUTTONS) {\n\t        break;\n\t      }\n\t      const dropdownMenuButtonWidth = index2 + 1 === this._buttonEls.length ? 0 : index$2.BUTTON_GROUP_SPACING + DROPDOWN_MENU_BUTTON_WIDTH;\n\t      const clonedButtonEl = buttonEl.cloneNode(true);\n\t      clonedButtonEl.style.display = \"block\";\n\t      tempEl.appendChild(clonedButtonEl);\n\t      await raf.asyncRequestAnimationFrame();\n\t      const buttonElWidth = this.getComputedWidth(tempEl);\n\t      tempEl.removeChild(clonedButtonEl);\n\t      buttonWidths += (index2 > 0 ? index$2.BUTTON_GROUP_SPACING : 0) + buttonElWidth;\n\t      const potentialWidth = buttonWidths + dropdownMenuButtonWidth;\n\t      if (potentialWidth >= buttonGroupWidth) {\n\t        break;\n\t      }\n\t      ++index2;\n\t    }\n\t    this.el.shadowRoot.removeChild(tempEl);\n\t    tempEl.remove();\n\t    return index2;\n\t  }\n\t  /**\n\t   * Sort buttons:\n\t   * - split by `this._buttonCutoffIndex`\n\t   * - visible buttons: remove attr `[slot=\"overflow-buttons\"]`; remove `display: none;`\n\t   * - overflow buttons: set attr `[slot=\"overflow-buttons\"]`; add `display: none;`\n\t   */\n\t  sortVisibleAndOverflowButtons() {\n\t    this._sortedButtonEls = {\n\t      visible: this._buttonEls.slice(0, this._buttonCutoffIndex),\n\t      overflow: this._buttonEls.slice(this._buttonCutoffIndex)\n\t    };\n\t    this._sortedButtonEls.visible.forEach((buttonEl) => {\n\t      if (buttonEl.getAttribute(\"slot\") === \"overflow-buttons\") {\n\t        buttonEl.removeAttribute(\"slot\");\n\t      }\n\t    });\n\t    this._sortedButtonEls.overflow.forEach((buttonEl) => {\n\t      if (buttonEl.getAttribute(\"slot\") !== \"overflow-buttons\") {\n\t        buttonEl.setAttribute(\"slot\", \"overflow-buttons\");\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Handle screen / component resize\n\t   */\n\t  async handleResize() {\n\t    if (!this.getComputedWidth(this.el)) {\n\t      return;\n\t    }\n\t    const index2 = await this.findButtonCutoffIndex();\n\t    const isButtonCutoffUpdated = index2 !== this._buttonCutoffIndex;\n\t    if (isButtonCutoffUpdated) {\n\t      this._buttonCutoffIndex = index2;\n\t      await raf.asyncRequestAnimationFrame();\n\t      this.sortVisibleAndOverflowButtons();\n\t    }\n\t    this.el.style.visibility = \"\";\n\t  }\n\t  registerSlottedButtons() {\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    this._buttonEls = [...this.el.querySelectorAll(MarketButtonTagName)];\n\t  }\n\t  observeContent(el) {\n\t    if (!this._observers.content) {\n\t      this._observers.content = new ResizeObserver(this.throttledHandleResize);\n\t      this._observers.content.observe(el);\n\t    }\n\t  }\n\t  connectedCallback() {\n\t    if (!this._observers.host) {\n\t      this._observers.host = new ResizeObserver(this.throttledHandleResize);\n\t      this._observers.host.observe(this.el);\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.el.style.visibility = \"hidden\";\n\t    this.registerSlottedButtons();\n\t    this.handleResize();\n\t  }\n\t  disconnectedCallback() {\n\t    Object.entries(this._observers).forEach(([key, observer]) => {\n\t      if (observer) {\n\t        observer.disconnect();\n\t        this._observers[key] = void 0;\n\t      }\n\t    });\n\t  }\n\t  render() {\n\t    const MarketButtonDropdownTagName = index$1.getNamespacedTagFor(\"market-button-dropdown\");\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    return index.h(index.Host, { key: \"0389d5bb9f81f8f85d74c6b460f3bb7d66ca7588\", class: \"market-button-group\" }, index.h(\"div\", { key: \"8eb49eb8582aec97f16f0d031f8ed46a8add47c8\", class: \"content\", ref: (el) => (\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      this.observeContent(el)\n\t    ) }, index.h(\"slot\", { key: \"d15ce37861d14b102fc97925454d935b1bd2c8f4\", onSlotchange: () => this.registerSlottedButtons() }), this._sortedButtonEls.overflow.length > 0 && index.h(MarketButtonDropdownTagName, { key: \"c929848a275978a2131588a6caef99b0efb2f60d\", \"no-caret\": true, \"popover-strategy\": this.popoverStrategy }, index.h(MarketButtonTagName, { key: \"858e4eb5128739105eaae119cb647fdc21b7f40e\", slot: \"trigger\" }, index.h(MarketIconTagName, { key: \"b0907e9b918512408fda6095d23d16afb9769fda\", slot: \"icon\", name: index$2.BUTTON_GROUP_OVERFLOW_BUTTON_ICON_ASSET })), index.h(\"div\", { key: \"1e6229edea3fefe924313335406c7573718d5519\", slot: \"content\" }, index.h(\"slot\", { key: \"14a0f0225fd1c790da66d1e299d7b3619c145638\", name: \"overflow-buttons\", slot: \"overflow-buttons\" })))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketButtonGroup.style = MarketButtonGroupStyle0;\n\tmarketButtonGroup_cjs_entry.market_button_group = MarketButtonGroup;\n\treturn marketButtonGroup_cjs_entry;\n}\n\nvar marketCheckbox_cjs_entry = {};\n\nvar hasRequiredMarketCheckbox_cjs_entry;\n\nfunction requireMarketCheckbox_cjs_entry () {\n\tif (hasRequiredMarketCheckbox_cjs_entry) return marketCheckbox_cjs_entry;\n\thasRequiredMarketCheckbox_cjs_entry = 1;\n\tObject.defineProperty(marketCheckbox_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst marketCheckboxCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--checkbox-offset:calc(-1 * var(--checkbox-border-size));--focus-ring-color:color-mix(in srgb, var(--checkbox-focus-ring-color) 100%, transparent);position:relative;display:inline-block;width:var(--checkbox-width);height:var(--checkbox-height);border:var(--checkbox-border-size) solid var(--checkbox-normal-state-normal-validity-unchecked-value-border-color);border-radius:var(--checkbox-border-radius);background-color:var(--checkbox-normal-state-normal-validity-unchecked-value-background-color)}input{position:absolute;top:var(--checkbox-offset);left:var(--checkbox-offset);width:var(--checkbox-width);height:var(--checkbox-height);margin:0;border-radius:var(--checkbox-border-radius);background:transparent;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus-visible{outline:var(--checkbox-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--checkbox-focus-ring-buffer-size)}svg{position:absolute;top:var(--checkbox-offset);left:var(--checkbox-offset);pointer-events:none}:host(:hover),:host([hovered]){border-color:var(--checkbox-hover-state-normal-validity-unchecked-value-border-color);background-color:var(--checkbox-hover-state-normal-validity-unchecked-value-background-color)}:host([focused]){border-color:var(--checkbox-focus-state-normal-validity-unchecked-value-border-color);background-color:var(--checkbox-focus-state-normal-validity-unchecked-value-background-color)}:host(:active),:host([active]){border-color:var(--checkbox-pressed-state-normal-validity-unchecked-value-border-color);background-color:var(--checkbox-pressed-state-normal-validity-unchecked-value-background-color)}:host([checked]){border-color:var(--checkbox-normal-state-normal-validity-checked-value-border-color);background-color:var(--checkbox-normal-state-normal-validity-checked-value-background-color)}:host([checked]) path{stroke:var(--checkbox-normal-state-normal-validity-checked-value-icon-color)}:host([checked]:hover),:host([checked][hovered]){border-color:var(--checkbox-hover-state-normal-validity-checked-value-border-color);background-color:var(--checkbox-hover-state-normal-validity-checked-value-background-color)}:host([checked]:hover) path,:host([checked][hovered]) path{stroke:var(--checkbox-hover-state-normal-validity-checked-value-icon-color)}:host([checked][focused]){border-color:var(--checkbox-focus-state-normal-validity-checked-value-border-color);background-color:var(--checkbox-focus-state-normal-validity-checked-value-background-color)}:host([checked][focused]) path{stroke:var(--checkbox-focus-state-normal-validity-checked-value-icon-color)}:host([checked]:active),:host([checked][active]){border-color:var(--checkbox-pressed-state-normal-validity-checked-value-border-color);background-color:var(--checkbox-pressed-state-normal-validity-checked-value-background-color)}:host([checked]:active) path,:host([checked][active]) path{stroke:var(--checkbox-pressed-state-normal-validity-checked-value-icon-color)}:host([indeterminate]){border-color:var(--checkbox-normal-state-normal-validity-indeterminate-value-border-color);background-color:var(--checkbox-normal-state-normal-validity-indeterminate-value-background-color)}:host([indeterminate]) path{stroke:var(--checkbox-normal-state-normal-validity-indeterminate-value-icon-color)}:host([indeterminate]:hover),:host([indeterminate][hovered]){border-color:var(--checkbox-hover-state-normal-validity-indeterminate-value-border-color);background-color:var(--checkbox-hover-state-normal-validity-indeterminate-value-background-color)}:host([indeterminate]:hover) path,:host([indeterminate][hovered]) path{stroke:var(--checkbox-hover-state-normal-validity-indeterminate-value-icon-color)}:host([indeterminate][focused]){border-color:var(--checkbox-focus-state-normal-validity-indeterminate-value-border-color);background-color:var(--checkbox-focus-state-normal-validity-indeterminate-value-background-color)}:host([indeterminate][focused]) path{stroke:var(--checkbox-focus-state-normal-validity-indeterminate-value-icon-color)}:host([indeterminate]:active),:host([indeterminate][active]){border-color:var(--checkbox-pressed-state-normal-validity-indeterminate-value-border-color);background-color:var(--checkbox-pressed-state-normal-validity-indeterminate-value-background-color)}:host([indeterminate]:active) path,:host([indeterminate][active]) path{stroke:var(--checkbox-pressed-state-normal-validity-indeterminate-value-icon-color)}:host([invalid]){border-color:var(--checkbox-normal-state-invalid-validity-unchecked-value-border-color);background-color:var(--checkbox-normal-state-invalid-validity-unchecked-value-background-color)}:host([invalid]:hover){border-color:var(--checkbox-hover-state-invalid-validity-unchecked-value-border-color);background-color:var(--checkbox-hover-state-invalid-validity-unchecked-value-background-color)}:host([invalid][focused]){border-color:var(--checkbox-focus-state-invalid-validity-unchecked-value-border-color);background-color:var(--checkbox-focus-state-invalid-validity-unchecked-value-background-color)}:host([invalid]:active){border-color:var(--checkbox-pressed-state-invalid-validity-unchecked-value-border-color);background-color:var(--checkbox-pressed-state-invalid-validity-unchecked-value-background-color)}:host([invalid][checked]){border-color:var(--checkbox-normal-state-invalid-validity-checked-value-border-color);background-color:var(--checkbox-normal-state-invalid-validity-checked-value-background-color)}:host([invalid][checked]) path{stroke:var(--checkbox-normal-state-invalid-validity-checked-value-icon-color)}:host([invalid][checked]:hover){border-color:var(--checkbox-hover-state-invalid-validity-checked-value-border-color);background-color:var(--checkbox-hover-state-invalid-validity-checked-value-background-color)}:host([invalid][checked]:hover) path{stroke:var(--checkbox-hover-state-invalid-validity-checked-value-icon-color)}:host([invalid][checked][focused]){border-color:var(--checkbox-focus-state-invalid-validity-checked-value-border-color);background-color:var(--checkbox-focus-state-invalid-validity-checked-value-background-color)}:host([invalid][checked][focused]) path{stroke:var(--checkbox-focus-state-invalid-validity-checked-value-icon-color)}:host([invalid][checked]:active){border-color:var(--checkbox-pressed-state-invalid-validity-checked-value-border-color);background-color:var(--checkbox-pressed-state-invalid-validity-checked-value-background-color)}:host([invalid][checked]:active) path{stroke:var(--checkbox-pressed-state-invalid-validity-checked-value-icon-color)}:host([invalid][indeterminate]){border-color:var(--checkbox-normal-state-invalid-validity-indeterminate-value-border-color);background-color:var(--checkbox-normal-state-invalid-validity-indeterminate-value-background-color)}:host([invalid][indeterminate]) path{stroke:var(--checkbox-normal-state-invalid-validity-indeterminate-value-icon-color)}:host([invalid][indeterminate]:hover){border-color:var(--checkbox-hover-state-invalid-validity-indeterminate-value-border-color);background-color:var(--checkbox-hover-state-invalid-validity-indeterminate-value-background-color)}:host([invalid][indeterminate]:hover) path{stroke:var(--checkbox-hover-state-invalid-validity-indeterminate-value-icon-color)}:host([invalid][indeterminate][focused]){border-color:var(--checkbox-focus-state-invalid-validity-indeterminate-value-border-color);background-color:var(--checkbox-focus-state-invalid-validity-indeterminate-value-background-color)}:host([invalid][indeterminate]:active){border-color:var(--checkbox-pressed-state-invalid-validity-indeterminate-value-border-color);background-color:var(--checkbox-pressed-state-invalid-validity-indeterminate-value-background-color)}:host([invalid][indeterminate]:active) path{stroke:var(--checkbox-pressed-state-invalid-validity-indeterminate-value-icon-color)}:host([disabled]){border-color:var(--checkbox-disabled-state-normal-validity-unchecked-value-border-color);background-color:var(--checkbox-disabled-state-normal-validity-unchecked-value-background-color);cursor:not-allowed}:host([disabled]) input{cursor:not-allowed}:host([checked][disabled]){border-color:var(--checkbox-disabled-state-normal-validity-checked-value-border-color);background-color:var(--checkbox-disabled-state-normal-validity-checked-value-background-color)}:host([checked][disabled]) path{stroke:var(--checkbox-disabled-state-normal-validity-checked-value-icon-color)}:host([indeterminate][disabled]){border-color:var(--checkbox-disabled-state-normal-validity-indeterminate-value-border-color);background-color:var(--checkbox-disabled-state-normal-validity-indeterminate-value-background-color)}:host([indeterminate][disabled]) path{stroke:var(--checkbox-disabled-state-normal-validity-indeterminate-value-icon-color)}\";\n\tconst MarketCheckboxStyle0 = marketCheckboxCss;\n\tconst MarketCheckbox = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketCheckboxValueChange = index.createEvent(this, \"marketCheckboxValueChange\", 7);\n\t    this.checked = false;\n\t    this.disabled = false;\n\t    this.indeterminate = false;\n\t    this.invalid = false;\n\t    this.focused = false;\n\t    this.hovered = false;\n\t    this.active = false;\n\t  }\n\t  /**\n\t   * Toggles `checked` prop, and emits a change event accordingly.\n\t   * Used by `market-row` to sync its selected state w/ slotted checkboxes.\n\t   */\n\t  setSelection(newValue, { silent = false } = {}) {\n\t    const { marketCheckboxValueChange, checked: prevValue, innerInput } = this;\n\t    if (typeof newValue !== \"boolean\")\n\t      return Promise.resolve();\n\t    this.indeterminate = false;\n\t    if (prevValue === newValue)\n\t      return Promise.resolve();\n\t    if (!silent) {\n\t      const { defaultPrevented } = marketCheckboxValueChange.emit({\n\t        current: newValue,\n\t        previous: prevValue\n\t      });\n\t      if (defaultPrevented) {\n\t        return Promise.resolve();\n\t      }\n\t    }\n\t    this.checked = newValue;\n\t    if (innerInput) {\n\t      innerInput.checked = newValue;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Toggles `indeterminate` prop. Operates independently of the `checked` property but if `true`,\n\t   * indeterminate visual appearance takes precedence over checked/unchecked.\n\t   */\n\t  setIndeterminate(newValue) {\n\t    this.indeterminate = newValue;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * DEPRECATED (3.x): Toggles `selected` state (unrelated to the HTML attribute `value`).\n\t   */\n\t  setValue(newValue) {\n\t    console.warn(\"market-checkbox's setValue() method has been deprecated. Use setSelection() instead.\", this.el);\n\t    this.setSelection(newValue);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `active` state. Allows external elements to programmatically\n\t   * trigger active styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setActive(value) {\n\t    this.active = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `hovered` state. Allows external elements to programmatically\n\t   * trigger hover styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setHover(value) {\n\t    this.hovered = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `disabled` state. Allows external elements to programmatically\n\t   * trigger disabled styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setDisabled(value) {\n\t    this.disabled = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `focused` state, except when disabled.\n\t   * Allows external consumers to programmatically\n\t   * trigger focused styling.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    return Promise.resolve();\n\t  }\n\t  handleClick(event) {\n\t    event.preventDefault();\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    this.setFocus();\n\t    this.setSelection(!this.checked);\n\t  }\n\t  getCheckedState() {\n\t    return this.indeterminate ? \"indeterminate\" : this.checked;\n\t  }\n\t  componentDidRender() {\n\t    if (!this.innerInput) {\n\t      this.innerInput = this.el.shadowRoot.querySelector(\"input\");\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"c5e4b4f365f110b92af25bfc32ea9681f9736bc7\", class: \"market-checkbox\", onBlur: () => {\n\t      this.setFocus(false);\n\t    }, onClick: this.handleClick, onFocus: () => {\n\t      this.setFocus();\n\t    } }, index.h(\"input\", {\n\t      key: \"a181f4af7a553282fe545ad090ef6382e0223b2d\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.innerInput = el,\n\t      type: \"checkbox\",\n\t      \"aria-label\": aria.getControlInputAriaLabel(this.el),\n\t      checked: this.checked,\n\t      indeterminate: this.indeterminate,\n\t      disabled: this.disabled\n\t    }), this.checked && !this.indeterminate && index.h(\"svg\", { key: \"c625d0c1b712c3876fc90d87aba00d0a74b90940\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", \"data-testid\": \"check\" }, index.h(\"path\", { key: \"2d0f8d0737793991a299097e29b6523786152086\", d: \"M6 10L8.85714 13L14 7\", stroke: \"white\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\" })), this.indeterminate && index.h(\"svg\", { key: \"d47931ae88319729e581a7c77df3d5fc314756e0\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", \"data-testid\": \"indeterminate\" }, index.h(\"path\", { key: \"9af8092d8e894540d757b05be7aa0992928a0243\", d: \"M6 10H14\", \"stroke-width\": \"2\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketCheckbox.style = MarketCheckboxStyle0;\n\tmarketCheckbox_cjs_entry.market_checkbox = MarketCheckbox;\n\treturn marketCheckbox_cjs_entry;\n}\n\nvar marketChoiceButton_cjs_entry = {};\n\nvar hasRequiredMarketChoiceButton_cjs_entry;\n\nfunction requireMarketChoiceButton_cjs_entry () {\n\tif (hasRequiredMarketChoiceButton_cjs_entry) return marketChoiceButton_cjs_entry;\n\thasRequiredMarketChoiceButton_cjs_entry = 1;\n\tObject.defineProperty(marketChoiceButton_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketChoiceButtonCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--transition-duration:var(--core-animation-enter-transition-moderate-speed-duration);--focus-ring-color:color-mix(in srgb, var(--choice-button-focus-ring-color) 100%, transparent);position:relative;display:inline-block;border-radius:var(--choice-button-border-radius);background-color:var(--choice-button-unselected-value-normal-state-background-color);color:var(--choice-button-unselected-value-normal-state-label-color);cursor:pointer;transition:background-color color var(--transition-duration)}button{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;width:100%;margin:0;padding:0;border:none;border-radius:var(--choice-button-border-radius);background-color:transparent;color:inherit;outline:none;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;text-align:center;cursor:inherit}button:focus-visible{outline:var(--choice-button-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--choice-button-focus-ring-buffer-size)}::slotted([slot=\"secondary-text\"]){cursor:inherit}:host([size=\"medium\"]) button{padding:var(--choice-button-medium-size-vertical-padding) var(--choice-button-medium-size-horizontal-padding);font-weight:var(--choice-button-medium-size-text-primary-weight);font-size:var(--choice-button-medium-size-text-primary-size);line-height:var(--choice-button-medium-size-text-primary-leading);letter-spacing:var(--choice-button-medium-size-text-primary-tracking);text-transform:var(--choice-button-medium-size-text-primary-case);-moz-column-gap:var(--choice-button-medium-size-content-spacing);column-gap:var(--choice-button-medium-size-content-spacing)}:host([size=\"medium\"]) ::slotted([slot=\"secondary-text\"]){font-weight:var(--choice-button-medium-size-text-secondary-weight);font-size:var(--choice-button-medium-size-text-secondary-size);line-height:var(--choice-button-medium-size-text-secondary-leading);letter-spacing:var(--choice-button-medium-size-text-secondary-tracking);text-transform:var(--choice-button-medium-size-text-secondary-case)}:host([size=\"small\"]) button{padding:var(--choice-button-small-size-vertical-padding) var(--choice-button-small-size-horizontal-padding);font-weight:var(--choice-button-small-size-text-primary-weight);font-size:var(--choice-button-small-size-text-primary-size);line-height:var(--choice-button-small-size-text-primary-leading);letter-spacing:var(--choice-button-small-size-text-primary-tracking);text-transform:var(--choice-button-small-size-text-primary-case);-moz-column-gap:var(--choice-button-small-size-content-spacing);column-gap:var(--choice-button-small-size-content-spacing)}:host([size=\"small\"]) ::slotted([slot=\"secondary-text\"]){font-weight:var(--choice-button-small-size-text-secondary-weight);font-size:var(--choice-button-small-size-text-secondary-size);line-height:var(--choice-button-small-size-text-secondary-leading);letter-spacing:var(--choice-button-small-size-text-secondary-tracking);text-transform:var(--choice-button-small-size-text-secondary-case)}:host([size=\"large\"]) button{padding:var(--choice-button-large-size-vertical-padding) var(--choice-button-large-size-horizontal-padding);font-weight:var(--choice-button-large-size-text-primary-weight);font-size:var(--choice-button-large-size-text-primary-size);line-height:var(--choice-button-large-size-text-primary-leading);letter-spacing:var(--choice-button-large-size-text-primary-tracking);text-transform:var(--choice-button-large-size-text-primary-case);-moz-column-gap:var(--choice-button-large-size-content-spacing);column-gap:var(--choice-button-large-size-content-spacing)}:host([size=\"large\"]) ::slotted([slot=\"secondary-text\"]){font-weight:var(--choice-button-large-size-text-secondary-weight);font-size:var(--choice-button-large-size-text-secondary-size);line-height:var(--choice-button-large-size-text-secondary-leading);letter-spacing:var(--choice-button-large-size-text-secondary-tracking);text-transform:var(--choice-button-large-size-text-secondary-case)}@media (hover: hover){:host(:hover){background-color:var(--choice-button-unselected-value-hover-state-background-color);color:var(--choice-button-unselected-value-hover-state-label-color)}}:host(:active){background-color:var(--choice-button-unselected-value-pressed-state-background-color);color:var(--choice-button-unselected-value-pressed-state-label-color)}:host([disabled]){background-color:var(--choice-button-unselected-value-disabled-state-background-color);color:var(--choice-button-unselected-value-disabled-state-label-color)}:host([selected]){background-color:var(--choice-button-selected-value-normal-state-background-color);color:var(--choice-button-selected-value-normal-state-label-color)}@media (hover: hover){:host([selected]:hover){background-color:var(--choice-button-selected-value-hover-state-background-color);color:var(--choice-button-selected-value-hover-state-label-color)}}:host([selected]:active){background-color:var(--choice-button-selected-value-pressed-state-background-color);color:var(--choice-button-selected-value-pressed-state-label-color)}:host([selected][disabled]){background-color:var(--choice-button-selected-value-disabled-state-background-color);color:var(--choice-button-selected-value-disabled-state-label-color)}';\n\tconst MarketChoiceButtonStyle0 = marketChoiceButtonCss;\n\tconst MarketChoiceButton = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketChoiceButtonSelected = index.createEvent(this, \"marketChoiceButtonSelected\", 7);\n\t    this.marketChoiceButtonDeselected = index.createEvent(this, \"marketChoiceButtonDeselected\", 7);\n\t    this.disabled = false;\n\t    this.selected = false;\n\t    this.size = \"medium\";\n\t  }\n\t  onClick(e) {\n\t    if (this.disabled) {\n\t      e.stopImmediatePropagation();\n\t      return;\n\t    }\n\t    const { defaultPrevented } = this.selected ? this.marketChoiceButtonDeselected.emit() : this.marketChoiceButtonSelected.emit();\n\t    if (defaultPrevented) {\n\t      return;\n\t    }\n\t    this.selected = !this.selected;\n\t  }\n\t  render() {\n\t    const { disabled } = this;\n\t    return index.h(index.Host, { key: \"58dc327ff12f9cd950c8c9b8e5b9e4a1c8398a9b\", class: \"market-choice-button\", tabindex: disabled ? -1 : void 0, onClick: (e) => {\n\t      this.onClick(e);\n\t    } }, index.h(\"button\", { key: \"f458ddbbe9b852683e70962e6c431d00476cf5eb\", \"aria-disabled\": disabled }, index.h(\"slot\", { key: \"153f1b90e3b29cb8784ccdfc92ec4c549a90a52d\" }), index.h(\"slot\", { key: \"e59116c5891043e590d80a43f0060ed1fc503c1c\", name: \"secondary-text\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketChoiceButton.style = MarketChoiceButtonStyle0;\n\tmarketChoiceButton_cjs_entry.market_choice_button = MarketChoiceButton;\n\treturn marketChoiceButton_cjs_entry;\n}\n\nvar marketCodeDisplay_cjs_entry = {};\n\nvar hasRequiredMarketCodeDisplay_cjs_entry;\n\nfunction requireMarketCodeDisplay_cjs_entry () {\n\tif (hasRequiredMarketCodeDisplay_cjs_entry) return marketCodeDisplay_cjs_entry;\n\thasRequiredMarketCodeDisplay_cjs_entry = 1;\n\tObject.defineProperty(marketCodeDisplay_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketCodeDisplayCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;justify-content:space-between;align-items:center;width:-moz-min-content;width:min-content;min-width:var(--code-display-width, 320px);min-height:var(--code-display-height, 48px);margin:var(--code-display-margin, 12px);padding:var(--code-display-padding-vertical, 12px)\\n    var(--code-display-padding-right, 16px)\\n    var(--code-display-padding-vertical, 12px)\\n    var(--code-display-zero-value, 0);border-radius:var(--code-display-border-radius, 6px);background-color:var(--code-display-background-color, var(--core-fill-40-color));font-weight:var(--code-display-code-font-weight, var(--core-type-bold-weight));font-size:var(--code-display-code-font-size, var(--core-type-heading-20-size));font-family:var(--code-display-font-family, var(--core-type-font-family));font-feature-settings:\"tnum\"}:host(:not([disabled])) button:hover,:host ::slotted(button:hover),:host ::slotted(a:hover){color:var(--text-link-normal-variant-hover-state-color)}:host(:not([disabled])) button:active,:host ::slotted(button:active),:host ::slotted(a:active){color:var(--text-link-normal-variant-pressed-state-color)}:host([disabled]){color:var(--code-display-disabled-text-color, var(--core-text-30-color));}:host([disabled]) ::slotted(button),:host ::slotted(a){color:var(--text-link-normal-variant-disabled-state-color)}:host .code-container{display:flex;flex-grow:2;justify-content:space-between;min-width:var(--code-display-code-container-min-width, 269px)}:host .code-char{flex-basis:100%;font-family:var(--core-type-mono-font-family, monospace);text-align:center}:host .actions-container{display:flex;justify-content:center;align-items:center}:host .actions-container ::slotted([slot=\"actions\"]:not(:last-child)){margin-right:var(--code-display-extra-actions-margin-right, 25px)}:host .actions-container ::slotted([slot=\"actions\"]:not(:last-child))::after{content:\"\";display:inline-block;width:var(--code-display-button-separator-width, 1px);height:var(--code-display-button-separator-height, 8px);margin-right:var(--code-display-separator-margin-right, -13px);margin-left:var(--code-display-button-content-spacing, 12px);background-color:var(--code-display-button-separator-color, var(--core-fill-10-color));opacity:var(--code-display-button-separator-opacity, 30%);pointer-events:none}:host button,:host ::slotted(button),:host ::slotted(a){margin:var(--code-display-zero-value, 0);padding:var(--code-display-zero-value, 0);border:none;background-color:transparent;color:var(--text-link-normal-variant-normal-state-color);font-weight:var(--code-display-button-font-weight, var(--core-type-semibold-weight));font-size:var(--code-display-button-font-size, var(--core-type-paragraph-20-size));font-family:inherit;line-height:var(--code-display-button-line-height, var(--core-type-paragraph-20-leading));text-decoration:none;cursor:pointer}@media only screen and (max-width: 320px){:host{flex-wrap:wrap;width:100%;min-width:var(--code-display-zero-value, 0)}:host .code-container{min-width:var(--code-display-zero-value, 0)}}';\n\tconst MarketCodeDisplayStyle0 = marketCodeDisplayCss;\n\tconst CODE_GROUP_LEN = 4;\n\tconst MarketCodeDisplay = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketCodeCopied = index.createEvent(this, \"marketCodeCopied\", 7);\n\t    this.code = \"\";\n\t    this.codeChars = [];\n\t    this.disabled = false;\n\t    this.focused = false;\n\t  }\n\t  /**\n\t   * Component Lifecycle Event:\n\t   * Grab the code and its len from inputted code slot.\n\t   * Set relevant props and insert the Copy button programmatically so that it appears in the light DOM.\n\t   */\n\t  componentWillLoad() {\n\t    const slottedCodeTag = this.el.querySelector(\"[slot=code]\");\n\t    const code = slottedCodeTag.textContent;\n\t    this.code = code.replace(/\\s/g, \"\");\n\t    this.initCodeChars(this.code);\n\t    this.copyButton = document.createElement(\"button\");\n\t    Object.assign(this.copyButton, {\n\t      slot: \"actions\",\n\t      type: \"button\",\n\t      tabIndex: this.disabled ? -1 : 0,\n\t      onclick: () => this.copyToClipboard()\n\t    });\n\t    if (this.el.querySelector(\"[slot=copy-text]\")) {\n\t      const slottedCopyText = this.el.querySelector(\"[slot=copy-text]\");\n\t      const copyText = slottedCopyText.textContent;\n\t      this.copyButton.innerHTML = copyText;\n\t      slottedCopyText.insertAdjacentElement(\"afterend\", this.copyButton);\n\t    } else {\n\t      this.copyButton.innerHTML = `Copy`;\n\t      slottedCodeTag.insertAdjacentElement(\"afterend\", this.copyButton);\n\t    }\n\t  }\n\t  /**\n\t   * Inits this.codeChars to an array of <span> tags containing each character in the code string.\n\t   * Additionally contains empty strings at certain indices based on codeLen.\n\t   * By default, blanks are only placed at the front & back of the array.\n\t   *    ['', 'x', 'x', 'x', 'x', '']\n\t   * If codeLen is divisible by 4, put blanks every 4 spots too.\n\t   *    ['', 'x', 'x', 'x', 'x', '', 'x', 'x', 'x', 'x', '']\n\t   * The exception to this is if codeLen===4, in which case we use the default.\n\t   * This codeChars arr is used in render() to space and style characters appropriately.\n\t   * Called only once on componentWillLoad() as to not cause re-renders\n\t   */\n\t  initCodeChars(code) {\n\t    const codeLen = code.length;\n\t    const BLANK_CODE_SPAN = index.h(\"span\", { class: \"code-char\" });\n\t    if (codeLen !== CODE_GROUP_LEN && codeLen % CODE_GROUP_LEN === 0) {\n\t      for (let i = 0; i < codeLen; i++) {\n\t        if (i % CODE_GROUP_LEN === 0)\n\t          this.codeChars.push(BLANK_CODE_SPAN);\n\t        this.codeChars.push(index.h(\"span\", { class: \"code-char\" }, code[i]));\n\t      }\n\t    } else {\n\t      this.codeChars.push(BLANK_CODE_SPAN);\n\t      for (let i = 0; i < codeLen; i++) {\n\t        this.codeChars.push(index.h(\"span\", { class: \"code-char\" }, code[i]));\n\t      }\n\t    }\n\t    this.codeChars.push(BLANK_CODE_SPAN);\n\t  }\n\t  /**\n\t   * When user presses the 'Copy' button, copy code to clipboard & emit an event.\n\t   */\n\t  copyToClipboard() {\n\t    navigator.clipboard.writeText(this.code);\n\t    this.marketCodeCopied.emit();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"ac9765115585210fb8624bd0f1faebfe72525a70\", class: \"market-code-display\", tabIndex: this.disabled ? null : 0, \"aria-label\": this.code }, index.h(\"span\", { key: \"613d2dda798418a275d9fa95e421dc13348e0f80\", class: \"code-container\" }, this.codeChars), index.h(\"span\", { key: \"90723911fd2969e5a71258a5919bd0daf8d9acbb\", class: \"actions-container\" }, index.h(\"slot\", { key: \"162af8e5066006fe9199beb57c8e438ac5080f24\", name: \"actions\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketCodeDisplay.style = MarketCodeDisplayStyle0;\n\tmarketCodeDisplay_cjs_entry.market_code_display = MarketCodeDisplay;\n\treturn marketCodeDisplay_cjs_entry;\n}\n\nvar marketCodeInput_cjs_entry = {};\n\nvar hasRequiredMarketCodeInput_cjs_entry;\n\nfunction requireMarketCodeInput_cjs_entry () {\n\tif (hasRequiredMarketCodeInput_cjs_entry) return marketCodeInput_cjs_entry;\n\thasRequiredMarketCodeInput_cjs_entry = 1;\n\tObject.defineProperty(marketCodeInput_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketCodeInputCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;outline:none;font-weight:var(--field-input-weight);font-size:var(--field-input-size);line-height:var(--field-input-leading);cursor:text}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;cursor:inherit}:host input,:host ::slotted(input){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::slotted(label){cursor:inherit}:host input:focus,:host ::slotted(input:focus),:host textarea:focus,:host ::slotted(textarea:focus){outline:none}:host input::-moz-placeholder,:host textarea::-moz-placeholder{color:var(--field-placeholder-text-color)}:host input::placeholder,:host textarea::placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::-moz-placeholder,:host ::slotted(textarea)::-moz-placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::placeholder,:host ::slotted(textarea)::placeholder{color:var(--field-placeholder-text-color)}:host([size='small']){font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}:host{border-radius:var(--field-border-radius);background-color:var(--field-normal-state-background-color);color:var(--field-normal-state-input-color)}:host::after{content:\"\";position:absolute;inset:0;border-radius:var(--field-border-radius);box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color);pointer-events:none}:host([invalid])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-invalid-validity-border-color)}:host(:hover){background-color:var(--field-hover-state-background-color);color:var(--field-hover-state-input-color)}:host(:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-normal-validity-border-color)}:host([invalid]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-invalid-validity-border-color)}:host([focused]){color:var(--field-focus-state-input-color)}:host([focused])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size)\n        var(--field-focus-state-normal-validity-border-color)}:host([focused][invalid])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size) var(--field-focus-state-invalid-validity-border-color)}:host([readonly]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color)}:host([disabled]){background-color:var(--field-disabled-state-background-color) !important;color:var(--field-disabled-state-input-color) !important;cursor:not-allowed !important}:host([disabled])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-disabled-state-border-color) !important}:host([disabled]) ::slotted(.market-accessory),:host([disabled]) ::slotted(img[slot*=\"accessory\"]),:host([disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([disabled]) ::slotted(div[slot*=\"accessory\"]){--field-disabled-state-accessory-opacity:var(--row-disabled-state-leading-accessory-opacity);opacity:var(--field-disabled-state-accessory-opacity)}:host([value=\"\"]) ::slotted(label){color:var(--field-normal-state-empty-phase-label-color)}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"][autofilled]) ::slotted(label){color:var(--field-normal-state-float-phase-label-color)}:host(:hover) ::slotted(label){color:var(--field-hover-state-empty-phase-label-color)}:host(:not([value=\"\"]):hover) ::slotted(label),:host([value=\"\"][autofilled]:hover) ::slotted(label){color:var(--field-hover-state-float-phase-label-color)}:host([focused]) ::slotted(label){color:var(--field-focus-state-float-phase-label-color)}:host([value=\"\"][disabled]) ::slotted(label){color:var(--field-disabled-state-empty-phase-label-color)}:host(:not([value=\"\"])[disabled]) ::slotted(label),:host([value=\"\"][autofilled][disabled]) ::slotted(label){color:var(--field-disabled-state-float-phase-label-color)}:host{display:flex;align-items:center;height:var(--input-code-height, 64px)}:host input{font-weight:var(--input-code-font-weight, var(--core-type-bold-weight));font-family:var(--core-type-mono-font-family, monospace);text-align:center}:host input:-webkit-autofill,:host input:-webkit-autofill:hover,:host input:-webkit-autofill:focus{box-shadow:0 0 0 calc(var(--input-code-height, 64px) / 2) var(--field-normal-state-background-color) inset}:host input::-moz-placeholder{color:var(--input-code-placeholder-color, var(--core-fill-30-color));font-size:var(--input-code-placeholder-font-size, 24px)}:host input::placeholder{color:var(--input-code-placeholder-color, var(--core-fill-30-color));font-size:var(--input-code-placeholder-font-size, 24px)}.code-input-container{display:flex;justify-content:center;width:100%;height:100%}.code-input-container::before,.code-input-container::after{content:\"\";flex-basis:100%;pointer-events:none}::slotted([slot=\"trailing-accessory\"]){margin-right:var(--input-code-trailing-accessory-spacing, 12px)}`;\n\tconst MarketCodeInputStyle0 = marketCodeInputCss;\n\tconst MarketCodeInput = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketCodeInputValueChange = index.createEvent(this, \"marketCodeInputValueChange\", 7);\n\t    this.type = \"number\";\n\t    this.name = void 0;\n\t    this.length = 4;\n\t    this.focused = false;\n\t    this.value = \"\";\n\t    this.readonly = false;\n\t    this.invalid = false;\n\t    this.disabled = false;\n\t    this._code = void 0;\n\t  }\n\t  valueChangeHandler(value) {\n\t    const sanitized = this.sanitizeValue(value);\n\t    if (this.value !== sanitized) {\n\t      this.value = sanitized;\n\t    }\n\t    this.setInputsFromValue(this.value);\n\t  }\n\t  /**\n\t   * Trigger focus styling on `<market-input-text>`\n\t   * and focus the cursor on the first empty `<input />`.\n\t   */\n\t  setFocus(value = true) {\n\t    var _a;\n\t    this.focused = value;\n\t    if (value) {\n\t      this.focusFirstEmptyInput();\n\t    } else {\n\t      (_a = this.el.shadowRoot.activeElement) === null || _a === void 0 ? void 0 : _a.blur();\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  isNumber(value) {\n\t    return /^\\d+$/.test(value);\n\t  }\n\t  isValidChar(char) {\n\t    if (/\\s/.test(char))\n\t      return false;\n\t    return [\"text\", \"password\"].includes(this.type) || this.isNumber(char);\n\t  }\n\t  focusFirstEmptyInput() {\n\t    const inputs = this.el.shadowRoot.querySelectorAll(\"input\");\n\t    let input;\n\t    inputs.forEach((i) => {\n\t      if (!i.value && !input)\n\t        input = i;\n\t    });\n\t    if (!input)\n\t      input = inputs[this.length - 1];\n\t    input.focus();\n\t  }\n\t  /**\n\t   * Inits this._code to the passed-in `value` prop or to an\n\t   * empty array representation of the code input i.e ['', '', '', '']\n\t   * Called only once on componentWillLoad() as to not cause re-renders\n\t   */\n\t  initCode(value) {\n\t    if (value) {\n\t      this._code = value.split(\"\");\n\t      if (this._code.length < this.length) {\n\t        const padding = Array.from({ length: this.length - this._code.length }).fill(\"\");\n\t        this._code = [...this._code, ...padding];\n\t      } else if (this._code.length > this.length) {\n\t        this._code = this._code.slice(0, this.length);\n\t      }\n\t    } else {\n\t      this._code = Array.from({ length: this.length }).fill(\"\");\n\t    }\n\t  }\n\t  sanitizeValue(value) {\n\t    return value.split(\"\").filter((char) => this.isValidChar(char)).join(\"\").slice(0, this.length);\n\t  }\n\t  getValueFromInputs() {\n\t    let value = \"\";\n\t    this.el.shadowRoot.querySelectorAll(\"input\").forEach((input) => {\n\t      value += input.value;\n\t    });\n\t    return value;\n\t  }\n\t  setInputsFromValue(value) {\n\t    const inputs = this.el.shadowRoot.querySelectorAll(\"input\");\n\t    inputs.forEach((input, i) => {\n\t      const char = value[i];\n\t      const prevChar = value[i - 1];\n\t      input.value = char || \"\";\n\t      if (i === 0 || prevChar) {\n\t        input.removeAttribute(\"tabindex\");\n\t      } else {\n\t        input.tabIndex = -1;\n\t      }\n\t    });\n\t  }\n\t  spreadChars(e) {\n\t    const { target, data } = e;\n\t    const chars = data || target.value;\n\t    if (!chars)\n\t      return;\n\t    const sanitized = this.sanitizeValue(chars);\n\t    if (sanitized) {\n\t      this.insertChars(target, sanitized.split(\"\"));\n\t    } else {\n\t      target.value = \"\";\n\t    }\n\t  }\n\t  insertChars(input, chars) {\n\t    const { nextElementSibling } = input;\n\t    const [first, ...rest] = chars;\n\t    input.value = first;\n\t    nextElementSibling === null || nextElementSibling === void 0 ? void 0 : nextElementSibling.focus();\n\t    if (nextElementSibling && rest.length > 0) {\n\t      this.insertChars(nextElementSibling, rest);\n\t    }\n\t  }\n\t  updateValue() {\n\t    const previousValue = this.value;\n\t    const newValue = this.sanitizeValue(this.getValueFromInputs());\n\t    if (previousValue !== newValue) {\n\t      const { defaultPrevented } = this.marketCodeInputValueChange.emit({ code: newValue });\n\t      if (defaultPrevented) {\n\t        this.setInputsFromValue(previousValue);\n\t      } else {\n\t        this.value = newValue;\n\t      }\n\t    }\n\t  }\n\t  onInput(e) {\n\t    this.spreadChars(e);\n\t    this.updateValue();\n\t  }\n\t  onFocus(e) {\n\t    const { target } = e;\n\t    this.focused = true;\n\t    if (target.value) {\n\t      target.select();\n\t    } else {\n\t      this.focusFirstEmptyInput();\n\t    }\n\t  }\n\t  onBlur() {\n\t    this.focused = false;\n\t  }\n\t  onKeyDown(e) {\n\t    const { target, key } = e;\n\t    const { value, previousElementSibling, nextElementSibling } = target;\n\t    switch (key) {\n\t      case \"ArrowLeft\":\n\t        e.preventDefault();\n\t        previousElementSibling === null || previousElementSibling === void 0 ? void 0 : previousElementSibling.select();\n\t        break;\n\t      case \"ArrowRight\":\n\t        e.preventDefault();\n\t        nextElementSibling === null || nextElementSibling === void 0 ? void 0 : nextElementSibling.select();\n\t        break;\n\t      case \"Backspace\":\n\t        if (!value)\n\t          previousElementSibling === null || previousElementSibling === void 0 ? void 0 : previousElementSibling.select();\n\t        break;\n\t    }\n\t  }\n\t  onKeyUp(e) {\n\t    const { target } = e;\n\t    const { value } = target;\n\t    if (value.length > 1) {\n\t      this.spreadChars(e);\n\t    } else if (!this.isValidChar(value)) {\n\t      target.value = \"\";\n\t      target.focus();\n\t    }\n\t  }\n\t  onHostClick() {\n\t    if (!this.el.shadowRoot.activeElement) {\n\t      this.setFocus();\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.valueChangeHandler(this.value);\n\t    this.initCode(this.value);\n\t  }\n\t  render() {\n\t    const inputs = [];\n\t    this._code.forEach((char, index$1) => {\n\t      const tabindex = this._code[index$1 - 1] || index$1 === 0 ? null : -1;\n\t      inputs.push(\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        index.h(\"input\", {\n\t          required: true,\n\t          type: this.type === \"password\" ? \"password\" : \"text\",\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          inputmode: this.type === \"number\" ? \"numeric\" : null,\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          autocomplete: index$1 === 0 ? \"one-time-code\" : null,\n\t          value: char,\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          maxlength: index$1 === this.length - 1 ? \"1\" : null,\n\t          readOnly: this.readonly,\n\t          disabled: this.disabled,\n\t          placeholder: \"\\u25CF\",\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          tabindex,\n\t          onFocus: (e) => this.onFocus(e),\n\t          onBlur: () => this.onBlur(),\n\t          onInput: (e) => this.onInput(e),\n\t          onKeyDown: (e) => this.onKeyDown(e),\n\t          onKeyUp: (e) => this.onKeyUp(e)\n\t        })\n\t      );\n\t    });\n\t    return index.h(index.Host, { key: \"17cd91b3021a831896b42dc3fd5678a730ba510a\", class: \"market-code-input\", name: this.name, onClick: () => this.onHostClick() }, index.h(\"span\", { key: \"dad0e72b1940cbc53dc22e40abc179bada03c91b\", class: \"code-input-container\" }, inputs), index.h(\"slot\", { key: \"2afe584000d09d5d276fcec5520ce145166566af\", name: \"trailing-accessory\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"valueChangeHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketCodeInput.style = MarketCodeInputStyle0;\n\tmarketCodeInput_cjs_entry.market_code_input = MarketCodeInput;\n\treturn marketCodeInput_cjs_entry;\n}\n\nvar marketColorPicker_cjs_entry = {};\n\nvar colorE689fb5f = {};\n\nvar hasRequiredColorE689fb5f;\n\nfunction requireColorE689fb5f () {\n\tif (hasRequiredColorE689fb5f) return colorE689fb5f;\n\thasRequiredColorE689fb5f = 1;\n\tconst { min, max, floor, round } = Math;\n\tfunction hsvToRgb(hArg, sArg, vArg) {\n\t  let h = hArg;\n\t  let s = sArg;\n\t  let v = vArg;\n\t  h = h / 360 * 6;\n\t  s /= 100;\n\t  v /= 100;\n\t  const i = floor(h);\n\t  const f = h - i;\n\t  const p = v * (1 - s);\n\t  const q = v * (1 - f * s);\n\t  const t = v * (1 - (1 - f) * s);\n\t  const mod = i % 6;\n\t  const r = [v, q, p, p, t, v][mod];\n\t  const g = [t, v, v, q, p, p][mod];\n\t  const b = [p, p, t, v, v, q][mod];\n\t  return [r * 255, g * 255, b * 255];\n\t}\n\tfunction hsvToHex(h, s, v) {\n\t  return hsvToRgb(h, s, v).map((v2) => round(v2).toString(16).padStart(2, \"0\"));\n\t}\n\tfunction rgbToHsv(rArg, gArg, bArg) {\n\t  let r = rArg;\n\t  let g = gArg;\n\t  let b = bArg;\n\t  r /= 255;\n\t  g /= 255;\n\t  b /= 255;\n\t  const minVal = min(r, g, b);\n\t  const maxVal = max(r, g, b);\n\t  const delta = maxVal - minVal;\n\t  let h, s;\n\t  const v = maxVal;\n\t  if (delta === 0) {\n\t    h = s = 0;\n\t  } else {\n\t    s = delta / maxVal;\n\t    const dr = ((maxVal - r) / 6 + delta / 2) / delta;\n\t    const dg = ((maxVal - g) / 6 + delta / 2) / delta;\n\t    const db = ((maxVal - b) / 6 + delta / 2) / delta;\n\t    if (r === maxVal) {\n\t      h = db - dg;\n\t    } else if (g === maxVal) {\n\t      h = 1 / 3 + dr - db;\n\t    } else if (b === maxVal) {\n\t      h = 2 / 3 + dg - dr;\n\t    }\n\t    if (h < 0) {\n\t      h += 1;\n\t    } else if (h > 1) {\n\t      h -= 1;\n\t    }\n\t  }\n\t  return [h * 360, s * 100, v * 100];\n\t}\n\tfunction hslToHsv(h, sArg, lArg) {\n\t  let s = sArg;\n\t  let l = lArg;\n\t  s /= 100;\n\t  l /= 100;\n\t  s *= l < 0.5 ? l : 1 - l;\n\t  const ns = 2 * s / (l + s) * 100;\n\t  const v = (l + s) * 100;\n\t  return [h, Number.isNaN(ns) ? 0 : ns, v];\n\t}\n\tfunction hexToHsv(hex) {\n\t  const result = hex.match(/.{2}/g);\n\t  const numResult = result.map((v) => Number.parseInt(v, 16));\n\t  return rgbToHsv(numResult[0], numResult[1], numResult[2]);\n\t}\n\tfunction numarize(array) {\n\t  return array.map((v) => {\n\t    const n = Number(v);\n\t    return Number.isNaN(v) ? void 0 : n;\n\t  });\n\t}\n\tfunction parseToHSVA(str) {\n\t  const validColorValueRegex = {\n\t    rgba: /^rgba?\\D+([\\d.]+)(%?)\\D+([\\d.]+)(%?)\\D+([\\d.]+)(%?)\\D*?(([\\d.]+)(%?)|$)/i,\n\t    hsla: /^hsla?\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)\\D*?(([\\d.]+)(%?)|$)/i,\n\t    hsva: /^hsva?\\D+([\\d.]+)\\D+([\\d.]+)\\D+([\\d.]+)\\D*?(([\\d.]+)(%?)|$)/i,\n\t    hexa: /^#?(([\\da-f]{3,4})|([\\da-f]{6})|([\\da-f]{8}))$/i\n\t  };\n\t  for (const [colorType, regex] of Object.entries(validColorValueRegex)) {\n\t    const match = regex.exec(str);\n\t    if (!match) {\n\t      continue;\n\t    }\n\t    switch (colorType) {\n\t      case \"rgba\": {\n\t        const numarizedResult = numarize(match);\n\t        let r = numarizedResult[1];\n\t        let g = numarizedResult[3];\n\t        let b = numarizedResult[5];\n\t        let a = numarizedResult[8];\n\t        r = match[2] === \"%\" ? r / 100 * 255 : r;\n\t        g = match[4] === \"%\" ? g / 100 * 255 : g;\n\t        b = match[6] === \"%\" ? b / 100 * 255 : b;\n\t        a = match[9] === \"%\" ? a / 100 : a;\n\t        if (r > 255 || g > 255 || b > 255 || a < 0 || a > 1) {\n\t          break;\n\t        }\n\t        return { values: [...rgbToHsv(r, g, b), a], a, colorType };\n\t      }\n\t      case \"hexa\": {\n\t        let [, hex] = match;\n\t        if (hex.length === 4 || hex.length === 3) {\n\t          hex = hex.split(\"\").map((v) => v + v).join(\"\");\n\t        }\n\t        const raw = hex.slice(0, 6);\n\t        let a = hex.slice(6);\n\t        a = a ? Number.parseInt(a, 16) / 255 : void 0;\n\t        return { values: [...hexToHsv(raw), a], a, colorType };\n\t      }\n\t      case \"hsla\": {\n\t        const numarizedResult = numarize(match);\n\t        const h = numarizedResult[1];\n\t        const s = numarizedResult[2];\n\t        const l = numarizedResult[3];\n\t        let a = numarizedResult[5];\n\t        a = match[6] === \"%\" ? a / 100 : a;\n\t        if (h > 360 || s > 100 || l > 100 || a < 0 || a > 1) {\n\t          break;\n\t        }\n\t        return { values: [...hslToHsv(h, s, l), a], a, colorType };\n\t      }\n\t      case \"hsva\": {\n\t        const numarizedResult = numarize(match);\n\t        const h = numarizedResult[1];\n\t        const s = numarizedResult[2];\n\t        const v = numarizedResult[3];\n\t        let a = numarizedResult[5];\n\t        a = match[6] === \"%\" ? a / 100 : a;\n\t        if (h > 360 || s > 100 || v > 100 || a < 0 || a > 1) {\n\t          break;\n\t        }\n\t        return { values: [h, s, v, a], a, colorType };\n\t      }\n\t    }\n\t  }\n\t  return { values: null, colorType: null };\n\t}\n\tfunction isColorBright(color) {\n\t  if (color.startsWith(\"var(\")) {\n\t    if (typeof document !== \"undefined\") {\n\t      const tempElement = document.createElement(\"div\");\n\t      tempElement.style.color = color;\n\t      document.body.appendChild(tempElement);\n\t      const computedColor = getComputedStyle(tempElement).color;\n\t      document.body.removeChild(tempElement);\n\t      const match = computedColor.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/);\n\t      if (match) {\n\t        const r = Number.parseInt(match[1], 10);\n\t        const g = Number.parseInt(match[2], 10);\n\t        const b = Number.parseInt(match[3], 10);\n\t        const brightness = (r * 299 + g * 587 + b * 114) / 1e3;\n\t        return brightness > 165.75;\n\t      }\n\t    }\n\t    return false;\n\t  }\n\t  if (color.startsWith(\"#\")) {\n\t    const hex = color.slice(1);\n\t    const r = Number.parseInt(hex.slice(0, 2), 16);\n\t    const g = Number.parseInt(hex.slice(2, 4), 16);\n\t    const b = Number.parseInt(hex.slice(4, 6), 16);\n\t    const brightness = (r * 299 + g * 587 + b * 114) / 1e3;\n\t    return brightness > 165.75;\n\t  }\n\t  if (color.startsWith(\"rgb\")) {\n\t    const match = color.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/);\n\t    if (match) {\n\t      const r = Number.parseInt(match[1], 10);\n\t      const g = Number.parseInt(match[2], 10);\n\t      const b = Number.parseInt(match[3], 10);\n\t      const brightness = (r * 299 + g * 587 + b * 114) / 1e3;\n\t      return brightness > 165.75;\n\t    }\n\t  }\n\t  return false;\n\t}\n\tcolorE689fb5f.hsvToHex = hsvToHex;\n\tcolorE689fb5f.hsvToRgb = hsvToRgb;\n\tcolorE689fb5f.isColorBright = isColorBright;\n\tcolorE689fb5f.parseToHSVA = parseToHSVA;\n\treturn colorE689fb5f;\n}\n\nvar hasRequiredMarketColorPicker_cjs_entry;\n\nfunction requireMarketColorPicker_cjs_entry () {\n\tif (hasRequiredMarketColorPicker_cjs_entry) return marketColorPicker_cjs_entry;\n\thasRequiredMarketColorPicker_cjs_entry = 1;\n\tObject.defineProperty(marketColorPicker_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst color = requireColorE689fb5f();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketColorPickerCss = \":host{display:flex;flex-direction:column;gap:var(--color-picker-vertical-spacing)}\";\n\tconst MarketColorPickerStyle0 = marketColorPickerCss;\n\tconst MarketColorPicker = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketColorPickerValueChange = index.createEvent(this, \"marketColorPickerValueChange\", 7);\n\t    this.value = void 0;\n\t    this.inputValue = void 0;\n\t  }\n\t  /**\n\t   * Listener for gradient value change. This only fires when the gradient is dragged manually, which currently will only pass a hex value.\n\t   * Since it's a hex value, we know the value will be formatted for inputs.\n\t   * @param event\n\t   */\n\t  gradientValueChange(event) {\n\t    const { detail } = event;\n\t    const { defaultPrevented } = this.marketColorPickerValueChange.emit({\n\t      value: detail.value,\n\t      prevValue: this.value\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.value = detail.value;\n\t      this.inputValue = detail.value;\n\t      if (this.swatchList) {\n\t        this.swatchList.value = this.value;\n\t      }\n\t      if (this.colorInput) {\n\t        this.colorInput.value = this.inputValue;\n\t      }\n\t    }\n\t  }\n\t  swatchValueChange(event) {\n\t    const { detail } = event;\n\t    const { defaultPrevented } = this.marketColorPickerValueChange.emit({\n\t      value: detail.value,\n\t      prevValue: this.value\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.inputValue = this.formatInputValue(detail.value);\n\t      this.value = detail.value;\n\t      if (this.gradientPicker) {\n\t        this.gradientPicker.value = this.value;\n\t      }\n\t      if (this.colorInput) {\n\t        this.colorInput.value = this.inputValue;\n\t      }\n\t    }\n\t  }\n\t  inputValueChange(event) {\n\t    const { detail } = event;\n\t    const { defaultPrevented } = this.marketColorPickerValueChange.emit({\n\t      value: detail.value,\n\t      prevValue: this.value\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.value = detail.value;\n\t      if (this.gradientPicker) {\n\t        this.gradientPicker.value = this.value;\n\t      }\n\t      if (this.swatchList) {\n\t        this.swatchList.value = this.value;\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Helper function taking a color string and converting it to Hex if it's in rgba format.\n\t   * @param colorString\n\t   * @returns { string } Hex color string\n\t   */\n\t  formatInputValue(colorString) {\n\t    const parsedValue = color.parseToHSVA(colorString);\n\t    if (parsedValue.colorType && parsedValue.colorType !== \"hexa\") {\n\t      return `#${color.hsvToHex(parsedValue.values[0], parsedValue.values[1], parsedValue.values[2]).join(\"\")}`;\n\t    }\n\t    return colorString;\n\t  }\n\t  setSubcomponentValues() {\n\t    this.gradientPicker = this.el.querySelector(index$1.getNamespacedTagFor(\"market-color-picker-gradient\"));\n\t    this.swatchList = this.el.querySelector(index$1.getNamespacedTagFor(\"market-color-swatch-list\"));\n\t    this.colorInput = this.el.querySelector(index$1.getNamespacedTagFor(\"market-color-picker-input\"));\n\t    if (this.gradientPicker) {\n\t      this.gradientPicker.value = this.value;\n\t    }\n\t    if (this.swatchList) {\n\t      this.swatchList.value = this.value;\n\t    }\n\t    if (this.colorInput) {\n\t      this.colorInput.value = this.inputValue;\n\t    }\n\t  }\n\t  handleSlotChange() {\n\t    this.setSubcomponentValues();\n\t  }\n\t  componentWillLoad() {\n\t    this.inputValue = this.formatInputValue(this.value);\n\t  }\n\t  componentDidLoad() {\n\t    this.setSubcomponentValues();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"3420d4396bc964350cdcc5c73f72d2a501f71cb7\", class: \"market-color-picker\" }, index.h(\"slot\", { key: \"a7c5fbf559e2d19fecec18d10b445ebd35e7b67c\", onSlotchange: () => this.handleSlotChange() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketColorPicker.style = MarketColorPickerStyle0;\n\tmarketColorPicker_cjs_entry.market_color_picker = MarketColorPicker;\n\treturn marketColorPicker_cjs_entry;\n}\n\nvar marketColorPickerGradient_cjs_entry = {};\n\nvar utils608a13a9 = {};\n\nvar hasRequiredUtils608a13a9;\n\nfunction requireUtils608a13a9 () {\n\tif (hasRequiredUtils608a13a9) return utils608a13a9;\n\thasRequiredUtils608a13a9 = 1;\n\tfunction isTouchEvent(event) {\n\t  return Boolean(event === null || event === void 0 ? void 0 : event.changedTouches);\n\t}\n\tfunction getCoordsFromEvent(e) {\n\t  const x = isTouchEvent(e) ? e.changedTouches[0].clientX : e.clientX;\n\t  const y = isTouchEvent(e) ? e.changedTouches[0].clientY : e.clientY;\n\t  return { x, y };\n\t}\n\tutils608a13a9.getCoordsFromEvent = getCoordsFromEvent;\n\tutils608a13a9.isTouchEvent = isTouchEvent;\n\treturn utils608a13a9;\n}\n\nvar hasRequiredMarketColorPickerGradient_cjs_entry;\n\nfunction requireMarketColorPickerGradient_cjs_entry () {\n\tif (hasRequiredMarketColorPickerGradient_cjs_entry) return marketColorPickerGradient_cjs_entry;\n\thasRequiredMarketColorPickerGradient_cjs_entry = 1;\n\tObject.defineProperty(marketColorPickerGradient_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst utils = requireUtils608a13a9();\n\tconst color = requireColorE689fb5f();\n\tconst throttle = requireThrottle88e2e29a();\n\trequireIsObject7dcf0083();\n\trequireIsSymbolFbd13c73();\n\tconst marketColorPickerGradientCss = \":host{--primary-gradient-height:var(--color-picker-adjustments-hue-min-height);--gradient-border-radius:var(--color-picker-adjustments-hue-radius);--gradient-margin:var(--color-picker-vertical-spacing);--secondary-gradient-height:calc(var(--color-picker-adjustments-saturation-brightness-min-height) * 1px);--gradient-pointer-width:12px;--gradient-pointer-height:12px;--gradient-pointer-border:2px white solid;--gradient-pointer-border-radius:50%;display:block}.primary-gradient{position:relative;width:100%;height:var(--primary-gradient-height);border-radius:var(--gradient-border-radius);background:linear-gradient(\\n      to right,\\n      hsl(0deg 100% 50%),\\n      hsl(60deg 100% 50%),\\n      hsl(120deg 100% 50%),\\n      hsl(180deg 100% 50%),\\n      hsl(240deg 100% 50%),\\n      hsl(300deg 100% 50%),\\n      hsl(0deg 100% 50%)\\n    )}.secondary-gradient{position:relative;width:100%;height:var(--secondary-gradient-height);margin-top:var(--gradient-margin);border-radius:var(--gradient-border-radius)}.pointer{position:absolute;z-index:2;width:var(--gradient-pointer-width);height:var(--gradient-pointer-height);border:var(--gradient-pointer-border);border-radius:var(--gradient-pointer-border-radius);box-shadow:var(--elevation-20-shadow)}#primary-pointer{top:calc(50% - 8px)}\";\n\tconst MarketColorPickerGradientStyle0 = marketColorPickerGradientCss;\n\tconst RESIZE_DEBOUNCE_DURATION = 16;\n\tconst PRIMARY_ID = \"primary-pointer\";\n\tconst SECONDARY_ID = \"secondary-pointer\";\n\tconst PRIMARY_COORDINATES = [50, 50];\n\tconst SECONDARY_COORDINATES = [95, 10];\n\tconst MarketColorPickerGradient = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketColorPickerGradientValueChange = index.createEvent(this, \"marketColorPickerGradientValueChange\", 7);\n\t    this.secondaryPointerCoordinates = SECONDARY_COORDINATES;\n\t    this.boundOnDragMove = this.onDragMove.bind(this);\n\t    this.boundOnDragEnd = this.onDragEnd.bind(this);\n\t    this.throttledUpdatePointerOnDrag = throttle.throttle(this.updatePointerOnDrag.bind(this), RESIZE_DEBOUNCE_DURATION);\n\t    this.value = void 0;\n\t  }\n\t  onDragStart(e, pointer) {\n\t    e.preventDefault();\n\t    e.stopPropagation();\n\t    if (!utils.isTouchEvent(e) && e.button !== 0)\n\t      return;\n\t    const coords = utils.getCoordsFromEvent(e);\n\t    this.updatePointerOnDrag(coords.x, coords.y, pointer);\n\t    this.draggablePointer = pointer;\n\t    document.addEventListener(\"mousemove\", this.boundOnDragMove);\n\t    document.addEventListener(\"mouseup\", this.boundOnDragEnd);\n\t    document.addEventListener(\"touchmove\", this.boundOnDragMove, { passive: false });\n\t    document.addEventListener(\"touchend\", this.boundOnDragEnd, { passive: false });\n\t  }\n\t  onDragMove(e) {\n\t    e.preventDefault();\n\t    const coords = utils.getCoordsFromEvent(e);\n\t    this.throttledUpdatePointerOnDrag(coords.x, coords.y, this.draggablePointer);\n\t  }\n\t  onDragEnd(e) {\n\t    e.preventDefault();\n\t    this.draggablePointer = null;\n\t    document.removeEventListener(\"mousemove\", this.boundOnDragMove);\n\t    document.removeEventListener(\"mouseup\", this.boundOnDragEnd);\n\t    document.removeEventListener(\"touchmove\", this.boundOnDragMove);\n\t    document.removeEventListener(\"touchend\", this.boundOnDragEnd);\n\t  }\n\t  /**\n\t   * Drag logic function to determine coordinates as a percentage.\n\t   * @param posX\n\t   * @param posY\n\t   * @param pointer\n\t   */\n\t  updatePointerOnDrag(posX, posY, pointer) {\n\t    const elem = pointer.parentElement;\n\t    if (!elem) {\n\t      return;\n\t    }\n\t    const rect = elem.getBoundingClientRect();\n\t    const elemOffsetX = rect.left;\n\t    const elemOffsetY = rect.top;\n\t    const maxWidth = rect.width;\n\t    const maxHeight = rect.height;\n\t    let updatedX = (posX - elemOffsetX) / maxWidth;\n\t    let updatedY = (posY - elemOffsetY) / maxHeight;\n\t    updatedX = Math.max(Math.min(updatedX, 1), 0);\n\t    updatedY = Math.max(Math.min(updatedY, 1), 0);\n\t    this.setPointerCoordinates({\n\t      pointer,\n\t      x: updatedX * 100,\n\t      y: updatedY * 100\n\t    });\n\t  }\n\t  /**\n\t   * Function handling updating pointer location based on provided coordinates.\n\t   * The x and y values are percentages, from 0-100.\n\t   * It then also updates the colors of the pointers.\n\t   * @param {HTMLElement} options.pointer\n\t   * @param {number} options.x\n\t   * @param {number} options.y\n\t   * @param {boolean} options.emitEvent\n\t   * @param {string} options.colorType\n\t   */\n\t  setPointerCoordinates(options) {\n\t    const { pointer, x, y = 50, emitEvent = true, colorType = \"\" } = options;\n\t    const pointerOffset = pointer.offsetWidth / 2;\n\t    pointer.style.left = `calc(${x}% - ${pointerOffset}px)`;\n\t    if (pointer.id === PRIMARY_ID) {\n\t      this.setPrimaryGradientColor(x / 100, emitEvent);\n\t    } else if (pointer.id === SECONDARY_ID) {\n\t      pointer.style.top = `calc(${y}% - ${pointerOffset}px)`;\n\t      this.setSecondaryGradientColor(x / 100, y / 100, emitEvent, colorType);\n\t    }\n\t  }\n\t  /**\n\t   * Sets primary pointer color.\n\t   * Secondary gradient is updated to reflect new primary color.\n\t   * @param x\n\t   * @param emitEvent\n\t   */\n\t  setPrimaryGradientColor(x, emitEvent = true) {\n\t    this.primaryHue = x * 360;\n\t    this.primaryPointer.style.background = `hsl(${this.primaryHue}, 100%, 50%)`;\n\t    this.updateSecondaryGradient(emitEvent);\n\t  }\n\t  /**\n\t   * Sets secondary pointer color. If rgba is used, show that, otherwise default to hex values.\n\t   * The value emitted from the gradient here, if emitEvent is true.\n\t   * @param x\n\t   * @param y\n\t   * @param emitEvent\n\t   * @param colorType\n\t   */\n\t  setSecondaryGradientColor(x, y, emitEvent = true, colorType = \"\") {\n\t    const saturation = x * 100;\n\t    const value = 100 - y * 100;\n\t    let colorValue;\n\t    let colorString;\n\t    if (colorType === \"rgba\") {\n\t      colorValue = color.hsvToRgb(this.primaryHue, saturation, value);\n\t      colorString = `rgb(${colorValue[0]}, ${colorValue[1]}, ${colorValue[2]})`;\n\t    } else {\n\t      colorValue = color.hsvToHex(this.primaryHue, saturation, value);\n\t      colorString = `#${colorValue.join(\"\")}`;\n\t    }\n\t    this.secondaryPointer.style.background = colorString;\n\t    this.secondaryPointerCoordinates = [x, y];\n\t    if (emitEvent) {\n\t      this.marketColorPickerGradientValueChange.emit({ value: colorString });\n\t    }\n\t  }\n\t  /**\n\t   * Updates the secondary gradient picker background, then updates secondary pointer.\n\t   * @param emitEvent\n\t   */\n\t  updateSecondaryGradient(emitEvent = true) {\n\t    const gradient = this.el.shadowRoot.querySelector(\".secondary-gradient\");\n\t    gradient.style.background = `\n      linear-gradient(to top, rgb(0, 0, 0), transparent),\n      linear-gradient(to left, hsl(${this.primaryHue}, 100%, 50%), rgb(255, 255, 255))\n    `;\n\t    this.setSecondaryGradientColor(...this.secondaryPointerCoordinates, emitEvent);\n\t  }\n\t  /**\n\t   * This value watcher attempts to convert the value into a valid color and updates the gradient pickers.\n\t   * It returns a boolean based on whether this succeeded or not.\n\t   * @returns boolean\n\t   */\n\t  updateGradientsByValue() {\n\t    const convertedColor = color.parseToHSVA(this.value);\n\t    if (convertedColor.values && this.primaryPointer && this.secondaryPointer) {\n\t      const h = convertedColor.values[0];\n\t      const s = convertedColor.values[1];\n\t      const v = convertedColor.values[2];\n\t      const primaryX = 100 * h / 360;\n\t      const secondaryX = s;\n\t      const secondaryY = 100 - v;\n\t      const primaryOptions = {\n\t        pointer: this.primaryPointer,\n\t        x: primaryX,\n\t        emitEvent: false\n\t      };\n\t      const secondaryOptions = {\n\t        pointer: this.secondaryPointer,\n\t        x: secondaryX,\n\t        y: secondaryY,\n\t        colorType: convertedColor.colorType,\n\t        emitEvent: false\n\t      };\n\t      this.setPointerCoordinates(primaryOptions);\n\t      this.setPointerCoordinates(secondaryOptions);\n\t      return true;\n\t    }\n\t    return false;\n\t  }\n\t  /**\n\t   * Sets necessary values for pointers to work if no valid value has been preset on load\n\t   */\n\t  setInitialPointers() {\n\t    const pointers = [this.primaryPointer, this.secondaryPointer];\n\t    const pointerCoordinates = [PRIMARY_COORDINATES, SECONDARY_COORDINATES];\n\t    pointers.forEach((pointer, i) => {\n\t      const pointerOptions = {\n\t        pointer,\n\t        x: pointerCoordinates[i][0],\n\t        y: pointerCoordinates[i][1],\n\t        emitEvent: false\n\t      };\n\t      this.setPointerCoordinates(pointerOptions);\n\t    });\n\t  }\n\t  componentDidLoad() {\n\t    this.primaryPointer = this.el.shadowRoot.querySelector(`#${PRIMARY_ID}`);\n\t    this.secondaryPointer = this.el.shadowRoot.querySelector(`#${SECONDARY_ID}`);\n\t    const success = this.updateGradientsByValue();\n\t    if (!success) {\n\t      this.setInitialPointers();\n\t    }\n\t  }\n\t  /* eslint-disable jsx-a11y/aria-role */\n\t  render() {\n\t    return index.h(index.Host, { key: \"a3f97a9e7b01392d75da533ba3edcd97fe2c90ff\", class: \"market-color-picker-gradient\" }, index.h(\"slot\", { key: \"351e53194da901e05a1e60987bc7212305312229\" }), index.h(\"div\", { key: \"0a6c18fda445a8dc2cefaa611d7cbb7b17bc9453\", class: \"primary-gradient\", role: \"input\", onMouseDown: (e) => this.onDragStart(e, this.primaryPointer), onTouchStart: (e) => this.onDragStart(e, this.primaryPointer) }, index.h(\"div\", { key: \"ddea8f9865b7f8a16575af0c936f1da44df8b825\", id: PRIMARY_ID, class: \"pointer\" })), index.h(\"div\", { key: \"60b948f8792c6580afa34a7a378d4fd332bfb7c6\", class: \"secondary-gradient\", role: \"input\", onMouseDown: (e) => this.onDragStart(e, this.secondaryPointer), onTouchStart: (e) => this.onDragStart(e, this.secondaryPointer) }, index.h(\"div\", { key: \"d8bf40d83b91d8626bd2770413a5ff2df49933e8\", id: SECONDARY_ID, class: \"pointer\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"updateGradientsByValue\"]\n\t    };\n\t  }\n\t};\n\tMarketColorPickerGradient.style = MarketColorPickerGradientStyle0;\n\tmarketColorPickerGradient_cjs_entry.market_color_picker_gradient = MarketColorPickerGradient;\n\treturn marketColorPickerGradient_cjs_entry;\n}\n\nvar marketColorPickerInput_cjs_entry = {};\n\nvar hasRequiredMarketColorPickerInput_cjs_entry;\n\nfunction requireMarketColorPickerInput_cjs_entry () {\n\tif (hasRequiredMarketColorPickerInput_cjs_entry) return marketColorPickerInput_cjs_entry;\n\thasRequiredMarketColorPickerInput_cjs_entry = 1;\n\tObject.defineProperty(marketColorPickerInput_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst color = requireColorE689fb5f();\n\tconst pencilWritingIcon = () => index.h(\n\t  \"svg\",\n\t  { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M17 4.17004C17.72 4.17004 18.45 4.45004 19 5.00004C20.1 6.10004 20.1 7.90004 19 9.00004L17 11L8 20H4V16L13 7.00004L15 5.00004C15.55 4.45004 16.28 4.17004 17 4.17004ZM17.01 6.17004C16.88 6.17004 16.63 6.20004 16.42 6.41004L15.84 7.01004L17.01 8.18004L17.6 7.59004C17.81 7.37004 17.84 7.13004 17.84 7.00004C17.84 6.87004 17.82 6.62004 17.6 6.41004C17.38 6.20004 17.14 6.17004 17.01 6.17004ZM6 18H7.17L15.58 9.59004L14.41 8.42004L6 16.83V18ZM12 18.0001H20V20.0001H12V18.0001Z\" })\n\t);\n\tconst marketColorPickerInputCss = \":host{display:block}.market-color-swatch{vertical-align:middle;margin:var(--color-picker-input-icon-vertical-spacing, 12px) 0}.color-picker-input-icon{display:flex;justify-content:center;align-items:center;width:var(--color-picker-input-width, 40px);height:var(--color-picker-input-height, 40px);margin:12px 0;border-radius:var(--color-picker-icon-border-radius, calc(var(--core-radius-10) * 1px));background-color:var(--color-picker-icon-background-color, var(--core-fill-40-color))}.color-picker-input-icon svg path{fill:var(--core-fill-10-color)}\";\n\tconst MarketColorPickerInputStyle0 = marketColorPickerInputCss;\n\tconst MarketColorPickerInput = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketColorPickerInputValueChange = index.createEvent(this, \"marketColorPickerInputValueChange\", 7);\n\t    this.value = void 0;\n\t  }\n\t  displayLeadingAccessory() {\n\t    const MarketColorSwatchTagName = index$1.getNamespacedTagFor(\"market-color-swatch\");\n\t    const parsedValue = color.parseToHSVA(this.value);\n\t    if (parsedValue.values) {\n\t      return index.h(MarketColorSwatchTagName, { value: this.value, disabled: true });\n\t    }\n\t    return index.h(\"div\", { class: \"color-picker-input-icon\" }, pencilWritingIcon());\n\t  }\n\t  inputValueChange(event) {\n\t    const { detail } = event;\n\t    const prevValue = this.value;\n\t    this.formatAndUpdateValue(detail.value);\n\t    const { defaultPrevented } = this.marketColorPickerInputValueChange.emit({ prevValue, value: this.value });\n\t    if (defaultPrevented) {\n\t      this.value = prevValue;\n\t    }\n\t  }\n\t  formatAndUpdateValue(value = this.value) {\n\t    if (!value)\n\t      return;\n\t    let updatedValue = value;\n\t    if (updatedValue[0] !== \"#\") {\n\t      updatedValue = `#${updatedValue}`;\n\t    }\n\t    this.value = updatedValue;\n\t  }\n\t  componentWillLoad() {\n\t    this.formatAndUpdateValue();\n\t  }\n\t  render() {\n\t    const MarketInputTextTagName = index$1.getNamespacedTagFor(\"market-input-text\");\n\t    return index.h(index.Host, { key: \"4c584dc557c869b77da25584bdc7d22b28c26009\", class: \"market-color-picker-input\" }, index.h(MarketInputTextTagName, { key: \"35372a683c43b10f0bff739af28d88a312b84a5f\", value: this.value, id: \"color-picker-input-text\", maxlength: 7 }, index.h(\"div\", { key: \"f0f23575dde4f47843340376f20b4dffbc76fc9e\", slot: \"leading-accessory\" }, this.displayLeadingAccessory()), index.h(\"label\", { key: \"1f3dfafeafc65ad10002bcf5ba37848a332730c2\", htmlFor: \"color-picker-input-text\" }, index.h(\"slot\", { key: \"31d9184dab3c72c71578a08e50f2dfd8ba00efaf\", name: \"label\" }, \"Hex\")), index.h(\"slot\", { key: \"2d3e909b21965f0dcc7c9771812709034055251b\" })));\n\t  }\n\t};\n\tMarketColorPickerInput.style = MarketColorPickerInputStyle0;\n\tmarketColorPickerInput_cjs_entry.market_color_picker_input = MarketColorPickerInput;\n\treturn marketColorPickerInput_cjs_entry;\n}\n\nvar marketColorSwatchList_cjs_entry = {};\n\nvar hasRequiredMarketColorSwatchList_cjs_entry;\n\nfunction requireMarketColorSwatchList_cjs_entry () {\n\tif (hasRequiredMarketColorSwatchList_cjs_entry) return marketColorSwatchList_cjs_entry;\n\thasRequiredMarketColorSwatchList_cjs_entry = 1;\n\tObject.defineProperty(marketColorSwatchList_cjs_entry, \"__esModule\", { value: true });\n\tconst index$1 = requireIndex37364565();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst index = requireIndexC43effe9();\n\tfunction getDefaultMarketColorSwatches() {\n\t  return [\n\t    index.CORE_BURGUNDY_FILL_COLOR,\n\t    index.CORE_RED_FILL_COLOR,\n\t    index.CORE_ORANGE_FILL_COLOR,\n\t    index.CORE_GOLD_FILL_COLOR,\n\t    index.CORE_YELLOW_FILL_COLOR,\n\t    index.CORE_TAUPE_FILL_COLOR,\n\t    index.CORE_BROWN_FILL_COLOR,\n\t    index.CORE_FOREST_FILL_COLOR,\n\t    index.CORE_GREEN_FILL_COLOR,\n\t    index.CORE_TEAL_FILL_COLOR,\n\t    index.CORE_BLUE_FILL_COLOR,\n\t    index.CORE_SKY_FILL_COLOR,\n\t    index.CORE_PURPLE_FILL_COLOR,\n\t    index.CORE_PINK_FILL_COLOR\n\t  ];\n\t}\n\tconst marketColorSwatchListCss = \":host{display:grid;grid-template-columns:repeat(auto-fill, var(--color-swatch-width, 40px));grid-gap:var(--color-swatch-list-spacing, 16px)}\";\n\tconst MarketColorSwatchListStyle0 = marketColorSwatchListCss;\n\tconst MarketColorSwatchList = class {\n\t  constructor(hostRef) {\n\t    index$1.registerInstance(this, hostRef);\n\t    this.marketColorSwatchListValueChange = index$1.createEvent(this, \"marketColorSwatchListValueChange\", 7);\n\t    this.value = void 0;\n\t  }\n\t  valueWatcher() {\n\t    this.setSelectionFromValue();\n\t  }\n\t  /* Listen for the marketColorSwatchSelectedChange event which is emitted by slotted market-color-swatch elements\n\t  when they are clicked */\n\t  colorSwatchSelectedEventHandler(e) {\n\t    this.handleItemSelectedEvent(e.detail);\n\t  }\n\t  handleItemSelectedEvent(eventInfo) {\n\t    const selectedValue = eventInfo.selected ? eventInfo.value : \"\";\n\t    if (this.value === selectedValue) {\n\t      return;\n\t    }\n\t    const { defaultPrevented } = this.marketColorSwatchListValueChange.emit({\n\t      value: selectedValue,\n\t      prevValue: this.value\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.value = selectedValue;\n\t    }\n\t  }\n\t  // After selection, the swatches in the list update their selected state\n\t  setSelectionFromValue() {\n\t    let items = [\n\t      ...this.el.querySelectorAll(index$2.getNamespacedTagFor(\"market-color-swatch\"))\n\t    ];\n\t    if (items.length === 0) {\n\t      items = [\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        ...this.el.shadowRoot.querySelectorAll(index$2.getNamespacedTagFor(\"market-color-swatch\"))\n\t      ];\n\t    }\n\t    items.forEach((item) => item.selected = this.value === item.value);\n\t  }\n\t  handleSlotChange() {\n\t    this.setSelectionFromValue();\n\t  }\n\t  render() {\n\t    return index$1.h(index$1.Host, { key: \"11c312833be18cf818def34c641bd0ebd9d40b74\", class: \"market-color-swatch-list\", role: \"list\" }, index$1.h(\"slot\", { key: \"f01a29312baca18a3e568ec5ab4b3f8d82257cc9\", onSlotchange: () => this.handleSlotChange() }, getDefaultMarketColorSwatches().map((swatchValue) => {\n\t      return index$1.h(\"market-color-swatch\", { value: swatchValue });\n\t    })));\n\t  }\n\t  get el() {\n\t    return index$1.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"valueWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketColorSwatchList.style = MarketColorSwatchListStyle0;\n\tmarketColorSwatchList_cjs_entry.market_color_swatch_list = MarketColorSwatchList;\n\treturn marketColorSwatchList_cjs_entry;\n}\n\nvar marketContentCard_cjs_entry = {};\n\nvar hasRequiredMarketContentCard_cjs_entry;\n\nfunction requireMarketContentCard_cjs_entry () {\n\tif (hasRequiredMarketContentCard_cjs_entry) return marketContentCard_cjs_entry;\n\thasRequiredMarketContentCard_cjs_entry = 1;\n\tObject.defineProperty(marketContentCard_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketContentCardCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:block;padding:var(--content-card-padding-vertical-size) var(--content-card-padding-horizontal-size);border:var(--content-card-border-width) solid var(--content-card-border-color);border-radius:var(--content-card-border-radius);background-color:var(--content-card-background-color)}\";\n\tconst MarketContentCardStyle0 = marketContentCardCss;\n\tconst MarketContentCard = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"0f4a8a96e25747ead84011665edc70c142d75b87\", class: \"market-content-card\" }, index.h(\"slot\", { key: \"0f37d14cffecf4dda883ef7364a541fd2ddd13a4\" }));\n\t  }\n\t};\n\tMarketContentCard.style = MarketContentCardStyle0;\n\tmarketContentCard_cjs_entry.market_content_card = MarketContentCard;\n\treturn marketContentCard_cjs_entry;\n}\n\nvar marketContext_cjs_entry = {};\n\nvar hasRequiredMarketContext_cjs_entry;\n\nfunction requireMarketContext_cjs_entry () {\n\tif (hasRequiredMarketContext_cjs_entry) return marketContext_cjs_entry;\n\thasRequiredMarketContext_cjs_entry = 1;\n\tObject.defineProperty(marketContext_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst dialog = requireDialog8459b0d0();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst marketContextCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:absolute;display:grid;justify-items:center;width:100vw;height:100%;animation:var(--core-animation-enter-transition-moderate-speed-duration)\\n    market-fade-in\\n    forwards\\n    var(--core-animation-enter-transition-easing)}:host([hidden]){opacity:0%;animation-name:market-fade-out;animation-duration:var(--core-animation-exit-transition-moderate-speed-duration);animation-timing-function:var(--core-animation-exit-transition-easing)}:host>*{pointer-events:auto}:host(:not(.no-veil)){background-color:var(--core-surface-overlay-color);opacity:100%;pointer-events:auto}:host(.no-veil){pointer-events:none}@media screen and (min-width: 800px){::slotted(.market-modal-partial){align-self:center;margin:var(--modal-partial-vertical-screen-buffer-size) var(--modal-partial-horizontal-screen-buffer-size)}}::slotted(.market-dialog){align-self:center;width:calc(100% - (2 * var(--modal-dialog-horizontal-screen-buffer-size, 16px)))}\";\n\tconst MarketContextStyle0 = marketContextCss;\n\tconst MarketContext = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketContextContentsChanged = index.createEvent(this, \"marketContextContentsChanged\", 7);\n\t    this.marketContextEmptied = index.createEvent(this, \"marketContextEmptied\", 7);\n\t    this.currentDialog = void 0;\n\t    this.noVeil = false;\n\t    this.hidden = false;\n\t    this.animationEnterDuration = index$1.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.animationExitDuration = index$1.CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.stack = [];\n\t    this.totalCount = 0;\n\t    this.dialogMeta = {};\n\t  }\n\t  currentDialogWatcher(newDialog) {\n\t    this.stack.push(newDialog);\n\t    this.stack = [...this.stack];\n\t  }\n\t  stackWatcher(newValue) {\n\t    newValue.forEach((dialog2) => {\n\t      this.dialogMeta[dialog2.type].count += 1;\n\t      this.totalCount += 1;\n\t    });\n\t    if (newValue.length === 0) {\n\t      this.hidden = true;\n\t      setTimeout(() => {\n\t        this.marketContextEmptied.emit();\n\t      }, this.animationExitDuration);\n\t    }\n\t    this.setContextVeil();\n\t  }\n\t  doesStackContainDialogThatRequiresVeil(dialog$1) {\n\t    const veiledDialogTagnames = Object.entries(dialog.DIALOGS_META).filter(([, config]) => config.veil).map(([type]) => index$2.getNamespacedTagFor(`market-${type}`));\n\t    return veiledDialogTagnames.includes(dialog$1.tagName.toLowerCase());\n\t  }\n\t  setContextVeil() {\n\t    if (this.el.hasAttribute(\"no-veil\") || this.stack.length === 0) {\n\t      return;\n\t    }\n\t    this.noVeil = !this.stack.some((dialog2) => this.doesStackContainDialogThatRequiresVeil(dialog2.el));\n\t  }\n\t  stackHasDialog(dialogEl) {\n\t    return this.stack.some((dialog2) => dialog2.el === dialogEl);\n\t  }\n\t  modalLoadedEventHandler(e) {\n\t    const dialog2 = e.detail.dialog;\n\t    const type = e.detail.type;\n\t    if (dialog2.parentElement !== this.el) {\n\t      return;\n\t    } else if (this.stackHasDialog(dialog2)) {\n\t      return;\n\t    }\n\t    const generatedDialogID = this.generateDialogID(type);\n\t    dialog2.dialogID = generatedDialogID;\n\t    dialog2.id = dialog2.id || generatedDialogID;\n\t    this.currentDialog = {\n\t      el: dialog2,\n\t      type,\n\t      dialogID: dialog2.dialogID,\n\t      id: dialog2.id,\n\t      index: this.stack.length,\n\t      indexOfType: this.dialogMeta[type].count + 1\n\t    };\n\t    this.marketContextContentsChanged.emit({\n\t      action: \"marketNewDialogOpened\",\n\t      currentDialog: this.currentDialog,\n\t      stack: this.stack\n\t    });\n\t  }\n\t  // This event is emitted from market dialog components (Modal, Sheet, Blade, etc.)\n\t  dialogDismissedEventHandler(event) {\n\t    if (event.defaultPrevented) {\n\t      return;\n\t    }\n\t    if (event.target.parentElement === this.el) {\n\t      this.close(event.detail.dialog.dialogID);\n\t    }\n\t  }\n\t  generateDialogID(type) {\n\t    return `${type}-${this.dialogMeta[type].count + 1}`;\n\t  }\n\t  getDialogByID(dialogID) {\n\t    return this.stack.find((dialog2) => dialog2.dialogID === dialogID);\n\t  }\n\t  /**\n\t   * Adds the passed dialogTemplate to the stack and inserts it into the DOM\n\t   */\n\t  open(dialogTemplate) {\n\t    if (this.stack.length === 0) {\n\t      this.noVeil = !this.doesStackContainDialogThatRequiresVeil(dialogTemplate);\n\t    }\n\t    this.el.appendChild(dialogTemplate);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **Recommended for internal use only**\n\t   * Removes the topmost dialog from the stack or the dialog matching the passed `dialogID`\n\t   * Note that using this will not trigger the dialog to emit a marketDialogDismissed event.\n\t   *\n\t   * The recommended path for closing a dialog is to call its dismiss() method.\n\t   */\n\t  // TODO (breaking): consider renaming this method to `removeDialogElement`\n\t  close(dialogID) {\n\t    let dialog2;\n\t    const d = this.stack.indexOf(dialog2);\n\t    if (dialogID) {\n\t      dialog2 = this.stack.find((dialog3) => dialog3.dialogID === dialogID);\n\t      !dialog2 && console.warn(`Tried to close dialog with data-dialog-id \"${dialogID}\" but none were found`);\n\t    } else {\n\t      dialog2 = this.currentDialog;\n\t    }\n\t    if (dialog2) {\n\t      if (dialog2.type === \"dialog\" && dialog2.el.persistent) {\n\t        return Promise.resolve();\n\t      }\n\t      setTimeout(() => {\n\t        var _a;\n\t        if (typeof ((_a = dialog2 === null || dialog2 === void 0 ? void 0 : dialog2.el) === null || _a === void 0 ? void 0 : _a.remove) === \"function\") {\n\t          dialog2.el.remove();\n\t        }\n\t        this.stack.splice(d, 1);\n\t        this.stack = [...this.stack];\n\t        this.marketContextContentsChanged.emit({\n\t          action: \"marketDialogClosed\",\n\t          currentDialog: dialog2,\n\t          stack: this.stack\n\t        });\n\t      }, dialog2.el.animationExitDuration);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **Recommended for internal use only**\n\t   * Removes the topmost dialog from the stack (just an alias for default .close() behavior)\n\t   * Note that using this will not trigger the dialog to emit a marketDialogDismissed event.\n\t   *\n\t   * The recommended path for closing a dialog is to call its dismiss() method.\n\t   */\n\t  // TODO (breaking): consider removing this method in favor of encouraging consumers to close dialogs via dialog.dismiss();\n\t  closeCurrent() {\n\t    this.close();\n\t    return Promise.resolve();\n\t  }\n\t  connectedCallback() {\n\t    dialog.ALL_DIALOG_TYPES.forEach((dialogType) => {\n\t      this.dialogMeta[dialogType] = { count: 0 };\n\t    });\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"74249d4b98ff02a74d6095fd5530a44070a6639c\", class: `market-context ${this.noVeil ? \"no-veil\" : \"\"}` }, index.h(\"slot\", { key: \"abb925fac07851860fbd2269b724668c9297a83b\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"currentDialog\": [\"currentDialogWatcher\"],\n\t      \"stack\": [\"stackWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketContext.style = MarketContextStyle0;\n\tmarketContext_cjs_entry.market_context = MarketContext;\n\treturn marketContext_cjs_entry;\n}\n\nvar marketContextManager_cjs_entry = {};\n\nvar hasRequiredMarketContextManager_cjs_entry;\n\nfunction requireMarketContextManager_cjs_entry () {\n\tif (hasRequiredMarketContextManager_cjs_entry) return marketContextManager_cjs_entry;\n\thasRequiredMarketContextManager_cjs_entry = 1;\n\tObject.defineProperty(marketContextManager_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst raf = requireRafEa414557();\n\tconst marketContextManagerCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:fixed;top:0;left:0;z-index:-1000;display:block;overflow:hidden;width:100vw;height:100%;opacity:0%}:host([active]){z-index:1000;opacity:100%;pointer-events:none}\";\n\tconst MarketContextManagerStyle0 = marketContextManagerCss;\n\tconst MarketContextManager = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketContextManagerActivated = index.createEvent(this, \"marketContextManagerActivated\", 7);\n\t    this.marketContextManagerDeactivated = index.createEvent(this, \"marketContextManagerDeactivated\", 7);\n\t    this.active = false;\n\t    this.currentContext = void 0;\n\t    this.stack = [];\n\t  }\n\t  initChildListObserver() {\n\t    if (this.childListObserver)\n\t      return;\n\t    const updateChildList = () => {\n\t      this.stack = [...this.el.children];\n\t      this.currentContext = this.stack.length > 0 ? this.stack[this.stack.length - 1] : null;\n\t    };\n\t    updateChildList();\n\t    this.childListObserver = new MutationObserver(updateChildList);\n\t    this.childListObserver.observe(this.el, { childList: true });\n\t  }\n\t  async getCurrentContext() {\n\t    while (!this.currentContext) {\n\t      await raf.asyncRequestAnimationFrame();\n\t    }\n\t    return this.currentContext;\n\t  }\n\t  contextEmptiedEventHandler({ target: emptiedContext }) {\n\t    if (typeof (emptiedContext === null || emptiedContext === void 0 ? void 0 : emptiedContext.remove) === \"function\") {\n\t      emptiedContext.remove();\n\t    }\n\t    this.stack.splice(this.stack.indexOf(emptiedContext), 1);\n\t    if (this.stack.length === 0) {\n\t      this.deactivate();\n\t    }\n\t  }\n\t  windowKeydown(e) {\n\t    var _a, _b;\n\t    if (e.key === \"Escape\" || e.key === \"Esc\") {\n\t      const currentDialog = (_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.currentDialog;\n\t      if (typeof ((_b = currentDialog === null || currentDialog === void 0 ? void 0 : currentDialog.el) === null || _b === void 0 ? void 0 : _b.dismiss) === \"function\") {\n\t        currentDialog.el.dismiss({ origin: this.el });\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Adds the passed dialogEl to the DOM and creates a new context if necessary or according to\n\t   * `shouldCreateNewContext` if it is passed\n\t   */\n\t  async open(dialogEl, shouldCreateNewContext) {\n\t    let createNewContext = shouldCreateNewContext;\n\t    if (!this.currentContext || dialogEl) {\n\t      createNewContext = true;\n\t    }\n\t    if (createNewContext) {\n\t      this.createNewContext();\n\t    }\n\t    await this.currentContext.open(dialogEl);\n\t  }\n\t  /**\n\t   * Closes the dialog with matching ID\n\t   */\n\t  close(dialogID) {\n\t    this.currentContext.close(dialogID);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Adds a new market-context to the stack in the DOM and activates it\n\t   */\n\t  createNewContext() {\n\t    this.activate();\n\t    this.el.appendChild(document.createElement(index$1.getNamespacedTagFor(\"market-context\")));\n\t    this.currentContext = this.el.lastElementChild;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Hides the entire context manager\n\t   */\n\t  deactivate() {\n\t    this.active = false;\n\t    this.marketContextManagerDeactivated.emit();\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Shows the context manager\n\t   */\n\t  activate() {\n\t    if (!this.active) {\n\t      this.active = true;\n\t      this.marketContextManagerActivated.emit();\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  handleMouseEvents(e) {\n\t    var _a, _b;\n\t    if (e.type === \"mousedown\") {\n\t      this.mouseDownEl = e.target.tagName;\n\t    } else if (e.type === \"mouseup\") {\n\t      const mouseUpEl = e.target.tagName;\n\t      if (this.mouseDownEl === mouseUpEl && e.target.tagName.toLowerCase() === index$1.getNamespacedTagFor(\"market-context\") && !e.target.classList.contains(\"no-veil\")) {\n\t        const currentDialog = (_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.currentDialog;\n\t        if (typeof ((_b = currentDialog === null || currentDialog === void 0 ? void 0 : currentDialog.el) === null || _b === void 0 ? void 0 : _b.dismiss) === \"function\") {\n\t          currentDialog.el.dismiss({ origin: this.el });\n\t        }\n\t      }\n\t    }\n\t  }\n\t  componentDidLoad() {\n\t    this.initChildListObserver();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"b8438440117be3807efff7d4bc17ef4764fefb58\", class: \"market-context-manager\", onMouseDown: (e) => this.handleMouseEvents(e), onMouseUp: (e) => this.handleMouseEvents(e) }, index.h(\"slot\", { key: \"04a3e683d20c0b9982cf11bb8f11a560a4538428\" }));\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.childListObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketContextManager.style = MarketContextManagerStyle0;\n\tmarketContextManager_cjs_entry.market_context_manager = MarketContextManager;\n\treturn marketContextManager_cjs_entry;\n}\n\nvar marketDatePicker_cjs_entry = {};\n\nvar menu122781f5 = {};\n\nvar hasRequiredMenu122781f5;\n\nfunction requireMenu122781f5 () {\n\tif (hasRequiredMenu122781f5) return menu122781f5;\n\thasRequiredMenu122781f5 = 1;\n\t(function (exports) {\n\t\texports.MENU_SLOT_NAMES = void 0;\n\t\t(function(MENU_SLOT_NAMES) {\n\t\t  MENU_SLOT_NAMES[\"TODAY\"] = \"today\";\n\t\t  MENU_SLOT_NAMES[\"YESTERDAY\"] = \"yesterday\";\n\t\t  MENU_SLOT_NAMES[\"THIS_WEEK\"] = \"this-week\";\n\t\t  MENU_SLOT_NAMES[\"LAST_WEEK\"] = \"last-week\";\n\t\t  MENU_SLOT_NAMES[\"THIS_MONTH\"] = \"this-month\";\n\t\t  MENU_SLOT_NAMES[\"LAST_MONTH\"] = \"last-month\";\n\t\t  MENU_SLOT_NAMES[\"THIS_YEAR\"] = \"this-year\";\n\t\t  MENU_SLOT_NAMES[\"LAST_YEAR\"] = \"last-year\";\n\t\t  MENU_SLOT_NAMES[\"PAY_PERIOD\"] = \"pay-period\";\n\t\t  MENU_SLOT_NAMES[\"CUSTOM\"] = \"custom\";\n\t\t})(exports.MENU_SLOT_NAMES || (exports.MENU_SLOT_NAMES = {})); \n\t} (menu122781f5));\n\treturn menu122781f5;\n}\n\nvar indexB1e6d30f = {};\n\nvar hasRequiredIndexB1e6d30f;\n\nfunction requireIndexB1e6d30f () {\n\tif (hasRequiredIndexB1e6d30f) return indexB1e6d30f;\n\thasRequiredIndexB1e6d30f = 1;\n\tfunction _typeof(o) {\n\t  \"@babel/helpers - typeof\";\n\t  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o2) {\n\t    return typeof o2;\n\t  } : function(o2) {\n\t    return o2 && \"function\" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? \"symbol\" : typeof o2;\n\t  }, _typeof(o);\n\t}\n\tfunction toInteger(dirtyNumber) {\n\t  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n\t    return NaN;\n\t  }\n\t  var number = Number(dirtyNumber);\n\t  if (isNaN(number)) {\n\t    return number;\n\t  }\n\t  return number < 0 ? Math.ceil(number) : Math.floor(number);\n\t}\n\tfunction requiredArgs(required, args) {\n\t  if (args.length < required) {\n\t    throw new TypeError(required + \" argument\" + (required > 1 ? \"s\" : \"\") + \" required, but only \" + args.length + \" present\");\n\t  }\n\t}\n\tfunction toDate(argument) {\n\t  requiredArgs(1, arguments);\n\t  var argStr = Object.prototype.toString.call(argument);\n\t  if (argument instanceof Date || _typeof(argument) === \"object\" && argStr === \"[object Date]\") {\n\t    return new Date(argument.getTime());\n\t  } else if (typeof argument === \"number\" || argStr === \"[object Number]\") {\n\t    return new Date(argument);\n\t  } else {\n\t    if ((typeof argument === \"string\" || argStr === \"[object String]\") && typeof console !== \"undefined\") {\n\t      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n\t      console.warn(new Error().stack);\n\t    }\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t}\n\tvar defaultOptions = {};\n\tfunction getDefaultOptions() {\n\t  return defaultOptions;\n\t}\n\tindexB1e6d30f._typeof = _typeof;\n\tindexB1e6d30f.getDefaultOptions = getDefaultOptions;\n\tindexB1e6d30f.requiredArgs = requiredArgs;\n\tindexB1e6d30f.toDate = toDate;\n\tindexB1e6d30f.toInteger = toInteger;\n\treturn indexB1e6d30f;\n}\n\nvar index01bbb062 = {};\n\nvar hasRequiredIndex01bbb062;\n\nfunction requireIndex01bbb062 () {\n\tif (hasRequiredIndex01bbb062) return index01bbb062;\n\thasRequiredIndex01bbb062 = 1;\n\tconst index = requireIndexB1e6d30f();\n\tfunction startOfDay(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction isSameDay(dirtyDateLeft, dirtyDateRight) {\n\t  index.requiredArgs(2, arguments);\n\t  var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n\t  var dateRightStartOfDay = startOfDay(dirtyDateRight);\n\t  return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n\t}\n\tfunction isAfter(dirtyDate, dirtyDateToCompare) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var dateToCompare = index.toDate(dirtyDateToCompare);\n\t  return date.getTime() > dateToCompare.getTime();\n\t}\n\tfunction isBefore(dirtyDate, dirtyDateToCompare) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var dateToCompare = index.toDate(dirtyDateToCompare);\n\t  return date.getTime() < dateToCompare.getTime();\n\t}\n\tindex01bbb062.isAfter = isAfter;\n\tindex01bbb062.isBefore = isBefore;\n\tindex01bbb062.isSameDay = isSameDay;\n\tindex01bbb062.startOfDay = startOfDay;\n\treturn index01bbb062;\n}\n\nvar hasRequiredMarketDatePicker_cjs_entry;\n\nfunction requireMarketDatePicker_cjs_entry () {\n\tif (hasRequiredMarketDatePicker_cjs_entry) return marketDatePicker_cjs_entry;\n\thasRequiredMarketDatePicker_cjs_entry = 1;\n\tObject.defineProperty(marketDatePicker_cjs_entry, \"__esModule\", { value: true });\n\tconst index$1 = requireIndex37364565();\n\tconst menu = requireMenu122781f5();\n\tconst index$3 = index254d04f0.requireIndex254d04f0();\n\tconst index = requireIndexB1e6d30f();\n\tconst index$2 = requireIndex01bbb062();\n\tconst v4 = requireV48e8d6fbc();\n\tfunction addDays(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  if (isNaN(amount)) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  if (!amount) {\n\t    return date;\n\t  }\n\t  date.setDate(date.getDate() + amount);\n\t  return date;\n\t}\n\tfunction addMonths(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  if (isNaN(amount)) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  if (!amount) {\n\t    return date;\n\t  }\n\t  var dayOfMonth = date.getDate();\n\t  var endOfDesiredMonth = new Date(date.getTime());\n\t  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n\t  var daysInMonth = endOfDesiredMonth.getDate();\n\t  if (dayOfMonth >= daysInMonth) {\n\t    return endOfDesiredMonth;\n\t  } else {\n\t    date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n\t    return date;\n\t  }\n\t}\n\tfunction startOfWeek(dirtyDate, options) {\n\t  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(1, arguments);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  var date = index.toDate(dirtyDate);\n\t  var day = date.getDay();\n\t  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\t  date.setDate(date.getDate() - diff);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction addWeeks(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  var days = amount * 7;\n\t  return addDays(dirtyDate, days);\n\t}\n\tfunction addYears(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return addMonths(dirtyDate, amount * 12);\n\t}\n\tfunction endOfDay(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  date.setHours(23, 59, 59, 999);\n\t  return date;\n\t}\n\tfunction startOfMonth(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  date.setDate(1);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction startOfYear(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var cleanDate = index.toDate(dirtyDate);\n\t  var date = /* @__PURE__ */ new Date(0);\n\t  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction endOfWeek(dirtyDate, options) {\n\t  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(1, arguments);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  var date = index.toDate(dirtyDate);\n\t  var day = date.getDay();\n\t  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\t  date.setDate(date.getDate() + diff);\n\t  date.setHours(23, 59, 59, 999);\n\t  return date;\n\t}\n\tfunction lastDayOfMonth(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var month = date.getMonth();\n\t  date.setFullYear(date.getFullYear(), month + 1, 0);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction lastDayOfYear(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var year = date.getFullYear();\n\t  date.setFullYear(year + 1, 0, 0);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction startOfYesterday() {\n\t  var now = /* @__PURE__ */ new Date();\n\t  var year = now.getFullYear();\n\t  var month = now.getMonth();\n\t  var day = now.getDate();\n\t  var date = /* @__PURE__ */ new Date(0);\n\t  date.setFullYear(year, month, day - 1);\n\t  date.setHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction subMonths(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return addMonths(dirtyDate, -amount);\n\t}\n\tfunction subWeeks(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return addWeeks(dirtyDate, -amount);\n\t}\n\tfunction subYears(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return addYears(dirtyDate, -amount);\n\t}\n\tconst marketDatePickerCss = ':host{display:flex}@media only screen and (max-width: 800px){:host([mobile-menu-position=\"top\"]){flex-direction:column}:host([mobile-menu-position=\"top\"]) list-view{margin-bottom:var(--date-picker-menu-vertical-spacing)}:host([mobile-menu-position=\"bottom\"]){flex-direction:column-reverse}:host([mobile-menu-position=\"bottom\"]) list-view{margin-top:var(--date-picker-menu-vertical-spacing)}}header{height:var(--date-picker-header-minimum-height);margin-bottom:var(--date-picker-header-vertical-spacing)}nav{display:flex;justify-content:space-between;align-items:center}:host([year-view-active]) nav{justify-content:center}[id^=\"date-picker-label-\"]{margin:0}.year-view-button{color:var(--date-picker-month-year-label-color, var(--core-text-10-color))}.year-view-button:hover,.year-view-button:active{background-color:transparent;color:var(--core-emphasis-text-color)}.year-view-button::part(button-text){border-bottom:none;line-height:unset;text-decoration-line:none}.year-view-button:hover::part(button-text),.year-view-button:active::part(button-text){text-decoration-line:underline}.caret{margin-left:var(--date-picker-header-button-padding)}:host([year-view-active]) .caret{transform:rotate(-180deg)}calendar{min-width:var(--date-picker-minimum-width)}month-view{display:grid;grid-template-rows:repeat(auto-fill, 1fr);grid-template-columns:repeat(7, 1fr);gap:var(--date-picker-grid-item-vertical-padding) var(--date-picker-grid-item-horizontal-padding);box-sizing:border-box}year-section{display:flex;gap:var(--date-picker-grid-item-year-button-vertical-padding, 0)\\n    var(--date-picker-grid-item-year-button-horizontal-padding, 12.5px);box-sizing:border-box}year-section .market-icon{width:var(--date-picker-grid-item-year-button-icon-size, var(--accessory-icon-variant-medium-size-height))}month-section{display:grid;grid-template-rows:repeat(3, 1fr);grid-template-columns:repeat(4, 1fr);gap:var(--date-picker-grid-item-month-button-vertical-padding, 16px)\\n    var(--date-picker-grid-item-month-button-horizontal-padding, 26.67px);box-sizing:border-box}';\n\tconst MarketDatePickerStyle0 = marketDatePickerCss;\n\tclass Day {\n\t  constructor() {\n\t    this.date = \"\";\n\t    this.year = null;\n\t    this.selected = false;\n\t    this.selection = \"none\";\n\t    this.today = false;\n\t    this.disabled = false;\n\t  }\n\t}\n\tconst MarketDatePicker = class {\n\t  constructor(hostRef) {\n\t    index$1.registerInstance(this, hostRef);\n\t    this.marketDateRangeChanged = index$1.createEvent(this, \"marketDateRangeChanged\", 7);\n\t    this.marketMenuSelectionChanged = index$1.createEvent(this, \"marketMenuSelectionChanged\", 7);\n\t    this.yearViewMonthList = [];\n\t    this.selectionType = \"single\";\n\t    this.selectedStartDate = void 0;\n\t    this.selectedEndDate = void 0;\n\t    this.payPeriodStartDate = void 0;\n\t    this.payPeriodEndDate = void 0;\n\t    this.presetMenuOption = void 0;\n\t    this.displayMenu = false;\n\t    this.mobileMenuPosition = \"top\";\n\t    this.excludeMenuItems = \"\";\n\t    this.timeframe = \"present\";\n\t    this.weekStartsOn = void 0;\n\t    this.isDateDisabled = void 0;\n\t    this.locale = navigator.language || \"en-US\";\n\t    this.displayedDate = void 0;\n\t    this.withInputs = \"\";\n\t    this.invalid = false;\n\t    this.disableViewToggle = false;\n\t    this.yearViewActive = false;\n\t    this.displayedMonth = void 0;\n\t    this.displayedWeekdays = [];\n\t    this.yearViewYearsList = [];\n\t    this.hoveredDate = void 0;\n\t  }\n\t  /**\n\t   * Resets the date picker menu by resetting to the preset menu option if it exists.\n\t   */\n\t  resetMenu() {\n\t    var _a, _b;\n\t    if (this.presetMenuOption && this.displayMenu) {\n\t      const menu2 = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(\"market-date-picker-menu\");\n\t      const menuRows = (_b = menu2 === null || menu2 === void 0 ? void 0 : menu2.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll(\"market-row\");\n\t      menuRows.forEach((row) => {\n\t        if (row.getAttribute(\"value\") === this.presetMenuOption) {\n\t          row.click();\n\t        }\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Build out the weekday headers based on locale for the calendar view.\n\t   */\n\t  buildWeekdays() {\n\t    this.displayedWeekdays = [];\n\t    const weekday = startOfWeek(/* @__PURE__ */ new Date(), { weekStartsOn: this.getLocaleFirstDayOfWeek() });\n\t    let weekdayText;\n\t    for (let d = 0; d < 7; d++) {\n\t      weekdayText = weekday.toLocaleDateString(this.locale, { weekday: \"short\" });\n\t      if (this.locale.startsWith(\"en-\")) {\n\t        weekdayText = weekdayText.slice(0, -1);\n\t      }\n\t      this.displayedWeekdays.push(weekdayText);\n\t      weekday.setDate(weekday.getDate() + 1);\n\t    }\n\t  }\n\t  getFirstDayOfWeek() {\n\t    const days = [\"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\"];\n\t    const firstDay = days.indexOf(this.weekStartsOn);\n\t    return firstDay !== -1 ? firstDay : this.getLocaleFirstDayOfWeek();\n\t  }\n\t  getLocaleFirstDayOfWeek() {\n\t    var _a, _b, _c, _d, _e;\n\t    const intl = new Intl.Locale(this.locale);\n\t    const firstDay = (_e = (_b = (_a = intl === null || intl === void 0 ? void 0 : intl.weekInfo) === null || _a === void 0 ? void 0 : _a.firstDay) !== null && _b !== void 0 ? _b : (_d = (_c = intl === null || intl === void 0 ? void 0 : intl.getWeekInfo) === null || _c === void 0 ? void 0 : _c.call(intl)) === null || _d === void 0 ? void 0 : _d.firstDay) !== null && _e !== void 0 ? _e : 0;\n\t    return firstDay % 7;\n\t  }\n\t  /**\n\t   * Compares current hovered date to selected dates to determine correct styling for selection.\n\t   */\n\t  addHoveredDateRangeStyling(currentDate, datePickerDay) {\n\t    if (!this.hoveredDate) {\n\t      return;\n\t    }\n\t    const currentStartDate = new Date(this.selectedStartDate);\n\t    if (this.selectedStartDate && !this.selectedEndDate && index$2.isBefore(currentDate, this.hoveredDate) && index$2.isAfter(currentDate, currentStartDate)) {\n\t      datePickerDay.selection = \"range-middle\";\n\t    }\n\t    if (!index$2.isSameDay(this.hoveredDate, currentDate)) {\n\t      return;\n\t    }\n\t    if (!this.selectedStartDate || this.selectedStartDate && this.selectedEndDate || !index$2.isAfter(this.hoveredDate, currentStartDate)) {\n\t      datePickerDay.selection = \"range-first\";\n\t    } else {\n\t      datePickerDay.selection = \"range-last\";\n\t    }\n\t  }\n\t  /**\n\t   * Helper function to add selection metadata to the date object being processed in buildCalendar.\n\t   */\n\t  addDateSelectionAttributes(day, calendarDate, currentStartDate, currentEndDate) {\n\t    if (!day.date) {\n\t      return;\n\t    }\n\t    if (currentStartDate && index$2.isSameDay(calendarDate, currentStartDate)) {\n\t      day.selected = true;\n\t      day.selection = this.selectionType === \"single\" ? \"single\" : \"range-first\";\n\t    }\n\t    if (this.selectionType === \"range\") {\n\t      this.addHoveredDateRangeStyling(calendarDate, day);\n\t      if (currentStartDate && currentEndDate && index$2.isAfter(calendarDate, currentStartDate) && index$2.isBefore(calendarDate, currentEndDate)) {\n\t        day.selected = true;\n\t        day.selection = \"range-middle\";\n\t      }\n\t      if (currentEndDate && index$2.isSameDay(calendarDate, currentEndDate)) {\n\t        day.selected = true;\n\t        day.selection = \"range-last\";\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * The main chunk of this component is building out the calendar view.\n\t   * Ensures correct styling and formatting is placed on each date component.\n\t   * Adapted from: https://ionicframework.com/blog/building-with-stencil-calendar-component/\n\t   */\n\t  buildCalendar() {\n\t    const today = /* @__PURE__ */ new Date();\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    const calendar = new Date(currentDisplayedDate.getFullYear(), currentDisplayedDate.getMonth(), 1);\n\t    const firstDayOffset = this.getLocaleFirstDayOfWeek();\n\t    if (calendar.getDay() === 0 && firstDayOffset === 1) {\n\t      calendar.setDate(calendar.getDate() - 6);\n\t    } else {\n\t      calendar.setDate(calendar.getDate() - (calendar.getDay() - firstDayOffset));\n\t    }\n\t    this.days = [];\n\t    const currentStartDate = this.selectedStartDate && new Date(this.selectedStartDate);\n\t    const currentEndDate = this.selectedEndDate && new Date(this.selectedEndDate);\n\t    for (let d = 0; d < 42; d++) {\n\t      const day = new Day();\n\t      day.year = calendar.getFullYear();\n\t      day.month = calendar.getMonth();\n\t      if (calendar.getFullYear() === currentDisplayedDate.getFullYear() && calendar.getMonth() === currentDisplayedDate.getMonth()) {\n\t        day.date = calendar.getDate().toString();\n\t      }\n\t      if (index$2.isSameDay(calendar, today)) {\n\t        day.today = true;\n\t      }\n\t      this.addDateSelectionAttributes(day, calendar, currentStartDate, currentEndDate);\n\t      if (day.date && this.isDateDisabled) {\n\t        day.disabled = this.isDateDisabled(calendar);\n\t      }\n\t      if (this.timeframe === \"future\" && index$2.isBefore(calendar, today) && !index$2.isSameDay(calendar, today)) {\n\t        day.disabled = true;\n\t      }\n\t      if (this.timeframe === \"past\" && index$2.isAfter(calendar, today) && !index$2.isSameDay(calendar, today)) {\n\t        day.disabled = true;\n\t      }\n\t      this.days.push(day);\n\t      calendar.setDate(calendar.getDate() + 1);\n\t      if (calendar.getDay() === 0 + firstDayOffset && calendar.getMonth() !== currentDisplayedDate.getMonth()) {\n\t        break;\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Helper function to clear date selections.\n\t   */\n\t  clearDateSelections() {\n\t    this.selectedStartDate = null;\n\t    this.selectedEndDate = null;\n\t  }\n\t  /**\n\t   * Used for the navigation arrows in the market-date-picker header, moves the calendar forward/backward by increment.\n\t   * Currently only used for +1/-1 month.\n\t   */\n\t  navigateMonth(increment) {\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    this.displayedDate = new Date(currentDisplayedDate.getFullYear(), currentDisplayedDate.getMonth() + increment, 1).toISOString();\n\t  }\n\t  /**\n\t   *  When ever an event changes the selected date, this updates the calendar view.\n\t   *  The event receives a date string in the yyyy-mm-dd or yyy-mm-ddThh:mm format.\n\t   *  this then checks what parts of the date have changed and only sends the changed parts to the\n\t   * _selectDate function that receives (day, month, year)\n\t   */\n\t  dateInputDateSet({ detail: { date, input } }) {\n\t    const [newDate, time] = date.split(\"T\");\n\t    const [newYear, newMonth, newDay] = newDate.split(\"-\").map(Number);\n\t    this.displayedDate = new Date(newYear, newMonth - 1, 1).toString();\n\t    const [hour, minute] = this.withInputs === \"date-and-time\" ? time.split(\":\").map(Number) : [];\n\t    this._selectDate({\n\t      day: newDay,\n\t      month: newMonth - 1,\n\t      year: newYear,\n\t      hour,\n\t      minute,\n\t      input\n\t    });\n\t  }\n\t  /**\n\t   * Whenever a market-date-picker-date is selected, this updates the selected date props, which then updates the calendar view.\n\t   */\n\t  selectDate({ detail: { date: dateElement } }) {\n\t    if (dateElement.type !== \"day\") {\n\t      this.updateDisplayedHeader(dateElement.type, dateElement.day);\n\t    } else {\n\t      this._selectDate({ day: dateElement.day });\n\t    }\n\t  }\n\t  /**\n\t   * Whenever a market-date-picker-date is moused over or hovered, this updates the hovered date to update the calendar view.\n\t   */\n\t  hoverDate({ detail: { date: dateElement } }) {\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    this.hoveredDate = new Date(currentDisplayedDate.getFullYear(), currentDisplayedDate.getMonth(), dateElement.day);\n\t  }\n\t  /**\n\t   * Whenever a market-date-picker-date is moused out, clear any hovering styling in the calendar view.\n\t   */\n\t  mousedOutDate() {\n\t    this.hoveredDate = null;\n\t  }\n\t  /**\n\t   * Whenever a market-row within market-date-picker-menu is selected, this ensures we move the current selected dates\n\t   * to whichever option the user has selected.\n\t   */\n\t  selectMenuRow(e) {\n\t    const menuOption = e.detail.menuSelection;\n\t    if (!menuOption) {\n\t      return;\n\t    }\n\t    this.marketMenuSelectionChanged.emit({\n\t      menuSelection: menuOption\n\t    });\n\t    const prevStartDate = this.selectedStartDate;\n\t    const prevEndDate = this.selectedEndDate;\n\t    this._setMenuRowOption(menuOption);\n\t    if (menuOption !== menu.MENU_SLOT_NAMES.CUSTOM) {\n\t      this.marketDateRangeChanged.emit({\n\t        prevStartDate,\n\t        prevEndDate,\n\t        startDate: this.selectedStartDate,\n\t        endDate: this.selectedEndDate,\n\t        menuSelection: menuOption\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * Updates invalid state of date picker based on date input selections\n\t   */\n\t  setInvalidState({ detail: { invalid } }) {\n\t    this.invalid = invalid;\n\t  }\n\t  _setMenuRowOption(menuOption) {\n\t    const today = /* @__PURE__ */ new Date();\n\t    const weekStartsOn = this.getFirstDayOfWeek();\n\t    switch (menuOption) {\n\t      case menu.MENU_SLOT_NAMES.TODAY:\n\t        this.clearDateSelections();\n\t        this.selectedStartDate = today.toISOString();\n\t        break;\n\t      case menu.MENU_SLOT_NAMES.YESTERDAY:\n\t        this.clearDateSelections();\n\t        this.selectedStartDate = startOfYesterday().toISOString();\n\t        break;\n\t      case menu.MENU_SLOT_NAMES.THIS_WEEK:\n\t        this.selectedStartDate = startOfWeek(today, { weekStartsOn }).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = endOfWeek(today, { weekStartsOn }).toISOString();\n\t        }\n\t        break;\n\t      case menu.MENU_SLOT_NAMES.LAST_WEEK: {\n\t        const lastWeekDate = subWeeks(today, 1);\n\t        this.selectedStartDate = startOfWeek(lastWeekDate, { weekStartsOn }).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = endOfWeek(lastWeekDate, { weekStartsOn }).toISOString();\n\t        }\n\t        break;\n\t      }\n\t      case menu.MENU_SLOT_NAMES.THIS_MONTH:\n\t        this.selectedStartDate = startOfMonth(today).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = lastDayOfMonth(today).toISOString();\n\t        }\n\t        break;\n\t      case menu.MENU_SLOT_NAMES.LAST_MONTH: {\n\t        const lastMonthDate = subMonths(today, 1);\n\t        this.selectedStartDate = startOfMonth(lastMonthDate).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = lastDayOfMonth(lastMonthDate).toISOString();\n\t        }\n\t        break;\n\t      }\n\t      case menu.MENU_SLOT_NAMES.THIS_YEAR:\n\t        this.selectedStartDate = startOfYear(today).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = lastDayOfYear(today).toISOString();\n\t        }\n\t        break;\n\t      case menu.MENU_SLOT_NAMES.LAST_YEAR: {\n\t        const lastYearDate = subYears(today, 1);\n\t        this.selectedStartDate = startOfYear(lastYearDate).toISOString();\n\t        if (this.selectionType === \"range\") {\n\t          this.selectedEndDate = lastDayOfYear(lastYearDate).toISOString();\n\t        }\n\t        break;\n\t      }\n\t      case menu.MENU_SLOT_NAMES.PAY_PERIOD: {\n\t        const startDate = new Date(this.payPeriodStartDate);\n\t        const endDate = new Date(this.payPeriodEndDate);\n\t        this.selectedStartDate = index$2.startOfDay(startDate).toISOString();\n\t        this.selectedEndDate = endOfDay(endDate).toISOString();\n\t        break;\n\t      }\n\t    }\n\t    if (menuOption !== menu.MENU_SLOT_NAMES.CUSTOM) {\n\t      this.displayedDate = this.selectedStartDate;\n\t    }\n\t  }\n\t  _selectDate(options) {\n\t    var _a;\n\t    const prevStartDate = this.selectedStartDate;\n\t    const prevEndDate = this.selectedEndDate;\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    const checkedMonth = (_a = options.month) !== null && _a !== void 0 ? _a : currentDisplayedDate.getMonth();\n\t    const day = new Date(options.year || currentDisplayedDate.getFullYear(), checkedMonth, options.day || currentDisplayedDate.getDate(), options.hour || currentDisplayedDate.getHours(), options.minute || currentDisplayedDate.getMinutes()).toISOString();\n\t    if (this.displayMenu && !index$2.isSameDay(new Date(this.selectedStartDate), new Date(day))) {\n\t      const menu2 = this.el.shadowRoot.querySelector(index$3.getNamespacedTagFor(\"market-date-picker-menu\"));\n\t      menu2._selectCustomRow();\n\t    }\n\t    if (this.selectionType === \"single\") {\n\t      this.clearDateSelections();\n\t      this.selectedStartDate = day;\n\t    } else {\n\t      if (this.selectedStartDate && !this.selectedEndDate && day >= this.selectedStartDate) {\n\t        this.selectedEndDate = day;\n\t      } else {\n\t        if (options.input) {\n\t          if (options.input === \"start\")\n\t            this.selectedStartDate = day;\n\t          if (options.input === \"end\")\n\t            this.selectedEndDate = day;\n\t        } else {\n\t          this.clearDateSelections();\n\t          this.selectedStartDate = day;\n\t        }\n\t      }\n\t    }\n\t    this.marketDateRangeChanged.emit({\n\t      prevStartDate,\n\t      prevEndDate,\n\t      startDate: this.selectedStartDate,\n\t      endDate: this.selectedEndDate,\n\t      menuSelection: menu.MENU_SLOT_NAMES.CUSTOM\n\t    });\n\t  }\n\t  // MONTH & YEAR VIEW FUNCTIONS\n\t  toggleCaret() {\n\t    this.yearViewActive = !this.yearViewActive;\n\t  }\n\t  validateDisplayedDate(date) {\n\t    if (new Date(date).toString() === \"Invalid Date\") {\n\t      this.displayedDate = (/* @__PURE__ */ new Date()).toISOString();\n\t    }\n\t  }\n\t  buildInitialYearView() {\n\t    this.validateDisplayedDate(this.displayedDate);\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    const currentYear = currentDisplayedDate.getFullYear();\n\t    this.yearViewYearsList = [(currentYear - 1).toString(), currentYear.toString(), (currentYear + 1).toString()];\n\t    for (let i = 0; i < 12; i++) {\n\t      const monthName = new Date(2024, i).toLocaleDateString(this.locale, { month: \"short\" });\n\t      this.yearViewMonthList.push(monthName);\n\t    }\n\t  }\n\t  updateDisplayedYearList(increment) {\n\t    this.yearViewYearsList = this.yearViewYearsList.map((year) => {\n\t      return (Number(year) + increment).toString();\n\t    });\n\t  }\n\t  updateDisplayedHeader(type, value) {\n\t    var _a;\n\t    let updatedDate;\n\t    if (type === \"year\") {\n\t      updatedDate = { year: value };\n\t    }\n\t    if (type === \"month\") {\n\t      const monthDate = /* @__PURE__ */ new Date(`${value} 1`);\n\t      const monthValue = monthDate.toLocaleDateString(this.locale, { month: \"numeric\" });\n\t      updatedDate = { month: Number(monthValue) - 1 };\n\t      this.toggleCaret();\n\t    }\n\t    const currentDisplayedDate = new Date(this.displayedDate);\n\t    const checkedMonth = (_a = updatedDate === null || updatedDate === void 0 ? void 0 : updatedDate.month) !== null && _a !== void 0 ? _a : currentDisplayedDate.getMonth();\n\t    const day = new Date(updatedDate.year || currentDisplayedDate.getFullYear(), checkedMonth, 1).toISOString();\n\t    this.displayedDate = day;\n\t  }\n\t  getExcludedMenuItems() {\n\t    if (this.selectionType === \"range\" && this.payPeriodStartDate && this.payPeriodEndDate) {\n\t      return this.excludeMenuItems;\n\t    }\n\t    return [.../* @__PURE__ */ new Set([...this.excludeMenuItems.split(\",\"), menu.MENU_SLOT_NAMES.PAY_PERIOD])].join(\",\");\n\t  }\n\t  componentWillLoad() {\n\t    if (this.presetMenuOption) {\n\t      this._setMenuRowOption(this.presetMenuOption);\n\t    }\n\t    this.buildInitialYearView();\n\t    this.datePickerLabel = `date-picker-label-${v4.v4()}`;\n\t  }\n\t  /**\n\t   * Core function called whenever props or states are changed to update the calendar view.\n\t   */\n\t  componentWillRender() {\n\t    this.validateDisplayedDate(this.displayedDate);\n\t    this.displayedMonth = new Date(this.displayedDate).toLocaleString(this.locale, { month: \"short\", year: \"numeric\" });\n\t    this.buildWeekdays();\n\t    this.buildCalendar();\n\t  }\n\t  render() {\n\t    const MarketDatePickerMenuTagName = index$3.getNamespacedTagFor(\"market-date-picker-menu\");\n\t    const MarketDatePickerDateTagName = index$3.getNamespacedTagFor(\"market-date-picker-date\");\n\t    const MarketDatePickerInputDateTagName = index$3.getNamespacedTagFor(\"market-date-picker-input-date\");\n\t    const MarketButtonTagName = index$3.getNamespacedTagFor(\"market-button\");\n\t    const MarketIconTagName = index$3.getNamespacedTagFor(\"market-icon\");\n\t    const MarketDividerTagName = index$3.getNamespacedTagFor(\"market-divider\");\n\t    const DATE_PICKER_BUTTON_PREVIOUS_YEAR_ICON_ASSET = \"chevron-left\";\n\t    const DATE_PICKER_BUTTON_NEXT_YEAR_ICON_ASSET = \"chevron-right\";\n\t    const DATE_PICKER_BUTTON_PREVIOUS_MONTH_ICON_ASSET = \"arrow-left\";\n\t    const DATE_PICKER_BUTTON_NEXT_MONTH_ICON_ASSET = \"arrow-right\";\n\t    return index$1.h(index$1.Host, { key: \"8c1fc58386877c44796263725cb876c37931f83b\", class: \"market-date-picker\" }, this.displayMenu && index$1.h(\"list-view\", { key: \"1bda8906cc8ffd0de30d7204c485da7cd4c45815\" }, index$1.h(MarketDatePickerMenuTagName, { key: \"0c419123676bd6c3231012800862350999e4688c\", timeframe: this.timeframe, excludeMenuItems: this.getExcludedMenuItems(), presetMenuOption: this.presetMenuOption }, index$1.h(\"slot\", { key: \"40af9c029e4547c8aa42fa0518bbde0deb9cb55f\", name: menu.MENU_SLOT_NAMES.TODAY, slot: menu.MENU_SLOT_NAMES.TODAY }, \"Today\"), index$1.h(\"slot\", { key: \"967368c69b3f84758c6439128ff0b6e7f2489d9f\", name: menu.MENU_SLOT_NAMES.YESTERDAY, slot: menu.MENU_SLOT_NAMES.YESTERDAY }, \"Yesterday\"), index$1.h(\"slot\", { key: \"701c0e48aca092f92c41e3b30b8c57aa4471168f\", name: menu.MENU_SLOT_NAMES.THIS_WEEK, slot: menu.MENU_SLOT_NAMES.THIS_WEEK }, \"This week\"), index$1.h(\"slot\", { key: \"522362bbcdf741f9132ac254179e37c0ea7fef8e\", name: menu.MENU_SLOT_NAMES.LAST_WEEK, slot: menu.MENU_SLOT_NAMES.LAST_WEEK }, \"Last week\"), index$1.h(\"slot\", { key: \"54c58799f50c2f1946abedcc03b0eb8cb47db44e\", name: menu.MENU_SLOT_NAMES.THIS_MONTH, slot: menu.MENU_SLOT_NAMES.THIS_MONTH }, \"This month\"), index$1.h(\"slot\", { key: \"5d9dedbeaf9f8f57d4aa33e145ca98ab5f783a5e\", name: menu.MENU_SLOT_NAMES.LAST_MONTH, slot: menu.MENU_SLOT_NAMES.LAST_MONTH }, \"Last month\"), index$1.h(\"slot\", { key: \"1e589b87638a07ec2834817eef488d9b388392af\", name: menu.MENU_SLOT_NAMES.THIS_YEAR, slot: menu.MENU_SLOT_NAMES.THIS_YEAR }, \"This year\"), index$1.h(\"slot\", { key: \"a666c0af6cf33cbf2b8ab0d644693bb0cfcf86ed\", name: menu.MENU_SLOT_NAMES.LAST_YEAR, slot: menu.MENU_SLOT_NAMES.LAST_YEAR }, \"Last year\"), index$1.h(\"slot\", { key: \"f17b73a488ddc6510f2e65246b0707042c7f63b5\", name: menu.MENU_SLOT_NAMES.PAY_PERIOD, slot: menu.MENU_SLOT_NAMES.PAY_PERIOD }, \"Pay period\"), index$1.h(\"slot\", { key: \"f9d81a87fb2a81d82720e9cc57be40ff3235a19f\", name: menu.MENU_SLOT_NAMES.CUSTOM, slot: menu.MENU_SLOT_NAMES.CUSTOM }, \"Custom\"))), index$1.h(\"calendar\", { key: \"0943dbc18a1639f06e076268f0182f08c1232f98\" }, index$1.h(\"header\", { key: \"92a2ca20696832d2fd8df527ff233a00db8ef468\" }, index$1.h(\"nav\", { key: \"4fbae9891bb40a80e50b63459fee0aa093ebb121\" }, !this.yearViewActive && index$1.h(MarketButtonTagName, { key: \"b49ef635967f6ea1499bd17dfb278e8c001f6010\", class: \"left-nav\", size: \"small\", \"aria-label\": \"Previous month\", onClick: () => this.navigateMonth(-1) }, index$1.h(MarketIconTagName, { key: \"9e32dffea9e2357a603fb454eb6253ff2290fbbf\", slot: \"icon\", name: DATE_PICKER_BUTTON_PREVIOUS_MONTH_ICON_ASSET })), !this.disableViewToggle && index$1.h(MarketButtonTagName, { key: \"b086b43669516353c92b53de14acff45eaceeec8\", class: \"year-view-button\", \"aria-label\": \"Toggle year view\", onClick: () => this.toggleCaret(), caret: this.yearViewActive ? \"up\" : \"down\", rank: \"tertiary\" }, index$1.h(\"h2\", { key: \"46fab0c66abdcd4133707d3f0439f0de943db6dc\", id: this.datePickerLabel }, this.displayedMonth)), this.disableViewToggle && index$1.h(\"h2\", { key: \"b5745482e9e4f50f0c63790d4160d56235230178\", id: this.datePickerLabel }, this.displayedMonth), !this.yearViewActive && index$1.h(MarketButtonTagName, { key: \"48df0f9845231804759bda5ff9619c4b6a9b3841\", size: \"small\", \"aria-label\": \"Next month\", onClick: () => this.navigateMonth(1) }, index$1.h(MarketIconTagName, { key: \"4327d974b0cb52de6178c154f44972664f337ca6\", slot: \"icon\", name: DATE_PICKER_BUTTON_NEXT_MONTH_ICON_ASSET })))), !this.yearViewActive && index$1.h(\n\t      \"month-view\",\n\t      { key: \"80a7497efe27b7e2d3f79085b514ef1be980e91b\", role: \"grid\", \"aria-labelledby\": this.datePickerLabel },\n\t      // Set the weekdays header for the date picker calendar\n\t      this.displayedWeekdays.map((text) => index$1.h(MarketDatePickerDateTagName, { class: \"weekday-header\", disabled: true, day: text })),\n\t      // Set the available dates\n\t      this.days.map((day) => index$1.h(MarketDatePickerDateTagName, { disabled: day.disabled, selection: day.selection, today: day.today, selected: day.selected, day: day.date || null, type: \"day\" }))\n\t    ), this.yearViewActive && index$1.h(\"year-view\", { key: \"f4ec27a7c85e79733329f2cc6e777f93a2c5ff38\", \"aria-labelledby\": this.datePickerLabel }, index$1.h(\"year-section\", { key: \"b2cb92846b2d5b6ae42e51a64243d9d60fee51f8\" }, index$1.h(MarketButtonTagName, { key: \"aaf420af4d3d0b9e0401388fbd4ae2403c17de90\", size: \"small\", rank: \"tertiary\", \"aria-label\": \"Previous year\", onClick: () => this.updateDisplayedYearList(-1) }, index$1.h(MarketIconTagName, { key: \"498d1e69d150ec9ccbe069a610fd81e2f8005b0f\", slot: \"icon\", name: DATE_PICKER_BUTTON_PREVIOUS_YEAR_ICON_ASSET })), this.yearViewYearsList.map((year) => index$1.h(MarketDatePickerDateTagName, { day: year, type: \"year\" })), index$1.h(MarketButtonTagName, { key: \"4282a8aeaebb4d1f337b994e7a6e2ab48ba84f2c\", size: \"small\", rank: \"tertiary\", \"aria-label\": \"Next year\", onClick: () => this.updateDisplayedYearList(1) }, index$1.h(MarketIconTagName, { key: \"c113a1c3700cf9eadeec88545dc3247312072537\", slot: \"icon\", name: DATE_PICKER_BUTTON_NEXT_YEAR_ICON_ASSET }))), index$1.h(MarketDividerTagName, { key: \"dc89d8c915e7ef449d6c00997fcc8a938e7f77c4\", size: \"thin\" }), index$1.h(\"month-section\", { key: \"a4bcc46a81214c7584147047136e449df0048e63\", role: \"grid\" }, this.yearViewMonthList.map((monthName) => index$1.h(MarketDatePickerDateTagName, { day: monthName, type: \"month\" })))), this.withInputs && index$1.h(MarketDatePickerInputDateTagName, { key: \"23fbb1de6970fcfb830f95812652d82432e62a0a\", class: \"date-input-top-margin\", range: this.selectionType === \"range\", isDateDisabled: this.isDateDisabled, selectedStartDate: this.selectedStartDate, selectedEndDate: this.selectedEndDate, withTime: this.withInputs === \"date-and-time\", timeframe: this.timeframe }, index$1.h(\"slot\", { key: \"37d4a1db846e61efcf73da8beca96fa503e997b0\", name: \"start-date\", slot: \"start-date\" }, this.selectionType === \"range\" ? \"Start \" : \"\", \"Date\"), index$1.h(\"slot\", { key: \"2d5cbb85cf2206fc98281044fcd62142d42955f8\", name: \"end-date\", slot: \"end-date\" }, \"End Date\"), index$1.h(\"slot\", { key: \"fca7acf171d21c814d43d5a1a60e14b1d8a1cafa\", name: \"start-time\", slot: \"start-time\" }, this.selectionType === \"range\" ? \"Start \" : \"\", \"Time\"), index$1.h(\"slot\", { key: \"7404dea290c7bd3b23ac708b18912733c22b0d4d\", name: \"end-time\", slot: \"end-time\" }, \"End Time\"), index$1.h(\"slot\", { key: \"f6f8ca216b19bebac9ee6d2fef45ccaeb617e111\", name: \"range-error\", slot: \"range-error\" }, \"Enter a valid date range\"))));\n\t  }\n\t  get el() {\n\t    return index$1.getElement(this);\n\t  }\n\t};\n\tMarketDatePicker.style = MarketDatePickerStyle0;\n\tmarketDatePicker_cjs_entry.market_date_picker = MarketDatePicker;\n\treturn marketDatePicker_cjs_entry;\n}\n\nvar marketDatePickerDate_cjs_entry = {};\n\nvar hasRequiredMarketDatePickerDate_cjs_entry;\n\nfunction requireMarketDatePickerDate_cjs_entry () {\n\tif (hasRequiredMarketDatePickerDate_cjs_entry) return marketDatePickerDate_cjs_entry;\n\thasRequiredMarketDatePickerDate_cjs_entry = 1;\n\tObject.defineProperty(marketDatePickerDate_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketDatePickerDateCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host(:not([day])){border-width:0 !important;border-radius:0 !important;background-color:rgb(0 0 0 / 0%) !important;color:rgb(0 0 0 / 0%) !important;pointer-events:none !important;}:host{--date-picker-date-range-first-selection-border-radius:var(--date-picker-date-border-radius)\n    0\n    0\n    var(--date-picker-date-border-radius);--date-picker-date-range-last-selection-border-radius:0\n    var(--date-picker-date-border-radius)\n    var(--date-picker-date-border-radius)\n    0;position:relative;display:inline-flex;flex-direction:row;justify-content:center;align-items:center;width:100%;padding:0;font-size:var(--date-picker-weekdays-font-size);line-height:var(--date-picker-weekdays-font-leading);text-align:center}:host([disabled]){color:var(--date-picker-date-text-unselected-selection-disabled-state-color);cursor:not-allowed}:host(.weekday-header){color:var(--date-picker-weekdays-color-color);cursor:auto}:host(:not([selection='range-middle'])){border-radius:var(--date-picker-date-border-radius)}:host([selection='none']:not([disabled])){color:var(--date-picker-date-text-unselected-selection-normal-state-color)}:host([selection='range-first']){border-radius:var(--date-picker-date-range-first-selection-border-radius);background:linear-gradient(\n        to right,\n        transparent 50%,\n        var(--date-picker-date-background-range-middle-selection-normal-state-color) 50%\n      )}:host([selection='range-middle']){background-color:var(--date-picker-date-background-range-middle-selection-normal-state-color)}:host([selection='range-last']){border-radius:var(--date-picker-date-range-last-selection-border-radius);background:linear-gradient(\n        to right,\n        var(--date-picker-date-background-range-middle-selection-normal-state-color) 50%,\n        transparent 50%\n      )}:host(:hover[selection='range-first']:not([selected]):not([today])),:host(:active[selection='range-first']:not([selected]):not([today])){border-radius:var(--date-picker-date-range-first-selection-border-radius)}:host([selection='range-middle'][disabled][today]){border-color:var(--date-picker-date-border-disabled-state-color-color)}:host(:hover[selection='range-last']:not([selected]):not([today])),:host(:active[selection='range-last']:not([selected]):not([today])){border-radius:var(--date-picker-date-range-last-selection-border-radius)}:host([today]){box-sizing:border-box;font-weight:var(--date-picker-today-font-weight)}:host([today]:not([disabled])){border-color:var(--date-picker-today-border-color-color)}:host([today][disabled]){color:var(--date-picker-today-label-disabled-state-color-color)}:host(:hover:not([disabled])){cursor:pointer}:host(:hover:not([disabled]):not([selected])){background:initial;background-color:var(--date-picker-date-background-unselected-selection-hover-state-color);color:var(--date-picker-date-text-unselected-selection-hover-state-color)}:host(:active:not([disabled]):not([selected])){background:initial;background-color:var(--date-picker-date-background-unselected-selection-pressed-state-color);color:var(--date-picker-date-text-unselected-selection-pressed-state-color)}:host(:focus-visible){outline:none}:host(:focus-visible) .market-date-picker-date-inner-container{z-index:2;outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color)}.market-date-picker-date-inner-container{display:flex;justify-content:center;align-items:center;width:100%;min-width:var(--date-picker-grid-item-width);height:var(--date-picker-grid-item-height);border-radius:var(--date-picker-date-border-radius)}:host([today]) .market-date-picker-date-inner-container{box-sizing:border-box;border-width:var(--date-picker-today-border-width);border-style:solid}:host([selection=\"single\"][selected]) .market-date-picker-date-inner-container,:host([selection=\"range-first\"][selected]) .market-date-picker-date-inner-container,:host([selection=\"range-last\"][selected]) .market-date-picker-date-inner-container{background-color:var(--date-picker-date-background-single-selection-normal-state-color);color:var(--date-picker-date-text-single-selection-disabled-state-color)}:host([selection=\"single\"][disabled][selected]) .market-date-picker-date-inner-container,:host([selection=\"range-first\"][disabled][selected]) .market-date-picker-date-inner-container,:host([selection=\"range-last\"][disabled][selected]) .market-date-picker-date-inner-container{background-color:var(--date-picker-date-background-single-selection-disabled-state-color);color:var(--date-picker-date-text-single-selection-disabled-state-color)}`;\n\tconst MarketDatePickerDateStyle0 = marketDatePickerDateCss;\n\tconst MarketDatePickerDate = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDatePickerDateSelected = index.createEvent(this, \"marketDatePickerDateSelected\", 7);\n\t    this.marketDatePickerDateMousedOver = index.createEvent(this, \"marketDatePickerDateMousedOver\", 7);\n\t    this.marketDatePickerDateMousedOut = index.createEvent(this, \"marketDatePickerDateMousedOut\", 7);\n\t    this.disabled = false;\n\t    this.selection = \"none\";\n\t    this.today = false;\n\t    this.selected = false;\n\t    this.day = void 0;\n\t    this.type = void 0;\n\t  }\n\t  /**\n\t   * Interaction handler that passes events back to the market-date-picker component\n\t   */\n\t  handleInteraction(e) {\n\t    var _a;\n\t    if (this.disabled || ((_a = this.day) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n\t      e.stopImmediatePropagation();\n\t      return;\n\t    }\n\t    const isKeyboardEnter = e instanceof KeyboardEvent && e.type === \"keydown\" && e.key === \"Enter\";\n\t    if (e.type === \"click\" || isKeyboardEnter) {\n\t      this.marketDatePickerDateSelected.emit({ date: this.el });\n\t    }\n\t    if (e.type === \"mouseover\") {\n\t      this.marketDatePickerDateMousedOver.emit({ date: this.el });\n\t    }\n\t    if (e.type === \"mouseout\") {\n\t      this.marketDatePickerDateMousedOut.emit();\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"cb93515184e0a9425ffb81429b16cb2267e011c6\", class: `market-date-picker-date`, role: this.disabled || !this.day ? void 0 : \"button\", tabindex: this.disabled || !this.day ? -1 : 0, \"aria-disabled\": this.disabled, \"aria-pressed\": this.selected ? \"true\" : \"false\", onClick: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onmouseover: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onmouseout: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onkeydown: (e) => {\n\t      this.handleInteraction(e);\n\t    } }, index.h(\"div\", { key: \"d138551895ed2cb9c68ef6e3a5ad8da4ed006af9\", class: \"market-date-picker-date-inner-container\" }, this.day));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketDatePickerDate.style = MarketDatePickerDateStyle0;\n\tmarketDatePickerDate_cjs_entry.market_date_picker_date = MarketDatePickerDate;\n\treturn marketDatePickerDate_cjs_entry;\n}\n\nvar marketDatePickerInputDate_cjs_entry = {};\n\nvar indexF2237153 = {};\n\nvar hasRequiredIndexF2237153;\n\nfunction requireIndexF2237153 () {\n\tif (hasRequiredIndexF2237153) return indexF2237153;\n\thasRequiredIndexF2237153 = 1;\n\tconst index = requireIndexB1e6d30f();\n\tfunction addMilliseconds(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var timestamp = index.toDate(dirtyDate).getTime();\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return new Date(timestamp + amount);\n\t}\n\tfunction getTimezoneOffsetInMilliseconds(date) {\n\t  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n\t  utcDate.setUTCFullYear(date.getFullYear());\n\t  return date.getTime() - utcDate.getTime();\n\t}\n\tvar millisecondsInMinute = 6e4;\n\tvar millisecondsInHour = 36e5;\n\tvar millisecondsInSecond = 1e3;\n\tfunction subMilliseconds(dirtyDate, dirtyAmount) {\n\t  index.requiredArgs(2, arguments);\n\t  var amount = index.toInteger(dirtyAmount);\n\t  return addMilliseconds(dirtyDate, -amount);\n\t}\n\tfunction startOfUTCISOWeek(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var weekStartsOn = 1;\n\t  var date = index.toDate(dirtyDate);\n\t  var day = date.getUTCDay();\n\t  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\t  date.setUTCDate(date.getUTCDate() - diff);\n\t  date.setUTCHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction getUTCISOWeekYear(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var year = date.getUTCFullYear();\n\t  var fourthOfJanuaryOfNextYear = /* @__PURE__ */ new Date(0);\n\t  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n\t  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n\t  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n\t  var fourthOfJanuaryOfThisYear = /* @__PURE__ */ new Date(0);\n\t  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n\t  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n\t  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\t  if (date.getTime() >= startOfNextYear.getTime()) {\n\t    return year + 1;\n\t  } else if (date.getTime() >= startOfThisYear.getTime()) {\n\t    return year;\n\t  } else {\n\t    return year - 1;\n\t  }\n\t}\n\tfunction startOfUTCISOWeekYear(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var year = getUTCISOWeekYear(dirtyDate);\n\t  var fourthOfJanuary = /* @__PURE__ */ new Date(0);\n\t  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n\t  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n\t  var date = startOfUTCISOWeek(fourthOfJanuary);\n\t  return date;\n\t}\n\tvar MILLISECONDS_IN_WEEK$1 = 6048e5;\n\tfunction getUTCISOWeek(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\t  return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1;\n\t}\n\tfunction startOfUTCWeek(dirtyDate, options) {\n\t  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(1, arguments);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  var date = index.toDate(dirtyDate);\n\t  var day = date.getUTCDay();\n\t  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\t  date.setUTCDate(date.getUTCDate() - diff);\n\t  date.setUTCHours(0, 0, 0, 0);\n\t  return date;\n\t}\n\tfunction getUTCWeekYear(dirtyDate, options) {\n\t  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var year = date.getUTCFullYear();\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var firstWeekContainsDate = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\t  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n\t    throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n\t  }\n\t  var firstWeekOfNextYear = /* @__PURE__ */ new Date(0);\n\t  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n\t  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n\t  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n\t  var firstWeekOfThisYear = /* @__PURE__ */ new Date(0);\n\t  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n\t  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n\t  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n\t  if (date.getTime() >= startOfNextYear.getTime()) {\n\t    return year + 1;\n\t  } else if (date.getTime() >= startOfThisYear.getTime()) {\n\t    return year;\n\t  } else {\n\t    return year - 1;\n\t  }\n\t}\n\tfunction startOfUTCWeekYear(dirtyDate, options) {\n\t  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(1, arguments);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var firstWeekContainsDate = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\t  var year = getUTCWeekYear(dirtyDate, options);\n\t  var firstWeek = /* @__PURE__ */ new Date(0);\n\t  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n\t  firstWeek.setUTCHours(0, 0, 0, 0);\n\t  var date = startOfUTCWeek(firstWeek, options);\n\t  return date;\n\t}\n\tvar MILLISECONDS_IN_WEEK = 6048e5;\n\tfunction getUTCWeek(dirtyDate, options) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\t  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n\t}\n\tvar dateLongFormatter = function dateLongFormatter2(pattern, formatLong2) {\n\t  switch (pattern) {\n\t    case \"P\":\n\t      return formatLong2.date({\n\t        width: \"short\"\n\t      });\n\t    case \"PP\":\n\t      return formatLong2.date({\n\t        width: \"medium\"\n\t      });\n\t    case \"PPP\":\n\t      return formatLong2.date({\n\t        width: \"long\"\n\t      });\n\t    case \"PPPP\":\n\t    default:\n\t      return formatLong2.date({\n\t        width: \"full\"\n\t      });\n\t  }\n\t};\n\tvar timeLongFormatter = function timeLongFormatter2(pattern, formatLong2) {\n\t  switch (pattern) {\n\t    case \"p\":\n\t      return formatLong2.time({\n\t        width: \"short\"\n\t      });\n\t    case \"pp\":\n\t      return formatLong2.time({\n\t        width: \"medium\"\n\t      });\n\t    case \"ppp\":\n\t      return formatLong2.time({\n\t        width: \"long\"\n\t      });\n\t    case \"pppp\":\n\t    default:\n\t      return formatLong2.time({\n\t        width: \"full\"\n\t      });\n\t  }\n\t};\n\tvar dateTimeLongFormatter = function dateTimeLongFormatter2(pattern, formatLong2) {\n\t  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n\t  var datePattern = matchResult[1];\n\t  var timePattern = matchResult[2];\n\t  if (!timePattern) {\n\t    return dateLongFormatter(pattern, formatLong2);\n\t  }\n\t  var dateTimeFormat;\n\t  switch (datePattern) {\n\t    case \"P\":\n\t      dateTimeFormat = formatLong2.dateTime({\n\t        width: \"short\"\n\t      });\n\t      break;\n\t    case \"PP\":\n\t      dateTimeFormat = formatLong2.dateTime({\n\t        width: \"medium\"\n\t      });\n\t      break;\n\t    case \"PPP\":\n\t      dateTimeFormat = formatLong2.dateTime({\n\t        width: \"long\"\n\t      });\n\t      break;\n\t    case \"PPPP\":\n\t    default:\n\t      dateTimeFormat = formatLong2.dateTime({\n\t        width: \"full\"\n\t      });\n\t      break;\n\t  }\n\t  return dateTimeFormat.replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong2)).replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong2));\n\t};\n\tvar longFormatters = {\n\t  p: timeLongFormatter,\n\t  P: dateTimeLongFormatter\n\t};\n\tconst longFormatters$1 = longFormatters;\n\tvar protectedDayOfYearTokens = [\"D\", \"DD\"];\n\tvar protectedWeekYearTokens = [\"YY\", \"YYYY\"];\n\tfunction isProtectedDayOfYearToken(token) {\n\t  return protectedDayOfYearTokens.indexOf(token) !== -1;\n\t}\n\tfunction isProtectedWeekYearToken(token) {\n\t  return protectedWeekYearTokens.indexOf(token) !== -1;\n\t}\n\tfunction throwProtectedError(token, format, input) {\n\t  if (token === \"YYYY\") {\n\t    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n\t  } else if (token === \"YY\") {\n\t    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n\t  } else if (token === \"D\") {\n\t    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n\t  } else if (token === \"DD\") {\n\t    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n\t  }\n\t}\n\tvar formatDistanceLocale = {\n\t  lessThanXSeconds: {\n\t    one: \"less than a second\",\n\t    other: \"less than {{count}} seconds\"\n\t  },\n\t  xSeconds: {\n\t    one: \"1 second\",\n\t    other: \"{{count}} seconds\"\n\t  },\n\t  halfAMinute: \"half a minute\",\n\t  lessThanXMinutes: {\n\t    one: \"less than a minute\",\n\t    other: \"less than {{count}} minutes\"\n\t  },\n\t  xMinutes: {\n\t    one: \"1 minute\",\n\t    other: \"{{count}} minutes\"\n\t  },\n\t  aboutXHours: {\n\t    one: \"about 1 hour\",\n\t    other: \"about {{count}} hours\"\n\t  },\n\t  xHours: {\n\t    one: \"1 hour\",\n\t    other: \"{{count}} hours\"\n\t  },\n\t  xDays: {\n\t    one: \"1 day\",\n\t    other: \"{{count}} days\"\n\t  },\n\t  aboutXWeeks: {\n\t    one: \"about 1 week\",\n\t    other: \"about {{count}} weeks\"\n\t  },\n\t  xWeeks: {\n\t    one: \"1 week\",\n\t    other: \"{{count}} weeks\"\n\t  },\n\t  aboutXMonths: {\n\t    one: \"about 1 month\",\n\t    other: \"about {{count}} months\"\n\t  },\n\t  xMonths: {\n\t    one: \"1 month\",\n\t    other: \"{{count}} months\"\n\t  },\n\t  aboutXYears: {\n\t    one: \"about 1 year\",\n\t    other: \"about {{count}} years\"\n\t  },\n\t  xYears: {\n\t    one: \"1 year\",\n\t    other: \"{{count}} years\"\n\t  },\n\t  overXYears: {\n\t    one: \"over 1 year\",\n\t    other: \"over {{count}} years\"\n\t  },\n\t  almostXYears: {\n\t    one: \"almost 1 year\",\n\t    other: \"almost {{count}} years\"\n\t  }\n\t};\n\tvar formatDistance = function formatDistance2(token, count, options) {\n\t  var result;\n\t  var tokenValue = formatDistanceLocale[token];\n\t  if (typeof tokenValue === \"string\") {\n\t    result = tokenValue;\n\t  } else if (count === 1) {\n\t    result = tokenValue.one;\n\t  } else {\n\t    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n\t  }\n\t  if (options !== null && options !== void 0 && options.addSuffix) {\n\t    if (options.comparison && options.comparison > 0) {\n\t      return \"in \" + result;\n\t    } else {\n\t      return result + \" ago\";\n\t    }\n\t  }\n\t  return result;\n\t};\n\tconst formatDistance$1 = formatDistance;\n\tfunction buildFormatLongFn(args) {\n\t  return function() {\n\t    var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t    var width = options.width ? String(options.width) : args.defaultWidth;\n\t    var format = args.formats[width] || args.formats[args.defaultWidth];\n\t    return format;\n\t  };\n\t}\n\tvar dateFormats = {\n\t  full: \"EEEE, MMMM do, y\",\n\t  long: \"MMMM do, y\",\n\t  medium: \"MMM d, y\",\n\t  short: \"MM/dd/yyyy\"\n\t};\n\tvar timeFormats = {\n\t  full: \"h:mm:ss a zzzz\",\n\t  long: \"h:mm:ss a z\",\n\t  medium: \"h:mm:ss a\",\n\t  short: \"h:mm a\"\n\t};\n\tvar dateTimeFormats = {\n\t  full: \"{{date}} 'at' {{time}}\",\n\t  long: \"{{date}} 'at' {{time}}\",\n\t  medium: \"{{date}}, {{time}}\",\n\t  short: \"{{date}}, {{time}}\"\n\t};\n\tvar formatLong = {\n\t  date: buildFormatLongFn({\n\t    formats: dateFormats,\n\t    defaultWidth: \"full\"\n\t  }),\n\t  time: buildFormatLongFn({\n\t    formats: timeFormats,\n\t    defaultWidth: \"full\"\n\t  }),\n\t  dateTime: buildFormatLongFn({\n\t    formats: dateTimeFormats,\n\t    defaultWidth: \"full\"\n\t  })\n\t};\n\tconst formatLong$1 = formatLong;\n\tvar formatRelativeLocale = {\n\t  lastWeek: \"'last' eeee 'at' p\",\n\t  yesterday: \"'yesterday at' p\",\n\t  today: \"'today at' p\",\n\t  tomorrow: \"'tomorrow at' p\",\n\t  nextWeek: \"eeee 'at' p\",\n\t  other: \"P\"\n\t};\n\tvar formatRelative = function formatRelative2(token, _date, _baseDate, _options) {\n\t  return formatRelativeLocale[token];\n\t};\n\tconst formatRelative$1 = formatRelative;\n\tfunction buildLocalizeFn(args) {\n\t  return function(dirtyIndex, options) {\n\t    var context = options !== null && options !== void 0 && options.context ? String(options.context) : \"standalone\";\n\t    var valuesArray;\n\t    if (context === \"formatting\" && args.formattingValues) {\n\t      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n\t      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n\t      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n\t    } else {\n\t      var _defaultWidth = args.defaultWidth;\n\t      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\t      valuesArray = args.values[_width] || args.values[_defaultWidth];\n\t    }\n\t    var index2 = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n\t    return valuesArray[index2];\n\t  };\n\t}\n\tvar eraValues = {\n\t  narrow: [\"B\", \"A\"],\n\t  abbreviated: [\"BC\", \"AD\"],\n\t  wide: [\"Before Christ\", \"Anno Domini\"]\n\t};\n\tvar quarterValues = {\n\t  narrow: [\"1\", \"2\", \"3\", \"4\"],\n\t  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n\t  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n\t};\n\tvar monthValues = {\n\t  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n\t  abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t  wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n\t};\n\tvar dayValues = {\n\t  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n\t  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t  wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n\t};\n\tvar dayPeriodValues = {\n\t  narrow: {\n\t    am: \"a\",\n\t    pm: \"p\",\n\t    midnight: \"mi\",\n\t    noon: \"n\",\n\t    morning: \"morning\",\n\t    afternoon: \"afternoon\",\n\t    evening: \"evening\",\n\t    night: \"night\"\n\t  },\n\t  abbreviated: {\n\t    am: \"AM\",\n\t    pm: \"PM\",\n\t    midnight: \"midnight\",\n\t    noon: \"noon\",\n\t    morning: \"morning\",\n\t    afternoon: \"afternoon\",\n\t    evening: \"evening\",\n\t    night: \"night\"\n\t  },\n\t  wide: {\n\t    am: \"a.m.\",\n\t    pm: \"p.m.\",\n\t    midnight: \"midnight\",\n\t    noon: \"noon\",\n\t    morning: \"morning\",\n\t    afternoon: \"afternoon\",\n\t    evening: \"evening\",\n\t    night: \"night\"\n\t  }\n\t};\n\tvar formattingDayPeriodValues = {\n\t  narrow: {\n\t    am: \"a\",\n\t    pm: \"p\",\n\t    midnight: \"mi\",\n\t    noon: \"n\",\n\t    morning: \"in the morning\",\n\t    afternoon: \"in the afternoon\",\n\t    evening: \"in the evening\",\n\t    night: \"at night\"\n\t  },\n\t  abbreviated: {\n\t    am: \"AM\",\n\t    pm: \"PM\",\n\t    midnight: \"midnight\",\n\t    noon: \"noon\",\n\t    morning: \"in the morning\",\n\t    afternoon: \"in the afternoon\",\n\t    evening: \"in the evening\",\n\t    night: \"at night\"\n\t  },\n\t  wide: {\n\t    am: \"a.m.\",\n\t    pm: \"p.m.\",\n\t    midnight: \"midnight\",\n\t    noon: \"noon\",\n\t    morning: \"in the morning\",\n\t    afternoon: \"in the afternoon\",\n\t    evening: \"in the evening\",\n\t    night: \"at night\"\n\t  }\n\t};\n\tvar ordinalNumber = function ordinalNumber2(dirtyNumber, _options) {\n\t  var number = Number(dirtyNumber);\n\t  var rem100 = number % 100;\n\t  if (rem100 > 20 || rem100 < 10) {\n\t    switch (rem100 % 10) {\n\t      case 1:\n\t        return number + \"st\";\n\t      case 2:\n\t        return number + \"nd\";\n\t      case 3:\n\t        return number + \"rd\";\n\t    }\n\t  }\n\t  return number + \"th\";\n\t};\n\tvar localize = {\n\t  ordinalNumber,\n\t  era: buildLocalizeFn({\n\t    values: eraValues,\n\t    defaultWidth: \"wide\"\n\t  }),\n\t  quarter: buildLocalizeFn({\n\t    values: quarterValues,\n\t    defaultWidth: \"wide\",\n\t    argumentCallback: function argumentCallback(quarter) {\n\t      return quarter - 1;\n\t    }\n\t  }),\n\t  month: buildLocalizeFn({\n\t    values: monthValues,\n\t    defaultWidth: \"wide\"\n\t  }),\n\t  day: buildLocalizeFn({\n\t    values: dayValues,\n\t    defaultWidth: \"wide\"\n\t  }),\n\t  dayPeriod: buildLocalizeFn({\n\t    values: dayPeriodValues,\n\t    defaultWidth: \"wide\",\n\t    formattingValues: formattingDayPeriodValues,\n\t    defaultFormattingWidth: \"wide\"\n\t  })\n\t};\n\tconst localize$1 = localize;\n\tfunction buildMatchFn(args) {\n\t  return function(string) {\n\t    var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t    var width = options.width;\n\t    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n\t    var matchResult = string.match(matchPattern);\n\t    if (!matchResult) {\n\t      return null;\n\t    }\n\t    var matchedString = matchResult[0];\n\t    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n\t    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function(pattern) {\n\t      return pattern.test(matchedString);\n\t    }) : findKey(parsePatterns, function(pattern) {\n\t      return pattern.test(matchedString);\n\t    });\n\t    var value;\n\t    value = args.valueCallback ? args.valueCallback(key) : key;\n\t    value = options.valueCallback ? options.valueCallback(value) : value;\n\t    var rest = string.slice(matchedString.length);\n\t    return {\n\t      value,\n\t      rest\n\t    };\n\t  };\n\t}\n\tfunction findKey(object, predicate) {\n\t  for (var key in object) {\n\t    if (object.hasOwnProperty(key) && predicate(object[key])) {\n\t      return key;\n\t    }\n\t  }\n\t  return void 0;\n\t}\n\tfunction findIndex(array, predicate) {\n\t  for (var key = 0; key < array.length; key++) {\n\t    if (predicate(array[key])) {\n\t      return key;\n\t    }\n\t  }\n\t  return void 0;\n\t}\n\tfunction buildMatchPatternFn(args) {\n\t  return function(string) {\n\t    var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t    var matchResult = string.match(args.matchPattern);\n\t    if (!matchResult) return null;\n\t    var matchedString = matchResult[0];\n\t    var parseResult = string.match(args.parsePattern);\n\t    if (!parseResult) return null;\n\t    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n\t    value = options.valueCallback ? options.valueCallback(value) : value;\n\t    var rest = string.slice(matchedString.length);\n\t    return {\n\t      value,\n\t      rest\n\t    };\n\t  };\n\t}\n\tvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\n\tvar parseOrdinalNumberPattern = /\\d+/i;\n\tvar matchEraPatterns = {\n\t  narrow: /^(b|a)/i,\n\t  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n\t  wide: /^(before christ|before common era|anno domini|common era)/i\n\t};\n\tvar parseEraPatterns = {\n\t  any: [/^b/i, /^(a|c)/i]\n\t};\n\tvar matchQuarterPatterns = {\n\t  narrow: /^[1234]/i,\n\t  abbreviated: /^q[1234]/i,\n\t  wide: /^[1234](th|st|nd|rd)? quarter/i\n\t};\n\tvar parseQuarterPatterns = {\n\t  any: [/1/i, /2/i, /3/i, /4/i]\n\t};\n\tvar matchMonthPatterns = {\n\t  narrow: /^[jfmasond]/i,\n\t  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n\t  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n\t};\n\tvar parseMonthPatterns = {\n\t  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n\t  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n\t};\n\tvar matchDayPatterns = {\n\t  narrow: /^[smtwf]/i,\n\t  short: /^(su|mo|tu|we|th|fr|sa)/i,\n\t  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n\t  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n\t};\n\tvar parseDayPatterns = {\n\t  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n\t  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n\t};\n\tvar matchDayPeriodPatterns = {\n\t  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n\t  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n\t};\n\tvar parseDayPeriodPatterns = {\n\t  any: {\n\t    am: /^a/i,\n\t    pm: /^p/i,\n\t    midnight: /^mi/i,\n\t    noon: /^no/i,\n\t    morning: /morning/i,\n\t    afternoon: /afternoon/i,\n\t    evening: /evening/i,\n\t    night: /night/i\n\t  }\n\t};\n\tvar match = {\n\t  ordinalNumber: buildMatchPatternFn({\n\t    matchPattern: matchOrdinalNumberPattern,\n\t    parsePattern: parseOrdinalNumberPattern,\n\t    valueCallback: function valueCallback(value) {\n\t      return parseInt(value, 10);\n\t    }\n\t  }),\n\t  era: buildMatchFn({\n\t    matchPatterns: matchEraPatterns,\n\t    defaultMatchWidth: \"wide\",\n\t    parsePatterns: parseEraPatterns,\n\t    defaultParseWidth: \"any\"\n\t  }),\n\t  quarter: buildMatchFn({\n\t    matchPatterns: matchQuarterPatterns,\n\t    defaultMatchWidth: \"wide\",\n\t    parsePatterns: parseQuarterPatterns,\n\t    defaultParseWidth: \"any\",\n\t    valueCallback: function valueCallback2(index2) {\n\t      return index2 + 1;\n\t    }\n\t  }),\n\t  month: buildMatchFn({\n\t    matchPatterns: matchMonthPatterns,\n\t    defaultMatchWidth: \"wide\",\n\t    parsePatterns: parseMonthPatterns,\n\t    defaultParseWidth: \"any\"\n\t  }),\n\t  day: buildMatchFn({\n\t    matchPatterns: matchDayPatterns,\n\t    defaultMatchWidth: \"wide\",\n\t    parsePatterns: parseDayPatterns,\n\t    defaultParseWidth: \"any\"\n\t  }),\n\t  dayPeriod: buildMatchFn({\n\t    matchPatterns: matchDayPeriodPatterns,\n\t    defaultMatchWidth: \"any\",\n\t    parsePatterns: parseDayPeriodPatterns,\n\t    defaultParseWidth: \"any\"\n\t  })\n\t};\n\tconst match$1 = match;\n\tvar locale = {\n\t  code: \"en-US\",\n\t  formatDistance: formatDistance$1,\n\t  formatLong: formatLong$1,\n\t  formatRelative: formatRelative$1,\n\t  localize: localize$1,\n\t  match: match$1,\n\t  options: {\n\t    weekStartsOn: 0,\n\t    firstWeekContainsDate: 1\n\t  }\n\t};\n\tconst defaultLocale = locale;\n\tindexF2237153.defaultLocale = defaultLocale;\n\tindexF2237153.getTimezoneOffsetInMilliseconds = getTimezoneOffsetInMilliseconds;\n\tindexF2237153.getUTCISOWeek = getUTCISOWeek;\n\tindexF2237153.getUTCISOWeekYear = getUTCISOWeekYear;\n\tindexF2237153.getUTCWeek = getUTCWeek;\n\tindexF2237153.getUTCWeekYear = getUTCWeekYear;\n\tindexF2237153.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\n\tindexF2237153.isProtectedWeekYearToken = isProtectedWeekYearToken;\n\tindexF2237153.longFormatters = longFormatters$1;\n\tindexF2237153.millisecondsInHour = millisecondsInHour;\n\tindexF2237153.millisecondsInMinute = millisecondsInMinute;\n\tindexF2237153.millisecondsInSecond = millisecondsInSecond;\n\tindexF2237153.startOfUTCISOWeek = startOfUTCISOWeek;\n\tindexF2237153.startOfUTCWeek = startOfUTCWeek;\n\tindexF2237153.subMilliseconds = subMilliseconds;\n\tindexF2237153.throwProtectedError = throwProtectedError;\n\treturn indexF2237153;\n}\n\nvar hasRequiredMarketDatePickerInputDate_cjs_entry;\n\nfunction requireMarketDatePickerInputDate_cjs_entry () {\n\tif (hasRequiredMarketDatePickerInputDate_cjs_entry) return marketDatePickerInputDate_cjs_entry;\n\thasRequiredMarketDatePickerInputDate_cjs_entry = 1;\n\tObject.defineProperty(marketDatePickerInputDate_cjs_entry, \"__esModule\", { value: true });\n\tconst index$2 = requireIndex37364565();\n\tconst index$4 = index254d04f0.requireIndex254d04f0();\n\tconst index = requireIndexB1e6d30f();\n\tconst index$1 = requireIndexF2237153();\n\tconst index$3 = requireIndex01bbb062();\n\tfunction isDate(value) {\n\t  index.requiredArgs(1, arguments);\n\t  return value instanceof Date || index._typeof(value) === \"object\" && Object.prototype.toString.call(value) === \"[object Date]\";\n\t}\n\tfunction isValid(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  if (!isDate(dirtyDate) && typeof dirtyDate !== \"number\") {\n\t    return false;\n\t  }\n\t  var date = index.toDate(dirtyDate);\n\t  return !isNaN(Number(date));\n\t}\n\tvar MILLISECONDS_IN_DAY = 864e5;\n\tfunction getUTCDayOfYear(dirtyDate) {\n\t  index.requiredArgs(1, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var timestamp = date.getTime();\n\t  date.setUTCMonth(0, 1);\n\t  date.setUTCHours(0, 0, 0, 0);\n\t  var startOfYearTimestamp = date.getTime();\n\t  var difference = timestamp - startOfYearTimestamp;\n\t  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n\t}\n\tfunction addLeadingZeros(number, targetLength) {\n\t  var sign = number < 0 ? \"-\" : \"\";\n\t  var output = Math.abs(number).toString();\n\t  while (output.length < targetLength) {\n\t    output = \"0\" + output;\n\t  }\n\t  return sign + output;\n\t}\n\tvar formatters$2 = {\n\t  // Year\n\t  y: function y(date, token) {\n\t    var signedYear = date.getUTCFullYear();\n\t    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\t    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n\t  },\n\t  // Month\n\t  M: function M(date, token) {\n\t    var month = date.getUTCMonth();\n\t    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n\t  },\n\t  // Day of the month\n\t  d: function d(date, token) {\n\t    return addLeadingZeros(date.getUTCDate(), token.length);\n\t  },\n\t  // AM or PM\n\t  a: function a(date, token) {\n\t    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? \"pm\" : \"am\";\n\t    switch (token) {\n\t      case \"a\":\n\t      case \"aa\":\n\t        return dayPeriodEnumValue.toUpperCase();\n\t      case \"aaa\":\n\t        return dayPeriodEnumValue;\n\t      case \"aaaaa\":\n\t        return dayPeriodEnumValue[0];\n\t      case \"aaaa\":\n\t      default:\n\t        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n\t    }\n\t  },\n\t  // Hour [1-12]\n\t  h: function h(date, token) {\n\t    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n\t  },\n\t  // Hour [0-23]\n\t  H: function H(date, token) {\n\t    return addLeadingZeros(date.getUTCHours(), token.length);\n\t  },\n\t  // Minute\n\t  m: function m(date, token) {\n\t    return addLeadingZeros(date.getUTCMinutes(), token.length);\n\t  },\n\t  // Second\n\t  s: function s(date, token) {\n\t    return addLeadingZeros(date.getUTCSeconds(), token.length);\n\t  },\n\t  // Fraction of second\n\t  S: function S(date, token) {\n\t    var numberOfDigits = token.length;\n\t    var milliseconds = date.getUTCMilliseconds();\n\t    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n\t    return addLeadingZeros(fractionalSeconds, token.length);\n\t  }\n\t};\n\tconst formatters$3 = formatters$2;\n\tvar dayPeriodEnum = {\n\t  midnight: \"midnight\",\n\t  noon: \"noon\",\n\t  morning: \"morning\",\n\t  afternoon: \"afternoon\",\n\t  evening: \"evening\",\n\t  night: \"night\"\n\t};\n\tvar formatters = {\n\t  // Era\n\t  G: function G(date, token, localize) {\n\t    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\t    switch (token) {\n\t      // AD, BC\n\t      case \"G\":\n\t      case \"GG\":\n\t      case \"GGG\":\n\t        return localize.era(era, {\n\t          width: \"abbreviated\"\n\t        });\n\t      // A, B\n\t      case \"GGGGG\":\n\t        return localize.era(era, {\n\t          width: \"narrow\"\n\t        });\n\t      // Anno Domini, Before Christ\n\t      case \"GGGG\":\n\t      default:\n\t        return localize.era(era, {\n\t          width: \"wide\"\n\t        });\n\t    }\n\t  },\n\t  // Year\n\t  y: function y2(date, token, localize) {\n\t    if (token === \"yo\") {\n\t      var signedYear = date.getUTCFullYear();\n\t      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\t      return localize.ordinalNumber(year, {\n\t        unit: \"year\"\n\t      });\n\t    }\n\t    return formatters$3.y(date, token);\n\t  },\n\t  // Local week-numbering year\n\t  Y: function Y(date, token, localize, options) {\n\t    var signedWeekYear = index$1.getUTCWeekYear(date, options);\n\t    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\t    if (token === \"YY\") {\n\t      var twoDigitYear = weekYear % 100;\n\t      return addLeadingZeros(twoDigitYear, 2);\n\t    }\n\t    if (token === \"Yo\") {\n\t      return localize.ordinalNumber(weekYear, {\n\t        unit: \"year\"\n\t      });\n\t    }\n\t    return addLeadingZeros(weekYear, token.length);\n\t  },\n\t  // ISO week-numbering year\n\t  R: function R(date, token) {\n\t    var isoWeekYear = index$1.getUTCISOWeekYear(date);\n\t    return addLeadingZeros(isoWeekYear, token.length);\n\t  },\n\t  // Extended year. This is a single number designating the year of this calendar system.\n\t  // The main difference between `y` and `u` localizers are B.C. years:\n\t  // | Year | `y` | `u` |\n\t  // |------|-----|-----|\n\t  // | AC 1 |   1 |   1 |\n\t  // | BC 1 |   1 |   0 |\n\t  // | BC 2 |   2 |  -1 |\n\t  // Also `yy` always returns the last two digits of a year,\n\t  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n\t  u: function u(date, token) {\n\t    var year = date.getUTCFullYear();\n\t    return addLeadingZeros(year, token.length);\n\t  },\n\t  // Quarter\n\t  Q: function Q(date, token, localize) {\n\t    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\t    switch (token) {\n\t      // 1, 2, 3, 4\n\t      case \"Q\":\n\t        return String(quarter);\n\t      // 01, 02, 03, 04\n\t      case \"QQ\":\n\t        return addLeadingZeros(quarter, 2);\n\t      // 1st, 2nd, 3rd, 4th\n\t      case \"Qo\":\n\t        return localize.ordinalNumber(quarter, {\n\t          unit: \"quarter\"\n\t        });\n\t      // Q1, Q2, Q3, Q4\n\t      case \"QQQ\":\n\t        return localize.quarter(quarter, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\t      case \"QQQQQ\":\n\t        return localize.quarter(quarter, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      // 1st quarter, 2nd quarter, ...\n\t      case \"QQQQ\":\n\t      default:\n\t        return localize.quarter(quarter, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // Stand-alone quarter\n\t  q: function q(date, token, localize) {\n\t    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\t    switch (token) {\n\t      // 1, 2, 3, 4\n\t      case \"q\":\n\t        return String(quarter);\n\t      // 01, 02, 03, 04\n\t      case \"qq\":\n\t        return addLeadingZeros(quarter, 2);\n\t      // 1st, 2nd, 3rd, 4th\n\t      case \"qo\":\n\t        return localize.ordinalNumber(quarter, {\n\t          unit: \"quarter\"\n\t        });\n\t      // Q1, Q2, Q3, Q4\n\t      case \"qqq\":\n\t        return localize.quarter(quarter, {\n\t          width: \"abbreviated\",\n\t          context: \"standalone\"\n\t        });\n\t      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\t      case \"qqqqq\":\n\t        return localize.quarter(quarter, {\n\t          width: \"narrow\",\n\t          context: \"standalone\"\n\t        });\n\t      // 1st quarter, 2nd quarter, ...\n\t      case \"qqqq\":\n\t      default:\n\t        return localize.quarter(quarter, {\n\t          width: \"wide\",\n\t          context: \"standalone\"\n\t        });\n\t    }\n\t  },\n\t  // Month\n\t  M: function M2(date, token, localize) {\n\t    var month = date.getUTCMonth();\n\t    switch (token) {\n\t      case \"M\":\n\t      case \"MM\":\n\t        return formatters$3.M(date, token);\n\t      // 1st, 2nd, ..., 12th\n\t      case \"Mo\":\n\t        return localize.ordinalNumber(month + 1, {\n\t          unit: \"month\"\n\t        });\n\t      // Jan, Feb, ..., Dec\n\t      case \"MMM\":\n\t        return localize.month(month, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      // J, F, ..., D\n\t      case \"MMMMM\":\n\t        return localize.month(month, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      // January, February, ..., December\n\t      case \"MMMM\":\n\t      default:\n\t        return localize.month(month, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // Stand-alone month\n\t  L: function L(date, token, localize) {\n\t    var month = date.getUTCMonth();\n\t    switch (token) {\n\t      // 1, 2, ..., 12\n\t      case \"L\":\n\t        return String(month + 1);\n\t      // 01, 02, ..., 12\n\t      case \"LL\":\n\t        return addLeadingZeros(month + 1, 2);\n\t      // 1st, 2nd, ..., 12th\n\t      case \"Lo\":\n\t        return localize.ordinalNumber(month + 1, {\n\t          unit: \"month\"\n\t        });\n\t      // Jan, Feb, ..., Dec\n\t      case \"LLL\":\n\t        return localize.month(month, {\n\t          width: \"abbreviated\",\n\t          context: \"standalone\"\n\t        });\n\t      // J, F, ..., D\n\t      case \"LLLLL\":\n\t        return localize.month(month, {\n\t          width: \"narrow\",\n\t          context: \"standalone\"\n\t        });\n\t      // January, February, ..., December\n\t      case \"LLLL\":\n\t      default:\n\t        return localize.month(month, {\n\t          width: \"wide\",\n\t          context: \"standalone\"\n\t        });\n\t    }\n\t  },\n\t  // Local week of year\n\t  w: function w(date, token, localize, options) {\n\t    var week = index$1.getUTCWeek(date, options);\n\t    if (token === \"wo\") {\n\t      return localize.ordinalNumber(week, {\n\t        unit: \"week\"\n\t      });\n\t    }\n\t    return addLeadingZeros(week, token.length);\n\t  },\n\t  // ISO week of year\n\t  I: function I(date, token, localize) {\n\t    var isoWeek = index$1.getUTCISOWeek(date);\n\t    if (token === \"Io\") {\n\t      return localize.ordinalNumber(isoWeek, {\n\t        unit: \"week\"\n\t      });\n\t    }\n\t    return addLeadingZeros(isoWeek, token.length);\n\t  },\n\t  // Day of the month\n\t  d: function d2(date, token, localize) {\n\t    if (token === \"do\") {\n\t      return localize.ordinalNumber(date.getUTCDate(), {\n\t        unit: \"date\"\n\t      });\n\t    }\n\t    return formatters$3.d(date, token);\n\t  },\n\t  // Day of year\n\t  D: function D(date, token, localize) {\n\t    var dayOfYear = getUTCDayOfYear(date);\n\t    if (token === \"Do\") {\n\t      return localize.ordinalNumber(dayOfYear, {\n\t        unit: \"dayOfYear\"\n\t      });\n\t    }\n\t    return addLeadingZeros(dayOfYear, token.length);\n\t  },\n\t  // Day of week\n\t  E: function E(date, token, localize) {\n\t    var dayOfWeek = date.getUTCDay();\n\t    switch (token) {\n\t      // Tue\n\t      case \"E\":\n\t      case \"EE\":\n\t      case \"EEE\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      // T\n\t      case \"EEEEE\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tu\n\t      case \"EEEEEE\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"short\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tuesday\n\t      case \"EEEE\":\n\t      default:\n\t        return localize.day(dayOfWeek, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // Local day of week\n\t  e: function e(date, token, localize, options) {\n\t    var dayOfWeek = date.getUTCDay();\n\t    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\t    switch (token) {\n\t      // Numerical value (Nth day of week with current locale or weekStartsOn)\n\t      case \"e\":\n\t        return String(localDayOfWeek);\n\t      // Padded numerical value\n\t      case \"ee\":\n\t        return addLeadingZeros(localDayOfWeek, 2);\n\t      // 1st, 2nd, ..., 7th\n\t      case \"eo\":\n\t        return localize.ordinalNumber(localDayOfWeek, {\n\t          unit: \"day\"\n\t        });\n\t      case \"eee\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      // T\n\t      case \"eeeee\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tu\n\t      case \"eeeeee\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"short\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tuesday\n\t      case \"eeee\":\n\t      default:\n\t        return localize.day(dayOfWeek, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // Stand-alone local day of week\n\t  c: function c(date, token, localize, options) {\n\t    var dayOfWeek = date.getUTCDay();\n\t    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\t    switch (token) {\n\t      // Numerical value (same as in `e`)\n\t      case \"c\":\n\t        return String(localDayOfWeek);\n\t      // Padded numerical value\n\t      case \"cc\":\n\t        return addLeadingZeros(localDayOfWeek, token.length);\n\t      // 1st, 2nd, ..., 7th\n\t      case \"co\":\n\t        return localize.ordinalNumber(localDayOfWeek, {\n\t          unit: \"day\"\n\t        });\n\t      case \"ccc\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"abbreviated\",\n\t          context: \"standalone\"\n\t        });\n\t      // T\n\t      case \"ccccc\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"narrow\",\n\t          context: \"standalone\"\n\t        });\n\t      // Tu\n\t      case \"cccccc\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"short\",\n\t          context: \"standalone\"\n\t        });\n\t      // Tuesday\n\t      case \"cccc\":\n\t      default:\n\t        return localize.day(dayOfWeek, {\n\t          width: \"wide\",\n\t          context: \"standalone\"\n\t        });\n\t    }\n\t  },\n\t  // ISO day of week\n\t  i: function i(date, token, localize) {\n\t    var dayOfWeek = date.getUTCDay();\n\t    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\t    switch (token) {\n\t      // 2\n\t      case \"i\":\n\t        return String(isoDayOfWeek);\n\t      // 02\n\t      case \"ii\":\n\t        return addLeadingZeros(isoDayOfWeek, token.length);\n\t      // 2nd\n\t      case \"io\":\n\t        return localize.ordinalNumber(isoDayOfWeek, {\n\t          unit: \"day\"\n\t        });\n\t      // Tue\n\t      case \"iii\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      // T\n\t      case \"iiiii\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tu\n\t      case \"iiiiii\":\n\t        return localize.day(dayOfWeek, {\n\t          width: \"short\",\n\t          context: \"formatting\"\n\t        });\n\t      // Tuesday\n\t      case \"iiii\":\n\t      default:\n\t        return localize.day(dayOfWeek, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // AM or PM\n\t  a: function a2(date, token, localize) {\n\t    var hours = date.getUTCHours();\n\t    var dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\t    switch (token) {\n\t      case \"a\":\n\t      case \"aa\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"aaa\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        }).toLowerCase();\n\t      case \"aaaaa\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"aaaa\":\n\t      default:\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // AM, PM, midnight, noon\n\t  b: function b(date, token, localize) {\n\t    var hours = date.getUTCHours();\n\t    var dayPeriodEnumValue;\n\t    if (hours === 12) {\n\t      dayPeriodEnumValue = dayPeriodEnum.noon;\n\t    } else if (hours === 0) {\n\t      dayPeriodEnumValue = dayPeriodEnum.midnight;\n\t    } else {\n\t      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\t    }\n\t    switch (token) {\n\t      case \"b\":\n\t      case \"bb\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"bbb\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        }).toLowerCase();\n\t      case \"bbbbb\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"bbbb\":\n\t      default:\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // in the morning, in the afternoon, in the evening, at night\n\t  B: function B(date, token, localize) {\n\t    var hours = date.getUTCHours();\n\t    var dayPeriodEnumValue;\n\t    if (hours >= 17) {\n\t      dayPeriodEnumValue = dayPeriodEnum.evening;\n\t    } else if (hours >= 12) {\n\t      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n\t    } else if (hours >= 4) {\n\t      dayPeriodEnumValue = dayPeriodEnum.morning;\n\t    } else {\n\t      dayPeriodEnumValue = dayPeriodEnum.night;\n\t    }\n\t    switch (token) {\n\t      case \"B\":\n\t      case \"BB\":\n\t      case \"BBB\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"abbreviated\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"BBBBB\":\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"narrow\",\n\t          context: \"formatting\"\n\t        });\n\t      case \"BBBB\":\n\t      default:\n\t        return localize.dayPeriod(dayPeriodEnumValue, {\n\t          width: \"wide\",\n\t          context: \"formatting\"\n\t        });\n\t    }\n\t  },\n\t  // Hour [1-12]\n\t  h: function h2(date, token, localize) {\n\t    if (token === \"ho\") {\n\t      var hours = date.getUTCHours() % 12;\n\t      if (hours === 0) hours = 12;\n\t      return localize.ordinalNumber(hours, {\n\t        unit: \"hour\"\n\t      });\n\t    }\n\t    return formatters$3.h(date, token);\n\t  },\n\t  // Hour [0-23]\n\t  H: function H2(date, token, localize) {\n\t    if (token === \"Ho\") {\n\t      return localize.ordinalNumber(date.getUTCHours(), {\n\t        unit: \"hour\"\n\t      });\n\t    }\n\t    return formatters$3.H(date, token);\n\t  },\n\t  // Hour [0-11]\n\t  K: function K(date, token, localize) {\n\t    var hours = date.getUTCHours() % 12;\n\t    if (token === \"Ko\") {\n\t      return localize.ordinalNumber(hours, {\n\t        unit: \"hour\"\n\t      });\n\t    }\n\t    return addLeadingZeros(hours, token.length);\n\t  },\n\t  // Hour [1-24]\n\t  k: function k(date, token, localize) {\n\t    var hours = date.getUTCHours();\n\t    if (hours === 0) hours = 24;\n\t    if (token === \"ko\") {\n\t      return localize.ordinalNumber(hours, {\n\t        unit: \"hour\"\n\t      });\n\t    }\n\t    return addLeadingZeros(hours, token.length);\n\t  },\n\t  // Minute\n\t  m: function m2(date, token, localize) {\n\t    if (token === \"mo\") {\n\t      return localize.ordinalNumber(date.getUTCMinutes(), {\n\t        unit: \"minute\"\n\t      });\n\t    }\n\t    return formatters$3.m(date, token);\n\t  },\n\t  // Second\n\t  s: function s2(date, token, localize) {\n\t    if (token === \"so\") {\n\t      return localize.ordinalNumber(date.getUTCSeconds(), {\n\t        unit: \"second\"\n\t      });\n\t    }\n\t    return formatters$3.s(date, token);\n\t  },\n\t  // Fraction of second\n\t  S: function S2(date, token) {\n\t    return formatters$3.S(date, token);\n\t  },\n\t  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n\t  X: function X(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timezoneOffset = originalDate.getTimezoneOffset();\n\t    if (timezoneOffset === 0) {\n\t      return \"Z\";\n\t    }\n\t    switch (token) {\n\t      // Hours and optional minutes\n\t      case \"X\":\n\t        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\t      // Hours, minutes and optional seconds without `:` delimiter\n\t      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n\t      // so this token always has the same output as `XX`\n\t      case \"XXXX\":\n\t      case \"XX\":\n\t        return formatTimezone(timezoneOffset);\n\t      // Hours, minutes and optional seconds with `:` delimiter\n\t      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n\t      // so this token always has the same output as `XXX`\n\t      case \"XXXXX\":\n\t      case \"XXX\":\n\t      // Hours and minutes with `:` delimiter\n\t      default:\n\t        return formatTimezone(timezoneOffset, \":\");\n\t    }\n\t  },\n\t  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n\t  x: function x(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timezoneOffset = originalDate.getTimezoneOffset();\n\t    switch (token) {\n\t      // Hours and optional minutes\n\t      case \"x\":\n\t        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\t      // Hours, minutes and optional seconds without `:` delimiter\n\t      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n\t      // so this token always has the same output as `xx`\n\t      case \"xxxx\":\n\t      case \"xx\":\n\t        return formatTimezone(timezoneOffset);\n\t      // Hours, minutes and optional seconds with `:` delimiter\n\t      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n\t      // so this token always has the same output as `xxx`\n\t      case \"xxxxx\":\n\t      case \"xxx\":\n\t      // Hours and minutes with `:` delimiter\n\t      default:\n\t        return formatTimezone(timezoneOffset, \":\");\n\t    }\n\t  },\n\t  // Timezone (GMT)\n\t  O: function O(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timezoneOffset = originalDate.getTimezoneOffset();\n\t    switch (token) {\n\t      // Short\n\t      case \"O\":\n\t      case \"OO\":\n\t      case \"OOO\":\n\t        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n\t      // Long\n\t      case \"OOOO\":\n\t      default:\n\t        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n\t    }\n\t  },\n\t  // Timezone (specific non-location)\n\t  z: function z(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timezoneOffset = originalDate.getTimezoneOffset();\n\t    switch (token) {\n\t      // Short\n\t      case \"z\":\n\t      case \"zz\":\n\t      case \"zzz\":\n\t        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n\t      // Long\n\t      case \"zzzz\":\n\t      default:\n\t        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n\t    }\n\t  },\n\t  // Seconds timestamp\n\t  t: function t(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timestamp = Math.floor(originalDate.getTime() / 1e3);\n\t    return addLeadingZeros(timestamp, token.length);\n\t  },\n\t  // Milliseconds timestamp\n\t  T: function T(date, token, _localize, options) {\n\t    var originalDate = options._originalDate || date;\n\t    var timestamp = originalDate.getTime();\n\t    return addLeadingZeros(timestamp, token.length);\n\t  }\n\t};\n\tfunction formatTimezoneShort(offset, dirtyDelimiter) {\n\t  var sign = offset > 0 ? \"-\" : \"+\";\n\t  var absOffset = Math.abs(offset);\n\t  var hours = Math.floor(absOffset / 60);\n\t  var minutes = absOffset % 60;\n\t  if (minutes === 0) {\n\t    return sign + String(hours);\n\t  }\n\t  var delimiter = dirtyDelimiter;\n\t  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n\t}\n\tfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n\t  if (offset % 60 === 0) {\n\t    var sign = offset > 0 ? \"-\" : \"+\";\n\t    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n\t  }\n\t  return formatTimezone(offset, dirtyDelimiter);\n\t}\n\tfunction formatTimezone(offset, dirtyDelimiter) {\n\t  var delimiter = dirtyDelimiter || \"\";\n\t  var sign = offset > 0 ? \"-\" : \"+\";\n\t  var absOffset = Math.abs(offset);\n\t  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n\t  var minutes = addLeadingZeros(absOffset % 60, 2);\n\t  return sign + hours + delimiter + minutes;\n\t}\n\tconst formatters$1 = formatters;\n\tvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\tvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\tvar escapedStringRegExp = /^'([^]*?)'?$/;\n\tvar doubleQuoteRegExp = /''/g;\n\tvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\tfunction format(dirtyDate, dirtyFormatStr, options) {\n\t  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _defaultOptions$local3, _defaultOptions$local4;\n\t  index.requiredArgs(2, arguments);\n\t  var formatStr = String(dirtyFormatStr);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var locale = (_ref = (_options$locale = void 0 ) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : index$1.defaultLocale;\n\t  var firstWeekContainsDate = index.toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = void 0 ) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : void 0 ) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\t  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n\t    throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n\t  }\n\t  var weekStartsOn = index.toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = void 0 ) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : void 0 ) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  if (!locale.localize) {\n\t    throw new RangeError(\"locale must contain localize property\");\n\t  }\n\t  if (!locale.formatLong) {\n\t    throw new RangeError(\"locale must contain formatLong property\");\n\t  }\n\t  var originalDate = index.toDate(dirtyDate);\n\t  if (!isValid(originalDate)) {\n\t    throw new RangeError(\"Invalid time value\");\n\t  }\n\t  var timezoneOffset = index$1.getTimezoneOffsetInMilliseconds(originalDate);\n\t  var utcDate = index$1.subMilliseconds(originalDate, timezoneOffset);\n\t  var formatterOptions = {\n\t    firstWeekContainsDate,\n\t    weekStartsOn,\n\t    locale,\n\t    _originalDate: originalDate\n\t  };\n\t  var result = formatStr.match(longFormattingTokensRegExp).map(function(substring) {\n\t    var firstCharacter = substring[0];\n\t    if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n\t      var longFormatter = index$1.longFormatters[firstCharacter];\n\t      return longFormatter(substring, locale.formatLong);\n\t    }\n\t    return substring;\n\t  }).join(\"\").match(formattingTokensRegExp).map(function(substring) {\n\t    if (substring === \"''\") {\n\t      return \"'\";\n\t    }\n\t    var firstCharacter = substring[0];\n\t    if (firstCharacter === \"'\") {\n\t      return cleanEscapedString(substring);\n\t    }\n\t    var formatter = formatters$1[firstCharacter];\n\t    if (formatter) {\n\t      if (index$1.isProtectedWeekYearToken(substring)) {\n\t        index$1.throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n\t      }\n\t      if (index$1.isProtectedDayOfYearToken(substring)) {\n\t        index$1.throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n\t      }\n\t      return formatter(utcDate, substring, locale.localize, formatterOptions);\n\t    }\n\t    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n\t      throw new RangeError(\"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\");\n\t    }\n\t    return substring;\n\t  }).join(\"\");\n\t  return result;\n\t}\n\tfunction cleanEscapedString(input) {\n\t  var matched = input.match(escapedStringRegExp);\n\t  if (!matched) {\n\t    return input;\n\t  }\n\t  return matched[1].replace(doubleQuoteRegExp, \"'\");\n\t}\n\tfunction parseISO(argument, options) {\n\t  var _options$additionalDi;\n\t  index.requiredArgs(1, arguments);\n\t  var additionalDigits = index.toInteger((_options$additionalDi = void 0 ) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n\t  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n\t    throw new RangeError(\"additionalDigits must be 0, 1 or 2\");\n\t  }\n\t  if (!(typeof argument === \"string\" || Object.prototype.toString.call(argument) === \"[object String]\")) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  var dateStrings = splitDateString(argument);\n\t  var date;\n\t  if (dateStrings.date) {\n\t    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n\t    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n\t  }\n\t  if (!date || isNaN(date.getTime())) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  var timestamp = date.getTime();\n\t  var time = 0;\n\t  var offset;\n\t  if (dateStrings.time) {\n\t    time = parseTime(dateStrings.time);\n\t    if (isNaN(time)) {\n\t      return /* @__PURE__ */ new Date(NaN);\n\t    }\n\t  }\n\t  if (dateStrings.timezone) {\n\t    offset = parseTimezone(dateStrings.timezone);\n\t    if (isNaN(offset)) {\n\t      return /* @__PURE__ */ new Date(NaN);\n\t    }\n\t  } else {\n\t    var dirtyDate = new Date(timestamp + time);\n\t    var result = /* @__PURE__ */ new Date(0);\n\t    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n\t    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n\t    return result;\n\t  }\n\t  return new Date(timestamp + time + offset);\n\t}\n\tvar patterns = {\n\t  dateTimeDelimiter: /[T ]/,\n\t  timeZoneDelimiter: /[Z ]/i,\n\t  timezone: /([Z+-].*)$/\n\t};\n\tvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\n\tvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\n\tvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\tfunction splitDateString(dateString) {\n\t  var dateStrings = {};\n\t  var array = dateString.split(patterns.dateTimeDelimiter);\n\t  var timeString;\n\t  if (array.length > 2) {\n\t    return dateStrings;\n\t  }\n\t  if (/:/.test(array[0])) {\n\t    timeString = array[0];\n\t  } else {\n\t    dateStrings.date = array[0];\n\t    timeString = array[1];\n\t    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n\t      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n\t      timeString = dateString.substr(dateStrings.date.length, dateString.length);\n\t    }\n\t  }\n\t  if (timeString) {\n\t    var token = patterns.timezone.exec(timeString);\n\t    if (token) {\n\t      dateStrings.time = timeString.replace(token[1], \"\");\n\t      dateStrings.timezone = token[1];\n\t    } else {\n\t      dateStrings.time = timeString;\n\t    }\n\t  }\n\t  return dateStrings;\n\t}\n\tfunction parseYear(dateString, additionalDigits) {\n\t  var regex = new RegExp(\"^(?:(\\\\d{4}|[+-]\\\\d{\" + (4 + additionalDigits) + \"})|(\\\\d{2}|[+-]\\\\d{\" + (2 + additionalDigits) + \"})$)\");\n\t  var captures = dateString.match(regex);\n\t  if (!captures) return {\n\t    year: NaN,\n\t    restDateString: \"\"\n\t  };\n\t  var year = captures[1] ? parseInt(captures[1]) : null;\n\t  var century = captures[2] ? parseInt(captures[2]) : null;\n\t  return {\n\t    year: century === null ? year : century * 100,\n\t    restDateString: dateString.slice((captures[1] || captures[2]).length)\n\t  };\n\t}\n\tfunction parseDate(dateString, year) {\n\t  if (year === null) return /* @__PURE__ */ new Date(NaN);\n\t  var captures = dateString.match(dateRegex);\n\t  if (!captures) return /* @__PURE__ */ new Date(NaN);\n\t  var isWeekDate = !!captures[4];\n\t  var dayOfYear = parseDateUnit(captures[1]);\n\t  var month = parseDateUnit(captures[2]) - 1;\n\t  var day = parseDateUnit(captures[3]);\n\t  var week = parseDateUnit(captures[4]);\n\t  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\t  if (isWeekDate) {\n\t    if (!validateWeekDate(year, week, dayOfWeek)) {\n\t      return /* @__PURE__ */ new Date(NaN);\n\t    }\n\t    return dayOfISOWeekYear(year, week, dayOfWeek);\n\t  } else {\n\t    var date = /* @__PURE__ */ new Date(0);\n\t    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n\t      return /* @__PURE__ */ new Date(NaN);\n\t    }\n\t    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n\t    return date;\n\t  }\n\t}\n\tfunction parseDateUnit(value) {\n\t  return value ? parseInt(value) : 1;\n\t}\n\tfunction parseTime(timeString) {\n\t  var captures = timeString.match(timeRegex);\n\t  if (!captures) return NaN;\n\t  var hours = parseTimeUnit(captures[1]);\n\t  var minutes = parseTimeUnit(captures[2]);\n\t  var seconds = parseTimeUnit(captures[3]);\n\t  if (!validateTime(hours, minutes, seconds)) {\n\t    return NaN;\n\t  }\n\t  return hours * index$1.millisecondsInHour + minutes * index$1.millisecondsInMinute + seconds * 1e3;\n\t}\n\tfunction parseTimeUnit(value) {\n\t  return value && parseFloat(value.replace(\",\", \".\")) || 0;\n\t}\n\tfunction parseTimezone(timezoneString) {\n\t  if (timezoneString === \"Z\") return 0;\n\t  var captures = timezoneString.match(timezoneRegex);\n\t  if (!captures) return 0;\n\t  var sign = captures[1] === \"+\" ? -1 : 1;\n\t  var hours = parseInt(captures[2]);\n\t  var minutes = captures[3] && parseInt(captures[3]) || 0;\n\t  if (!validateTimezone(hours, minutes)) {\n\t    return NaN;\n\t  }\n\t  return sign * (hours * index$1.millisecondsInHour + minutes * index$1.millisecondsInMinute);\n\t}\n\tfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n\t  var date = /* @__PURE__ */ new Date(0);\n\t  date.setUTCFullYear(isoWeekYear, 0, 4);\n\t  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n\t  var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n\t  date.setUTCDate(date.getUTCDate() + diff);\n\t  return date;\n\t}\n\tvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\tfunction isLeapYearIndex(year) {\n\t  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n\t}\n\tfunction validateDate(year, month, date) {\n\t  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n\t}\n\tfunction validateDayOfYearDate(year, dayOfYear) {\n\t  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n\t}\n\tfunction validateWeekDate(_year, week, day) {\n\t  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n\t}\n\tfunction validateTime(hours, minutes, seconds) {\n\t  if (hours === 24) {\n\t    return minutes === 0 && seconds === 0;\n\t  }\n\t  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n\t}\n\tfunction validateTimezone(_hours, minutes) {\n\t  return minutes >= 0 && minutes <= 59;\n\t}\n\tconst marketDatePickerInputDateCss = \".input-row{display:flex;justify-content:space-around;margin-top:8px}.input-wrapper{display:flex;flex:1;flex-direction:column;align-items:flex-start}.start-input:not(:last-child){margin-right:16px}.time-input,.date-input{box-sizing:border-box;width:100%;margin-top:16px}.market-banner{margin-top:16px}\";\n\tconst MarketDatePickerInputDateStyle0 = marketDatePickerInputDateCss;\n\tconst MarketDateInputDate = class {\n\t  constructor(hostRef) {\n\t    index$2.registerInstance(this, hostRef);\n\t    this.marketDatePickerInputDateSet = index$2.createEvent(this, \"marketDatePickerInputDateSet\", 7);\n\t    this.marketDatePickerInputDateInvalidStateChanged = index$2.createEvent(this, \"marketDatePickerInputDateInvalidStateChanged\", 7);\n\t    this.withTime = false;\n\t    this.selectedStartDate = void 0;\n\t    this.selectedEndDate = void 0;\n\t    this.isDateDisabled = void 0;\n\t    this.timeframe = \"present\";\n\t    this.range = false;\n\t    this.isRangeInvalid = false;\n\t  }\n\t  emitInvalidStateEvent() {\n\t    this.marketDatePickerInputDateInvalidStateChanged.emit({\n\t      invalid: this.isRangeInvalid\n\t    });\n\t  }\n\t  formatDate(date, isTime = false) {\n\t    if (!date)\n\t      return \"\";\n\t    const dateObj = new Date(date);\n\t    if (!isValid(dateObj)) {\n\t      return \"\";\n\t    }\n\t    const formatStr = isTime ? \"HH:mm\" : \"yyyy-MM-dd\";\n\t    return format(dateObj, formatStr);\n\t  }\n\t  isInvalidDateForTimeframe(dateObj, today = /* @__PURE__ */ new Date()) {\n\t    const isFutureDate = this.timeframe === \"future\" && index$3.isBefore(dateObj, today) && !index$3.isSameDay(dateObj, today);\n\t    const isPastDate = this.timeframe === \"past\" && index$3.isAfter(dateObj, today) && !index$3.isSameDay(dateObj, today);\n\t    return isFutureDate || isPastDate;\n\t  }\n\t  // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t  updateInvalidState(start = this.selectedStartDate, end = this.selectedEndDate) {\n\t    if (this.isDateInvalid(start) || this.isDateInvalid(end)) {\n\t      this.isRangeInvalid = true;\n\t      return;\n\t    }\n\t    if (end) {\n\t      this.isRangeInvalid = index$3.isAfter(new Date(start), new Date(end));\n\t      return;\n\t    }\n\t    this.isRangeInvalid = false;\n\t  }\n\t  isDateInvalid(date) {\n\t    if (!date)\n\t      return false;\n\t    const dateObj = parseISO(date);\n\t    if (dateObj.toString() === \"Invalid Date\")\n\t      return true;\n\t    if (this.isDateDisabled && this.isDateDisabled(dateObj)) {\n\t      return true;\n\t    }\n\t    if (this.timeframe && this.isInvalidDateForTimeframe(dateObj)) {\n\t      return true;\n\t    }\n\t    return false;\n\t  }\n\t  emitDateSetStart(ev) {\n\t    this.emitDateSet(ev, \"start\");\n\t  }\n\t  emitDateSetEnd(ev) {\n\t    this.emitDateSet(ev, \"end\");\n\t  }\n\t  emitDateSetStartTime(ev) {\n\t    this.emitDateSet(ev, \"start\", true);\n\t  }\n\t  emitDateSetEndTime(ev) {\n\t    this.emitDateSet(ev, \"end\", true);\n\t  }\n\t  emitDateSet(ev, input, timeInput = false) {\n\t    ev.preventDefault();\n\t    ev.stopPropagation();\n\t    const { value } = ev.target;\n\t    let valueToSubmit = value;\n\t    if (this.withTime) {\n\t      if (timeInput) {\n\t        const date = this.formatDate(input === \"start\" ? this.selectedStartDate : this.selectedEndDate);\n\t        const time = value.slice(0, 5);\n\t        valueToSubmit = `${date}T${time}`;\n\t      } else {\n\t        const time = this.formatDate(input === \"start\" ? this.selectedStartDate : this.selectedEndDate, true);\n\t        valueToSubmit = `${value}T${time}`;\n\t      }\n\t    }\n\t    const realLength = valueToSubmit.replace(/^0+/, \"\").length;\n\t    if (realLength === 10 || realLength === 16) {\n\t      this.marketDatePickerInputDateSet.emit({ date: valueToSubmit, input });\n\t    }\n\t  }\n\t  componentWillRender() {\n\t    this.updateInvalidState();\n\t  }\n\t  render() {\n\t    const MarketInputTextTagName = index$4.getNamespacedTagFor(\"market-input-text\");\n\t    const MarketBannerTagName = index$4.getNamespacedTagFor(\"market-banner\");\n\t    const inputWrapper = (type) => index$2.h(\"div\", { key: \"547cc56c5691ee71dd033a095c2dd8d7e270ae54\", class: `input-wrapper ${type === \"start\" ? \"start-input\" : \"\"}` }, type === \"start\" && dateInput(\"start\"), type === \"start\" && this.withTime && timeInput(\"start\"), type === \"end\" && dateInput(\"end\"), type === \"end\" && this.withTime && timeInput(\"end\"));\n\t    const dateInput = (type) => index$2.h(MarketInputTextTagName, { key: \"9658299530baf9e5ce5ea3f62863c4141f947374\", type: \"date\", class: `date-input`, name: `date-picker-date-${type}`, invalid: this.isRangeInvalid, value: this.formatDate(type === \"start\" ? this.selectedStartDate : this.selectedEndDate), onInput: type === \"start\" ? this.emitDateSetStart.bind(this) : this.emitDateSetEnd.bind(this) }, index$2.h(\"label\", { key: \"12a352968d6003cd444f778c394c431558d5b887\", htmlFor: `date-picker-${type}` }, index$2.h(\"slot\", { key: \"3f144bb336143c9c3d5e55ae385ab1130fa09e62\", name: `${type}-date` }, this.range && (type === \"start\" ? \"Start\" : \"End\"), \" Date\")));\n\t    const timeInput = (type) => index$2.h(MarketInputTextTagName, { key: \"02156508904131c0d379a26ae41e9195872973e5\", type: \"time\", class: `time-input`, name: `date-picker-time-${type}`, invalid: this.isRangeInvalid, value: this.formatDate(type === \"start\" ? this.selectedStartDate : this.selectedEndDate, true), onInput: type === \"start\" ? this.emitDateSetStartTime.bind(this) : this.emitDateSetEndTime.bind(this) }, index$2.h(\"label\", { key: \"362e1c3d2195de6d54889928bbcb9261ce7a87ce\", htmlFor: `date-picker-time-${type}` }, index$2.h(\"slot\", { key: \"4029a3fe4e5a12c19b1012d3da80057047a723f9\", name: `${type}-time` }, this.range && (type === \"start\" ? \"Start\" : \"End\"), \" Time\")));\n\t    return index$2.h(index$2.Host, { key: \"474fef9b8fbd569b9584daf7b13118a9ba6ab15d\", class: \"market-date-picker-input-date\" }, this.range ? index$2.h(\"div\", { class: \"input-row\" }, inputWrapper(\"start\"), inputWrapper(\"end\")) : index$2.h(\"div\", null, inputWrapper(\"start\")), this.isRangeInvalid && index$2.h(MarketBannerTagName, { key: \"00da213e4cc13564475d5ff80ae0b43217a7bfce\", variant: \"critical\" }, index$2.h(\"slot\", { key: \"5d3509e0af89e2b0f5103d63c1c8e071b2038e6b\", name: \"range-error\" }, \"Enter a valid date range\")));\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"isRangeInvalid\": [\"emitInvalidStateEvent\"]\n\t    };\n\t  }\n\t};\n\tMarketDateInputDate.style = MarketDatePickerInputDateStyle0;\n\tmarketDatePickerInputDate_cjs_entry.market_date_picker_input_date = MarketDateInputDate;\n\treturn marketDatePickerInputDate_cjs_entry;\n}\n\nvar marketDatePickerMenu_cjs_entry = {};\n\nvar hasRequiredMarketDatePickerMenu_cjs_entry;\n\nfunction requireMarketDatePickerMenu_cjs_entry () {\n\tif (hasRequiredMarketDatePickerMenu_cjs_entry) return marketDatePickerMenu_cjs_entry;\n\thasRequiredMarketDatePickerMenu_cjs_entry = 1;\n\tObject.defineProperty(marketDatePickerMenu_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst menu = requireMenu122781f5();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketDatePickerMenuCss = \":host{display:block;margin-right:var(--date-picker-menu-horizontal-spacing);font-weight:var(--date-picker-menu-text-weight);font-size:var(--date-picker-menu-text-size);line-height:var(--date-picker-menu-text-leading)}:host>.market-list>.market-row{min-height:var(--date-picker-menu-row-height);padding:0 12px}:host>.market-list>.market-row::before{content:none}:host>.market-list>.market-row::part(container){padding-right:0;padding-left:0}:host>.market-list>.market-row[selected]{background-color:var(--date-picker-menu-row-background-selected-state-color, var(--core-emphasis-40-color));color:var(--date-picker-menu-row-label-selected-state-text-color)}@media only screen and (max-width: 800px){:host{margin-right:0}:host>.market-list>.market-row{width:inherit}}\";\n\tconst MarketDatePickerMenuStyle0 = marketDatePickerMenuCss;\n\tconst MarketDatePickerMenu = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDatePickerMenuSelectionChanged = index.createEvent(this, \"marketDatePickerMenuSelectionChanged\", 7);\n\t    this.timeframe = \"present\";\n\t    this.excludeMenuItems = \"\";\n\t    this.presetMenuOption = void 0;\n\t  }\n\t  handleMarketListSelectionsDidChange(e) {\n\t    e.stopPropagation();\n\t    this.marketDatePickerMenuSelectionChanged.emit({\n\t      menuSelection: e.detail.newSelectionValue\n\t    });\n\t  }\n\t  /**\n\t   * Method to visually select Custom row for use by the date picker component\n\t   * (internal use only)\n\t   */\n\t  _selectCustomRow() {\n\t    const MarketRowTagName = index$1.getNamespacedTagFor(\"market-row\");\n\t    this.el.shadowRoot.querySelectorAll(MarketRowTagName).forEach((row) => {\n\t      if (row.querySelector(\"slot\").name === menu.MENU_SLOT_NAMES.CUSTOM) {\n\t        row.click();\n\t      }\n\t    });\n\t    return Promise.resolve();\n\t  }\n\t  render() {\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const MarketRowTagName = index$1.getNamespacedTagFor(\"market-row\");\n\t    const excludedItems = this.excludeMenuItems.split(\",\");\n\t    return index.h(index.Host, { key: \"62360450f1bac96798dc4c6920388c236ec50424\", class: \"market-date-picker-menu\" }, index.h(MarketListTagName, { key: \"4c5b0c385cbb061a6e34f9b67781fcabc7234489\", interactive: true }, this.timeframe !== \"past\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.TODAY) && index.h(MarketRowTagName, { key: \"c7b43477ca87f7c45890f171948cfe4a72c986e5\", value: menu.MENU_SLOT_NAMES.TODAY, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.TODAY }, index.h(\"slot\", { key: \"84466a9b16c61d87f2b677324d70ecb44329b60d\", name: menu.MENU_SLOT_NAMES.TODAY }, \"Today\")), this.timeframe !== \"future\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.YESTERDAY) && index.h(MarketRowTagName, { key: \"c667baac3dc20d2d315eabcfd201026ac6848648\", value: menu.MENU_SLOT_NAMES.YESTERDAY, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.YESTERDAY }, index.h(\"slot\", { key: \"190fdf016aac550d09dd1033b630d6458a4d2a88\", name: menu.MENU_SLOT_NAMES.YESTERDAY }, \"Yesterday\")), this.timeframe !== \"past\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.THIS_WEEK) && index.h(MarketRowTagName, { key: \"6da58d2b162cbe597b2e92d6f11b92c44f4558f5\", value: menu.MENU_SLOT_NAMES.THIS_WEEK, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.THIS_WEEK }, index.h(\"slot\", { key: \"f11c13e408657eb67522c745cd4017486ca8b59e\", name: menu.MENU_SLOT_NAMES.THIS_WEEK }, \"This week\")), this.timeframe !== \"future\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.LAST_WEEK) && index.h(MarketRowTagName, { key: \"d51f1aff9416f7dd66d8d98c559f9dc2a71d9233\", value: menu.MENU_SLOT_NAMES.LAST_WEEK, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.LAST_WEEK }, index.h(\"slot\", { key: \"be1bd44aae7f55f60793fe635dabeb7a154ea149\", name: menu.MENU_SLOT_NAMES.LAST_WEEK }, \"Last week\")), this.timeframe !== \"past\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.THIS_MONTH) && index.h(MarketRowTagName, { key: \"f27d7f66c02ca0241a700aeb633f3a36897ea1f3\", value: menu.MENU_SLOT_NAMES.THIS_MONTH, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.THIS_MONTH }, index.h(\"slot\", { key: \"1c447b0a7c90d006cb0cdc62c62df55b5564e308\", name: menu.MENU_SLOT_NAMES.THIS_MONTH }, \"This month\")), this.timeframe !== \"future\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.LAST_MONTH) && index.h(MarketRowTagName, { key: \"dbb716e53f06d408b84a82b140bb8f3c8c16d77b\", value: menu.MENU_SLOT_NAMES.LAST_MONTH, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.LAST_MONTH }, index.h(\"slot\", { key: \"835b25cad3af797949599a8e0744f2af2d809674\", name: menu.MENU_SLOT_NAMES.LAST_MONTH }, \"Last month\")), this.timeframe !== \"past\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.THIS_YEAR) && index.h(MarketRowTagName, { key: \"63bcbdceccff6f6a42c4f8ea13985887c1c382c9\", value: menu.MENU_SLOT_NAMES.THIS_YEAR, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.THIS_YEAR }, index.h(\"slot\", { key: \"55caeced1d375f246797dcc350c1d289c026fa63\", name: menu.MENU_SLOT_NAMES.THIS_YEAR }, \"This year\")), this.timeframe !== \"future\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.LAST_YEAR) && index.h(MarketRowTagName, { key: \"83b87409aec80a9fe43e18ad29399d966dabef8f\", value: menu.MENU_SLOT_NAMES.LAST_YEAR, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.LAST_YEAR }, index.h(\"slot\", { key: \"1026b0ed92857c9232e665a4d1c4c310888b006d\", name: menu.MENU_SLOT_NAMES.LAST_YEAR }, \"Last year\")), this.timeframe === \"present\" && !excludedItems.includes(menu.MENU_SLOT_NAMES.PAY_PERIOD) && index.h(MarketRowTagName, { key: \"37192166c6c442ca64a8ba1f9d2b09d9a4bc71e6\", value: menu.MENU_SLOT_NAMES.PAY_PERIOD, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.PAY_PERIOD }, index.h(\"slot\", { key: \"8dbe2f112b600c3ba89ba93558e3a2c0132993eb\", name: menu.MENU_SLOT_NAMES.PAY_PERIOD }, \"Pay period\")), !excludedItems.includes(menu.MENU_SLOT_NAMES.CUSTOM) && index.h(MarketRowTagName, { key: \"a86bcb5fa23ba74047bb0068c6072870773e7a1e\", value: menu.MENU_SLOT_NAMES.CUSTOM, selected: this.presetMenuOption === menu.MENU_SLOT_NAMES.CUSTOM }, index.h(\"slot\", { key: \"9653433a5615753520cf900d925dbb9eb00d288c\", name: menu.MENU_SLOT_NAMES.CUSTOM }, \"Custom\"))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketDatePickerMenu.style = MarketDatePickerMenuStyle0;\n\tmarketDatePickerMenu_cjs_entry.market_date_picker_menu = MarketDatePickerMenu;\n\treturn marketDatePickerMenu_cjs_entry;\n}\n\nvar marketDialog_cjs_entry = {};\n\nvar hasRequiredMarketDialog_cjs_entry;\n\nfunction requireMarketDialog_cjs_entry () {\n\tif (hasRequiredMarketDialog_cjs_entry) return marketDialog_cjs_entry;\n\thasRequiredMarketDialog_cjs_entry = 1;\n\tObject.defineProperty(marketDialog_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst focusTrap = requireFocusTrapD7750c92();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst marketDialogCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-direction:column;justify-content:stretch;overflow:hidden}:host ::slotted(main),:host ::slotted(.main){flex:0 1 100%;overflow-y:auto;height:100%}:host ::slotted(.market-header){margin-bottom:var(--core-metrics-spacing-300);padding-top:0}:host ::slotted(.market-footer){padding-bottom:0}:host{--modal-dialog-width:var(--modal-dialog-maximum-width-size);--modal-dialog-horizontal-padding-size:var(--modal-dialog-compact-horizontal-size-class-horizontal-padding);--modal-dialog-vertical-padding-size:var(--modal-dialog-compact-vertical-size-class-vertical-padding);width:var(--modal-dialog-width);max-width:var(--modal-dialog-width);padding:var(--modal-dialog-vertical-padding-size)\\n    var(--modal-dialog-horizontal-padding-size);border-radius:var(--modal-dialog-border-radius);background-color:var(--modal-dialog-background-color);animation:var(--modal-dialog-animation-enter-transition-duration)\\n    market-popup\\n    forwards\\n    var(--modal-dialog-animation-enter-transition-easing)}:host([hidden]){animation-name:market-popdown;animation-duration:var(--modal-dialog-animation-exit-transition-duration);animation-timing-function:var(--modal-dialog-animation-exit-transition-easing)}:host([value=\"loadingMode\"]){display:flex;flex-direction:column}::slotted(.market-footer){padding-top:var(--modal-dialog-regular-vertical-size-class-vertical-padding)}.market-activity-indicator{align-self:flex-start;margin-bottom:var(--core-metrics-spacing-200)}@media only screen and (min-width: 600px){:host{--modal-dialog-horizontal-padding-size:var(--modal-dialog-regular-horizontal-size-class-horizontal-padding);--modal-dialog-vertical-padding-size:var(--modal-dialog-regular-vertical-size-class-vertical-padding)}}@media only screen and (min-width: 1200px){:host{--modal-dialog-horizontal-padding-size:var(--modal-dialog-wide-horizontal-size-class-horizontal-padding);--modal-dialog-vertical-padding-size:var(--modal-dialog-wide-vertical-size-class-vertical-padding, 32px)}}';\n\tconst MarketDialogStyle0 = marketDialogCss;\n\tconst MarketDialog = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDialogLoaded = index.createEvent(this, \"marketDialogLoaded\", 7);\n\t    this.marketDialogDismissed = index.createEvent(this, \"marketDialogDismissed\", 7);\n\t    this.marketDialogDidDismiss = index.createEvent(this, \"marketDialogDidDismiss\", 7);\n\t    this.type = \"dialog\";\n\t    this.hidden = false;\n\t    this.dialogID = void 0;\n\t    this.index = void 0;\n\t    this.isLoading = false;\n\t    this.persistent = false;\n\t    this.trapFocus = false;\n\t    this.animationEnterDuration = index$1.MODAL_DIALOG_ANIMATION_ENTER_TRANSITION_DURATION;\n\t    this.animationExitDuration = index$1.MODAL_DIALOG_ANIMATION_EXIT_TRANSITION_DURATION;\n\t  }\n\t  /**\n\t   * Emits the dismiss event\n\t   * The parent context will handle actually removing elements from the DOM,\n\t   * All the dialog needs to do it emit an event so actually closing it can be\n\t   * some other elements problem\n\t   */\n\t  dismiss(dismissOptions) {\n\t    if (!this.persistent) {\n\t      const { defaultPrevented } = this.marketDialogDismissed.emit({\n\t        dialog: this.el,\n\t        type: this.type,\n\t        origin: (dismissOptions === null || dismissOptions === void 0 ? void 0 : dismissOptions.origin) || this.el\n\t      });\n\t      if (!defaultPrevented) {\n\t        this.hidden = true;\n\t        setTimeout(() => {\n\t          this.marketDialogDidDismiss.emit({\n\t            dialog: this.el,\n\t            type: this.type,\n\t            origin: this.el\n\t          });\n\t        }, this.animationExitDuration);\n\t      }\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  onTrapFocusChanged(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      if (newValue) {\n\t        this.activateFocusTrap();\n\t      } else {\n\t        this.deactivateFocusTrap();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Activates the focus trap\n\t   *\n\t   * See [`focus-trap.ts`](../../utils/focus-trap.ts) for default options\n\t   *\n\t   * @param {Object} [options] [focus-trap create options](https://github.com/focus-trap/focus-trap#createoptions)\n\t   * @param {Object} [activateOptions] set options for [onActivate, onPostActivate, and checkCanFocusTrap](https://github.com/focus-trap/focus-trap#trapactivate)\n\t   */\n\t  activateFocusTrap(options, activateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.activate(activateOptions !== null && activateOptions !== void 0 ? activateOptions : {});\n\t      if (!this.trapFocus) {\n\t        this.trapFocus = true;\n\t      }\n\t    } else {\n\t      this.focusTrap = focusTrap.createAndActivateFocusTrap({\n\t        activateOptions,\n\t        el: this.el,\n\t        options\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Deactivates the focus trap\n\t   *\n\t   * @param {FocusTrapDeactivateOptions} [deactivateOptions] set options for [onDeactivate, onPostDeactivate, and checkCanReturnFocus](https://github.com/focus-trap/focus-trap#trapdeactivate)\n\t   */\n\t  deactivateFocusTrap(deactivateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.deactivate(Object.assign({ returnFocus: true, checkCanReturnFocus: (trigger) => new Promise((resolve) => {\n\t        if (typeof (trigger === null || trigger === void 0 ? void 0 : trigger.setFocus) === \"function\") {\n\t          trigger.setFocus();\n\t        } else {\n\t          resolve();\n\t        }\n\t      }) }, deactivateOptions));\n\t      this.focusTrap = void 0;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  removeTopMarginOfFirstHeading() {\n\t    const headings = this.el.querySelectorAll(\"h1, h2, h3, h4, h5, h6\");\n\t    if (headings.length > 0) {\n\t      headings[0].style.marginTop = \"0\";\n\t    }\n\t  }\n\t  handleSlotchange() {\n\t    this.removeTopMarginOfFirstHeading();\n\t  }\n\t  connectedCallback() {\n\t    this.connectedCallbackTimeout = setTimeout(() => {\n\t      this.marketDialogLoaded.emit({\n\t        dialog: this.el,\n\t        type: this.type\n\t      });\n\t      if (this.trapFocus) {\n\t        this.activateFocusTrap();\n\t      }\n\t    }, this.animationEnterDuration);\n\t    this.handleSlotchange();\n\t  }\n\t  disconnectedCallback() {\n\t    this.deactivateFocusTrap();\n\t    clearTimeout(this.connectedCallbackTimeout);\n\t  }\n\t  render() {\n\t    const MarketActivityIndicatorTagName = index$2.getNamespacedTagFor(\"market-activity-indicator\");\n\t    return index.h(index.Host, { key: \"257dea71a279b593cf90d9eb300785c086cb2111\", class: \"market-dialog\", role: \"dialog\" }, this.isLoading && index.h(MarketActivityIndicatorTagName, { key: \"a0034e8742b103c92eac0959e78e19276069d583\" }), index.h(\"slot\", { key: \"ba57cfa9d2817fda4c463503f24f403fbf431cce\", onSlotchange: this.handleSlotchange.bind(this) }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"trapFocus\": [\"onTrapFocusChanged\"]\n\t    };\n\t  }\n\t};\n\tMarketDialog.style = MarketDialogStyle0;\n\tmarketDialog_cjs_entry.market_dialog = MarketDialog;\n\treturn marketDialog_cjs_entry;\n}\n\nvar marketDivider_cjs_entry = {};\n\nvar hasRequiredMarketDivider_cjs_entry;\n\nfunction requireMarketDivider_cjs_entry () {\n\tif (hasRequiredMarketDivider_cjs_entry) return marketDivider_cjs_entry;\n\thasRequiredMarketDivider_cjs_entry = 1;\n\tObject.defineProperty(marketDivider_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketDividerCss = ':host{--divider-thin-variant-height:1px;display:block;flex:none;height:var(--divider-height);border-radius:var(--divider-radius);background-color:var(--divider-fill-color)}:host([margin=\"large\"]){margin:var(--divider-large-variant-vertical-padding) 0}:host([margin=\"medium\"]){margin:var(--divider-medium-variant-vertical-padding) 0}:host([margin=\"small\"]){margin:var(--divider-small-variant-vertical-padding) 0}:host([size=\"thin\"]){height:var(--divider-thin-variant-height)}';\n\tconst MarketDividerStyle0 = marketDividerCss;\n\tconst MarketDivider = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.margin = \"medium\";\n\t    this.size = \"thick\";\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"2ea2acb8c819496d30e39f1fc9e243f5895b8f1d\", class: \"market-divider\" });\n\t  }\n\t};\n\tMarketDivider.style = MarketDividerStyle0;\n\tmarketDivider_cjs_entry.market_divider = MarketDivider;\n\treturn marketDivider_cjs_entry;\n}\n\nvar marketDragHandle_cjs_entry = {};\n\nvar hasRequiredMarketDragHandle_cjs_entry;\n\nfunction requireMarketDragHandle_cjs_entry () {\n\tif (hasRequiredMarketDragHandle_cjs_entry) return marketDragHandle_cjs_entry;\n\thasRequiredMarketDragHandle_cjs_entry = 1;\n\tObject.defineProperty(marketDragHandle_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst utils = requireUtils608a13a9();\n\tconst marketDragHandleCss = \":host{cursor:grab}:host(:active){cursor:grabbing}svg{display:block;fill:var(--drag-handle-normal-state-color, var(--core-fill-20-color))}:host(:hover) svg{fill:var(--drag-handle-hover-state-color, var(--core-fill-10-color))}\";\n\tconst MarketDragHandleStyle0 = marketDragHandleCss;\n\tconst MarketDragHandle = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDragHandleDragStart = index.createEvent(this, \"marketDragHandleDragStart\", 7);\n\t    this.marketDragHandleDragMove = index.createEvent(this, \"marketDragHandleDragMove\", 7);\n\t    this.marketDragHandleDragEnd = index.createEvent(this, \"marketDragHandleDragEnd\", 7);\n\t    this.boundOnDragMove = this.onDragMove.bind(this);\n\t    this.boundOnDragEnd = this.onDragEnd.bind(this);\n\t  }\n\t  onDragStart(e) {\n\t    e.preventDefault();\n\t    e.stopPropagation();\n\t    if (!utils.isTouchEvent(e) && e.button !== 0)\n\t      return;\n\t    const { marketDragHandleDragStart, boundOnDragMove, boundOnDragEnd } = this;\n\t    const coords = utils.getCoordsFromEvent(e);\n\t    const { defaultPrevented } = marketDragHandleDragStart.emit(coords);\n\t    if (defaultPrevented)\n\t      return;\n\t    document.addEventListener(\"mousemove\", boundOnDragMove);\n\t    document.addEventListener(\"mouseup\", boundOnDragEnd);\n\t    document.addEventListener(\"touchmove\", boundOnDragMove, { passive: false });\n\t    document.addEventListener(\"touchend\", boundOnDragEnd, { passive: false });\n\t  }\n\t  onDragMove(e) {\n\t    e.preventDefault();\n\t    const { marketDragHandleDragMove, boundOnDragMove, boundOnDragEnd } = this;\n\t    const coords = utils.getCoordsFromEvent(e);\n\t    const { defaultPrevented } = marketDragHandleDragMove.emit(coords);\n\t    if (defaultPrevented) {\n\t      document.removeEventListener(\"mousemove\", boundOnDragMove);\n\t      document.removeEventListener(\"mouseup\", boundOnDragEnd);\n\t      document.removeEventListener(\"touchmove\", boundOnDragMove);\n\t      document.removeEventListener(\"touchend\", boundOnDragEnd);\n\t    }\n\t  }\n\t  onDragEnd(e) {\n\t    e.preventDefault();\n\t    const { marketDragHandleDragEnd, boundOnDragMove, boundOnDragEnd } = this;\n\t    const coords = utils.getCoordsFromEvent(e);\n\t    const { defaultPrevented } = marketDragHandleDragEnd.emit(coords);\n\t    if (defaultPrevented)\n\t      return;\n\t    document.removeEventListener(\"mousemove\", boundOnDragMove);\n\t    document.removeEventListener(\"mouseup\", boundOnDragEnd);\n\t    document.removeEventListener(\"touchmove\", boundOnDragMove);\n\t    document.removeEventListener(\"touchend\", boundOnDragEnd);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"b4b6b235c7099bdc6971e482d83fdcbf856e1f16\", class: \"market-drag-handle\", onMouseDown: (e) => this.onDragStart(e), onTouchStart: (e) => this.onDragStart(e), \"aria-hidden\": \"true\" }, index.h(\"svg\", { key: \"81f5adf38aaa6f61fcadc6ac0af8f39462be1e5d\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"f1708d3e603998da65db3eddff4f33643629ec6f\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M15 8C16.1046 8 17 7.10457 17 6C17 4.89543 16.1046 4 15 4C13.8954 4 13 4.89543 13 6C13 7.10457 13.8954 8 15 8ZM15 14C16.1046 14 17 13.1046 17 12C17 10.8954 16.1046 10 15 10C13.8954 10 13 10.8954 13 12C13 13.1046 13.8954 14 15 14ZM11 18C11 19.1046 10.1046 20 9 20C7.89543 20 7 19.1046 7 18C7 16.8954 7.89543 16 9 16C10.1046 16 11 16.8954 11 18ZM17 18C17 19.1046 16.1046 20 15 20C13.8954 20 13 19.1046 13 18C13 16.8954 13.8954 16 15 16C16.1046 16 17 16.8954 17 18ZM11 12C11 13.1046 10.1046 14 9 14C7.89543 14 7 13.1046 7 12C7 10.8954 7.89543 10 9 10C10.1046 10 11 10.8954 11 12ZM11 6C11 7.10457 10.1046 8 9 8C7.89543 8 7 7.10457 7 6C7 4.89543 7.89543 4 9 4C10.1046 4 11 4.89543 11 6Z\" })));\n\t  }\n\t};\n\tMarketDragHandle.style = MarketDragHandleStyle0;\n\tmarketDragHandle_cjs_entry.market_drag_handle = MarketDragHandle;\n\treturn marketDragHandle_cjs_entry;\n}\n\nvar marketDropdown_cjs_entry = {};\n\nvar hasRequiredMarketDropdown_cjs_entry;\n\nfunction requireMarketDropdown_cjs_entry () {\n\tif (hasRequiredMarketDropdown_cjs_entry) return marketDropdown_cjs_entry;\n\thasRequiredMarketDropdown_cjs_entry = 1;\n\tObject.defineProperty(marketDropdown_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst dropdown = requireDropdownB9b27ed3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst v4 = requireV48e8d6fbc();\n\tvar top = \"top\";\n\tvar bottom = \"bottom\";\n\tvar right = \"right\";\n\tvar left = \"left\";\n\tvar auto = \"auto\";\n\tvar basePlacements = [top, bottom, right, left];\n\tvar start = \"start\";\n\tvar end = \"end\";\n\tvar clippingParents = \"clippingParents\";\n\tvar viewport = \"viewport\";\n\tvar popper = \"popper\";\n\tvar reference = \"reference\";\n\tvar variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {\n\t  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n\t}, []);\n\tvar placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {\n\t  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n\t}, []);\n\tvar beforeRead = \"beforeRead\";\n\tvar read = \"read\";\n\tvar afterRead = \"afterRead\";\n\tvar beforeMain = \"beforeMain\";\n\tvar main = \"main\";\n\tvar afterMain = \"afterMain\";\n\tvar beforeWrite = \"beforeWrite\";\n\tvar write = \"write\";\n\tvar afterWrite = \"afterWrite\";\n\tvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\tfunction getNodeName(element) {\n\t  return element ? (element.nodeName || \"\").toLowerCase() : null;\n\t}\n\tfunction getWindow(node) {\n\t  if (node == null) {\n\t    return window;\n\t  }\n\t  if (node.toString() !== \"[object Window]\") {\n\t    var ownerDocument = node.ownerDocument;\n\t    return ownerDocument ? ownerDocument.defaultView || window : window;\n\t  }\n\t  return node;\n\t}\n\tfunction isElement(node) {\n\t  var OwnElement = getWindow(node).Element;\n\t  return node instanceof OwnElement || node instanceof Element;\n\t}\n\tfunction isHTMLElement(node) {\n\t  var OwnElement = getWindow(node).HTMLElement;\n\t  return node instanceof OwnElement || node instanceof HTMLElement;\n\t}\n\tfunction isShadowRoot(node) {\n\t  if (typeof ShadowRoot === \"undefined\") {\n\t    return false;\n\t  }\n\t  var OwnElement = getWindow(node).ShadowRoot;\n\t  return node instanceof OwnElement || node instanceof ShadowRoot;\n\t}\n\tfunction applyStyles(_ref) {\n\t  var state = _ref.state;\n\t  Object.keys(state.elements).forEach(function(name) {\n\t    var style = state.styles[name] || {};\n\t    var attributes = state.attributes[name] || {};\n\t    var element = state.elements[name];\n\t    if (!isHTMLElement(element) || !getNodeName(element)) {\n\t      return;\n\t    }\n\t    Object.assign(element.style, style);\n\t    Object.keys(attributes).forEach(function(name2) {\n\t      var value = attributes[name2];\n\t      if (value === false) {\n\t        element.removeAttribute(name2);\n\t      } else {\n\t        element.setAttribute(name2, value === true ? \"\" : value);\n\t      }\n\t    });\n\t  });\n\t}\n\tfunction effect$2(_ref2) {\n\t  var state = _ref2.state;\n\t  var initialStyles = {\n\t    popper: {\n\t      position: state.options.strategy,\n\t      left: \"0\",\n\t      top: \"0\",\n\t      margin: \"0\"\n\t    },\n\t    arrow: {\n\t      position: \"absolute\"\n\t    },\n\t    reference: {}\n\t  };\n\t  Object.assign(state.elements.popper.style, initialStyles.popper);\n\t  state.styles = initialStyles;\n\t  if (state.elements.arrow) {\n\t    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n\t  }\n\t  return function() {\n\t    Object.keys(state.elements).forEach(function(name) {\n\t      var element = state.elements[name];\n\t      var attributes = state.attributes[name] || {};\n\t      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);\n\t      var style = styleProperties.reduce(function(style2, property) {\n\t        style2[property] = \"\";\n\t        return style2;\n\t      }, {});\n\t      if (!isHTMLElement(element) || !getNodeName(element)) {\n\t        return;\n\t      }\n\t      Object.assign(element.style, style);\n\t      Object.keys(attributes).forEach(function(attribute) {\n\t        element.removeAttribute(attribute);\n\t      });\n\t    });\n\t  };\n\t}\n\tconst applyStyles$1 = {\n\t  name: \"applyStyles\",\n\t  enabled: true,\n\t  phase: \"write\",\n\t  fn: applyStyles,\n\t  effect: effect$2,\n\t  requires: [\"computeStyles\"]\n\t};\n\tfunction getBasePlacement(placement) {\n\t  return placement.split(\"-\")[0];\n\t}\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar round = Math.round;\n\tfunction getUAString() {\n\t  var uaData = navigator.userAgentData;\n\t  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n\t    return uaData.brands.map(function(item) {\n\t      return item.brand + \"/\" + item.version;\n\t    }).join(\" \");\n\t  }\n\t  return navigator.userAgent;\n\t}\n\tfunction isLayoutViewport() {\n\t  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n\t}\n\tfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n\t  if (includeScale === void 0) {\n\t    includeScale = false;\n\t  }\n\t  if (isFixedStrategy === void 0) {\n\t    isFixedStrategy = false;\n\t  }\n\t  var clientRect = element.getBoundingClientRect();\n\t  var scaleX = 1;\n\t  var scaleY = 1;\n\t  if (includeScale && isHTMLElement(element)) {\n\t    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n\t    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n\t  }\n\t  var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;\n\t  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n\t  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n\t  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n\t  var width = clientRect.width / scaleX;\n\t  var height = clientRect.height / scaleY;\n\t  return {\n\t    width,\n\t    height,\n\t    top: y,\n\t    right: x + width,\n\t    bottom: y + height,\n\t    left: x,\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction getLayoutRect(element) {\n\t  var clientRect = getBoundingClientRect(element);\n\t  var width = element.offsetWidth;\n\t  var height = element.offsetHeight;\n\t  if (Math.abs(clientRect.width - width) <= 1) {\n\t    width = clientRect.width;\n\t  }\n\t  if (Math.abs(clientRect.height - height) <= 1) {\n\t    height = clientRect.height;\n\t  }\n\t  return {\n\t    x: element.offsetLeft,\n\t    y: element.offsetTop,\n\t    width,\n\t    height\n\t  };\n\t}\n\tfunction contains(parent, child) {\n\t  var rootNode = child.getRootNode && child.getRootNode();\n\t  if (parent.contains(child)) {\n\t    return true;\n\t  } else if (rootNode && isShadowRoot(rootNode)) {\n\t    var next = child;\n\t    do {\n\t      if (next && parent.isSameNode(next)) {\n\t        return true;\n\t      }\n\t      next = next.parentNode || next.host;\n\t    } while (next);\n\t  }\n\t  return false;\n\t}\n\tfunction getComputedStyle(element) {\n\t  return getWindow(element).getComputedStyle(element);\n\t}\n\tfunction isTableElement(element) {\n\t  return [\"table\", \"td\", \"th\"].indexOf(getNodeName(element)) >= 0;\n\t}\n\tfunction getDocumentElement(element) {\n\t  return ((isElement(element) ? element.ownerDocument : (\n\t    // $FlowFixMe[prop-missing]\n\t    element.document\n\t  )) || window.document).documentElement;\n\t}\n\tfunction getParentNode(element) {\n\t  if (getNodeName(element) === \"html\") {\n\t    return element;\n\t  }\n\t  return (\n\t    // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n\t    // $FlowFixMe[incompatible-return]\n\t    // $FlowFixMe[prop-missing]\n\t    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n\t    element.parentNode || // DOM Element detected\n\t    (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n\t    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n\t    getDocumentElement(element)\n\t  );\n\t}\n\tfunction getTrueOffsetParent(element) {\n\t  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n\t  getComputedStyle(element).position === \"fixed\") {\n\t    return null;\n\t  }\n\t  return element.offsetParent;\n\t}\n\tfunction getContainingBlock(element) {\n\t  var isFirefox = /firefox/i.test(getUAString());\n\t  var isIE = /Trident/i.test(getUAString());\n\t  if (isIE && isHTMLElement(element)) {\n\t    var elementCss = getComputedStyle(element);\n\t    if (elementCss.position === \"fixed\") {\n\t      return null;\n\t    }\n\t  }\n\t  var currentNode = getParentNode(element);\n\t  if (isShadowRoot(currentNode)) {\n\t    currentNode = currentNode.host;\n\t  }\n\t  while (isHTMLElement(currentNode) && [\"html\", \"body\"].indexOf(getNodeName(currentNode)) < 0) {\n\t    var css = getComputedStyle(currentNode);\n\t    if (css.transform !== \"none\" || css.perspective !== \"none\" || css.contain === \"paint\" || [\"transform\", \"perspective\"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === \"filter\" || isFirefox && css.filter && css.filter !== \"none\") {\n\t      return currentNode;\n\t    } else {\n\t      currentNode = currentNode.parentNode;\n\t    }\n\t  }\n\t  return null;\n\t}\n\tfunction getOffsetParent(element) {\n\t  var window2 = getWindow(element);\n\t  var offsetParent = getTrueOffsetParent(element);\n\t  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === \"static\") {\n\t    offsetParent = getTrueOffsetParent(offsetParent);\n\t  }\n\t  if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle(offsetParent).position === \"static\")) {\n\t    return window2;\n\t  }\n\t  return offsetParent || getContainingBlock(element) || window2;\n\t}\n\tfunction getMainAxisFromPlacement(placement) {\n\t  return [\"top\", \"bottom\"].indexOf(placement) >= 0 ? \"x\" : \"y\";\n\t}\n\tfunction within(min$1, value, max$1) {\n\t  return max(min$1, min(value, max$1));\n\t}\n\tfunction withinMaxClamp(min2, value, max2) {\n\t  var v = within(min2, value, max2);\n\t  return v > max2 ? max2 : v;\n\t}\n\tfunction getFreshSideObject() {\n\t  return {\n\t    top: 0,\n\t    right: 0,\n\t    bottom: 0,\n\t    left: 0\n\t  };\n\t}\n\tfunction mergePaddingObject(paddingObject) {\n\t  return Object.assign({}, getFreshSideObject(), paddingObject);\n\t}\n\tfunction expandToHashMap(value, keys) {\n\t  return keys.reduce(function(hashMap, key) {\n\t    hashMap[key] = value;\n\t    return hashMap;\n\t  }, {});\n\t}\n\tvar toPaddingObject = function toPaddingObject2(padding, state) {\n\t  padding = typeof padding === \"function\" ? padding(Object.assign({}, state.rects, {\n\t    placement: state.placement\n\t  })) : padding;\n\t  return mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n\t};\n\tfunction arrow(_ref) {\n\t  var _state$modifiersData$;\n\t  var state = _ref.state, name = _ref.name, options = _ref.options;\n\t  var arrowElement = state.elements.arrow;\n\t  var popperOffsets2 = state.modifiersData.popperOffsets;\n\t  var basePlacement = getBasePlacement(state.placement);\n\t  var axis = getMainAxisFromPlacement(basePlacement);\n\t  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n\t  var len = isVertical ? \"height\" : \"width\";\n\t  if (!arrowElement || !popperOffsets2) {\n\t    return;\n\t  }\n\t  var paddingObject = toPaddingObject(options.padding, state);\n\t  var arrowRect = getLayoutRect(arrowElement);\n\t  var minProp = axis === \"y\" ? top : left;\n\t  var maxProp = axis === \"y\" ? bottom : right;\n\t  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];\n\t  var startDiff = popperOffsets2[axis] - state.rects.reference[axis];\n\t  var arrowOffsetParent = getOffsetParent(arrowElement);\n\t  var clientSize = arrowOffsetParent ? axis === \"y\" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\t  var centerToReference = endDiff / 2 - startDiff / 2;\n\t  var min2 = paddingObject[minProp];\n\t  var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];\n\t  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n\t  var offset2 = within(min2, center, max2);\n\t  var axisProp = axis;\n\t  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);\n\t}\n\tfunction effect$1(_ref2) {\n\t  var state = _ref2.state, options = _ref2.options;\n\t  var _options$element = options.element, arrowElement = _options$element === void 0 ? \"[data-popper-arrow]\" : _options$element;\n\t  if (arrowElement == null) {\n\t    return;\n\t  }\n\t  if (typeof arrowElement === \"string\") {\n\t    arrowElement = state.elements.popper.querySelector(arrowElement);\n\t    if (!arrowElement) {\n\t      return;\n\t    }\n\t  }\n\t  if (!contains(state.elements.popper, arrowElement)) {\n\t    return;\n\t  }\n\t  state.elements.arrow = arrowElement;\n\t}\n\tconst arrow$1 = {\n\t  name: \"arrow\",\n\t  enabled: true,\n\t  phase: \"main\",\n\t  fn: arrow,\n\t  effect: effect$1,\n\t  requires: [\"popperOffsets\"],\n\t  requiresIfExists: [\"preventOverflow\"]\n\t};\n\tfunction getVariation(placement) {\n\t  return placement.split(\"-\")[1];\n\t}\n\tvar unsetSides = {\n\t  top: \"auto\",\n\t  right: \"auto\",\n\t  bottom: \"auto\",\n\t  left: \"auto\"\n\t};\n\tfunction roundOffsetsByDPR(_ref, win) {\n\t  var x = _ref.x, y = _ref.y;\n\t  var dpr = win.devicePixelRatio || 1;\n\t  return {\n\t    x: round(x * dpr) / dpr || 0,\n\t    y: round(y * dpr) / dpr || 0\n\t  };\n\t}\n\tfunction mapToStyles(_ref2) {\n\t  var _Object$assign2;\n\t  var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;\n\t  var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;\n\t  var _ref3 = typeof roundOffsets === \"function\" ? roundOffsets({\n\t    x,\n\t    y\n\t  }) : {\n\t    x,\n\t    y\n\t  };\n\t  x = _ref3.x;\n\t  y = _ref3.y;\n\t  var hasX = offsets.hasOwnProperty(\"x\");\n\t  var hasY = offsets.hasOwnProperty(\"y\");\n\t  var sideX = left;\n\t  var sideY = top;\n\t  var win = window;\n\t  if (adaptive) {\n\t    var offsetParent = getOffsetParent(popper2);\n\t    var heightProp = \"clientHeight\";\n\t    var widthProp = \"clientWidth\";\n\t    if (offsetParent === getWindow(popper2)) {\n\t      offsetParent = getDocumentElement(popper2);\n\t      if (getComputedStyle(offsetParent).position !== \"static\" && position === \"absolute\") {\n\t        heightProp = \"scrollHeight\";\n\t        widthProp = \"scrollWidth\";\n\t      }\n\t    }\n\t    offsetParent = offsetParent;\n\t    if (placement === top || (placement === left || placement === right) && variation === end) {\n\t      sideY = bottom;\n\t      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (\n\t        // $FlowFixMe[prop-missing]\n\t        offsetParent[heightProp]\n\t      );\n\t      y -= offsetY - popperRect.height;\n\t      y *= gpuAcceleration ? 1 : -1;\n\t    }\n\t    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n\t      sideX = right;\n\t      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (\n\t        // $FlowFixMe[prop-missing]\n\t        offsetParent[widthProp]\n\t      );\n\t      x -= offsetX - popperRect.width;\n\t      x *= gpuAcceleration ? 1 : -1;\n\t    }\n\t  }\n\t  var commonStyles = Object.assign({\n\t    position\n\t  }, adaptive && unsetSides);\n\t  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n\t    x,\n\t    y\n\t  }, getWindow(popper2)) : {\n\t    x,\n\t    y\n\t  };\n\t  x = _ref4.x;\n\t  y = _ref4.y;\n\t  if (gpuAcceleration) {\n\t    var _Object$assign;\n\t    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? \"0\" : \"\", _Object$assign[sideX] = hasX ? \"0\" : \"\", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n\t  }\n\t  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : \"\", _Object$assign2[sideX] = hasX ? x + \"px\" : \"\", _Object$assign2.transform = \"\", _Object$assign2));\n\t}\n\tfunction computeStyles(_ref5) {\n\t  var state = _ref5.state, options = _ref5.options;\n\t  var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\t  var commonStyles = {\n\t    placement: getBasePlacement(state.placement),\n\t    variation: getVariation(state.placement),\n\t    popper: state.elements.popper,\n\t    popperRect: state.rects.popper,\n\t    gpuAcceleration,\n\t    isFixed: state.options.strategy === \"fixed\"\n\t  };\n\t  if (state.modifiersData.popperOffsets != null) {\n\t    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n\t      offsets: state.modifiersData.popperOffsets,\n\t      position: state.options.strategy,\n\t      adaptive,\n\t      roundOffsets\n\t    })));\n\t  }\n\t  if (state.modifiersData.arrow != null) {\n\t    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n\t      offsets: state.modifiersData.arrow,\n\t      position: \"absolute\",\n\t      adaptive: false,\n\t      roundOffsets\n\t    })));\n\t  }\n\t  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n\t    \"data-popper-placement\": state.placement\n\t  });\n\t}\n\tconst computeStyles$1 = {\n\t  name: \"computeStyles\",\n\t  enabled: true,\n\t  phase: \"beforeWrite\",\n\t  fn: computeStyles,\n\t  data: {}\n\t};\n\tvar passive = {\n\t  passive: true\n\t};\n\tfunction effect(_ref) {\n\t  var state = _ref.state, instance = _ref.instance, options = _ref.options;\n\t  var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;\n\t  var window2 = getWindow(state.elements.popper);\n\t  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\t  if (scroll) {\n\t    scrollParents.forEach(function(scrollParent) {\n\t      scrollParent.addEventListener(\"scroll\", instance.update, passive);\n\t    });\n\t  }\n\t  if (resize) {\n\t    window2.addEventListener(\"resize\", instance.update, passive);\n\t  }\n\t  return function() {\n\t    if (scroll) {\n\t      scrollParents.forEach(function(scrollParent) {\n\t        scrollParent.removeEventListener(\"scroll\", instance.update, passive);\n\t      });\n\t    }\n\t    if (resize) {\n\t      window2.removeEventListener(\"resize\", instance.update, passive);\n\t    }\n\t  };\n\t}\n\tconst eventListeners = {\n\t  name: \"eventListeners\",\n\t  enabled: true,\n\t  phase: \"write\",\n\t  fn: function fn() {\n\t  },\n\t  effect,\n\t  data: {}\n\t};\n\tvar hash$1 = {\n\t  left: \"right\",\n\t  right: \"left\",\n\t  bottom: \"top\",\n\t  top: \"bottom\"\n\t};\n\tfunction getOppositePlacement(placement) {\n\t  return placement.replace(/left|right|bottom|top/g, function(matched) {\n\t    return hash$1[matched];\n\t  });\n\t}\n\tvar hash = {\n\t  start: \"end\",\n\t  end: \"start\"\n\t};\n\tfunction getOppositeVariationPlacement(placement) {\n\t  return placement.replace(/start|end/g, function(matched) {\n\t    return hash[matched];\n\t  });\n\t}\n\tfunction getWindowScroll(node) {\n\t  var win = getWindow(node);\n\t  var scrollLeft = win.pageXOffset;\n\t  var scrollTop = win.pageYOffset;\n\t  return {\n\t    scrollLeft,\n\t    scrollTop\n\t  };\n\t}\n\tfunction getWindowScrollBarX(element) {\n\t  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n\t}\n\tfunction getViewportRect(element, strategy) {\n\t  var win = getWindow(element);\n\t  var html = getDocumentElement(element);\n\t  var visualViewport = win.visualViewport;\n\t  var width = html.clientWidth;\n\t  var height = html.clientHeight;\n\t  var x = 0;\n\t  var y = 0;\n\t  if (visualViewport) {\n\t    width = visualViewport.width;\n\t    height = visualViewport.height;\n\t    var layoutViewport = isLayoutViewport();\n\t    if (layoutViewport || !layoutViewport && strategy === \"fixed\") {\n\t      x = visualViewport.offsetLeft;\n\t      y = visualViewport.offsetTop;\n\t    }\n\t  }\n\t  return {\n\t    width,\n\t    height,\n\t    x: x + getWindowScrollBarX(element),\n\t    y\n\t  };\n\t}\n\tfunction getDocumentRect(element) {\n\t  var _element$ownerDocumen;\n\t  var html = getDocumentElement(element);\n\t  var winScroll = getWindowScroll(element);\n\t  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n\t  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n\t  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n\t  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n\t  var y = -winScroll.scrollTop;\n\t  if (getComputedStyle(body || html).direction === \"rtl\") {\n\t    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n\t  }\n\t  return {\n\t    width,\n\t    height,\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction isScrollParent(element) {\n\t  var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;\n\t  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n\t}\n\tfunction getScrollParent(node) {\n\t  if ([\"html\", \"body\", \"#document\"].indexOf(getNodeName(node)) >= 0) {\n\t    return node.ownerDocument.body;\n\t  }\n\t  if (isHTMLElement(node) && isScrollParent(node)) {\n\t    return node;\n\t  }\n\t  return getScrollParent(getParentNode(node));\n\t}\n\tfunction listScrollParents(element, list) {\n\t  var _element$ownerDocumen;\n\t  if (list === void 0) {\n\t    list = [];\n\t  }\n\t  var scrollParent = getScrollParent(element);\n\t  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n\t  var win = getWindow(scrollParent);\n\t  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n\t  var updatedList = list.concat(target);\n\t  return isBody ? updatedList : (\n\t    // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n\t    updatedList.concat(listScrollParents(getParentNode(target)))\n\t  );\n\t}\n\tfunction rectToClientRect(rect) {\n\t  return Object.assign({}, rect, {\n\t    left: rect.x,\n\t    top: rect.y,\n\t    right: rect.x + rect.width,\n\t    bottom: rect.y + rect.height\n\t  });\n\t}\n\tfunction getInnerBoundingClientRect(element, strategy) {\n\t  var rect = getBoundingClientRect(element, false, strategy === \"fixed\");\n\t  rect.top = rect.top + element.clientTop;\n\t  rect.left = rect.left + element.clientLeft;\n\t  rect.bottom = rect.top + element.clientHeight;\n\t  rect.right = rect.left + element.clientWidth;\n\t  rect.width = element.clientWidth;\n\t  rect.height = element.clientHeight;\n\t  rect.x = rect.left;\n\t  rect.y = rect.top;\n\t  return rect;\n\t}\n\tfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n\t  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n\t}\n\tfunction getClippingParents(element) {\n\t  var clippingParents2 = listScrollParents(getParentNode(element));\n\t  var canEscapeClipping = [\"absolute\", \"fixed\"].indexOf(getComputedStyle(element).position) >= 0;\n\t  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\t  if (!isElement(clipperElement)) {\n\t    return [];\n\t  }\n\t  return clippingParents2.filter(function(clippingParent) {\n\t    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== \"body\";\n\t  });\n\t}\n\tfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n\t  var mainClippingParents = boundary === \"clippingParents\" ? getClippingParents(element) : [].concat(boundary);\n\t  var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);\n\t  var firstClippingParent = clippingParents2[0];\n\t  var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {\n\t    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n\t    accRect.top = max(rect.top, accRect.top);\n\t    accRect.right = min(rect.right, accRect.right);\n\t    accRect.bottom = min(rect.bottom, accRect.bottom);\n\t    accRect.left = max(rect.left, accRect.left);\n\t    return accRect;\n\t  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n\t  clippingRect.width = clippingRect.right - clippingRect.left;\n\t  clippingRect.height = clippingRect.bottom - clippingRect.top;\n\t  clippingRect.x = clippingRect.left;\n\t  clippingRect.y = clippingRect.top;\n\t  return clippingRect;\n\t}\n\tfunction computeOffsets(_ref) {\n\t  var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;\n\t  var basePlacement = placement ? getBasePlacement(placement) : null;\n\t  var variation = placement ? getVariation(placement) : null;\n\t  var commonX = reference2.x + reference2.width / 2 - element.width / 2;\n\t  var commonY = reference2.y + reference2.height / 2 - element.height / 2;\n\t  var offsets;\n\t  switch (basePlacement) {\n\t    case top:\n\t      offsets = {\n\t        x: commonX,\n\t        y: reference2.y - element.height\n\t      };\n\t      break;\n\t    case bottom:\n\t      offsets = {\n\t        x: commonX,\n\t        y: reference2.y + reference2.height\n\t      };\n\t      break;\n\t    case right:\n\t      offsets = {\n\t        x: reference2.x + reference2.width,\n\t        y: commonY\n\t      };\n\t      break;\n\t    case left:\n\t      offsets = {\n\t        x: reference2.x - element.width,\n\t        y: commonY\n\t      };\n\t      break;\n\t    default:\n\t      offsets = {\n\t        x: reference2.x,\n\t        y: reference2.y\n\t      };\n\t  }\n\t  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\t  if (mainAxis != null) {\n\t    var len = mainAxis === \"y\" ? \"height\" : \"width\";\n\t    switch (variation) {\n\t      case start:\n\t        offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);\n\t        break;\n\t      case end:\n\t        offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);\n\t        break;\n\t    }\n\t  }\n\t  return offsets;\n\t}\n\tfunction detectOverflow(state, options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;\n\t  var paddingObject = mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n\t  var altContext = elementContext === popper ? reference : popper;\n\t  var popperRect = state.rects.popper;\n\t  var element = state.elements[altBoundary ? altContext : elementContext];\n\t  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n\t  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n\t  var popperOffsets2 = computeOffsets({\n\t    reference: referenceClientRect,\n\t    element: popperRect,\n\t    placement\n\t  });\n\t  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));\n\t  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;\n\t  var overflowOffsets = {\n\t    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n\t    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n\t    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n\t    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n\t  };\n\t  var offsetData = state.modifiersData.offset;\n\t  if (elementContext === popper && offsetData) {\n\t    var offset2 = offsetData[placement];\n\t    Object.keys(overflowOffsets).forEach(function(key) {\n\t      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n\t      var axis = [top, bottom].indexOf(key) >= 0 ? \"y\" : \"x\";\n\t      overflowOffsets[key] += offset2[axis] * multiply;\n\t    });\n\t  }\n\t  return overflowOffsets;\n\t}\n\tfunction computeAutoPlacement(state, options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n\t  var variation = getVariation(placement);\n\t  var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {\n\t    return getVariation(placement2) === variation;\n\t  }) : basePlacements;\n\t  var allowedPlacements = placements$1.filter(function(placement2) {\n\t    return allowedAutoPlacements.indexOf(placement2) >= 0;\n\t  });\n\t  if (allowedPlacements.length === 0) {\n\t    allowedPlacements = placements$1;\n\t  }\n\t  var overflows = allowedPlacements.reduce(function(acc, placement2) {\n\t    acc[placement2] = detectOverflow(state, {\n\t      placement: placement2,\n\t      boundary,\n\t      rootBoundary,\n\t      padding\n\t    })[getBasePlacement(placement2)];\n\t    return acc;\n\t  }, {});\n\t  return Object.keys(overflows).sort(function(a, b) {\n\t    return overflows[a] - overflows[b];\n\t  });\n\t}\n\tfunction getExpandedFallbackPlacements(placement) {\n\t  if (getBasePlacement(placement) === auto) {\n\t    return [];\n\t  }\n\t  var oppositePlacement = getOppositePlacement(placement);\n\t  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n\t}\n\tfunction flip(_ref) {\n\t  var state = _ref.state, options = _ref.options, name = _ref.name;\n\t  if (state.modifiersData[name]._skip) {\n\t    return;\n\t  }\n\t  var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;\n\t  var preferredPlacement = state.options.placement;\n\t  var basePlacement = getBasePlacement(preferredPlacement);\n\t  var isBasePlacement = basePlacement === preferredPlacement;\n\t  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n\t  var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {\n\t    return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {\n\t      placement: placement2,\n\t      boundary,\n\t      rootBoundary,\n\t      padding,\n\t      flipVariations,\n\t      allowedAutoPlacements\n\t    }) : placement2);\n\t  }, []);\n\t  var referenceRect = state.rects.reference;\n\t  var popperRect = state.rects.popper;\n\t  var checksMap = /* @__PURE__ */ new Map();\n\t  var makeFallbackChecks = true;\n\t  var firstFittingPlacement = placements2[0];\n\t  for (var i = 0; i < placements2.length; i++) {\n\t    var placement = placements2[i];\n\t    var _basePlacement = getBasePlacement(placement);\n\t    var isStartVariation = getVariation(placement) === start;\n\t    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n\t    var len = isVertical ? \"width\" : \"height\";\n\t    var overflow = detectOverflow(state, {\n\t      placement,\n\t      boundary,\n\t      rootBoundary,\n\t      altBoundary,\n\t      padding\n\t    });\n\t    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\t    if (referenceRect[len] > popperRect[len]) {\n\t      mainVariationSide = getOppositePlacement(mainVariationSide);\n\t    }\n\t    var altVariationSide = getOppositePlacement(mainVariationSide);\n\t    var checks = [];\n\t    if (checkMainAxis) {\n\t      checks.push(overflow[_basePlacement] <= 0);\n\t    }\n\t    if (checkAltAxis) {\n\t      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n\t    }\n\t    if (checks.every(function(check) {\n\t      return check;\n\t    })) {\n\t      firstFittingPlacement = placement;\n\t      makeFallbackChecks = false;\n\t      break;\n\t    }\n\t    checksMap.set(placement, checks);\n\t  }\n\t  if (makeFallbackChecks) {\n\t    var numberOfChecks = flipVariations ? 3 : 1;\n\t    var _loop = function _loop2(_i2) {\n\t      var fittingPlacement = placements2.find(function(placement2) {\n\t        var checks2 = checksMap.get(placement2);\n\t        if (checks2) {\n\t          return checks2.slice(0, _i2).every(function(check) {\n\t            return check;\n\t          });\n\t        }\n\t      });\n\t      if (fittingPlacement) {\n\t        firstFittingPlacement = fittingPlacement;\n\t        return \"break\";\n\t      }\n\t    };\n\t    for (var _i = numberOfChecks; _i > 0; _i--) {\n\t      var _ret = _loop(_i);\n\t      if (_ret === \"break\") break;\n\t    }\n\t  }\n\t  if (state.placement !== firstFittingPlacement) {\n\t    state.modifiersData[name]._skip = true;\n\t    state.placement = firstFittingPlacement;\n\t    state.reset = true;\n\t  }\n\t}\n\tconst flip$1 = {\n\t  name: \"flip\",\n\t  enabled: true,\n\t  phase: \"main\",\n\t  fn: flip,\n\t  requiresIfExists: [\"offset\"],\n\t  data: {\n\t    _skip: false\n\t  }\n\t};\n\tfunction getSideOffsets(overflow, rect, preventedOffsets) {\n\t  if (preventedOffsets === void 0) {\n\t    preventedOffsets = {\n\t      x: 0,\n\t      y: 0\n\t    };\n\t  }\n\t  return {\n\t    top: overflow.top - rect.height - preventedOffsets.y,\n\t    right: overflow.right - rect.width + preventedOffsets.x,\n\t    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n\t    left: overflow.left - rect.width - preventedOffsets.x\n\t  };\n\t}\n\tfunction isAnySideFullyClipped(overflow) {\n\t  return [top, right, bottom, left].some(function(side) {\n\t    return overflow[side] >= 0;\n\t  });\n\t}\n\tfunction hide(_ref) {\n\t  var state = _ref.state, name = _ref.name;\n\t  var referenceRect = state.rects.reference;\n\t  var popperRect = state.rects.popper;\n\t  var preventedOffsets = state.modifiersData.preventOverflow;\n\t  var referenceOverflow = detectOverflow(state, {\n\t    elementContext: \"reference\"\n\t  });\n\t  var popperAltOverflow = detectOverflow(state, {\n\t    altBoundary: true\n\t  });\n\t  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n\t  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n\t  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n\t  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n\t  state.modifiersData[name] = {\n\t    referenceClippingOffsets,\n\t    popperEscapeOffsets,\n\t    isReferenceHidden,\n\t    hasPopperEscaped\n\t  };\n\t  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n\t    \"data-popper-reference-hidden\": isReferenceHidden,\n\t    \"data-popper-escaped\": hasPopperEscaped\n\t  });\n\t}\n\tconst hide$1 = {\n\t  name: \"hide\",\n\t  enabled: true,\n\t  phase: \"main\",\n\t  requiresIfExists: [\"preventOverflow\"],\n\t  fn: hide\n\t};\n\tfunction distanceAndSkiddingToXY(placement, rects, offset2) {\n\t  var basePlacement = getBasePlacement(placement);\n\t  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\t  var _ref = typeof offset2 === \"function\" ? offset2(Object.assign({}, rects, {\n\t    placement\n\t  })) : offset2, skidding = _ref[0], distance = _ref[1];\n\t  skidding = skidding || 0;\n\t  distance = (distance || 0) * invertDistance;\n\t  return [left, right].indexOf(basePlacement) >= 0 ? {\n\t    x: distance,\n\t    y: skidding\n\t  } : {\n\t    x: skidding,\n\t    y: distance\n\t  };\n\t}\n\tfunction offset(_ref2) {\n\t  var state = _ref2.state, options = _ref2.options, name = _ref2.name;\n\t  var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;\n\t  var data = placements.reduce(function(acc, placement) {\n\t    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);\n\t    return acc;\n\t  }, {});\n\t  var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;\n\t  if (state.modifiersData.popperOffsets != null) {\n\t    state.modifiersData.popperOffsets.x += x;\n\t    state.modifiersData.popperOffsets.y += y;\n\t  }\n\t  state.modifiersData[name] = data;\n\t}\n\tconst offset$1 = {\n\t  name: \"offset\",\n\t  enabled: true,\n\t  phase: \"main\",\n\t  requires: [\"popperOffsets\"],\n\t  fn: offset\n\t};\n\tfunction popperOffsets(_ref) {\n\t  var state = _ref.state, name = _ref.name;\n\t  state.modifiersData[name] = computeOffsets({\n\t    reference: state.rects.reference,\n\t    element: state.rects.popper,\n\t    placement: state.placement\n\t  });\n\t}\n\tconst popperOffsets$1 = {\n\t  name: \"popperOffsets\",\n\t  enabled: true,\n\t  phase: \"read\",\n\t  fn: popperOffsets,\n\t  data: {}\n\t};\n\tfunction getAltAxis(axis) {\n\t  return axis === \"x\" ? \"y\" : \"x\";\n\t}\n\tfunction preventOverflow(_ref) {\n\t  var state = _ref.state, options = _ref.options, name = _ref.name;\n\t  var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n\t  var overflow = detectOverflow(state, {\n\t    boundary,\n\t    rootBoundary,\n\t    padding,\n\t    altBoundary\n\t  });\n\t  var basePlacement = getBasePlacement(state.placement);\n\t  var variation = getVariation(state.placement);\n\t  var isBasePlacement = !variation;\n\t  var mainAxis = getMainAxisFromPlacement(basePlacement);\n\t  var altAxis = getAltAxis(mainAxis);\n\t  var popperOffsets2 = state.modifiersData.popperOffsets;\n\t  var referenceRect = state.rects.reference;\n\t  var popperRect = state.rects.popper;\n\t  var tetherOffsetValue = typeof tetherOffset === \"function\" ? tetherOffset(Object.assign({}, state.rects, {\n\t    placement: state.placement\n\t  })) : tetherOffset;\n\t  var normalizedTetherOffsetValue = typeof tetherOffsetValue === \"number\" ? {\n\t    mainAxis: tetherOffsetValue,\n\t    altAxis: tetherOffsetValue\n\t  } : Object.assign({\n\t    mainAxis: 0,\n\t    altAxis: 0\n\t  }, tetherOffsetValue);\n\t  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n\t  var data = {\n\t    x: 0,\n\t    y: 0\n\t  };\n\t  if (!popperOffsets2) {\n\t    return;\n\t  }\n\t  if (checkMainAxis) {\n\t    var _offsetModifierState$;\n\t    var mainSide = mainAxis === \"y\" ? top : left;\n\t    var altSide = mainAxis === \"y\" ? bottom : right;\n\t    var len = mainAxis === \"y\" ? \"height\" : \"width\";\n\t    var offset2 = popperOffsets2[mainAxis];\n\t    var min$1 = offset2 + overflow[mainSide];\n\t    var max$1 = offset2 - overflow[altSide];\n\t    var additive = tether ? -popperRect[len] / 2 : 0;\n\t    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n\t    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n\t    var arrowElement = state.elements.arrow;\n\t    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n\t      width: 0,\n\t      height: 0\n\t    };\n\t    var arrowPaddingObject = state.modifiersData[\"arrow#persistent\"] ? state.modifiersData[\"arrow#persistent\"].padding : getFreshSideObject();\n\t    var arrowPaddingMin = arrowPaddingObject[mainSide];\n\t    var arrowPaddingMax = arrowPaddingObject[altSide];\n\t    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n\t    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n\t    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n\t    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n\t    var clientOffset = arrowOffsetParent ? mainAxis === \"y\" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n\t    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n\t    var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;\n\t    var tetherMax = offset2 + maxOffset - offsetModifierValue;\n\t    var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);\n\t    popperOffsets2[mainAxis] = preventedOffset;\n\t    data[mainAxis] = preventedOffset - offset2;\n\t  }\n\t  if (checkAltAxis) {\n\t    var _offsetModifierState$2;\n\t    var _mainSide = mainAxis === \"x\" ? top : left;\n\t    var _altSide = mainAxis === \"x\" ? bottom : right;\n\t    var _offset = popperOffsets2[altAxis];\n\t    var _len = altAxis === \"y\" ? \"height\" : \"width\";\n\t    var _min = _offset + overflow[_mainSide];\n\t    var _max = _offset - overflow[_altSide];\n\t    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\t    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\t    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\t    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\t    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\t    popperOffsets2[altAxis] = _preventedOffset;\n\t    data[altAxis] = _preventedOffset - _offset;\n\t  }\n\t  state.modifiersData[name] = data;\n\t}\n\tconst preventOverflow$1 = {\n\t  name: \"preventOverflow\",\n\t  enabled: true,\n\t  phase: \"main\",\n\t  fn: preventOverflow,\n\t  requiresIfExists: [\"offset\"]\n\t};\n\tfunction getHTMLElementScroll(element) {\n\t  return {\n\t    scrollLeft: element.scrollLeft,\n\t    scrollTop: element.scrollTop\n\t  };\n\t}\n\tfunction getNodeScroll(node) {\n\t  if (node === getWindow(node) || !isHTMLElement(node)) {\n\t    return getWindowScroll(node);\n\t  } else {\n\t    return getHTMLElementScroll(node);\n\t  }\n\t}\n\tfunction isElementScaled(element) {\n\t  var rect = element.getBoundingClientRect();\n\t  var scaleX = round(rect.width) / element.offsetWidth || 1;\n\t  var scaleY = round(rect.height) / element.offsetHeight || 1;\n\t  return scaleX !== 1 || scaleY !== 1;\n\t}\n\tfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n\t  if (isFixed === void 0) {\n\t    isFixed = false;\n\t  }\n\t  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n\t  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n\t  var documentElement = getDocumentElement(offsetParent);\n\t  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n\t  var scroll = {\n\t    scrollLeft: 0,\n\t    scrollTop: 0\n\t  };\n\t  var offsets = {\n\t    x: 0,\n\t    y: 0\n\t  };\n\t  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n\t    if (getNodeName(offsetParent) !== \"body\" || // https://github.com/popperjs/popper-core/issues/1078\n\t    isScrollParent(documentElement)) {\n\t      scroll = getNodeScroll(offsetParent);\n\t    }\n\t    if (isHTMLElement(offsetParent)) {\n\t      offsets = getBoundingClientRect(offsetParent, true);\n\t      offsets.x += offsetParent.clientLeft;\n\t      offsets.y += offsetParent.clientTop;\n\t    } else if (documentElement) {\n\t      offsets.x = getWindowScrollBarX(documentElement);\n\t    }\n\t  }\n\t  return {\n\t    x: rect.left + scroll.scrollLeft - offsets.x,\n\t    y: rect.top + scroll.scrollTop - offsets.y,\n\t    width: rect.width,\n\t    height: rect.height\n\t  };\n\t}\n\tfunction order(modifiers) {\n\t  var map = /* @__PURE__ */ new Map();\n\t  var visited = /* @__PURE__ */ new Set();\n\t  var result = [];\n\t  modifiers.forEach(function(modifier) {\n\t    map.set(modifier.name, modifier);\n\t  });\n\t  function sort(modifier) {\n\t    visited.add(modifier.name);\n\t    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n\t    requires.forEach(function(dep) {\n\t      if (!visited.has(dep)) {\n\t        var depModifier = map.get(dep);\n\t        if (depModifier) {\n\t          sort(depModifier);\n\t        }\n\t      }\n\t    });\n\t    result.push(modifier);\n\t  }\n\t  modifiers.forEach(function(modifier) {\n\t    if (!visited.has(modifier.name)) {\n\t      sort(modifier);\n\t    }\n\t  });\n\t  return result;\n\t}\n\tfunction orderModifiers(modifiers) {\n\t  var orderedModifiers = order(modifiers);\n\t  return modifierPhases.reduce(function(acc, phase) {\n\t    return acc.concat(orderedModifiers.filter(function(modifier) {\n\t      return modifier.phase === phase;\n\t    }));\n\t  }, []);\n\t}\n\tfunction debounce(fn2) {\n\t  var pending;\n\t  return function() {\n\t    if (!pending) {\n\t      pending = new Promise(function(resolve) {\n\t        Promise.resolve().then(function() {\n\t          pending = void 0;\n\t          resolve(fn2());\n\t        });\n\t      });\n\t    }\n\t    return pending;\n\t  };\n\t}\n\tfunction mergeByName(modifiers) {\n\t  var merged = modifiers.reduce(function(merged2, current) {\n\t    var existing = merged2[current.name];\n\t    merged2[current.name] = existing ? Object.assign({}, existing, current, {\n\t      options: Object.assign({}, existing.options, current.options),\n\t      data: Object.assign({}, existing.data, current.data)\n\t    }) : current;\n\t    return merged2;\n\t  }, {});\n\t  return Object.keys(merged).map(function(key) {\n\t    return merged[key];\n\t  });\n\t}\n\tvar DEFAULT_OPTIONS = {\n\t  placement: \"bottom\",\n\t  modifiers: [],\n\t  strategy: \"absolute\"\n\t};\n\tfunction areValidElements() {\n\t  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t    args[_key] = arguments[_key];\n\t  }\n\t  return !args.some(function(element) {\n\t    return !(element && typeof element.getBoundingClientRect === \"function\");\n\t  });\n\t}\n\tfunction popperGenerator(generatorOptions) {\n\t  if (generatorOptions === void 0) {\n\t    generatorOptions = {};\n\t  }\n\t  var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n\t  return function createPopper2(reference2, popper2, options) {\n\t    if (options === void 0) {\n\t      options = defaultOptions;\n\t    }\n\t    var state = {\n\t      placement: \"bottom\",\n\t      orderedModifiers: [],\n\t      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n\t      modifiersData: {},\n\t      elements: {\n\t        reference: reference2,\n\t        popper: popper2\n\t      },\n\t      attributes: {},\n\t      styles: {}\n\t    };\n\t    var effectCleanupFns = [];\n\t    var isDestroyed = false;\n\t    var instance = {\n\t      state,\n\t      setOptions: function setOptions(setOptionsAction) {\n\t        var options2 = typeof setOptionsAction === \"function\" ? setOptionsAction(state.options) : setOptionsAction;\n\t        cleanupModifierEffects();\n\t        state.options = Object.assign({}, defaultOptions, state.options, options2);\n\t        state.scrollParents = {\n\t          reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],\n\t          popper: listScrollParents(popper2)\n\t        };\n\t        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));\n\t        state.orderedModifiers = orderedModifiers.filter(function(m) {\n\t          return m.enabled;\n\t        });\n\t        runModifierEffects();\n\t        return instance.update();\n\t      },\n\t      // Sync update – it will always be executed, even if not necessary. This\n\t      // is useful for low frequency updates where sync behavior simplifies the\n\t      // logic.\n\t      // For high frequency updates (e.g. `resize` and `scroll` events), always\n\t      // prefer the async Popper#update method\n\t      forceUpdate: function forceUpdate() {\n\t        if (isDestroyed) {\n\t          return;\n\t        }\n\t        var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;\n\t        if (!areValidElements(reference3, popper3)) {\n\t          return;\n\t        }\n\t        state.rects = {\n\t          reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === \"fixed\"),\n\t          popper: getLayoutRect(popper3)\n\t        };\n\t        state.reset = false;\n\t        state.placement = state.options.placement;\n\t        state.orderedModifiers.forEach(function(modifier) {\n\t          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n\t        });\n\t        for (var index2 = 0; index2 < state.orderedModifiers.length; index2++) {\n\t          if (state.reset === true) {\n\t            state.reset = false;\n\t            index2 = -1;\n\t            continue;\n\t          }\n\t          var _state$orderedModifie = state.orderedModifiers[index2], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;\n\t          if (typeof fn2 === \"function\") {\n\t            state = fn2({\n\t              state,\n\t              options: _options,\n\t              name,\n\t              instance\n\t            }) || state;\n\t          }\n\t        }\n\t      },\n\t      // Async and optimistically optimized update – it will not be executed if\n\t      // not necessary (debounced to run at most once-per-tick)\n\t      update: debounce(function() {\n\t        return new Promise(function(resolve) {\n\t          instance.forceUpdate();\n\t          resolve(state);\n\t        });\n\t      }),\n\t      destroy: function destroy() {\n\t        cleanupModifierEffects();\n\t        isDestroyed = true;\n\t      }\n\t    };\n\t    if (!areValidElements(reference2, popper2)) {\n\t      return instance;\n\t    }\n\t    instance.setOptions(options).then(function(state2) {\n\t      if (!isDestroyed && options.onFirstUpdate) {\n\t        options.onFirstUpdate(state2);\n\t      }\n\t    });\n\t    function runModifierEffects() {\n\t      state.orderedModifiers.forEach(function(_ref) {\n\t        var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect2 = _ref.effect;\n\t        if (typeof effect2 === \"function\") {\n\t          var cleanupFn = effect2({\n\t            state,\n\t            name,\n\t            instance,\n\t            options: options2\n\t          });\n\t          var noopFn = function noopFn2() {\n\t          };\n\t          effectCleanupFns.push(cleanupFn || noopFn);\n\t        }\n\t      });\n\t    }\n\t    function cleanupModifierEffects() {\n\t      effectCleanupFns.forEach(function(fn2) {\n\t        return fn2();\n\t      });\n\t      effectCleanupFns = [];\n\t    }\n\t    return instance;\n\t  };\n\t}\n\tvar defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];\n\tvar createPopper = /* @__PURE__ */ popperGenerator({\n\t  defaultModifiers\n\t});\n\tconst marketDropdownCss = ':host{display:inline-block}:host ::slotted([slot=\"trigger\"]){cursor:pointer !important;}:host([interaction=\"hover\"]) ::slotted([slot=\"trigger\"]){cursor:default !important;}:host ::slotted([slot=\"popover\"]){position:fixed;z-index:99999;opacity:0%;visibility:hidden !important;pointer-events:none}:host([expanded]) ::slotted([slot=\"popover\"]){opacity:100%;visibility:visible !important;pointer-events:auto}:host([expanded]) .\\u{1F643}{visibility:hidden}@media (min-width: 600px){:host ::slotted(.market-popover){max-width:400px}}';\n\tconst MarketDropdownStyle0 = marketDropdownCss;\n\tconst MarketDropdown = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDropdownOpened = index.createEvent(this, \"marketDropdownOpened\", 7);\n\t    this.marketDropdownClosed = index.createEvent(this, \"marketDropdownClosed\", 7);\n\t    this.popperInstance = null;\n\t    this.popperInitialized = false;\n\t    this.onMutationObserved = (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    };\n\t    this.interaction = \"click\";\n\t    this.disabled = false;\n\t    this.expanded = false;\n\t    this.popoverPlacement = \"bottom\";\n\t    this.popoverStrategy = \"absolute\";\n\t    this.popoverSkidding = void 0;\n\t    this.popoverDistance = 8;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  /**\n\t   * Clicks outside of the dropdown component will close the popover. This means\n\t   * that only one dropdown can be open on screen at a time.\n\t   */\n\t  windowClick(e) {\n\t    if (this.expanded && !e.composedPath().includes(this.el)) {\n\t      this.closeDropdown();\n\t    }\n\t  }\n\t  /**\n\t   * Toggles the dropdown\n\t   */\n\t  onExpandedChange(newValue, oldValue) {\n\t    if (newValue === oldValue) {\n\t      return;\n\t    }\n\t    if (this.expanded) {\n\t      if (!this.popperInitialized) {\n\t        this.initializePopper();\n\t        this.popperInitialized = true;\n\t      }\n\t      this.openDropdown();\n\t    } else {\n\t      this.closeDropdown();\n\t    }\n\t  }\n\t  syncDisabledState() {\n\t    const slottedTriggerElements = this.el.querySelectorAll(dropdown.supportedDropdownTriggers.map((elName) => index$1.getNamespacedTagFor(elName)).join(\",\"));\n\t    slottedTriggerElements.forEach((element) => {\n\t      element.disabled = this.disabled;\n\t    });\n\t  }\n\t  /**\n\t   * Toggles the dropdown opened or closed\n\t   */\n\t  toggleDropdown() {\n\t    if (this.expanded) {\n\t      return this.closeDropdown();\n\t    } else {\n\t      return this.openDropdown();\n\t    }\n\t  }\n\t  /**\n\t   * Opens the dropdown\n\t   */\n\t  openDropdown() {\n\t    if (this.expanded) {\n\t      return Promise.resolve();\n\t    }\n\t    const { defaultPrevented } = this.marketDropdownOpened.emit();\n\t    if (!defaultPrevented && !this.expanded) {\n\t      this.expanded = true;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Closes the dropdown\n\t   */\n\t  closeDropdown() {\n\t    if (!this.expanded) {\n\t      return Promise.resolve();\n\t    }\n\t    const { defaultPrevented } = this.marketDropdownClosed.emit();\n\t    if (!defaultPrevented && this.expanded) {\n\t      this.expanded = false;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Updates the popper's tooltip location\n\t   * https://popper.js.org/docs/v2/lifecycle/#manual-update\n\t   */\n\t  async updateDropdownPosition() {\n\t    var _a;\n\t    await ((_a = this.popperInstance) === null || _a === void 0 ? void 0 : _a.update());\n\t    return Promise.resolve();\n\t  }\n\t  handleHoverInteractions(e) {\n\t    if (e.type === \"mouseover\" || e.type === \"focus\") {\n\t      this.openDropdown();\n\t    }\n\t    if (e.type === \"mouseout\" || e.type === \"blur\") {\n\t      this.closeDropdown();\n\t    }\n\t  }\n\t  async handleInteraction(e) {\n\t    if (this.disabled || this.interaction === \"none\") {\n\t      return;\n\t    }\n\t    if (this.interaction === \"click\" && e.type === \"click\") {\n\t      this.toggleDropdown();\n\t    }\n\t    if (this.interaction === \"click\" && e instanceof KeyboardEvent && e.key === \"Enter\") {\n\t      this.toggleDropdown();\n\t    }\n\t    if (this.interaction === \"hover\") {\n\t      this.handleHoverInteractions(e);\n\t    }\n\t    const trigger = this.el.querySelector('[slot=\"trigger\"]');\n\t    if (this.interaction === \"persistent\" && e.type === \"click\" && e.composedPath().includes(trigger)) {\n\t      this.toggleDropdown();\n\t    }\n\t    if (this.interaction === \"persistent\" && e instanceof KeyboardEvent && e.key === \"Enter\" && // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t    e.composedPath().includes(trigger)) {\n\t      this.toggleDropdown();\n\t    }\n\t    if (e instanceof KeyboardEvent && e.key === \"Escape\") {\n\t      if (this.expanded) {\n\t        this.closeDropdown();\n\t        e.stopPropagation();\n\t      }\n\t    }\n\t    if (this.popperInstance) {\n\t      await this.popperInstance.update();\n\t    }\n\t  }\n\t  initializePopper() {\n\t    const { el, popperInstance, popoverPlacement: placement, popoverStrategy: strategy, popoverSkidding: skidding, popoverDistance: distance } = this;\n\t    if (popperInstance) {\n\t      popperInstance.destroy();\n\t      this.popperInstance = null;\n\t    }\n\t    const trigger = el;\n\t    const popover = el.querySelector('[slot=\"popover\"]');\n\t    if (popover === null) {\n\t      return;\n\t    }\n\t    this.popperInstance = createPopper(trigger, popover, {\n\t      // https://popper.js.org/docs/v2/constructors/#options\n\t      placement,\n\t      strategy,\n\t      modifiers: [\n\t        {\n\t          name: \"offset\",\n\t          options: {\n\t            offset: [skidding, distance]\n\t          }\n\t        }\n\t      ]\n\t    });\n\t  }\n\t  updatePopoverConfig() {\n\t    const { popperInstance, popoverSkidding: skidding, popoverDistance: distance } = this;\n\t    popperInstance.setOptions({\n\t      modifiers: [\n\t        {\n\t          name: \"offset\",\n\t          options: {\n\t            offset: [skidding, distance]\n\t          }\n\t        }\n\t      ]\n\t    });\n\t  }\n\t  connectedCallback() {\n\t    if (!this.el.isConnected) {\n\t      return;\n\t    }\n\t    if (this.expanded && !this.popperInitialized) {\n\t      this.initializePopper();\n\t      this.popperInitialized = true;\n\t    }\n\t  }\n\t  disconnectedCallback() {\n\t    if (this.el.isConnected) {\n\t      return;\n\t    }\n\t    if (this.popperInstance) {\n\t      this.popperInstance.destroy();\n\t      this.popperInstance = null;\n\t    }\n\t    this.popperInitialized = false;\n\t  }\n\t  registerTrigger() {\n\t    this.slottedTriggerEl = this.el.querySelector(dropdown.supportedDropdownTriggers.join(\",\"));\n\t    this.syncDisabledState();\n\t  }\n\t  componentWillLoad() {\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, this.onMutationObserved);\n\t  }\n\t  componentWillRender() {\n\t    if (this.slottedTriggerEl) {\n\t      const popover = this.el.querySelector('[slot=\"popover\"]');\n\t      if (!popover.id) {\n\t        popover.id = `popover-${v4.v4()}`;\n\t      }\n\t      aria.applyExpandableAriaControls(this.slottedTriggerEl, {\n\t        expanded: this.expanded.toString(),\n\t        popoverId: popover.id\n\t      });\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"b955720db608a2c9b5b2eed0d9eb4e9ed277fe12\", class: \"market-dropdown\", expanded: this.expanded, onClick: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onmouseover: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onmouseout: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onKeyDown: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onFocus: (e) => {\n\t      this.handleInteraction(e);\n\t    }, onBlur: (e) => {\n\t      this.handleInteraction(e);\n\t    } }, index.h(\"slot\", { key: \"deee0f9f7925bbf91a6959f71703c411afe2daba\", name: \"trigger\", onSlotchange: () => this.registerTrigger() }), index.h(\"slot\", { key: \"fd8834d28721c6d51439528cbc1730fe6afd4f19\", name: \"popover\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"expanded\": [\"onExpandedChange\"],\n\t      \"disabled\": [\"syncDisabledState\"],\n\t      \"popoverSkidding\": [\"updatePopoverConfig\"],\n\t      \"popoverDistance\": [\"updatePopoverConfig\"]\n\t    };\n\t  }\n\t};\n\tMarketDropdown.style = MarketDropdownStyle0;\n\tmarketDropdown_cjs_entry.market_dropdown = MarketDropdown;\n\treturn marketDropdown_cjs_entry;\n}\n\nvar marketEmptyState_cjs_entry = {};\n\nvar hasRequiredMarketEmptyState_cjs_entry;\n\nfunction requireMarketEmptyState_cjs_entry () {\n\tif (hasRequiredMarketEmptyState_cjs_entry) return marketEmptyState_cjs_entry;\n\thasRequiredMarketEmptyState_cjs_entry = 1;\n\tObject.defineProperty(marketEmptyState_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketEmptyStateCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;flex-direction:column;gap:var(--empty-state-button-group-vertical-spacing);justify-content:center;align-items:center;width:100%;padding:var(--empty-state-vertical-padding) var(--empty-state-horizontal-padding);border-width:var(--empty-state-border-width);border-style:solid;border-color:var(--empty-state-border-color);border-radius:var(--empty-state-border-radius);background-color:var(--empty-state-background-color)}.text{display:flex;flex-direction:column;gap:var(--empty-state-paragraph-vertical-spacing);width:100%;max-width:var(--empty-state-text-maximum-width, 600px);margin:0 auto;text-align:center}.text ::slotted([slot=\"primary-text\"]),.text ::slotted([slot=\"secondary-text\"]){margin:0;font-family:inherit}.text ::slotted([slot=\"primary-text\"]){color:var(--empty-state-heading-color);font-weight:var(--empty-state-heading-text-weight);font-size:var(--empty-state-heading-text-size);line-height:var(--empty-state-heading-text-leading)}.text ::slotted([slot=\"secondary-text\"]){color:var(--empty-state-paragraph-color);font-weight:var(--empty-state-paragraph-text-weight);font-size:var(--empty-state-paragraph-text-size);line-height:var(--empty-state-paragraph-text-leading)}.actions{display:flex;flex-direction:row;gap:var(--empty-state-actions-spacing, var(--core-metrics-spacing-200));}';\n\tconst MarketEmptyStateStyle0 = marketEmptyStateCss;\n\tconst MarketEmptyState = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.showActions = false;\n\t  }\n\t  handleSlottedContent() {\n\t    this.showActions = Boolean(this.el.querySelector('[slot=\"actions\"]'));\n\t  }\n\t  componentWillRender() {\n\t    this.handleSlottedContent();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"1965b2ea22612c366ed8417b0cf8031ba2219102\", class: \"market-empty-state\" }, index.h(\"slot\", { key: \"fb92191ffa193d0c3c7bcc5133c6b1e7cb0933d6\" }), index.h(\"slot\", { key: \"2f56053c08e428c530e0f079461c9b26dbd16d06\", name: \"media\" }), index.h(\"div\", { key: \"be8d609217438bc5832be57345f72b0515499ebc\", class: \"text\" }, index.h(\"slot\", { key: \"7d9bcfeaca6f9324c3facca306c4b06d3cc926ab\", name: \"primary-text\" }), index.h(\"slot\", { key: \"33298097974b101dce60bc39fcb28c27c639859a\", name: \"secondary-text\" })), this.showActions && index.h(\"div\", { key: \"5322aee3d6d5346aa023e822c573e3ededf8aaf5\", class: \"actions\" }, index.h(\"slot\", { key: \"0c088b1cdb8378f101323cfd49c44d4027f8fac8\", name: \"actions\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketEmptyState.style = MarketEmptyStateStyle0;\n\tmarketEmptyState_cjs_entry.market_empty_state = MarketEmptyState;\n\treturn marketEmptyState_cjs_entry;\n}\n\nvar marketField_cjs_entry = {};\n\nvar hasRequiredMarketField_cjs_entry;\n\nfunction requireMarketField_cjs_entry () {\n\tif (hasRequiredMarketField_cjs_entry) return marketField_cjs_entry;\n\thasRequiredMarketField_cjs_entry = 1;\n\tObject.defineProperty(marketField_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst v4 = requireV48e8d6fbc();\n\tconst marketFieldCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--error-icon-height:16px;--error-icon-width:16px;--error-icon-offset:calc(calc(var(--field-error-message-text-leading) - var(--error-icon-height)) / 2);display:block;text-align:start}::slotted([slot]){margin-top:4px}::slotted([slot=\"error\"]){display:block;color:var(--field-error-message-text-color);font-weight:var(--field-error-message-text-weight);font-size:var(--field-error-message-text-size);line-height:var(--field-error-message-text-leading);letter-spacing:var(--field-error-message-text-tracking)}::slotted([slot=\"error\"])::before{content:\"\";display:inline-block;vertical-align:calc(-1 * var(--error-icon-offset));width:var(--error-icon-width);height:var(--error-icon-height);margin-right:calc(\n        var(--field-error-message-icon-padding, 2px) +\n        var(--field-error-message-icon-margin-right, 4px)\n      );margin-left:var(--field-error-message-icon-padding, 2px);background-color:var(--field-error-message-text-color);-webkit-mask:url(\"data:image/svg+xml;utf8,<svg width='16' height='16' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M8 15.5C12.1333 15.5 15.5 12.1333 15.5 8C15.5 3.86667 12.1333 0.5 8 0.5C3.86667 0.5 0.5 3.86667 0.5 8C0.5 12.1333 3.86667 15.5 8 15.5ZM8 2.16667C11.2167 2.16667 13.8333 4.78333 13.8333 8C13.8333 11.2167 11.2167 13.8333 8 13.8333C4.78333 13.8333 2.16667 11.2167 2.16667 8C2.16667 4.78333 4.78333 2.16667 8 2.16667ZM8 12.1667C8.5753 12.1667 9.04167 11.7003 9.04167 11.125C9.04167 10.5497 8.5753 10.0833 8 10.0833C7.4247 10.0833 6.95833 10.5497 6.95833 11.125C6.95833 11.7003 7.4247 12.1667 8 12.1667ZM7.16667 3.83333H8.83333V9.25H7.16667V3.83333Z'/></svg>\");mask:url(\"data:image/svg+xml;utf8,<svg width='16' height='16' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M8 15.5C12.1333 15.5 15.5 12.1333 15.5 8C15.5 3.86667 12.1333 0.5 8 0.5C3.86667 0.5 0.5 3.86667 0.5 8C0.5 12.1333 3.86667 15.5 8 15.5ZM8 2.16667C11.2167 2.16667 13.8333 4.78333 13.8333 8C13.8333 11.2167 11.2167 13.8333 8 13.8333C4.78333 13.8333 2.16667 11.2167 2.16667 8C2.16667 4.78333 4.78333 2.16667 8 2.16667ZM8 12.1667C8.5753 12.1667 9.04167 11.7003 9.04167 11.125C9.04167 10.5497 8.5753 10.0833 8 10.0833C7.4247 10.0833 6.95833 10.5497 6.95833 11.125C6.95833 11.7003 7.4247 12.1667 8 12.1667ZM7.16667 3.83333H8.83333V9.25H7.16667V3.83333Z'/></svg>\");-webkit-mask-size:cover;mask-size:cover}::slotted([slot=\"bottom-accessory\"]){display:block;margin:var(--field-helper-text-vertical-spacing) var(--field-helper-text-horizontal-spacing);color:var(--field-helper-text-text-color);font-weight:var(--field-helper-text-weight);font-size:var(--field-helper-text-size);line-height:var(--field-helper-text-leading);letter-spacing:var(--field-helper-text-tracking)}::slotted([slot=\"action\"]){display:block;padding:var(--field-action-vertical-padding-size) 0;color:var(--field-action-text-color);font-weight:var(--field-action-text-weight);font-size:var(--field-action-text-size);line-height:var(--field-action-text-leading);letter-spacing:var(--field-action-text-tracking);text-decoration:none;cursor:pointer}::slotted(button[slot=\"action\"]){padding:0;border:none;background-color:transparent;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}`;\n\tconst MarketFieldStyle0 = marketFieldCss;\n\tconst MarketField = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.errorSlotId = v4.v4();\n\t    this.name = void 0;\n\t    this.readonly = false;\n\t    this.disabled = false;\n\t    this.invalid = false;\n\t  }\n\t  getSlottedInputs() {\n\t    const supportedInputTags = [\n\t      index$1.getNamespacedTagFor(\"market-input-text\"),\n\t      index$1.getNamespacedTagFor(\"market-input-password\"),\n\t      index$1.getNamespacedTagFor(\"market-select\"),\n\t      index$1.getNamespacedTagFor(\"market-textarea\"),\n\t      index$1.getNamespacedTagFor(\"market-code-input\")\n\t    ];\n\t    const slottedInputElements = supportedInputTags.flatMap((tag) => {\n\t      return [\n\t        ...this.el.getElementsByTagName(tag)\n\t      ];\n\t    });\n\t    return slottedInputElements;\n\t  }\n\t  getErrorSlot() {\n\t    return this.el.querySelector('[slot=\"error\"]');\n\t  }\n\t  getBottomAccessorySlot() {\n\t    return this.el.querySelector('[slot=\"bottom-accessory\"]');\n\t  }\n\t  getInputElAriaDescribedby() {\n\t    const describedBy = [];\n\t    if (this.getErrorSlot()) {\n\t      describedBy.push(`${this.errorSlotId}-error`);\n\t    }\n\t    if (this.getBottomAccessorySlot()) {\n\t      describedBy.push(`${this.errorSlotId}-bottom-accessory`);\n\t    }\n\t    return describedBy.join(\" \");\n\t  }\n\t  handleErrorAttributes() {\n\t    const errorSlotEl = this.getErrorSlot();\n\t    if (errorSlotEl) {\n\t      errorSlotEl.setAttribute(\"role\", \"alert\");\n\t      errorSlotEl.setAttribute(\"id\", `${this.errorSlotId}-error`);\n\t    }\n\t  }\n\t  handleBottomAccessoryAttributes() {\n\t    const bottomAccessorySlotEl = this.getBottomAccessorySlot();\n\t    if (bottomAccessorySlotEl) {\n\t      bottomAccessorySlotEl.setAttribute(\"id\", `${this.errorSlotId}-bottom-accessory`);\n\t    }\n\t  }\n\t  render() {\n\t    this.getSlottedInputs().forEach((input) => {\n\t      input.name = this.name;\n\t      input.disabled = this.disabled;\n\t      input.invalid = this.invalid;\n\t      input.readonly = this.readonly;\n\t      const inputElAriaDescribedby = this.getInputElAriaDescribedby();\n\t      if (inputElAriaDescribedby) {\n\t        input.setAttribute(\"aria-describedby\", inputElAriaDescribedby);\n\t      }\n\t    });\n\t    return index.h(index.Host, { key: \"3e65209319f989e74bb4125fbee4782025d88bc6\", class: \"market-field\" }, index.h(\"slot\", { key: \"d381d75386248eda4ad79baa8444a7fa700bd6a8\" }), this.invalid && !this.disabled && // slot relocation broke in @stencil/core@1.13.0\n\t    // wrapping a slot in a shadowless div as a workaround\n\t    // this should be fixed in 2.1.1\n\t    index.h(\"div\", { key: \"55d107845968c5ac24e69eccff7bb1cfc9debf4b\" }, index.h(\"slot\", { key: \"e40f3134b79ee21175558731decd72975910bb75\", name: \"error\", onSlotchange: () => this.handleErrorAttributes() })), index.h(\"slot\", { key: \"ed942c6d77f567f42a50cc476dc07c29fde9c012\", name: \"bottom-accessory\", onSlotchange: () => this.handleBottomAccessoryAttributes() }), index.h(\"slot\", { key: \"8b621f775db23d1536d030a22a1a6b5e2a7acc8c\", name: \"action\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketField.style = MarketFieldStyle0;\n\tmarketField_cjs_entry.market_field = MarketField;\n\treturn marketField_cjs_entry;\n}\n\nvar marketFileUpload_cjs_entry = {};\n\nvar hasRequiredMarketFileUpload_cjs_entry;\n\nfunction requireMarketFileUpload_cjs_entry () {\n\tif (hasRequiredMarketFileUpload_cjs_entry) return marketFileUpload_cjs_entry;\n\thasRequiredMarketFileUpload_cjs_entry = 1;\n\tObject.defineProperty(marketFileUpload_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst getReadableFilesize = (bytes, decimals = 2) => {\n\t  if (!Number(bytes))\n\t    return \"0 bytes\";\n\t  const k = 1024;\n\t  const dm = decimals < 0 ? 0 : decimals;\n\t  const sizes = [\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\"];\n\t  const i = Math.floor(Math.log(bytes) / Math.log(k));\n\t  return `${Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n\t};\n\tconst marketFileUploadCss = ':root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}button,.market-button,::slotted(button),::slotted(.market-button),::slotted(.market-link){font-weight:var(--core-type-semibold-30-weight);font-size:var(--core-type-semibold-30-size);font-family:var(--core-type-semibold-30-font-family);line-height:var(--core-type-semibold-30-leading);letter-spacing:var(--core-type-semibold-30-tracking);text-transform:var(--core-type-semibold-30-case)}.label-container{border-width:var(--file-upload-border-width, 1px);border-style:var(--file-upload-normal-state-border-style, dashed);border-color:var(--file-upload-normal-state-border-color, var(--core-fill-30-color));border-radius:var(--file-upload-border-radius, 6px);transition:background-color border-color var(--core-animation-enter-transition-moderate-speed-duration)}.label-container>label{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--file-upload-dropzone-vertical-padding, var(--core-metrics-spacing-400))\\n      var(--file-upload-dropzone-horizontal-padding, var(--core-metrics-spacing-400));text-align:center;cursor:pointer}.label-container>label .market-icon{color:var(--file-upload-label-fill-color, var(--core-text-10-color))}.label-container>.market-row{margin:0}button,.market-button,::slotted(button),::slotted(.market-button),::slotted(.market-link){padding:0}slot:not([name=\"compact-action\"]) button,slot:not([name=\"compact-action\"]) .market-button,slot:not([name=\"compact-action\"]) ::slotted(button),slot:not([name=\"compact-action\"]) ::slotted(.market-button),slot:not([name=\"compact-action\"]) ::slotted(.market-link){border:none;background-color:inherit;color:var(--file-upload-button-label-color, var(--button-normal-variant-tertiary-rank-normal-state-label-color));font-family:inherit;text-align:right;cursor:pointer}slot:not([name=\"compact-action\"]) button,slot:not([name=\"compact-action\"]) ::slotted(button){border-radius:1px;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.has-file-selected{border-style:var(--file-upload-file-selected-state-border-style, solid) !important;border-color:var(--file-upload-file-selected-state-border-color, var(--core-fill-30-color))}@media (hover: hover){:host(:hover) .label-container{border-style:var(--file-upload-hover-state-border-style, dashed);border-color:var(--file-upload-hover-state-border-color, var(--core-emphasis-fill-color));background-color:var(--file-upload-hover-state-background-color, var(--core-emphasis-40-color))}}:host(:active) .label-container,:host(:active) .is-dragging-over{border-style:var(--file-upload-active-state-border-style, dashed);border-color:var(--file-upload-active-state-border-color, var(--core-emphasis-fill-color));background-color:var(--file-upload-active-state-background-color, var(--core-emphasis-30-color))}:host([disabled]) .label-container{border-style:var(--file-upload-disabled-state-border-style, dashed);border-color:var(--file-upload-disabled-state-border-color, var(--field-disabled-state-border-color));background-color:var(--file-upload-disabled-state-background-color, var(--field-disabled-state-background-color));color:var(--file-upload-disabled-state-label-color, var(--field-disabled-state-empty-phase-label-color))}:host([disabled]) button,:host([disabled]) ::slotted(button),:host([disabled]) ::slotted(.market-button),:host([disabled]) ::slotted(.market-icon),:host([disabled]) ::slotted(.market-link),:host([disabled]) label .market-icon,:host([disabled]) label ::slotted(.market-icon){opacity:30%}slot[name=\"compact-action\"]{display:none}:host([compact]) slot[name=\"compact-action\"]{display:block;width:100%}:host([compact]) slot:not([name=\"compact-action\"]){display:none}:host([compact]) .label-container{border-style:unset;border-color:unset;background-color:unset}:host([compact]) .label-container>label{padding:0}:host([compact]) .market-button,:host([compact]) .market-link,:host([compact]) ::slotted(.market-button),:host([compact]) ::slotted(.market-link){width:100%}.market-list{margin-top:var(--file-upload-dropzone-vertical-margin, var(--core-metrics-spacing-100))}.market-accessory[slot=\"leading-accessory\"]{border-radius:var(--file-upload-border-radius, 6px);background-color:var(--file-upload-leading-accessory-background-color, var(--core-fill-40-color))}.market-accessory[slot=\"trailing-accessory\"]{cursor:pointer}.market-accessory[slot=\"trailing-accessory\"] .market-icon{color:var(--file-upload-delete-fill-color, var(--core-fill-20-color))}[data-status]:not([data-status=\"\"]) .market-accessory[slot=\"leading-accessory\"]{background-color:unset}[data-status=\"error\"] [slot=\"subtext\"],[data-status=\"error\"] .market-accessory[slot=\"leading-accessory\"]{color:var(--file-upload-leading-accessory-error-color, var(--core-critical-fill-color))}:host([disabled]) [data-status=\"error\"] [slot=\"subtext\"]{opacity:30%}[data-status=\"success\"] .market-accessory[slot=\"leading-accessory\"]{color:var(--file-upload-leading-accessory-success-color, var(--core-success-fill-color))}[data-status=\"loading\"] .market-accessory[slot=\"leading-accessory\"]{animation:market-file-upload-loading-rotation\\n    var(--animation-infinite-duration)\\n    var(--animation-infinite-iteration-count)\\n    var(--animation-infinite-timing-function)}:host([invalid]) .label-container{border-color:var(--field-normal-state-invalid-validity-border-color)}::slotted([slot=\"bottom-accessory\"]){color:var(--core-text-20-color)}';\n\tconst MarketFileUploadStyle0 = marketFileUploadCss;\n\tconst MarketFileUpload = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketFileUploadValueChange = index.createEvent(this, \"marketFileUploadValueChange\", 7);\n\t    this.accept = \"\";\n\t    this.value = [];\n\t    this.disabled = false;\n\t    this.invalid = false;\n\t    this.multiple = false;\n\t    this.compact = false;\n\t    this.fileSubtext = void 0;\n\t    this.fileMetadata = void 0;\n\t    this.deleteButtonAriaLabel = \"Delete\";\n\t    this.isDraggingOver = false;\n\t    this.files = void 0;\n\t  }\n\t  watchValueHandler(newValue) {\n\t    if (Array.isArray(newValue)) {\n\t      this.files = this.multiple ? [...newValue] : [newValue[0]];\n\t    }\n\t  }\n\t  watchDisabledHandler() {\n\t    this.slottedCompactButtons.forEach((el) => el.disabled = this.disabled);\n\t  }\n\t  /**\n\t   * We want to disable certain functions if multiple is false and a file has been selected\n\t   */\n\t  get hasSingleFileSelected() {\n\t    return !this.multiple && this.files.length === 1;\n\t  }\n\t  /* returns `market-button` or `market-link` elements in the \"compact\" slot */\n\t  get slottedCompactButtons() {\n\t    const interactiveElementTagnames = /* @__PURE__ */ new Set([\n\t      index$1.getNamespacedTagFor(\"market-button\"),\n\t      index$1.getNamespacedTagFor(\"market-link\")\n\t    ]);\n\t    return [...this.el.querySelector('[slot=\"compact-action\"]').children].filter((el) => interactiveElementTagnames.has(el.tagName.toLowerCase()));\n\t  }\n\t  draggingOver(e) {\n\t    if (this.disabled || this.hasSingleFileSelected) {\n\t      return;\n\t    }\n\t    this.isDraggingOver = true;\n\t    e.preventDefault();\n\t  }\n\t  endDrag(e) {\n\t    e.preventDefault();\n\t    if (this.disabled || this.hasSingleFileSelected) {\n\t      return;\n\t    }\n\t    this.isDraggingOver = false;\n\t    if (e.type === \"drop\" && e.dataTransfer) {\n\t      this.addFiles(e.dataTransfer.files);\n\t    }\n\t  }\n\t  handleButtonClick() {\n\t    this.fileInputElement.click();\n\t  }\n\t  handleDeleteKeydown(e, index2) {\n\t    if (e.key === \"Enter\" && !this.disabled) {\n\t      this.removeFile(index2);\n\t    }\n\t  }\n\t  removeFile(index2) {\n\t    this.files.splice(index2, 1);\n\t    this.files = [...this.files];\n\t    this.emitFileChange();\n\t  }\n\t  labelContainerClassNames() {\n\t    const classNames = [];\n\t    if (this.isDraggingOver) {\n\t      classNames.push(\"is-dragging-over\");\n\t    }\n\t    if (this.hasSingleFileSelected) {\n\t      classNames.push(\"has-file-selected\");\n\t    }\n\t    return classNames;\n\t  }\n\t  onInputChange(e) {\n\t    this.addFiles(e.target.files);\n\t    this.fileInputElement.value = \"\";\n\t  }\n\t  addFiles(files) {\n\t    if (files) {\n\t      if (!this.multiple) {\n\t        this.files = [files[0]];\n\t      } else {\n\t        this.files = [...files, ...this.files];\n\t      }\n\t    }\n\t    this.emitFileChange();\n\t  }\n\t  emitFileChange() {\n\t    this.marketFileUploadValueChange.emit({ value: this.files });\n\t  }\n\t  handleCompactSlotChange() {\n\t    this.slottedCompactButtons.forEach((el) => {\n\t      el.removeEventListener(\"click\", this.handleButtonClick.bind(this));\n\t      if (!this.disabled) {\n\t        el.addEventListener(\"click\", this.handleButtonClick.bind(this));\n\t      }\n\t      el.disabled = this.disabled;\n\t    });\n\t  }\n\t  componentWillLoad() {\n\t    if (this.value) {\n\t      this.files = [...this.value];\n\t    } else {\n\t      this.files = [];\n\t    }\n\t  }\n\t  componentDidLoad() {\n\t    this.handleCompactSlotChange();\n\t  }\n\t  renderFilesAsMarketRows() {\n\t    const MarketRowTagName = index$1.getNamespacedTagFor(\"market-row\");\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    return this.files.map((file, index$12) => {\n\t      var _a;\n\t      const rowConfig = (_a = this.fileMetadata) === null || _a === void 0 ? void 0 : _a.find((row) => row.filename === file.name);\n\t      let leadingIcon = file.type.startsWith(\"image/\") ? \"picture\" : \"file\";\n\t      let trailingIcon = \"delete\";\n\t      let secondaryText;\n\t      switch (this.fileSubtext) {\n\t        case \"size\":\n\t          secondaryText = getReadableFilesize(file[this.fileSubtext]);\n\t          break;\n\t        case \"type\":\n\t          secondaryText = file[this.fileSubtext];\n\t          break;\n\t      }\n\t      switch (rowConfig === null || rowConfig === void 0 ? void 0 : rowConfig.status) {\n\t        case \"error\":\n\t          leadingIcon = \"warning\";\n\t          trailingIcon = \"clear\";\n\t          secondaryText = rowConfig === null || rowConfig === void 0 ? void 0 : rowConfig.message;\n\t          break;\n\t        case \"loading\":\n\t          leadingIcon = \"loading\";\n\t          trailingIcon = \"clear\";\n\t          break;\n\t        case \"success\":\n\t          leadingIcon = \"success\";\n\t          break;\n\t      }\n\t      leadingIcon = (rowConfig === null || rowConfig === void 0 ? void 0 : rowConfig.leadingIconName) || leadingIcon;\n\t      return index.h(MarketRowTagName, { disabled: this.disabled, interactive: true, transient: true, \"data-index\": index$12, \"data-status\": rowConfig === null || rowConfig === void 0 ? void 0 : rowConfig.status }, index.h(\"label\", { slot: \"label\" }, file.name), secondaryText && index.h(\"p\", { slot: \"subtext\" }, secondaryText), index.h(MarketAccessoryTagName, { slot: \"leading-accessory\", size: \"image\" }, index.h(MarketIconTagName, { name: leadingIcon, fidelity: 24 })), index.h(MarketAccessoryTagName, { slot: \"trailing-accessory\", size: \"icon\", tabindex: this.disabled ? -1 : 0, role: \"button\", \"aria-label\": this.deleteButtonAriaLabel, onKeyDown: (e) => this.handleDeleteKeydown(e, index$12), onClick: () => this.removeFile(index$12) }, index.h(MarketIconTagName, { name: trailingIcon, fidelity: 24 })));\n\t    });\n\t  }\n\t  render() {\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    const MarketFieldTagName = index$1.getNamespacedTagFor(\"market-field\");\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    const fileMarketRows = this.renderFilesAsMarketRows();\n\t    const showUploadLabel = this.multiple || fileMarketRows.length === 0;\n\t    const showList = this.multiple && fileMarketRows.length > 0;\n\t    return index.h(index.Host, { key: \"6bccfddbeb779bb39e18ebd3785e3bcbd0d6c7a0\", class: \"market-file-upload\", ondragenter: (e) => this.draggingOver(e), ondragover: (e) => this.draggingOver(e), ondragleave: (e) => this.endDrag(e), ondrop: (e) => this.endDrag(e) }, index.h(MarketFieldTagName, { key: \"70739cbd739e685fd10f99a88514b84eed633152\", disabled: this.disabled, invalid: this.invalid }, index.h(\"div\", { key: \"90311166caeaa9ec7b2db26e61bfcd88a16d88cf\", class: `label-container ${this.labelContainerClassNames()}` }, !showUploadLabel && fileMarketRows[0], showUploadLabel && // the input is correctly wrapped inside its label, but eslint gets confused by label > span > slot > text\n\t    // eslint-disable-next-line jsx-a11y/label-has-associated-control\n\t    index.h(\"label\", { key: \"dc70f7daa35ad8e0f0393f6614c837218619a01e\" }, index.h(\"slot\", { key: \"589a4d0becabb3d2c6ccef7b0a9d64874eaba636\" }, index.h(MarketAccessoryTagName, { key: \"16f2e2bf902451109ae778f88806408258b75c3e\", size: \"image\" }, index.h(MarketIconTagName, { key: \"1a9283a8b60d016edef344cf6477a64367452c62\", name: \"file\", fidelity: 24 })), index.h(\"span\", { key: \"7918077480823a7e50fa0d4c37c92a9995f567dc\" }, index.h(\"button\", { key: \"9993c12f5de0e6bec9fb905db52429a56e73a15c\", onClick: () => this.handleButtonClick() }, \"Choose a file\"), \" or drag and drop it here\")), index.h(\"slot\", { key: \"3d4c5a667655d10378db1fcd734a80b758b8038e\", name: \"compact-action\", onSlotchange: () => this.handleCompactSlotChange() }, index.h(MarketButtonTagName, { key: \"0671f95176c54825b0182b92085c2eb44c20af18\", rank: \"primary\", disabled: this.disabled, onClick: () => this.handleButtonClick() }, \"Upload file\")), index.h(\"input\", {\n\t      key: \"4b6440715a993efa1c87857fa2932baa13552f62\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.fileInputElement = el,\n\t      onChange: (e) => this.onInputChange(e),\n\t      type: \"file\",\n\t      name: \"files[]\",\n\t      multiple: this.multiple,\n\t      accept: this.accept,\n\t      hidden: true\n\t    }))), index.h(\"slot\", { key: \"f037490eeabca8295e7aceeb27dc0970271bb30d\", name: \"bottom-accessory\" }, index.h(\"small\", { key: \"4c18db8e6daa1dddcfbe8b972941f68b4465e6f3\", slot: \"bottom-accessory\" })), index.h(\"slot\", { key: \"1a5c77ecb645596258eb7f285fb1452d73e01655\", name: \"error\" }, index.h(\"small\", { key: \"3ca833aaaa5641c95ec2140c3cc7d6779b3a67ae\", slot: \"error\" }))), showList && index.h(MarketListTagName, { key: \"e1f2c72e81cce62cf73369135b4ab9d72479b270\", interactive: true, transient: true }, fileMarketRows));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"watchValueHandler\"],\n\t      \"disabled\": [\"watchDisabledHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketFileUpload.style = MarketFileUploadStyle0;\n\tmarketFileUpload_cjs_entry.market_file_upload = MarketFileUpload;\n\treturn marketFileUpload_cjs_entry;\n}\n\nvar marketFilter_cjs_entry = {};\n\nvar utils8cc937f5 = {};\n\nvar hasRequiredUtils8cc937f5;\n\nfunction requireUtils8cc937f5 () {\n\tif (hasRequiredUtils8cc937f5) return utils8cc937f5;\n\thasRequiredUtils8cc937f5 = 1;\n\t(function (exports) {\n\t\tconst index = index254d04f0.requireIndex254d04f0();\n\t\texports.ListItemSelectableType = void 0;\n\t\t(function(ListItemSelectableType) {\n\t\t  ListItemSelectableType[ListItemSelectableType[\"RADIO\"] = 0] = \"RADIO\";\n\t\t  ListItemSelectableType[ListItemSelectableType[\"CHECKBOX\"] = 1] = \"CHECKBOX\";\n\t\t  ListItemSelectableType[ListItemSelectableType[\"SWITCH\"] = 2] = \"SWITCH\";\n\t\t  ListItemSelectableType[ListItemSelectableType[\"SELECTABLE_WITHOUT_CONTROL\"] = 3] = \"SELECTABLE_WITHOUT_CONTROL\";\n\t\t})(exports.ListItemSelectableType || (exports.ListItemSelectableType = {}));\n\t\tfunction isValueEmpty(value) {\n\t\t  return value === \"\" || value === null || value === void 0 || Array.isArray(value) && value.length === 0;\n\t\t}\n\t\tfunction isValidControl(control) {\n\t\t  var _a;\n\t\t  if (!control) {\n\t\t    return false;\n\t\t  }\n\t\t  const tagName = (_a = control.tagName) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase();\n\t\t  const validControlTags = [\n\t\t    index.getNamespacedTagFor(\"market-checkbox\").toLocaleLowerCase(),\n\t\t    index.getNamespacedTagFor(\"market-radio\").toLocaleLowerCase(),\n\t\t    index.getNamespacedTagFor(\"market-toggle\").toLocaleLowerCase()\n\t\t  ];\n\t\t  return validControlTags.includes(tagName);\n\t\t}\n\t\tfunction getRowSelectableType(row) {\n\t\t  if (!row.interactive || row.variant === \"drill\" || Boolean(row.href) || row.interactive && row.transient) {\n\t\t    return void 0;\n\t\t  }\n\t\t  const slottedControl = row.querySelector('[slot=\"control\"]');\n\t\t  if (!slottedControl) {\n\t\t    return exports.ListItemSelectableType.SELECTABLE_WITHOUT_CONTROL;\n\t\t  }\n\t\t  if (index.isElementWithTagName(slottedControl, \"market-checkbox\")) {\n\t\t    return exports.ListItemSelectableType.CHECKBOX;\n\t\t  }\n\t\t  if (index.isElementWithTagName(slottedControl, \"market-radio\")) {\n\t\t    return exports.ListItemSelectableType.RADIO;\n\t\t  }\n\t\t  if (index.isElementWithTagName(slottedControl, \"market-toggle\")) {\n\t\t    return exports.ListItemSelectableType.SWITCH;\n\t\t  }\n\t\t  return void 0;\n\t\t}\n\t\tfunction getItemSelectableType(item) {\n\t\t  if (index.isElementWithTagName(item, \"market-action-card\")) {\n\t\t    const innerRow = item.querySelector(index.getNamespacedTagFor(\"market-row\"));\n\t\t    if (innerRow) {\n\t\t      return getRowSelectableType(innerRow);\n\t\t    }\n\t\t    return exports.ListItemSelectableType.SELECTABLE_WITHOUT_CONTROL;\n\t\t  }\n\t\t  if (index.isElementWithTagName(item, \"market-row\")) {\n\t\t    return getRowSelectableType(item);\n\t\t  }\n\t\t  return void 0;\n\t\t}\n\t\texports.getItemSelectableType = getItemSelectableType;\n\t\texports.isValidControl = isValidControl;\n\t\texports.isValueEmpty = isValueEmpty; \n\t} (utils8cc937f5));\n\treturn utils8cc937f5;\n}\n\nvar hasRequiredMarketFilter_cjs_entry;\n\nfunction requireMarketFilter_cjs_entry () {\n\tif (hasRequiredMarketFilter_cjs_entry) return marketFilter_cjs_entry;\n\thasRequiredMarketFilter_cjs_entry = 1;\n\tObject.defineProperty(marketFilter_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst menu = requireMenu122781f5();\n\tconst utils = requireUtils8cc937f5();\n\tconst v4 = requireV48e8d6fbc();\n\tconst marketFilterCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:inline-block}.dropdown,.dropdown>.filter-button{width:100%}.date-popover{max-width:unset;max-height:unset}\";\n\tconst MarketFilterStyle0 = marketFilterCss;\n\tconst MarketFilter = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketFilterClosed = index.createEvent(this, \"marketFilterClosed\", 7);\n\t    this.marketFilterOpened = index.createEvent(this, \"marketFilterOpened\", 7);\n\t    this.marketFilterExpandedChanged = index.createEvent(this, \"marketFilterExpandedChanged\", 7);\n\t    this.marketFilterValueDidChange = index.createEvent(this, \"marketFilterValueDidChange\", 7);\n\t    this.name = void 0;\n\t    this.disabled = void 0;\n\t    this.focused = false;\n\t    this.size = \"medium\";\n\t    this.expanded = false;\n\t    this.dropdownInteraction = void 0;\n\t    this.popoverPlacement = \"bottom-start\";\n\t    this.popoverStrategy = \"absolute\";\n\t    this.selectedDisplayValue = void 0;\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   *\n\t   * Get the filter type\n\t   */\n\t  async getFilterType() {\n\t    return Promise.resolve(this.filterType);\n\t  }\n\t  /**\n\t   * Toggle focus on the filter button\n\t   * @param {boolean} [value=true] whether or not focus will be applied or removed\n\t   * @returns {Promise<boolean>} whether or not the filter was focused or blurred\n\t   */\n\t  async setFocus(value = true) {\n\t    this.focused = await this.filterButtonEl.setFocus(value);\n\t    return Promise.resolve(this.focused);\n\t  }\n\t  /**\n\t   * @private\n\t   * *INTERNAL*: Used by `market-filter-dropdown-menu` to reemit events from the cloned datepicker inside the dropdown.\n\t   *\n\t   * Sets the value of the list and emits `marketFilterValueDidChange`.\n\t   *\n\t   * @param value - The value to set for the market filter.\n\t   * @returns A promise that resolves when the value is set.\n\t   */\n\t  async __setAndEmitListValue(prevValue, newValue) {\n\t    if (!this.listEl) {\n\t      return Promise.reject(new Error(\"No list found.\"));\n\t    }\n\t    this.listEl.value = newValue;\n\t    this.marketFilterValueDidChange.emit({\n\t      name: this.name,\n\t      prevValue: prevValue !== null && prevValue !== void 0 ? prevValue : null,\n\t      value: newValue\n\t    });\n\t    this.setDisplayValueFromSlottedElement();\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @private\n\t   * *INTERNAL*: Used by `market-filter-dropdown-menu` to reemit events from the cloned datepicker inside the dropdown.\n\t   *\n\t   * Sets the value of the date picker emits `marketFilterValueDidChange`.\n\t   *\n\t   * @param value - The new value for the date picker.\n\t   * @returns A promise that resolves when the value is set.\n\t   */\n\t  async __setAndEmitDatePickerValue(value) {\n\t    if (!this.datePickerEl) {\n\t      return Promise.reject(new Error(\"No date picker found.\"));\n\t    }\n\t    const prevStartDate = this.datePickerEl.selectedStartDate;\n\t    const prevEndDate = this.datePickerEl.selectedEndDate;\n\t    const startDate = value === null || value === void 0 ? void 0 : value.startDate;\n\t    const endDate = value === null || value === void 0 ? void 0 : value.endDate;\n\t    this.datePickerEl.selectedStartDate = startDate;\n\t    this.datePickerEl.selectedEndDate = endDate;\n\t    this.marketFilterValueDidChange.emit({\n\t      name: this.name,\n\t      prevValue: {\n\t        startDate: prevStartDate,\n\t        endDate: prevEndDate\n\t      },\n\t      value: {\n\t        startDate,\n\t        endDate\n\t      }\n\t    });\n\t    this.setDisplayValueFromSlottedElement();\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Handle programmatic value changes from MarketList\n\t   */\n\t  handleListValueChange() {\n\t    this.setDisplayValueFromSlottedElement();\n\t  }\n\t  /**\n\t   * Handle `marketListSelectionsDidChange` emitted by `<market-list>`\n\t   */\n\t  handleListSelectionChange(event) {\n\t    var _a, _b, _c, _d;\n\t    const { detail, target } = event;\n\t    const isMultiselect = (_a = target === null || target === void 0 ? void 0 : target.multiselect) !== null && _a !== void 0 ? _a : false;\n\t    const prevValue = isMultiselect ? detail.prevSelectionValues : (_b = detail.prevSelectionValues) === null || _b === void 0 ? void 0 : _b[0];\n\t    const newValue = isMultiselect ? detail.currentSelectionValues : (_c = detail.currentSelectionValues) === null || _c === void 0 ? void 0 : _c[0];\n\t    this.rawValue = newValue;\n\t    this.marketFilterValueDidChange.emit({\n\t      name: this.name,\n\t      prevValue: prevValue !== null && prevValue !== void 0 ? prevValue : null,\n\t      value: newValue !== null && newValue !== void 0 ? newValue : null\n\t    });\n\t    if (!((_d = this.listEl) === null || _d === void 0 ? void 0 : _d.multiselect) && !this.dropdownInteraction) {\n\t      this.expanded = false;\n\t    }\n\t  }\n\t  /**\n\t   * Handle `marketDateRangeChanged` emitted by `<market-date-picker>`\n\t   */\n\t  handleDateRangeChange(e) {\n\t    const { startDate, endDate, prevStartDate, prevEndDate } = e.detail;\n\t    this.setDisplayValueFromDateEvent(e);\n\t    this.marketFilterValueDidChange.emit({\n\t      name: this.name,\n\t      prevValue: {\n\t        startDate: prevStartDate,\n\t        endDate: prevEndDate\n\t      },\n\t      value: {\n\t        startDate,\n\t        endDate\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Handle `marketDropdownOpened` emitted by `<market-dropdown>`\n\t   */\n\t  handleDropdownOpened(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    const { defaultPrevented } = this.marketFilterExpandedChanged.emit(true);\n\t    if (defaultPrevented) {\n\t      e.preventDefault();\n\t      return;\n\t    }\n\t    if (this.marketFilterOpened.emit().defaultPrevented) {\n\t      e.preventDefault();\n\t      return;\n\t    }\n\t    if (!this.dropdownInteraction) {\n\t      this.expanded = true;\n\t    }\n\t  }\n\t  /**\n\t   * Handle `marketDropdownClosed` emitted by `<market-dropdown>`\n\t   */\n\t  handleDropdownClosed(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    const { defaultPrevented } = this.marketFilterExpandedChanged.emit(false);\n\t    if (defaultPrevented) {\n\t      e.preventDefault();\n\t      return;\n\t    }\n\t    if (this.marketFilterClosed.emit().defaultPrevented) {\n\t      e.preventDefault();\n\t      return;\n\t    }\n\t    if (!this.dropdownInteraction) {\n\t      this.expanded = false;\n\t    }\n\t  }\n\t  /**\n\t   * Handle default slot changes\n\t   */\n\t  handleDefaultSlotChange() {\n\t    this.datePickerEl = this.el.querySelector(index$1.getNamespacedTagFor(\"market-date-picker\"));\n\t    this.listEl = this.el.querySelector(index$1.getNamespacedTagFor(\"market-list\"));\n\t    const autoId = `popover-${v4.v4()}`;\n\t    if (this.datePickerEl) {\n\t      if (!this.datePickerEl.id) {\n\t        this.datePickerEl.id = autoId;\n\t        this.popoverId = autoId;\n\t      } else {\n\t        this.popoverId = this.datePickerEl.id;\n\t      }\n\t      this.filterType = \"date\";\n\t      this.setDisplayValueFromSlottedElement();\n\t    } else if (this.listEl) {\n\t      if (!this.listEl.interactive) {\n\t        this.listEl.interactive = true;\n\t      }\n\t      if (!this.listEl.id) {\n\t        this.listEl.id = autoId;\n\t        this.popoverId = autoId;\n\t      } else {\n\t        this.popoverId = this.listEl.id;\n\t      }\n\t      this.filterType = \"list\";\n\t      this.initListValueObserver();\n\t      this.setDisplayValueFromSlottedElement();\n\t    }\n\t  }\n\t  /**\n\t   * Listens to changes in row content to ensure that if the selected row's content\n\t   * is dynamically updated, those changes will be reflected to `selectedDisplayValue`.\n\t   */\n\t  initRowObservers() {\n\t    const syncRowContent = (row) => {\n\t      if (typeof this.rawValue === \"string\" && row.value === this.rawValue) {\n\t        this.selectedDisplayValue = this.getTextContentOfRowWithValue(row.value);\n\t      }\n\t    };\n\t    const rows = this.el.querySelectorAll(`${index$1.getNamespacedTagFor(\"market-list\")} ${index$1.getNamespacedTagFor(\"market-row\")}`);\n\t    rows.forEach((row) => {\n\t      const observer = new MutationObserver(() => syncRowContent(row));\n\t      observer.observe(row, { characterData: true, subtree: true });\n\t    });\n\t  }\n\t  initListValueObserver() {\n\t    if (this.listEl) {\n\t      const observer = new MutationObserver((mutations) => {\n\t        if (mutations.some((m) => m.attributeName === \"value\")) {\n\t          this.setDisplayValueFromSlottedElement();\n\t        }\n\t      });\n\t      observer.observe(this.listEl, {\n\t        attributes: true,\n\t        attributeFilter: [\"value\"]\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * Gets the `.textContent` of the `<market-row>` with the provided `value`.\n\t   * This is only used for list types.\n\t   */\n\t  getTextContentOfRowWithValue(value) {\n\t    const marketRowTag = index$1.getNamespacedTagFor(\"market-row\");\n\t    const labelEl = this.listEl.querySelector(`${marketRowTag}[value=\"${value}\"] [slot=\"label\"]`);\n\t    return labelEl === null || labelEl === void 0 ? void 0 : labelEl.textContent;\n\t  }\n\t  /**\n\t   * Infers the value from the <market-list> or <market-date-picker>\n\t   */\n\t  setDisplayValueFromSlottedElement() {\n\t    const displayValueEl = this.el.querySelector('[slot=\"display-value\"]');\n\t    const hasDisplayValue = Boolean(displayValueEl);\n\t    if (hasDisplayValue) {\n\t      this.selectedDisplayValue = displayValueEl.textContent;\n\t      return;\n\t    }\n\t    if (this.listEl) {\n\t      if (!this.listEl.value) {\n\t        this.selectedDisplayValue = void 0;\n\t        return;\n\t      }\n\t      this.rawValue = this.listEl.value;\n\t      if (this.listEl.multiselect) {\n\t        const valueCount = (() => {\n\t          if (typeof this.listEl.value === \"string\") {\n\t            return this.listEl.value.split(\",\").length;\n\t          } else if (Array.isArray(this.listEl.value)) {\n\t            return this.listEl.value.length;\n\t          }\n\t          return void 0;\n\t        })();\n\t        if (valueCount > 1) {\n\t          this.selectedDisplayValue = `${valueCount}`;\n\t          return;\n\t        }\n\t      }\n\t      this.selectedDisplayValue = this.getTextContentOfRowWithValue(this.listEl.value);\n\t    } else if (this.datePickerEl) {\n\t      this.selectedDisplayValue = this.formatDate({\n\t        startDate: this.datePickerEl.selectedStartDate,\n\t        endDate: this.datePickerEl.selectedEndDate\n\t      });\n\t    }\n\t  }\n\t  formatDate({ startDate, endDate }) {\n\t    var _a, _b;\n\t    const start = startDate ? new Date(startDate) : void 0;\n\t    const end = endDate ? new Date(endDate) : void 0;\n\t    if (!start && !end) {\n\t      return \"\";\n\t    }\n\t    const locale = this.datePickerEl.locale;\n\t    const startAndEndInTheSameYear = Boolean(start && end && start.getFullYear() === end.getFullYear());\n\t    const startDateString = (_a = start === null || start === void 0 ? void 0 : start.toLocaleDateString(locale, startAndEndInTheSameYear && end ? { day: \"numeric\", month: \"numeric\" } : { dateStyle: \"short\" })) !== null && _a !== void 0 ? _a : \"\";\n\t    const endDateString = (_b = end === null || end === void 0 ? void 0 : end.toLocaleDateString(locale, { dateStyle: \"short\" })) !== null && _b !== void 0 ? _b : \"\";\n\t    return `${startDateString}${endDateString ? `\\u2013${endDateString}` : \"\"}`;\n\t  }\n\t  /**\n\t   * Calculate the display value from the `marketDateRangeChanged` event of `<market-list>`\n\t   * Formatting is based on design guidelines:\n\t   * https://www.notion.so/marketdesignsystem/Filters-78885543b16446f49d5cfa98c6a56648#bb6aac7e29e04f98890ba32042ddae05\n\t   */\n\t  setDisplayValueFromDateEvent(e) {\n\t    var _a, _b, _c, _d;\n\t    const { menuSelection } = e.detail;\n\t    if (menuSelection === menu.MENU_SLOT_NAMES.CUSTOM) {\n\t      this.selectedDisplayValue = this.formatDate(e.detail);\n\t    } else if (menuSelection) {\n\t      const presetMenuTextContent = (_d = (_c = (_b = (_a = this.datePickerEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(`${index$1.getNamespacedTagFor(\"market-date-picker-menu\")} slot[name=\"${menuSelection}\"]`)) === null || _c === void 0 ? void 0 : _c.textContent) === null || _d === void 0 ? void 0 : _d.trim();\n\t      this.selectedDisplayValue = presetMenuTextContent;\n\t    }\n\t  }\n\t  connectedCallback() {\n\t    this.initRowObservers();\n\t    this.handleDefaultSlotChange();\n\t  }\n\t  render() {\n\t    var _a;\n\t    const { datePickerEl, disabled, dropdownInteraction, expanded, handleDefaultSlotChange, listEl, popoverId, popoverPlacement, popoverStrategy, selectedDisplayValue, size } = this;\n\t    const isMultiselectList = (_a = listEl === null || listEl === void 0 ? void 0 : listEl.multiselect) !== null && _a !== void 0 ? _a : false;\n\t    const hasDatePicker = Boolean(datePickerEl);\n\t    const interaction = dropdownInteraction !== null && dropdownInteraction !== void 0 ? dropdownInteraction : hasDatePicker || isMultiselectList ? \"persistent\" : void 0;\n\t    const MarketDropdownTagName = index$1.getNamespacedTagFor(\"market-dropdown\");\n\t    const MarketPopoverTagName = index$1.getNamespacedTagFor(\"market-popover\");\n\t    const MarketFilterButtonTagName = index$1.getNamespacedTagFor(\"market-filter-button\");\n\t    return index.h(index.Host, { key: \"5a73c19c3899eb2282bf9c0a49ba14eace4eb672\", class: \"market-filter\" }, index.h(MarketDropdownTagName, { key: \"ee57bcf33167149e2c8ecc7daed06bc1c2be739f\", class: \"dropdown\", disabled, expanded, interaction, popoverPlacement, popoverStrategy }, index.h(MarketFilterButtonTagName, {\n\t      key: \"bf018c0848bd4173df38536a5c277b714fbb013e\",\n\t      active: expanded,\n\t      class: \"filter-button\",\n\t      disabled,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.filterButtonEl = el,\n\t      slot: \"trigger\",\n\t      size,\n\t      popoverId\n\t    }, index.h(\"slot\", { key: \"200af312f1976b7f3cebc59b69b3e7a9cd7ca43a\", name: \"label\" }), !utils.isValueEmpty(selectedDisplayValue) && index.h(\"span\", { key: \"68b5d1d17ca741949ce6c3bb23cd45583a9ca43b\", slot: \"feedback\" }, index.h(\"slot\", { key: \"05bb7367cd0f7d4034d2f06e61f5e59764f9a848\", name: \"display-value\" }, selectedDisplayValue))), index.h(MarketPopoverTagName, { key: \"315014a0d83b2505eb46d98d90912a13535145e1\", class: classnames.classNames({ \"date-popover\": hasDatePicker }), slot: \"popover\", id: popoverId }, index.h(\"slot\", { key: \"19e87b546c50b361a199aa239a2e4e7364191e66\", onSlotchange: handleDefaultSlotChange.bind(this) }), index.h(\"slot\", { key: \"d8d97cfe5b73f4cb9008e41a6d7e9d4080de6fb9\", name: \"list\", onSlotchange: handleDefaultSlotChange.bind(this) }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketFilter.style = MarketFilterStyle0;\n\tmarketFilter_cjs_entry.market_filter = MarketFilter;\n\treturn marketFilter_cjs_entry;\n}\n\nvar marketFilterButton_cjs_entry = {};\n\nvar hasRequiredMarketFilterButton_cjs_entry;\n\nfunction requireMarketFilterButton_cjs_entry () {\n\tif (hasRequiredMarketFilterButton_cjs_entry) return marketFilterButton_cjs_entry;\n\thasRequiredMarketFilterButton_cjs_entry = 1;\n\tObject.defineProperty(marketFilterButton_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketFilterButtonCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--filter-button-normal-state-icon-color:var(--filter-button-normal-state-label-color);--filter-button-hover-state-icon-color:var(--filter-button-hover-state-label-color);--filter-button-pressed-state-icon-color:var(--filter-button-pressed-state-label-color);--filter-button-disabled-state-icon-color:var(--filter-button-disabled-state-label-color);--focus-ring-color:color-mix(in srgb, var(--core-focus-ring-color) 100%, transparent);display:inline-block;white-space:nowrap}button{display:inline-flex;gap:var(--filter-button-label-content-spacing);justify-content:center;align-items:center;width:100%;border:none;border-radius:var(--filter-button-border-radius);background-color:var(--filter-button-normal-state-background-color);color:var(--filter-button-normal-state-label-color);box-shadow:var(--filter-button-normal-state-border-color) 0 0 0 var(--filter-button-normal-state-border-size) inset;font-family:inherit;white-space:nowrap;cursor:pointer}button:focus{outline:none}button:focus-visible{outline:var(--core-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}button ::slotted([slot]){cursor:inherit}button ::slotted([slot=\"feedback\"]){color:var(--filter-button-normal-state-feedback-color);white-space:nowrap}button svg{display:none;fill:var(--filter-button-normal-state-icon-color)}:host([icon-only]) .label{display:none}:host([icon-only]) svg{display:block}:host([size=\"medium\"]) button{min-height:var(--filter-button-medium-size-minimum-height);padding:var(--filter-button-medium-size-label-vertical-padding)\\n      var(--filter-button-medium-size-label-horizontal-padding);font-weight:var(--filter-button-medium-size-label-text-weight);font-size:var(--filter-button-medium-size-label-text-size);line-height:var(--filter-button-medium-size-label-text-leading);letter-spacing:var(--filter-button-medium-size-label-text-tracking);text-transform:var(--filter-button-medium-size-label-text-case)}:host([size=\"medium\"]) ::slotted([slot=\"feedback\"]){font-weight:var(--filter-button-medium-size-feedback-text-weight);font-size:var(--filter-button-medium-size-feedback-text-size);line-height:var(--filter-button-medium-size-feedback-text-leading);letter-spacing:var(--filter-button-medium-size-feedback-text-tracking);text-transform:var(--filter-button-medium-size-feedback-text-case)}:host([size=\"small\"]) button{min-height:var(--filter-button-small-size-minimum-height);padding:var(--filter-button-small-size-label-vertical-padding)\\n      var(--filter-button-small-size-label-horizontal-padding);font-weight:var(--filter-button-small-size-label-text-weight);font-size:var(--filter-button-small-size-label-text-size);line-height:var(--filter-button-small-size-label-text-leading);letter-spacing:var(--filter-button-small-size-label-text-tracking);text-transform:var(--filter-button-small-size-label-text-case)}:host([size=\"small\"]) ::slotted([slot=\"feedback\"]){font-weight:var(--filter-button-small-size-feedback-text-weight);font-size:var(--filter-button-small-size-feedback-text-size);line-height:var(--filter-button-small-size-feedback-text-leading);letter-spacing:var(--filter-button-small-size-feedback-text-tracking);text-transform:var(--filter-button-small-size-feedback-text-case)}:host(:hover) button{background-color:var(--filter-button-hover-state-background-color);color:var(--filter-button-hover-state-label-color);box-shadow:var(--filter-button-hover-state-border-color) 0 0 0 var(--filter-button-hover-state-border-size) inset}:host(:hover) ::slotted([slot=\"feedback\"]){color:var(--filter-button-hover-state-feedback-color)}:host(:hover) svg{fill:var(--filter-button-hover-state-icon-color)}:host([active]) button,:host(:active) button{background-color:var(--filter-button-pressed-state-background-color);color:var(--filter-button-pressed-state-label-color);box-shadow:var(--filter-button-pressed-state-border-color) 0 0 0 var(--filter-button-pressed-state-border-size)\\n      inset}:host([active]) ::slotted([slot=\"feedback\"]),:host(:active) ::slotted([slot=\"feedback\"]){color:var(--filter-button-pressed-state-feedback-color)}:host([active]) svg,:host(:active) svg{fill:var(--filter-button-pressed-state-icon-color)}:host([disabled]) button{background-color:var(--filter-button-disabled-state-background-color);color:var(--filter-button-disabled-state-label-color);box-shadow:var(--filter-button-disabled-state-border-color) 0 0 0 var(--filter-button-disabled-state-border-size)\\n      inset}:host([disabled]) ::slotted([slot=\"feedback\"]){color:var(--filter-button-disabled-state-feedback-color)}:host([disabled]) svg{fill:var(--filter-button-disabled-state-icon-color)}';\n\tconst MarketFilterButtonStyle0 = marketFilterButtonCss;\n\tconst MarketFilterButton = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.size = \"medium\";\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.iconOnly = false;\n\t    this.active = false;\n\t    this.popoverId = void 0;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  handleClick(event) {\n\t    if (this.disabled) {\n\t      event.stopImmediatePropagation();\n\t    }\n\t  }\n\t  handleDisabledChange(newValue) {\n\t    if (newValue && this.focused) {\n\t      this.focused = false;\n\t    }\n\t  }\n\t  /**\n\t   * Toggle focus on the filter button\n\t   * @param {boolean} [value=true] whether or not focus will be applied or removed\n\t   * @returns {Promise<boolean>} whether or not the button was focused or blurred\n\t   */\n\t  async setFocus(value = true) {\n\t    if (this.disabled) {\n\t      return Promise.resolve(false);\n\t    }\n\t    this.focused = value;\n\t    if (this.focused) {\n\t      this.buttonEl.focus();\n\t    } else {\n\t      this.buttonEl.blur();\n\t    }\n\t    return Promise.resolve(this.focused);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"7bca0e50c7f4f6e21ba415806ad8e41c895ba803\", class: \"market-filter-button\" }, index.h(\"button\", {\n\t      key: \"b440c6d880b7c2473b1ea4540c40a2bdd31b9da6\",\n\t      \"aria-disabled\": this.disabled,\n\t      disabled: this.disabled,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.buttonEl = el,\n\t      \"aria-expanded\": this.active.toString(),\n\t      \"aria-controls\": this.popoverId,\n\t      type: \"button\"\n\t    }, index.h(\"svg\", { key: \"42a476e7cfdfd3b942a47316baf8e8471c1f53f3\", width: \"18\", height: \"12\", viewBox: \"0 0 18 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"40642c15aa278d390db4b076455255c293a31e13\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M0 0H18V2H0V0ZM15 5H3V7H15V5ZM12 10H6V12H12V10Z\" })), index.h(\"span\", { key: \"7e7a1d487599ad100a01f9a153aaa587710e1a03\", class: \"label\" }, index.h(\"slot\", { key: \"7ed2b5440af00b7b0c87e96cc59ec287d37208c3\" })), index.h(\"slot\", { key: \"5c2cf13e5f9725c5832208f26232e3d922c7695a\", name: \"feedback\" })));\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"disabled\": [\"handleDisabledChange\"]\n\t    };\n\t  }\n\t};\n\tMarketFilterButton.style = MarketFilterButtonStyle0;\n\tmarketFilterButton_cjs_entry.market_filter_button = MarketFilterButton;\n\treturn marketFilterButton_cjs_entry;\n}\n\nvar marketFilterDropdownMenu_cjs_entry = {};\n\nvar hasRequiredMarketFilterDropdownMenu_cjs_entry;\n\nfunction requireMarketFilterDropdownMenu_cjs_entry () {\n\tif (hasRequiredMarketFilterDropdownMenu_cjs_entry) return marketFilterDropdownMenu_cjs_entry;\n\thasRequiredMarketFilterDropdownMenu_cjs_entry = 1;\n\tObject.defineProperty(marketFilterDropdownMenu_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst utils = requireUtils8cc937f5();\n\tconst marketFilterDropdownMenuCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}::slotted([slot=\"filter-title\"]){font-weight:var(--core-type-heading-20-weight);font-size:var(--core-type-heading-20-size);font-family:var(--core-type-heading-20-font-family);line-height:var(--core-type-heading-20-leading);letter-spacing:var(--core-type-heading-20-tracking);text-transform:var(--core-type-heading-20-case)}.overflow-filters{overflow:hidden;height:0}.popover{display:flex;flex-direction:column}.selection-header::part(heading){--filter-overflow-heading-margin-top-size:var(--core-metrics-spacing-200);margin-top:var(--filter-overflow-heading-margin-top-size)}.filter-options-container{--filter-overflow-filter-options-container-margin-top-size:var(--core-metrics-spacing-100);display:flex;flex:1;overflow-y:auto;width:calc(\\n      100% +\\n      var(--modal-popover-wide-viewport-padding-left-size) +\\n      var(--modal-popover-wide-viewport-padding-right-size)\\n    );margin:var(--filter-overflow-filter-options-container-margin-top-size)\\n    calc(var(--modal-popover-wide-viewport-padding-right-size) * -1)\\n    calc(var(--modal-popover-wide-viewport-padding-bottom-size) * -1)\\n    calc(var(--modal-popover-wide-viewport-padding-left-size) * -1);padding-left:var(--modal-popover-wide-viewport-padding-left-size)}.filter-options-container ::slotted(.market-list[slot=\"filter-options\"]){width:calc(100% - var(--modal-popover-wide-viewport-padding-right-size))}.filter-options-container ::slotted(.market-list[slot=\"filter-options\"])::after{content:\"\";display:block;width:100%;height:var(--core-metrics-spacing-100)}.filter-options-container ::slotted(.market-date-picker[slot=\"filter-options\"]){width:auto;min-width:var(--date-picker-minimum-width);padding-right:var(--modal-popover-wide-viewport-padding-right-size)}.filter-options-container ::slotted(.market-date-picker[slot=\"filter-options\"])::after{content:\"\";display:block;width:100%;height:var(--core-metrics-spacing-300)}.filter-options-container ::slotted(.market-date-picker[slot=\"filter-options\"][display-menu]){height:calc(100%)}';\n\tconst MarketFilterDropdownMenuStyle0 = marketFilterDropdownMenuCss;\n\tconst MarketFilterDropdownMenu = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.size = \"medium\";\n\t    this.filtersWithSelectedValue = void 0;\n\t    this.hasSelectedFilter = void 0;\n\t    this.isDropdownActive = void 0;\n\t  }\n\t  /**\n\t   * Handle `marketDropdownOpened` emitted by `<market-dropdown>`\n\t   */\n\t  handleDropdownOpened(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    this.deselectFilter();\n\t    this.isDropdownActive = true;\n\t  }\n\t  /**\n\t   * Handle `marketDropdownClosed` emitted by `<market-dropdown>`\n\t   */\n\t  handleDropdownClosed(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    this.isDropdownActive = false;\n\t  }\n\t  /**\n\t   * Handle `marketHeaderNavigate` emitted by `<market-button>` when clicking the back button\n\t   */\n\t  handleHeaderNavigate() {\n\t    this.deselectFilter();\n\t  }\n\t  /**\n\t   * Deselect filter\n\t   */\n\t  deselectFilter() {\n\t    this.hasSelectedFilter = false;\n\t  }\n\t  /**\n\t   * Handle overflow-filters slot change\n\t   */\n\t  handleOverflowFiltersSlotChange() {\n\t    this.filterEls = this.el.querySelector('[slot=\"overflow-filters\"]').assignedNodes();\n\t    this.createRowsFromFilters();\n\t    this.calculateFiltersWithSelectedValue();\n\t  }\n\t  /**\n\t   * Create rows from filter slots\n\t   */\n\t  createRowsFromFilters() {\n\t    var _a, _b, _c, _d;\n\t    if (!((_a = this.filterEls) === null || _a === void 0 ? void 0 : _a.length)) {\n\t      (_b = this.filterRowEls) === null || _b === void 0 ? void 0 : _b.forEach((filterRowEl) => {\n\t        filterRowEl.remove();\n\t      });\n\t      return;\n\t    }\n\t    const filterRowElsByValue = ((_c = this.filterRowEls) !== null && _c !== void 0 ? _c : []).reduce((result, rowEl) => {\n\t      result[rowEl.value] = rowEl;\n\t      return result;\n\t    }, {});\n\t    const filterNames = /* @__PURE__ */ new Set();\n\t    const rowsByName = {};\n\t    this.filterEls.forEach((filterEl) => {\n\t      var _a2;\n\t      const name = filterEl.name;\n\t      filterNames.add(name);\n\t      const currentRowEl = filterRowElsByValue[name];\n\t      if (currentRowEl) {\n\t        rowsByName[name] = currentRowEl;\n\t      } else {\n\t        const newRowEl = document.createElement(index$1.getNamespacedTagFor(\"market-row\"));\n\t        newRowEl.variant = \"drill\";\n\t        newRowEl.interactive = true;\n\t        newRowEl.transient = true;\n\t        newRowEl.value = name;\n\t        newRowEl.size = this.size;\n\t        newRowEl.addEventListener(\"click\", async () => {\n\t          await this.handleFilterSelection(newRowEl);\n\t        });\n\t        rowsByName[name] = newRowEl;\n\t      }\n\t      const label = (_a2 = rowsByName[name]) === null || _a2 === void 0 ? void 0 : _a2.querySelector(\"label\");\n\t      label === null || label === void 0 ? void 0 : label.remove();\n\t      const filterLabelEl = filterEl.querySelector(\"label\");\n\t      if (filterLabelEl) {\n\t        rowsByName[name].appendChild(filterLabelEl.cloneNode(true));\n\t      }\n\t      if (filterEl.disabled) {\n\t        rowsByName[name].disabled = true;\n\t      }\n\t      rowsByName[name].setAttribute(\"slot\", \"filter-row\");\n\t    });\n\t    (_d = this.filterRowEls) === null || _d === void 0 ? void 0 : _d.forEach((filterRowEl) => {\n\t      if (!filterNames.has(filterRowEl.value)) {\n\t        filterRowEl.remove();\n\t      }\n\t    });\n\t    this.filterRowEls = [...this.filterEls].map(({ name }) => rowsByName[name]);\n\t    this.filterRowEls.forEach((filterRowEl) => {\n\t      filterRowEl.setAttribute(\"slot\", \"filter-rows\");\n\t      this.el.appendChild(filterRowEl);\n\t    });\n\t  }\n\t  /**\n\t   * When a filter is selected, the popover content will show\n\t   * the selected filter's title and list selection\n\t   */\n\t  async handleFilterSelection(rowEl) {\n\t    var _a, _b, _c;\n\t    const value = rowEl.value;\n\t    this.hasSelectedFilter = true;\n\t    const filterEl = this.filterEls.find((filterEl2) => filterEl2.name === value);\n\t    const labelEl = filterEl.querySelector(\"label\");\n\t    const clonedLabelEl = labelEl.cloneNode(true);\n\t    clonedLabelEl.setAttribute(\"slot\", \"filter-title\");\n\t    (_a = this.el.querySelector('[slot=\"filter-title\"]')) === null || _a === void 0 ? void 0 : _a.remove();\n\t    this.el.appendChild(clonedLabelEl);\n\t    switch (await filterEl.getFilterType()) {\n\t      case \"date\": {\n\t        const datePickerEl = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-date-picker\"));\n\t        const clonedDatePickerEl = datePickerEl.cloneNode(true);\n\t        clonedDatePickerEl.setAttribute(\"slot\", \"filter-options\");\n\t        clonedDatePickerEl.addEventListener(\"marketDateRangeChanged\", (e) => {\n\t          this.handleDatePickerFilterSelection(e, filterEl);\n\t        });\n\t        (_b = this.el.querySelector('[slot=\"filter-options\"]')) === null || _b === void 0 ? void 0 : _b.remove();\n\t        this.el.appendChild(clonedDatePickerEl);\n\t        break;\n\t      }\n\t      case \"list\": {\n\t        const listEl = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-list\"));\n\t        const clonedListEl = listEl.cloneNode(true);\n\t        clonedListEl.setAttribute(\"slot\", \"filter-options\");\n\t        clonedListEl.addEventListener(\"marketListSelectionsDidChange\", (e) => {\n\t          this.handleListFilterSelection(e, filterEl, listEl);\n\t        });\n\t        clonedListEl.setAttribute(\"interactive\", \"\");\n\t        listEl.multiselect && clonedLabelEl.setAttribute(\"multiselect\", \"\");\n\t        (_c = this.el.querySelector('[slot=\"filter-options\"]')) === null || _c === void 0 ? void 0 : _c.remove();\n\t        this.el.appendChild(clonedListEl);\n\t        break;\n\t      }\n\t    }\n\t  }\n\t  async handleDatePickerFilterSelection(e, filterEl) {\n\t    const { startDate, endDate } = e.detail;\n\t    await filterEl.__setAndEmitDatePickerValue({ startDate, endDate });\n\t    this.calculateFiltersWithSelectedValue();\n\t  }\n\t  async handleListFilterSelection(e, filterEl, listEl) {\n\t    const { detail } = e;\n\t    const { currentSelectionValues, prevSelectionValues } = detail;\n\t    const isMultiselect = listEl.multiselect;\n\t    const prevValue = isMultiselect ? prevSelectionValues : prevSelectionValues[0];\n\t    const newValue = isMultiselect ? currentSelectionValues : currentSelectionValues[0];\n\t    await filterEl.__setAndEmitListValue(prevValue, newValue);\n\t    if (!listEl.multiselect) {\n\t      this.deselectFilter();\n\t    }\n\t    this.calculateFiltersWithSelectedValue();\n\t  }\n\t  /**\n\t   * Count how many filters with selected value\n\t   * and that count is displayed as feedback.\n\t   */\n\t  calculateFiltersWithSelectedValue() {\n\t    this.filtersWithSelectedValue = [...this.filterEls || []].reduce((count, filterEl) => {\n\t      const list = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-list\"));\n\t      if (!utils.isValueEmpty(list === null || list === void 0 ? void 0 : list.value)) {\n\t        return count + 1;\n\t      }\n\t      const datePicker = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-date-picker\"));\n\t      if (datePicker === null || datePicker === void 0 ? void 0 : datePicker.selectedStartDate) {\n\t        return count + 1;\n\t      }\n\t      return count;\n\t    }, 0);\n\t  }\n\t  componentDidLoad() {\n\t    this.handleOverflowFiltersSlotChange();\n\t  }\n\t  render() {\n\t    const { filtersWithSelectedValue, handleOverflowFiltersSlotChange, hasSelectedFilter, isDropdownActive, size } = this;\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    const MarketDropdownTagName = index$1.getNamespacedTagFor(\"market-dropdown\");\n\t    const MarketFilterButtonTagName = index$1.getNamespacedTagFor(\"market-filter-button\");\n\t    const MarketHeaderTagName = index$1.getNamespacedTagFor(\"market-header\");\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const MarketPopoverTagName = index$1.getNamespacedTagFor(\"market-popover\");\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return index.h(index.Host, { key: \"6eb48cde4e10c9e229d1ef69037878d7df1ae558\", class: classnames.classNames(\"market-filter-dropdown-menu\", { \"show-options\": hasSelectedFilter }) }, index.h(MarketDropdownTagName, { key: \"fb3b0c7e94150319a766b6a196a9b4757310387f\", interaction: \"persistent\", popoverPlacement: \"bottom-end\" }, index.h(MarketFilterButtonTagName, { key: \"8b208b831d010c7a460cfda101862cfd4e2c7d3d\", active: isDropdownActive, iconOnly: true, size, slot: \"trigger\" }, filtersWithSelectedValue && index.h(\"span\", { key: \"9639be96e47518c1c15f12cbf85966bb513cfc89\", slot: \"feedback\" }, filtersWithSelectedValue)), index.h(MarketPopoverTagName, { key: \"a968d3dbf5902ac69d55bacf9bab5bfd30b43a91\", class: \"popover\", slot: \"popover\" }, !hasSelectedFilter ? index.h(MarketListTagName, { class: \"filter-list\", interactive: true }, index.h(\"slot\", { name: \"filter-rows\" })) : index.h(index.Fragment, null, index.h(MarketHeaderTagName, { class: \"selection-header\" }, index.h(MarketButtonTagName, { rank: \"secondary\", size: \"small\", slot: \"navigation\" }, index.h(MarketAccessoryTagName, { slot: \"icon\" }, index.h(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M4.29289 11.293C3.90237 11.6835 3.90237 12.3167 4.29289 12.7072L11.2929 19.7072L12.7071 18.293L7.41421 13.0001L19 13.0001V11.0001L7.41421 11.0001L12.7071 5.70718L11.2929 4.29297L4.29289 11.293Z\" })))), index.h(\"slot\", { name: \"filter-title\" })), index.h(\"div\", { class: \"filter-options-container\" }, index.h(\"slot\", { name: \"filter-options\" }))))), index.h(\"div\", { key: \"2b407531d96780ee895339967b213ec349e44abd\", class: \"overflow-filters\" }, index.h(\"slot\", { key: \"85dafd51dc2a47207811a1c24c4f90ce3ae3103f\", name: \"overflow-filters\", onSlotchange: handleOverflowFiltersSlotChange.bind(this) })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketFilterDropdownMenu.style = MarketFilterDropdownMenuStyle0;\n\tmarketFilterDropdownMenu_cjs_entry.market_filter_dropdown_menu = MarketFilterDropdownMenu;\n\treturn marketFilterDropdownMenu_cjs_entry;\n}\n\nvar marketFilterGroup_cjs_entry = {};\n\nvar hasRequiredMarketFilterGroup_cjs_entry;\n\nfunction requireMarketFilterGroup_cjs_entry () {\n\tif (hasRequiredMarketFilterGroup_cjs_entry) return marketFilterGroup_cjs_entry;\n\thasRequiredMarketFilterGroup_cjs_entry = 1;\n\tObject.defineProperty(marketFilterGroup_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$2 = requireIndexC43effe9();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst raf = requireRafEa414557();\n\tconst throttle = requireThrottle88e2e29a();\n\trequireIsObject7dcf0083();\n\trequireIsSymbolFbd13c73();\n\tconst marketFilterGroupCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--filter-group-margin:var(--core-metrics-spacing-200);--filter-group-search-width:280px;display:flex;margin:var(--filter-group-margin)}.content{--filter-group-button-spacing:var(--core-metrics-spacing-100);display:flex;flex:1;flex-flow:row nowrap;gap:var(--filter-group-button-spacing, var(--core-metrics-spacing-100))}::slotted([slot=\"search\"]){max-width:var(--filter-group-search-width)}::slotted([slot=\"search\"]:not([compact])){min-width:var(--filter-group-search-width)}::slotted([slot=\"search\"][focused]){flex:1 1 var(--filter-group-search-width)}@media (max-width: 599px){.content{justify-content:space-between}::slotted([slot=\"search\"]){max-width:unset}::slotted([slot=\"search\"][focused]){flex:1}::slotted([slot=\"filters\"]){display:inline-flex;flex:1}}';\n\tconst MarketFilterGroupStyle0 = marketFilterGroupCss;\n\tconst MAX_VISIBLE_FILTERS = 3;\n\tconst FILTER_GROUP_GAP = 8;\n\tconst FILTER_BUTTON_WIDTH = 50;\n\tconst FILTER_BUTTON_FEEDBACK_GAP = 8;\n\tconst RESIZE_DEBOUNCE_DURATION = 16;\n\tconst MarketFilterGroup = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this._isSearchActive = false;\n\t    this._willFocusOnFirstFilter = false;\n\t    this._willDelayDropdownOpen = false;\n\t    this._observers = {};\n\t    this.throttledHandleResize = throttle.throttle(this.handleResize.bind(this), RESIZE_DEBOUNCE_DURATION);\n\t    this.maxVisibleFilters = 3;\n\t    this._sortedFilterEls = {\n\t      overflow: [],\n\t      visible: []\n\t    };\n\t  }\n\t  maxVisibleFiltersWatcher() {\n\t    this.handleResize();\n\t  }\n\t  /**\n\t   * Search is active when it's focused\n\t   */\n\t  marketInputSearchFocusHandler({ detail }) {\n\t    this._isSearchActive = detail;\n\t  }\n\t  /**\n\t   * For every search animation event, we either show or hide filters\n\t   */\n\t  async marketInternalInputSearchCompactAnimationHandler(e) {\n\t    e.stopPropagation();\n\t    await this.handleResize();\n\t    await raf.asyncRequestAnimationFrame();\n\t    this._willDelayDropdownOpen = e.detail === \"animationstart\";\n\t  }\n\t  /**\n\t   * Handle dropdown menu's `marketDropdownOpened` event\n\t   * TODO: There is no `market-dropdown` in this template below.\n\t   * This event is bubbling up from `market-filter-dropdown-menu`.\n\t   * We should refactor this to use a custom event from that instead,\n\t   * but that component does not yet emit custom open/close events.\n\t   */\n\t  marketDropdownOpenedHandler(e) {\n\t    if (!this._willDelayDropdownOpen) {\n\t      return;\n\t    }\n\t    this._willDelayDropdownOpen = false;\n\t    e.preventDefault();\n\t    setTimeout(async () => {\n\t      var _a, _b, _c, _d, _e, _f;\n\t      await raf.asyncRequestAnimationFrame();\n\t      await ((_c = (_b = (_a = this._dropdownMenuEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(index$1.getNamespacedTagFor(\"market-dropdown\"))) === null || _c === void 0 ? void 0 : _c.updateDropdownPosition());\n\t      (_f = (_e = (_d = this._dropdownMenuEl) === null || _d === void 0 ? void 0 : _d.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector(index$1.getNamespacedTagFor(\"market-dropdown\"))) === null || _f === void 0 ? void 0 : _f.openDropdown();\n\t    }, index$2.CORE_ANIMATION_EXIT_TRANSITION_FAST_SPEED_DURATION * 1.25);\n\t  }\n\t  /**\n\t   * The overflow feedback's text length is based on filters that have value.\n\t   * Basically, the button's structure is: `[ <icon> <gap> <feedback> ]`\n\t   */\n\t  calculateOverflowButtonWidth(filterEls) {\n\t    if (!(filterEls === null || filterEls === void 0 ? void 0 : filterEls.length)) {\n\t      return 0;\n\t    }\n\t    const hasValueCount = filterEls.reduce((result, filterEl) => {\n\t      const listEl = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-list\"));\n\t      if (listEl === null || listEl === void 0 ? void 0 : listEl.value) {\n\t        return result + 1;\n\t      }\n\t      const datePickerEl = filterEl.querySelector(index$1.getNamespacedTagFor(\"market-date-picker\"));\n\t      if (datePickerEl === null || datePickerEl === void 0 ? void 0 : datePickerEl.selectedStartDate) {\n\t        return result + 1;\n\t      }\n\t      return result;\n\t    }, 0);\n\t    if (hasValueCount === 0) {\n\t      return FILTER_BUTTON_WIDTH;\n\t    }\n\t    const canvasEl = document.createElement(\"canvas\");\n\t    const context = canvasEl.getContext(\"2d\");\n\t    if (filterEls[0].size === \"small\") {\n\t      context.font = `${index$2.CORE_TYPE_PARAGRAPH_20_SIZE}px ${index$2.CORE_TYPE_PARAGRAPH_20_FONT_FAMILY}`;\n\t    } else {\n\t      context.font = `${index$2.CORE_TYPE_PARAGRAPH_30_SIZE}px ${index$2.CORE_TYPE_PARAGRAPH_30_FONT_FAMILY}`;\n\t    }\n\t    const feedbackTextWidth = context.measureText(`${hasValueCount}`).width;\n\t    canvasEl.remove();\n\t    return FILTER_BUTTON_WIDTH + FILTER_BUTTON_FEEDBACK_GAP + feedbackTextWidth;\n\t  }\n\t  getComputedWidth(el) {\n\t    return Number.parseFloat(window.getComputedStyle(el).width);\n\t  }\n\t  /**\n\t   * Find out where the cutoff will happen.\n\t   * Main chunk of the overflow logic happens here\n\t   */\n\t  async findFilterCutoffIndex() {\n\t    var _a, _b;\n\t    if (((_a = this.maxVisibleFilters) !== null && _a !== void 0 ? _a : MAX_VISIBLE_FILTERS) <= 0) {\n\t      return 0;\n\t    }\n\t    const isNarrowBreakpoint = (window === null || window === void 0 ? void 0 : window.innerWidth) <= index$2.CORE_BREAKPOINT_NARROW_MAX_WIDTH;\n\t    if (isNarrowBreakpoint && !this._isSearchActive) {\n\t      return 1;\n\t    } else if (this._isSearchActive) {\n\t      return 0;\n\t    }\n\t    const filterGroupWidth = this.getComputedWidth(this.el);\n\t    const searchWidth = this._slottedInputSearchEl ? this.getComputedWidth(this._slottedInputSearchEl) + FILTER_GROUP_GAP : 0;\n\t    const tempEl = document.createElement(\"div\");\n\t    tempEl.style.width = \"auto\";\n\t    tempEl.style.position = \"absolute\";\n\t    tempEl.style.visibility = \"hidden\";\n\t    this.el.shadowRoot.appendChild(tempEl);\n\t    let index2 = 0;\n\t    let filterWidths = 0;\n\t    for (const filterEl of this._filterEls) {\n\t      if (index2 === ((_b = this.maxVisibleFilters) !== null && _b !== void 0 ? _b : MAX_VISIBLE_FILTERS)) {\n\t        break;\n\t      }\n\t      const dropdownMenuButtonWidth = index2 + 1 === this._filterEls.length ? 0 : FILTER_GROUP_GAP + this.calculateOverflowButtonWidth(this._filterEls.slice(index2));\n\t      const clonedFilterEl = filterEl.cloneNode(true);\n\t      clonedFilterEl.style.display = \"block\";\n\t      tempEl.appendChild(clonedFilterEl);\n\t      await raf.asyncRequestAnimationFrame();\n\t      const filterElWidth = this.getComputedWidth(tempEl);\n\t      tempEl.removeChild(clonedFilterEl);\n\t      filterWidths += (index2 > 0 ? FILTER_GROUP_GAP : 0) + filterElWidth;\n\t      const potentialWidth = searchWidth + filterWidths + dropdownMenuButtonWidth;\n\t      if (potentialWidth >= filterGroupWidth) {\n\t        break;\n\t      }\n\t      ++index2;\n\t    }\n\t    this.el.shadowRoot.removeChild(tempEl);\n\t    tempEl.remove();\n\t    return index2;\n\t  }\n\t  /**\n\t   * Sort filters:\n\t   * - split by `this._filterCutoffIndex`\n\t   * - visible filters: set attr `[slot=\"filters\"]`; remove `display: none;`\n\t   * - overflow filters: set attr `[slot=\"overflow-filters\"]`; add `display: none;`\n\t   */\n\t  sortVisibleAndOverflowFilters() {\n\t    this._sortedFilterEls = {\n\t      visible: this._filterEls.slice(0, this._filterCutoffIndex),\n\t      overflow: this._filterEls.slice(this._filterCutoffIndex)\n\t    };\n\t    this._sortedFilterEls.visible.forEach((filterEl) => {\n\t      if (filterEl.style.display) {\n\t        filterEl.style.removeProperty(\"display\");\n\t      }\n\t      if (filterEl.getAttribute(\"slot\") !== \"filters\") {\n\t        filterEl.setAttribute(\"slot\", \"filters\");\n\t      }\n\t    });\n\t    this._sortedFilterEls.overflow.forEach((filterEl) => {\n\t      if (filterEl.style.display !== \"none\") {\n\t        filterEl.style.display = \"none\";\n\t      }\n\t      if (filterEl.getAttribute(\"slot\") !== \"overflow-filters\") {\n\t        filterEl.setAttribute(\"slot\", \"overflow-filters\");\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Handle screen / component resize\n\t   */\n\t  async handleResize() {\n\t    if (!this.getComputedWidth(this.el)) {\n\t      return;\n\t    }\n\t    const index2 = await this.findFilterCutoffIndex();\n\t    const isFilterCutoffUpdated = index2 !== this._filterCutoffIndex;\n\t    if (isFilterCutoffUpdated) {\n\t      this._filterCutoffIndex = index2;\n\t      await raf.asyncRequestAnimationFrame();\n\t      this.sortVisibleAndOverflowFilters();\n\t      if (this._dropdownMenuEl) {\n\t        const dropdownEl = this._dropdownMenuEl.querySelector(index$1.getNamespacedTagFor(\"market-dropdown\"));\n\t        if (dropdownEl === null || dropdownEl === void 0 ? void 0 : dropdownEl.expanded) {\n\t          dropdownEl === null || dropdownEl === void 0 ? void 0 : dropdownEl.closeDropdown();\n\t        }\n\t      }\n\t    }\n\t    this.checkIfSearchShouldBeCompact();\n\t  }\n\t  /**\n\t   * Toggle search's compact mode, if present and not focused\n\t   */\n\t  async checkIfSearchShouldBeCompact() {\n\t    var _a, _b;\n\t    if (!this._slottedInputSearchEl || this._slottedInputSearchEl.hasAttribute(\"focused\")) {\n\t      return;\n\t    }\n\t    const isNarrowBreakpoint = (window === null || window === void 0 ? void 0 : window.innerWidth) <= index$2.CORE_BREAKPOINT_NARROW_MAX_WIDTH;\n\t    const hasFilters = Boolean((_a = this._filterEls) === null || _a === void 0 ? void 0 : _a.length);\n\t    const hasMoreThanMaxFilters = this._filterEls.length > ((_b = this.maxVisibleFilters) !== null && _b !== void 0 ? _b : MAX_VISIBLE_FILTERS);\n\t    const searchShouldBeCompact = hasFilters && (isNarrowBreakpoint || hasMoreThanMaxFilters);\n\t    if (searchShouldBeCompact !== this._slottedInputSearchEl.hasAttribute(\"compact\")) {\n\t      if (this._slottedInputSearchEl.getAttribute(\"focused\")) {\n\t        await this._slottedInputSearchEl.setFocus(false);\n\t      }\n\t      if (searchShouldBeCompact) {\n\t        this._slottedInputSearchEl.setAttribute(\"compact\", \"\");\n\t      } else {\n\t        this._slottedInputSearchEl.removeAttribute(\"compact\");\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * When tabbing from the search input and into the first filter,\n\t   */\n\t  handleInputSearchTabKeydown(e) {\n\t    var _a;\n\t    if (e.key === \"Tab\" && !e.shiftKey && ((_a = this._filterEls) === null || _a === void 0 ? void 0 : _a.length)) {\n\t      e.preventDefault();\n\t      this._slottedInputSearchEl.blur();\n\t      this._willFocusOnFirstFilter = true;\n\t    }\n\t  }\n\t  /**\n\t   * When input search is focused, make sure that dropdown menu is closed\n\t   */\n\t  handleInputSearchFocus() {\n\t    var _a, _b;\n\t    const dropdownEl = (_b = (_a = this._dropdownMenuEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector(index$1.getNamespacedTagFor(\"market-dropdown\"));\n\t    if (dropdownEl === null || dropdownEl === void 0 ? void 0 : dropdownEl.hasAttribute(\"expanded\")) {\n\t      dropdownEl.closeDropdown();\n\t    }\n\t  }\n\t  registerSlottedInputSearch() {\n\t    var _a, _b, _c, _d, _e, _f, _g, _h;\n\t    (_b = (_a = this._slottedInputSearchEl) === null || _a === void 0 ? void 0 : _a.removeEventListener) === null || _b === void 0 ? void 0 : _b.call(_a, \"keydown\", this.handleInputSearchTabKeydown);\n\t    (_d = (_c = this._slottedInputSearchEl) === null || _c === void 0 ? void 0 : _c.removeEventListener) === null || _d === void 0 ? void 0 : _d.call(_c, \"focus\", this.handleInputSearchFocus);\n\t    this._slottedInputSearchEl = this.el.querySelector('[slot=\"search\"]');\n\t    (_f = (_e = this._slottedInputSearchEl) === null || _e === void 0 ? void 0 : _e.addEventListener) === null || _f === void 0 ? void 0 : _f.call(_e, \"keydown\", this.handleInputSearchTabKeydown.bind(this));\n\t    (_h = (_g = this._slottedInputSearchEl) === null || _g === void 0 ? void 0 : _g.addEventListener) === null || _h === void 0 ? void 0 : _h.call(_g, \"focus\", this.handleInputSearchFocus.bind(this));\n\t    this.checkIfSearchShouldBeCompact();\n\t  }\n\t  registerSlottedFilters() {\n\t    this._filterEls = [...this.el.children].filter((el) => index$1.isElementWithTagName(el, \"market-filter\"));\n\t  }\n\t  observeContent(el) {\n\t    if (!this._observers.content) {\n\t      this._observers.content = new ResizeObserver(this.throttledHandleResize);\n\t      this._observers.content.observe(el);\n\t    }\n\t  }\n\t  filtersOnSlotChangeHandler() {\n\t    this.registerSlottedFilters();\n\t    this.handleResize();\n\t  }\n\t  connectedCallback() {\n\t    if (!this._observers.host) {\n\t      this._observers.host = new ResizeObserver(this.throttledHandleResize);\n\t      this._observers.host.observe(this.el);\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.registerSlottedFilters();\n\t    this.registerSlottedInputSearch();\n\t    this.handleResize();\n\t  }\n\t  componentWillRender() {\n\t    var _a, _b, _c;\n\t    if (this._willFocusOnFirstFilter) {\n\t      (_c = (_b = (_a = this._filterEls) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.setFocus) === null || _c === void 0 ? void 0 : _c.call(_b);\n\t      this._willFocusOnFirstFilter = false;\n\t    }\n\t  }\n\t  disconnectedCallback() {\n\t    Object.entries(this._observers).forEach(([key, observer]) => {\n\t      if (observer) {\n\t        observer.disconnect();\n\t        this._observers[key] = void 0;\n\t      }\n\t    });\n\t  }\n\t  render() {\n\t    var _a, _b;\n\t    const dropdownMenuButtonSize = (_b = (_a = this._filterEls) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.size;\n\t    const MarketFilterDropdownMenuTagName = index$1.getNamespacedTagFor(\"market-filter-dropdown-menu\");\n\t    return index.h(index.Host, { key: \"e62a60c714982d50c6b68d72b3d82decb3431d40\", class: \"market-filter-group\" }, index.h(\"div\", { key: \"896e5b89b87f1d6547d63606656ab21b4d1cda0a\", class: \"content\", ref: (el) => (\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      this.observeContent(el)\n\t    ) }, index.h(\"slot\", { key: \"c465b4ccd8a75dd8be200e79906667a99ce71771\", name: \"search\", onSlotchange: () => this.registerSlottedInputSearch() }), index.h(\"slot\", { key: \"1ae32aa8991e3f9f9174a27c9848725a63b1c94e\", name: \"filters\", onSlotchange: () => this.filtersOnSlotChangeHandler() }), this._sortedFilterEls.overflow.length > 0 && index.h(MarketFilterDropdownMenuTagName, {\n\t      key: \"7062f0c4dfa911eafd17d5136bf85d7ceefa984a\",\n\t      class: \"dropdown-menu\",\n\t      size: dropdownMenuButtonSize,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this._dropdownMenuEl = el\n\t    }, index.h(\"slot\", { key: \"125027747b32fc9f43b16193d93a6223fa006e0e\", name: \"overflow-filters\", slot: \"overflow-filters\" }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"maxVisibleFilters\": [\"maxVisibleFiltersWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketFilterGroup.style = MarketFilterGroupStyle0;\n\tmarketFilterGroup_cjs_entry.market_filter_group = MarketFilterGroup;\n\treturn marketFilterGroup_cjs_entry;\n}\n\nvar marketFooter_cjs_entry = {};\n\nvar hasRequiredMarketFooter_cjs_entry;\n\nfunction requireMarketFooter_cjs_entry () {\n\tif (hasRequiredMarketFooter_cjs_entry) return marketFooter_cjs_entry;\n\thasRequiredMarketFooter_cjs_entry = 1;\n\tObject.defineProperty(marketFooter_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketFooterCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%;padding:var(--footer-vertical-padding-size) 0}:host ::slotted(.market-button-group){width:100%}\";\n\tconst MarketFooterStyle0 = marketFooterCss;\n\tconst MarketFooter = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"f00d47d9927cc6ed7eeece2f753f86c9b69a240b\", class: \"market-footer\" }, index.h(\"slot\", { key: \"4175f8c702b6f1f1c517d9f0da356d9b88775423\" }));\n\t  }\n\t};\n\tMarketFooter.style = MarketFooterStyle0;\n\tmarketFooter_cjs_entry.market_footer = MarketFooter;\n\treturn marketFooter_cjs_entry;\n}\n\nvar marketHeader_cjs_entry = {};\n\nvar hasRequiredMarketHeader_cjs_entry;\n\nfunction requireMarketHeader_cjs_entry () {\n\tif (hasRequiredMarketHeader_cjs_entry) return marketHeader_cjs_entry;\n\thasRequiredMarketHeader_cjs_entry = 1;\n\tObject.defineProperty(marketHeader_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$2 = requireIndexC43effe9();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketHeaderCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}::slotted(.wayfinding),::slotted([slot=\"wayfinding\"]),::slotted(.subheading),::slotted([slot=\"subheading\"]){font-weight:var(--core-type-paragraph-20-weight);font-size:var(--core-type-paragraph-20-size);font-family:var(--core-type-paragraph-20-font-family);line-height:var(--core-type-paragraph-20-leading);letter-spacing:var(--core-type-paragraph-20-tracking);text-transform:var(--core-type-paragraph-20-case)}::slotted(.wayfinding) b,::slotted(.wayfinding) strong,::slotted([slot=\"wayfinding\"]) b,::slotted([slot=\"wayfinding\"]) strong,::slotted(.subheading) b,::slotted(.subheading) strong,::slotted([slot=\"subheading\"]) b,::slotted([slot=\"subheading\"]) strong{font-weight:var(--core-type-semibold-20-weight)}:host{--header-animation-duration:var(--core-animation-enter-transition-moderate-speed-duration);display:block}::slotted(*){margin:0}::slotted(.wayfinding),::slotted([slot=\"wayfinding\"]){display:block;margin-bottom:var(--header-sub-text-spacing-bottom-size);color:var(--header-sub-text-text-color)}::slotted(.subheading),::slotted([slot=\"subheading\"]){display:block;margin-top:var(--header-sub-text-spacing-bottom-size);color:var(--header-sub-text-text-color)}:host([show-navigation]) ::slotted([slot=\"compact\"]:not(.wayfinding):not(.subheading)){font-weight:var(--core-type-heading-20-weight);font-size:var(--core-type-heading-20-size);font-family:var(--core-type-heading-20-font-family);line-height:var(--core-type-heading-20-leading);letter-spacing:var(--core-type-heading-20-tracking);text-transform:var(--core-type-heading-20-case)}nav{padding-right:var(--header-main-text-horizontal-spacing)}menu{display:none;grid-auto-flow:column;align-items:start;margin:0;padding-left:var(--header-main-text-horizontal-spacing);-moz-column-gap:var(--button-group-spacing);column-gap:var(--button-group-spacing)}:host([show-actions]) menu{display:grid}.grid{display:none}:host([show-actions]) .grid{display:grid;grid-template-columns:auto minmax(max-content, 1fr)}:host([show-navigation]) .grid{display:grid;grid-template-columns:minmax(max-content, 1fr) auto minmax(max-content, 1fr)}.navigation{display:none}:host([show-navigation]) .navigation{display:flex}.actions{display:flex;place-content:flex-end}.compact{display:flex;flex-direction:column;place-content:center}::slotted(p){margin-top:var(--header-bottom-padding-size)}::slotted(p[slot=\"compact\"]){display:none}:host([show-navigation]) .compact{overflow:hidden;text-align:center;opacity:0%;visibility:hidden;transition:opacity var(--header-animation-duration) ease-in-out,\\n    visibility 0s linear var(--header-animation-duration)}:host([show-navigation]) .compact ::slotted([slot=\"compact\"]){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heading{display:block;transition:opacity var(--header-animation-duration) ease-in-out, visibility 0s}:host([show-navigation]) .heading{margin-top:var(--header-nav-icon-button-spacing-buttom-size)}:host([show-actions]:not([show-navigation])) .heading{display:none}:host([show-navigation][compact]) .compact{opacity:100%;visibility:visible;transition:opacity var(--header-animation-duration) ease-in-out, visibility 0s}:host([show-navigation][compact]) .heading{opacity:0%;visibility:hidden;transition:opacity var(--header-animation-duration) ease-in-out,\\n      visibility 0s linear var(--header-animation-duration)}:host(.regular) .heading{max-width:var(--modal-full-fixed-layout-width);margin-right:auto;margin-left:auto}:host(.wide) .heading{max-width:1200px;margin-right:auto;margin-left:auto}';\n\tconst MarketHeaderStyle0 = marketHeaderCss;\n\tconst MarketHeader = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketHeaderNavigate = index.createEvent(this, \"marketHeaderNavigate\", 7);\n\t    this.showNavigation = null;\n\t    this.closeButtonAriaLabel = \"Close\";\n\t    this.disableCloseButton = false;\n\t    this.compact = false;\n\t    this.compactTitle = void 0;\n\t    this.hideCompactWayfinding = false;\n\t    this.showActions = false;\n\t  }\n\t  handleCompact() {\n\t    if (this.compact) {\n\t      const compact = this.el.shadowRoot.querySelector(\".grid .compact\");\n\t      const minHeight = Number.parseInt(getComputedStyle(compact).height, 10);\n\t      this.el.style.height = minHeight !== void 0 ? `${minHeight}px` : \"\";\n\t    } else {\n\t      this.el.style.height = \"\";\n\t    }\n\t  }\n\t  handleSlottedNavigation() {\n\t    const customNavEl = this.el.querySelector('[slot=\"navigation\"]');\n\t    if (customNavEl) {\n\t      this.showNavigation = true;\n\t      customNavEl.addEventListener(\"click\", this.handleSlottedNavClick.bind(this));\n\t    }\n\t  }\n\t  handleSlottedActions() {\n\t    const actions = this.el.querySelector('[slot=\"actions\"]');\n\t    this.showActions = actions ? true : false;\n\t  }\n\t  handleCloseButtonClick(event) {\n\t    this.marketHeaderNavigate.emit({\n\t      event,\n\t      action: \"close\"\n\t    });\n\t  }\n\t  handleSlottedNavClick(event) {\n\t    this.marketHeaderNavigate.emit({\n\t      event,\n\t      action: \"custom\"\n\t    });\n\t  }\n\t  componentWillRender() {\n\t    this.checkForNavigation();\n\t    this.cloneDefaultHeadingToCompactHeading();\n\t    const observer = new MutationObserver(this.handleMutation.bind(this));\n\t    observer.observe(this.el, { childList: true, characterData: true, subtree: true });\n\t  }\n\t  componentDidRender() {\n\t    this.handleCompact();\n\t  }\n\t  handleMutation(mutationList) {\n\t    let shouldClone = true;\n\t    mutationList.forEach((mutation) => {\n\t      if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n\t        mutation.addedNodes.forEach((node) => {\n\t          if (node.slot === \"compact\") {\n\t            shouldClone = false;\n\t          }\n\t        });\n\t      }\n\t    });\n\t    if (shouldClone) {\n\t      this.cloneDefaultHeadingToCompactHeading();\n\t    }\n\t  }\n\t  checkForNavigation() {\n\t    const hasModalParent = this.el.closest(`\n      ${index$1.getNamespacedTagFor(\"market-modal-full\")},\n      ${index$1.getNamespacedTagFor(\"market-modal-partial\")}\n    `);\n\t    const hasCustomNavigation = this.el.querySelector('[slot=\"navigation\"]');\n\t    if (this.showNavigation === null) {\n\t      this.showNavigation = hasModalParent || hasCustomNavigation ? true : false;\n\t    }\n\t  }\n\t  cloneDefaultHeadingToCompactHeading() {\n\t    const compactSlottedContent = this.el.querySelectorAll('[slot=\"compact\"]');\n\t    for (const node of compactSlottedContent) {\n\t      this.el.removeChild(node);\n\t    }\n\t    const wayfindingEl = this.el.querySelector('[slot=\"wayfinding\"]');\n\t    const subheadingEl = this.el.querySelector('[slot=\"subheading\"]');\n\t    if (wayfindingEl && !this.hideCompactWayfinding) {\n\t      const clone = wayfindingEl.cloneNode(true);\n\t      clone.slot = \"compact\";\n\t      clone.classList.add(\"wayfinding\");\n\t      this.el.appendChild(clone);\n\t    }\n\t    const defaultSlotContent = [...this.el.children].filter((el) => !el.getAttribute(\"slot\"));\n\t    if (this.compactTitle) {\n\t      const compactTitleEl = defaultSlotContent[0].cloneNode(true);\n\t      compactTitleEl.textContent = this.compactTitle;\n\t      compactTitleEl.slot = \"compact\";\n\t      this.el.appendChild(compactTitleEl);\n\t    } else {\n\t      for (const node of defaultSlotContent) {\n\t        const clone = node.cloneNode(true);\n\t        clone.slot = \"compact\";\n\t        this.el.appendChild(clone);\n\t      }\n\t    }\n\t    if (!wayfindingEl && subheadingEl) {\n\t      const clone = subheadingEl.cloneNode(true);\n\t      clone.slot = \"compact\";\n\t      clone.classList.add(\"subheading\");\n\t      this.el.appendChild(clone);\n\t    }\n\t  }\n\t  renderDefaultNavigation() {\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    return index.h(MarketButtonTagName, { rank: \"secondary\", slot: \"navigation\", \"aria-label\": this.closeButtonAriaLabel, disabled: this.disableCloseButton, onClick: (event) => this.handleCloseButtonClick(event) }, index.h(MarketIconTagName, { slot: \"icon\", name: index$2.HEADER_CLOSE_BUTTON_ICON_ASSET }));\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"afe6529d71d245a6a7a3b6038027de0c590065fb\", class: \"market-header\", \"show-actions\": this.showActions }, index.h(\"div\", { key: \"36fd4aef3af914d575104521066f3210e321d077\", class: \"grid\" }, index.h(\"div\", { key: \"92cabed638702f23831d913da4dc15454268daf7\", class: \"navigation\" }, index.h(\"nav\", { key: \"791f45db52015416d3653f6f6b13401d8a9dca38\" }, index.h(\"slot\", { key: \"8d17e1eb8f5ba4c6e8fc15ee30b82b09a5caf5d9\", name: \"navigation\", onSlotchange: () => this.handleSlottedNavigation() }, this.renderDefaultNavigation()))), index.h(\"div\", { key: \"c4b8488fa31390f710a6d05a895e6071db13e61e\", class: \"compact\" }, index.h(\"slot\", { key: \"aea699ec451817519672c8d5480ac131fbfb19a1\", name: \"compact\" })), index.h(\"div\", { key: \"1e609ac064b2a18395c1b71f71eceb0e2ed2d59b\", class: \"actions\" }, index.h(\"menu\", { key: \"5ae30763dd0d61d05701c7e105749217bd8d3ae1\" }, index.h(\"slot\", { key: \"f772075e54812fff7ac5bc253210b8e841033959\", name: \"actions\", onSlotchange: () => this.handleSlottedActions() })))), index.h(\"div\", { key: \"1c437bfe7c54ae895acc53ae276198bc7927eee5\", class: \"heading\", part: \"heading\" }, index.h(\"slot\", { key: \"dee9320b62d9588478b1ab5ccec178032b2c9b0c\", name: \"wayfinding\" }), index.h(\"slot\", { key: \"e4cd4f466d93873b6d78a936e842384ee0c9c173\" }), index.h(\"slot\", { key: \"a2e569560b982ece600c9814a3c1eabb60376680\", name: \"subheading\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"compact\": [\"handleCompact\"]\n\t    };\n\t  }\n\t};\n\tMarketHeader.style = MarketHeaderStyle0;\n\tmarketHeader_cjs_entry.market_header = MarketHeader;\n\treturn marketHeader_cjs_entry;\n}\n\nvar marketIcon_cjs_entry = {};\n\nvar hasRequiredMarketIcon_cjs_entry;\n\nfunction requireMarketIcon_cjs_entry () {\n\tif (hasRequiredMarketIcon_cjs_entry) return marketIcon_cjs_entry;\n\thasRequiredMarketIcon_cjs_entry = 1;\n\tObject.defineProperty(marketIcon_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst core = {\n\t  icon: {\n\t    expand: {\n\t      \"fidelity:16\": {\n\t        \"default\": true,\n\t        asset: \"chevron-down\",\n\t        size: 16,\n\t        width: 16,\n\t        height: 16,\n\t        tintable: true\n\t      }\n\t    },\n\t    collapse: {\n\t      \"fidelity:16\": {\n\t        \"default\": true,\n\t        asset: \"chevron-up\",\n\t        size: 16,\n\t        width: 16,\n\t        height: 16,\n\t        tintable: true\n\t      }\n\t    },\n\t    \"continue\": {\n\t      \"fidelity:16\": {\n\t        \"default\": true,\n\t        asset: \"chevron-right\",\n\t        size: 16,\n\t        width: 16,\n\t        height: 16,\n\t        tintable: true\n\t      }\n\t    },\n\t    \"return\": {\n\t      \"fidelity:16\": {\n\t        \"default\": true,\n\t        asset: \"chevron-left\",\n\t        size: 16,\n\t        width: 16,\n\t        height: 16,\n\t        tintable: true\n\t      }\n\t    },\n\t    clear: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"x\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    close: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"x\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    add: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"plus\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    remove: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"minus\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    back: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-left\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    previous: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-left\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    forward: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-right\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    next: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-right\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    ascend: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-up\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    descend: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-down\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    more: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"ellipsis-horizontal\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    menu: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"hamburger-lines\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    loading: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"radial-spinner\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    search: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"magnifying-glass\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    drag: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"grip-dots-vertical\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    warn: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"exclamation-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    warning: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"exclamation-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    alert: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"exclamation-triangle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      },\n\t      \"fidelity:16\": {\n\t        asset: \"critical-badge-alert\",\n\t        size: 16,\n\t        width: 16,\n\t        height: 16,\n\t        tintable: true\n\t      }\n\t    },\n\t    attention: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"exclamation-triangle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    succeed: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"checkmark-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    success: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"checkmark-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    inform: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"i-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    info: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"i-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    deny: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"no-entry-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    denied: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"no-entry-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    cancel: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"x-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    cancelled: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"x-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    recommend: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"lightning-bolt\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    recommendation: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"lightning-bolt\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    refresh: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"dual-rotating-arrows\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    cycle: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"dual-rotating-arrows\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    \"delete\": {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"trashcan\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    checkmark: {\n\t      \"fidelity:24\": {\n\t        asset: \"check\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      },\n\t      \"fidelity:20\": {\n\t        \"default\": true,\n\t        asset: \"checkmark\",\n\t        size: 20,\n\t        width: 20,\n\t        height: 20,\n\t        tintable: true\n\t      }\n\t    },\n\t    indeterminate: {\n\t      \"fidelity:20\": {\n\t        \"default\": true,\n\t        asset: \"indeterminate-mark\",\n\t        size: 20,\n\t        width: 20,\n\t        height: 20,\n\t        tintable: true\n\t      }\n\t    },\n\t    help: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"question-mark-circle\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    show: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"eye\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    hide: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"eye-slash\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    filter: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"filter\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    file: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"dogeared-paper\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    look: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"binoculars\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    ascending: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-up\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    descending: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"arrow-down\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    unsorted: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"up-down\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    settings: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"sliders-horizontal\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    undo: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"cycle-backward\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    redo: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"cycle-forward\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    edit: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"pencil-writing\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    picture: {\n\t      \"fidelity:24\": {\n\t        \"default\": true,\n\t        asset: \"image\",\n\t        size: 24,\n\t        width: 24,\n\t        height: 24,\n\t        tintable: true\n\t      }\n\t    },\n\t    \"size:small\": {\n\t      width: 16,\n\t      height: 16\n\t    },\n\t    \"size:medium\": {\n\t      width: 24,\n\t      height: 24\n\t    },\n\t    \"size:large\": {\n\t      width: 40,\n\t      height: 40\n\t    }\n\t  }\n\t};\n\tconst tokens = {\n\t  core\n\t};\n\tconst marketSVGSprite = `<svg id=\"market-icon-sprite\"><defs/><symbol id=\"market-icon-chevron-down-fidelity-16\" viewBox=\"0 0 16 16\" data-fidelity=\"16\" data-name=\"chevron-down\" data-tintable=\"true\" data-width=\"16\" data-height=\"16\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.70709 11.7071C8.31657 12.0976 7.6834 12.0976 7.29288 11.7071L1.29288 5.7071L2.70709 4.29289L7.99999 9.58578L13.2929 4.29289L14.7071 5.70711L8.70709 11.7071Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-chevron-up-fidelity-16\" viewBox=\"0 0 16 16\" data-fidelity=\"16\" data-name=\"chevron-up\" data-tintable=\"true\" data-width=\"16\" data-height=\"16\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.29291 4.29289C7.68343 3.90237 8.3166 3.90237 8.70712 4.29289L14.7071 10.2929L13.2929 11.7071L8.00001 6.41421L2.70712 11.7071L1.29291 10.2929L7.29291 4.29289Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-chevron-right-fidelity-16\" viewBox=\"0 0 16 16\" data-fidelity=\"16\" data-name=\"chevron-right\" data-tintable=\"true\" data-width=\"16\" data-height=\"16\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.7071 7.29285C12.0976 7.68337 12.0976 8.31654 11.7071 8.70706L5.70711 14.7071L4.29289 13.2928L9.58579 7.99995L4.29289 2.70706L5.70711 1.29285L11.7071 7.29285Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-chevron-left-fidelity-16\" viewBox=\"0 0 16 16\" data-fidelity=\"16\" data-name=\"chevron-left\" data-tintable=\"true\" data-width=\"16\" data-height=\"16\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.29289 7.29285C3.90237 7.68337 3.90237 8.31654 4.29289 8.70706L10.2929 14.7071L11.7071 13.2928L6.41421 7.99995L11.7071 2.70706L10.2929 1.29285L4.29289 7.29285Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-x-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"x\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M19.7069 5.70691L13.4139 11.9999L19.7069 18.2928L18.2928 19.7069L11.9999 13.4139L5.70691 19.7069L4.29285 18.2928L10.5858 11.9999L4.29285 5.70691L5.70691 4.29285L11.9999 10.5858L18.2928 4.29285L19.7069 5.70691Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-plus-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"plus\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M13 11.0049H20V13.0049H13V20.0049H11V13.0049H4V11.0049H11V4.00488H13V11.0049Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-minus-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"minus\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M20 13H4V11H20V13Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-arrow-left-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"arrow-left\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M12.2074 5.20654L6.41445 10.9995H20.0004V12.9995H6.41445L12.2074 18.7925L10.7934 20.2065L3.29336 12.7065C2.90288 12.316 2.90285 11.683 3.29336 11.2925L10.7934 3.79248L12.2074 5.20654Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-arrow-right-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"arrow-right\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M20.7075 11.2925C20.8949 11.4799 21.0004 11.7345 21.0005 11.9995C21.0005 12.2645 20.8948 12.519 20.7075 12.7065L13.2075 20.2065L11.7935 18.7925L17.5864 12.9995H4.00049V10.9995H17.5864L11.7935 5.20654L13.2075 3.79248L20.7075 11.2925Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-arrow-up-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"arrow-up\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M11.9999 3.00049C12.2652 3.00049 12.5194 3.10592 12.707 3.29346L20.207 10.7935L18.7929 12.2075L12.9999 6.41455V20.0005H10.9999V6.41455L5.20697 12.2075L3.79291 10.7935L11.2929 3.29346L11.3661 3.22705C11.5441 3.08122 11.7678 3.00049 11.9999 3.00049Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-arrow-down-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"arrow-down\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M13 17.5864L18.793 11.7935L20.207 13.2075L12.707 20.7075C12.3166 21.0977 11.6834 21.0977 11.293 20.7075L3.79297 13.2075L5.20703 11.7935L11 17.5864V4.00049H13V17.5864Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-ellipsis-horizontal-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"ellipsis-horizontal\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M19 10C20.104 10 21 10.896 21 12C21 13.104 20.104 14 19 14C17.896 14 17 13.104 17 12C17 10.896 17.896 10 19 10Z\" fill=\"currentColor\"/>\n<path d=\"M12 10C13.104 10 14 10.896 14 12C14 13.104 13.104 14 12 14C10.896 14 10 13.104 10 12C10 10.896 10.896 10 12 10Z\" fill=\"currentColor\"/>\n<path d=\"M7 12C7 10.896 6.104 10 5 10C3.896 10 3 10.896 3 12C3 13.104 3.896 14 5 14C6.104 14 7 13.104 7 12Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-hamburger-lines-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"hamburger-lines\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M20.5 20H3.5V18H20.5V20Z\" fill=\"currentColor\"/>\n<path d=\"M20.5 13H3.5V11H20.5V13Z\" fill=\"currentColor\"/>\n<path d=\"M20.5 6H3.5V4H20.5V6Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-radial-spinner-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"radial-spinner\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19 12C19 8.13401 15.866 5 12 5V3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12H5C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-magnifying-glass-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"magnifying-glass\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.11531 5.11531C7.93575 2.29488 12.5087 2.29491 15.3292 5.11531C17.9096 7.69576 18.1267 11.7413 15.9854 14.5714L21.2071 19.793L19.793 21.2071L14.5714 15.9854C11.7413 18.1267 7.69576 17.9096 5.11531 15.3292C2.29491 12.5087 2.29488 7.93575 5.11531 5.11531ZM13.9151 6.52938C11.8757 4.49002 8.56876 4.48999 6.52938 6.52938C4.48999 8.56876 4.49002 11.8757 6.52938 13.9151C8.56878 15.9545 11.8757 15.9545 13.9151 13.9151C15.9545 11.8757 15.9545 8.56878 13.9151 6.52938Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-grip-dots-vertical-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"grip-dots-vertical\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M9 4C10.1046 4 11 4.89543 11 6C11 7.10457 10.1046 8 9 8C7.89543 8 7 7.10457 7 6C7 4.89543 7.89543 4 9 4Z\" fill=\"currentColor\"/>\n<path d=\"M9 10C10.1046 10 11 10.8954 11 12C11 13.1046 10.1046 14 9 14C7.89543 14 7 13.1046 7 12C7 10.8954 7.89543 10 9 10Z\" fill=\"currentColor\"/>\n<path d=\"M9 16C10.1046 16 11 16.8954 11 18C11 19.1046 10.1046 20 9 20C7.89543 20 7 19.1046 7 18C7 16.8954 7.89543 16 9 16Z\" fill=\"currentColor\"/>\n<path d=\"M15 4C16.1046 4 17 4.89543 17 6C17 7.10457 16.1046 8 15 8C13.8954 8 13 7.10457 13 6C13 4.89543 13.8954 4 15 4Z\" fill=\"currentColor\"/>\n<path d=\"M15 10C16.1046 10 17 10.8954 17 12C17 13.1046 16.1046 14 15 14C13.8954 14 13 13.1046 13 12C13 10.8954 13.8954 10 15 10Z\" fill=\"currentColor\"/>\n<path d=\"M15 16C16.1046 16 17 16.8954 17 18C17 19.1046 16.1046 20 15 20C13.8954 20 13 19.1046 13 18C13 16.8954 13.8954 16 15 16Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-exclamation-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"exclamation-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M13.0002 7.00022V12.5002H11.0002V7.00022H13.0002Z\" fill=\"currentColor\"/>\n<path d=\"M12.0002 17.5002C12.8286 17.5002 13.5002 16.8286 13.5002 16.0002C13.5002 15.1718 12.8286 14.5002 12.0002 14.5002C11.1718 14.5002 10.5002 15.1718 10.5002 16.0002C10.5002 16.8286 11.1718 17.5002 12.0002 17.5002Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92892 4.92893C8.83416 1.02369 15.1663 1.02369 19.0715 4.92893C22.9767 8.83418 22.9767 15.1663 19.0715 19.0715C15.1663 22.9768 8.83416 22.9768 4.92892 19.0715C1.02367 15.1663 1.02367 8.83417 4.92892 4.92893ZM17.6574 6.34299C14.5332 3.2188 9.46717 3.2188 6.34298 6.34299C3.21879 9.46719 3.21878 14.5333 6.34298 17.6574C9.46717 20.7816 14.5332 20.7816 17.6574 17.6574C20.7816 14.5333 20.7816 9.46719 17.6574 6.34299Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-exclamation-triangle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"exclamation-triangle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M12 15C12.8284 15.0001 13.5 15.6716 13.5 16.5C13.5 17.3284 12.8284 17.9999 12 18C11.1716 18 10.5 17.3284 10.5 16.5C10.5 15.6716 11.1716 15 12 15Z\" fill=\"currentColor\"/>\n<path d=\"M13 13.5H11V9H13V13.5Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 2C12.3512 2.00003 12.6767 2.18425 12.8574 2.48535L23.3574 19.9854C23.5427 20.2943 23.5476 20.6797 23.3701 20.9932C23.1926 21.3064 22.8601 21.5 22.5 21.5H1.49998C1.13987 21.5 0.807432 21.3064 0.629867 20.9932C0.452361 20.6797 0.457204 20.2943 0.642562 19.9854L11.1426 2.48535L11.2168 2.37793C11.405 2.14097 11.6927 2 12 2ZM3.26659 19.5H20.7334L12 4.94336L3.26659 19.5Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-critical-badge-alert-fidelity-16\" viewBox=\"0 0 16 16\" data-fidelity=\"16\" data-name=\"critical-badge-alert\" data-tintable=\"true\" data-width=\"16\" data-height=\"16\">\n<path d=\"M9 3V8.5H7V3H9Z\" fill=\"currentColor\"/>\n<path d=\"M8 13C8.82843 13 9.5 12.3284 9.5 11.5C9.5 10.6716 8.82843 10 8 10C7.17157 10 6.5 10.6716 6.5 11.5C6.5 12.3284 7.17157 13 8 13Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-checkmark-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"checkmark-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M17.2586 9.15014L11.2586 16.1501C11.0686 16.3718 10.7917 16.4997 10.4998 16.4997C10.2079 16.4997 9.93092 16.3717 9.74099 16.1501L6.74099 12.6501L8.25856 11.3494L10.4998 13.9636L15.741 7.84935L17.2586 9.15014Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92849 4.92846C8.83365 1.02329 15.1658 1.02343 19.0711 4.92846C22.9763 8.8337 22.9763 15.1658 19.0711 19.071C15.1658 22.9763 8.83373 22.9763 4.92849 19.071C1.02346 15.1658 1.02332 8.83362 4.92849 4.92846ZM17.657 6.34252C14.5328 3.21854 9.46667 3.2184 6.34255 6.34252C3.21843 9.46664 3.21858 14.5328 6.34255 17.657C9.46674 20.7812 14.5328 20.7812 17.657 17.657C20.7812 14.5328 20.7812 9.46671 17.657 6.34252Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-i-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"i-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M13.0002 17.0002H11.0002V11.5002H13.0002V17.0002Z\" fill=\"currentColor\"/>\n<path d=\"M12.0002 6.50022C12.8286 6.50022 13.5002 7.17179 13.5002 8.00022C13.5002 8.82865 12.8286 9.50022 12.0002 9.50022C11.1718 9.50022 10.5002 8.82865 10.5002 8.00022C10.5002 7.17179 11.1718 6.50022 12.0002 6.50022Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92893 4.92893C8.83417 1.02369 15.1663 1.02369 19.0715 4.92893C22.9768 8.83418 22.9768 15.1663 19.0715 19.0715C15.1663 22.9768 8.83418 22.9768 4.92893 19.0715C1.02369 15.1663 1.02369 8.83418 4.92893 4.92893ZM17.6574 6.34299C14.5333 3.2188 9.46719 3.2188 6.34299 6.34299C3.2188 9.46719 3.2188 14.5333 6.34299 17.6574C9.46719 20.7816 14.5333 20.7816 17.6574 17.6574C20.7816 14.5333 20.7816 9.46719 17.6574 6.34299Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-no-entry-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"no-entry-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92893 4.92893C8.83417 1.02369 15.1663 1.02369 19.0715 4.92893C22.9768 8.83418 22.9768 15.1663 19.0715 19.0715C15.1663 22.9768 8.83418 22.9768 4.92893 19.0715C1.02369 15.1663 1.02369 8.83418 4.92893 4.92893ZM7.09592 18.3176C10.2344 20.7604 14.7726 20.5423 17.6574 17.6574C20.5423 14.7726 20.7604 10.2344 18.3176 7.09592L7.09592 18.3176ZM16.9035 5.68186C13.7651 3.24 9.22748 3.45851 6.34299 6.34299C3.45851 9.22748 3.24 13.7651 5.68186 16.9035L16.9035 5.68186Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-x-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"x-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M16.7073 8.70725L13.4143 12.0002L16.7073 15.2932L15.2932 16.7073L12.0002 13.4143L8.70725 16.7073L7.29319 15.2932L10.5862 12.0002L7.29319 8.70725L8.70725 7.29319L12.0002 10.5862L15.2932 7.29319L16.7073 8.70725Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92893 4.92893C8.83417 1.02369 15.1663 1.02369 19.0715 4.92893C22.9768 8.83418 22.9768 15.1663 19.0715 19.0715C15.1663 22.9768 8.83418 22.9768 4.92893 19.0715C1.02369 15.1663 1.02369 8.83418 4.92893 4.92893ZM17.6574 6.34299C14.5333 3.2188 9.46719 3.2188 6.34299 6.34299C3.2188 9.46719 3.2188 14.5333 6.34299 17.6574C9.46719 20.7816 14.5333 20.7816 17.6574 17.6574C20.7816 14.5333 20.7816 9.46719 17.6574 6.34299Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-lightning-bolt-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"lightning-bolt\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.904 1.30638C14.2593 0.937255 14.8362 0.896445 15.24 1.21165C15.6437 1.52722 15.7437 2.09692 15.4714 2.53099L11.7644 8.43528L19.3269 11.0544C19.6492 11.1661 19.8928 11.4346 19.9724 11.7663C20.052 12.0979 19.9569 12.4474 19.7204 12.6931L10.0954 22.6931C9.74001 23.0622 9.16228 23.1034 8.75853 22.7878C8.35501 22.4722 8.25586 21.9025 8.52806 21.4685L12.2341 15.5632L4.67259 12.945C4.35037 12.8334 4.10668 12.5647 4.02708 12.2331C3.94753 11.9016 4.04273 11.5521 4.27904 11.3064L13.904 1.30638ZM6.80443 11.5661L15.2224 14.4812L17.1941 12.4324L8.77611 9.51731L6.80443 11.5661Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-dual-rotating-arrows-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"dual-rotating-arrows\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M22 13.5C22 16.8137 19.3137 19.5 16 19.5H7.41406L10.207 22.293L8.79297 23.707L4.29297 19.207C3.90244 18.8165 3.90244 18.1835 4.29297 17.793L8.79297 13.293L10.207 14.707L7.41406 17.5H16C18.2091 17.5 20 15.7091 20 13.5V11H22V13.5Z\" fill=\"currentColor\"/>\n<path d=\"M19.707 4.79297C20.0975 5.18348 20.0975 5.8165 19.707 6.20703L15.207 10.707L13.793 9.29297L16.5859 6.5H8C5.79089 6.5 4.00004 8.2909 4 10.5V13H2V10.5C2.00004 7.18633 4.68632 4.5 8 4.5H16.5859L13.793 1.70703L15.207 0.292969L19.707 4.79297Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-trashcan-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"trashcan\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21 8H19.4258L18.4971 20.0771C18.4568 20.5979 18.0224 21 17.5 21H6.5C5.97761 21 5.54322 20.5979 5.50293 20.0771L4.57422 8H3V6H21V8ZM7.42578 19H16.5742L17.4199 8H6.58008L7.42578 19Z\" fill=\"currentColor\"/>\n<path d=\"M12 2C13.1728 2 14.075 2.29432 14.6973 2.60547C15.0067 2.76017 15.2447 2.91837 15.4121 3.04395C15.4957 3.10665 15.5624 3.16129 15.6113 3.2041C15.6356 3.22536 15.656 3.24395 15.6719 3.25879C15.6798 3.26622 15.6866 3.27368 15.6924 3.2793C15.6953 3.28211 15.6988 3.28477 15.7012 3.28711L15.7041 3.29004L15.7061 3.29102L14.2939 4.70801L14.3047 4.71875C14.3047 4.71875 14.3012 4.71544 14.2949 4.70996C14.2814 4.69814 14.254 4.6744 14.2129 4.64355C14.1304 4.58165 13.9932 4.48978 13.8027 4.39453C13.425 4.20567 12.8272 4 12 4C11.1728 4 10.575 4.20567 10.1973 4.39453C10.0068 4.48978 9.86965 4.58165 9.78711 4.64355C9.746 4.6744 9.71859 4.69814 9.70508 4.70996C9.69882 4.71544 9.69531 4.71875 9.69531 4.71875L9.70605 4.70801L8.29395 3.29199L8.29883 3.28711C8.3012 3.28477 8.30471 3.28211 8.30762 3.2793C8.31342 3.27368 8.3202 3.26622 8.32812 3.25879C8.34396 3.24395 8.36438 3.22536 8.38867 3.2041C8.43761 3.16129 8.50429 3.10665 8.58789 3.04395C8.75534 2.91837 8.99332 2.76017 9.30273 2.60547C9.92502 2.29432 10.8272 2 12 2Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-check-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"check\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M22.7573 5.6499L10.7573 19.6499C10.5673 19.8715 10.2905 19.9995 9.99854 19.9995C9.70678 19.9994 9.42963 19.8714 9.23975 19.6499L3.23975 12.6499L4.75732 11.3491L9.99854 17.4634L21.2397 4.34912L22.7573 5.6499Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-checkmark-fidelity-20\" viewBox=\"0 0 20 20\" data-fidelity=\"20\" data-name=\"checkmark\" data-tintable=\"true\" data-width=\"20\" data-height=\"20\">\n<path d=\"M16.2559 7.15527L9.75586 14.6553C9.56646 14.8737 9.29109 14.9993 9.00195 15C8.71292 15.0006 8.43741 14.8757 8.24707 14.6582L4.74707 10.6582L6.25293 9.3418L8.99609 12.4766L14.7441 5.84473L16.2559 7.15527Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-indeterminate-mark-fidelity-20\" viewBox=\"0 0 20 20\" data-fidelity=\"20\" data-name=\"indeterminate-mark\" data-tintable=\"true\" data-width=\"20\" data-height=\"20\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14 11H6V9H14V11Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-question-mark-circle-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"question-mark-circle\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M12.0002 15.0002C12.8282 15.0002 13.5002 15.6722 13.5002 16.5002C13.5002 17.3282 12.8282 18.0002 12.0002 18.0002C11.1722 18.0002 10.5002 17.3282 10.5002 16.5002C10.5002 15.6722 11.1722 15.0002 12.0002 15.0002Z\" fill=\"currentColor\"/>\n<path d=\"M12.0002 5.75022C14 5.75025 15.5001 7.27933 15.5002 9.21018C15.5002 10.1919 15.0958 11.0185 14.428 11.5959C14.0169 11.9512 13.5257 12.196 13.0002 12.342V13.2502H11.0002V10.5608L11.9377 10.5022C12.4658 10.4693 12.8685 10.3 13.1203 10.0823C13.3531 9.88088 13.5002 9.6051 13.5002 9.21018C13.5001 8.38761 12.8991 7.75025 12.0002 7.75022C11.1019 7.75025 10.4232 8.40143 10.2326 9.39768L8.2678 9.02268C8.58996 7.3367 9.90548 5.75025 12.0002 5.75022Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.92893 4.92893C8.83417 1.02369 15.1663 1.02369 19.0715 4.92893C22.9768 8.83418 22.9768 15.1663 19.0715 19.0715C15.1663 22.9768 8.83418 22.9768 4.92893 19.0715C1.02369 15.1663 1.02369 8.83418 4.92893 4.92893ZM17.6574 6.34299C14.5333 3.2188 9.46719 3.2188 6.34299 6.34299C3.2188 9.46719 3.2188 14.5333 6.34299 17.6574C9.46719 20.7816 14.5333 20.7816 17.6574 17.6574C20.7816 14.5333 20.7816 9.46719 17.6574 6.34299Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-eye-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"eye\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M11.9996 10C13.1041 10 13.9996 10.8954 13.9996 12C13.9996 13.1046 13.1041 14 11.9996 14C10.8952 13.9998 9.99957 13.1045 9.99957 12C9.99957 10.8955 10.8952 10.0002 11.9996 10Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.9996 6C14.3914 6 16.5313 7.0177 18.1509 8.11328C19.7794 9.21488 20.9695 10.4545 21.4839 11.0303C21.9797 11.5851 21.9797 12.4149 21.4839 12.9697C20.9695 13.5455 19.7794 14.7851 18.1509 15.8867C16.5313 16.9823 14.3914 18 11.9996 18C9.60775 17.9999 7.46781 16.9823 5.8482 15.8867C4.21969 14.7851 3.02958 13.5454 2.5152 12.9697C2.01967 12.4149 2.01967 11.5851 2.5152 11.0303L2.7398 10.7852C3.33447 10.1473 4.42327 9.07723 5.8482 8.11328C7.46781 7.01769 9.60775 6.00009 11.9996 6ZM11.9996 8C10.1664 8.00009 8.4205 8.78883 6.9693 9.77051C5.81129 10.5539 4.89704 11.4249 4.34625 12C4.89704 12.5751 5.81129 13.4461 6.9693 14.2295C8.4205 15.2112 10.1664 15.9999 11.9996 16C13.8328 16 15.5786 15.2112 17.0298 14.2295C18.1875 13.4464 19.101 12.5751 19.6519 12C19.101 11.4249 18.1875 10.5536 17.0298 9.77051C15.5786 8.78885 13.8328 8 11.9996 8Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-eye-slash-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"eye-slash\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.7313 5.18311L17.4256 7.65186C17.6775 7.8025 17.9197 7.9572 18.1512 8.11377C19.7798 9.21547 20.9698 10.4551 21.4842 11.0308C21.9799 11.5856 21.9799 12.4154 21.4842 12.9702C20.9697 13.546 19.7796 14.7857 18.1512 15.8872C16.5316 16.9828 14.3916 18.0005 11.9998 18.0005C10.7292 18.0005 9.53036 17.7113 8.44222 17.2778L5.73128 20.1831L4.26839 18.8179L6.57308 16.3472C6.32175 16.1968 6.07942 16.0434 5.84847 15.8872C4.2199 14.7855 3.02989 13.5459 2.51546 12.9702C2.01983 12.4155 2.02 11.5856 2.51546 11.0308L2.74007 10.7856C3.33472 10.1478 4.42357 9.0777 5.84847 8.11377C7.46809 7.01816 9.60797 6.00055 11.9998 6.00049C13.27 6.00049 14.4686 6.28894 15.5565 6.72217L18.2684 3.81787L19.7313 5.18311ZM9.93147 15.6812C10.6002 15.8814 11.2933 16.0005 11.9998 16.0005C13.833 16.0005 15.5789 15.2116 17.0301 14.23C18.1877 13.4469 19.1013 12.5756 19.6522 12.0005C19.1013 11.4254 18.1879 10.5542 17.0301 9.771C16.7086 9.5535 16.3724 9.34588 16.0242 9.15381L9.93147 15.6812ZM11.9998 8.00049C10.1666 8.00056 8.42079 8.7893 6.96956 9.771C5.81159 10.5544 4.8973 11.4254 4.34651 12.0005C4.89735 12.5756 5.81148 13.4466 6.96956 14.23C7.29081 14.4473 7.62757 14.6533 7.97542 14.8452L14.0672 8.31787C13.399 8.11792 12.7059 8.00049 11.9998 8.00049Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-filter-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"filter\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M15.5 19H8.5V17H15.5V19Z\" fill=\"currentColor\"/>\n<path d=\"M19 13H5V11H19V13Z\" fill=\"currentColor\"/>\n<path d=\"M22.5 7H1.5V5H22.5V7Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-dogeared-paper-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"dogeared-paper\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.9993 2.5C12.2637 2.5 12.518 2.60455 12.7054 2.79102L19.2356 9.29102L19.3431 9.41699C19.4388 9.55049 19.5004 9.7065 19.5218 9.87109C19.9137 12.8864 20.9522 16.1627 19.9778 20.71C19.8789 21.1708 19.4707 21.5 18.9993 21.5H4.99931C4.69756 21.4998 4.41171 21.3635 4.22196 21.1289C4.03217 20.8941 3.95852 20.5853 4.02177 20.29C4.72668 16.9999 4.26516 14.55 3.82646 11.9805C3.38478 9.39353 2.97086 6.69437 4.04423 3.20605C4.17329 2.78664 4.56053 2.50023 4.99931 2.5H11.9993ZM5.76005 4.5C5.08508 7.17349 5.39928 9.30841 5.79814 11.6445C6.18571 13.9146 6.65125 16.3776 6.19364 19.5H18.1722C18.7241 16.1752 18.0915 13.7573 17.6643 11H12.0003C11.4481 10.9999 11.0003 10.5522 11.0003 10L10.9993 4.5H5.76005ZM13.0003 9H16.1077L12.9993 5.90625L13.0003 9Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-binoculars-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"binoculars\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.9043 4.14735C16.2755 3.7293 17.8567 4.19602 18.8818 5.62782L18.8848 5.63172L23.001 11.4393C23.6299 12.3245 23.9999 13.4047 24 14.5731C24 17.588 21.5374 20.0173 18.5176 20.0175C15.5171 20.0175 13.0677 17.6196 13.0361 14.6317L12.9727 13.7929C12.9684 13.7511 12.964 13.706 12.959 13.6581C12.9302 13.3831 12.89 13.0176 12.8438 12.6532C12.813 12.4108 12.7174 12.2763 12.6133 12.1932C12.4991 12.1022 12.3026 12.0184 12 12.0184C11.6974 12.0184 11.5009 12.1022 11.3867 12.1932C11.2826 12.2763 11.187 12.4108 11.1562 12.6532C11.11 13.0176 11.0698 13.3831 11.041 13.6581C11.036 13.706 11.0316 13.7511 11.0273 13.7929L10.9639 14.6317C10.9323 17.6196 8.48287 20.0175 5.48242 20.0175C2.46265 20.0173 0 17.588 0 14.5731C0.000145563 13.4047 0.371039 12.3245 1 11.4393L5.11523 5.63172L5.11816 5.62782C6.14332 4.19604 7.72448 3.72931 9.0957 4.14735C10.459 4.56305 11.4997 5.8244 11.5 7.51746C11.5 7.54252 11.499 7.56864 11.4971 7.59364L11.3076 10.0907C11.5339 10.0429 11.7662 10.0184 12 10.0184C12.2335 10.0184 12.4654 10.0431 12.6914 10.0907L12.5029 7.59364C12.501 7.56863 12.5 7.54253 12.5 7.51746C12.5003 5.82438 13.541 4.56306 14.9043 4.14735ZM5.48242 11.1288C3.55121 11.129 2.00038 12.6793 2 14.5731C2 16.4672 3.55098 18.0173 5.48242 18.0175C7.41405 18.0175 8.96582 16.4674 8.96582 14.5731C8.96544 12.6792 7.41382 11.1288 5.48242 11.1288ZM18.5176 11.1288C16.5862 11.1288 15.0345 12.6792 15.0342 14.5731C15.0342 16.4674 16.5859 18.0175 18.5176 18.0175C20.449 18.0173 22 16.4672 22 14.5731C21.9996 12.6793 20.4488 11.129 18.5176 11.1288ZM8.5127 6.06043C7.99194 5.9017 7.28795 6.03243 6.74414 6.79188L5.07617 9.14442C5.21034 9.13463 5.3458 9.1288 5.48242 9.12879C6.94498 9.12879 8.27599 9.70056 9.26074 10.6307L9.49902 7.4911C9.48883 6.70092 9.03531 6.21992 8.5127 6.06043ZM17.2559 6.79188C16.712 6.03241 16.0081 5.9017 15.4873 6.06043C14.9647 6.21992 14.5112 6.7009 14.501 7.4911L14.7393 10.6307C15.724 9.70055 17.055 9.12879 18.5176 9.12879C18.6542 9.1288 18.7897 9.13463 18.9238 9.14442L17.2559 6.79188Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-up-down-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"up-down\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M18.4999 4.5V16.5859L21.2928 13.793L22.7069 15.207L18.2069 19.707C18.0194 19.8946 17.7651 20 17.4999 20C17.2678 20 17.044 19.9193 16.8661 19.7734L16.7928 19.707L12.2928 15.207L13.7069 13.793L16.4999 16.5859V4.5H18.4999Z\" fill=\"currentColor\"/>\n<path d=\"M6.49988 4C6.76509 4 7.01937 4.10544 7.20691 4.29297L11.7069 8.79297L10.2928 10.207L7.49988 7.41406V19.5H5.49988V7.41406L2.70691 10.207L1.29285 8.79297L5.79285 4.29297L5.86609 4.22656C6.04404 4.08073 6.26779 4 6.49988 4Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-sliders-horizontal-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"sliders-horizontal\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M19 16H22V18H19V21H17V13H19V16Z\" fill=\"currentColor\"/>\n<path d=\"M15 18H2V16H15V18Z\" fill=\"currentColor\"/>\n<path d=\"M11 6H22V8H11V11H9V3H11V6Z\" fill=\"currentColor\"/>\n<path d=\"M7 8H2V6H7V8Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-cycle-backward-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"cycle-backward\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M9.20731 4.20703L6.41434 7H15.0003C18.59 7.0002 21.5003 9.91025 21.5003 13.5C21.5003 17.0897 18.59 19.9998 15.0003 20H11.5003V18H15.0003C17.4854 17.9998 19.5003 15.9852 19.5003 13.5C19.5003 11.0148 17.4854 9.0002 15.0003 9H6.41434L9.20731 11.793L7.79324 13.207L3.29324 8.70703C2.90273 8.31652 2.90275 7.6835 3.29324 7.29297L7.79324 2.79297L9.20731 4.20703Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-cycle-forward-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"cycle-forward\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path d=\"M21.2074 7.29297C21.5977 7.68345 21.5977 8.31656 21.2074 8.70703L16.7074 13.207L15.2933 11.793L18.0863 9H9.50037C7.01508 9.00002 5.00037 11.0147 5.00037 13.5C5.00038 15.9853 7.01509 18 9.50037 18H13.0004V20H9.50037C5.91052 20 3.00038 17.0898 3.00037 13.5C3.00037 9.91014 5.91051 7.00002 9.50037 7H18.0863L15.2933 4.20703L16.7074 2.79297L21.2074 7.29297Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-pencil-writing-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"pencil-writing\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3992 3.2097C14.7876 2.90757 15.3468 2.93207 15.7078 3.28099L19.2693 6.72337C19.4653 6.91289 19.5752 7.17434 19.574 7.447C19.5727 7.71968 19.4602 7.98001 19.2625 8.16771L9.18823 17.7253C9.08874 17.8197 8.97043 17.8923 8.84156 17.9392L8.67554 17.9997H19.9998V19.9997H2.99976C2.67357 19.9997 2.36757 19.8401 2.18042 19.573C1.99353 19.3059 1.94888 18.9643 2.0603 18.6579L4.0603 13.1579L4.1062 13.0515C4.15801 12.9482 4.22705 12.8541 4.31128 12.7742L14.324 3.27415L14.3992 3.2097ZM5.85816 14.0632L4.67066 17.3279L7.9607 16.1316L17.1277 7.43529L15.0056 5.38353L5.85816 14.0632Z\" fill=\"currentColor\"/>\n</symbol><symbol id=\"market-icon-image-fidelity-24\" viewBox=\"0 0 24 24\" data-fidelity=\"24\" data-name=\"image\" data-tintable=\"true\" data-width=\"24\" data-height=\"24\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.4316 9.67773C11.7977 9.42433 12.293 9.44176 12.6406 9.73145L18.6406 14.7314C18.964 15.001 19.0837 15.445 18.9404 15.8408C18.797 16.2365 18.4209 16.5 18 16.5H6C5.57909 16.5 5.20298 16.2365 5.05957 15.8408C4.91626 15.445 5.03601 15.001 5.35938 14.7314L11.3594 9.73145L11.4316 9.67773ZM8.7627 14.5H15.2373L12 11.8018L8.7627 14.5Z\" fill=\"currentColor\"/>\n<path d=\"M7 7.5C7.82843 7.5 8.5 8.17157 8.5 9C8.5 9.82843 7.82843 10.5 7 10.5C6.17157 10.5 5.5 9.82843 5.5 9C5.5 8.17157 6.17157 7.5 7 7.5Z\" fill=\"currentColor\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.5 3.5C22.0523 3.5 22.5 3.94772 22.5 4.5V19.5C22.5 20.0523 22.0523 20.5 21.5 20.5H2.5C1.94772 20.5 1.5 20.0523 1.5 19.5V4.5C1.5 3.94772 1.94772 3.5 2.5 3.5H21.5ZM3.5 18.5H20.5V5.5H3.5V18.5Z\" fill=\"currentColor\"/>\n</symbol></svg>\n`;\n\tfunction getDefaultIconFidelity(icon) {\n\t  const defaultFidelity = Object.keys(icon).filter((key) => key.includes(\"fidelity\")).find((fidelity) => {\n\t    return icon[fidelity].default ? icon[fidelity].size : null;\n\t  });\n\t  return defaultFidelity ? icon[defaultFidelity].size : void 0;\n\t}\n\tfunction getFidelityToken(fidelity, icon) {\n\t  return icon[`fidelity:${fidelity}`];\n\t}\n\tfunction isValidTokenFidelity(fidelity, icon) {\n\t  return Boolean(getFidelityToken(fidelity, icon));\n\t}\n\tfunction getMarketIconSVGSymbol(asset, fidelity) {\n\t  return fidelity ? document.querySelector(`[data-name=\"${asset}\"][data-fidelity=\"${fidelity}\"]`) : document.querySelector(`[data-name=\"${asset}\"]`);\n\t}\n\tfunction isValidSpriteFidelity(asset, fidelity) {\n\t  return Boolean(getMarketIconSVGSymbol(asset, fidelity));\n\t}\n\tconst marketIconCss = '@property --icon-width{syntax:\"<length>\";inherits:false;initial-value:24px}@property --icon-height{syntax:\"<length>\";inherits:false;initial-value:24px}:host{display:inline-block;width:var(--icon-width);height:var(--icon-height);color:inherit}:host([tintable]) ::slotted(svg){fill:currentcolor}:host([tintable]) ::slotted(svg) path,:host([tintable]) ::slotted(svg) circle,:host([tintable]) ::slotted(svg) rect,:host([tintable]) ::slotted(svg) polygon,:host([tintable]) ::slotted(svg) ellipse,:host([tintable]) ::slotted(svg) line,:host([tintable]) ::slotted(svg) polyline{fill:inherit}::slotted(svg){display:block;width:100%;height:100%}';\n\tconst MarketIconStyle0 = marketIconCss;\n\tconst marketIconSVGSpriteID = \"#market-icon-sprite\";\n\tconst MarketIcon = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.tintable = true;\n\t    this.name = void 0;\n\t    this.fidelity = void 0;\n\t  }\n\t  cloneSymbol(symbol, assetName, width, height) {\n\t    this.el.querySelectorAll(\"svg\").forEach((svg2) => svg2.remove());\n\t    const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n\t    svg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n\t    svg.dataset.name = assetName;\n\t    svg.setAttribute(\"viewBox\", symbol === null || symbol === void 0 ? void 0 : symbol.getAttribute(\"viewBox\"));\n\t    width && svg.setAttribute(\"width\", `${width}`);\n\t    height && svg.setAttribute(\"height\", `${height}`);\n\t    svg.innerHTML = symbol.innerHTML;\n\t    this.el.appendChild(svg);\n\t  }\n\t  getDimensions(symbol, fidelityToken, currentFidelity) {\n\t    var _a, _b, _c, _d;\n\t    const dimensions = (symbol === null || symbol === void 0 ? void 0 : symbol.getAttribute(\"viewBox\").split(/\\s/).map((d) => Number.parseInt(d, 10))) || [];\n\t    const width = (_b = (_a = fidelityToken === null || fidelityToken === void 0 ? void 0 : fidelityToken.width) !== null && _a !== void 0 ? _a : dimensions[2]) !== null && _b !== void 0 ? _b : currentFidelity;\n\t    const height = (_d = (_c = fidelityToken === null || fidelityToken === void 0 ? void 0 : fidelityToken.height) !== null && _c !== void 0 ? _c : dimensions[3]) !== null && _d !== void 0 ? _d : currentFidelity;\n\t    return { width, height };\n\t  }\n\t  componentWillLoad() {\n\t    var _a;\n\t    let assetName, currentFidelity, defaultFidelity, fidelityToken, symbol;\n\t    const documentSVGSprite = document.querySelector(marketIconSVGSpriteID);\n\t    if (!documentSVGSprite) {\n\t      const template = document.createElement(\"div\");\n\t      template.innerHTML = marketSVGSprite;\n\t      const sprite = template.querySelector(marketIconSVGSpriteID);\n\t      sprite.style.display = \"none\";\n\t      document.body.append(sprite);\n\t      template.remove();\n\t    }\n\t    const iconToken = tokens.core.icon[this.name];\n\t    if (iconToken) {\n\t      defaultFidelity = getDefaultIconFidelity(iconToken);\n\t      currentFidelity = isValidTokenFidelity(this.fidelity, iconToken) ? this.fidelity : defaultFidelity;\n\t      fidelityToken = getFidelityToken(currentFidelity, iconToken);\n\t      assetName = fidelityToken === null || fidelityToken === void 0 ? void 0 : fidelityToken.asset;\n\t    } else {\n\t      assetName = this.name;\n\t      symbol = getMarketIconSVGSymbol(assetName, this.fidelity);\n\t      defaultFidelity = Number.parseInt(symbol === null || symbol === void 0 ? void 0 : symbol.dataset.fidelity, 10);\n\t      currentFidelity = isValidSpriteFidelity(assetName, this.fidelity) ? this.fidelity : defaultFidelity;\n\t    }\n\t    symbol = getMarketIconSVGSymbol(assetName, currentFidelity);\n\t    const { width, height } = this.getDimensions(symbol, fidelityToken, currentFidelity);\n\t    if (symbol) {\n\t      this.cloneSymbol(symbol, assetName, width, height);\n\t    }\n\t    this.width = width;\n\t    this.height = height;\n\t    this.tintable = (_a = fidelityToken === null || fidelityToken === void 0 ? void 0 : fidelityToken.tintable) !== null && _a !== void 0 ? _a : true;\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"1f28e280a4cc6ddb68068fb535412a568ae821e4\", class: \"market-icon\", tintable: this.tintable, style: {\n\t      \"--icon-width\": `${this.width}px`,\n\t      \"--icon-height\": `${this.height}px`\n\t    } }, index.h(\"slot\", { key: \"ea3c968d3a36a56ef20028db47078546a96633ff\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketIcon.style = MarketIconStyle0;\n\tmarketIcon_cjs_entry.market_icon = MarketIcon;\n\treturn marketIcon_cjs_entry;\n}\n\nvar marketInlineSectionHeader_cjs_entry = {};\n\nvar hasRequiredMarketInlineSectionHeader_cjs_entry;\n\nfunction requireMarketInlineSectionHeader_cjs_entry () {\n\tif (hasRequiredMarketInlineSectionHeader_cjs_entry) return marketInlineSectionHeader_cjs_entry;\n\thasRequiredMarketInlineSectionHeader_cjs_entry = 1;\n\tObject.defineProperty(marketInlineSectionHeader_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketInlineSectionHeaderCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;justify-content:space-between;align-items:center}\";\n\tconst MarketInlineSectionHeaderStyle0 = marketInlineSectionHeaderCss;\n\tconst MarketInlineSectionHeader = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"8affdc43a2a623c439ca239d257a4e5127c5f76b\" }, index.h(\"slot\", { key: \"d3425b6c26239524067478d389c4fa42b4897d9f\" }), index.h(\"slot\", { key: \"a0b3a0ace75deff470ca111c8e91baedd600c033\", name: \"trailing-accessory\" }));\n\t  }\n\t};\n\tMarketInlineSectionHeader.style = MarketInlineSectionHeaderStyle0;\n\tmarketInlineSectionHeader_cjs_entry.market_inline_section_header = MarketInlineSectionHeader;\n\treturn marketInlineSectionHeader_cjs_entry;\n}\n\nvar marketInlineStatus_cjs_entry = {};\n\nvar hasRequiredMarketInlineStatus_cjs_entry;\n\nfunction requireMarketInlineStatus_cjs_entry () {\n\tif (hasRequiredMarketInlineStatus_cjs_entry) return marketInlineStatus_cjs_entry;\n\thasRequiredMarketInlineStatus_cjs_entry = 1;\n\tObject.defineProperty(marketInlineStatus_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst getSuccessIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"icon\", width: \"20\", height: \"20\", viewBox: \"-2 -2 26 26\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M3 12C3 7.03 7.03 3 12 3C16.97 3 21 7.03 21 12C21 16.97 16.97 21 12 21C7.03 21 3 16.97 3 12ZM5 12C5 15.86 8.14 19 12 19C15.86 19 19 15.86 19 12C19 8.14 15.86 5 12 5C8.14 5 5 8.14 5 12ZM8.71005 10.8L11 13.09L15.3101 8.80005L16.72 10.21L11.72 15.21C11.52 15.4 11.27 15.5 11.01 15.5C10.75 15.5 10.5 15.41 10.3 15.21L7.30005 12.21L8.71005 10.8Z\" })\n\t);\n\tconst getInfoIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"icon\", width: \"20\", height: \"20\", viewBox: \"-2 -2 26 26\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12 3C7.04 3 3 7.04 3 12C3 16.96 7.04 21 12 21C16.96 21 21 16.96 21 12C21 7.04 16.96 3 12 3ZM12 19C8.14 19 5 15.86 5 12C5 8.14 8.14 5 12 5C15.86 5 19 8.14 19 12C19 15.86 15.86 19 12 19ZM11 10.5V17H13V10.5H11ZM13.25 8.25C13.25 8.94036 12.6904 9.5 12 9.5C11.3096 9.5 10.75 8.94036 10.75 8.25C10.75 7.55964 11.3096 7 12 7C12.6904 7 13.25 7.55964 13.25 8.25Z\" })\n\t);\n\tconst getWarningIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"icon\", width: \"20\", height: \"20\", viewBox: \"-2 -2 26 26\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { d: \"M11 9.00005H13V14.5H11V9.00005Z\" }),\n\t  index.h(\"path\", { d: \"M12 18C12.6904 18 13.25 17.4404 13.25 16.75C13.25 16.0596 12.6904 15.5 12 15.5C11.3096 15.5 10.75 16.0596 10.75 16.75C10.75 17.4404 11.3096 18 12 18Z\" }),\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12.866 2.17944C12.6874 1.87004 12.3573 1.67944 12 1.67944C11.6427 1.67944 11.3126 1.87004 11.134 2.17944L1.13397 19.5C0.955342 19.8094 0.955342 20.1905 1.13397 20.5C1.31261 20.8094 1.64273 21 2 21H22C22.3573 21 22.6874 20.8094 22.866 20.5C23.0447 20.1905 23.0447 19.8094 22.866 19.5L12.866 2.17944ZM12 4.67944L20.268 19H3.73205L12 4.67944Z\" })\n\t);\n\tconst getCriticalIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"icon\", width: \"20\", height: \"20\", viewBox: \"-2 -2 26 26\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M12 21C16.96 21 21 16.96 21 12C21 7.04 16.96 3 12 3C7.04 3 3 7.04 3 12C3 16.96 7.04 21 12 21ZM12 5C15.86 5 19 8.14 19 12C19 15.86 15.86 19 12 19C8.14 19 5 15.86 5 12C5 8.14 8.14 5 12 5ZM12 17C12.6904 17 13.25 16.4404 13.25 15.75C13.25 15.0596 12.6904 14.5 12 14.5C11.3096 14.5 10.75 15.0596 10.75 15.75C10.75 16.4404 11.3096 17 12 17ZM11 7H13V13.5H11V7Z\" })\n\t);\n\tconst marketInlineStatusCss = ':host{display:flex;align-items:flex-start;font-weight:var(--inline-status-normal-size-text-weight);font-size:var(--inline-status-normal-size-text-size);font-family:var(--inline-status-normal-size-text-font-family);line-height:var(--inline-status-normal-size-text-leading);letter-spacing:var(--inline-status-normal-size-text-tracking);text-transform:var(--inline-status-normal-size-text-case)}:host .icon,:host ::slotted([slot=\"icon\"]){flex-shrink:0;margin-right:var(--inline-status-normal-size-spacing-horizontal)}:host([variant=\"info\"]){color:var(--core-text-20-color)}:host([variant=\"info\"]) .icon,:host([variant=\"info\"]) ::slotted([slot=\"icon\"]){fill:var(--core-fill-20-color)}:host([variant=\"critical\"]){color:var(--inline-status-error-variant-icon-color)}:host([variant=\"critical\"]) .icon,:host([variant=\"critical\"]) ::slotted([slot=\"icon\"]){fill:var(--inline-status-error-variant-text-color)}:host([variant=\"success\"]){color:var(--inline-status-success-variant-icon-color)}:host([variant=\"success\"]) .icon,:host([variant=\"success\"]) ::slotted([slot=\"icon\"]){fill:var(--inline-status-success-variant-text-color)}:host([variant=\"warning\"]){color:var(--inline-status-warning-variant-icon-color)}:host([variant=\"warning\"]) .icon,:host([variant=\"warning\"]) ::slotted([slot=\"icon\"]){fill:var(--inline-status-warning-variant-icon-color)}';\n\tconst MarketInlineStatusStyle0 = marketInlineStatusCss;\n\tconst MarketInlineStatus = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.variant = \"info\";\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"b688016e9d93212a99df888ed82c0cff265d90e8\", class: \"market-inline-status\" }, index.h(\"slot\", { key: \"abadf16acfcd3e81ac8201882809104cae56e2b3\", name: \"icon\" }, this.variant === \"info\" && getInfoIcon(), this.variant === \"success\" && getSuccessIcon(), this.variant === \"warning\" && getWarningIcon(), this.variant === \"critical\" && getCriticalIcon()), index.h(\"slot\", { key: \"d2dcaf1059661ec0ff1b15a9db75484cf498499a\" }));\n\t  }\n\t};\n\tMarketInlineStatus.style = MarketInlineStatusStyle0;\n\tmarketInlineStatus_cjs_entry.market_inline_status = MarketInlineStatus;\n\treturn marketInlineStatus_cjs_entry;\n}\n\nvar marketInputPassword_cjs_entry = {};\n\nvar forms08db29a3 = {};\n\nvar hasRequiredForms08db29a3;\n\nfunction requireForms08db29a3 () {\n\tif (hasRequiredForms08db29a3) return forms08db29a3;\n\thasRequiredForms08db29a3 = 1;\n\tfunction submitFormImplicitly(trigger) {\n\t  const form = trigger.closest(\"form\");\n\t  if (form) {\n\t    const submitButton = form.querySelector('[type=\"submit\"]:not(disabled)');\n\t    if (submitButton) {\n\t      submitButton.click();\n\t    }\n\t  }\n\t}\n\tforms08db29a3.submitFormImplicitly = submitFormImplicitly;\n\treturn forms08db29a3;\n}\n\nvar hasRequiredMarketInputPassword_cjs_entry;\n\nfunction requireMarketInputPassword_cjs_entry () {\n\tif (hasRequiredMarketInputPassword_cjs_entry) return marketInputPassword_cjs_entry;\n\thasRequiredMarketInputPassword_cjs_entry = 1;\n\tObject.defineProperty(marketInputPassword_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst forms = requireForms08db29a3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketInputPasswordCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--focus-ring-color:color-mix(in srgb, var(--core-focus-ring-color) 100%, transparent);display:block}:host ::slotted(input:focus-visible){outline:none}.toggle{display:flex;flex-shrink:0;justify-content:center;align-items:center;width:100%;height:100%;margin:0;border:none;background:transparent;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.toggle svg{display:block;fill:var(--core-text-20-color)}.toggle:focus-visible{border-radius:var(--core-radius-10);outline:var(--core-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:calc(var(--core-focus-ring-border-size) * -1)}\";\n\tconst MarketInputPasswordStyle0 = marketInputPasswordCss;\n\tconst MarketInputPassword = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.inputId = void 0;\n\t    this.name = void 0;\n\t    this.value = void 0;\n\t    this.placeholder = void 0;\n\t    this.maxlength = void 0;\n\t    this.minlength = void 0;\n\t    this.size = \"large\";\n\t    this.readonly = void 0;\n\t    this.required = void 0;\n\t    this.disabled = void 0;\n\t    this.focused = void 0;\n\t    this.invalid = void 0;\n\t    this.autocomplete = void 0;\n\t    this.inputmode = void 0;\n\t    this.type = \"password\";\n\t  }\n\t  /**\n\t   * Sets focus styling on `<market-input-password>`. Toggles focus on the inner `<input>` if true, and blurs focus if false.\n\t   */\n\t  async setFocus(value = true) {\n\t    if (this.disabled || this.readonly) {\n\t      return;\n\t    }\n\t    this.focused = value;\n\t    await this.marketInputText.setFocus(value);\n\t  }\n\t  registerSlottedInput() {\n\t    var _a;\n\t    this.slottedInput = this.el.querySelector(\"input[slot=input]\");\n\t    if (this.slottedInput && ((_a = this.marketInputText) === null || _a === void 0 ? void 0 : _a.registerSlottedInput)) {\n\t      this.marketInputText.registerSlottedInput(this.slottedInput);\n\t    }\n\t  }\n\t  togglePasswordVisibility(e) {\n\t    this.type = this.type === \"password\" ? \"text\" : \"password\";\n\t    e.stopPropagation();\n\t  }\n\t  handleKeyDown(e) {\n\t    if (e.key === \"Enter\" && !e.isComposing) {\n\t      forms.submitFormImplicitly(this.el);\n\t    }\n\t  }\n\t  renderSvgHidden() {\n\t    return index.h(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M16.5481 17.9609L16.55 17.96L19.3 20.71L20.71 19.3L18.31 16.9C19.81 15.78 21.06 14.27 21.91 12.43C22.03 12.16 22.03 11.85 21.91 11.59C20.03 7.52004 16.23 5.00004 12 5.00004C10.39 5.00004 8.85 5.37004 7.45 6.04004L4.71 3.29004L3.29361 4.70643L14.0183 15.4311L14.02 15.43L15.01 16.42L15.008 16.4208L16.5481 17.9609ZM11.49 10.07L13.93 12.51C13.97 12.35 14 12.18 14 12C14 10.9 13.1 10 12 10C11.82 10 11.65 10.03 11.49 10.07ZM15.43 14.02L16.86 15.45C18.09 14.6 19.14 13.43 19.89 12C18.28 8.90004 15.29 7.00004 12 7.00004C10.95 7.00004 9.94 7.21004 8.99 7.58004L9.98 8.57004C10.57 8.22004 11.26 8.00004 12 8.00004C14.21 8.00004 16 9.79004 16 12C16 12.74 15.79 13.43 15.43 14.02Z\" }), index.h(\"path\", { d: \"M11.7512 15.9924L8.0076 12.2488C8.13092 14.2606 9.73948 15.8691 11.7512 15.9924Z\" }), index.h(\"path\", { d: \"M5.61696 9.8582C5.03307 10.4841 4.52321 11.2015 4.11 12C5.72 15.1 8.71 17 12 17C12.244 17 12.4859 16.9887 12.7254 16.9666L14.4639 18.7052C13.6686 18.8984 12.8439 19 12 19C7.77 19 3.97 16.48 2.09 12.42C1.97 12.16 1.97 11.85 2.09 11.58C2.63958 10.3904 3.35638 9.33864 4.19985 8.44109L5.61696 9.8582Z\" }));\n\t  }\n\t  renderSvgVisible() {\n\t    return index.h(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M2.09 11.58C3.97 7.52 7.77 5 12 5C16.23 5 20.03 7.52 21.91 11.58C22.03 11.84 22.03 12.15 21.91 12.42C20.03 16.48 16.23 19 12 19C7.77 19 3.97 16.48 2.09 12.42C1.97 12.16 1.97 11.85 2.09 11.58ZM4.11 12C5.72 15.1 8.71 17 12 17C15.29 17 18.28 15.1 19.89 12C18.28 8.9 15.29 7 12 7C8.71 7 5.72 8.9 4.11 12ZM8 12C8 9.79 9.79 8 12 8C14.21 8 16 9.79 16 12C16 14.21 14.21 16 12 16C9.79 16 8 14.21 8 12ZM10 12C10 13.1 10.9 14 12 14C13.1 14 14 13.1 14 12C14 10.9 13.1 10 12 10C10.9 10 10 10.9 10 12Z\" }));\n\t  }\n\t  render() {\n\t    const MarketInputTextTagName = index$1.getNamespacedTagFor(\"market-input-text\");\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return index.h(index.Host, { key: \"d7e9f3190be59b6156537a04534d91c51091a354\", class: \"market-input-password\", onKeyDown: (e) => {\n\t      this.handleKeyDown(e);\n\t    } }, index.h(MarketInputTextTagName, {\n\t      key: \"3e37d33593a455992abbdd82b3897cd509955ccb\",\n\t      type: this.type,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.marketInputText = el,\n\t      onBlur: () => {\n\t      },\n\t      onClick: () => {\n\t      },\n\t      onFocus: () => {\n\t      },\n\t      inputId: this.inputId,\n\t      name: this.name,\n\t      placeholder: this.placeholder,\n\t      maxlength: this.maxlength,\n\t      minlength: this.minlength,\n\t      size: this.size,\n\t      value: this.value,\n\t      readonly: this.readonly,\n\t      required: this.required,\n\t      disabled: this.disabled,\n\t      invalid: this.invalid,\n\t      autocomplete: this.autocomplete,\n\t      inputmode: this.inputmode\n\t    }, index.h(\"slot\", { key: \"49fc21c97a9d6898c2956854234ab65ce0f0f081\" }), index.h(\"slot\", {\n\t      key: \"4d2bcb29b4247587da7f80ad46d9affabad779d6\",\n\t      name: \"input\",\n\t      onSlotchange: () => this.registerSlottedInput(),\n\t      // if there is a slotted input, assign it to market-input-text's \"input\" slot\n\t      slot: this.slottedInput ? \"input\" : \"\"\n\t    }), index.h(MarketAccessoryTagName, { key: \"5afda1220f27bacf11b1da552efcd75923b25a59\", slot: \"trailing-accessory\", size: \"image\" }, index.h(\"button\", { key: \"5ff1cc4a10629896534bf03ebf72c33c864dd372\", class: \"toggle\", onClick: (e) => {\n\t      this.togglePasswordVisibility(e);\n\t    }, onKeyDown: (e) => {\n\t      e.stopPropagation();\n\t    } }, this.type === \"password\" && this.renderSvgHidden(), this.type === \"text\" && this.renderSvgVisible()))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketInputPassword.style = MarketInputPasswordStyle0;\n\tmarketInputPassword_cjs_entry.market_input_password = MarketInputPassword;\n\treturn marketInputPassword_cjs_entry;\n}\n\nvar marketInputSearch_cjs_entry = {};\n\nvar autocompleteD3ecf142 = {};\n\nvar hasRequiredAutocompleteD3ecf142;\n\nfunction requireAutocompleteD3ecf142 () {\n\tif (hasRequiredAutocompleteD3ecf142) return autocompleteD3ecf142;\n\thasRequiredAutocompleteD3ecf142 = 1;\n\tvar AUTOCOMPLETE;\n\t(function(AUTOCOMPLETE2) {\n\t  AUTOCOMPLETE2[\"TRUE\"] = \"true\";\n\t  AUTOCOMPLETE2[\"FALSE\"] = \"false\";\n\t  AUTOCOMPLETE2[\"ON\"] = \"on\";\n\t  AUTOCOMPLETE2[\"OFF\"] = \"off\";\n\t})(AUTOCOMPLETE || (AUTOCOMPLETE = {}));\n\tfunction autocompleteWatcher(newValue) {\n\t  switch (newValue) {\n\t    case \"\":\n\t    case true:\n\t    case AUTOCOMPLETE.ON:\n\t    case AUTOCOMPLETE.TRUE:\n\t      return AUTOCOMPLETE.ON;\n\t    case false:\n\t    // gotta check for exact bc empty strings are falsey, ಠ_ಠ thanks javascript\n\t    case AUTOCOMPLETE.OFF:\n\t    case AUTOCOMPLETE.FALSE:\n\t      return AUTOCOMPLETE.OFF;\n\t    default:\n\t      return newValue;\n\t  }\n\t}\n\tautocompleteD3ecf142.autocompleteWatcher = autocompleteWatcher;\n\treturn autocompleteD3ecf142;\n}\n\nvar hasRequiredMarketInputSearch_cjs_entry;\n\nfunction requireMarketInputSearch_cjs_entry () {\n\tif (hasRequiredMarketInputSearch_cjs_entry) return marketInputSearch_cjs_entry;\n\thasRequiredMarketInputSearch_cjs_entry = 1;\n\tObject.defineProperty(marketInputSearch_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst autocomplete = requireAutocompleteD3ecf142();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst forms = requireForms08db29a3();\n\tconst marketInputSearchCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-grow:1;flex-direction:row;align-items:center;border-radius:var(--search-border-radius);background-color:var(--search-normal-state-background-color, var(--field-normal-state-background-color));color:var(--search-normal-state-input-color);box-shadow:inset 0 0 0 var(--search-border-size) var(--search-normal-state-border-color);font-weight:var(--search-input-weight);font-size:var(--search-input-size);font-family:var(--search-input-font-family);line-height:var(--search-input-leading);letter-spacing:var(--search-input-tracking);text-transform:var(--search-input-case);cursor:text;transition-property:flex, padding}:host(:hover){box-shadow:inset 0 0 0 var(--search-border-size) var(--search-normal-state-border-color)}:host([focused]){box-shadow:inset 0 0 0 var(--search-focused-state-border-size) var(--search-focused-state-border-color)}:host([size=\"medium\"]),:host([variant=\"medium\"]){gap:var(--search-large-size-spacing-horizontal);padding:var(--search-large-size-padding-vertical) var(--search-large-size-padding-horizontal)}:host([size=\"small\"]),:host([variant=\"small\"]){gap:var(--search-normal-size-spacing-horizontal);padding:var(--search-normal-size-padding-vertical) var(--search-normal-size-padding-horizontal)}input,::slotted(input){display:block;width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;outline:none;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit}input::-moz-placeholder,::slotted(input::-moz-placeholder){color:var(--search-hint-text-color)}input::placeholder,::slotted(input::placeholder){color:var(--search-hint-text-color)}button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;border:none;background-color:transparent;cursor:pointer}button svg{display:block;color:inherit;fill:currentcolor}.input-container{flex:1}.leading-accessory{color:var(--search-normal-state-leading-icon-color)}.clear-button{color:var(--search-normal-state-trailing-icon-color)}.hidden{display:none}:host([compact]:not([focused])){flex:0;cursor:pointer;transition-timing-function:var(--core-animation-exit-transition-easing);transition-duration:var(--core-animation-exit-transition-fast-speed-duration);animation-name:market-input-search-compact-exit;animation-duration:var(--core-animation-exit-transition-fast-speed-duration)}:host([compact]:not([focused])) .leading-accessory{pointer-events:none}:host([compact]:not([focused])) .input-container{position:absolute;width:0;pointer-events:none}:host([compact]:not([focused])) ::slotted([slot=\"trailing-accessory\"]),:host([compact]:not([focused])) .clear-button{display:none}:host([size=\"medium\"][compact]:not([focused])),:host([variant=\"medium\"][compact]:not([focused])){padding:var(--search-large-size-padding-vertical)}:host([size=\"small\"][compact]:not([focused])),:host([variant=\"small\"][compact]:not([focused])){padding:var(--search-normal-size-padding-vertical)}:host([compact][focused]){flex:1;transition-timing-function:var(--core-animation-enter-transition-easing);transition-duration:var(--core-animation-enter-transition-fast-speed-duration);animation-name:market-input-search-compact-enter;animation-duration:var(--core-animation-enter-transition-fast-speed-duration)}:host([compact]:not([focused]):hover){border-color:var(--core-fill-30-color);background-color:var(--core-fill-40-color)}:host(:not([value=\"\"])) ::slotted([slot=\"trailing-accessory\"]){display:none}:host([disabled]){color:var(--search-disabled-state-input-color);box-shadow:inset 0 0 0 var(--search-border-size) var(--search-disabled-state-border-color);cursor:not-allowed}:host([disabled]) .leading-accessory{color:var(--search-disabled-state-leading-icon-color)}:host([disabled]) .clear-button{color:var(--search-disabled-state-trailing-icon-color)}:host(.preload){transition:none !important;}input:-webkit-autofill,::slotted(input:-webkit-autofill){box-shadow:0 0 0 var(--search-input-leading) var(--search-normal-state-background-color) inset !important;-webkit-text-fill-color:var(--search-normal-state-input-color) !important;caret-color:var(--search-normal-state-input-color)}:host input:-webkit-autofill,:host ::slotted(input:-webkit-autofill){animation-name:market-input-autofill-start}:host input:not(:-webkit-autofill),:host ::slotted(input:not(:-webkit-autofill)){animation-name:market-input-autofill-cancel}.input-container:focus-visible,input:focus-visible,::slotted(input:focus-visible){outline:none}';\n\tconst MarketInputSearchStyle0 = marketInputSearchCss;\n\tconst InputText = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInputSearchCleared = index.createEvent(this, \"marketInputSearchCleared\", 7);\n\t    this.marketInputSearchValueChange = index.createEvent(this, \"marketInputSearchValueChange\", 7);\n\t    this.marketInputSearchFocus = index.createEvent(this, \"marketInputSearchFocus\", 7);\n\t    this.marketInternalInputSearchCompactAnimation = index.createEvent(this, \"marketInternalInputSearchCompactAnimation\", 7);\n\t    this.marketInputSearchDidLoad = index.createEvent(this, \"marketInputSearchDidLoad\", 7);\n\t    if (hostRef.$hostElement$[\"s-ei\"]) {\n\t      this.internals = hostRef.$hostElement$[\"s-ei\"];\n\t    } else {\n\t      this.internals = hostRef.$hostElement$.attachInternals();\n\t      hostRef.$hostElement$[\"s-ei\"] = this.internals;\n\t    }\n\t    this.value = \"\";\n\t    this.placeholder = \"\";\n\t    this.maxlength = void 0;\n\t    this.size = \"medium\";\n\t    this.variant = \"medium\";\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.autofocus = false;\n\t    this.autocomplete = true;\n\t    this.name = void 0;\n\t    this.inputAriaLabel = \"Search\";\n\t    this.clearButtonAriaLabel = \"Clear\";\n\t    this.searchIconButtonAriaLabel = \"Search icon\";\n\t    this.compact = false;\n\t  }\n\t  /**\n\t   * This toggles focus on the inner `<input>`.\n\t   * When input is about to receive focus, force a `tabindex=\"-1\"` on the `<Host>`.\n\t   * Since the focus is already on the inner `<input>`, tabbing into `<Host>` is redundant.\n\t   * When the input loses is focus, the previous `tabindex` value,\n\t   * presumably assigned by the consumer, is assigned back.\n\t   */\n\t  focusedWatcher(newValue, oldValue) {\n\t    if (newValue === oldValue) {\n\t      return;\n\t    }\n\t    if (newValue) {\n\t      this.nativeInputEl.focus();\n\t    }\n\t  }\n\t  disabledWatcher(newValue) {\n\t    if (newValue && this.focused) {\n\t      this.setFocus(false);\n\t    }\n\t  }\n\t  autocompleteWatcher(newValue) {\n\t    this._autocomplete = autocomplete.autocompleteWatcher(newValue);\n\t  }\n\t  /**\n\t   * Sets focus styling on `<market-input-search>`;\n\t   * toggles focus on the native `<input>` depending on the value passed\n\t   * @param value new `focused` value\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.disabled && value || this.focused === value) {\n\t      return Promise.resolve();\n\t    }\n\t    const { defaultPrevented } = this.marketInputSearchFocus.emit(value);\n\t    if (!defaultPrevented) {\n\t      this.focused = value;\n\t      if (!value && this.nativeInputEl) {\n\t        this.nativeInputEl.blur();\n\t      }\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Clears the current input value.\n\t   */\n\t  clearInput() {\n\t    const clearedEvent = this.marketInputSearchCleared.emit();\n\t    if (clearedEvent.defaultPrevented || this.value === \"\") {\n\t      return Promise.resolve();\n\t    }\n\t    const valueChangeEvent = this.marketInputSearchValueChange.emit({\n\t      current: \"\",\n\t      prevValue: this.value,\n\t      originalEvent: null,\n\t      value: \"\"\n\t    });\n\t    if (!valueChangeEvent.defaultPrevented) {\n\t      this.value = \"\";\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * When the clear (X) button is clicked\n\t   */\n\t  async handleClearButtonClicked() {\n\t    await this.clearInput();\n\t    this.clearButtonClicked = true;\n\t  }\n\t  /**\n\t   * Handle value change from an <input> event\n\t   */\n\t  handleValueChange(e) {\n\t    const target = e.target;\n\t    if (!target) {\n\t      return;\n\t    }\n\t    const { defaultPrevented } = this.marketInputSearchValueChange.emit({\n\t      current: target.value,\n\t      prevValue: this.value,\n\t      originalEvent: e,\n\t      value: target.value\n\t    });\n\t    if (defaultPrevented) {\n\t      e.preventDefault();\n\t      return;\n\t    }\n\t    this.updateElementInternals();\n\t    this.value = target.value;\n\t  }\n\t  /**\n\t   * Handles `.input-container` animation changes\n\t   */\n\t  handleAnimation(e) {\n\t    if (!this.compact) {\n\t      return;\n\t    }\n\t    if (e.animationName === \"market-input-search-compact-enter\" && e.type === \"animationstart\" && this.focused) {\n\t      this.marketInternalInputSearchCompactAnimation.emit(e.type);\n\t      window.requestAnimationFrame(() => {\n\t        var _a;\n\t        (_a = this.nativeInputEl) === null || _a === void 0 ? void 0 : _a.focus();\n\t      });\n\t    } else if (e.animationName === \"market-input-search-compact-exit\" && e.type === \"animationend\") {\n\t      this.marketInternalInputSearchCompactAnimation.emit(e.type);\n\t    }\n\t  }\n\t  handleAccessoryClicked(e, isBackIcon) {\n\t    if (isBackIcon) {\n\t      e.stopPropagation();\n\t      this.setFocus(false);\n\t    }\n\t  }\n\t  handleKeyDown(e) {\n\t    if (e.key === \"Enter\" && !e.isComposing) {\n\t      forms.submitFormImplicitly(this.el);\n\t    }\n\t  }\n\t  /**\n\t   * Allows passing an alternative light DOM input.\n\t   */\n\t  registerSlottedInput(slottedInput) {\n\t    var _a;\n\t    this.slottedInputEl = slottedInput || // input slotted into market-input-search\n\t    this.el.querySelector(\"input[slot=input]\") || // input slotted into a higher-level component that uses market-input-search\n\t    // (e.g. market-input-password)\n\t    ((_a = this.el.getRootNode().host) === null || _a === void 0 ? void 0 : _a.querySelector(\"input[slot=input]\"));\n\t    if (this.slottedInputEl) {\n\t      this.slottedInputEl.addEventListener(\"input\", (e) => this.handleValueChange(e));\n\t      this.slottedInputEl.addEventListener(\"focus\", () => this.setFocus());\n\t      this.slottedInputEl.addEventListener(\"blur\", () => this.setFocus(false));\n\t      this.slottedInputEl.addEventListener(\"keydown\", (e) => this.handleKeyDown(e));\n\t      this.nativeInputEl = this.slottedInputEl;\n\t    }\n\t  }\n\t  /**\n\t   * TODO: This should be a common util. -antonn\n\t   */\n\t  updateSharedInputProps() {\n\t    const prevSharedProps = Object.assign({}, this.sharedProps);\n\t    this.sharedProps = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this._autocomplete && { autocomplete: this._autocomplete }), this.autofocus && { autofocus: this.autofocus }), this.disabled && { disabled: this.disabled }), this.maxlength >= 0 && { maxlength: this.maxlength }), this.name && { name: this.name }), this.placeholder && { placeholder: this.placeholder }), this.value !== void 0 && { value: this.value });\n\t    if (this.slottedInputEl) {\n\t      const modifiedPropKeys = [.../* @__PURE__ */ new Set([...Object.keys(prevSharedProps), ...Object.keys(this.sharedProps)])];\n\t      modifiedPropKeys.forEach((key) => {\n\t        if (!(key in this.sharedProps)) {\n\t          this.slottedInputEl.removeAttribute(key);\n\t        } else {\n\t          const attributeValue = this.sharedProps[key] !== true ? this.sharedProps[key] : \"\";\n\t          if (key === \"value\") {\n\t            this.slottedInputEl.value = attributeValue;\n\t          } else if (attributeValue === false) {\n\t            this.slottedInputEl.removeAttribute(key);\n\t          } else {\n\t            this.slottedInputEl.setAttribute(key, attributeValue);\n\t          }\n\t        }\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * Updates the internal state of this element bound to the surrounding form.\n\t   */\n\t  updateElementInternals() {\n\t    var _a, _b, _c, _d;\n\t    if (!this.internals) {\n\t      return;\n\t    }\n\t    (_b = (_a = this.internals).setFormValue) === null || _b === void 0 ? void 0 : _b.call(_a, this.value);\n\t    if (this.nativeInputEl) {\n\t      (_d = (_c = this.internals).setValidity) === null || _d === void 0 ? void 0 : _d.call(_c, this.nativeInputEl.validity, this.nativeInputEl.validationMessage);\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.el.classList.add(\"preload\");\n\t    this.autocompleteWatcher(this.autocomplete);\n\t    this.registerSlottedInput();\n\t    this.updateSharedInputProps();\n\t    this.updateElementInternals();\n\t  }\n\t  componentWillUpdate() {\n\t    this.updateSharedInputProps();\n\t    this.updateElementInternals();\n\t  }\n\t  componentDidLoad() {\n\t    this.el.classList.remove(\"preload\");\n\t    this.marketInputSearchDidLoad.emit();\n\t  }\n\t  render() {\n\t    const isBackIcon = this.compact && this.focused;\n\t    const tabindex = this.el.querySelector(\"input:focus\") ? -1 : void 0;\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return index.h(index.Host, { key: \"3343a3ade00e7f25c46e81cc49b7e60eb87bce78\", class: \"market-input-search\", onAnimationEnd: (e) => this.handleAnimation(e), onAnimationStart: (e) => this.handleAnimation(e), onBlur: () => {\n\t      var _a;\n\t      if (this.clearButtonClicked) {\n\t        (_a = this.nativeInputEl) === null || _a === void 0 ? void 0 : _a.focus();\n\t        this.clearButtonClicked = false;\n\t      } else {\n\t        this.setFocus(false);\n\t      }\n\t    }, onClick: (e) => {\n\t      e.stopPropagation();\n\t      this.setFocus();\n\t    }, onFocus: () => this.setFocus(), tabindex }, index.h(\"button\", { key: \"19ff275f0038356fe62fb81306504c720e604d24\", class: classnames.classNames(\"leading-accessory\", {\n\t      \"is-back-icon\": isBackIcon\n\t    }), \"aria-label\": this.searchIconButtonAriaLabel, onClick: (e) => this.handleAccessoryClicked(e, isBackIcon), \"aria-hidden\": isBackIcon ? \"false\" : \"true\", tabindex: isBackIcon ? \"0\" : \"-1\" }, index.h(\"slot\", { key: \"a6e782605cf7c578d87963316ccec21a2f00c5a2\", name: \"leading-accessory\" }, index.h(MarketAccessoryTagName, { key: \"00cedc9d9837fc4f882a0ef57d77143654f4060c\", size: \"icon\", tabindex: \"-1\", \"aria-hidden\": \"true\" }, isBackIcon ? (\n\t      // back icon\n\t      index.h(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M4.29289 11.2929C3.90237 11.6834 3.90237 12.3166 4.29289 12.7071L11.2929 19.7071L12.7071 18.2929L7.41421 13L19 13V11H7.41421L12.7071 5.70712L11.2929 4.29291L4.29289 11.2929Z\" }))\n\t    ) : (\n\t      // search icon\n\t      index.h(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { d: \"M10.5 17.4998C12.07 17.4998 13.52 16.9698 14.68 16.0998L18.79 20.2098L20.2 18.7998L16.09 14.6898C16.97 13.5198 17.49 12.0798 17.49 10.5098C17.49 6.64983 14.35 3.50983 10.49 3.50983C6.62999 3.50983 3.48999 6.64983 3.48999 10.5098C3.48999 14.3698 6.63999 17.4998 10.5 17.4998ZM10.5 5.49983C13.26 5.49983 15.5 7.73983 15.5 10.4998C15.5 13.2598 13.26 15.4998 10.5 15.4998C7.73999 15.4998 5.49999 13.2598 5.49999 10.4998C5.49999 7.73983 7.73999 5.49983 10.5 5.49983Z\" }))\n\t    )))), index.h(\"div\", { key: \"1b52f0b8bd188a8a03e51ebad268bb5e8c3240b7\", class: \"input-container\" }, index.h(\"slot\", { key: \"448a50d5bb9f3a3288b8de0e035a7b4568f68f1e\", name: \"input\", onSlotchange: () => this.registerSlottedInput() }, !this.slottedInputEl && index.h(\"input\", Object.assign({ key: \"ab84c8b56524676e37926fea66c95c9046cb9966\", \"aria-label\": this.inputAriaLabel, onInput: (e) => this.handleValueChange(e), onKeyDown: (e) => {\n\t      this.handleKeyDown(e);\n\t    }, part: \"native-input\", ref: (input) => this.nativeInputEl = input, type: \"text\" }, this.sharedProps)))), index.h(\"slot\", { key: \"f225655c4aefca01de494900ae41029fb3a3d364\", name: \"trailing-accessory\" }), index.h(\"button\", { key: \"8511c923f422a82f28d83de2d0e50286d81a9791\", \"aria-label\": this.clearButtonAriaLabel, class: classnames.classNames(\"clear-button\", { hidden: !this.value || this.disabled }), onClick: this.handleClearButtonClicked.bind(this), tabindex: \"0\" }, index.h(\"svg\", { key: \"4c5d86649a528914b732fa66a75ffd7135e45dcd\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"7b4fba698ce74d6f7576236b895a7ec1777bbc22\", d: \"M6.71004 18.71L12 13.41L17.29 18.71L18.71 17.29L13.41 12L18.71 6.71004L17.29 5.29004L12 10.59L6.71004 5.29004L5.29004 6.71004L10.59 12L5.29004 17.29L6.71004 18.71Z\" }))));\n\t  }\n\t  static get formAssociated() {\n\t    return true;\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"focused\": [\"focusedWatcher\"],\n\t      \"disabled\": [\"disabledWatcher\"],\n\t      \"autocomplete\": [\"autocompleteWatcher\"]\n\t    };\n\t  }\n\t};\n\tInputText.style = MarketInputSearchStyle0;\n\tmarketInputSearch_cjs_entry.market_input_search = InputText;\n\treturn marketInputSearch_cjs_entry;\n}\n\nvar marketInputText_cjs_entry = {};\n\nvar hasRequiredMarketInputText_cjs_entry;\n\nfunction requireMarketInputText_cjs_entry () {\n\tif (hasRequiredMarketInputText_cjs_entry) return marketInputText_cjs_entry;\n\thasRequiredMarketInputText_cjs_entry = 1;\n\tObject.defineProperty(marketInputText_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst autocomplete = requireAutocompleteD3ecf142();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst forms = requireForms08db29a3();\n\tconst marketInputTextCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;outline:none;font-weight:var(--field-input-weight);font-size:var(--field-input-size);line-height:var(--field-input-leading);cursor:text}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;cursor:inherit}:host input,:host ::slotted(input){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::slotted(label){cursor:inherit}:host input:focus,:host ::slotted(input:focus),:host textarea:focus,:host ::slotted(textarea:focus){outline:none}:host input::-moz-placeholder,:host textarea::-moz-placeholder{color:var(--field-placeholder-text-color)}:host input::placeholder,:host textarea::placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::-moz-placeholder,:host ::slotted(textarea)::-moz-placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::placeholder,:host ::slotted(textarea)::placeholder{color:var(--field-placeholder-text-color)}:host([size='small']){font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}:host{border-radius:var(--field-border-radius);background-color:var(--field-normal-state-background-color);color:var(--field-normal-state-input-color)}:host::after{content:\"\";position:absolute;inset:0;border-radius:var(--field-border-radius);box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color);pointer-events:none}:host([invalid])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-invalid-validity-border-color)}:host(:hover){background-color:var(--field-hover-state-background-color);color:var(--field-hover-state-input-color)}:host(:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-normal-validity-border-color)}:host([invalid]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-invalid-validity-border-color)}:host([focused]){color:var(--field-focus-state-input-color)}:host([focused])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size)\n        var(--field-focus-state-normal-validity-border-color)}:host([focused][invalid])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size) var(--field-focus-state-invalid-validity-border-color)}:host([readonly]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color)}:host([disabled]){background-color:var(--field-disabled-state-background-color) !important;color:var(--field-disabled-state-input-color) !important;cursor:not-allowed !important}:host([disabled])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-disabled-state-border-color) !important}:host([disabled]) ::slotted(.market-accessory),:host([disabled]) ::slotted(img[slot*=\"accessory\"]),:host([disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([disabled]) ::slotted(div[slot*=\"accessory\"]){--field-disabled-state-accessory-opacity:var(--row-disabled-state-leading-accessory-opacity);opacity:var(--field-disabled-state-accessory-opacity)}:host([value=\"\"]) ::slotted(label){color:var(--field-normal-state-empty-phase-label-color)}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"][autofilled]) ::slotted(label){color:var(--field-normal-state-float-phase-label-color)}:host(:hover) ::slotted(label){color:var(--field-hover-state-empty-phase-label-color)}:host(:not([value=\"\"]):hover) ::slotted(label),:host([value=\"\"][autofilled]:hover) ::slotted(label){color:var(--field-hover-state-float-phase-label-color)}:host([focused]) ::slotted(label){color:var(--field-focus-state-float-phase-label-color)}:host([value=\"\"][disabled]) ::slotted(label){color:var(--field-disabled-state-empty-phase-label-color)}:host(:not([value=\"\"])[disabled]) ::slotted(label),:host([value=\"\"][autofilled][disabled]) ::slotted(label){color:var(--field-disabled-state-float-phase-label-color)}:host{--field-accessory-horizontal-spacing-size:16px;--field-size-small-accessory-horizontal-spacing-size:12px;--field-size-large-image-accessory-outer-spacing-size:12px;--field-size-medium-image-accessory-outer-spacing-size:4px;--field-size-large-button-accessory-outer-spacing-size:12px;--field-size-medium-button-accessory-outer-spacing-size:4px;--field-size-large-tooltip-accessory-horizontal-spacing-size:5px;--field-size-large-tooltip-accessory-vertical-spacing-size:-1px;--field-size-small-tooltip-accessory-horizontal-spacing-size:1px}:host ::slotted([slot=\"leading-accessory\"]){flex-shrink:0;margin-right:var(--field-accessory-horizontal-spacing-size);margin-left:var(--field-accessory-horizontal-spacing-size)}:host ::slotted(.market-accessory[slot=\"leading-accessory\"][size=\"image\"]){margin-left:var(--field-size-large-image-accessory-outer-spacing-size)}:host ::slotted(.market-tooltip[slot=\"leading-accessory\"]){margin:var(--field-size-large-tooltip-accessory-vertical-spacing-size)\n      var(--field-size-large-tooltip-accessory-horizontal-spacing-size)}:host ::slotted(.market-button[slot=\"leading-accessory\"][size=\"small\"]){margin-left:var(--field-size-large-button-accessory-outer-spacing-size)}:host ::slotted([slot=\"trailing-accessory\"]){flex-shrink:0;margin-right:var(--field-accessory-horizontal-spacing-size);margin-left:var(--field-accessory-horizontal-spacing-size)}:host ::slotted(.market-accessory[slot=\"trailing-accessory\"][size=\"image\"]){margin-right:var(--field-size-large-image-accessory-outer-spacing-size)}:host ::slotted(.market-tooltip[slot=\"trailing-accessory\"]){margin:var(--field-size-large-tooltip-accessory-vertical-spacing-size)\n      var(--field-size-large-tooltip-accessory-horizontal-spacing-size)}:host ::slotted(.market-button[slot=\"trailing-accessory\"][size=\"small\"]){margin-right:var(--field-size-large-button-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-accessory[slot=\"leading-accessory\"][size=\"image\"]){margin-left:var(--field-size-medium-image-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-button[slot=\"leading-accessory\"][size=\"small\"]){margin-left:var(--field-size-medium-button-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-accessory[slot=\"trailing-accessory\"][size=\"image\"]){margin-right:var(--field-size-medium-image-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-button[slot=\"trailing-accessory\"][size=\"small\"]){margin-right:var(--field-size-medium-button-accessory-outer-spacing-size)}:host([size='small']) ::slotted([slot=\"leading-accessory\"]),:host([size='small']) ::slotted([slot=\"trailing-accessory\"]){margin-right:var(--field-size-small-accessory-horizontal-spacing-size);margin-left:var(--field-size-small-accessory-horizontal-spacing-size)}:host([size='small']) ::slotted(.market-tooltip[slot=\"leading-accessory\"]),:host([size='small']) ::slotted(.market-tooltip[slot=\"trailing-accessory\"]){margin-right:var(--field-size-small-tooltip-accessory-horizontal-spacing-size);margin-left:var(--field-size-small-tooltip-accessory-horizontal-spacing-size)}:host .label-input-container.has-leading-accessory{padding-left:0 !important;}:host .label-input-container.has-trailing-accessory{padding-right:0 !important;}:host{--field-input-animation-speed:var(--core-animation-enter-transition-moderate-speed-duration);--field-input-label-translate:12px;--field-empty-phase-label-text-size-unitless:16;--field-float-phase-label-text-size-unitless:14;--field-size-medium-float-phase-vertical-padding-size:12px;--field-size-medium-float-phase-horizontal-padding-size:16px;--field-size-small-float-phase-vertical-padding-size:9px;--field-size-small-float-phase-horizontal-padding-size:12px;display:flex;align-items:center}:host .label-input-container,:host([value='']:not([focused]):not([autofilled])) .label-input-container{flex-grow:1;padding:var(--field-float-phase-vertical-padding-size) var(--field-float-phase-horizontal-padding-size)}:host([size='medium']) .label-input-container,:host([size='medium'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-medium-float-phase-vertical-padding-size)\n      var(--field-size-medium-float-phase-horizontal-padding-size)}:host([size='small']) .label-input-container,:host([size='small'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-small-float-phase-vertical-padding-size)\n      var(--field-size-small-float-phase-horizontal-padding-size)}:host ::slotted(label){display:block;min-height:var(--field-empty-phase-label-text-leading);font-weight:var(--field-empty-phase-label-text-weight);font-size:var(--field-empty-phase-label-text-size);line-height:var(--field-empty-phase-label-text-leading);letter-spacing:var(--field-empty-phase-label-text-tracking);transition:all var(--field-input-animation-speed);transform:translateY(var(--field-input-label-translate));transform-origin:0 0}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"]:not([focused])[autofilled]) ::slotted(label),:host([focused]) ::slotted(label){font-weight:var(--field-float-phase-label-text-weight);transform:scale(\n        calc(var(--field-float-phase-label-text-size-unitless) / var(--field-empty-phase-label-text-size-unitless))\n      )}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){opacity:0%}:host([focused]) input,:host([focused]) ::slotted(input),:host([focused]) textarea,:host([focused]) ::slotted(textarea),:host(:not([value=''])) input,:host(:not([value=''])) ::slotted(input),:host(:not([value=''])) textarea,:host(:not([value=''])) ::slotted(textarea){opacity:100%}:host([size='small']) ::slotted(label),:host([size='medium']) ::slotted(label){position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%)}:host([size='small']) input,:host([size='small']) ::slotted(input),:host([size='small']) textarea,:host([size='small']) ::slotted(textarea),:host([size='medium']) input,:host([size='medium']) ::slotted(input),:host([size='medium']) textarea,:host([size='medium']) ::slotted(textarea){opacity:100%}:host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}:host input[type=\"number\"]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input[type=\"time\"]::-webkit-inner-spin-button,input[type=\"time\"]::-webkit-outer-spin-button,input[type=\"time\"]::-webkit-clear-button,input[type=\"time\"]::-webkit-calendar-picker-indicator{display:none}input[type=\"date\"]::-webkit-calendar-picker-indicator,input[type=\"time\"]::-webkit-calendar-picker-indicator{display:none}input[type=\"date\"]::-webkit-inner-spin-button,input[type=\"time\"]::-webkit-inner-spin-button,input[type=\"date\"]::-webkit-clear-button,input[type=\"time\"]::-webkit-clear-button{display:none;margin:0;-webkit-appearance:none;appearance:none}:host ::slotted(input:focus-visible){outline:none}:host([value=\"\"]) input,:host([value=\"\"]) ::slotted(input){color:var(--field-placeholder-text-color)}:host input:-webkit-autofill,:host ::slotted(input:-webkit-autofill){animation-name:market-input-autofill-start;animation-duration:var(--core-animation-enter-transition-fast-speed-duration)}:host input:not(:-webkit-autofill),:host ::slotted(input:not(:-webkit-autofill)){animation-name:market-input-autofill-cancel;animation-duration:var(--core-animation-enter-transition-fast-speed-duration)}:host input::-webkit-date-and-time-value{text-align:left}:host ::slotted(input::-webkit-date-and-time-value){text-align:left}`;\n\tconst MarketInputTextStyle0 = marketInputTextCss;\n\tconst InputText = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInputValueChange = index.createEvent(this, \"marketInputValueChange\", 7);\n\t    this.marketInputDidLoad = index.createEvent(this, \"marketInputDidLoad\", 7);\n\t    if (hostRef.$hostElement$[\"s-ei\"]) {\n\t      this.internals = hostRef.$hostElement$[\"s-ei\"];\n\t    } else {\n\t      this.internals = hostRef.$hostElement$.attachInternals();\n\t      hostRef.$hostElement$[\"s-ei\"] = this.internals;\n\t    }\n\t    this.hasLeadingAccessory = false;\n\t    this.hasTrailingAccessory = false;\n\t    this.type = \"text\";\n\t    this.inputId = void 0;\n\t    this.name = void 0;\n\t    this.value = \"\";\n\t    this.placeholder = void 0;\n\t    this.maxlength = void 0;\n\t    this.minlength = void 0;\n\t    this.size = \"large\";\n\t    this.step = void 0;\n\t    this.min = void 0;\n\t    this.max = void 0;\n\t    this.pattern = void 0;\n\t    this.required = void 0;\n\t    this.readonly = false;\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.invalid = false;\n\t    this.inputmode = void 0;\n\t    this.autofocus = false;\n\t    this.autocomplete = true;\n\t    this.autovalidate = false;\n\t    this.autofilled = false;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  focusedChangeHandler(newValue) {\n\t    if (!this.nativeInput) {\n\t      return;\n\t    }\n\t    if (newValue) {\n\t      this.nativeInput.focus();\n\t    }\n\t  }\n\t  autocompleteWatcher(newValue) {\n\t    this._autocomplete = autocomplete.autocompleteWatcher(newValue);\n\t  }\n\t  handleMarketDialogLoaded() {\n\t    if (this.autofocus) {\n\t      this.setFocus();\n\t    }\n\t  }\n\t  valueDidChange(e) {\n\t    const result = this.marketInputValueChange.emit({\n\t      value: e.target.value,\n\t      originalEvent: e\n\t    });\n\t    if (result.defaultPrevented) {\n\t      e.target.value = this.value;\n\t      e.preventDefault();\n\t    } else {\n\t      this.value = e.target.value;\n\t      this.updateElementInternals();\n\t      if (this.autovalidate || this.validatingThroughSubmission) {\n\t        this.invalid = !this.nativeInput.checkValidity();\n\t      }\n\t    }\n\t    this.autofilled = false;\n\t  }\n\t  handleAutofill(e) {\n\t    if (e.animationName === \"market-input-autofill-start\") {\n\t      this.autofilled = true;\n\t    } else if (e.animationName === \"market-input-autofill-cancel\" && !this.value) {\n\t      this.autofilled = false;\n\t    }\n\t  }\n\t  handleKeyDown(e) {\n\t    if (e.key === \"Enter\" && !e.isComposing) {\n\t      if (this.el.slot === \"trigger\") {\n\t        e.preventDefault();\n\t      } else {\n\t        forms.submitFormImplicitly(this.el);\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Handles the invalid submission event of this component.\n\t   * This can happen when the component has been externally\n\t   * checked for validity and does not satisfy the constraints.\n\t   */\n\t  handleSubmissionInvalid(event) {\n\t    event.preventDefault();\n\t    this.validatingThroughSubmission = true;\n\t    this.invalid = !this.nativeInput.checkValidity();\n\t  }\n\t  /**\n\t   * Sets focus styling on `<market-input-text>`. Toggles focus on the inner `<input>` if true, and blurs focus if false.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.readonly || this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    if (!value && this.nativeInput) {\n\t      this.nativeInput.blur();\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Returns the native `<input>` element used under the hood.\n\t   */\n\t  getInputElement() {\n\t    return Promise.resolve(this.nativeInput);\n\t  }\n\t  /**\n\t   * Allows passing an alternative light DOM input.\n\t   */\n\t  registerSlottedInput(slottedInput) {\n\t    var _a;\n\t    this.slottedInput = slottedInput || // input slotted into market-input-text\n\t    this.el.querySelector(\"input[slot=input]\") || // input slotted into a higher-level component that uses market-input-text\n\t    // (e.g. market-input-password)\n\t    ((_a = this.el.getRootNode().host) === null || _a === void 0 ? void 0 : _a.querySelector(\"input[slot=input]\"));\n\t    if (this.slottedInput) {\n\t      this.slottedInput.addEventListener(\"input\", (e) => this.valueDidChange(e));\n\t      this.slottedInput.addEventListener(\"focus\", () => this.setFocus());\n\t      this.slottedInput.addEventListener(\"blur\", () => this.focused = false);\n\t      this.slottedInput.addEventListener(\"animationstart\", (e) => this.handleAutofill(e));\n\t      this.nativeInput = this.slottedInput;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  updateSharedInputProps() {\n\t    const prevSharedProps = Object.assign({}, this.sharedProps);\n\t    this.sharedProps = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this.inputId && { id: this.inputId }), this.name && { name: this.name }), this.type && { type: this.type }), this.placeholder && { placeholder: this.placeholder }), this.maxlength >= 0 && { maxlength: this.maxlength }), this.minlength >= 0 && { minlength: this.minlength }), this.step && { step: this.step }), this.min && { min: this.min }), this.max && { max: this.max }), this.pattern && { pattern: this.pattern }), this.value !== void 0 && { value: this.value }), this.readonly && { readonly: this.readonly }), this.required && { required: this.required }), this.disabled && { disabled: this.disabled }), this.autofocus && { autofocus: this.autofocus }), this.inputmode && { inputmode: this.inputmode }), this._autocomplete && { autocomplete: this._autocomplete }), this.ariaAttributes), { \"aria-label\": aria.getTextInputAriaLabel(this.el) });\n\t    if (this.slottedInput) {\n\t      const modifiedPropKeys = [.../* @__PURE__ */ new Set([...Object.keys(prevSharedProps), ...Object.keys(this.sharedProps)])];\n\t      modifiedPropKeys.forEach((key) => {\n\t        if (!(key in this.sharedProps)) {\n\t          this.slottedInput.removeAttribute(key);\n\t        } else {\n\t          const attributeValue = this.sharedProps[key] !== true ? this.sharedProps[key] : \"\";\n\t          this.slottedInput.setAttribute(key, attributeValue);\n\t        }\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * Updates the internal state of this element bound to the surrounding form.\n\t   */\n\t  updateElementInternals() {\n\t    var _a, _b, _c, _d;\n\t    if (!this.internals) {\n\t      return;\n\t    }\n\t    (_b = (_a = this.internals).setFormValue) === null || _b === void 0 ? void 0 : _b.call(_a, this.value);\n\t    if (this.nativeInput) {\n\t      (_d = (_c = this.internals).setValidity) === null || _d === void 0 ? void 0 : _d.call(_c, this.nativeInput.validity, this.nativeInput.validationMessage);\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.hasLeadingAccessory = Boolean([...this.el.children].some((el) => el.slot === \"leading-accessory\"));\n\t    this.hasTrailingAccessory = Boolean([...this.el.children].some((el) => el.slot === \"trailing-accessory\"));\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    });\n\t    this.registerSlottedInput();\n\t    this.autocompleteWatcher(this.autocomplete);\n\t    this.updateSharedInputProps();\n\t    this.updateElementInternals();\n\t  }\n\t  componentDidLoad() {\n\t    this.marketInputDidLoad.emit({ input: this.nativeInput });\n\t  }\n\t  componentWillUpdate() {\n\t    this.updateSharedInputProps();\n\t    this.updateElementInternals();\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"49fa89af51ca090775c27f8680e165a82da2a007\", class: \"market-input-text\", onBlur: () => {\n\t      this.focused = false;\n\t    }, onClick: () => {\n\t      this.setFocus();\n\t    }, onFocus: () => {\n\t      this.setFocus();\n\t    }, onKeyDown: (e) => {\n\t      this.handleKeyDown(e);\n\t    }, onInvalid: (e) => {\n\t      this.handleSubmissionInvalid(e);\n\t    } }, index.h(\"slot\", { key: \"d77f8ae2ca847b701bf717548e8caa0f6ec0d254\", name: \"leading-accessory\" }), index.h(\"div\", { key: \"05f4c9e77f436b06baeb2283782f5e609363786d\", class: classnames.classNames(\"label-input-container\", {\n\t      \"has-leading-accessory\": this.hasLeadingAccessory,\n\t      \"has-trailing-accessory\": this.hasTrailingAccessory\n\t    }) }, index.h(\"slot\", { key: \"214e8904637c4741bf41323a604523826819be12\" }), index.h(\"slot\", { key: \"2101657e01d84a90794cd58bac391b87684e0f39\", name: \"input\", onSlotchange: () => this.registerSlottedInput() }, !this.slottedInput && index.h(\"input\", Object.assign({ key: \"6a45bdf723f98174c304c7d7c849a940ac3e8446\", part: \"native-input\", ref: (input) => this.nativeInput = input, onInput: (e) => this.valueDidChange(e), onAnimationStart: (e) => this.handleAutofill(e) }, this.sharedProps)))), index.h(\"slot\", { key: \"9ddf9f0a80699d2dcea82faacd79a2e5a189cf18\", name: \"trailing-accessory\" }));\n\t  }\n\t  static get formAssociated() {\n\t    return true;\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"focused\": [\"focusedChangeHandler\"],\n\t      \"autocomplete\": [\"autocompleteWatcher\"]\n\t    };\n\t  }\n\t};\n\tInputText.style = MarketInputTextStyle0;\n\tmarketInputText_cjs_entry.market_input_text = InputText;\n\treturn marketInputText_cjs_entry;\n}\n\nvar marketLink_cjs_entry = {};\n\nvar hasRequiredMarketLink_cjs_entry;\n\nfunction requireMarketLink_cjs_entry () {\n\tif (hasRequiredMarketLink_cjs_entry) return marketLink_cjs_entry;\n\thasRequiredMarketLink_cjs_entry = 1;\n\tObject.defineProperty(marketLink_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst marketLinkCss = ':host, ::slotted(*), * {\\n  box-sizing: border-box;\\n}\\n\\n:host([disabled]) {\\n  cursor: not-allowed !important; /* stylelint-disable-line declaration-no-important */\\n}\\n\\n:host([disabled]) *, :host([disabled]) ::slotted(*) {\\n  cursor: not-allowed !important; /* stylelint-disable-line declaration-no-important */\\n  pointer-events: none !important; /* stylelint-disable-line declaration-no-important */\\n}\\n\\n/* focus ring styles */\\n\\n:host * {\\n  outline-color: var(--core-focus-ring-color);\\n}\\n\\n:host(:focus-visible), ::slotted(*:focus-visible) {\\n  outline: var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);\\n  outline-offset: var(--core-focus-ring-buffer-size);\\n}\\n\\n::slotted(a), ::slotted(button) {\\n  border-radius: 1px;\\n}\\n\\na, button {\\n  /* TODO: add link focus ring tokens (UI-6643) */\\n  --text-link-focus-ring-border-size: var(--button-focus-ring-border-size);\\n  --text-link-focus-ring-buffer-size: var(--button-focus-ring-buffer-size);\\n  --text-link-focus-ring-color: var(--button-focus-ring-color);\\n  --focus-ring-color: color-mix(in srgb, var(--text-link-focus-ring-color) 100%, transparent);\\n}\\n\\na:focus-visible, button:focus-visible {\\n    border-radius: 1px;\\n    outline: var(--text-link-focus-ring-border-size) solid var(--focus-ring-color);\\n    outline-offset: var(--text-link-focus-ring-buffer-size);\\n  }\\n\\n\\n:host {\\n  --transition-duration: var(--core-animation-enter-transition-moderate-speed-duration);\\n\\n  /* See @container style - presence of underline is controlled by underline size, so the default value is 0px */\\n  --link-internal-underline-size: var(--text-link-standalone-style-normal-state-underline-size);\\n\\n  display: inline;\\n}\\n\\na, button {\\n\\n  display: inline;\\n  margin: 0;\\n  padding: 0;\\n  border: none; /* reset button border styles */\\n  background: none;\\n  color: var(--text-link-normal-variant-color);\\n  font-weight: var(--text-link-medium-size-text-weight);\\n  font-size: inherit;\\n  font-family: inherit;\\n  line-height: 1;\\n  letter-spacing: inherit;\\n  text-align: inherit;\\n  cursor: pointer;\\n  transition: color var(--transition-duration);\\n  text-decoration-line: underline;\\n  text-decoration-thickness: var(--link-internal-underline-size);\\n  text-decoration-style: solid;\\n  text-underline-offset: var(--text-link-standalone-style-underline-offset, 2px);\\n}\\n\\n/* stylelint-disable-next-line length-zero-no-unit */\\n@container style(--link-internal-underline-size: 0px) {\\n  a, button {\\n    /* stylelint-disable-next-line declaration-no-important */\\n    text-decoration-line: none;\\n  }\\n}\\n\\n@media (hover: hover) {\\n  /* handle hover state, triggered by tag */\\n  a:hover, button:hover {\\n    color: var(--text-link-normal-variant-hover-state-color);\\n  }\\n\\n    :host:has(a:hover), :host:has(button:hover) {\\n      --link-internal-underline-size: var(--text-link-standalone-style-hover-state-underline-size);\\n    }\\n}\\n\\na:active, button:active {\\n  /* handle disabled state, via tag */\\n  color: var(--text-link-normal-variant-pressed-state-color);\\n}\\n\\n:host:has(a:active), :host:has(button:active) {\\n    --link-internal-underline-size: var(--text-link-standalone-style-pressed-state-underline-size);\\n  }\\n\\n:host([disabled]) {\\n  /* handle disabled state, via attribute */\\n  --link-internal-underline-size: var(--text-link-standalone-style-disabled-state-underline-size);\\n}\\n\\n:host([disabled]) a, :host([disabled]) button {\\n    color: var(--text-link-normal-variant-disabled-state-color);\\n  }\\n\\n:host([highlight=\"underline\"]) {\\n  /* handle default-highlighted, via attribute */\\n  --link-internal-underline-size: var(--text-link-inline-style-normal-state-underline-size);\\n}\\n\\n:host([highlight=\"underline\"])[disabled] {\\n    --link-internal-underline-size: var(--text-link-inline-style-disabled-state-underline-size);\\n  }\\n\\n@media (hover: hover) {\\n  :host([highlight=\"underline\"]):has(a:hover,  button:hover) {\\n    --link-internal-underline-size: var(--text-link-inline-style-hover-state-underline-size);\\n  }\\n}\\n\\n@media (hover: hover) {\\n    :host([destructive]) a:hover, :host([destructive]) button:hover {\\n      color: var(--text-link-destructive-variant-hover-state-color);\\n    }\\n  }\\n\\n:host([destructive]) a, :host([destructive]) button {\\n    color: var(--text-link-destructive-variant-color);\\n  }\\n\\n:host([destructive]) a:active, :host([destructive]) button:active {\\n    color: var(--text-link-destructive-variant-pressed-state-color);\\n  }\\n\\n:host([destructive][disabled]) a, :host([destructive][disabled]) button {\\n  color: var(--text-link-destructive-variant-disabled-state-color);\\n}\\n\\n::slotted(svg) {\\n  fill: currentcolor;\\n}\\n';\n\tconst MarketLinkStyle0 = marketLinkCss;\n\tconst MarketLink = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.onMutationObserved = (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    };\n\t    this.href = void 0;\n\t    this.target = void 0;\n\t    this.rel = void 0;\n\t    this.destructive = false;\n\t    this.disabled = false;\n\t    this.download = void 0;\n\t    this.highlight = void 0;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  componentWillLoad() {\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, this.onMutationObserved);\n\t  }\n\t  handleClick(e) {\n\t    if (this.disabled) {\n\t      e.preventDefault();\n\t      e.stopPropagation();\n\t    }\n\t  }\n\t  render() {\n\t    const { disabled, handleClick, href, target, ariaAttributes, rel, download } = this;\n\t    const TagType = href !== void 0 ? \"a\" : \"button\";\n\t    const TagTypeAttrs = TagType === \"a\" ? { href, target, rel, download } : { disabled };\n\t    return index.h(index.Host, { key: \"1b73ec9a468de9bb4bb920dbcdef634fe87fc79c\", class: \"market-link\", onClick: handleClick, onKeyDown: handleClick }, index.h(TagType, Object.assign({ key: \"441eb4b2303df492a02e0f2bba506c15c8bd4fd0\" }, TagTypeAttrs, ariaAttributes, { \"aria-disabled\": disabled ? \"true\" : null, tabindex: disabled ? \"-1\" : null }), index.h(\"slot\", { key: \"889784cee1ff7c43fecdf88d0d098a3040dfe5f1\" })));\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketLink.style = MarketLinkStyle0;\n\tmarketLink_cjs_entry.market_link = MarketLink;\n\treturn marketLink_cjs_entry;\n}\n\nvar marketList_cjs_entry = {};\n\nvar reorderable3af89049 = {};\n\nvar draggableA7663027 = {};\n\nvar maxZIndex536dd36e = {};\n\nvar hasRequiredMaxZIndex536dd36e;\n\nfunction requireMaxZIndex536dd36e () {\n\tif (hasRequiredMaxZIndex536dd36e) return maxZIndex536dd36e;\n\thasRequiredMaxZIndex536dd36e = 1;\n\tfunction getMaxZIndex(container) {\n\t  return Math.max(...[...container.querySelectorAll(\"*\")].map((el) => Number.parseFloat(window.getComputedStyle(el).zIndex)).filter((zIndex) => !Number.isNaN(zIndex)), 0);\n\t}\n\tmaxZIndex536dd36e.getMaxZIndex = getMaxZIndex;\n\treturn maxZIndex536dd36e;\n}\n\nvar hasRequiredDraggableA7663027;\n\nfunction requireDraggableA7663027 () {\n\tif (hasRequiredDraggableA7663027) return draggableA7663027;\n\thasRequiredDraggableA7663027 = 1;\n\tconst maxZIndex = requireMaxZIndex536dd36e();\n\tconst raf = requireRafEa414557();\n\tconst index = index254d04f0.requireIndex254d04f0();\n\tasync function transitionToPromise(el, styles) {\n\t  const computedStyle = getComputedStyle(el);\n\t  const { transitionProperty } = computedStyle;\n\t  const properties = transitionProperty.split(\", \");\n\t  return Promise.all(Object.keys(styles).map((property) => {\n\t    const value = styles[property];\n\t    return new Promise((resolve) => {\n\t      if (!value)\n\t        resolve();\n\t      if (value === el.style[property])\n\t        resolve();\n\t      if (!properties.includes(property)) {\n\t        el.style[property] = value;\n\t        resolve();\n\t      }\n\t      const transitionEnded = (e) => {\n\t        if (e.propertyName !== property)\n\t          return;\n\t        el.removeEventListener(\"transitionend\", transitionEnded);\n\t        resolve();\n\t      };\n\t      el.addEventListener(\"transitionend\", transitionEnded);\n\t      el.style[property] = value;\n\t    });\n\t  }));\n\t}\n\tfunction isMarketTableV2Row(value) {\n\t  const tagName = value === null || value === void 0 ? void 0 : value.tagName.toLowerCase();\n\t  return Boolean(value && tagName === index.getNamespacedTagFor(\"market-table-v2-row\"));\n\t}\n\tfunction isMarketTableV2Group(value) {\n\t  const tagName = value === null || value === void 0 ? void 0 : value.tagName.toLowerCase();\n\t  return Boolean(value && tagName === index.getNamespacedTagFor(\"market-table-v2-group\"));\n\t}\n\tfunction isDraggable(value) {\n\t  return Boolean(value && value.dragEnabled !== void 0);\n\t}\n\tconst SCROLL_DELAY = Math.min(1e3 / 60);\n\tconst SCROLL_STEP_MAX = 24;\n\tconst MarketTableV2GroupTag = index.getNamespacedTagFor(\"market-table-v2-group\");\n\tclass Draggable {\n\t  // Init the class with the element to be dragged\n\t  constructor(el, opts) {\n\t    this.el = el;\n\t    this.anchor = (opts === null || opts === void 0 ? void 0 : opts.anchor) || \"none\";\n\t  }\n\t  // Start a drag movement on the element:\n\t  // - adds a .market-drag-placeholder class to the dragged element\n\t  // - clones the dragged element with a class of .market-drag-clone\n\t  // - fires marketDragStart custom event on the dragged element\n\t  async start(coords) {\n\t    this.canceled = false;\n\t    const { x, y } = coords;\n\t    this.startCoords = this.previousCoords = coords;\n\t    const { el, anchor } = this;\n\t    const referenceElement = isMarketTableV2Group(el) ? el.querySelector('[slot=\"parent\"]') : el;\n\t    const { top: startTop, right: startRight, left: startLeft, width: startWidth, height: startHeight } = measureElement(referenceElement);\n\t    const source = el.parentElement;\n\t    const target = document.elementsFromPoint(x, y)[0];\n\t    const clone = referenceElement.cloneNode(true);\n\t    clone.classList.add(\"market-drag-clone\", \"market-drag-transitioning\");\n\t    this.source = source;\n\t    this.target = target;\n\t    this.clone = clone;\n\t    const defaultPrevented = !el.dispatchEvent(new CustomEvent(\"marketDragStart\", {\n\t      bubbles: true,\n\t      cancelable: true,\n\t      detail: Object.assign(Object.assign({}, coords), {\n\t        el,\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        source,\n\t        target,\n\t        clone\n\t      })\n\t    }));\n\t    if (defaultPrevented) {\n\t      this.canceled = true;\n\t      return;\n\t    }\n\t    this.scrollParent = getScrollParent(el);\n\t    el.classList.add(\"market-drag-placeholder\");\n\t    Object.assign(clone.style, {\n\t      position: \"fixed\",\n\t      opacity: 0,\n\t      // hidden while we measure it\n\t      transitionProperty: \"none\"\n\t      // turn transitions off\n\t    });\n\t    document.body.append(clone);\n\t    await raf.asyncRequestAnimationFrame();\n\t    const { width: finalWidth, height: finalHeight } = measureElement(clone);\n\t    Object.assign(clone.style, {\n\t      opacity: \"\",\n\t      // visible now that we've measured it\n\t      width: `${startWidth}px`,\n\t      height: `${startHeight}px`,\n\t      top: `${startTop}px`,\n\t      left: anchor !== \"right\" ? `${startLeft}px` : \"auto\",\n\t      right: anchor !== \"left\" ? `${window.innerWidth - startRight}px` : \"auto\",\n\t      zIndex: `${maxZIndex.getMaxZIndex(document.body) + 1}`\n\t    });\n\t    await raf.asyncRequestAnimationFrame();\n\t    clone.style.transitionProperty = \"\";\n\t    if (isMarketTableV2Row(clone)) {\n\t      clone.querySelector(\"market-table-v2-cell\").classList.add(\"market-drag-clone-first-cell\");\n\t    }\n\t    clone.style.setProperty(\"--market-drag-clone-shadow-opacity\", \"1\");\n\t    transitionToPromise(clone, {\n\t      top: `${startTop + (startHeight - finalHeight) / 2}px`,\n\t      height: `${finalHeight}px`,\n\t      width: anchor === \"none\" ? `${startWidth}px` : `${finalWidth}px`\n\t    }).then(() => {\n\t      clone.classList.remove(\"market-drag-transitioning\");\n\t    });\n\t  }\n\t  // Continues a drag movement on the element:\n\t  // - visually tracks the drag move with the cloned element via CSS transform\n\t  // - fires marketDragEnter, marketDragMove, & marketDragLeave custom events on drag targets\n\t  move(coords) {\n\t    const { el, clone, source, target, startCoords, previousCoords, canceled } = this;\n\t    const { x, y } = coords;\n\t    if (canceled)\n\t      return;\n\t    if (!clone)\n\t      return;\n\t    if (x === previousCoords.x && y === previousCoords.y)\n\t      return;\n\t    this.previousCoords = coords;\n\t    const newTarget = [...document.elementsFromPoint(x, y)].find((target2) => {\n\t      return !clone.contains(target2);\n\t    });\n\t    if (newTarget !== target) {\n\t      target === null || target === void 0 ? void 0 : target.dispatchEvent(new CustomEvent(\"marketDragLeave\", {\n\t        bubbles: true,\n\t        detail: {\n\t          x,\n\t          y,\n\t          el,\n\t          source,\n\t          target,\n\t          clone\n\t        }\n\t      }));\n\t      newTarget === null || newTarget === void 0 ? void 0 : newTarget.dispatchEvent(new CustomEvent(\"marketDragEnter\", {\n\t        bubbles: true,\n\t        detail: {\n\t          x,\n\t          y,\n\t          el,\n\t          source,\n\t          target: newTarget,\n\t          clone\n\t        }\n\t      }));\n\t      this.target = newTarget;\n\t    }\n\t    newTarget === null || newTarget === void 0 ? void 0 : newTarget.dispatchEvent(new CustomEvent(\"marketDragMove\", {\n\t      bubbles: true,\n\t      detail: {\n\t        x,\n\t        y,\n\t        el,\n\t        source,\n\t        target: newTarget,\n\t        clone\n\t      }\n\t    }));\n\t    const deltaX = x - startCoords.x;\n\t    const deltaY = y - startCoords.y;\n\t    Object.assign(clone.style, {\n\t      transform: `translate(${deltaX}px, ${deltaY}px)`\n\t    });\n\t    this.scroll();\n\t  }\n\t  // Ends a drag movement on the element:\n\t  // - fires marketDragEnd custom event on the dragged element\n\t  // - fires marketDragDrop custom event on drag target\n\t  // - removes the cloned element after transitioning it back to the placeholder\n\t  // - removes the .market-drag-placeholder class from the dragged element\n\t  async end(coords) {\n\t    if (this.canceled)\n\t      return;\n\t    const { el, source, clone, anchor, scrollInterval } = this;\n\t    const { x, y } = coords;\n\t    clearInterval(scrollInterval);\n\t    if (!clone)\n\t      return;\n\t    const target = [...document.elementsFromPoint(x, y)].find((target2) => {\n\t      return !clone.contains(target2);\n\t    });\n\t    const defaultPrevented = !el.dispatchEvent(new CustomEvent(\"marketDragEnd\", {\n\t      bubbles: true,\n\t      cancelable: true,\n\t      detail: {\n\t        x,\n\t        y,\n\t        el,\n\t        source,\n\t        target,\n\t        clone\n\t      }\n\t    }));\n\t    if (!defaultPrevented) {\n\t      target === null || target === void 0 ? void 0 : target.dispatchEvent(new CustomEvent(\"marketDragDrop\", {\n\t        bubbles: true,\n\t        cancelable: false,\n\t        detail: {\n\t          x,\n\t          y,\n\t          el,\n\t          source,\n\t          target,\n\t          clone\n\t        }\n\t      }));\n\t    }\n\t    const collapsedTableGroup = farthest(el, `${MarketTableV2GroupTag}[collapsed]`);\n\t    const draggedIntoCollapsedGroup = collapsedTableGroup && collapsedTableGroup !== el;\n\t    const referenceElement = draggedIntoCollapsedGroup ? collapsedTableGroup.querySelector('[slot=\"parent\"]') : isMarketTableV2Group(el) ? el.querySelector('[slot=\"parent\"]') : el;\n\t    await raf.asyncRequestAnimationFrame();\n\t    const { top: finalTop, right: finalRight, left: finalLeft, width: finalWidth, height: finalHeight } = measureElement(referenceElement);\n\t    const { top: startTop, right: startRight, left: startLeft, width: startWidth, height: startHeight } = measureElement(clone);\n\t    const deltaX = anchor === \"left\" ? startLeft - finalLeft : startRight - finalRight;\n\t    const deltaY = startTop - finalTop;\n\t    Object.assign(clone.style, {\n\t      pointerEvents: \"none\",\n\t      // disable mouse events\n\t      transitionProperty: \"none\",\n\t      // turn transitions off\n\t      top: `${finalTop}px`,\n\t      left: anchor !== \"right\" ? `${finalLeft}px` : \"auto\",\n\t      right: anchor !== \"left\" ? `${window.innerWidth - finalRight}px` : \"auto\",\n\t      width: `${startWidth}px`,\n\t      height: `${startHeight}px`,\n\t      transform: `translate(${deltaX}px, ${deltaY}px)`\n\t    });\n\t    await raf.asyncRequestAnimationFrame();\n\t    clone.style.transitionProperty = \"\";\n\t    if (isMarketTableV2Row(clone) && isMarketTableV2Row(referenceElement)) {\n\t      clone.querySelector(\"market-table-v2-cell\").classList.remove(\"market-drag-clone-first-cell\");\n\t    }\n\t    clone.classList.add(\"market-drag-released\", \"market-drag-transitioning\");\n\t    if (draggedIntoCollapsedGroup)\n\t      clone.classList.add(\"market-drag-into-collapsed-group\");\n\t    clone.style.removeProperty(\"--market-drag-clone-shadow-opacity\");\n\t    await raf.asyncRequestAnimationFrame();\n\t    await transitionToPromise(clone, {\n\t      width: `${finalWidth}px`,\n\t      height: `${finalHeight}px`,\n\t      transform: deltaX || deltaY ? \"translate(0, 0)\" : null\n\t    });\n\t    el.classList.remove(\"market-drag-placeholder\");\n\t    clone.remove();\n\t    el === null || el === void 0 ? void 0 : el.dispatchEvent(new CustomEvent(\"marketDragComplete\", {\n\t      bubbles: true,\n\t      cancelable: false,\n\t      detail: {\n\t        x,\n\t        y,\n\t        el,\n\t        source,\n\t        target,\n\t        clone\n\t      }\n\t    }));\n\t  }\n\t  scroll() {\n\t    const { clone, scrollParent, scrollInterval } = this;\n\t    clearInterval(scrollInterval);\n\t    const { bottom: cloneBottom, top: cloneTop, right: cloneRight, left: cloneLeft } = measureElement(clone);\n\t    const { bottom: scrollParentBottom, top: scrollParentTop, right: scrollParentRight, left: scrollParentLeft } = getScrollParentRect(scrollParent);\n\t    const deltaBottom = cloneBottom - scrollParentBottom;\n\t    const deltaTop = cloneTop - scrollParentTop;\n\t    const top = deltaBottom > 0 ? Math.min(deltaBottom / 4, SCROLL_STEP_MAX) : deltaTop < 0 ? Math.max(deltaTop / 4, -SCROLL_STEP_MAX) : 0;\n\t    const deltaRight = cloneRight - scrollParentRight;\n\t    const deltaLeft = cloneLeft - scrollParentLeft;\n\t    const left = deltaRight > 0 ? Math.min(deltaRight / 4, SCROLL_STEP_MAX) : deltaLeft < 0 ? Math.max(deltaLeft / 4, -SCROLL_STEP_MAX) : 0;\n\t    if (top !== 0 || left !== 0) {\n\t      this.scrollInterval = setInterval(() => {\n\t        scrollParent.scrollBy({ top, left });\n\t      }, SCROLL_DELAY);\n\t    }\n\t  }\n\t  // clean up var refs\n\t  destroy() {\n\t    this.el = null;\n\t    this.clone = null;\n\t    this.source = null;\n\t    this.target = null;\n\t    this.startCoords = null;\n\t    this.canceled = null;\n\t    this.scrollParent = null;\n\t    this.scrollInterval = null;\n\t    this.anchor = null;\n\t  }\n\t}\n\tfunction getScrollParent(element) {\n\t  let parent = element.parentElement;\n\t  while (parent !== document.documentElement) {\n\t    const { overflowY, overflowX } = getComputedStyle(parent);\n\t    const scrollableY = /(auto|scroll)/.test(overflowY) && parent.scrollHeight > parent.offsetHeight;\n\t    const scrollableX = /(auto|scroll)/.test(overflowX) && parent.scrollWidth > parent.offsetWidth;\n\t    if (scrollableY || scrollableX)\n\t      return parent;\n\t    parent = parent.parentElement;\n\t  }\n\t  return document.documentElement;\n\t}\n\tfunction getScrollParentRect(element) {\n\t  const { top, right, bottom, left } = measureElement(element);\n\t  if (element === document.documentElement) {\n\t    const top2 = 0;\n\t    const right2 = window.innerWidth;\n\t    const bottom2 = window.innerHeight;\n\t    const left2 = 0;\n\t    return { top: top2, right: right2, bottom: bottom2, left: left2 };\n\t  }\n\t  return { top, right, bottom, left };\n\t}\n\tfunction farthest(el, selector) {\n\t  let farthest2;\n\t  let pointer = el;\n\t  while (pointer !== document.body) {\n\t    const nextClosest = pointer.closest(selector);\n\t    if (nextClosest)\n\t      farthest2 = nextClosest;\n\t    pointer = pointer.parentElement;\n\t  }\n\t  return farthest2;\n\t}\n\tfunction measureElement(el) {\n\t  const rect = el.getBoundingClientRect();\n\t  return {\n\t    top: Math.round(rect.top),\n\t    right: Math.round(rect.right),\n\t    bottom: Math.round(rect.bottom),\n\t    left: Math.round(rect.left),\n\t    width: Math.round(rect.width),\n\t    height: Math.round(rect.height)\n\t  };\n\t}\n\tdraggableA7663027.Draggable = Draggable;\n\tdraggableA7663027.isDraggable = isDraggable;\n\tdraggableA7663027.isMarketTableV2Group = isMarketTableV2Group;\n\tdraggableA7663027.isMarketTableV2Row = isMarketTableV2Row;\n\treturn draggableA7663027;\n}\n\nvar hasRequiredReorderable3af89049;\n\nfunction requireReorderable3af89049 () {\n\tif (hasRequiredReorderable3af89049) return reorderable3af89049;\n\thasRequiredReorderable3af89049 = 1;\n\tconst draggable = requireDraggableA7663027();\n\tconst raf = requireRafEa414557();\n\tvar _a;\n\tfunction isReorderable(value) {\n\t  return Boolean(value && [\"internal\", \"external\"].includes(value.reorderable));\n\t}\n\tconst TABLE_GROUP_EXPAND_TIMEOUT_DURATION = 300;\n\tclass Reorderable {\n\t  static createCursor() {\n\t    const cursor = document.createElement(\"div\");\n\t    cursor.classList.add(\"market-drag-cursor\");\n\t    return cursor;\n\t  }\n\t  constructor({ el, accepts, event, mode }) {\n\t    this.el = el;\n\t    this.accepts = accepts;\n\t    this.event = event;\n\t    this.mode = mode;\n\t  }\n\t  isValidDrag(dragged, source, target) {\n\t    const { el, accepts } = this;\n\t    const reorderableSource = source === null || source === void 0 ? void 0 : source.closest('[reorderable=\"internal\"], [reorderable=\"external\"]');\n\t    const reorderableTarget = target === null || target === void 0 ? void 0 : target.closest('[reorderable=\"internal\"], [reorderable=\"external\"]');\n\t    if (!draggable.isDraggable(dragged))\n\t      return false;\n\t    if (!isReorderable(reorderableSource))\n\t      return false;\n\t    if (!isReorderable(reorderableTarget))\n\t      return false;\n\t    if (dragged.closest(accepts.join(\",\")) !== dragged)\n\t      return false;\n\t    if (el !== reorderableSource && el !== reorderableTarget)\n\t      return false;\n\t    if (reorderableSource !== reorderableTarget) {\n\t      const bothExternal = reorderableSource.reorderable === \"external\" && reorderableTarget.reorderable === \"external\";\n\t      const closestReorderable = getCommonAncestor(reorderableSource, reorderableTarget).closest('[reorderable=\"internal\"], [reorderable=\"external\"]');\n\t      if (!bothExternal && !closestReorderable)\n\t        return false;\n\t    }\n\t    return true;\n\t  }\n\t  /**\n\t   * Fired on a target element when an item is dragged over the target.\n\t   */\n\t  dragMove(e) {\n\t    var _b, _c;\n\t    const { el, accepts, tableGroupExpandTimeout } = this;\n\t    const { y, el: dragged, source, target } = e.detail;\n\t    const { cursor } = _a;\n\t    if (!this.isValidDrag(dragged, source, target))\n\t      return;\n\t    clearTimeout(tableGroupExpandTimeout);\n\t    (_b = cursor.parentElement) === null || _b === void 0 ? void 0 : _b.classList.remove(\"market-drag-cursor-parent\");\n\t    if (target === el) {\n\t      el.append(cursor);\n\t      el.classList.add(\"market-drag-cursor-parent\");\n\t      return;\n\t    }\n\t    const targetSibling = target.closest(accepts.join(\",\"));\n\t    if (!targetSibling)\n\t      return;\n\t    if (targetSibling === dragged)\n\t      return;\n\t    if (draggable.isMarketTableV2Group(targetSibling)) {\n\t      const parent = [...targetSibling.children].find((el2) => draggable.isMarketTableV2Row(el2) && el2.slot === \"parent\");\n\t      const { top, height } = parent.getBoundingClientRect();\n\t      if (targetSibling.collapsible && targetSibling.collapsed) {\n\t        const oneThird = Math.round(top + height / 3);\n\t        const twoThirds = Math.round(top + height * 2 / 3);\n\t        if (y < oneThird) {\n\t          targetSibling.before(cursor);\n\t        } else if (y > twoThirds) {\n\t          targetSibling.after(cursor);\n\t        } else {\n\t          parent.after(cursor);\n\t          const children = [...targetSibling.children].filter((el2) => (draggable.isMarketTableV2Row(el2) || draggable.isMarketTableV2Group(el2)) && !el2.slot);\n\t          if (children.length > 0) {\n\t            this.tableGroupExpandTimeout = setTimeout(async () => {\n\t              await targetSibling.setCollapsed(false);\n\t              await raf.asyncRequestAnimationFrame();\n\t              parent.after(cursor);\n\t            }, TABLE_GROUP_EXPAND_TIMEOUT_DURATION);\n\t          }\n\t        }\n\t      } else {\n\t        const halfway = Math.round(top + height / 2);\n\t        if (y < halfway) {\n\t          targetSibling.before(cursor);\n\t        } else {\n\t          parent.after(cursor);\n\t        }\n\t      }\n\t    } else {\n\t      const { top, height } = targetSibling.getBoundingClientRect();\n\t      const halfway = Math.round(top + height / 2);\n\t      if (y < halfway) {\n\t        targetSibling.before(cursor);\n\t      } else {\n\t        targetSibling.after(cursor);\n\t      }\n\t    }\n\t    (_c = cursor.parentElement) === null || _c === void 0 ? void 0 : _c.classList.add(\"market-drag-cursor-parent\");\n\t  }\n\t  /**\n\t   * Fired on a target element when a dragged item leaves the target\n\t   */\n\t  dragLeave() {\n\t    var _b;\n\t    const { tableGroupExpandTimeout } = this;\n\t    const { cursor } = _a;\n\t    (_b = cursor.parentElement) === null || _b === void 0 ? void 0 : _b.classList.remove(\"market-drag-cursor-parent\");\n\t    cursor.remove();\n\t    clearTimeout(tableGroupExpandTimeout);\n\t  }\n\t  /**\n\t   * Fired on a dragged item when it is released.\n\t   * Useful to determine if an item was dropped externally.\n\t   */\n\t  dragEnd(e) {\n\t    const { el, accepts, event, tableGroupExpandTimeout } = this;\n\t    const { el: dragged, source } = e.detail;\n\t    const { cursor } = _a;\n\t    clearTimeout(tableGroupExpandTimeout);\n\t    const target = cursor.parentElement;\n\t    if (!this.isValidDrag(dragged, source, target))\n\t      return;\n\t    const reorderableSource = source === null || source === void 0 ? void 0 : source.closest('[reorderable=\"internal\"], [reorderable=\"external\"]');\n\t    const reorderableTarget = target === null || target === void 0 ? void 0 : target.closest('[reorderable=\"internal\"], [reorderable=\"external\"]');\n\t    if (reorderableSource === reorderableTarget)\n\t      return;\n\t    e.stopImmediatePropagation();\n\t    const items = getReorderableItems(el, accepts);\n\t    const oldIndex = items.indexOf(dragged);\n\t    const newIndex = -1;\n\t    const { defaultPrevented } = event.emit({\n\t      item: dragged,\n\t      oldIndex,\n\t      newIndex\n\t    });\n\t    if (defaultPrevented) {\n\t      e.preventDefault();\n\t      cursor.remove();\n\t    }\n\t  }\n\t  /**\n\t   * Fired on a target element when a dragged item is released over the target.\n\t   */\n\t  async dragDrop(e) {\n\t    const { el, accepts, event, mode, tableGroupExpandTimeout } = this;\n\t    const { el: dragged, source } = e.detail;\n\t    const { cursor } = _a;\n\t    clearTimeout(tableGroupExpandTimeout);\n\t    const reorderableTarget = cursor.parentElement;\n\t    if (el !== reorderableTarget)\n\t      return;\n\t    if (!this.isValidDrag(dragged, source, reorderableTarget))\n\t      return;\n\t    e.stopImmediatePropagation();\n\t    reorderableTarget === null || reorderableTarget === void 0 ? void 0 : reorderableTarget.classList.remove(\"market-drag-cursor-parent\");\n\t    if ([cursor.previousElementSibling, cursor.nextElementSibling].includes(dragged)) {\n\t      cursor.remove();\n\t      return;\n\t    }\n\t    const items = getReorderableItems(reorderableTarget, accepts);\n\t    const oldIndex = items.indexOf(dragged);\n\t    const itemsWithoutDraggedEl = [...items];\n\t    if (oldIndex >= 0) {\n\t      itemsWithoutDraggedEl.splice(oldIndex, 1);\n\t    }\n\t    const newIndex = itemsWithoutDraggedEl.indexOf(cursor.previousElementSibling) + 1;\n\t    if (newIndex === oldIndex) {\n\t      cursor.remove();\n\t      return;\n\t    }\n\t    const originalPosition = document.createElement(\"div\");\n\t    dragged.replaceWith(originalPosition);\n\t    cursor.replaceWith(dragged);\n\t    await new Promise((resolve) => dragged.addEventListener(\"marketDragComplete\", resolve, { once: true }));\n\t    if (mode === \"framework\")\n\t      originalPosition.replaceWith(dragged);\n\t    const { defaultPrevented } = event.emit({\n\t      item: dragged,\n\t      oldIndex,\n\t      newIndex\n\t    });\n\t    if (defaultPrevented && mode === \"default\")\n\t      originalPosition.replaceWith(dragged);\n\t    originalPosition.remove();\n\t  }\n\t  // clean up var refs\n\t  destroy() {\n\t    _a.cursor.remove();\n\t    clearTimeout(this.tableGroupExpandTimeout);\n\t    this.el = null;\n\t    this.accepts = null;\n\t    this.event = null;\n\t    this.mode = null;\n\t    this.tableGroupExpandTimeout = null;\n\t  }\n\t}\n\t_a = Reorderable;\n\tReorderable.cursor = _a.createCursor();\n\tfunction getReorderableItems(el, accepts) {\n\t  return [...el.children].filter((child) => {\n\t    const matchesSelector = accepts.some((selector) => child.matches(selector));\n\t    return matchesSelector && draggable.isDraggable(child);\n\t  });\n\t}\n\tfunction getCommonAncestor(node1, node2) {\n\t  let node = node1;\n\t  while (node) {\n\t    if (node.contains(node2)) {\n\t      return node;\n\t    }\n\t    node = node.parentElement;\n\t  }\n\t  return null;\n\t}\n\treorderable3af89049.Reorderable = Reorderable;\n\treturn reorderable3af89049;\n}\n\nvar _baseIsEqual9956408d = {};\n\nvar _arrayPush24af5aa3 = {};\n\nvar _getNative666f22b9 = {};\n\nvar hasRequired_getNative666f22b9;\n\nfunction require_getNative666f22b9 () {\n\tif (hasRequired_getNative666f22b9) return _getNative666f22b9;\n\thasRequired_getNative666f22b9 = 1;\n\tconst isObject = requireIsObject7dcf0083();\n\tvar asyncTag = \"[object AsyncFunction]\", funcTag = \"[object Function]\", genTag = \"[object GeneratorFunction]\", proxyTag = \"[object Proxy]\";\n\tfunction isFunction(value) {\n\t  if (!isObject.isObject(value)) {\n\t    return false;\n\t  }\n\t  var tag = isObject.baseGetTag(value);\n\t  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n\t}\n\tvar coreJsData = isObject.root[\"__core-js_shared__\"];\n\tconst coreJsData$1 = coreJsData;\n\tvar maskSrcKey = function() {\n\t  var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || \"\");\n\t  return uid ? \"Symbol(src)_1.\" + uid : \"\";\n\t}();\n\tfunction isMasked(func) {\n\t  return !!maskSrcKey && maskSrcKey in func;\n\t}\n\tvar funcProto$1 = Function.prototype;\n\tvar funcToString$1 = funcProto$1.toString;\n\tfunction toSource(func) {\n\t  if (func != null) {\n\t    try {\n\t      return funcToString$1.call(func);\n\t    } catch (e) {\n\t    }\n\t    try {\n\t      return func + \"\";\n\t    } catch (e) {\n\t    }\n\t  }\n\t  return \"\";\n\t}\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\tvar funcProto = Function.prototype, objectProto = Object.prototype;\n\tvar funcToString = funcProto.toString;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tvar reIsNative = RegExp(\n\t  \"^\" + funcToString.call(hasOwnProperty).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n\t);\n\tfunction baseIsNative(value) {\n\t  if (!isObject.isObject(value) || isMasked(value)) {\n\t    return false;\n\t  }\n\t  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n\t  return pattern.test(toSource(value));\n\t}\n\tfunction getValue(object, key) {\n\t  return object == null ? void 0 : object[key];\n\t}\n\tfunction getNative(object, key) {\n\t  var value = getValue(object, key);\n\t  return baseIsNative(value) ? value : void 0;\n\t}\n\t_getNative666f22b9.getNative = getNative;\n\t_getNative666f22b9.isFunction = isFunction;\n\t_getNative666f22b9.toSource = toSource;\n\treturn _getNative666f22b9;\n}\n\nvar _Map07e1b6b7 = {};\n\nvar hasRequired_Map07e1b6b7;\n\nfunction require_Map07e1b6b7 () {\n\tif (hasRequired_Map07e1b6b7) return _Map07e1b6b7;\n\thasRequired_Map07e1b6b7 = 1;\n\tconst isObject = requireIsObject7dcf0083();\n\tconst _getNative = require_getNative666f22b9();\n\tvar isArray = Array.isArray;\n\tconst isArray$1 = isArray;\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\tfunction isLength(value) {\n\t  return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\tvar argsTag = \"[object Arguments]\";\n\tfunction baseIsArguments(value) {\n\t  return isObject.isObjectLike(value) && isObject.baseGetTag(value) == argsTag;\n\t}\n\tvar objectProto = Object.prototype;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\tvar isArguments = baseIsArguments(/* @__PURE__ */ function() {\n\t  return arguments;\n\t}()) ? baseIsArguments : function(value) {\n\t  return isObject.isObjectLike(value) && hasOwnProperty.call(value, \"callee\") && !propertyIsEnumerable.call(value, \"callee\");\n\t};\n\tconst isArguments$1 = isArguments;\n\tvar Map = _getNative.getNative(isObject.root, \"Map\");\n\tconst Map$1 = Map;\n\t_Map07e1b6b7.Map = Map$1;\n\t_Map07e1b6b7.isArguments = isArguments$1;\n\t_Map07e1b6b7.isArray = isArray$1;\n\t_Map07e1b6b7.isLength = isLength;\n\treturn _Map07e1b6b7;\n}\n\nvar hasRequired_arrayPush24af5aa3;\n\nfunction require_arrayPush24af5aa3 () {\n\tif (hasRequired_arrayPush24af5aa3) return _arrayPush24af5aa3;\n\thasRequired_arrayPush24af5aa3 = 1;\n\tconst _getNative = require_getNative666f22b9();\n\tconst _Map = require_Map07e1b6b7();\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\tfunction isIndex(value, length) {\n\t  var type = typeof value;\n\t  length = length == null ? MAX_SAFE_INTEGER : length;\n\t  return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n\t}\n\tfunction eq(value, other) {\n\t  return value === other || value !== value && other !== other;\n\t}\n\tvar nativeCreate = _getNative.getNative(Object, \"create\");\n\tconst nativeCreate$1 = nativeCreate;\n\tfunction hashClear() {\n\t  this.__data__ = nativeCreate$1 ? nativeCreate$1(null) : {};\n\t  this.size = 0;\n\t}\n\tfunction hashDelete(key) {\n\t  var result = this.has(key) && delete this.__data__[key];\n\t  this.size -= result ? 1 : 0;\n\t  return result;\n\t}\n\tvar HASH_UNDEFINED$1 = \"__lodash_hash_undefined__\";\n\tvar objectProto$1 = Object.prototype;\n\tvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\n\tfunction hashGet(key) {\n\t  var data = this.__data__;\n\t  if (nativeCreate$1) {\n\t    var result = data[key];\n\t    return result === HASH_UNDEFINED$1 ? void 0 : result;\n\t  }\n\t  return hasOwnProperty$1.call(data, key) ? data[key] : void 0;\n\t}\n\tvar objectProto = Object.prototype;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tfunction hashHas(key) {\n\t  var data = this.__data__;\n\t  return nativeCreate$1 ? data[key] !== void 0 : hasOwnProperty.call(data, key);\n\t}\n\tvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\n\tfunction hashSet(key, value) {\n\t  var data = this.__data__;\n\t  this.size += this.has(key) ? 0 : 1;\n\t  data[key] = nativeCreate$1 && value === void 0 ? HASH_UNDEFINED : value;\n\t  return this;\n\t}\n\tfunction Hash(entries) {\n\t  var index = -1, length = entries == null ? 0 : entries.length;\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\tHash.prototype.clear = hashClear;\n\tHash.prototype[\"delete\"] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\tfunction listCacheClear() {\n\t  this.__data__ = [];\n\t  this.size = 0;\n\t}\n\tfunction assocIndexOf(array, key) {\n\t  var length = array.length;\n\t  while (length--) {\n\t    if (eq(array[length][0], key)) {\n\t      return length;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\tvar arrayProto = Array.prototype;\n\tvar splice = arrayProto.splice;\n\tfunction listCacheDelete(key) {\n\t  var data = this.__data__, index = assocIndexOf(data, key);\n\t  if (index < 0) {\n\t    return false;\n\t  }\n\t  var lastIndex = data.length - 1;\n\t  if (index == lastIndex) {\n\t    data.pop();\n\t  } else {\n\t    splice.call(data, index, 1);\n\t  }\n\t  --this.size;\n\t  return true;\n\t}\n\tfunction listCacheGet(key) {\n\t  var data = this.__data__, index = assocIndexOf(data, key);\n\t  return index < 0 ? void 0 : data[index][1];\n\t}\n\tfunction listCacheHas(key) {\n\t  return assocIndexOf(this.__data__, key) > -1;\n\t}\n\tfunction listCacheSet(key, value) {\n\t  var data = this.__data__, index = assocIndexOf(data, key);\n\t  if (index < 0) {\n\t    ++this.size;\n\t    data.push([key, value]);\n\t  } else {\n\t    data[index][1] = value;\n\t  }\n\t  return this;\n\t}\n\tfunction ListCache(entries) {\n\t  var index = -1, length = entries == null ? 0 : entries.length;\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype[\"delete\"] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\tfunction mapCacheClear() {\n\t  this.size = 0;\n\t  this.__data__ = {\n\t    \"hash\": new Hash(),\n\t    \"map\": new (_Map.Map || ListCache)(),\n\t    \"string\": new Hash()\n\t  };\n\t}\n\tfunction isKeyable(value) {\n\t  var type = typeof value;\n\t  return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n\t}\n\tfunction getMapData(map, key) {\n\t  var data = map.__data__;\n\t  return isKeyable(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n\t}\n\tfunction mapCacheDelete(key) {\n\t  var result = getMapData(this, key)[\"delete\"](key);\n\t  this.size -= result ? 1 : 0;\n\t  return result;\n\t}\n\tfunction mapCacheGet(key) {\n\t  return getMapData(this, key).get(key);\n\t}\n\tfunction mapCacheHas(key) {\n\t  return getMapData(this, key).has(key);\n\t}\n\tfunction mapCacheSet(key, value) {\n\t  var data = getMapData(this, key), size = data.size;\n\t  data.set(key, value);\n\t  this.size += data.size == size ? 0 : 1;\n\t  return this;\n\t}\n\tfunction MapCache(entries) {\n\t  var index = -1, length = entries == null ? 0 : entries.length;\n\t  this.clear();\n\t  while (++index < length) {\n\t    var entry = entries[index];\n\t    this.set(entry[0], entry[1]);\n\t  }\n\t}\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype[\"delete\"] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\tfunction arrayPush(array, values) {\n\t  var index = -1, length = values.length, offset = array.length;\n\t  while (++index < length) {\n\t    array[offset + index] = values[index];\n\t  }\n\t  return array;\n\t}\n\t_arrayPush24af5aa3.ListCache = ListCache;\n\t_arrayPush24af5aa3.MapCache = MapCache;\n\t_arrayPush24af5aa3.arrayPush = arrayPush;\n\t_arrayPush24af5aa3.eq = eq;\n\t_arrayPush24af5aa3.isIndex = isIndex;\n\treturn _arrayPush24af5aa3;\n}\n\nvar _getTag7be0e78a = {exports: {}};\n\n_getTag7be0e78a.exports;\n\nvar hasRequired_getTag7be0e78a;\n\nfunction require_getTag7be0e78a () {\n\tif (hasRequired_getTag7be0e78a) return _getTag7be0e78a.exports;\n\thasRequired_getTag7be0e78a = 1;\n\t(function (module, exports) {\n\t\tconst _getNative = require_getNative666f22b9();\n\t\tconst _Map = require_Map07e1b6b7();\n\t\tconst isObject = requireIsObject7dcf0083();\n\t\tvar WeakMap = _getNative.getNative(isObject.root, \"WeakMap\");\n\t\tconst WeakMap$1 = WeakMap;\n\t\tfunction isArrayLike(value) {\n\t\t  return value != null && _Map.isLength(value.length) && !_getNative.isFunction(value);\n\t\t}\n\t\tvar objectProto$1 = Object.prototype;\n\t\tfunction isPrototype(value) {\n\t\t  var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto$1;\n\t\t  return value === proto;\n\t\t}\n\t\tfunction stubFalse() {\n\t\t  return false;\n\t\t}\n\t\tvar freeExports$1 = exports && !exports.nodeType && exports;\n\t\tvar freeModule$1 = freeExports$1 && 'object' == \"object\" && module && !module.nodeType && module;\n\t\tvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\t\tvar Buffer = moduleExports$1 ? isObject.root.Buffer : void 0;\n\t\tvar nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0;\n\t\tvar isBuffer = nativeIsBuffer || stubFalse;\n\t\tconst isBuffer$1 = isBuffer;\n\t\tvar argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", errorTag = \"[object Error]\", funcTag = \"[object Function]\", mapTag$1 = \"[object Map]\", numberTag = \"[object Number]\", objectTag$1 = \"[object Object]\", regexpTag = \"[object RegExp]\", setTag$1 = \"[object Set]\", stringTag = \"[object String]\", weakMapTag$1 = \"[object WeakMap]\";\n\t\tvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag$1 = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\n\t\tvar typedArrayTags = {};\n\t\ttypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n\t\ttypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag$1] = typedArrayTags[numberTag] = typedArrayTags[objectTag$1] = typedArrayTags[regexpTag] = typedArrayTags[setTag$1] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag$1] = false;\n\t\tfunction baseIsTypedArray(value) {\n\t\t  return isObject.isObjectLike(value) && _Map.isLength(value.length) && !!typedArrayTags[isObject.baseGetTag(value)];\n\t\t}\n\t\tfunction baseUnary(func) {\n\t\t  return function(value) {\n\t\t    return func(value);\n\t\t  };\n\t\t}\n\t\tvar freeExports = exports && !exports.nodeType && exports;\n\t\tvar freeModule = freeExports && 'object' == \"object\" && module && !module.nodeType && module;\n\t\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\t\tvar freeProcess = moduleExports && isObject.freeGlobal.process;\n\t\tvar nodeUtil = function() {\n\t\t  try {\n\t\t    var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n\t\t    if (types) {\n\t\t      return types;\n\t\t    }\n\t\t    return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n\t\t  } catch (e) {\n\t\t  }\n\t\t}();\n\t\tconst nodeUtil$1 = nodeUtil;\n\t\tvar nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray;\n\t\tvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\t\tconst isTypedArray$1 = isTypedArray;\n\t\tfunction overArg(func, transform) {\n\t\t  return function(arg) {\n\t\t    return func(transform(arg));\n\t\t  };\n\t\t}\n\t\tvar nativeKeys = overArg(Object.keys, Object);\n\t\tconst nativeKeys$1 = nativeKeys;\n\t\tvar objectProto = Object.prototype;\n\t\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\tfunction baseKeys(object) {\n\t\t  if (!isPrototype(object)) {\n\t\t    return nativeKeys$1(object);\n\t\t  }\n\t\t  var result = [];\n\t\t  for (var key in Object(object)) {\n\t\t    if (hasOwnProperty.call(object, key) && key != \"constructor\") {\n\t\t      result.push(key);\n\t\t    }\n\t\t  }\n\t\t  return result;\n\t\t}\n\t\tvar DataView = _getNative.getNative(isObject.root, \"DataView\");\n\t\tconst DataView$1 = DataView;\n\t\tvar Promise$1 = _getNative.getNative(isObject.root, \"Promise\");\n\t\tconst Promise$2 = Promise$1;\n\t\tvar Set = _getNative.getNative(isObject.root, \"Set\");\n\t\tconst Set$1 = Set;\n\t\tvar mapTag = \"[object Map]\", objectTag = \"[object Object]\", promiseTag = \"[object Promise]\", setTag = \"[object Set]\", weakMapTag = \"[object WeakMap]\";\n\t\tvar dataViewTag = \"[object DataView]\";\n\t\tvar dataViewCtorString = _getNative.toSource(DataView$1), mapCtorString = _getNative.toSource(_Map.Map), promiseCtorString = _getNative.toSource(Promise$2), setCtorString = _getNative.toSource(Set$1), weakMapCtorString = _getNative.toSource(WeakMap$1);\n\t\tvar getTag = isObject.baseGetTag;\n\t\tif (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag || _Map.Map && getTag(new _Map.Map()) != mapTag || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag) {\n\t\t  getTag = function(value) {\n\t\t    var result = isObject.baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? _getNative.toSource(Ctor) : \"\";\n\t\t    if (ctorString) {\n\t\t      switch (ctorString) {\n\t\t        case dataViewCtorString:\n\t\t          return dataViewTag;\n\t\t        case mapCtorString:\n\t\t          return mapTag;\n\t\t        case promiseCtorString:\n\t\t          return promiseTag;\n\t\t        case setCtorString:\n\t\t          return setTag;\n\t\t        case weakMapCtorString:\n\t\t          return weakMapTag;\n\t\t      }\n\t\t    }\n\t\t    return result;\n\t\t  };\n\t\t}\n\t\tconst getTag$1 = getTag;\n\t\texports.Set = Set$1;\n\t\texports.baseKeys = baseKeys;\n\t\texports.getTag = getTag$1;\n\t\texports.isArrayLike = isArrayLike;\n\t\texports.isBuffer = isBuffer$1;\n\t\texports.isPrototype = isPrototype;\n\t\texports.isTypedArray = isTypedArray$1; \n\t} (_getTag7be0e78a, _getTag7be0e78a.exports));\n\treturn _getTag7be0e78a.exports;\n}\n\nvar hasRequired_baseIsEqual9956408d;\n\nfunction require_baseIsEqual9956408d () {\n\tif (hasRequired_baseIsEqual9956408d) return _baseIsEqual9956408d;\n\thasRequired_baseIsEqual9956408d = 1;\n\tconst _arrayPush = require_arrayPush24af5aa3();\n\tconst _Map = require_Map07e1b6b7();\n\tconst isObject = requireIsObject7dcf0083();\n\tconst _getTag = require_getTag7be0e78a();\n\tfunction baseTimes(n, iteratee) {\n\t  var index = -1, result = Array(n);\n\t  while (++index < n) {\n\t    result[index] = iteratee(index);\n\t  }\n\t  return result;\n\t}\n\tvar objectProto$3 = Object.prototype;\n\tvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\n\tfunction arrayLikeKeys(value, inherited) {\n\t  var isArr = _Map.isArray(value), isArg = !isArr && _Map.isArguments(value), isBuff = !isArr && !isArg && _getTag.isBuffer(value), isType = !isArr && !isArg && !isBuff && _getTag.isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;\n\t  for (var key in value) {\n\t    if ((hasOwnProperty$2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n\t    (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n\t    isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n\t    isType && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n\t    _arrayPush.isIndex(key, length)))) {\n\t      result.push(key);\n\t    }\n\t  }\n\t  return result;\n\t}\n\tfunction keys(object) {\n\t  return _getTag.isArrayLike(object) ? arrayLikeKeys(object) : _getTag.baseKeys(object);\n\t}\n\tfunction stackClear() {\n\t  this.__data__ = new _arrayPush.ListCache();\n\t  this.size = 0;\n\t}\n\tfunction stackDelete(key) {\n\t  var data = this.__data__, result = data[\"delete\"](key);\n\t  this.size = data.size;\n\t  return result;\n\t}\n\tfunction stackGet(key) {\n\t  return this.__data__.get(key);\n\t}\n\tfunction stackHas(key) {\n\t  return this.__data__.has(key);\n\t}\n\tvar LARGE_ARRAY_SIZE = 200;\n\tfunction stackSet(key, value) {\n\t  var data = this.__data__;\n\t  if (data instanceof _arrayPush.ListCache) {\n\t    var pairs = data.__data__;\n\t    if (!_Map.Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n\t      pairs.push([key, value]);\n\t      this.size = ++data.size;\n\t      return this;\n\t    }\n\t    data = this.__data__ = new _arrayPush.MapCache(pairs);\n\t  }\n\t  data.set(key, value);\n\t  this.size = data.size;\n\t  return this;\n\t}\n\tfunction Stack(entries) {\n\t  var data = this.__data__ = new _arrayPush.ListCache(entries);\n\t  this.size = data.size;\n\t}\n\tStack.prototype.clear = stackClear;\n\tStack.prototype[\"delete\"] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\tfunction arrayFilter(array, predicate) {\n\t  var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n\t  while (++index < length) {\n\t    var value = array[index];\n\t    if (predicate(value, index, array)) {\n\t      result[resIndex++] = value;\n\t    }\n\t  }\n\t  return result;\n\t}\n\tfunction stubArray() {\n\t  return [];\n\t}\n\tvar objectProto$2 = Object.prototype;\n\tvar propertyIsEnumerable = objectProto$2.propertyIsEnumerable;\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\tvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n\t  if (object == null) {\n\t    return [];\n\t  }\n\t  object = Object(object);\n\t  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n\t    return propertyIsEnumerable.call(object, symbol);\n\t  });\n\t};\n\tconst getSymbols$1 = getSymbols;\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t  var result = keysFunc(object);\n\t  return _Map.isArray(object) ? result : _arrayPush.arrayPush(result, symbolsFunc(object));\n\t}\n\tfunction getAllKeys(object) {\n\t  return baseGetAllKeys(object, keys, getSymbols$1);\n\t}\n\tvar Uint8Array = isObject.root.Uint8Array;\n\tconst Uint8Array$1 = Uint8Array;\n\tvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\n\tfunction setCacheAdd(value) {\n\t  this.__data__.set(value, HASH_UNDEFINED);\n\t  return this;\n\t}\n\tfunction setCacheHas(value) {\n\t  return this.__data__.has(value);\n\t}\n\tfunction SetCache(values) {\n\t  var index = -1, length = values == null ? 0 : values.length;\n\t  this.__data__ = new _arrayPush.MapCache();\n\t  while (++index < length) {\n\t    this.add(values[index]);\n\t  }\n\t}\n\tSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n\tSetCache.prototype.has = setCacheHas;\n\tfunction arraySome(array, predicate) {\n\t  var index = -1, length = array == null ? 0 : array.length;\n\t  while (++index < length) {\n\t    if (predicate(array[index], index, array)) {\n\t      return true;\n\t    }\n\t  }\n\t  return false;\n\t}\n\tfunction cacheHas(cache, key) {\n\t  return cache.has(key);\n\t}\n\tvar COMPARE_PARTIAL_FLAG$3 = 1, COMPARE_UNORDERED_FLAG$1 = 2;\n\tfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n\t  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, arrLength = array.length, othLength = other.length;\n\t  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n\t    return false;\n\t  }\n\t  var arrStacked = stack.get(array);\n\t  var othStacked = stack.get(other);\n\t  if (arrStacked && othStacked) {\n\t    return arrStacked == other && othStacked == array;\n\t  }\n\t  var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$1 ? new SetCache() : void 0;\n\t  stack.set(array, other);\n\t  stack.set(other, array);\n\t  while (++index < arrLength) {\n\t    var arrValue = array[index], othValue = other[index];\n\t    if (customizer) {\n\t      var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n\t    }\n\t    if (compared !== void 0) {\n\t      if (compared) {\n\t        continue;\n\t      }\n\t      result = false;\n\t      break;\n\t    }\n\t    if (seen) {\n\t      if (!arraySome(other, function(othValue2, othIndex) {\n\t        if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n\t          return seen.push(othIndex);\n\t        }\n\t      })) {\n\t        result = false;\n\t        break;\n\t      }\n\t    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n\t      result = false;\n\t      break;\n\t    }\n\t  }\n\t  stack[\"delete\"](array);\n\t  stack[\"delete\"](other);\n\t  return result;\n\t}\n\tfunction mapToArray(map) {\n\t  var index = -1, result = Array(map.size);\n\t  map.forEach(function(value, key) {\n\t    result[++index] = [key, value];\n\t  });\n\t  return result;\n\t}\n\tfunction setToArray(set) {\n\t  var index = -1, result = Array(set.size);\n\t  set.forEach(function(value) {\n\t    result[++index] = value;\n\t  });\n\t  return result;\n\t}\n\tvar COMPARE_PARTIAL_FLAG$2 = 1, COMPARE_UNORDERED_FLAG = 2;\n\tvar boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", errorTag = \"[object Error]\", mapTag = \"[object Map]\", numberTag = \"[object Number]\", regexpTag = \"[object RegExp]\", setTag = \"[object Set]\", stringTag = \"[object String]\", symbolTag = \"[object Symbol]\";\n\tvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag = \"[object DataView]\";\n\tvar symbolProto = isObject.Symbol ? isObject.Symbol.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;\n\tfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n\t  switch (tag) {\n\t    case dataViewTag:\n\t      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n\t        return false;\n\t      }\n\t      object = object.buffer;\n\t      other = other.buffer;\n\t    case arrayBufferTag:\n\t      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {\n\t        return false;\n\t      }\n\t      return true;\n\t    case boolTag:\n\t    case dateTag:\n\t    case numberTag:\n\t      return _arrayPush.eq(+object, +other);\n\t    case errorTag:\n\t      return object.name == other.name && object.message == other.message;\n\t    case regexpTag:\n\t    case stringTag:\n\t      return object == other + \"\";\n\t    case mapTag:\n\t      var convert = mapToArray;\n\t    case setTag:\n\t      var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2;\n\t      convert || (convert = setToArray);\n\t      if (object.size != other.size && !isPartial) {\n\t        return false;\n\t      }\n\t      var stacked = stack.get(object);\n\t      if (stacked) {\n\t        return stacked == other;\n\t      }\n\t      bitmask |= COMPARE_UNORDERED_FLAG;\n\t      stack.set(object, other);\n\t      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n\t      stack[\"delete\"](object);\n\t      return result;\n\t    case symbolTag:\n\t      if (symbolValueOf) {\n\t        return symbolValueOf.call(object) == symbolValueOf.call(other);\n\t      }\n\t  }\n\t  return false;\n\t}\n\tvar COMPARE_PARTIAL_FLAG$1 = 1;\n\tvar objectProto$1 = Object.prototype;\n\tvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\n\tfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n\t  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;\n\t  if (objLength != othLength && !isPartial) {\n\t    return false;\n\t  }\n\t  var index = objLength;\n\t  while (index--) {\n\t    var key = objProps[index];\n\t    if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) {\n\t      return false;\n\t    }\n\t  }\n\t  var objStacked = stack.get(object);\n\t  var othStacked = stack.get(other);\n\t  if (objStacked && othStacked) {\n\t    return objStacked == other && othStacked == object;\n\t  }\n\t  var result = true;\n\t  stack.set(object, other);\n\t  stack.set(other, object);\n\t  var skipCtor = isPartial;\n\t  while (++index < objLength) {\n\t    key = objProps[index];\n\t    var objValue = object[key], othValue = other[key];\n\t    if (customizer) {\n\t      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n\t    }\n\t    if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n\t      result = false;\n\t      break;\n\t    }\n\t    skipCtor || (skipCtor = key == \"constructor\");\n\t  }\n\t  if (result && !skipCtor) {\n\t    var objCtor = object.constructor, othCtor = other.constructor;\n\t    if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n\t      result = false;\n\t    }\n\t  }\n\t  stack[\"delete\"](object);\n\t  stack[\"delete\"](other);\n\t  return result;\n\t}\n\tvar COMPARE_PARTIAL_FLAG = 1;\n\tvar argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", objectTag = \"[object Object]\";\n\tvar objectProto = Object.prototype;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n\t  var objIsArr = _Map.isArray(object), othIsArr = _Map.isArray(other), objTag = objIsArr ? arrayTag : _getTag.getTag(object), othTag = othIsArr ? arrayTag : _getTag.getTag(other);\n\t  objTag = objTag == argsTag ? objectTag : objTag;\n\t  othTag = othTag == argsTag ? objectTag : othTag;\n\t  var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;\n\t  if (isSameTag && _getTag.isBuffer(object)) {\n\t    if (!_getTag.isBuffer(other)) {\n\t      return false;\n\t    }\n\t    objIsArr = true;\n\t    objIsObj = false;\n\t  }\n\t  if (isSameTag && !objIsObj) {\n\t    stack || (stack = new Stack());\n\t    return objIsArr || _getTag.isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n\t  }\n\t  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n\t    var objIsWrapped = objIsObj && hasOwnProperty.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty.call(other, \"__wrapped__\");\n\t    if (objIsWrapped || othIsWrapped) {\n\t      var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n\t      stack || (stack = new Stack());\n\t      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n\t    }\n\t  }\n\t  if (!isSameTag) {\n\t    return false;\n\t  }\n\t  stack || (stack = new Stack());\n\t  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n\t}\n\tfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n\t  if (value === other) {\n\t    return true;\n\t  }\n\t  if (value == null || other == null || !isObject.isObjectLike(value) && !isObject.isObjectLike(other)) {\n\t    return value !== value && other !== other;\n\t  }\n\t  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n\t}\n\t_baseIsEqual9956408d.SetCache = SetCache;\n\t_baseIsEqual9956408d.Stack = Stack;\n\t_baseIsEqual9956408d.baseIsEqual = baseIsEqual;\n\t_baseIsEqual9956408d.cacheHas = cacheHas;\n\t_baseIsEqual9956408d.keys = keys;\n\t_baseIsEqual9956408d.setToArray = setToArray;\n\treturn _baseIsEqual9956408d;\n}\n\nvar hasInEb92da66 = {};\n\nvar hasRequiredHasInEb92da66;\n\nfunction requireHasInEb92da66 () {\n\tif (hasRequiredHasInEb92da66) return hasInEb92da66;\n\thasRequiredHasInEb92da66 = 1;\n\tconst _Map = require_Map07e1b6b7();\n\tconst isSymbol = requireIsSymbolFbd13c73();\n\tconst _arrayPush = require_arrayPush24af5aa3();\n\tconst isObject = requireIsObject7dcf0083();\n\tfunction arrayMap(array, iteratee) {\n\t  var index = -1, length = array == null ? 0 : array.length, result = Array(length);\n\t  while (++index < length) {\n\t    result[index] = iteratee(array[index], index, array);\n\t  }\n\t  return result;\n\t}\n\tvar symbolProto = isObject.Symbol ? isObject.Symbol.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;\n\tfunction baseToString(value) {\n\t  if (typeof value == \"string\") {\n\t    return value;\n\t  }\n\t  if (_Map.isArray(value)) {\n\t    return arrayMap(value, baseToString) + \"\";\n\t  }\n\t  if (isSymbol.isSymbol(value)) {\n\t    return symbolToString ? symbolToString.call(value) : \"\";\n\t  }\n\t  var result = value + \"\";\n\t  return result == \"0\" && 1 / value == -Infinity ? \"-0\" : result;\n\t}\n\tvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/, reIsPlainProp = /^\\w*$/;\n\tfunction isKey(value, object) {\n\t  if (_Map.isArray(value)) {\n\t    return false;\n\t  }\n\t  var type = typeof value;\n\t  if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol.isSymbol(value)) {\n\t    return true;\n\t  }\n\t  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n\t}\n\tvar FUNC_ERROR_TEXT = \"Expected a function\";\n\tfunction memoize(func, resolver) {\n\t  if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  var memoized = function() {\n\t    var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n\t    if (cache.has(key)) {\n\t      return cache.get(key);\n\t    }\n\t    var result = func.apply(this, args);\n\t    memoized.cache = cache.set(key, result) || cache;\n\t    return result;\n\t  };\n\t  memoized.cache = new (memoize.Cache || _arrayPush.MapCache)();\n\t  return memoized;\n\t}\n\tmemoize.Cache = _arrayPush.MapCache;\n\tvar MAX_MEMOIZE_SIZE = 500;\n\tfunction memoizeCapped(func) {\n\t  var result = memoize(func, function(key) {\n\t    if (cache.size === MAX_MEMOIZE_SIZE) {\n\t      cache.clear();\n\t    }\n\t    return key;\n\t  });\n\t  var cache = result.cache;\n\t  return result;\n\t}\n\tvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\tvar reEscapeChar = /\\\\(\\\\)?/g;\n\tvar stringToPath = memoizeCapped(function(string) {\n\t  var result = [];\n\t  if (string.charCodeAt(0) === 46) {\n\t    result.push(\"\");\n\t  }\n\t  string.replace(rePropName, function(match, number, quote, subString) {\n\t    result.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match);\n\t  });\n\t  return result;\n\t});\n\tconst stringToPath$1 = stringToPath;\n\tfunction toString(value) {\n\t  return value == null ? \"\" : baseToString(value);\n\t}\n\tfunction castPath(value, object) {\n\t  if (_Map.isArray(value)) {\n\t    return value;\n\t  }\n\t  return isKey(value, object) ? [value] : stringToPath$1(toString(value));\n\t}\n\tfunction toKey(value) {\n\t  if (typeof value == \"string\" || isSymbol.isSymbol(value)) {\n\t    return value;\n\t  }\n\t  var result = value + \"\";\n\t  return result == \"0\" && 1 / value == -Infinity ? \"-0\" : result;\n\t}\n\tfunction baseGet(object, path) {\n\t  path = castPath(path, object);\n\t  var index = 0, length = path.length;\n\t  while (object != null && index < length) {\n\t    object = object[toKey(path[index++])];\n\t  }\n\t  return index && index == length ? object : void 0;\n\t}\n\tfunction baseHasIn(object, key) {\n\t  return object != null && key in Object(object);\n\t}\n\tfunction hasPath(object, path, hasFunc) {\n\t  path = castPath(path, object);\n\t  var index = -1, length = path.length, result = false;\n\t  while (++index < length) {\n\t    var key = toKey(path[index]);\n\t    if (!(result = object != null && hasFunc(object, key))) {\n\t      break;\n\t    }\n\t    object = object[key];\n\t  }\n\t  if (result || ++index != length) {\n\t    return result;\n\t  }\n\t  length = object == null ? 0 : object.length;\n\t  return !!length && _Map.isLength(length) && _arrayPush.isIndex(key, length) && (_Map.isArray(object) || _Map.isArguments(object));\n\t}\n\tfunction hasIn(object, path) {\n\t  return object != null && hasPath(object, path, baseHasIn);\n\t}\n\thasInEb92da66.baseGet = baseGet;\n\thasInEb92da66.castPath = castPath;\n\thasInEb92da66.hasIn = hasIn;\n\thasInEb92da66.isKey = isKey;\n\thasInEb92da66.toKey = toKey;\n\treturn hasInEb92da66;\n}\n\nvar identity8189b2e1 = {};\n\nvar hasRequiredIdentity8189b2e1;\n\nfunction requireIdentity8189b2e1 () {\n\tif (hasRequiredIdentity8189b2e1) return identity8189b2e1;\n\thasRequiredIdentity8189b2e1 = 1;\n\tfunction identity(value) {\n\t  return value;\n\t}\n\tidentity8189b2e1.identity = identity;\n\treturn identity8189b2e1;\n}\n\nvar hasRequiredMarketList_cjs_entry;\n\nfunction requireMarketList_cjs_entry () {\n\tif (hasRequiredMarketList_cjs_entry) return marketList_cjs_entry;\n\thasRequiredMarketList_cjs_entry = 1;\n\tObject.defineProperty(marketList_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst raf = requireRafEa414557();\n\tconst reorderable = requireReorderable3af89049();\n\tconst draggable = requireDraggableA7663027();\n\tconst utils = requireUtils8cc937f5();\n\tconst _baseIsEqual = require_baseIsEqual9956408d();\n\tconst isObject = requireIsObject7dcf0083();\n\tconst hasIn = requireHasInEb92da66();\n\tconst identity = requireIdentity8189b2e1();\n\tconst _Map = require_Map07e1b6b7();\n\tconst _getTag = require_getTag7be0e78a();\n\trequireMaxZIndex536dd36e();\n\trequire_arrayPush24af5aa3();\n\trequire_getNative666f22b9();\n\trequireIsSymbolFbd13c73();\n\tfunction noop() {\n\t}\n\tfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n\t  var length = array.length, index2 = fromIndex + (-1);\n\t  while (++index2 < length) {\n\t    if (predicate(array[index2], index2, array)) {\n\t      return index2;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\tfunction baseIsNaN(value) {\n\t  return value !== value;\n\t}\n\tfunction strictIndexOf(array, value, fromIndex) {\n\t  var index2 = fromIndex - 1, length = array.length;\n\t  while (++index2 < length) {\n\t    if (array[index2] === value) {\n\t      return index2;\n\t    }\n\t  }\n\t  return -1;\n\t}\n\tfunction baseIndexOf(array, value, fromIndex) {\n\t  return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n\t}\n\tfunction arrayIncludes(array, value) {\n\t  var length = array == null ? 0 : array.length;\n\t  return !!length && baseIndexOf(array, value, 0) > -1;\n\t}\n\tfunction get(object, path, defaultValue) {\n\t  var result = object == null ? void 0 : hasIn.baseGet(object, path);\n\t  return result === void 0 ? defaultValue : result;\n\t}\n\tvar COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;\n\tfunction baseIsMatch(object, source, matchData, customizer) {\n\t  var index2 = matchData.length, length = index2;\n\t  if (object == null) {\n\t    return !length;\n\t  }\n\t  object = Object(object);\n\t  while (index2--) {\n\t    var data = matchData[index2];\n\t    if (data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n\t      return false;\n\t    }\n\t  }\n\t  while (++index2 < length) {\n\t    data = matchData[index2];\n\t    var key = data[0], objValue = object[key], srcValue = data[1];\n\t    if (data[2]) {\n\t      if (objValue === void 0 && !(key in object)) {\n\t        return false;\n\t      }\n\t    } else {\n\t      var stack = new _baseIsEqual.Stack();\n\t      var result; \n\t      if (!(result === void 0 ? _baseIsEqual.baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {\n\t        return false;\n\t      }\n\t    }\n\t  }\n\t  return true;\n\t}\n\tfunction isStrictComparable(value) {\n\t  return value === value && !isObject.isObject(value);\n\t}\n\tfunction getMatchData(object) {\n\t  var result = _baseIsEqual.keys(object), length = result.length;\n\t  while (length--) {\n\t    var key = result[length], value = object[key];\n\t    result[length] = [key, value, isStrictComparable(value)];\n\t  }\n\t  return result;\n\t}\n\tfunction matchesStrictComparable(key, srcValue) {\n\t  return function(object) {\n\t    if (object == null) {\n\t      return false;\n\t    }\n\t    return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));\n\t  };\n\t}\n\tfunction baseMatches(source) {\n\t  var matchData = getMatchData(source);\n\t  if (matchData.length == 1 && matchData[0][2]) {\n\t    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n\t  }\n\t  return function(object) {\n\t    return object === source || baseIsMatch(object, source, matchData);\n\t  };\n\t}\n\tvar COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;\n\tfunction baseMatchesProperty(path, srcValue) {\n\t  if (hasIn.isKey(path) && isStrictComparable(srcValue)) {\n\t    return matchesStrictComparable(hasIn.toKey(path), srcValue);\n\t  }\n\t  return function(object) {\n\t    var objValue = get(object, path);\n\t    return objValue === void 0 && objValue === srcValue ? hasIn.hasIn(object, path) : _baseIsEqual.baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n\t  };\n\t}\n\tfunction baseProperty(key) {\n\t  return function(object) {\n\t    return object == null ? void 0 : object[key];\n\t  };\n\t}\n\tfunction basePropertyDeep(path) {\n\t  return function(object) {\n\t    return hasIn.baseGet(object, path);\n\t  };\n\t}\n\tfunction property(path) {\n\t  return hasIn.isKey(path) ? baseProperty(hasIn.toKey(path)) : basePropertyDeep(path);\n\t}\n\tfunction baseIteratee(value) {\n\t  if (typeof value == \"function\") {\n\t    return value;\n\t  }\n\t  if (value == null) {\n\t    return identity.identity;\n\t  }\n\t  if (typeof value == \"object\") {\n\t    return _Map.isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n\t  }\n\t  return property(value);\n\t}\n\tvar INFINITY = 1 / 0;\n\tvar createSet = !(_getTag.Set && 1 / _baseIsEqual.setToArray(new _getTag.Set([, -0]))[1] == INFINITY) ? noop : function(values) {\n\t  return new _getTag.Set(values);\n\t};\n\tconst createSet$1 = createSet;\n\tvar LARGE_ARRAY_SIZE = 200;\n\tfunction baseUniq(array, iteratee, comparator) {\n\t  var index2 = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;\n\t  if (length >= LARGE_ARRAY_SIZE) {\n\t    var set = iteratee ? null : createSet$1(array);\n\t    if (set) {\n\t      return _baseIsEqual.setToArray(set);\n\t    }\n\t    isCommon = false;\n\t    includes = _baseIsEqual.cacheHas;\n\t    seen = new _baseIsEqual.SetCache();\n\t  } else {\n\t    seen = iteratee ? [] : result;\n\t  }\n\t  outer:\n\t    while (++index2 < length) {\n\t      var value = array[index2], computed = iteratee ? iteratee(value) : value;\n\t      value = value !== 0 ? value : 0;\n\t      if (isCommon && computed === computed) {\n\t        var seenIndex = seen.length;\n\t        while (seenIndex--) {\n\t          if (seen[seenIndex] === computed) {\n\t            continue outer;\n\t          }\n\t        }\n\t        if (iteratee) {\n\t          seen.push(computed);\n\t        }\n\t        result.push(value);\n\t      } else if (!includes(seen, computed, comparator)) {\n\t        if (seen !== result) {\n\t          seen.push(computed);\n\t        }\n\t        result.push(value);\n\t      }\n\t    }\n\t  return result;\n\t}\n\tfunction uniqBy(array, iteratee) {\n\t  return array && array.length ? baseUniq(array, baseIteratee(iteratee)) : [];\n\t}\n\tconst marketListCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:block}::slotted(.market-action-card){margin-bottom:var(--core-metrics-spacing-200)}::slotted(.market-input-search){margin-bottom:var(--core-metrics-spacing-100)}.hidden,::slotted(.hidden){display:none}::slotted(.market-row.hide-bottom-border)::before{display:none}::slotted(.market-row:focus){z-index:1}.market-empty-state,::slotted(.market-empty-state){padding-right:0;padding-left:0;border:0}::slotted(.market-drag-cursor){--drag-cursor-height:4px;position:relative;z-index:2;display:block;height:0;outline:calc(var(--drag-cursor-height) / 2) solid var(--core-emphasis-fill-color);pointer-events:none}\";\n\tconst MarketListStyle0 = marketListCss;\n\tconst MarketList = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketListSelectionsDidChange = index.createEvent(this, \"marketListSelectionsDidChange\", 7);\n\t    this.marketListSlotChange = index.createEvent(this, \"marketListSlotChange\", 7);\n\t    this.marketListItemsReordered = index.createEvent(this, \"marketListItemsReordered\", 3);\n\t    this.marketListItemsFiltered = index.createEvent(this, \"marketListItemsFiltered\", 7);\n\t    this.marketInternalListValueChange = index.createEvent(this, \"marketInternalListValueChange\", 7);\n\t    this.observers = {};\n\t    this.value = \"\";\n\t    this.interactive = false;\n\t    this.transient = false;\n\t    this.multiselect = false;\n\t    this.name = void 0;\n\t    this.filterStrategy = \"textcontent\";\n\t    this.reorderable = \"off\";\n\t    this.reorderMode = \"default\";\n\t    this.hideSelectableCount = false;\n\t    this.hasSearch = false;\n\t    this.items = void 0;\n\t    this.selections = /* @__PURE__ */ new Set();\n\t    this.filteredItems = void 0;\n\t  }\n\t  reorderableWatcher() {\n\t    this.setReorderable();\n\t  }\n\t  valueWatcher() {\n\t    this.marketInternalListValueChange.emit();\n\t    this.setSelectionsFromValue();\n\t  }\n\t  hideSelectableCountWatcher() {\n\t    this.injectCountOnControlRow();\n\t  }\n\t  /* Listen for the marketRowSelected event which is emitted by slotted market-row elements\n\t  when they are clicked */\n\t  rowSelectedEventHandler(e) {\n\t    this.handleItemSelectedEvent(e.target);\n\t  }\n\t  /* Listen for the marketRowDeselected event which is emitted by slotted market-row elements\n\t  when they are clicked */\n\t  rowDeselectedEventHandler(e) {\n\t    this.handleItemDeselectedEvent(e.target);\n\t  }\n\t  /* Listen for the marketCardSelected event which is emitted by slotted market-action-card elements\n\t  when they are clicked */\n\t  cardSelectedEventHandler(e) {\n\t    this.handleItemSelectedEvent(e.target);\n\t  }\n\t  /* Listen for the marketCardDeselected event which is emitted by slotted market-action-card elements\n\t  when they are clicked */\n\t  cardDeselectedEventHandler(e) {\n\t    this.handleItemDeselectedEvent(e.target);\n\t  }\n\t  /**\n\t   * Listen for `marketInputSearchValueChange` which is emitted by the slotted `market-input-search`\n\t   */\n\t  marketInputSearchValueChangeEventHander({ detail }) {\n\t    this.filterItems(detail.value);\n\t  }\n\t  getEventSelectionDetails() {\n\t    const prevSelectionValues = (() => {\n\t      if (typeof this.value === \"string\") {\n\t        return this.value ? this.value.split(\",\").filter((value) => !utils.isValueEmpty(value)) : [];\n\t      } else if (Array.isArray(this.value)) {\n\t        return this.value.filter((value) => !utils.isValueEmpty(value));\n\t      }\n\t      return this.value;\n\t    })();\n\t    const currentSelections = uniqBy([...this.selections].filter((item) => item !== this.controlRow), (item) => item.value);\n\t    const currentSelectionValues = currentSelections.reduce((items, item) => {\n\t      if (!utils.isValueEmpty(item.value)) {\n\t        items.push(item.value);\n\t      }\n\t      return items;\n\t    }, []);\n\t    return { currentSelections, currentSelectionValues, prevSelectionValues };\n\t  }\n\t  handleItemSelectedEvent(selectedItem) {\n\t    if (selectedItem === this.controlRow) {\n\t      this.selectAllItems();\n\t    } else {\n\t      this.selectItem(selectedItem);\n\t    }\n\t    const { currentSelections, currentSelectionValues, prevSelectionValues } = this.getEventSelectionDetails();\n\t    this.value = currentSelectionValues.join(\",\");\n\t    this.marketListSelectionsDidChange.emit({\n\t      newSelection: selectedItem,\n\t      newSelectionValue: selectedItem.value,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      newDeselection: null,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      newDeselectionValue: null,\n\t      currentSelections,\n\t      currentSelectionValues,\n\t      prevSelectionValues\n\t    });\n\t  }\n\t  handleItemDeselectedEvent(deselectedItem) {\n\t    if (!this.selections.has(deselectedItem)) {\n\t      return;\n\t    }\n\t    if (deselectedItem === this.controlRow) {\n\t      const shouldSelectAll = (() => {\n\t        var _a, _b;\n\t        const items = ((_b = (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.visible) !== null && _b !== void 0 ? _b : this.items).filter((item) => item !== this.controlRow);\n\t        const nonDisabledItems = items.filter((item) => !item.disabled);\n\t        return nonDisabledItems.every((item) => !item.selected);\n\t      })();\n\t      if (shouldSelectAll) {\n\t        this.selectAllItems();\n\t      } else {\n\t        this.deselectAllItems();\n\t      }\n\t    } else {\n\t      this.deselectItem(deselectedItem);\n\t    }\n\t    const { currentSelections, currentSelectionValues, prevSelectionValues } = this.getEventSelectionDetails();\n\t    this.value = currentSelectionValues.join(\",\");\n\t    this.marketListSelectionsDidChange.emit({\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      newSelection: null,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      newSelectionValue: null,\n\t      newDeselection: deselectedItem,\n\t      newDeselectionValue: deselectedItem.value,\n\t      currentSelections,\n\t      currentSelectionValues,\n\t      prevSelectionValues\n\t    });\n\t  }\n\t  /**\n\t   * Selects a given option from the list. Also handles deselecting\n\t   * all other elements when not in multiselect mode.\n\t   */\n\t  selectItem(selectedItem) {\n\t    if (this.interactive) {\n\t      if (!this.multiselect) {\n\t        this.deselectItems([selectedItem]);\n\t        this.selections = /* @__PURE__ */ new Set([selectedItem]);\n\t      } else {\n\t        this.selections.add(selectedItem);\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Selects all multiselect list options.\n\t   */\n\t  selectAllItems() {\n\t    var _a;\n\t    if (!this.items || !this.interactive || !this.multiselect) {\n\t      return;\n\t    }\n\t    const selectableItems = (((_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.visible) || this.items).filter((item) => !item.disabled);\n\t    this.selections = /* @__PURE__ */ new Set([...this.selections.values(), ...selectableItems]);\n\t  }\n\t  /**\n\t   * Deselects a given option from the list.\n\t   */\n\t  deselectItem(deselectedItem) {\n\t    this.selections.delete(deselectedItem);\n\t  }\n\t  /**\n\t   * Deselects all other items other than the ones that were just selected.\n\t   */\n\t  deselectItems(selectedItems) {\n\t    if (!this.items) {\n\t      return;\n\t    }\n\t    this.items.forEach((item) => {\n\t      if (!selectedItems.includes(item) && item.selected) {\n\t        item.deselect();\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Deselects all list options.\n\t   */\n\t  deselectAllItems() {\n\t    var _a, _b;\n\t    if (!this.selections || !this.interactive) {\n\t      return;\n\t    }\n\t    const visibleItemsSet = new Set((_b = (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.visible) !== null && _b !== void 0 ? _b : this.items);\n\t    const selectedItemsToKeep = [...this.selections].filter((selectedItem) => {\n\t      return selectedItem.disabled || !visibleItemsSet.has(selectedItem);\n\t    });\n\t    this.selections = new Set(selectedItemsToKeep);\n\t  }\n\t  /**\n\t   * If passed or updates interactive, ensure list itself is set to interactive mode.\n\t   */\n\t  syncListInteractiveWithItems() {\n\t    if (this.items.length > 0 && (this.items[0].tagName === index$1.getNamespacedTagFor(\"market-action-card\").toUpperCase() || this.items[0].tagName === index$1.getNamespacedTagFor(\"market-row\").toUpperCase() && this.items[0].interactive === true) && !this.interactive) {\n\t      this.interactive = true;\n\t    }\n\t  }\n\t  /**\n\t   * Processes interactive, transient, and multiselect props and propagates these props\n\t   * to children components whenever these props are updated.\n\t   */\n\t  processItems() {\n\t    this.items.forEach((item) => {\n\t      if (item.tagName === index$1.getNamespacedTagFor(\"market-action-card\").toUpperCase()) {\n\t        item.transient = this.transient;\n\t        const cardRow = item.querySelector(index$1.getNamespacedTagFor(\"market-row\"));\n\t        if (cardRow) {\n\t          this.setRowProperties(cardRow);\n\t        }\n\t      } else {\n\t        this.setRowProperties(item);\n\t      }\n\t    });\n\t  }\n\t  getCurrentSelectionValues() {\n\t    if (Array.isArray(this.value)) {\n\t      return new Set(this.value);\n\t    }\n\t    return new Set(this.multiselect ? this.value.split(\",\") : [this.value]);\n\t  }\n\t  setRowProperties(row) {\n\t    row.interactive = this.interactive;\n\t    row.transient = this.transient;\n\t    row.togglable = this.multiselect;\n\t  }\n\t  /**\n\t   * Select item that corresponds to passed value, or clear all values if value is empty string.\n\t   */\n\t  setSelectionsFromValue() {\n\t    var _a;\n\t    if (this.value || this.value === \"\") {\n\t      const values = this.getCurrentSelectionValues();\n\t      (_a = this.items) === null || _a === void 0 ? void 0 : _a.forEach((item) => {\n\t        if (item === this.controlRow) {\n\t          return;\n\t        }\n\t        if (!utils.isValueEmpty(this.value) && values.has(item.value)) {\n\t          item.silentlySelect();\n\t          this.selectItem(item);\n\t        } else {\n\t          item.silentlyDeselect();\n\t          this.deselectItem(item);\n\t        }\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * Find any list items with the `selected` property and add to `selections`.\n\t   */\n\t  setSelectionsFromRowAttributes() {\n\t    const initialSelections = /* @__PURE__ */ new Set();\n\t    this.items.forEach((item) => {\n\t      if (item.selected) {\n\t        initialSelections.add(item);\n\t      }\n\t    });\n\t    this.selections = initialSelections;\n\t  }\n\t  setListAndItemsRoles() {\n\t    const itemSelectableTypes = this.items.map((item) => utils.getItemSelectableType(item));\n\t    const allItemsHaveSameSelectableType = itemSelectableTypes.every((type) => type === utils.ListItemSelectableType.CHECKBOX) || itemSelectableTypes.every((type) => type === utils.ListItemSelectableType.RADIO) || itemSelectableTypes.every((type) => type === utils.ListItemSelectableType.SWITCH) || itemSelectableTypes.every((type) => type === utils.ListItemSelectableType.SELECTABLE_WITHOUT_CONTROL);\n\t    if (allItemsHaveSameSelectableType) {\n\t      this.el.setAttribute(\"role\", \"listbox\");\n\t      this.items.forEach((item) => {\n\t        item.setAttribute(\"role\", \"option\");\n\t      });\n\t      this.el.setAttribute(\"aria-multiselectable\", this.multiselect ? \"true\" : \"false\");\n\t    } else {\n\t      this.el.setAttribute(\"role\", \"list\");\n\t      this.items.forEach((item) => {\n\t        item.setAttribute(\"role\", \"listitem\");\n\t      });\n\t    }\n\t    if (this.value) {\n\t      this.setSelectionsFromValue();\n\t    } else {\n\t      this.setSelectionsFromRowAttributes();\n\t    }\n\t  }\n\t  /**\n\t   * Sets the initial state of the list by updating and propagating props and setting\n\t   * default value.\n\t   */\n\t  setInternalState() {\n\t    this.items = [...this.el.children].filter((child) => {\n\t      const tagName = child.tagName.toLowerCase();\n\t      return tagName === index$1.getNamespacedTagFor(\"market-row\").toLowerCase() || tagName === index$1.getNamespacedTagFor(\"market-action-card\").toLowerCase();\n\t    });\n\t    if (this.items.length === 0) {\n\t      return;\n\t    }\n\t    this.syncListInteractiveWithItems();\n\t    this.processItems();\n\t    this.setListAndItemsRoles();\n\t    if (this.value) {\n\t      this.setSelectionsFromValue();\n\t    } else {\n\t      this.setSelectionsFromRowAttributes();\n\t    }\n\t  }\n\t  /**\n\t   * Syncs the state of the slotted control row with list selections (e.g. all selected, none\n\t   * selected, some selected).\n\t   */\n\t  async syncControlRowWithSelections() {\n\t    var _a, _b;\n\t    if (!this.controlRow) {\n\t      return;\n\t    }\n\t    const slottedControl = this.controlRow.querySelector('[slot=\"control\"]');\n\t    const isCheckbox = slottedControl.tagName.toLowerCase() === index$1.getNamespacedTagFor(\"market-checkbox\");\n\t    const items = ((_b = (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.visible) !== null && _b !== void 0 ? _b : this.items).filter((item) => item !== this.controlRow);\n\t    const controlRowStatus = (() => {\n\t      if (items.every((item) => item.selected)) {\n\t        return \"checked\";\n\t      } else if (items.some((item) => item.selected)) {\n\t        return \"indeterminate\";\n\t      } else {\n\t        return \"unchecked\";\n\t      }\n\t    })();\n\t    switch (controlRowStatus) {\n\t      case \"unchecked\":\n\t        this.deselectItem(this.controlRow);\n\t        await this.controlRow.silentlyDeselect();\n\t        await raf.asyncRequestAnimationFrame();\n\t        slottedControl.removeAttribute(\"indeterminate\");\n\t        break;\n\t      case \"checked\":\n\t        await this.controlRow.silentlySelect();\n\t        this.selectItem(this.controlRow);\n\t        slottedControl.removeAttribute(\"indeterminate\");\n\t        break;\n\t      case \"indeterminate\":\n\t        if (isCheckbox) {\n\t          await this.controlRow.silentlySelect();\n\t          this.selectItem(this.controlRow);\n\t          await raf.asyncRequestAnimationFrame();\n\t          slottedControl.setAttribute(\"indeterminate\", \"\");\n\t        } else {\n\t          await this.controlRow.silentlyDeselect();\n\t          this.deselectItem(this.controlRow);\n\t        }\n\t        break;\n\t    }\n\t    this.injectCountOnControlRow();\n\t  }\n\t  /**\n\t   * Injects an accessory to the control row that displays the number of items;\n\t   * or edit that accessory's text content if the element already exists.\n\t   *\n\t   * Disabled items are not included in the count.\n\t   *\n\t   * Count is only rendered when `hideSelectableCount` is `false`, which it is by default.\n\t   */\n\t  injectCountOnControlRow() {\n\t    if (!this.controlRow) {\n\t      return;\n\t    }\n\t    const countAccessoryEl = this.controlRow.querySelector('.count[slot=\"trailing-accessory\"]');\n\t    if (this.hideSelectableCount) {\n\t      if (countAccessoryEl) {\n\t        this.controlRow.removeChild(countAccessoryEl);\n\t      }\n\t      return;\n\t    }\n\t    const count = this.filteredItems.visible.filter((item) => !item.disabled).length;\n\t    if (countAccessoryEl) {\n\t      countAccessoryEl.textContent = `${count}`;\n\t    } else {\n\t      const newEl = document.createElement(\"span\");\n\t      newEl.classList.add(\"count\");\n\t      newEl.setAttribute(\"slot\", \"trailing-accessory\");\n\t      newEl.textContent = `${count}`;\n\t      this.controlRow.appendChild(newEl);\n\t    }\n\t  }\n\t  /**\n\t   * Filters items based on search query inputted in slotted `market-input-search`\n\t   */\n\t  filterItems(query) {\n\t    var _a;\n\t    const filteredItems = this.items.reduce((filteredItems2, item) => {\n\t      var _a2, _b, _c, _d, _e, _f, _g, _h, _j;\n\t      if (item.getAttribute(\"slot\") === \"control-row\") {\n\t        return filteredItems2;\n\t      } else if (!query) {\n\t        filteredItems2.visible.push(item);\n\t        return filteredItems2;\n\t      } else if (typeof this.filterStrategy === \"function\") {\n\t        const callbackResult = this.filterStrategy({\n\t          item,\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          label: (_a2 = item.querySelector('[slot=\"label\"]')) === null || _a2 === void 0 ? void 0 : _a2.textContent,\n\t          query,\n\t          // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t          textContent: item.textContent,\n\t          value: item.value\n\t        });\n\t        if (callbackResult) {\n\t          filteredItems2.visible.push(item);\n\t          return filteredItems2;\n\t        }\n\t      } else if (((_c = (_b = this.filterStrategy) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b)) === \"textcontent\") {\n\t        const isFound = ((_d = item === null || item === void 0 ? void 0 : item.textContent) === null || _d === void 0 ? void 0 : _d.search(new RegExp(query, \"i\"))) >= 0;\n\t        if (isFound) {\n\t          filteredItems2.visible.push(item);\n\t          return filteredItems2;\n\t        }\n\t      } else if (((_f = (_e = this.filterStrategy) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase) === null || _f === void 0 ? void 0 : _f.call(_e)) === \"label\") {\n\t        const labelEl = item.querySelector('[slot=\"label\"]');\n\t        const isFound = ((_g = labelEl === null || labelEl === void 0 ? void 0 : labelEl.textContent) === null || _g === void 0 ? void 0 : _g.search(new RegExp(query, \"i\"))) >= 0;\n\t        if (isFound) {\n\t          filteredItems2.visible.push(item);\n\t          return filteredItems2;\n\t        }\n\t      } else if (((_j = (_h = this.filterStrategy) === null || _h === void 0 ? void 0 : _h.toLocaleLowerCase) === null || _j === void 0 ? void 0 : _j.call(_h)) === \"value\") {\n\t        const value = String(item.value);\n\t        const isFound = value.search(new RegExp(query)) >= 0;\n\t        if (isFound) {\n\t          filteredItems2.visible.push(item);\n\t          return filteredItems2;\n\t        }\n\t      }\n\t      filteredItems2.hidden.push(item);\n\t      return filteredItems2;\n\t    }, {\n\t      visible: [],\n\t      hidden: [],\n\t      visibleSelected: [],\n\t      selected: []\n\t    });\n\t    requestAnimationFrame(() => {\n\t      var _a2;\n\t      filteredItems.visible.forEach((item) => item.classList.remove(\"hidden\"));\n\t      filteredItems.hidden.forEach((item) => item.classList.add(\"hidden\"));\n\t      this.items.forEach((item) => item.classList.remove(\"hide-bottom-border\"));\n\t      if (filteredItems.visible.length > 0) {\n\t        const lastVisibleItem = filteredItems.visible[filteredItems.visible.length - 1];\n\t        lastVisibleItem.classList.add(\"hide-bottom-border\");\n\t      }\n\t      (_a2 = this.controlRow) === null || _a2 === void 0 ? void 0 : _a2.classList.toggle(\"hidden\", filteredItems.visible.length === 0);\n\t    });\n\t    if (this.filteredItems || !this.filteredItems && query) {\n\t      this.marketListItemsFiltered.emit({\n\t        items: filteredItems.visible,\n\t        prevItems: (_a = this.filteredItems) === null || _a === void 0 ? void 0 : _a.visible\n\t      });\n\t    }\n\t    this.filteredItems = filteredItems;\n\t    this.updateSelectedItemsInFilteredItems();\n\t  }\n\t  updateSelectedItemsInFilteredItems() {\n\t    if (!this.filteredItems) {\n\t      return;\n\t    }\n\t    this.filteredItems.selected = this.items.filter((item) => item.getAttribute(\"slot\") !== \"control-row\" && item.selected);\n\t    this.filteredItems.visibleSelected = this.filteredItems.visible.filter((item) => item.getAttribute(\"slot\") !== \"control-row\" && item.selected);\n\t  }\n\t  /* SLOTCHANGE HANDLERS */\n\t  handleSearchSlotchange() {\n\t    var _a;\n\t    this.inputSearchEl = this.el.querySelector('[slot=\"search\"]');\n\t    this.hasSearch = Boolean(this.inputSearchEl);\n\t    this.filterItems((_a = this.inputSearchEl) === null || _a === void 0 ? void 0 : _a.value);\n\t  }\n\t  defaultSlotchangeHandler() {\n\t    var _a;\n\t    this.setInternalState();\n\t    this.filterItems((_a = this.inputSearchEl) === null || _a === void 0 ? void 0 : _a.value);\n\t    this.setReorderable();\n\t    this.marketListSlotChange.emit();\n\t  }\n\t  /**\n\t   * Rows slotted into the \"control-row\" slot only function as such if the list is interactive and\n\t   * multiselect and the row contains a valid slotted control (checkbox or toggle).\n\t   */\n\t  controlRowSlotchangeHandler() {\n\t    if (!this.interactive || !this.multiselect) {\n\t      return;\n\t    }\n\t    const slottedRow = this.el.querySelector('[slot=\"control-row\"]');\n\t    const slottedControl = slottedRow === null || slottedRow === void 0 ? void 0 : slottedRow.querySelector('[slot=\"control\"]');\n\t    this.controlRow = utils.isValidControl(slottedControl) ? slottedRow : void 0;\n\t  }\n\t  /**\n\t   * Show empty state if:\n\t   * - list isn't empty, but\n\t   * - there is a search query, and\n\t   * - there are no search results\n\t   */\n\t  setEmptyStateVisibility() {\n\t    var _a, _b;\n\t    const emptyStateEl = this.el.querySelector('[slot=\"empty-state\"]') || // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t    this.el.shadowRoot.querySelector(index$1.getNamespacedTagFor(\"market-empty-state\"));\n\t    const willShowEmptyState = ((_a = this.inputSearchEl) === null || _a === void 0 ? void 0 : _a.value) && !((_b = this.filteredItems) === null || _b === void 0 ? void 0 : _b.visible.length);\n\t    emptyStateEl === null || emptyStateEl === void 0 ? void 0 : emptyStateEl.classList.toggle(\"hidden\", !willShowEmptyState);\n\t  }\n\t  /**\n\t   * Updates the count that is injected to the control row\n\t   * when there’s a change on an item’s `disabled` attribute.\n\t   */\n\t  initItemDisabledAttributeObserver() {\n\t    if (this.observers.itemDisabledAttribute) {\n\t      return;\n\t    }\n\t    this.observers.itemDisabledAttribute = new MutationObserver((mutations) => {\n\t      for (const mutation of mutations) {\n\t        if (mutation.target.parentElement === this.el && mutation.type === \"attributes\" && mutation.attributeName === \"disabled\") {\n\t          this.injectCountOnControlRow();\n\t        }\n\t      }\n\t    });\n\t    this.observers.itemDisabledAttribute.observe(this.el, {\n\t      attributes: true,\n\t      attributeFilter: [\"disabled\"],\n\t      childList: true,\n\t      subtree: true\n\t    });\n\t  }\n\t  /* LIFECYCLE EVENTS */\n\t  connectedCallback() {\n\t    this.syncControlRowWithSelections();\n\t  }\n\t  componentWillLoad() {\n\t    var _a;\n\t    this.setInternalState();\n\t    this.filterItems((_a = this.inputSearchEl) === null || _a === void 0 ? void 0 : _a.value);\n\t  }\n\t  componentWillRender() {\n\t    this.syncListInteractiveWithItems();\n\t    this.processItems();\n\t    this.setListAndItemsRoles();\n\t    this.updateSelectedItemsInFilteredItems();\n\t    this.controlRowSlotchangeHandler();\n\t    this.syncControlRowWithSelections();\n\t    this.setEmptyStateVisibility();\n\t  }\n\t  componentDidLoad() {\n\t    this.initItemDisabledAttributeObserver();\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.observers.itemDisabledAttribute) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  /*\n\t      KEYBOARD ACCESSIBILITY\n\t  \n\t      tabbing goes through rows (and slotted controls, if any) once before moving\n\t      on to rest of page content\n\t  \n\t      once list has focus, up/down arrows can move focus up/down, stopping at end\n\t      of list rather than cycling through (similar to native html <select>)\n\t      - https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n\t  \n\t      if slotted row contents have focus, up/down arrows do nothing\n\t    */\n\t  handleKeydown(e) {\n\t    switch (e.key) {\n\t      case \"ArrowDown\":\n\t        this.handleArrowDown(e);\n\t        break;\n\t      case \"ArrowUp\":\n\t        this.handleArrowUp(e);\n\t        break;\n\t    }\n\t  }\n\t  handleArrowDown(e) {\n\t    const focused = this.el.querySelector(\":focus\");\n\t    const prevFocusedRowIndex = [...this.items].indexOf(focused);\n\t    if (prevFocusedRowIndex === -1) {\n\t      return;\n\t    }\n\t    for (let i = prevFocusedRowIndex + 1; i < this.items.length; i++) {\n\t      if (!this.items[i].disabled) {\n\t        this.items[i].focus();\n\t        break;\n\t      }\n\t    }\n\t    e.preventDefault();\n\t  }\n\t  handleArrowUp(e) {\n\t    const focused = this.el.querySelector(\":focus\");\n\t    const prevFocusedRowIndex = [...this.items].indexOf(focused);\n\t    if (prevFocusedRowIndex === -1) {\n\t      return;\n\t    }\n\t    for (let i = prevFocusedRowIndex - 1; i >= 0; i--) {\n\t      if (!this.items[i].disabled) {\n\t        this.items[i].focus();\n\t        break;\n\t      }\n\t    }\n\t    e.preventDefault();\n\t  }\n\t  /**\n\t   * Focuses the row at the given index.\n\t   * @param index - The index of the row to focus.\n\t   * @returns A promise that resolves when the row is focused.\n\t   */\n\t  async focusRowAtIndex(index2) {\n\t    const row = this.items[index2];\n\t    if (row) {\n\t      row.focus();\n\t      return Promise.resolve();\n\t    } else {\n\t      return Promise.reject(new Error(`Row at index ${index2} not found`));\n\t    }\n\t  }\n\t  setReorderable() {\n\t    const { el, items, controlRow, reorderable: reorderable$1, reorderMode, reorder, marketListItemsReordered } = this;\n\t    if (reorderable$1 === \"off\") {\n\t      reorder === null || reorder === void 0 ? void 0 : reorder.destroy();\n\t      this.reorder = null;\n\t    } else if (!reorder) {\n\t      this.reorder = new reorderable.Reorderable({\n\t        el,\n\t        accepts: [`${index$1.getNamespacedTagFor(\"market-row\")}:not([slot=\"control\"])`],\n\t        event: marketListItemsReordered,\n\t        mode: reorderMode\n\t      });\n\t    }\n\t    items === null || items === void 0 ? void 0 : items.forEach((item) => {\n\t      if (!draggable.isDraggable(item))\n\t        return;\n\t      if (item === controlRow)\n\t        return;\n\t      item.dragEnabled = reorderable$1 !== \"off\";\n\t    });\n\t  }\n\t  onDragMove(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragMove(e);\n\t  }\n\t  onDragLeave() {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragLeave();\n\t  }\n\t  onDragEnd(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragEnd(e);\n\t  }\n\t  onDragDrop(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragDrop(e);\n\t  }\n\t  componentDidRender() {\n\t    this.setReorderable();\n\t  }\n\t  render() {\n\t    var _a;\n\t    const MarketEmptyState = index$1.getNamespacedTagFor(\"market-empty-state\");\n\t    return index.h(index.Host, { key: \"890be75a81edd46d53e24528b66e1a7068dc865c\", class: \"market-list\", \"aria-labelledby\": this.name, \"has-search\": this.hasSearch, onKeydown: (e) => this.handleKeydown(e), onMarketDragMove: (e) => this.onDragMove(e), onMarketDragLeave: () => this.onDragLeave(), onMarketDragEnd: (e) => this.onDragEnd(e), onMarketDragDrop: (e) => this.onDragDrop(e) }, index.h(\"slot\", { key: \"6a0873c6c8d0d8e7999b277a9ba8ed90c9ac821a\", name: \"search\", onSlotchange: () => this.handleSearchSlotchange() }), index.h(\"slot\", { key: \"aa3613d193ca3935d1ca8fc9cb891f0bd070052d\", name: \"control-row\", onSlotchange: () => this.controlRowSlotchangeHandler() }), index.h(\"slot\", { key: \"108a2f3dc8534094c757cbd1f7f317715a5eef81\", onSlotchange: () => this.defaultSlotchangeHandler() }), index.h(\"slot\", { key: \"9c4dc86c89794aa616d7ab684fe2e761f3649f42\", name: \"empty-state\" }, index.h(MarketEmptyState, { key: \"bf90b404a1ee0e64a8e0a76aaed6543041a65bbc\", class: \"hidden\" }, index.h(\"svg\", { key: \"6f63ab39c7a74a0bad6fb6dcf4343032bde6e9e1\", height: \"40\", slot: \"media\", viewBox: \"0 0 40 40\", width: \"40\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"e3a8b8028da57eafadd6494cbe7a36a89dfbad00\", d: \"M34.4667 17.2L28.1 10.8333H26.6667C26.6667 9.45 25.55 8.33333 24.1667 8.33333C22.7834 8.33333 21.6667 9.45 21.6667 10.8333H18.3334C18.3334 9.45 17.2167 8.33333 15.8334 8.33333C14.45 8.33333 13.3334 9.45 13.3334 10.8333H11.9L5.53337 17.2C4.11671 18.6167 3.33337 20.5 3.33337 22.5C3.33337 26.6333 6.70004 30 10.8334 30C14.8 30 18.0167 26.9 18.2834 23.0167C18.8167 23.2167 19.4 23.3333 20 23.3333C20.6 23.3333 21.1834 23.2167 21.7167 23.0167C21.9834 26.9 25.2 30 29.1667 30C33.3 30 36.6667 26.6333 36.6667 22.5C36.6667 20.5 35.8834 18.6167 34.4667 17.2ZM10.8334 26.6667C8.53337 26.6667 6.66671 24.8 6.66671 22.5C6.66671 21.3833 7.10004 20.3333 7.88337 19.55C8.66671 18.7667 9.71671 18.3333 10.8334 18.3333C13.1334 18.3333 15 20.2 15 22.5C15 24.8 13.1334 26.6667 10.8334 26.6667ZM15.35 16.55C14.4667 15.8833 13.4334 15.3833 12.3 15.15L13.2667 14.1667H17.2334C16.3834 14.7333 15.7167 15.5667 15.35 16.55ZM20 20C19.0834 20 18.3334 19.25 18.3334 18.3333C18.3334 17.4167 19.0834 16.6667 20 16.6667C20.9167 16.6667 21.6667 17.4167 21.6667 18.3333C21.6667 19.25 20.9167 20 20 20ZM22.75 14.1667H26.7167L27.7 15.15C26.5667 15.3833 25.5334 15.8833 24.65 16.55C24.2834 15.5667 23.6167 14.7333 22.75 14.1667ZM29.1667 26.6667C26.8667 26.6667 25 24.8 25 22.5C25 20.2 26.8667 18.3333 29.1667 18.3333C30.2834 18.3333 31.3334 18.7667 32.1167 19.55C32.9 20.3333 33.3334 21.3833 33.3334 22.5C33.3334 24.8 31.4667 26.6667 29.1667 26.6667Z\", fill: \"var(--core-text-10-color)\", \"fill-opacity\": \"0.9\" })), index.h(\"h3\", { key: \"c0f18a11bb37cef46d5911fdea3fff5d8f044a97\", slot: \"primary-text\" }, index.h(\"slot\", { key: \"3e463fdf10307d00de5b72cb1080327c52eb91cf\", name: \"empty-state-primary-text\" }, \"No search results for \\u201C\", (_a = this.inputSearchEl) === null || _a === void 0 ? void 0 : _a.value, \"\\u201D\")), index.h(\"p\", { key: \"a94fbb375c7dc660be9bc5e0caed5d47e6e2fc47\", slot: \"secondary-text\" }, index.h(\"slot\", { key: \"33efccac2ed004ea89b81cac8fdbba756ef56ceb\", name: \"empty-state-secondary-text\" }, \"Try a different search.\")))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"reorderable\": [\"reorderableWatcher\"],\n\t      \"value\": [\"valueWatcher\"],\n\t      \"hideSelectableCount\": [\"hideSelectableCountWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketList.style = MarketListStyle0;\n\tmarketList_cjs_entry.market_list = MarketList;\n\treturn marketList_cjs_entry;\n}\n\nvar marketModalFull_cjs_entry = {};\n\nvar hasRequiredMarketModalFull_cjs_entry;\n\nfunction requireMarketModalFull_cjs_entry () {\n\tif (hasRequiredMarketModalFull_cjs_entry) return marketModalFull_cjs_entry;\n\thasRequiredMarketModalFull_cjs_entry = 1;\n\tObject.defineProperty(marketModalFull_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst dialog = requireDialog8459b0d0();\n\tconst focusTrap = requireFocusTrapD7750c92();\n\tconst index$2 = index254d04f0.requireIndex254d04f0();\n\tconst marketModalFullCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-direction:column;justify-content:stretch;overflow:hidden}:host ::slotted(main),:host ::slotted(.main){flex:0 1 100%;overflow-y:auto;height:100%}:host ::slotted(.market-header){margin-bottom:var(--core-metrics-spacing-300);padding-top:0}:host ::slotted(.market-footer){padding-bottom:0}:host{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:var(--modal-full-vertical-padding-size);padding-bottom:var(--modal-full-vertical-padding-size);background-color:var(--modal-full-background-color);animation:var(--modal-full-animation-enter-transition-duration)\\n    market-slideup\\n    forwards\\n    var(--modal-full-animation-enter-transition-easing)}:host ::slotted(*:not(.market-popover)){padding-right:var(--modal-full-horizontal-padding-size);padding-left:var(--modal-full-horizontal-padding-size)}:host([hidden]){animation-name:market-slidedown;animation-duration:var(--modal-full-animation-exit-transition-duration);animation-timing-function:var(--modal-full-animation-exit-transition-easing)}:host{--modal-full-wide-layout-width:1200px;--regular-modal-main-horizontal-padding:calc((100vw - var(--modal-full-fixed-layout-width)) / 2);--wide-modal-main-horizontal-padding:calc((100vw - var(--modal-full-wide-layout-width)) / 2)}@media (min-width: 648px){:host([layout=\"regular\"])>:not(.market-header,.market-footer),:host([layout=\"regular\"]) ::slotted(main),:host([layout=\"regular\"]) ::slotted(.main){padding:0 var(--regular-modal-main-horizontal-padding)}}@media (min-width: 1280px){:host([layout=\"wide\"])>:not(.market-header,.market-footer),:host([layout=\"wide\"]) ::slotted(main),:host([layout=\"wide\"]) ::slotted(.main){padding:0 var(--wide-modal-main-horizontal-padding)}}';\n\tconst MarketModalFullStyle0 = marketModalFullCss;\n\tconst MarketModalFull = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDialogLoaded = index.createEvent(this, \"marketDialogLoaded\", 7);\n\t    this.marketDialogDismissed = index.createEvent(this, \"marketDialogDismissed\", 7);\n\t    this.marketDialogDidDismiss = index.createEvent(this, \"marketDialogDidDismiss\", 7);\n\t    this.type = \"modal-full\";\n\t    this.hidden = false;\n\t    this.dialogID = void 0;\n\t    this.index = void 0;\n\t    this.layout = \"regular\";\n\t    this.trapFocus = false;\n\t    this.animationEnterDuration = index$1.MODAL_FULL_ANIMATION_ENTER_TRANSITION_DURATION;\n\t    this.animationExitDuration = index$1.MODAL_FULL_ANIMATION_EXIT_TRANSITION_DURATION;\n\t  }\n\t  layoutWatcher() {\n\t    this.repositionHeader();\n\t  }\n\t  /**\n\t   * Listen to the headerNavigate event emitted by a market-header child component\n\t   * so we can emit a close event if needed\n\t   */\n\t  headerNavigateEventHandler(event) {\n\t    const { detail, target } = event;\n\t    if (detail.action === \"close\") {\n\t      if (target.closest(dialog.getDialogSelector()) === this.el) {\n\t        this.dismiss();\n\t      }\n\t    }\n\t  }\n\t  /* The parent context will handle actually removing elements from the DOM,\n\t  All the modal needs to do it emit an event so actually closing it can be\n\t  some other elements problem */\n\t  /**\n\t   *  Repositions header inside of market-header to align with modal content */\n\t  repositionHeader() {\n\t    const slottedHeader = this.el.querySelector(index$2.getNamespacedTagFor(\"market-header\"));\n\t    if (slottedHeader) {\n\t      slottedHeader.classList.remove(\"regular\", \"wide\");\n\t      switch (this.layout) {\n\t        case \"regular\":\n\t          slottedHeader.classList.add(\"regular\");\n\t          break;\n\t        case \"wide\":\n\t          slottedHeader.classList.add(\"wide\");\n\t          break;\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Emits the dismiss event\n\t   * The parent context will handle actually removing elements from the DOM,\n\t   * All the modal needs to do it emit an event so actually closing it can be\n\t   * some other elements problem\n\t   */\n\t  dismiss(dismissOptions) {\n\t    const { defaultPrevented } = this.marketDialogDismissed.emit({\n\t      dialog: this.el,\n\t      type: this.type,\n\t      origin: (dismissOptions === null || dismissOptions === void 0 ? void 0 : dismissOptions.origin) || this.el\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.hidden = true;\n\t      setTimeout(() => {\n\t        this.marketDialogDidDismiss.emit({\n\t          dialog: this.el,\n\t          type: this.type,\n\t          origin: this.el\n\t        });\n\t      }, this.animationExitDuration);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  onTrapFocusChanged(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      if (newValue) {\n\t        this.activateFocusTrap();\n\t      } else {\n\t        this.deactivateFocusTrap();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Activates the focus trap\n\t   *\n\t   * See [`focus-trap.ts`](../../utils/focus-trap.ts) for default options\n\t   *\n\t   * @param {Object} [options] [focus-trap create options](https://github.com/focus-trap/focus-trap#createoptions)\n\t   * @param {Object} [activateOptions] set options for [onActivate, onPostActivate, and checkCanFocusTrap](https://github.com/focus-trap/focus-trap#trapactivate)\n\t   */\n\t  activateFocusTrap(options, activateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.activate(activateOptions !== null && activateOptions !== void 0 ? activateOptions : {});\n\t      if (!this.trapFocus) {\n\t        this.trapFocus = true;\n\t      }\n\t    } else {\n\t      this.focusTrap = focusTrap.createAndActivateFocusTrap({\n\t        activateOptions,\n\t        el: this.el,\n\t        options\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Deactivates the focus trap\n\t   *\n\t   * @param {FocusTrapDeactivateOptions} [deactivateOptions] set options for [onDeactivate, onPostDeactivate, and checkCanReturnFocus](https://github.com/focus-trap/focus-trap#trapdeactivate)\n\t   */\n\t  deactivateFocusTrap(deactivateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.deactivate(Object.assign({ returnFocus: true, checkCanReturnFocus: (trigger) => new Promise((resolve) => {\n\t        if (typeof (trigger === null || trigger === void 0 ? void 0 : trigger.setFocus) === \"function\") {\n\t          trigger.setFocus();\n\t        } else {\n\t          resolve();\n\t        }\n\t      }) }, deactivateOptions));\n\t      this.focusTrap = void 0;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  connectedCallback() {\n\t    this.connectedCallbackTimeout = setTimeout(() => {\n\t      this.marketDialogLoaded.emit({\n\t        dialog: this.el,\n\t        type: this.type\n\t      });\n\t      if (this.trapFocus) {\n\t        this.activateFocusTrap();\n\t      }\n\t    }, this.animationEnterDuration);\n\t  }\n\t  componentWillLoad() {\n\t    dialog.setupDialogCompactHandler(this.el);\n\t  }\n\t  disconnectedCallback() {\n\t    this.deactivateFocusTrap();\n\t    clearTimeout(this.connectedCallbackTimeout);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"e5dd00fd6971f2ceaf223c4ad9cb88e36bed59cd\", class: \"market-modal-full\", role: \"dialog\" }, index.h(\"slot\", { key: \"59b32dbfdb6d858e0160259a31b3035b1d98fc04\", onSlotchange: () => this.repositionHeader() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"layout\": [\"layoutWatcher\"],\n\t      \"trapFocus\": [\"onTrapFocusChanged\"]\n\t    };\n\t  }\n\t};\n\tMarketModalFull.style = MarketModalFullStyle0;\n\tmarketModalFull_cjs_entry.market_modal_full = MarketModalFull;\n\treturn marketModalFull_cjs_entry;\n}\n\nvar marketModalPartial_cjs_entry = {};\n\nvar hasRequiredMarketModalPartial_cjs_entry;\n\nfunction requireMarketModalPartial_cjs_entry () {\n\tif (hasRequiredMarketModalPartial_cjs_entry) return marketModalPartial_cjs_entry;\n\thasRequiredMarketModalPartial_cjs_entry = 1;\n\tObject.defineProperty(marketModalPartial_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst dialog = requireDialog8459b0d0();\n\tconst focusTrap = requireFocusTrapD7750c92();\n\tindex254d04f0.requireIndex254d04f0();\n\tconst marketModalPartialCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-direction:column;justify-content:stretch;overflow:hidden}:host ::slotted(main),:host ::slotted(.main){flex:0 1 100%;overflow-y:auto;height:100%}:host ::slotted(.market-header){margin-bottom:var(--core-metrics-spacing-300);padding-top:0}:host ::slotted(.market-footer){padding-bottom:0}:host{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:var(--modal-full-vertical-padding-size);padding-bottom:var(--modal-full-vertical-padding-size);background-color:var(--modal-full-background-color);animation:var(--modal-full-animation-enter-transition-duration)\\n    market-slideup\\n    forwards\\n    var(--modal-full-animation-enter-transition-easing)}:host ::slotted(*:not(.market-popover)){padding-right:var(--modal-full-horizontal-padding-size);padding-left:var(--modal-full-horizontal-padding-size)}:host([hidden]){animation-name:market-slidedown;animation-duration:var(--modal-full-animation-exit-transition-duration);animation-timing-function:var(--modal-full-animation-exit-transition-easing)}@media (min-width: 800px){:host{top:0;left:auto;width:var(--modal-partial-width);height:auto;max-height:calc(100vh - var(--modal-partial-vertical-screen-buffer-size) * 2);padding-top:var(--modal-partial-vertical-padding-size);padding-bottom:var(--modal-partial-vertical-padding-size);border-radius:var(--modal-partial-border-radius);animation:var(--modal-partial-animation-enter-transition-duration)\\n      market-popup\\n      forwards\\n      var(--modal-partial-animation-enter-transition-easing)}:host ::slotted(*){padding-right:var(--modal-partial-horizontal-padding-size);padding-left:var(--modal-partial-horizontal-padding-size)}:host([hidden]){animation-name:market-popdown;animation-duration:var(--modal-partial-animation-exit-transition-duration);animation-timing-function:var(--modal-partial-animation-exit-transition-easing)}}\";\n\tconst MarketModalPartialStyle0 = marketModalPartialCss;\n\tconst MarketModalPartial = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketDialogLoaded = index.createEvent(this, \"marketDialogLoaded\", 7);\n\t    this.marketDialogDismissed = index.createEvent(this, \"marketDialogDismissed\", 7);\n\t    this.marketDialogDidDismiss = index.createEvent(this, \"marketDialogDidDismiss\", 7);\n\t    this.type = \"modal-partial\";\n\t    this.hidden = false;\n\t    this.dialogID = void 0;\n\t    this.index = void 0;\n\t    this.trapFocus = false;\n\t    this.animationEnterDuration = index$1.MODAL_PARTIAL_ANIMATION_ENTER_TRANSITION_DURATION;\n\t    this.animationExitDuration = index$1.MODAL_PARTIAL_ANIMATION_EXIT_TRANSITION_DURATION;\n\t  }\n\t  /**\n\t   * Listen to the headerNavigate event emitted by a market-header child component\n\t   * so we can emit a close event if needed\n\t   */\n\t  headerNavigateEventHandler(event) {\n\t    const { detail, target } = event;\n\t    if (detail.action === \"close\") {\n\t      if (target.closest(dialog.getDialogSelector()) === this.el) {\n\t        this.dismiss();\n\t      }\n\t    }\n\t  }\n\t  /* The parent context will handle actually removing elements from the DOM,\n\t  All the modal needs to do it emit an event so actually closing it can be\n\t  some other elements problem */\n\t  /**\n\t   * Emits the dismiss event\n\t   * The parent context will handle actually removing elements from the DOM,\n\t   * All the modal needs to do it emit an event so actually closing it can be\n\t   * some other elements problem\n\t   */\n\t  dismiss(dismissOptions) {\n\t    const { defaultPrevented } = this.marketDialogDismissed.emit({\n\t      dialog: this.el,\n\t      type: this.type,\n\t      origin: (dismissOptions === null || dismissOptions === void 0 ? void 0 : dismissOptions.origin) || this.el\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.hidden = true;\n\t      setTimeout(() => {\n\t        this.marketDialogDidDismiss.emit({\n\t          dialog: this.el,\n\t          type: this.type,\n\t          origin: this.el\n\t        });\n\t      }, this.animationExitDuration);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  onTrapFocusChanged(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      if (newValue) {\n\t        this.activateFocusTrap();\n\t      } else {\n\t        this.deactivateFocusTrap();\n\t      }\n\t    }\n\t  }\n\t  /**\n\t   * Activates the focus trap\n\t   *\n\t   * See [`focus-trap.ts`](../../utils/focus-trap.ts) for default options\n\t   *\n\t   * @param {Object} [options] [focus-trap create options](https://github.com/focus-trap/focus-trap#createoptions)\n\t   * @param {Object} [activateOptions] set options for [onActivate, onPostActivate, and checkCanFocusTrap](https://github.com/focus-trap/focus-trap#trapactivate)\n\t   */\n\t  activateFocusTrap(options, activateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.activate(activateOptions !== null && activateOptions !== void 0 ? activateOptions : {});\n\t      if (!this.trapFocus) {\n\t        this.trapFocus = true;\n\t      }\n\t    } else {\n\t      this.focusTrap = focusTrap.createAndActivateFocusTrap({\n\t        el: this.el,\n\t        options,\n\t        activateOptions\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Deactivates the focus trap\n\t   *\n\t   * @param {FocusTrapDeactivateOptions} [deactivateOptions] set options for [onDeactivate, onPostDeactivate, and checkCanReturnFocus](https://github.com/focus-trap/focus-trap#trapdeactivate)\n\t   */\n\t  deactivateFocusTrap(deactivateOptions = {}) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.deactivate(Object.assign({ returnFocus: true, checkCanReturnFocus: (trigger) => new Promise((resolve) => {\n\t        if (typeof (trigger === null || trigger === void 0 ? void 0 : trigger.setFocus) === \"function\") {\n\t          trigger.setFocus();\n\t        } else {\n\t          resolve();\n\t        }\n\t      }) }, deactivateOptions));\n\t      this.focusTrap = void 0;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  connectedCallback() {\n\t    this.connectedCallbackTimeout = setTimeout(() => {\n\t      this.marketDialogLoaded.emit({\n\t        dialog: this.el,\n\t        type: this.type\n\t      });\n\t      if (this.trapFocus) {\n\t        this.activateFocusTrap();\n\t      }\n\t    }, this.animationEnterDuration);\n\t  }\n\t  componentWillLoad() {\n\t    dialog.setupDialogCompactHandler(this.el);\n\t  }\n\t  disconnectedCallback() {\n\t    this.deactivateFocusTrap();\n\t    clearTimeout(this.connectedCallbackTimeout);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"91399d3e9b155683ba3e71f47c3158302fcd1570\", class: \"market-modal-partial\", role: \"dialog\" }, index.h(\"slot\", { key: \"f1da662000500c54a7c7599393e3078f2e6a9f73\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"trapFocus\": [\"onTrapFocusChanged\"]\n\t    };\n\t  }\n\t};\n\tMarketModalPartial.style = MarketModalPartialStyle0;\n\tmarketModalPartial_cjs_entry.market_modal_partial = MarketModalPartial;\n\treturn marketModalPartial_cjs_entry;\n}\n\nvar marketPagination_cjs_entry = {};\n\nvar hasRequiredMarketPagination_cjs_entry;\n\nfunction requireMarketPagination_cjs_entry () {\n\tif (hasRequiredMarketPagination_cjs_entry) return marketPagination_cjs_entry;\n\thasRequiredMarketPagination_cjs_entry = 1;\n\tObject.defineProperty(marketPagination_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketPaginationCss = \":host{display:flex;flex-direction:column;align-items:stretch}.market-button-dropdown{display:flex;flex-direction:column;align-items:stretch}.market-button-dropdown .market-filter-button{display:block}.market-pagination-page-size+.market-pagination-nav{margin-top:var(--pagination-nav-vertical-margin)}@media only screen and (min-width: 600px){.market-pagination-page-size+.market-pagination-nav{margin-top:0;margin-left:var(--pagination-nav-horizontal-margin)}}.market-pagination-nav nav{display:flex;justify-content:space-between;-moz-column-gap:var(--pagination-nav-content-spacing);column-gap:var(--pagination-nav-content-spacing)}.market-pagination-nav nav .market-button-dropdown{flex-grow:1}@media only screen and (min-width: 600px){:host{flex-direction:row;justify-content:space-between}.market-pagination-nav:only-child{margin-left:auto}}\";\n\tconst MarketPaginationStyle0 = marketPaginationCss;\n\tconst MarketPagination = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketPaginationPageSizeChange = index.createEvent(this, \"marketPaginationPageSizeChange\", 7);\n\t    this.marketPaginationNavigation = index.createEvent(this, \"marketPaginationNavigation\", 7);\n\t    this.currentPage = void 0;\n\t    this.disabled = false;\n\t    this.totalPages = void 0;\n\t    this.hasNextPage = void 0;\n\t    this.hasPreviousPage = void 0;\n\t    this.pageSize = void 0;\n\t    this.pageSizeOptions = void 0;\n\t  }\n\t  /**\n\t   * Rebroadcast up events from market-pagination-page-size.\n\t   */\n\t  changePageSize(e) {\n\t    e.stopPropagation();\n\t    const { detail } = e;\n\t    this.marketPaginationPageSizeChange.emit(detail);\n\t  }\n\t  /**\n\t   * Rebroadcast up events from market-pagination-nav.\n\t   */\n\t  navigatePage(e) {\n\t    e.stopPropagation();\n\t    const { detail } = e;\n\t    this.marketPaginationNavigation.emit(detail);\n\t  }\n\t  render() {\n\t    const MarketPaginationPageSizeTagName = index$1.getNamespacedTagFor(\"market-pagination-page-size\");\n\t    const MarketPaginationNavTagName = index$1.getNamespacedTagFor(\"market-pagination-nav\");\n\t    return index.h(index.Host, { key: \"b26300e6c6bbd883f838a90f268c7da4c713bb0c\", class: \"market-pagination\" }, this.pageSizeOptions && index.h(MarketPaginationPageSizeTagName, { key: \"37bfcf121164db0195d75d1c6d069bd8388a3110\", value: this.pageSize, pageSizeOptions: this.pageSizeOptions, disabled: this.disabled }, index.h(\"slot\", { key: \"063b5b7b858ebace63715b39809a3fc80547a9f8\", name: \"page-size-label\", slot: \"page-size-label\" }, \"Results per page\"), index.h(\"slot\", { key: \"e901312ba4c6651c5deddbd89219a2f2e0ce6a30\", name: \"page-size-feedback\", slot: \"page-size-feedback\" }, this.pageSize)), index.h(MarketPaginationNavTagName, { key: \"0357d61070a9a80c9e9084935515ac895f7136cd\", currentPage: this.currentPage, disabled: this.disabled, totalPages: this.totalPages, pageSize: this.pageSize, hasNextPage: this.hasNextPage, hasPreviousPage: this.hasPreviousPage }, index.h(\"slot\", { key: \"0885cd911fe98e21a9b50ae7bbd92e5296cca4b8\", name: \"nav-label\", slot: \"nav-label\" }, \"Page\"), index.h(\"slot\", { key: \"f73b81752d51d08cbc3c811c1a4be6ea697b94c6\", name: \"nav-feedback\", slot: \"nav-feedback\" }, this.currentPage, \" of \", this.totalPages)));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketPagination.style = MarketPaginationStyle0;\n\tmarketPagination_cjs_entry.market_pagination = MarketPagination;\n\treturn marketPagination_cjs_entry;\n}\n\nvar marketPaginationNav_cjs_entry = {};\n\nvar hasRequiredMarketPaginationNav_cjs_entry;\n\nfunction requireMarketPaginationNav_cjs_entry () {\n\tif (hasRequiredMarketPaginationNav_cjs_entry) return marketPaginationNav_cjs_entry;\n\thasRequiredMarketPaginationNav_cjs_entry = 1;\n\tObject.defineProperty(marketPaginationNav_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst MarketPaginationNav = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInternalPaginationNavigation = index.createEvent(this, \"marketInternalPaginationNavigation\", 7);\n\t    this.currentPage = void 0;\n\t    this.disabled = false;\n\t    this.totalPages = void 0;\n\t    this.hasNextPage = void 0;\n\t    this.hasPreviousPage = void 0;\n\t    this.pageSize = void 0;\n\t  }\n\t  listSelectionEventHandler(e) {\n\t    const { newSelectionValue } = e.detail;\n\t    this.marketInternalPaginationNavigation.emit({\n\t      page: newSelectionValue,\n\t      prevPage: `${this.currentPage}`,\n\t      pageSize: this.pageSize\n\t    });\n\t  }\n\t  handlePrev() {\n\t    if (this.hasPreviousPage === false || this.currentPage === 1) {\n\t      return;\n\t    }\n\t    const prevPage = this.currentPage - 1;\n\t    this.marketInternalPaginationNavigation.emit({\n\t      page: `${prevPage}`,\n\t      prevPage: `${this.currentPage}`,\n\t      pageSize: this.pageSize\n\t    });\n\t  }\n\t  handleNext() {\n\t    if (this.hasNextPage === false || Boolean(this.totalPages) && this.currentPage === this.totalPages) {\n\t      return;\n\t    }\n\t    const nextPage = this.currentPage + 1;\n\t    this.marketInternalPaginationNavigation.emit({\n\t      page: `${nextPage}`,\n\t      prevPage: `${this.currentPage}`,\n\t      pageSize: this.pageSize\n\t    });\n\t  }\n\t  /**\n\t   * Dropdown navigates by every 10 pages if there are more than 20 pages\n\t   *\n\t   * pageList for a large dataset = [10, 20, 30, 40, 50...]\n\t   * pageList for a small dataset = [1, 2, 3, 5, 6, 7...]\n\t   */\n\t  get pageList() {\n\t    const isLargeDataset = this.totalPages > 20;\n\t    const largeDatasetSteps = 10;\n\t    return isLargeDataset ? Array.from(\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      { length: Math.floor(this.totalPages / largeDatasetSteps) }\n\t    ).map((_, i) => (i + 1) * largeDatasetSteps) : Array.from(\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      { length: this.totalPages }\n\t    ).map((_, i) => i + 1);\n\t  }\n\t  render() {\n\t    const renderPageInfo = Boolean(this.totalPages);\n\t    const hasPreviousPage = this.currentPage > 1 || this.hasPreviousPage;\n\t    const hasNextPage = this.currentPage < this.totalPages || this.hasNextPage;\n\t    const MarketButtonTagName = index$1.getNamespacedTagFor(\"market-button\");\n\t    const MarketButtonDropdownTagName = index$1.getNamespacedTagFor(\"market-button-dropdown\");\n\t    const MarketFilterButtonTagName = index$1.getNamespacedTagFor(\"market-filter-button\");\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const MarketRowTagName = index$1.getNamespacedTagFor(\"market-row\");\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return index.h(index.Host, { key: \"7ffd13c345d639ba0800f03fd092e1d506bc18de\", class: \"market-pagination-nav\" }, index.h(\"nav\", { key: \"3ac41e4ffea7b8a9ec6d55cc4d0a1dbc106a77fb\" }, index.h(MarketButtonTagName, { key: \"a5ce29b7fbe6902779ea2c26802c692d5efadba9\", size: \"small\", disabled: this.disabled || !hasPreviousPage, onClick: () => this.handlePrev() }, index.h(MarketAccessoryTagName, { key: \"b47ca8a54a8dd2ea303bb1c6e86bb68985f43118\", slot: \"icon\" }, index.h(\"svg\", { key: \"074fc837f43dc29500b5007616cd36ec89270d4a\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"2b2a52d90b1bd4021ce3b0dfaf69ebe55e7d3569\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M4.29289 11.293C3.90237 11.6835 3.90237 12.3167 4.29289 12.7072L11.2929 19.7072L12.7071 18.293L7.41421 13.0001L19 13.0001V11.0001L7.41421 11.0001L12.7071 5.70718L11.2929 4.29297L4.29289 11.293Z\" })))), renderPageInfo && index.h(MarketButtonDropdownTagName, { key: \"5f2ebad63617b5b6f3440f303fc27e165f1b1ed3\", disabled: this.disabled, \"no-caret\": true, \"popover-placement\": \"bottom-end\", \"persist-list\": true }, index.h(MarketFilterButtonTagName, { key: \"8b4ea4f938caafc5f8008ebf6e45c1bdb93a8a4f\", size: \"small\", slot: \"trigger\" }, index.h(\"span\", { key: \"072fdb9b99ff529f9211d57dd182e71ec3728a0e\" }, index.h(\"slot\", { key: \"d074a7da5e79338a6a77f1a1041b76bdf7c7a352\", name: \"nav-label\" }, \"Page\")), index.h(\"span\", { key: \"83ad0622a24676a5d728c0b531cf9739167c86ee\", slot: \"feedback\" }, index.h(\"slot\", { key: \"69b77f04f64b0e10d3af02bc479f1d8f0c074dcb\", name: \"nav-feedback\" }, this.currentPage, \" of \", this.totalPages))), index.h(MarketListTagName, { key: \"c45bd2a1679aac6e908d4f7918910d8963a9deed\", slot: \"content\" }, this.pageList.map((pageNum) => index.h(MarketRowTagName, { key: `pageNav_${pageNum}`, selected: this.currentPage === pageNum, value: `${pageNum}` }, pageNum)))), index.h(MarketButtonTagName, { key: \"dcfa8cb1cb0beb6b59e549778fa6315f312937af\", size: \"small\", disabled: this.disabled || !hasNextPage, onClick: () => this.handleNext() }, index.h(MarketAccessoryTagName, { key: \"2e72e0ac2611c2a2973607903730fdda19b21510\", slot: \"icon\" }, index.h(\"svg\", { key: \"531ddb504e874561e15c7e8ab0ac6e1e7289b6ce\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"bb721da06ae723009b40d94f9805b30bc7ed9014\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M19.7071 11.293C20.0976 11.6835 20.0976 12.3167 19.7071 12.7072L12.7071 19.7072L11.2929 18.293L16.5858 13.0001L5 13.0001L5 11.0001L16.5858 11.0001L11.2929 5.70718L12.7071 4.29297L19.7071 11.293Z\" }))))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tmarketPaginationNav_cjs_entry.market_pagination_nav = MarketPaginationNav;\n\treturn marketPaginationNav_cjs_entry;\n}\n\nvar marketPaginationPageSize_cjs_entry = {};\n\nvar hasRequiredMarketPaginationPageSize_cjs_entry;\n\nfunction requireMarketPaginationPageSize_cjs_entry () {\n\tif (hasRequiredMarketPaginationPageSize_cjs_entry) return marketPaginationPageSize_cjs_entry;\n\thasRequiredMarketPaginationPageSize_cjs_entry = 1;\n\tObject.defineProperty(marketPaginationPageSize_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst MarketPaginationPageSize = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInternalPaginationPageSizeChange = index.createEvent(this, \"marketInternalPaginationPageSizeChange\", 7);\n\t    this.disabled = false;\n\t    this.value = void 0;\n\t    this.pageSizeOptions = void 0;\n\t  }\n\t  listSelectionEventHander(e) {\n\t    const { newSelectionValue } = e.detail;\n\t    this.marketInternalPaginationPageSizeChange.emit({\n\t      value: newSelectionValue\n\t    });\n\t  }\n\t  render() {\n\t    const MarketButtonDropdownTagName = index$1.getNamespacedTagFor(\"market-button-dropdown\");\n\t    const MarketFilterButtonTagName = index$1.getNamespacedTagFor(\"market-filter-button\");\n\t    const MarketListTagName = index$1.getNamespacedTagFor(\"market-list\");\n\t    const MarketRowTagName = index$1.getNamespacedTagFor(\"market-row\");\n\t    return index.h(index.Host, { key: \"42207cf91502689d605d4ccfaa39d756c8c542e0\", class: \"market-pagination-page-size\" }, index.h(MarketButtonDropdownTagName, { key: \"ddccb09a0da16a4580643aef2f650943d936a438\", \"no-caret\": true, \"popover-placement\": \"bottom-start\", \"persist-list\": true, disabled: this.disabled }, index.h(MarketFilterButtonTagName, { key: \"cb10fabfb95a859b9adbd7e83d2af78b1e97544c\", size: \"small\", slot: \"trigger\" }, index.h(\"span\", { key: \"5d777446c1ff81a9131fb2e257765ac35fe8a54a\" }, index.h(\"slot\", { key: \"62d869de3d1ec4cd135de8d61db349c344a5add2\", name: \"page-size-label\" }, \"Results per page\")), index.h(\"span\", { key: \"eabbc341f15c99efb1fcd96606a2dd319b7413db\", slot: \"feedback\" }, index.h(\"slot\", { key: \"778d3316752834871bb22230eab3d0d9777b032f\", name: \"page-size-feedback\" }, this.value))), index.h(MarketListTagName, { key: \"cd4bd238700310bd8aeb05ddeb970d32692b5f37\", value: this.value, slot: \"content\" }, this.pageSizeOptions.split(\",\").map((v) => index.h(MarketRowTagName, { key: `pageSize_${v}`, selected: this.value === v, value: v }, v)))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tmarketPaginationPageSize_cjs_entry.market_pagination_page_size = MarketPaginationPageSize;\n\treturn marketPaginationPageSize_cjs_entry;\n}\n\nvar marketPill_cjs_entry = {};\n\nvar hasRequiredMarketPill_cjs_entry;\n\nfunction requireMarketPill_cjs_entry () {\n\tif (hasRequiredMarketPill_cjs_entry) return marketPill_cjs_entry;\n\thasRequiredMarketPill_cjs_entry = 1;\n\tObject.defineProperty(marketPill_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketPillCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:inline-flex;justify-content:center;align-items:center;border-radius:var(--pill-normal-size-corner-radius);outline:solid var(--pill-emphasis-variant-border-width) var(--pill-emphasis-variant-border-color);white-space:nowrap}:host svg,:host ::slotted([slot=\"icon\"]){color:inherit;fill:currentcolor;stroke:inherit}:host([interactive]){cursor:pointer}:host([size=\"medium\"]){gap:var(--pill-normal-size-spacing-horizontal);padding:var(--pill-normal-size-padding-vertical-size) var(--pill-normal-size-padding-horizontal-size);font-weight:var(--pill-normal-size-text-weight);font-size:var(--pill-normal-size-text-size);line-height:var(--pill-normal-size-text-leading);letter-spacing:var(--pill-normal-size-text-tracking)}:host([size=\"small\"]){gap:var(--pill-compact-size-spacing-horizontal);padding:var(--pill-compact-size-padding-vertical-size) var(--pill-compact-size-padding-horizontal-size);font-weight:var(--pill-compact-size-text-weight);font-size:var(--pill-compact-size-text-size);line-height:var(--pill-compact-size-text-leading);letter-spacing:var(--pill-compact-size-text-tracking)}:host([variant=\"normal\"]){background-color:var(--pill-normal-variant-background-color);color:var(--pill-normal-variant-text-color)}:host([variant=\"emphasis\"]){background-color:var(--pill-emphasis-variant-background-color);color:var(--pill-emphasis-variant-text-color)}:host([variant=\"success\"]){background-color:var(--pill-success-variant-background-color);color:var(--pill-success-variant-text-color)}:host([variant=\"warning\"]){background-color:var(--pill-warning-variant-background-color);color:var(--pill-warning-variant-text-color)}:host([variant=\"critical\"]){background-color:var(--pill-critical-variant-background-color);color:var(--pill-critical-variant-text-color)}:host([variant=\"insight\"]){background-color:var(--pill-insight-variant-background-color);color:var(--pill-insight-variant-text-color)}:host([variant=\"alpha\"]){background-color:var(--pill-alpha-variant-background-color);color:var(--pill-alpha-variant-text-color)}:host([variant=\"beta\"]){background-color:var(--pill-beta-variant-background-color);color:var(--pill-beta-variant-text-color)}@media (hover: hover){:host([variant=\"normal\"][interactive]:hover){background-color:var(--pill-normal-variant-pressed-state-background-color)}:host([variant=\"emphasis\"][interactive]:hover){background-color:var(--pill-emphasis-variant-pressed-state-background-color)}:host([variant=\"success\"][interactive]:hover){background-color:var(--pill-success-variant-pressed-state-background-color)}:host([variant=\"warning\"][interactive]:hover){background-color:var(--pill-warning-variant-pressed-state-background-color)}:host([variant=\"critical\"][interactive]:hover){background-color:var(--pill-critical-variant-pressed-state-background-color)}:host([variant=\"insight\"][interactive]:hover){background-color:var(--pill-insight-variant-pressed-state-background-color)}:host([variant=\"alpha\"][interactive]:hover){background-color:var(--pill-alpha-variant-pressed-state-background-color)}:host([variant=\"beta\"][interactive]:hover){background-color:var(--pill-beta-variant-pressed-state-background-color)}}:host([variant=\"normal\"][interactive]:active){background-color:var(--pill-normal-variant-pressed-state-background-color)}:host([variant=\"emphasis\"][interactive]:active){background-color:var(--pill-emphasis-variant-pressed-state-background-color)}:host([variant=\"success\"][interactive]:active){background-color:var(--pill-success-variant-pressed-state-background-color)}:host([variant=\"warning\"][interactive]:active){background-color:var(--pill-warning-variant-pressed-state-background-color)}:host([variant=\"critical\"][interactive]:active){background-color:var(--pill-critical-variant-pressed-state-background-color)}:host([variant=\"insight\"][interactive]:active){background-color:var(--pill-insight-variant-pressed-state-background-color)}:host([variant=\"alpha\"][interactive]:active){background-color:var(--pill-alpha-variant-pressed-state-background-color)}:host([variant=\"beta\"][interactive]:active){background-color:var(--pill-beta-variant-pressed-state-background-color)}';\n\tconst MarketPillStyle0 = marketPillCss;\n\tconst MarketPill = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.variant = \"normal\";\n\t    this.size = \"medium\";\n\t    this.indicator = false;\n\t    this.interactive = false;\n\t  }\n\t  renderIndicator() {\n\t    const MarketAccessoryTag = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    return this.size === \"medium\" ? index.h(MarketAccessoryTag, null, index.h(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"circle\", { cx: \"8\", cy: \"8\", r: \"5\" }))) : index.h(MarketAccessoryTag, null, index.h(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"circle\", { cx: \"8\", cy: \"8\", r: \"4\" })));\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"af5194f1faa7e75f4d9e40d13947eb9f02244878\", class: \"market-pill\" }, index.h(\"slot\", { key: \"db0893b85bb7a99310c5503adb6aef62568cbf76\", name: \"icon\" }, this.indicator && this.renderIndicator()), index.h(\"slot\", { key: \"4cf4066804480eed66331588b539384fb9391930\" }));\n\t  }\n\t};\n\tMarketPill.style = MarketPillStyle0;\n\tmarketPill_cjs_entry.market_pill = MarketPill;\n\treturn marketPill_cjs_entry;\n}\n\nvar marketPopover_cjs_entry = {};\n\nvar hasRequiredMarketPopover_cjs_entry;\n\nfunction requireMarketPopover_cjs_entry () {\n\tif (hasRequiredMarketPopover_cjs_entry) return marketPopover_cjs_entry;\n\thasRequiredMarketPopover_cjs_entry = 1;\n\tObject.defineProperty(marketPopover_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketPopoverCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:inline-block;overflow-y:auto;min-width:var(--modal-popover-wide-viewport-min-width-size);max-height:var(--modal-popover-wide-viewport-max-height-size);padding:var(--modal-popover-wide-viewport-padding-right-size)\\n    var(--modal-popover-wide-viewport-padding-right-size)\\n    var(--modal-popover-wide-viewport-padding-right-size)\\n    var(--modal-popover-wide-viewport-padding-left-size);border-radius:var(--modal-popover-border-radius);background-color:var(--modal-popover-background-color);box-shadow:var(--elevation-30-shadow)}@media (min-width: 600px){:host{width:auto}}::slotted(.market-list){display:block;width:100%;height:100%;margin-bottom:calc(var(--modal-popover-wide-viewport-padding-bottom-size) - var(--popover-padding, 24px))}::slotted(.market-list:not([has-search])){margin:calc(var(--popover-content-vertical-padding, 8px) - var(--popover-padding, 24px)) 0}\";\n\tconst MarketPopoverStyle0 = marketPopoverCss;\n\tconst Popover = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t  }\n\t  /* Don't want to force consumers to have to remember to put 'interactive' attribute\n\t    on a <market-list> slotted into this options list, so just set the property on the child\n\t    element here because lists should always be interactive when inside this component */\n\t  initInteractiveList() {\n\t    const slot = this.el.querySelector(\"slot\");\n\t    let lists;\n\t    if (slot) {\n\t      lists = slot.assignedElements().filter((el) => el.localName === index$1.getNamespacedTagFor(\"market-list\"));\n\t    } else {\n\t      lists = [].slice.call(this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-list\")));\n\t    }\n\t    if (lists) {\n\t      lists.forEach((list) => {\n\t        list.interactive = true;\n\t      });\n\t    }\n\t  }\n\t  render() {\n\t    this.initInteractiveList();\n\t    return index.h(index.Host, { key: \"1fc282f1036459960923541d9206a3e1fee93661\", class: \"market-popover\" }, index.h(\"slot\", { key: \"4c2aa48b04334d27ec871e8e9eb0d27563d776f4\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tPopover.style = MarketPopoverStyle0;\n\tmarketPopover_cjs_entry.market_popover = Popover;\n\treturn marketPopover_cjs_entry;\n}\n\nvar marketProgressTracker_cjs_entry = {};\n\nvar _overRest15f291dd = {};\n\nvar hasRequired_overRest15f291dd;\n\nfunction require_overRest15f291dd () {\n\tif (hasRequired_overRest15f291dd) return _overRest15f291dd;\n\thasRequired_overRest15f291dd = 1;\n\tconst _getNative = require_getNative666f22b9();\n\tconst identity = requireIdentity8189b2e1();\n\tfunction apply(func, thisArg, args) {\n\t  switch (args.length) {\n\t    case 0:\n\t      return func.call(thisArg);\n\t    case 1:\n\t      return func.call(thisArg, args[0]);\n\t    case 2:\n\t      return func.call(thisArg, args[0], args[1]);\n\t    case 3:\n\t      return func.call(thisArg, args[0], args[1], args[2]);\n\t  }\n\t  return func.apply(thisArg, args);\n\t}\n\tvar HOT_COUNT = 800, HOT_SPAN = 16;\n\tvar nativeNow = Date.now;\n\tfunction shortOut(func) {\n\t  var count = 0, lastCalled = 0;\n\t  return function() {\n\t    var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n\t    lastCalled = stamp;\n\t    if (remaining > 0) {\n\t      if (++count >= HOT_COUNT) {\n\t        return arguments[0];\n\t      }\n\t    } else {\n\t      count = 0;\n\t    }\n\t    return func.apply(void 0, arguments);\n\t  };\n\t}\n\tfunction constant(value) {\n\t  return function() {\n\t    return value;\n\t  };\n\t}\n\tvar defineProperty = function() {\n\t  try {\n\t    var func = _getNative.getNative(Object, \"defineProperty\");\n\t    func({}, \"\", {});\n\t    return func;\n\t  } catch (e) {\n\t  }\n\t}();\n\tconst defineProperty$1 = defineProperty;\n\tvar baseSetToString = !defineProperty$1 ? identity.identity : function(func, string) {\n\t  return defineProperty$1(func, \"toString\", {\n\t    \"configurable\": true,\n\t    \"enumerable\": false,\n\t    \"value\": constant(string),\n\t    \"writable\": true\n\t  });\n\t};\n\tconst baseSetToString$1 = baseSetToString;\n\tvar setToString = shortOut(baseSetToString$1);\n\tconst setToString$1 = setToString;\n\tvar nativeMax = Math.max;\n\tfunction overRest(func, start, transform) {\n\t  start = nativeMax(start === void 0 ? func.length - 1 : start, 0);\n\t  return function() {\n\t    var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);\n\t    while (++index < length) {\n\t      array[index] = args[start + index];\n\t    }\n\t    index = -1;\n\t    var otherArgs = Array(start + 1);\n\t    while (++index < start) {\n\t      otherArgs[index] = args[index];\n\t    }\n\t    otherArgs[start] = transform(array);\n\t    return apply(func, this, otherArgs);\n\t  };\n\t}\n\t_overRest15f291dd.defineProperty = defineProperty$1;\n\t_overRest15f291dd.overRest = overRest;\n\t_overRest15f291dd.setToString = setToString$1;\n\treturn _overRest15f291dd;\n}\n\nvar hasRequiredMarketProgressTracker_cjs_entry;\n\nfunction requireMarketProgressTracker_cjs_entry () {\n\tif (hasRequiredMarketProgressTracker_cjs_entry) return marketProgressTracker_cjs_entry;\n\thasRequiredMarketProgressTracker_cjs_entry = 1;\n\tObject.defineProperty(marketProgressTracker_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst hasIn = requireHasInEb92da66();\n\tconst _overRest = require_overRest15f291dd();\n\tconst _arrayPush = require_arrayPush24af5aa3();\n\tconst isObject = requireIsObject7dcf0083();\n\tconst _Map = require_Map07e1b6b7();\n\trequireIsSymbolFbd13c73();\n\trequire_getNative666f22b9();\n\trequireIdentity8189b2e1();\n\tfunction baseAssignValue(object, key, value) {\n\t  if (key == \"__proto__\" && _overRest.defineProperty) {\n\t    _overRest.defineProperty(object, key, {\n\t      \"configurable\": true,\n\t      \"enumerable\": true,\n\t      \"value\": value,\n\t      \"writable\": true\n\t    });\n\t  } else {\n\t    object[key] = value;\n\t  }\n\t}\n\tvar objectProto = Object.prototype;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tfunction assignValue(object, key, value) {\n\t  var objValue = object[key];\n\t  if (!(hasOwnProperty.call(object, key) && _arrayPush.eq(objValue, value)) || value === void 0 && !(key in object)) {\n\t    baseAssignValue(object, key, value);\n\t  }\n\t}\n\tvar spreadableSymbol = isObject.Symbol ? isObject.Symbol.isConcatSpreadable : void 0;\n\tfunction isFlattenable(value) {\n\t  return _Map.isArray(value) || _Map.isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n\t}\n\tfunction baseFlatten(array, depth, predicate, isStrict, result) {\n\t  var index2 = -1, length = array.length;\n\t  predicate || (predicate = isFlattenable);\n\t  result || (result = []);\n\t  while (++index2 < length) {\n\t    var value = array[index2];\n\t    if (predicate(value)) {\n\t      {\n\t        _arrayPush.arrayPush(result, value);\n\t      }\n\t    } else {\n\t      result[result.length] = value;\n\t    }\n\t  }\n\t  return result;\n\t}\n\tfunction flatten(array) {\n\t  var length = array == null ? 0 : array.length;\n\t  return length ? baseFlatten(array) : [];\n\t}\n\tfunction flatRest(func) {\n\t  return _overRest.setToString(_overRest.overRest(func, void 0, flatten), func + \"\");\n\t}\n\tfunction baseSet(object, path, value, customizer) {\n\t  if (!isObject.isObject(object)) {\n\t    return object;\n\t  }\n\t  path = hasIn.castPath(path, object);\n\t  var index2 = -1, length = path.length, lastIndex = length - 1, nested = object;\n\t  while (nested != null && ++index2 < length) {\n\t    var key = hasIn.toKey(path[index2]), newValue = value;\n\t    if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n\t      return object;\n\t    }\n\t    if (index2 != lastIndex) {\n\t      var objValue = nested[key];\n\t      newValue = void 0;\n\t      if (newValue === void 0) {\n\t        newValue = isObject.isObject(objValue) ? objValue : _arrayPush.isIndex(path[index2 + 1]) ? [] : {};\n\t      }\n\t    }\n\t    assignValue(nested, key, newValue);\n\t    nested = nested[key];\n\t  }\n\t  return object;\n\t}\n\tfunction basePickBy(object, paths, predicate) {\n\t  var index2 = -1, length = paths.length, result = {};\n\t  while (++index2 < length) {\n\t    var path = paths[index2], value = hasIn.baseGet(object, path);\n\t    if (predicate(value, path)) {\n\t      baseSet(result, hasIn.castPath(path, object), value);\n\t    }\n\t  }\n\t  return result;\n\t}\n\tfunction basePick(object, paths) {\n\t  return basePickBy(object, paths, function(value, path) {\n\t    return hasIn.hasIn(object, path);\n\t  });\n\t}\n\tvar pick = flatRest(function(object, paths) {\n\t  return object == null ? {} : basePick(object, paths);\n\t});\n\tconst pick$1 = pick;\n\tconst marketProgressTrackerCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}:host([orientation=\"horizontal\"]){flex-direction:row}:host([orientation=\"horizontal\"][size=\"small\"]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-small-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"medium\"]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-medium-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"large\"]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-large-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"small\"][compact]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-small-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"medium\"][compact]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-medium-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"large\"][compact]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-large-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][compact][interactive]){gap:0}';\n\tconst MarketProgressTrackerStyle0 = marketProgressTrackerCss;\n\tconst MarketProgressTracker = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.compact = false;\n\t    this.connectorless = false;\n\t    this.currentStepIndex = void 0;\n\t    this.indicator = void 0;\n\t    this.interactive = false;\n\t    this.orientation = \"vertical\";\n\t    this.reversed = false;\n\t    this.size = \"medium\";\n\t  }\n\t  marketProgressTrackerStepClickEventHandler(event) {\n\t    const { defaultPrevented, detail: { index: index2 } } = event;\n\t    if (!defaultPrevented && this.currentStepIndex !== void 0) {\n\t      this.currentStepIndex = index2;\n\t    }\n\t  }\n\t  currentStepIndexWatcher() {\n\t    this.updateStepState();\n\t  }\n\t  reversedWatcher() {\n\t    this.updateStepState();\n\t  }\n\t  otherPropsWatcher(newValue, propKey) {\n\t    this.propagatePropsToSteps({ [propKey]: newValue });\n\t  }\n\t  get stepEls() {\n\t    return [...this.el.children].filter((childEl) => index$1.isElementWithTagName(childEl, \"market-progress-tracker-step\"));\n\t  }\n\t  updateStepState() {\n\t    var _a;\n\t    const { connectorless, currentStepIndex, reversed, stepEls } = this;\n\t    const orderedSteps = reversed ? [...stepEls].reverse() : stepEls;\n\t    orderedSteps.forEach((stepEl, index2) => {\n\t      stepEl.dataset.stepIndex = `${index2}`;\n\t    });\n\t    if (currentStepIndex !== void 0) {\n\t      orderedSteps.forEach((stepEl, index2) => {\n\t        stepEl.completed = index2 < currentStepIndex;\n\t        stepEl.active = index2 === currentStepIndex;\n\t      });\n\t    }\n\t    const activeIndex = (_a = currentStepIndex !== null && currentStepIndex !== void 0 ? currentStepIndex : orderedSteps.findIndex((stepEl) => stepEl.active)) !== null && _a !== void 0 ? _a : -1;\n\t    stepEls.forEach((stepEl, index2) => {\n\t      if (index2 < stepEls.length - 1) {\n\t        if (connectorless) {\n\t          stepEl.connector = null;\n\t        } else if (reversed && index2 >= stepEls.length - activeIndex - 1 || !reversed && index2 < activeIndex) {\n\t          stepEl.connector = \"active\";\n\t        } else {\n\t          stepEl.connector = \"inactive\";\n\t        }\n\t      } else {\n\t        stepEl.connector = connectorless ? null : \"hidden\";\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Updates the steps’ props based on the provided prop-value pair(s)\n\t   */\n\t  propagatePropsToSteps(propValues) {\n\t    this.stepEls.forEach((stepEl) => {\n\t      var _a, _b, _c, _d, _e;\n\t      stepEl.compact = (_a = propValues === null || propValues === void 0 ? void 0 : propValues.compact) !== null && _a !== void 0 ? _a : stepEl.compact;\n\t      stepEl.indicator = (_b = propValues === null || propValues === void 0 ? void 0 : propValues.indicator) !== null && _b !== void 0 ? _b : stepEl.indicator;\n\t      stepEl.interactive = (_c = propValues === null || propValues === void 0 ? void 0 : propValues.interactive) !== null && _c !== void 0 ? _c : stepEl.interactive;\n\t      stepEl.orientation = (_d = propValues === null || propValues === void 0 ? void 0 : propValues.orientation) !== null && _d !== void 0 ? _d : stepEl.orientation;\n\t      stepEl.size = (_e = propValues === null || propValues === void 0 ? void 0 : propValues.size) !== null && _e !== void 0 ? _e : stepEl.size;\n\t    });\n\t  }\n\t  handleDefaultSlotChange() {\n\t    this.propagatePropsToSteps(pick$1(this, \"compact\", \"indicator\", \"interactive\", \"orientation\", \"size\"));\n\t    this.updateStepState();\n\t  }\n\t  connectedCallback() {\n\t    this.propagatePropsToSteps(pick$1(this, \"compact\", \"indicator\", \"interactive\", \"orientation\", \"size\"));\n\t    this.updateStepState();\n\t  }\n\t  render() {\n\t    const { handleDefaultSlotChange, interactive } = this;\n\t    return index.h(index.Host, { key: \"45fa746b221d5a181ba6fc64a1a5733ac8c05814\", class: \"market-progress-tracker\", role: interactive ? \"tablist\" : \"list\" }, index.h(\"slot\", { key: \"7f9476f263aa2d77fa96f9d4ad2a2e76016bf3a1\", onSlotchange: handleDefaultSlotChange.bind(this) }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"currentStepIndex\": [\"currentStepIndexWatcher\"],\n\t      \"reversed\": [\"reversedWatcher\"],\n\t      \"compact\": [\"otherPropsWatcher\"],\n\t      \"indicator\": [\"otherPropsWatcher\"],\n\t      \"interactive\": [\"otherPropsWatcher\"],\n\t      \"orientation\": [\"otherPropsWatcher\"],\n\t      \"size\": [\"otherPropsWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketProgressTracker.style = MarketProgressTrackerStyle0;\n\tmarketProgressTracker_cjs_entry.market_progress_tracker = MarketProgressTracker;\n\treturn marketProgressTracker_cjs_entry;\n}\n\nvar marketProgressTrackerStep_cjs_entry = {};\n\nvar hasRequiredMarketProgressTrackerStep_cjs_entry;\n\nfunction requireMarketProgressTrackerStep_cjs_entry () {\n\tif (hasRequiredMarketProgressTrackerStep_cjs_entry) return marketProgressTrackerStep_cjs_entry;\n\thasRequiredMarketProgressTrackerStep_cjs_entry = 1;\n\tObject.defineProperty(marketProgressTrackerStep_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst checkedIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon checked-icon\", width: \"18\", height: \"18\", viewBox: \"0 0 18 18\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { d: \"M5.88683 7.62327L5.71005 7.4465L5.53327 7.62327L4.12327 9.03327L3.9465 9.21005L4.12327 9.38683L7.12327 12.3868C7.37411 12.6377 7.68955 12.75 8.01005 12.75C8.33627 12.75 8.64735 12.6239 8.89224 12.3913L8.89229 12.3914L8.89683 12.3868L13.8968 7.38683L14.0736 7.21005L13.8968 7.03327L12.4868 5.62327L12.3105 5.44691L12.1337 5.62286L8.00046 9.73691L5.88683 7.62327ZM0.25 9C0.25 4.16807 4.16807 0.25 9 0.25C13.8319 0.25 17.75 4.16807 17.75 9C17.75 13.8319 13.8319 17.75 9 17.75C4.16807 17.75 0.25 13.8319 0.25 9Z\" })\n\t);\n\tconst uncheckedIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon unchecked-icon\", width: \"18\", height: \"18\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M9 16C12.866 16 16 12.866 16 9C16 5.13401 12.866 2 9 2C5.13401 2 2 5.13401 2 9C2 12.866 5.13401 16 9 16ZM9 18C13.9706 18 18 13.9706 18 9C18 4.02944 13.9706 0 9 0C4.02944 0 0 4.02944 0 9C0 13.9706 4.02944 18 9 18Z\" })\n\t);\n\tconst smallerCheckedIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon small-checked-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M0 8C0 3.58222 3.58222 0 8 0C12.4178 0 16 3.58222 16 8C16 12.4178 12.4178 16 8 16C3.58222 16 0 12.4178 0 8ZM5.0756 6.93338L7.11115 8.96893L10.9423 5.1556L12.1956 6.40893L7.75116 10.8534C7.57338 11.0223 7.35115 11.1112 7.12004 11.1112C6.88893 11.1112 6.66671 11.0312 6.48893 10.8534L3.82227 8.18671L5.0756 6.93338Z\" })\n\t);\n\tconst smallerUncheckedIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon small-unchecked-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M8 14.2222C11.4364 14.2222 14.2222 11.4364 14.2222 8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8C1.77778 11.4364 4.56356 14.2222 8 14.2222ZM8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16Z\" })\n\t);\n\tconst activeCircleIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon active-circle-icon\", width: \"18\", height: \"18\", viewBox: \"0 0 18 18\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"circle\", { cx: \"9\", cy: \"9\", r: \"7\", \"stroke-width\": \"4\" })\n\t);\n\tconst inactiveCircleIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon inactive-circle-icon\", width: \"8\", height: \"8\", viewBox: \"0 0 8 8\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"path\", { d: \"M0 4a4 4 0 1 0 8 0a4 4 0 1 0 -8 0\" })\n\t);\n\tconst smallerActiveCircleIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon small-active-circle-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"circle\", { cx: \"8\", cy: \"8\", r: \"6\", \"stroke-opacity\": \"0.9\", \"stroke-width\": \"4\" })\n\t);\n\tconst smallerInactiveCircleIcon = () => index.h(\n\t  \"svg\",\n\t  { class: \"default-icon small-inactive-circle-icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" },\n\t  index.h(\"circle\", { cx: \"8\", cy: \"8\", r: \"4\" })\n\t);\n\tfunction getIcon({ active, completed, indicator, orientation }) {\n\t  if (orientation === \"vertical\") {\n\t    if (indicator === \"check\") {\n\t      if (completed) {\n\t        return checkedIcon();\n\t      } else {\n\t        return uncheckedIcon();\n\t      }\n\t    } else if (indicator === \"circle\") {\n\t      if (active) {\n\t        return activeCircleIcon();\n\t      } else {\n\t        return inactiveCircleIcon();\n\t      }\n\t    }\n\t  } else if (orientation === \"horizontal\") {\n\t    if (indicator === \"check\") {\n\t      if (completed) {\n\t        return smallerCheckedIcon();\n\t      } else {\n\t        return smallerUncheckedIcon();\n\t      }\n\t    } else if (indicator === \"circle\") {\n\t      if (active) {\n\t        return smallerActiveCircleIcon();\n\t      } else {\n\t        return smallerInactiveCircleIcon();\n\t      }\n\t    }\n\t  }\n\t  return void 0;\n\t}\n\tconst marketProgressTrackerStepCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host([orientation=\"horizontal\"][size=\"large\"]) ::slotted([slot=\"label\"]),:host([orientation=\"vertical\"][size=\"large\"]) ::slotted([slot=\"label\"]){font-weight:var(--core-type-heading-20-weight);font-size:var(--core-type-heading-20-size);font-family:var(--core-type-heading-20-font-family);line-height:var(--core-type-heading-20-leading);letter-spacing:var(--core-type-heading-20-tracking);text-transform:var(--core-type-heading-20-case)}::slotted([slot=\"subtext\"]){font-weight:var(--core-type-paragraph-10-weight);font-size:var(--core-type-paragraph-10-size);font-family:var(--core-type-paragraph-10-font-family);line-height:var(--core-type-paragraph-10-leading);letter-spacing:var(--core-type-paragraph-10-tracking);text-transform:var(--core-type-paragraph-10-case)}::slotted([slot=\"subtext\"]) b,::slotted([slot=\"subtext\"]) strong{font-weight:var(--core-type-semibold-10-weight)}:host([orientation=\"vertical\"][size=\"small\"]) ::slotted([slot=\"label\"]){font-weight:var(--core-type-medium-20-weight);font-size:var(--core-type-medium-20-size);font-family:var(--core-type-medium-20-font-family);line-height:var(--core-type-medium-20-leading);letter-spacing:var(--core-type-medium-20-tracking);text-transform:var(--core-type-medium-20-case)}:host([orientation=\"horizontal\"][size=\"small\"]) ::slotted([slot=\"label\"]){font-weight:var(--core-type-semibold-10-weight);font-size:var(--core-type-semibold-10-size);font-family:var(--core-type-semibold-10-font-family);line-height:var(--core-type-semibold-10-leading);letter-spacing:var(--core-type-semibold-10-tracking);text-transform:var(--core-type-semibold-10-case)}:host([orientation=\"horizontal\"][size=\"medium\"]) ::slotted([slot=\"label\"]),:host([orientation=\"vertical\"][size=\"medium\"]) ::slotted([slot=\"label\"]){font-weight:var(--core-type-semibold-30-weight);font-size:var(--core-type-semibold-30-size);font-family:var(--core-type-semibold-30-font-family);line-height:var(--core-type-semibold-30-leading);letter-spacing:var(--core-type-semibold-30-tracking);text-transform:var(--core-type-semibold-30-case)}.button,.label{display:flex;grid-area:button;gap:var(--progress-tracker-horizontal-label-spacing, var(--core-metrics-spacing-100));border:0;background:transparent;color:inherit}.button{border-radius:var(--progress-tracker-horizontal-button-border-radius, 6px);cursor:pointer}.button:active,.button:hover:active{background-color:var(--progress-tracker-horizontal-button-pressed-background-color, var(--core-emphasis-40-color));color:var(--progress-tracker-horizontal-button-pressed-text-color, var(--core-text-10-color))}.button:focus-visible{outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}:host([compact]) .button{padding-right:var(--progress-tracker-horizontal-compact-button-padding-right, var(--core-metrics-spacing-100));padding-left:var(--progress-tracker-horizontal-compact-button-padding-left, var(--core-metrics-spacing-100))}:host([compact]:not([connector])) .button{padding-right:var(--progress-tracker-horizontal-compact-button-padding-right, 6px);padding-left:var(--progress-tracker-horizontal-compact-button-padding-left, 6px)}:host([compact]:not([connector])) .button:hover,:host([compact]:not([connector])) .button:active,:host([compact]:not([connector])) .button:focus{margin-right:-2px;margin-left:-2px;padding-right:var(--progress-tracker-horizontal-compact-button-padding-right, var(--core-metrics-spacing-100));padding-left:var(--progress-tracker-horizontal-compact-button-padding-left, var(--core-metrics-spacing-100))}:host([size=\"small\"]:not([compact])) .button{padding-right:var(--progress-tracker-horizontal-small-size-button-padding-right, var(--core-metrics-spacing-100));padding-left:var(--progress-tracker-horizontal-small-size-button-padding-left, var(--core-metrics-spacing-100))}:host([size=\"medium\"]:not([compact])) .button{padding-right:var(--progress-tracker-horizontal-medium-size-button-padding-right, var(--core-metrics-spacing-150));padding-left:var(--progress-tracker-horizontal-medium-size-button-padding-left, var(--core-metrics-spacing-150))}:host([size=\"large\"]:not([compact])) .button{padding-right:var(--progress-tracker-horizontal-large-size-button-padding-right, var(--core-metrics-spacing-200));padding-left:var(--progress-tracker-horizontal-large-size-button-padding-left, var(--core-metrics-spacing-200))}@media (hover: hover){.button:hover{background-color:var(--progress-tracker-horizontal-button-hover-background-color, var(--core-fill-40-color));color:var(--progress-tracker-horizontal-button-hover-text-color, var(--core-text-10-color))}.button:active,.button:hover:active{background-color:var(--progress-tracker-horizontal-button-pressed-background-color, var(--core-emphasis-40-color));color:var(--progress-tracker-horizontal-button-pressed-text-color, var(--core-text-10-color))}:host([compact]:not([connector])) .button{z-index:0}:host([compact]:not([connector])) .button:hover{z-index:1;margin-right:-2px;margin-left:-2px;padding-right:var(--progress-tracker-horizontal-compact-button-padding-right, var(--core-metrics-spacing-100));padding-left:var(--progress-tracker-horizontal-compact-button-padding-left, var(--core-metrics-spacing-100))}}:host([orientation=\"horizontal\"]){--connector-color:var(--progress-tracker-horizontal-connector-color, var(--core-fill-30-color));--connector-radius:var(--progress-tracker-horizontal-connector-radius, var(--divider-radius));--active-connector-color:var(--progress-tracker-horizontal-active-connector-color, var(--core-fill-10-color))}:host([orientation=\"vertical\"]){--connector-color:var(--progress-tracker-vertical-connector-color, var(--core-fill-30-color));--connector-radius:var(--progress-tracker-vertical-connector-radius, 0);--active-connector-color:var(--progress-tracker-vertical-active-connector-color, var(--core-fill-10-color))}:host::after{content:\"\";display:none;grid-area:connector;align-self:center;justify-self:center;border-radius:var(--connector-radius);pointer-events:none}:host([connector=\"inactive\"])::after{display:flex;background-color:var(--connector-color)}:host([connector=\"active\"])::after{display:flex;background-color:var(--active-connector-color)}:host([orientation=\"vertical\"])::after{width:var(--progress-tracker-vertical-connector-size, 2px);height:100%}:host([orientation=\"horizontal\"])::after{width:100%;height:var(--progress-tracker-horizontal-connector-size, 2px)}.content{display:flex;flex-shrink:0;flex-direction:column;grid-area:content;align-items:flex-start}.content ::slotted([slot=\"label\"]){color:inherit;cursor:inherit}:host([orientation=\"vertical\"][size=\"small\"]) .content ::slotted([slot=\"label\"]){margin:3px 0 0}:host([orientation=\"vertical\"][size=\"medium\"]) .content ::slotted([slot=\"label\"]){margin:2px 0 0}:host([orientation=\"vertical\"][size=\"large\"]) .content ::slotted([slot=\"label\"]){margin:1px 0 0}.content ::slotted([slot=\"subtext\"]){margin:0;color:var(--progress-tracker-subtext-color, var(--core-text-20-color))}.content ::slotted(p:first-of-type){margin-top:0}.content ::slotted(p:last-of-type){margin-bottom:0}:host([orientation=\"horizontal\"]) .content{align-self:center;white-space:nowrap}:host([orientation=\"horizontal\"]) .content ::slotted(:not([slot=\"icon\"]):not([slot=\"label\"])){display:none}:host([orientation=\"vertical\"]) .content{gap:var(--progress-tracker-line-spacing, var(--core-metrics-spacing-25));padding-bottom:var(--progress-tracker-content-padding-bottom-size, var(--core-metrics-spacing-200))}:host([orientation=\"horizontal\"][compact]:not([active])) .content{display:none}:host([orientation=\"horizontal\"]) .content ::slotted(:not([slot=\"label\"])){display:none}:host([orientation=\"horizontal\"]:not([active]):not([completed])){color:var(--progress-tracker-horizontal-inactive-text-color, var(--core-text-20-color))}:host([orientation=\"horizontal\"][active]),:host([orientation=\"horizontal\"][completed]){color:var(--progress-tracker-horizontal-active-text-color, var(--core-text-10-color))}:host([orientation=\"horizontal\"][connector=\"active\"]),:host([orientation=\"horizontal\"][connector=\"inactive\"]){grid-template-areas:\"button connector\"}:host([orientation=\"horizontal\"]:not([connector])),:host([orientation=\"horizontal\"][connector=\"hidden\"]){grid-template-areas:\"button\";grid-template-columns:auto}:host([orientation=\"horizontal\"][connector=\"active\"]:not([compact])),:host([orientation=\"horizontal\"][connector=\"inactive\"]:not([compact])){grid-template-columns:auto\\n    minmax(\\n      var(--tracker-horizontal-orientation-compact-density-small-size-current-state-connector-width),\\n      var(--tracker-horizontal-orientation-regular-density-small-size-current-state-connector-width)\\n    )}:host([orientation=\"horizontal\"][connector=\"active\"][compact]),:host([orientation=\"horizontal\"][connector=\"inactive\"][compact]){grid-template-columns:auto\\n    minmax(\\n      auto,\\n      var(--tracker-horizontal-orientation-compact-density-small-size-current-state-connector-width)\\n    )}:host([orientation=\"horizontal\"][size=\"small\"]){grid-template-rows:minmax(var(--progress-tracker-horizontal-small-size-height, 34px), 1fr)}:host([orientation=\"horizontal\"][size=\"medium\"]){grid-template-rows:minmax(var(--progress-tracker-horizontal-medium-size-height, 40px), 1fr)}:host([orientation=\"horizontal\"][size=\"large\"]){grid-template-rows:minmax(var(--progress-tracker-horizontal-large-size-height, 42px), 1fr)}:host([orientation=\"horizontal\"][size=\"small\"][connector]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-small-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"medium\"][connector]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-medium-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"large\"][connector]:not([compact]):not([interactive])){gap:var(--tracker-horizontal-orientation-connectors-density-large-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"small\"][compact][connector]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-small-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"medium\"][compact][connector]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-medium-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][size=\"large\"][compact][connector]:not([interactive])){gap:var(--tracker-horizontal-orientation-compact-density-large-size-current-state-step-spacing)}:host([orientation=\"horizontal\"][interactive]){gap:0}:host([orientation=\"horizontal\"]){--default-icon-fill-color:var(--progress-tracker-horizontal-default-icon-fill-color, var(--core-fill-30-color));--custom-icon-fill-color:var(--progress-tracker-horizontal-custom-icon-fill-color, var(--core-fill-20-color));--active-icon-fill-color:var(--progress-tracker-horizontal-active-icon-fill-color, var(--core-fill-10-color));--completed-icon-fill-color:var(\\n      --progress-tracker-horizontal-completed-icon-fill-color,\\n      var(--core-fill-10-color)\\n    )}:host([orientation=\"vertical\"]){--default-icon-fill-color:var(--progress-tracker-vertical-default-icon-fill-color, var(--core-fill-30-color));--custom-icon-fill-color:var(--progress-tracker-vertical-custom-icon-fill-color, var(--core-fill-20-color));--active-icon-fill-color:var(--progress-tracker-vertical-active-icon-fill-color, var(--core-fill-10-color));--completed-icon-fill-color:var(\\n      --progress-tracker-vertical-completed-icon-fill-color,\\n      var(--core-fill-10-color)\\n    )}.icon{display:flex;grid-area:icon;justify-content:center;align-items:center;align-self:center;fill:var(--default-icon-fill-color)}.icon.custom-icon{fill:var(--custom-icon-fill-color)}:host([active]) .icon{fill:var(--active-icon-fill-color)}:host([completed]) .icon{fill:var(--completed-icon-fill-color)}:host([orientation=\"horizontal\"]) .icon{min-width:var(--progress-tracker-horizontal-icon-width, var(--core-metrics-spacing-200));min-height:var(--progress-tracker-horizontal-icon-height, var(--core-metrics-spacing-200))}:host([orientation=\"vertical\"]) .icon{flex:0 0 var(--progress-tracker-vertical-icon-width, var(--accessory-icon-variant-medium-size-width));max-width:var(--progress-tracker-vertical-icon-width, var(--accessory-icon-variant-medium-size-width));max-height:var(--progress-tracker-vertical-icon-height, 28px)}:host(:not([completed]):not([active])) .default-icon.active-circle-icon,:host(:not([completed]):not([active])) .default-icon.small-active-circle-icon{fill:none;stroke:var(--default-icon-fill-color)}:host([active]) .default-icon.active-circle-icon,:host([active]) .default-icon.small-active-circle-icon{fill:none;stroke:var(--active-icon-fill-color)}:host([completed]) .default-icon.active-circle-icon,:host([completed]) .default-icon.small-active-circle-icon{fill:none;stroke:var(--completed-icon-fill-color)}@media (hover: hover){:host(:not([completed]):not([active])) .button:hover .icon,:host(:not([completed]):not([active])) .button:hover .default-icon,:host(:not([completed]):not([active])) .button:active .icon,:host(:not([completed]):not([active])) .button:active .default-icon{fill:var(--progress-tracker-horizontal-hover-icon-fill-color, var(--core-fill-10-color))}:host(:not([completed]):not([active])) .button:hover .default-icon.active-circle-icon,:host(:not([completed]):not([active])) .button:hover .default-icon.small-active-circle-icon,:host(:not([completed]):not([active])) .button:active .default-icon.active-circle-icon,:host(:not([completed]):not([active])) .button:active .default-icon.small-active-circle-icon{fill:none;stroke:var(--progress-tracker-horizontal-hover-icon-fill-color, var(--core-fill-10-color))}}:host([orientation=\"vertical\"]){grid-template-rows:var(--progress-tracker-step-vertical-icon-height, 28px) auto;grid-template-columns:var(--progress-tracker-step-vertical-icon-width, var(--accessory-icon-variant-medium-size-width))\\n    auto;gap:0 var(--core-metrics-spacing-200);align-self:flex-start;color:var(--progress-tracker-vertical-text-color, var(--core-text-10-color))}:host([orientation=\"vertical\"][connector]){grid-template-areas:\"icon content\"\\n    \"connector content\"}:host([orientation=\"vertical\"]:not([connector])){grid-template-areas:\"icon content\"\\n    \". content\"}:host{display:inline-grid}';\n\tconst MarketProgressTrackerStepStyle0 = marketProgressTrackerStepCss;\n\tconst MarketProgressTrackerStep = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketProgressTrackerStepClick = index.createEvent(this, \"marketProgressTrackerStepClick\", 7);\n\t    this.active = false;\n\t    this.compact = false;\n\t    this.connector = void 0;\n\t    this.completed = false;\n\t    this.indicator = \"circle\";\n\t    this.interactive = false;\n\t    this.name = void 0;\n\t    this.orientation = \"vertical\";\n\t    this.size = \"medium\";\n\t    this.defaultIcon = void 0;\n\t  }\n\t  /**\n\t   * Updates the default icon based on the following attributes\n\t   */\n\t  updateDefaultIcon() {\n\t    const { active, completed, el, indicator, orientation } = this;\n\t    const slottedIcon = [...el.children].some((e) => e.slot === \"icon\");\n\t    if (slottedIcon) {\n\t      this.defaultIcon = null;\n\t    } else {\n\t      this.defaultIcon = getIcon({ active, completed, indicator, orientation });\n\t    }\n\t  }\n\t  handleClick() {\n\t    const { el, interactive, marketProgressTrackerStepClick, name } = this;\n\t    if (interactive) {\n\t      marketProgressTrackerStepClick.emit({\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        index: el.dataset.stepIndex !== void 0 ? Number.parseInt(el.dataset.stepIndex, 10) : null,\n\t        name: name !== null && name !== void 0 ? name : null\n\t      });\n\t    }\n\t  }\n\t  connectedCallback() {\n\t    this.updateDefaultIcon();\n\t  }\n\t  render() {\n\t    const { defaultIcon, handleClick, interactive, orientation, updateDefaultIcon } = this;\n\t    const MarketAccessoryTagName = index$1.getNamespacedTagFor(\"market-accessory\");\n\t    const HorizontalWrapperTagName = interactive ? \"button\" : \"div\";\n\t    const renderContent = () => {\n\t      return index.h(index.Fragment, null, index.h(\"div\", { class: classnames.classNames(\"icon\", { \"custom-icon\": Boolean(!defaultIcon) }), part: \"icon\" }, index.h(\"slot\", { name: \"icon\", onSlotchange: updateDefaultIcon.bind(this) }, index.h(MarketAccessoryTagName, null, defaultIcon))), index.h(\"div\", { class: \"content\", part: \"content\" }, index.h(\"slot\", { name: \"label\" }), index.h(\"slot\", { name: \"subtext\" }), index.h(\"slot\", null)));\n\t    };\n\t    return index.h(index.Host, { class: \"market-progress-tracker-step\", role: orientation === \"horizontal\" ? \"presentation\" : \"listitem\" }, orientation === \"horizontal\" ? index.h(HorizontalWrapperTagName, {\n\t      class: interactive ? \"button\" : \"label\",\n\t      onClick: interactive ? handleClick.bind(this) : null,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      part: interactive ? \"button\" : null,\n\t      role: interactive ? \"tab\" : \"listitem\"\n\t    }, renderContent()) : renderContent());\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"active\": [\"updateDefaultIcon\"],\n\t      \"completed\": [\"updateDefaultIcon\"],\n\t      \"indicator\": [\"updateDefaultIcon\"],\n\t      \"orientation\": [\"updateDefaultIcon\"]\n\t    };\n\t  }\n\t};\n\tMarketProgressTrackerStep.style = MarketProgressTrackerStepStyle0;\n\tmarketProgressTrackerStep_cjs_entry.market_progress_tracker_step = MarketProgressTrackerStep;\n\treturn marketProgressTrackerStep_cjs_entry;\n}\n\nvar marketQrcode_cjs_entry = {};\n\nvar hasRequiredMarketQrcode_cjs_entry;\n\nfunction requireMarketQrcode_cjs_entry () {\n\tif (hasRequiredMarketQrcode_cjs_entry) return marketQrcode_cjs_entry;\n\thasRequiredMarketQrcode_cjs_entry = 1;\n\tvar __defProp = Object.defineProperty;\n\tvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\n\tvar __hasOwnProp = Object.prototype.hasOwnProperty;\n\tvar __propIsEnum = Object.prototype.propertyIsEnumerable;\n\tvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n\tvar __spreadValues = (a, b) => {\n\t  for (var prop in b || (b = {}))\n\t    if (__hasOwnProp.call(b, prop))\n\t      __defNormalProp(a, prop, b[prop]);\n\t  if (__getOwnPropSymbols)\n\t    for (var prop of __getOwnPropSymbols(b)) {\n\t      if (__propIsEnum.call(b, prop))\n\t        __defNormalProp(a, prop, b[prop]);\n\t    }\n\t  return a;\n\t};\n\tObject.defineProperty(marketQrcode_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst ALIGNMENT_PATTERN_LOCATIONS = Object.freeze([\n\t  [],\n\t  [4, 16],\n\t  [4, 20],\n\t  [4, 24],\n\t  [4, 28],\n\t  [4, 32],\n\t  [4, 20, 36],\n\t  [4, 22, 40],\n\t  [4, 24, 44],\n\t  [4, 26, 48],\n\t  [4, 28, 52],\n\t  [4, 30, 56],\n\t  [4, 32, 60],\n\t  [4, 24, 44, 64],\n\t  [4, 24, 46, 68],\n\t  [4, 24, 48, 72],\n\t  [4, 28, 52, 76],\n\t  [4, 28, 54, 80],\n\t  [4, 28, 56, 84],\n\t  [4, 32, 60, 88],\n\t  [4, 26, 48, 70, 92],\n\t  [4, 24, 48, 72, 96],\n\t  [4, 28, 52, 76, 100],\n\t  [4, 26, 52, 78, 104],\n\t  [4, 30, 56, 82, 108],\n\t  [4, 28, 56, 84, 112],\n\t  [4, 32, 60, 88, 116],\n\t  [4, 24, 48, 72, 96, 120],\n\t  [4, 28, 52, 76, 100, 124],\n\t  [4, 24, 50, 76, 102, 128],\n\t  [4, 28, 54, 80, 106, 132],\n\t  [4, 32, 58, 84, 110, 136],\n\t  [4, 28, 56, 84, 112, 140],\n\t  [4, 32, 60, 88, 116, 144],\n\t  [4, 28, 52, 76, 100, 124, 148],\n\t  [4, 22, 48, 74, 100, 126, 152],\n\t  [4, 26, 52, 78, 104, 130, 156],\n\t  [4, 30, 56, 82, 108, 134, 160],\n\t  [4, 24, 52, 80, 108, 136, 164],\n\t  [4, 28, 56, 84, 112, 140, 168]\n\t]);\n\tconst DATA_CAPACITY = Object.freeze({\n\t  LOW: [\n\t    19,\n\t    34,\n\t    55,\n\t    80,\n\t    108,\n\t    136,\n\t    156,\n\t    194,\n\t    232,\n\t    274,\n\t    324,\n\t    370,\n\t    428,\n\t    461,\n\t    523,\n\t    589,\n\t    647,\n\t    721,\n\t    795,\n\t    861,\n\t    932,\n\t    1006,\n\t    1094,\n\t    1174,\n\t    1276,\n\t    1370,\n\t    1468,\n\t    1531,\n\t    1631,\n\t    1735,\n\t    1843,\n\t    1955,\n\t    2071,\n\t    2191,\n\t    2306,\n\t    2434,\n\t    2566,\n\t    2702,\n\t    2812,\n\t    2956\n\t  ],\n\t  MEDIUM: [\n\t    16,\n\t    28,\n\t    44,\n\t    64,\n\t    86,\n\t    108,\n\t    124,\n\t    154,\n\t    182,\n\t    216,\n\t    254,\n\t    290,\n\t    334,\n\t    365,\n\t    415,\n\t    453,\n\t    507,\n\t    563,\n\t    627,\n\t    669,\n\t    714,\n\t    782,\n\t    860,\n\t    914,\n\t    1e3,\n\t    1062,\n\t    1128,\n\t    1193,\n\t    1267,\n\t    1373,\n\t    1455,\n\t    1541,\n\t    1631,\n\t    1725,\n\t    1812,\n\t    1914,\n\t    1992,\n\t    2102,\n\t    2216,\n\t    2334\n\t  ],\n\t  QUARTER: [\n\t    13,\n\t    22,\n\t    34,\n\t    48,\n\t    62,\n\t    76,\n\t    88,\n\t    110,\n\t    132,\n\t    154,\n\t    180,\n\t    206,\n\t    244,\n\t    261,\n\t    295,\n\t    325,\n\t    367,\n\t    397,\n\t    445,\n\t    485,\n\t    512,\n\t    568,\n\t    614,\n\t    664,\n\t    718,\n\t    754,\n\t    808,\n\t    871,\n\t    911,\n\t    985,\n\t    1033,\n\t    1115,\n\t    1171,\n\t    1231,\n\t    1286,\n\t    1354,\n\t    1426,\n\t    1502,\n\t    1582,\n\t    1666\n\t  ],\n\t  HIGH: [\n\t    9,\n\t    16,\n\t    26,\n\t    36,\n\t    46,\n\t    60,\n\t    66,\n\t    86,\n\t    100,\n\t    122,\n\t    140,\n\t    158,\n\t    180,\n\t    197,\n\t    223,\n\t    253,\n\t    283,\n\t    313,\n\t    341,\n\t    385,\n\t    406,\n\t    442,\n\t    464,\n\t    514,\n\t    538,\n\t    596,\n\t    628,\n\t    661,\n\t    701,\n\t    745,\n\t    793,\n\t    845,\n\t    901,\n\t    961,\n\t    986,\n\t    1054,\n\t    1096,\n\t    1142,\n\t    1222,\n\t    1276\n\t  ]\n\t});\n\tconst ENCODING = Object.freeze({\n\t  NUMERIC: \"NUMERIC\",\n\t  ALPHANUMERIC: \"ALPHANUMERIC\",\n\t  KANJI: \"KANJI\",\n\t  BYTE: \"BYTE\"\n\t});\n\tconst ERROR_CORRECTION = Object.freeze({\n\t  LOW: \"LOW\",\n\t  MEDIUM: \"MEDIUM\",\n\t  QUARTER: \"QUARTER\",\n\t  HIGH: \"HIGH\"\n\t});\n\tclass BitWriter {\n\t  constructor(length2) {\n\t    this.length = length2;\n\t    this.content = new Uint8Array(length2);\n\t    this.byte = 0;\n\t    this.bit = 0;\n\t  }\n\t  get bitsLeft() {\n\t    return (this.length - this.byte) * 8 - this.bit;\n\t  }\n\t  get bytesLeft() {\n\t    return this.bit === 0 ? this.length - this.byte : this.length - this.byte - 1;\n\t  }\n\t  codeForAlphaNUMERICal(char) {\n\t    const lookIn = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\n\t    for (let index2 = 0; index2 < lookIn.length; index2++) {\n\t      if (lookIn[index2] === char) return index2;\n\t    }\n\t  }\n\t  completeByte() {\n\t    if (this.bit === 0) return;\n\t    this.bit = 0;\n\t    this.byte++;\n\t  }\n\t  nextPutAlphaNUMERIC(string) {\n\t    for (let last = 1; last < string.length; last += 2) {\n\t      this.nextPutBits(\n\t        this.codeForAlphaNUMERICal(string[last - 1]) * 45 + this.codeForAlphaNUMERICal(string[last]),\n\t        11\n\t      );\n\t    }\n\t    if (string.length % 2 === 1) {\n\t      this.nextPutBits(this.codeForAlphaNUMERICal(string[string.length - 1]), 6);\n\t    }\n\t  }\n\t  nextPutBits(int, bits) {\n\t    if (bits === 0) return;\n\t    let amount = this.bit + bits;\n\t    if (amount < 8) {\n\t      this.content[this.byte] = this.content[this.byte] | int << 8 - amount;\n\t      this.bit += bits;\n\t    } else if (amount === 8) {\n\t      this.content[this.byte] = this.content[this.byte] | int;\n\t      this.byte++;\n\t      this.bit = 0;\n\t    } else {\n\t      amount -= 8;\n\t      let shift = int >> amount;\n\t      this.content[this.byte] = this.content[this.byte] | shift;\n\t      shift = int - (shift << amount);\n\t      this.byte++;\n\t      this.bit = 0;\n\t      this.nextPutBits(shift, amount);\n\t    }\n\t  }\n\t  nextPutByte(byteArray) {\n\t    byteArray.forEach((byte) => {\n\t      this.nextPutBits(byte, 8);\n\t    });\n\t  }\n\t  nextPutCompleteByte(byte) {\n\t    this.completeByte();\n\t    this.content[this.byte] = byte;\n\t    this.byte++;\n\t  }\n\t  nextPutKanji(string) {\n\t    for (let index2 = 0; index2 < string.length; index2++) {\n\t      let charCode = string.charCodeAt(index2);\n\t      if (charCode <= 40956) {\n\t        charCode -= 33088;\n\t      } else {\n\t        charCode -= 49472;\n\t      }\n\t      let lByte = charCode % 256;\n\t      let bByte = (charCode - lByte) / 256;\n\t      this.nextPutBits(bByte * 192 + lByte, 13);\n\t    }\n\t  }\n\t  nextPutNumeric(string) {\n\t    const asNumbers = [];\n\t    for (let index2 = 0; index2 < string.length; index2++) {\n\t      asNumbers.push(string.charCodeAt(index2) - 48);\n\t    }\n\t    for (let last = 2; last < string.length; last += 3) {\n\t      this.nextPutBits(asNumbers[last - 2] * 100 + asNumbers[last - 1] * 10 + asNumbers[last], 10);\n\t    }\n\t    switch (string.length % 3) {\n\t      case 0:\n\t        break;\n\t      case 1:\n\t        this.nextPutBits(asNumbers[string.length - 1], 4);\n\t        break;\n\t      case 2:\n\t        this.nextPutBits(asNumbers[string.length - 2] * 10 + asNumbers[string.length - 1], 7);\n\t        break;\n\t    }\n\t  }\n\t}\n\tclass Matrix$1 {\n\t  static withAll(width, height, fill) {\n\t    const content = [];\n\t    if (fill === void 0) {\n\t      for (let row = 0; row < height; row++) {\n\t        content.push(new Array(width));\n\t      }\n\t    } else {\n\t      for (let row = 0; row < height; row++) {\n\t        content.push(new Array(width).fill(fill));\n\t      }\n\t    }\n\t    return new this(content);\n\t  }\n\t  constructor(content) {\n\t    this.content = content;\n\t  }\n\t  at(x, y) {\n\t    return this.content[y][x];\n\t  }\n\t  copy() {\n\t    return new this.constructor(this.content.map((row) => row.slice()));\n\t  }\n\t  fill(x, y, width, height, value) {\n\t    for (let top = y; top < y + height; top++) {\n\t      let row = this.content[top];\n\t      for (let col = x; col < x + width; col++) {\n\t        row[col] = value;\n\t      }\n\t    }\n\t  }\n\t  get height() {\n\t    return this.content.length;\n\t  }\n\t  put(x, y, value) {\n\t    return this.content[y][x] = value;\n\t  }\n\t  get width() {\n\t    return this.content[0].length;\n\t  }\n\t}\n\tclass BooleanMatrix extends Matrix$1 {\n\t  static forIntegerArray(width, height, array) {\n\t    const content = [];\n\t    for (let y = 0; y < height; y++) {\n\t      let rowInteger = array[y];\n\t      const row = [];\n\t      for (let x = width - 1; x >= 0; x--) {\n\t        if (rowInteger % 2 === 1) {\n\t          row.unshift(true);\n\t          rowInteger--;\n\t        } else {\n\t          row.unshift(false);\n\t        }\n\t        rowInteger = rowInteger / 2;\n\t      }\n\t      content.push(row);\n\t    }\n\t    return new this(content);\n\t  }\n\t  asIntegerArray() {\n\t    return this.content.map((row) => {\n\t      let integer = 0;\n\t      row.forEach((bool) => {\n\t        integer *= 2;\n\t        if (bool === true) integer++;\n\t      });\n\t      return integer;\n\t    });\n\t  }\n\t  bitAt(x, y) {\n\t    return this.at(x, y) ? 1 : 0;\n\t  }\n\t  fillAlignmentPatternAt(x, y) {\n\t    for (let size = 0; size < 4; size++) {\n\t      this.content[y][x + size] = true;\n\t      this.content[y + 4][x + size + 1] = true;\n\t      this.content[y + 1 + size][x] = true;\n\t      this.content[y + size][x + 4] = true;\n\t    }\n\t    this.content[y + 2][x + 2] = true;\n\t  }\n\t  fillFinderPatternAt(x, y) {\n\t    for (let size = 0; size < 6; size++) {\n\t      this.content[y][x + size] = true;\n\t      this.content[y + 6][x + size + 1] = true;\n\t      this.content[y + 1 + size][x] = true;\n\t      this.content[y + size][x + 6] = true;\n\t    }\n\t    this.fill(x + 2, y + 2, 3, 3, true);\n\t  }\n\t}\n\tclass QRCodeMap extends Matrix$1 {\n\t  // CHUNKING\n\t  static chunkingAt(errorCorrection, version) {\n\t    return {\n\t      LOW: [\n\t        [[1, 26, 19]],\n\t        [[1, 44, 34]],\n\t        [[1, 70, 55]],\n\t        [[1, 100, 80]],\n\t        [[1, 134, 108]],\n\t        [[2, 86, 68]],\n\t        [[2, 98, 78]],\n\t        [[2, 121, 97]],\n\t        [[2, 146, 116]],\n\t        [\n\t          [2, 86, 68],\n\t          [2, 87, 69]\n\t        ],\n\t        [[4, 101, 81]],\n\t        [\n\t          [2, 116, 92],\n\t          [2, 117, 93]\n\t        ],\n\t        [[4, 133, 107]],\n\t        [\n\t          [3, 145, 115],\n\t          [1, 146, 116]\n\t        ],\n\t        [\n\t          [5, 109, 87],\n\t          [1, 110, 88]\n\t        ],\n\t        [\n\t          [5, 122, 98],\n\t          [1, 123, 99]\n\t        ],\n\t        [\n\t          [1, 135, 107],\n\t          [5, 136, 108]\n\t        ],\n\t        [\n\t          [5, 150, 120],\n\t          [1, 151, 121]\n\t        ],\n\t        [\n\t          [3, 141, 113],\n\t          [4, 142, 114]\n\t        ],\n\t        [\n\t          [3, 135, 107],\n\t          [5, 136, 108]\n\t        ],\n\t        [\n\t          [4, 144, 116],\n\t          [4, 145, 117]\n\t        ],\n\t        [\n\t          [2, 139, 111],\n\t          [7, 140, 112]\n\t        ],\n\t        [\n\t          [4, 151, 121],\n\t          [5, 152, 122]\n\t        ],\n\t        [\n\t          [6, 147, 117],\n\t          [4, 148, 118]\n\t        ],\n\t        [\n\t          [8, 132, 106],\n\t          [4, 133, 107]\n\t        ],\n\t        [\n\t          [10, 142, 114],\n\t          [2, 143, 115]\n\t        ],\n\t        [\n\t          [8, 152, 122],\n\t          [4, 153, 123]\n\t        ],\n\t        [\n\t          [3, 147, 117],\n\t          [10, 148, 118]\n\t        ],\n\t        [\n\t          [7, 146, 116],\n\t          [7, 147, 117]\n\t        ],\n\t        [\n\t          [5, 145, 115],\n\t          [10, 146, 116]\n\t        ],\n\t        [\n\t          [13, 145, 115],\n\t          [3, 146, 116]\n\t        ],\n\t        [[17, 145, 115]],\n\t        [\n\t          [17, 145, 115],\n\t          [1, 146, 116]\n\t        ],\n\t        [\n\t          [13, 145, 115],\n\t          [6, 146, 116]\n\t        ],\n\t        [\n\t          [12, 151, 121],\n\t          [7, 152, 122]\n\t        ],\n\t        [\n\t          [6, 151, 121],\n\t          [14, 152, 122]\n\t        ],\n\t        [\n\t          [17, 152, 122],\n\t          [4, 153, 123]\n\t        ],\n\t        [\n\t          [4, 152, 122],\n\t          [18, 153, 123]\n\t        ],\n\t        [\n\t          [20, 147, 117],\n\t          [4, 148, 118]\n\t        ],\n\t        [\n\t          [19, 148, 118],\n\t          [6, 149, 119]\n\t        ]\n\t      ],\n\t      HIGH: [\n\t        [[1, 26, 9]],\n\t        [[1, 44, 16]],\n\t        [[2, 35, 13]],\n\t        [[4, 25, 9]],\n\t        [\n\t          [2, 33, 11],\n\t          [2, 34, 12]\n\t        ],\n\t        [[4, 43, 15]],\n\t        [\n\t          [4, 39, 13],\n\t          [1, 40, 14]\n\t        ],\n\t        [\n\t          [4, 40, 14],\n\t          [2, 41, 15]\n\t        ],\n\t        [\n\t          [4, 36, 12],\n\t          [4, 37, 13]\n\t        ],\n\t        [\n\t          [6, 43, 15],\n\t          [2, 44, 16]\n\t        ],\n\t        [\n\t          [3, 36, 12],\n\t          [8, 37, 13]\n\t        ],\n\t        [\n\t          [7, 42, 14],\n\t          [4, 43, 15]\n\t        ],\n\t        [\n\t          [12, 33, 11],\n\t          [4, 34, 12]\n\t        ],\n\t        [\n\t          [11, 36, 12],\n\t          [5, 37, 13]\n\t        ],\n\t        [\n\t          [11, 36, 12],\n\t          [7, 37, 13]\n\t        ],\n\t        [\n\t          [3, 45, 15],\n\t          [13, 46, 16]\n\t        ],\n\t        [\n\t          [2, 42, 14],\n\t          [17, 43, 15]\n\t        ],\n\t        [\n\t          [2, 42, 14],\n\t          [19, 43, 15]\n\t        ],\n\t        [\n\t          [9, 39, 13],\n\t          [16, 40, 14]\n\t        ],\n\t        [\n\t          [15, 43, 15],\n\t          [10, 44, 16]\n\t        ],\n\t        [\n\t          [19, 46, 16],\n\t          [6, 47, 17]\n\t        ],\n\t        [[34, 37, 13]],\n\t        [\n\t          [16, 45, 15],\n\t          [14, 46, 16]\n\t        ],\n\t        [\n\t          [30, 46, 16],\n\t          [2, 47, 17]\n\t        ],\n\t        [\n\t          [22, 45, 15],\n\t          [13, 46, 16]\n\t        ],\n\t        [\n\t          [33, 46, 16],\n\t          [4, 47, 17]\n\t        ],\n\t        [\n\t          [12, 45, 15],\n\t          [28, 46, 16]\n\t        ],\n\t        [\n\t          [11, 45, 15],\n\t          [31, 46, 16]\n\t        ],\n\t        [\n\t          [19, 45, 15],\n\t          [26, 46, 16]\n\t        ],\n\t        [\n\t          [23, 45, 15],\n\t          [25, 46, 16]\n\t        ],\n\t        [\n\t          [23, 45, 15],\n\t          [28, 46, 16]\n\t        ],\n\t        [\n\t          [19, 45, 15],\n\t          [35, 46, 16]\n\t        ],\n\t        [\n\t          [11, 45, 15],\n\t          [46, 46, 16]\n\t        ],\n\t        [\n\t          [59, 46, 16],\n\t          [1, 47, 17]\n\t        ],\n\t        [\n\t          [22, 45, 15],\n\t          [41, 46, 16]\n\t        ],\n\t        [\n\t          [2, 45, 15],\n\t          [64, 46, 16]\n\t        ],\n\t        [\n\t          [24, 45, 15],\n\t          [46, 46, 16]\n\t        ],\n\t        [\n\t          [42, 45, 15],\n\t          [32, 46, 16]\n\t        ],\n\t        [\n\t          [10, 45, 15],\n\t          [67, 46, 16]\n\t        ],\n\t        [\n\t          [20, 45, 15],\n\t          [61, 46, 16]\n\t        ]\n\t      ],\n\t      MEDIUM: [\n\t        [[1, 26, 16]],\n\t        [[1, 44, 28]],\n\t        [[1, 70, 44]],\n\t        [[2, 50, 32]],\n\t        [[2, 67, 43]],\n\t        [[4, 43, 27]],\n\t        [[4, 49, 31]],\n\t        [\n\t          [2, 60, 38],\n\t          [2, 61, 39]\n\t        ],\n\t        [\n\t          [3, 58, 36],\n\t          [2, 59, 37]\n\t        ],\n\t        [\n\t          [4, 69, 43],\n\t          [1, 70, 44]\n\t        ],\n\t        [\n\t          [1, 80, 50],\n\t          [4, 81, 51]\n\t        ],\n\t        [\n\t          [6, 58, 36],\n\t          [2, 59, 37]\n\t        ],\n\t        [\n\t          [8, 59, 37],\n\t          [1, 60, 38]\n\t        ],\n\t        [\n\t          [4, 64, 40],\n\t          [5, 65, 41]\n\t        ],\n\t        [\n\t          [5, 65, 41],\n\t          [5, 66, 42]\n\t        ],\n\t        [\n\t          [7, 73, 45],\n\t          [3, 74, 46]\n\t        ],\n\t        [\n\t          [10, 74, 46],\n\t          [1, 75, 47]\n\t        ],\n\t        [\n\t          [9, 69, 43],\n\t          [4, 70, 44]\n\t        ],\n\t        [\n\t          [3, 70, 44],\n\t          [11, 71, 45]\n\t        ],\n\t        [\n\t          [3, 67, 41],\n\t          [13, 68, 42]\n\t        ],\n\t        [[17, 68, 42]],\n\t        [[17, 74, 46]],\n\t        [\n\t          [4, 75, 47],\n\t          [14, 76, 48]\n\t        ],\n\t        [\n\t          [6, 73, 45],\n\t          [14, 74, 46]\n\t        ],\n\t        [\n\t          [8, 75, 47],\n\t          [13, 76, 48]\n\t        ],\n\t        [\n\t          [19, 74, 46],\n\t          [4, 75, 47]\n\t        ],\n\t        [\n\t          [22, 73, 45],\n\t          [3, 74, 46]\n\t        ],\n\t        [\n\t          [3, 73, 45],\n\t          [23, 74, 46]\n\t        ],\n\t        [\n\t          [21, 73, 45],\n\t          [7, 74, 46]\n\t        ],\n\t        [\n\t          [19, 75, 47],\n\t          [10, 76, 48]\n\t        ],\n\t        [\n\t          [2, 74, 46],\n\t          [29, 75, 47]\n\t        ],\n\t        [\n\t          [10, 74, 46],\n\t          [23, 75, 47]\n\t        ],\n\t        [\n\t          [14, 74, 46],\n\t          [21, 75, 47]\n\t        ],\n\t        [\n\t          [14, 74, 46],\n\t          [23, 75, 47]\n\t        ],\n\t        [\n\t          [12, 75, 47],\n\t          [26, 76, 48]\n\t        ],\n\t        [\n\t          [6, 75, 47],\n\t          [34, 76, 48]\n\t        ],\n\t        [\n\t          [29, 74, 46],\n\t          [14, 75, 47]\n\t        ],\n\t        [\n\t          [13, 74, 46],\n\t          [32, 75, 47]\n\t        ],\n\t        [\n\t          [40, 75, 47],\n\t          [7, 76, 48]\n\t        ],\n\t        [\n\t          [18, 75, 47],\n\t          [31, 76, 48]\n\t        ]\n\t      ],\n\t      QUARTER: [\n\t        [[1, 26, 13]],\n\t        [[1, 44, 22]],\n\t        [[2, 35, 17]],\n\t        [[2, 50, 24]],\n\t        [\n\t          [2, 33, 15],\n\t          [2, 34, 16]\n\t        ],\n\t        [[4, 43, 19]],\n\t        [\n\t          [2, 32, 14],\n\t          [4, 33, 15]\n\t        ],\n\t        [\n\t          [4, 40, 18],\n\t          [2, 41, 19]\n\t        ],\n\t        [\n\t          [4, 36, 16],\n\t          [4, 37, 17]\n\t        ],\n\t        [\n\t          [6, 43, 19],\n\t          [2, 44, 20]\n\t        ],\n\t        [\n\t          [4, 50, 22],\n\t          [4, 51, 23]\n\t        ],\n\t        [\n\t          [4, 46, 20],\n\t          [6, 47, 21]\n\t        ],\n\t        [\n\t          [8, 44, 20],\n\t          [4, 45, 21]\n\t        ],\n\t        [\n\t          [11, 36, 16],\n\t          [5, 37, 17]\n\t        ],\n\t        [\n\t          [5, 54, 24],\n\t          [7, 55, 25]\n\t        ],\n\t        [\n\t          [15, 43, 19],\n\t          [2, 44, 20]\n\t        ],\n\t        [\n\t          [1, 50, 22],\n\t          [15, 51, 23]\n\t        ],\n\t        [\n\t          [17, 50, 22],\n\t          [1, 51, 23]\n\t        ],\n\t        [\n\t          [17, 47, 21],\n\t          [4, 48, 22]\n\t        ],\n\t        [\n\t          [15, 54, 24],\n\t          [5, 55, 25]\n\t        ],\n\t        [\n\t          [17, 50, 22],\n\t          [6, 51, 23]\n\t        ],\n\t        [\n\t          [7, 54, 24],\n\t          [16, 55, 25]\n\t        ],\n\t        [\n\t          [11, 54, 24],\n\t          [14, 55, 25]\n\t        ],\n\t        [\n\t          [11, 54, 24],\n\t          [16, 55, 25]\n\t        ],\n\t        [\n\t          [7, 54, 24],\n\t          [22, 55, 25]\n\t        ],\n\t        [\n\t          [28, 50, 22],\n\t          [6, 51, 23]\n\t        ],\n\t        [\n\t          [8, 53, 23],\n\t          [26, 54, 24]\n\t        ],\n\t        [\n\t          [4, 54, 24],\n\t          [31, 55, 25]\n\t        ],\n\t        [\n\t          [1, 53, 23],\n\t          [37, 54, 24]\n\t        ],\n\t        [\n\t          [15, 54, 24],\n\t          [25, 55, 25]\n\t        ],\n\t        [\n\t          [42, 54, 24],\n\t          [1, 55, 25]\n\t        ],\n\t        [\n\t          [10, 54, 24],\n\t          [35, 55, 25]\n\t        ],\n\t        [\n\t          [29, 54, 24],\n\t          [19, 55, 25]\n\t        ],\n\t        [\n\t          [44, 54, 24],\n\t          [7, 55, 25]\n\t        ],\n\t        [\n\t          [39, 54, 24],\n\t          [14, 55, 25]\n\t        ],\n\t        [\n\t          [46, 54, 24],\n\t          [10, 55, 25]\n\t        ],\n\t        [\n\t          [49, 54, 24],\n\t          [10, 55, 25]\n\t        ],\n\t        [\n\t          [48, 54, 24],\n\t          [14, 55, 25]\n\t        ],\n\t        [\n\t          [43, 54, 24],\n\t          [22, 55, 25]\n\t        ],\n\t        [\n\t          [34, 54, 24],\n\t          [34, 55, 25]\n\t        ]\n\t      ]\n\t    }[errorCorrection][version - 1];\n\t  }\n\t  // GALOIS FIELD POLYNOMIALS\n\t  static fromGF256Alpha(index2) {\n\t    return [\n\t      1,\n\t      2,\n\t      4,\n\t      8,\n\t      16,\n\t      32,\n\t      64,\n\t      128,\n\t      29,\n\t      58,\n\t      116,\n\t      232,\n\t      205,\n\t      135,\n\t      19,\n\t      38,\n\t      76,\n\t      152,\n\t      45,\n\t      90,\n\t      180,\n\t      117,\n\t      234,\n\t      201,\n\t      143,\n\t      3,\n\t      6,\n\t      12,\n\t      24,\n\t      48,\n\t      96,\n\t      192,\n\t      157,\n\t      39,\n\t      78,\n\t      156,\n\t      37,\n\t      74,\n\t      148,\n\t      53,\n\t      106,\n\t      212,\n\t      181,\n\t      119,\n\t      238,\n\t      193,\n\t      159,\n\t      35,\n\t      70,\n\t      140,\n\t      5,\n\t      10,\n\t      20,\n\t      40,\n\t      80,\n\t      160,\n\t      93,\n\t      186,\n\t      105,\n\t      210,\n\t      185,\n\t      111,\n\t      222,\n\t      161,\n\t      95,\n\t      190,\n\t      97,\n\t      194,\n\t      153,\n\t      47,\n\t      94,\n\t      188,\n\t      101,\n\t      202,\n\t      137,\n\t      15,\n\t      30,\n\t      60,\n\t      120,\n\t      240,\n\t      253,\n\t      231,\n\t      211,\n\t      187,\n\t      107,\n\t      214,\n\t      177,\n\t      127,\n\t      254,\n\t      225,\n\t      223,\n\t      163,\n\t      91,\n\t      182,\n\t      113,\n\t      226,\n\t      217,\n\t      175,\n\t      67,\n\t      134,\n\t      17,\n\t      34,\n\t      68,\n\t      136,\n\t      13,\n\t      26,\n\t      52,\n\t      104,\n\t      208,\n\t      189,\n\t      103,\n\t      206,\n\t      129,\n\t      31,\n\t      62,\n\t      124,\n\t      248,\n\t      237,\n\t      199,\n\t      147,\n\t      59,\n\t      118,\n\t      236,\n\t      197,\n\t      151,\n\t      51,\n\t      102,\n\t      204,\n\t      133,\n\t      23,\n\t      46,\n\t      92,\n\t      184,\n\t      109,\n\t      218,\n\t      169,\n\t      79,\n\t      158,\n\t      33,\n\t      66,\n\t      132,\n\t      21,\n\t      42,\n\t      84,\n\t      168,\n\t      77,\n\t      154,\n\t      41,\n\t      82,\n\t      164,\n\t      85,\n\t      170,\n\t      73,\n\t      146,\n\t      57,\n\t      114,\n\t      228,\n\t      213,\n\t      183,\n\t      115,\n\t      230,\n\t      209,\n\t      191,\n\t      99,\n\t      198,\n\t      145,\n\t      63,\n\t      126,\n\t      252,\n\t      229,\n\t      215,\n\t      179,\n\t      123,\n\t      246,\n\t      241,\n\t      255,\n\t      227,\n\t      219,\n\t      171,\n\t      75,\n\t      150,\n\t      49,\n\t      98,\n\t      196,\n\t      149,\n\t      55,\n\t      110,\n\t      220,\n\t      165,\n\t      87,\n\t      174,\n\t      65,\n\t      130,\n\t      25,\n\t      50,\n\t      100,\n\t      200,\n\t      141,\n\t      7,\n\t      14,\n\t      28,\n\t      56,\n\t      112,\n\t      224,\n\t      221,\n\t      167,\n\t      83,\n\t      166,\n\t      81,\n\t      162,\n\t      89,\n\t      178,\n\t      121,\n\t      242,\n\t      249,\n\t      239,\n\t      195,\n\t      155,\n\t      43,\n\t      86,\n\t      172,\n\t      69,\n\t      138,\n\t      9,\n\t      18,\n\t      36,\n\t      72,\n\t      144,\n\t      61,\n\t      122,\n\t      244,\n\t      245,\n\t      247,\n\t      243,\n\t      251,\n\t      235,\n\t      203,\n\t      139,\n\t      11,\n\t      22,\n\t      44,\n\t      88,\n\t      176,\n\t      125,\n\t      250,\n\t      233,\n\t      207,\n\t      131,\n\t      27,\n\t      54,\n\t      108,\n\t      216,\n\t      173,\n\t      71,\n\t      142\n\t    ][index2];\n\t  }\n\t  static polynomial(size) {\n\t    if (this.polynomials.length >= size) {\n\t      return this.polynomials[size - 1];\n\t    }\n\t    let polynomial = this.polynomials[this.polynomials.length - 1];\n\t    for (let multiplier = this.polynomials.length; multiplier < size; multiplier++) {\n\t      let factor = new Uint8Array(2);\n\t      factor[1] = multiplier;\n\t      polynomial = this.product(polynomial, factor);\n\t      this.polynomials.push(polynomial);\n\t    }\n\t    return polynomial;\n\t  }\n\t  static product(first, second) {\n\t    let product = new Uint8Array(first.length + second.length - 1);\n\t    first.forEach((firstValue, firstIndex) => {\n\t      second.forEach((secondValue, secondIndex) => {\n\t        let productIndex = firstIndex + secondIndex;\n\t        product[productIndex] = this.fromGF256Alpha((firstValue + secondValue) % 255) ^ product[productIndex];\n\t      });\n\t    });\n\t    return product.map((entry) => this.toGF256Alpha(entry));\n\t  }\n\t  static quotient(dividend, divisor) {\n\t    let quotient = new Uint8Array(dividend.length + divisor.length - 1);\n\t    for (let index2 = 0; index2 < dividend.length; index2++) quotient[index2] = dividend[index2];\n\t    for (let dividendIndex = 0; dividendIndex < dividend.length; dividendIndex++) {\n\t      let startEntry = quotient[dividendIndex];\n\t      if (startEntry !== 0) {\n\t        startEntry = this.toGF256Alpha(startEntry);\n\t        divisor.forEach((alpha, divisorIndex) => {\n\t          let quotientIndex = dividendIndex + divisorIndex;\n\t          quotient[quotientIndex] = this.fromGF256Alpha((startEntry + alpha) % 255) ^ quotient[quotientIndex];\n\t        });\n\t      }\n\t    }\n\t    return quotient.slice(quotient.length - divisor.length + 1);\n\t  }\n\t  static toGF256Alpha(index2) {\n\t    return [\n\t      0,\n\t      0,\n\t      1,\n\t      25,\n\t      2,\n\t      50,\n\t      26,\n\t      198,\n\t      3,\n\t      223,\n\t      51,\n\t      238,\n\t      27,\n\t      104,\n\t      199,\n\t      75,\n\t      4,\n\t      100,\n\t      224,\n\t      14,\n\t      52,\n\t      141,\n\t      239,\n\t      129,\n\t      28,\n\t      193,\n\t      105,\n\t      248,\n\t      200,\n\t      8,\n\t      76,\n\t      113,\n\t      5,\n\t      138,\n\t      101,\n\t      47,\n\t      225,\n\t      36,\n\t      15,\n\t      33,\n\t      53,\n\t      147,\n\t      142,\n\t      218,\n\t      240,\n\t      18,\n\t      130,\n\t      69,\n\t      29,\n\t      181,\n\t      194,\n\t      125,\n\t      106,\n\t      39,\n\t      249,\n\t      185,\n\t      201,\n\t      154,\n\t      9,\n\t      120,\n\t      77,\n\t      228,\n\t      114,\n\t      166,\n\t      6,\n\t      191,\n\t      139,\n\t      98,\n\t      102,\n\t      221,\n\t      48,\n\t      253,\n\t      226,\n\t      152,\n\t      37,\n\t      179,\n\t      16,\n\t      145,\n\t      34,\n\t      136,\n\t      54,\n\t      208,\n\t      148,\n\t      206,\n\t      143,\n\t      150,\n\t      219,\n\t      189,\n\t      241,\n\t      210,\n\t      19,\n\t      92,\n\t      131,\n\t      56,\n\t      70,\n\t      64,\n\t      30,\n\t      66,\n\t      182,\n\t      163,\n\t      195,\n\t      72,\n\t      126,\n\t      110,\n\t      107,\n\t      58,\n\t      40,\n\t      84,\n\t      250,\n\t      133,\n\t      186,\n\t      61,\n\t      202,\n\t      94,\n\t      155,\n\t      159,\n\t      10,\n\t      21,\n\t      121,\n\t      43,\n\t      78,\n\t      212,\n\t      229,\n\t      172,\n\t      115,\n\t      243,\n\t      167,\n\t      87,\n\t      7,\n\t      112,\n\t      192,\n\t      247,\n\t      140,\n\t      128,\n\t      99,\n\t      13,\n\t      103,\n\t      74,\n\t      222,\n\t      237,\n\t      49,\n\t      197,\n\t      254,\n\t      24,\n\t      227,\n\t      165,\n\t      153,\n\t      119,\n\t      38,\n\t      184,\n\t      180,\n\t      124,\n\t      17,\n\t      68,\n\t      146,\n\t      217,\n\t      35,\n\t      32,\n\t      137,\n\t      46,\n\t      55,\n\t      63,\n\t      209,\n\t      91,\n\t      149,\n\t      188,\n\t      207,\n\t      205,\n\t      144,\n\t      135,\n\t      151,\n\t      178,\n\t      220,\n\t      252,\n\t      190,\n\t      97,\n\t      242,\n\t      86,\n\t      211,\n\t      171,\n\t      20,\n\t      42,\n\t      93,\n\t      158,\n\t      132,\n\t      60,\n\t      57,\n\t      83,\n\t      71,\n\t      109,\n\t      65,\n\t      162,\n\t      31,\n\t      45,\n\t      67,\n\t      216,\n\t      183,\n\t      123,\n\t      164,\n\t      118,\n\t      196,\n\t      23,\n\t      73,\n\t      236,\n\t      127,\n\t      12,\n\t      111,\n\t      246,\n\t      108,\n\t      161,\n\t      59,\n\t      82,\n\t      41,\n\t      157,\n\t      85,\n\t      170,\n\t      251,\n\t      96,\n\t      134,\n\t      177,\n\t      187,\n\t      204,\n\t      62,\n\t      90,\n\t      203,\n\t      89,\n\t      95,\n\t      176,\n\t      156,\n\t      169,\n\t      160,\n\t      81,\n\t      11,\n\t      245,\n\t      22,\n\t      235,\n\t      122,\n\t      117,\n\t      44,\n\t      215,\n\t      79,\n\t      174,\n\t      213,\n\t      233,\n\t      230,\n\t      231,\n\t      173,\n\t      232,\n\t      116,\n\t      214,\n\t      244,\n\t      234,\n\t      168,\n\t      80,\n\t      88,\n\t      175\n\t    ][index2];\n\t  }\n\t  // MASKS\n\t  static get masks() {\n\t    if (this.maskArray.length === 0) {\n\t      [\n\t        (x, y) => (x + y) % 2 === 0,\n\t        (x, y) => y % 2 === 0,\n\t        (x) => x % 3 === 0,\n\t        (x, y) => (x + y) % 3 === 0,\n\t        (x, y) => ((y - y % 2) / 2 + (x - x % 3) / 3) % 2 === 0,\n\t        (x, y) => x * y % 2 + x * y % 3 === 0,\n\t        (x, y) => (x * y + x * y % 3) % 2 === 0,\n\t        (x, y) => (x * y % 3 + x + y) % 2 === 0\n\t      ].forEach((generator) => {\n\t        const content = [];\n\t        for (let y = 0; y < 12; y++) {\n\t          const row = [];\n\t          for (let x = 0; x < 12; x++) {\n\t            row.push(generator(x, y));\n\t          }\n\t          content.push(row);\n\t        }\n\t        this.maskArray.push(new BooleanMatrix(content));\n\t      });\n\t    }\n\t    return this.maskArray;\n\t  }\n\t  // INSTANCE CREATION\n\t  static for(errorCorrection, version) {\n\t    let instance = this.instances[errorCorrection + version];\n\t    if (instance === void 0) {\n\t      const dimension = version * 4 + 17;\n\t      const content = [];\n\t      for (let row = 0; row < dimension; row++) {\n\t        content.push(new Array(dimension).fill(this.AVAILABLE));\n\t      }\n\t      instance = new this(content, errorCorrection, version);\n\t      this.instances[errorCorrection + version] = instance;\n\t    }\n\t    return instance;\n\t  }\n\t  // INSTANCE\n\t  // chunking\n\t  // chunkingOffsets          where each chunk can be found in the data\n\t  // errorCorrection\n\t  // errorCorrectionCapacity  the number of codewords that can be messed up\n\t  //                          (1x for erasure, 2x for miscoding) per chunk\n\t  // version\n\t  constructor(content, errorCorrection, version) {\n\t    super(content);\n\t    this.errorCorrection = errorCorrection;\n\t    this.version = version;\n\t    this.initialize();\n\t  }\n\t  initialize() {\n\t    let misdecodeProtectionCodewords = 0;\n\t    if (this.errorCorrection === ERROR_CORRECTION.LOW) {\n\t      if (this.version === 1) {\n\t        misdecodeProtectionCodewords = 3;\n\t      } else if (this.version === 2) {\n\t        misdecodeProtectionCodewords = 2;\n\t      } else if (this.version === 3) {\n\t        misdecodeProtectionCodewords = 1;\n\t      }\n\t    } else if (this.version === 1) {\n\t      if (this.errorCorrection === ERROR_CORRECTION.MEDIUM) {\n\t        misdecodeProtectionCodewords = 2;\n\t      } else {\n\t        misdecodeProtectionCodewords = 1;\n\t      }\n\t    }\n\t    this.chunking = this.constructor.chunkingAt(this.errorCorrection, this.version);\n\t    const data = [];\n\t    const errorCorrection = [];\n\t    let dataWidth = 0;\n\t    let errorCorrectionWidth = 0;\n\t    const errorCorrectionCapacity = [];\n\t    const chunkingOffsets = [];\n\t    let chunkingOffset = 0;\n\t    let chunk = 0;\n\t    this.chunking.forEach((arr) => {\n\t      for (let i = 0; i < arr[0]; i++) {\n\t        let byte = 0;\n\t        chunkingOffsets.push(chunkingOffset * 8);\n\t        chunkingOffset += arr[1];\n\t        const dataI = [];\n\t        const numberOfDataCodewords = arr[2];\n\t        for (let j = 0; j < numberOfDataCodewords; j++) {\n\t          dataI.push({ chunk, byte });\n\t          byte++;\n\t        }\n\t        data.push(dataI);\n\t        dataWidth = Math.max(dataWidth, dataI.length);\n\t        const errorCorrectionI = [];\n\t        const numberOfErrorCorrectionCodewords = arr[1] - numberOfDataCodewords;\n\t        for (let j = 0; j < numberOfErrorCorrectionCodewords; j++) {\n\t          errorCorrectionI.push({ chunk, byte });\n\t          byte++;\n\t        }\n\t        errorCorrection.push(errorCorrectionI);\n\t        errorCorrectionWidth = Math.max(errorCorrectionWidth, errorCorrectionI.length);\n\t        errorCorrectionCapacity.push(numberOfErrorCorrectionCodewords - misdecodeProtectionCodewords);\n\t        chunk++;\n\t      }\n\t    });\n\t    this.chunkingOffsets = chunkingOffsets;\n\t    this.errorCorrectionCapacity = errorCorrectionCapacity;\n\t    const combined = [];\n\t    for (let column = 0; column < dataWidth; column++) {\n\t      data.forEach((row) => {\n\t        if (row.length > column) combined.push(row[column]);\n\t      });\n\t    }\n\t    for (let column = 0; column < errorCorrectionWidth; column++) {\n\t      errorCorrection.forEach((row) => {\n\t        if (row.length > column) combined.push(row[column]);\n\t      });\n\t    }\n\t    const pixels = [];\n\t    combined.forEach((byteAndChunk) => {\n\t      const byte = byteAndChunk.byte;\n\t      const chunk2 = byteAndChunk.chunk;\n\t      for (let bit = 0; bit < 8; bit++) {\n\t        pixels.push({ chunk: chunk2, byte, bit });\n\t      }\n\t    });\n\t    const dimension = this.width;\n\t    this.fill(0, 0, 9, 9, this.constructor.AVOID);\n\t    this.fill(dimension - 8, 0, 8, 9, this.constructor.AVOID);\n\t    this.fill(0, dimension - 8, 9, 8, this.constructor.AVOID);\n\t    if (this.version > 6) {\n\t      this.fill(dimension - 11, 0, 3, 6, this.constructor.AVOID);\n\t      this.fill(0, dimension - 11, 6, 3, this.constructor.AVOID);\n\t    }\n\t    this.fill(9, 6, dimension - 17, 1, this.constructor.AVOID);\n\t    this.fill(6, 9, 1, dimension - 17, this.constructor.AVOID);\n\t    for (const position of QRCode$1.alignmentPatternPositions(this.version)) {\n\t      this.fill(position.x, position.y, 5, 5, this.constructor.AVOID);\n\t    }\n\t    let x = dimension - 2;\n\t    let y = dimension;\n\t    pixels.forEach((pixel) => {\n\t      do {\n\t        let shift;\n\t        let halfOdd = (x - x % 2) / 2 % 2 === 1;\n\t        if (x === 6) {\n\t          shift = false;\n\t          x = 5;\n\t        } else if (x < 6) {\n\t          shift = x % 2 === 1;\n\t        } else {\n\t          shift = x % 2 === 0;\n\t        }\n\t        if (shift) {\n\t          x--;\n\t        } else if (halfOdd) {\n\t          if (y === 0) {\n\t            x--;\n\t          } else {\n\t            x++;\n\t            y--;\n\t          }\n\t        } else {\n\t          if (y + 1 === dimension) {\n\t            x--;\n\t          } else {\n\t            x++;\n\t            y++;\n\t          }\n\t        }\n\t      } while (this.at(x, y) === this.constructor.AVOID && x > -1);\n\t      this.put(x, y, pixel);\n\t    });\n\t  }\n\t  codewordsFor(codewords) {\n\t    let bytePosition = 0;\n\t    const withErrorCorrection = [];\n\t    this.chunking.forEach((arr) => {\n\t      for (let i = 0; i < arr[0]; i++) {\n\t        const data = codewords.slice(bytePosition, bytePosition + arr[2]);\n\t        bytePosition += arr[2];\n\t        const errorCorrection = this.constructor.quotient(data, this.constructor.polynomial(arr[1] - arr[2]));\n\t        withErrorCorrection.push(...data);\n\t        withErrorCorrection.push(...errorCorrection);\n\t      }\n\t    });\n\t    return withErrorCorrection;\n\t  }\n\t  dataFor(codewords) {\n\t    const bits = [];\n\t    codewords.forEach((byte) => {\n\t      let remainder = byte;\n\t      [128, 64, 32, 16, 8, 4, 2, 1].forEach((subtract) => {\n\t        if (remainder >= subtract) {\n\t          bits.push(true);\n\t          remainder -= subtract;\n\t        } else {\n\t          bits.push(false);\n\t        }\n\t      });\n\t    });\n\t    this.bits = bits;\n\t    const dimension = this.content.length;\n\t    const encodedData = BooleanMatrix.withAll(dimension, dimension, false);\n\t    for (let y = 0; y < dimension; y++) {\n\t      for (let x = 0; x < dimension; x++) {\n\t        const pixel = this.at(x, y);\n\t        if (this.isDataPixel(pixel)) {\n\t          encodedData.put(x, y, bits[this.chunkingOffsets[pixel.chunk] + pixel.byte * 8 + pixel.bit]);\n\t        }\n\t      }\n\t    }\n\t    return encodedData;\n\t  }\n\t  isDataPixel(pixel) {\n\t    return pixel !== this.constructor.AVOID && pixel !== this.constructor.AVAILABLE;\n\t  }\n\t  maskedDataFor(data) {\n\t    const dimension = data.height;\n\t    return this.constructor.masks.map((mask) => {\n\t      const masked = BooleanMatrix.withAll(dimension, dimension);\n\t      for (let x = 0; x < dimension; x++) {\n\t        for (let y = 0; y < dimension; y++) {\n\t          let value = data.at(x, y);\n\t          if (this.at(x, y) !== QRCodeMap.AVOID) {\n\t            if (mask.at(x % 12, y % 12)) value = !value;\n\t          }\n\t          masked.put(x, y, value);\n\t        }\n\t      }\n\t      return masked;\n\t    });\n\t  }\n\t  // TESTING\n\t  asIntegerArray() {\n\t    return this.content.map((row) => {\n\t      let integer = 0;\n\t      row.forEach((pixel) => {\n\t        integer *= 2;\n\t        if (this.isDataPixel(pixel)) integer++;\n\t      });\n\t      return integer;\n\t    });\n\t  }\n\t}\n\tQRCodeMap.AVAILABLE = \"available\";\n\tQRCodeMap.AVOID = \"avoid\";\n\tQRCodeMap.GENERATOR_FUNCTIONS = [\n\t  (x, y) => (x + y) % 2 === 0,\n\t  (x, y) => y % 2 === 0,\n\t  (x) => x % 3 === 0,\n\t  (x, y) => (x + y) % 3 === 0,\n\t  (x, y) => ((y - y % 2) / 2 + (x - x % 3) / 3) % 2 === 0,\n\t  (x, y) => x * y % 2 + x * y % 3 === 0,\n\t  (x, y) => (x * y + x * y % 3) % 2 === 0,\n\t  (x, y) => (x * y % 3 + x + y) % 2 === 0\n\t];\n\tQRCodeMap.instances = {};\n\tQRCodeMap.maskArray = [];\n\tQRCodeMap.polynomials = [new Uint8Array(2)];\n\tclass QRCode$1 {\n\t  static alignmentPatternPositions(version) {\n\t    let locations = ALIGNMENT_PATTERN_LOCATIONS[version - 1];\n\t    if (locations.length === 0) return [];\n\t    const positions = [];\n\t    const first = locations[0];\n\t    locations.slice(1, locations.length - 1).forEach((location) => {\n\t      positions.push({\n\t        x: first,\n\t        y: location\n\t      });\n\t      positions.push({\n\t        x: location,\n\t        y: first\n\t      });\n\t    });\n\t    locations = locations.slice(1);\n\t    locations.forEach((y) => {\n\t      locations.forEach((x) => {\n\t        positions.push({ x, y });\n\t      });\n\t    });\n\t    return positions;\n\t  }\n\t  static finderPatternPositions(version) {\n\t    const far = 4 * version + 10;\n\t    return [\n\t      { x: 0, y: 0 },\n\t      { x: 0, y: far },\n\t      { x: far, y: 0 }\n\t    ];\n\t  }\n\t  static timingPatternPositions(version) {\n\t    const positions = [];\n\t    const far = 4 * version + 9;\n\t    for (let position = 8; position < far; position += 2) {\n\t      positions.push({ x: position, y: 6 });\n\t      positions.push({ x: 6, y: position });\n\t    }\n\t    return positions;\n\t  }\n\t  constructor(content, options) {\n\t    if (content === void 0 || content.length === 0) throw \"no content to encode\";\n\t    this.content = content;\n\t    this.options = options || {};\n\t    if (\"eci\" in this.options) this.eci = this.options.eci;\n\t    if (\"errorCorrection\" in this.options) this.errorCorrection = this.options.errorCorrection;\n\t  }\n\t  get alignmentPatternPositions() {\n\t    return this.constructor.alignmentPatternPositions(this.version);\n\t  }\n\t  get dimension() {\n\t    return this.version * 4 + 17;\n\t  }\n\t  get encoding() {\n\t    return this._encoding;\n\t  }\n\t  set encoding(string) {\n\t    this._encoding = string;\n\t  }\n\t  get finderPatternPositions() {\n\t    return this.constructor.finderPatternPositions(this.version);\n\t  }\n\t  get hasEci() {\n\t    return this.eci !== void 0 && this.eci !== 3;\n\t  }\n\t  get hasAlignmentPattern() {\n\t    return this.version > 1;\n\t  }\n\t  get timingPatternPositions() {\n\t    return this.constructor.timingPatternPositions(this.version);\n\t  }\n\t}\n\tQRCode$1.MAX_VERSION = 40;\n\tclass QRCodeEncoder$1 {\n\t  constructor(contents, options) {\n\t    this.code = new QRCode$1(contents, options);\n\t    this.encode();\n\t  }\n\t  encode() {\n\t    this.initializeEncoding();\n\t    this.initializeVersion();\n\t    this.initializeCodewords();\n\t    this.initializeMapping();\n\t    this.initializeMasking();\n\t  }\n\t  initializeCodewords() {\n\t    const writer = new BitWriter(DATA_CAPACITY[this.code.errorCorrection][this.code.version - 1]);\n\t    switch (this.code.encoding) {\n\t      case ENCODING.NUMERIC:\n\t        writer.nextPutBits(1, 4);\n\t        if (this.code.version < 10) {\n\t          writer.nextPutBits(this.length, 10);\n\t        } else if (this.code.version < 27) {\n\t          writer.nextPutBits(this.length, 12);\n\t        } else {\n\t          writer.nextPutBits(this.length, 14);\n\t        }\n\t        writer.nextPutNumeric(this.code.content);\n\t        break;\n\t      case ENCODING.ALPHANUMERIC:\n\t        writer.nextPutBits(2, 4);\n\t        if (this.code.version < 10) {\n\t          writer.nextPutBits(this.length, 9);\n\t        } else if (this.code.version < 27) {\n\t          writer.nextPutBits(this.length, 11);\n\t        } else {\n\t          writer.nextPutBits(this.length, 13);\n\t        }\n\t        writer.nextPutAlphaNUMERIC(this.code.content);\n\t        break;\n\t      case ENCODING.KANJI:\n\t        writer.nextPutBits(8, 8);\n\t        if (this.code.version < 10) {\n\t          writer.nextPutBits(this.length, 8);\n\t        } else if (this.code.version < 27) {\n\t          writer.nextPutBits(this.length, 10);\n\t        } else {\n\t          writer.nextPutBits(this.length, 12);\n\t        }\n\t        writer.nextPutKanji(this.code.content);\n\t        break;\n\t      case ENCODING.BYTE:\n\t        if (this.code.hasEci) {\n\t          writer.nextPutBits(7, 4);\n\t          if (this.code.eci < 128) {\n\t            writer.nextPutBits(0, 1);\n\t            writer.nextPutBits(this.code.eci, 7);\n\t          } else if (this.code.eci < 16384) {\n\t            writer.nextPutBits(2, 2);\n\t            writer.nextPutBits(this.code.eci, 14);\n\t          } else {\n\t            writer.nextPutBits(6, 3);\n\t            writer.nextPutBits(this.code.eci, 21);\n\t          }\n\t        }\n\t        writer.nextPutBits(4, 4);\n\t        if (this.code.version < 10) {\n\t          writer.nextPutBits(this.length, 8);\n\t        } else {\n\t          writer.nextPutBits(this.length, 16);\n\t        }\n\t        writer.nextPutByte(this.bytes);\n\t        break;\n\t    }\n\t    if (writer.bitsLeft > 3) writer.nextPutBits(0, 4);\n\t    const bytesLeft = writer.bytesLeft;\n\t    for (let index2 = 0; index2 < bytesLeft; index2++) {\n\t      writer.nextPutCompleteByte(index2 % 2 === 0 ? 236 : 17);\n\t    }\n\t    this.codewords = writer.content;\n\t  }\n\t  initializeEncoding() {\n\t    if (this.code.hasEci) {\n\t      this.code.encoding = ENCODING.BYTE;\n\t      if (this.code.eci === 3) {\n\t        this.length = this.code.content.length;\n\t        this.bytes = [];\n\t        for (let i = 0; i < length; i++) {\n\t          this.bytes.push(this.code.content.charCodeAt(i) % 128);\n\t        }\n\t      } else if (this.code.eci === 25) {\n\t        this.bytes = this.toUtf16Bytes(this.code.content);\n\t        this.length = this.bytes.length;\n\t      } else if (this.code.eci === 26) {\n\t        this.bytes = this.toUtf8Bytes(this.code.content);\n\t        this.length = this.bytes.length;\n\t      } else {\n\t        this.length = this.code.content.length;\n\t        this.bytes = [];\n\t        for (let i = 0; i < length; i++) {\n\t          this.bytes.push(this.code.content.charCodeAt(i) % 256);\n\t        }\n\t      }\n\t    } else if (/^\\d*$/.test(this.code.content)) {\n\t      this.code.encoding = ENCODING.NUMERIC;\n\t      this.length = this.code.content.length;\n\t    } else if (/^[A-Z\\d\\dA-Z $%*+-./:]+$/.test(this.code.content)) {\n\t      this.code.encoding = ENCODING.ALPHANUMERIC;\n\t      this.length = this.code.content.length;\n\t    } else if (/^[\\u8140-\\u9ffc\\ue040-\\uebbf]+$/.test(this.code.content)) {\n\t      this.code.encoding = ENCODING.KANJI;\n\t      this.length = this.code.content.length;\n\t    } else {\n\t      this.code.encoding = ENCODING.BYTE;\n\t      this.bytes = this.toUtf8Bytes(this.code.content);\n\t      this.length = this.bytes.length;\n\t      this.code.eci = this.length === this.code.content.length ? 3 : 26;\n\t    }\n\t  }\n\t  initializeMapping() {\n\t    this.map = QRCodeMap.for(this.code.errorCorrection, this.code.version);\n\t    this.mapCodewords = this.map.codewordsFor(this.codewords);\n\t    this.mapData = this.map.dataFor(this.mapCodewords);\n\t  }\n\t  initializeMasking() {\n\t    const choices = this.map.maskedDataFor(this.mapData);\n\t    let data;\n\t    let dataIndex;\n\t    let lowestPenalty = 1e6;\n\t    choices.forEach((matrix, index2) => {\n\t      const penalty = this.penaltyForMatrix(matrix);\n\t      if (penalty < lowestPenalty) {\n\t        lowestPenalty = penalty;\n\t        data = matrix;\n\t        dataIndex = index2;\n\t      }\n\t    });\n\t    this.lowestPenalty = lowestPenalty;\n\t    let format = [1, 0, 3, 2][this.errorCorrections.indexOf(this.code.errorCorrection)];\n\t    format = (8 * format + dataIndex) * 1024;\n\t    let errorCorrection = format;\n\t    for (let i = 14; i >= 10; i--) {\n\t      if (errorCorrection >= Math.pow(2, i)) {\n\t        errorCorrection = Math.pow(2, i - 10) * 1335 ^ errorCorrection;\n\t      }\n\t    }\n\t    format = format + errorCorrection ^ 21522;\n\t    const dimension = this.code.dimension;\n\t    [\n\t      [8, 0, dimension - 1, 8],\n\t      [8, 1, dimension - 2, 8],\n\t      [8, 2, dimension - 3, 8],\n\t      [8, 3, dimension - 4, 8],\n\t      [8, 4, dimension - 5, 8],\n\t      [8, 5, dimension - 6, 8],\n\t      [8, 7, dimension - 7, 8],\n\t      [8, 8, dimension - 8, 8],\n\t      [7, 8, 8, dimension - 7],\n\t      [5, 8, 8, dimension - 6],\n\t      [4, 8, 8, dimension - 5],\n\t      [3, 8, 8, dimension - 4],\n\t      [2, 8, 8, dimension - 3],\n\t      [1, 8, 8, dimension - 2],\n\t      [0, 8, 8, dimension - 1]\n\t    ].forEach((arr, index2) => {\n\t      if ((Math.pow(2, index2) & format) > 0) {\n\t        data.put(arr[0], arr[1], true);\n\t        data.put(arr[2], arr[3], true);\n\t      }\n\t    });\n\t    data.put(8, dimension - 8, true);\n\t    if (this.code.version > 6) {\n\t      let bitVersion = this.code.version * 4096;\n\t      errorCorrection = bitVersion;\n\t      for (let i = 17; i >= 12; i--) {\n\t        if (errorCorrection >= Math.pow(2, i)) {\n\t          errorCorrection = Math.pow(2, i - 12) * 7973 ^ errorCorrection;\n\t        }\n\t      }\n\t      bitVersion += errorCorrection;\n\t      let count = 0;\n\t      for (let x = 0; x < 6; x++) {\n\t        for (let y = dimension - 11; y <= dimension - 9; y++) {\n\t          if ((Math.pow(2, count) & bitVersion) > 0) {\n\t            data.put(x, y, true);\n\t            data.put(y, x, true);\n\t          }\n\t          count++;\n\t        }\n\t      }\n\t    }\n\t    this.code.data = data;\n\t  }\n\t  initializeVersion() {\n\t    if (this.errorCorrections.includes(this.code.errorCorrection)) {\n\t      let version = this.versionForLength(this.length, this.code.errorCorrection);\n\t      if (version > QRCode$1.MAX_VERSION)\n\t        throw \"This content is too long to be encoded for the specified error correction.\";\n\t      this.code.version = version;\n\t    } else {\n\t      let versions = this.errorCorrections.map(\n\t        (errorCorrection) => this.versionForLength(this.length, errorCorrection)\n\t      );\n\t      let version = versions[0];\n\t      if (version > QRCode$1.MAX_VERSION) throw \"This string is too long to be encoded.\";\n\t      this.code.version = version;\n\t      for (let index2 = 3; index2 >= 0; index2--) {\n\t        if (versions[index2] === version) {\n\t          this.code.errorCorrection = this.errorCorrections[index2];\n\t          return;\n\t        }\n\t      }\n\t    }\n\t  }\n\t  capacity(encoding, errorCorrection) {\n\t    return {\n\t      NUMERIC: {\n\t        LOW: [\n\t          41,\n\t          77,\n\t          127,\n\t          187,\n\t          255,\n\t          322,\n\t          370,\n\t          461,\n\t          552,\n\t          652,\n\t          772,\n\t          883,\n\t          1022,\n\t          1101,\n\t          1250,\n\t          1408,\n\t          1548,\n\t          1725,\n\t          1903,\n\t          2061,\n\t          2232,\n\t          2409,\n\t          2620,\n\t          2812,\n\t          3057,\n\t          3283,\n\t          3517,\n\t          3669,\n\t          3909,\n\t          4158,\n\t          4417,\n\t          4686,\n\t          4965,\n\t          5253,\n\t          5529,\n\t          5836,\n\t          6153,\n\t          6479,\n\t          6743,\n\t          7089\n\t        ],\n\t        MEDIUM: [\n\t          34,\n\t          63,\n\t          101,\n\t          149,\n\t          202,\n\t          255,\n\t          293,\n\t          365,\n\t          432,\n\t          513,\n\t          604,\n\t          691,\n\t          796,\n\t          871,\n\t          991,\n\t          1082,\n\t          1212,\n\t          1346,\n\t          1500,\n\t          1600,\n\t          1708,\n\t          1872,\n\t          2059,\n\t          2188,\n\t          2395,\n\t          2544,\n\t          2701,\n\t          2857,\n\t          3035,\n\t          3289,\n\t          3486,\n\t          3693,\n\t          3909,\n\t          4134,\n\t          4343,\n\t          4588,\n\t          4775,\n\t          5039,\n\t          5313,\n\t          5596\n\t        ],\n\t        QUARTER: [\n\t          27,\n\t          48,\n\t          77,\n\t          111,\n\t          144,\n\t          178,\n\t          207,\n\t          259,\n\t          312,\n\t          364,\n\t          427,\n\t          489,\n\t          580,\n\t          621,\n\t          703,\n\t          775,\n\t          876,\n\t          948,\n\t          1063,\n\t          1159,\n\t          1224,\n\t          1358,\n\t          1468,\n\t          1588,\n\t          1718,\n\t          1804,\n\t          1933,\n\t          2085,\n\t          2181,\n\t          2358,\n\t          2473,\n\t          2670,\n\t          2805,\n\t          2949,\n\t          3081,\n\t          3244,\n\t          3417,\n\t          3599,\n\t          3791,\n\t          3993\n\t        ],\n\t        HIGH: [\n\t          17,\n\t          34,\n\t          58,\n\t          82,\n\t          106,\n\t          139,\n\t          154,\n\t          202,\n\t          235,\n\t          288,\n\t          331,\n\t          374,\n\t          427,\n\t          468,\n\t          530,\n\t          602,\n\t          674,\n\t          746,\n\t          813,\n\t          919,\n\t          969,\n\t          1056,\n\t          1108,\n\t          1228,\n\t          1286,\n\t          1425,\n\t          1501,\n\t          1581,\n\t          1677,\n\t          1782,\n\t          1897,\n\t          2022,\n\t          2157,\n\t          2301,\n\t          2361,\n\t          2524,\n\t          2625,\n\t          2735,\n\t          2927,\n\t          3057\n\t        ]\n\t      },\n\t      ALPHANUMERIC: {\n\t        LOW: [\n\t          25,\n\t          47,\n\t          77,\n\t          114,\n\t          154,\n\t          195,\n\t          224,\n\t          279,\n\t          335,\n\t          395,\n\t          468,\n\t          535,\n\t          619,\n\t          667,\n\t          758,\n\t          854,\n\t          938,\n\t          1046,\n\t          1153,\n\t          1249,\n\t          1352,\n\t          1460,\n\t          1588,\n\t          1704,\n\t          1853,\n\t          1990,\n\t          2132,\n\t          2223,\n\t          2369,\n\t          2520,\n\t          2677,\n\t          2840,\n\t          3009,\n\t          3183,\n\t          3351,\n\t          3537,\n\t          3729,\n\t          3927,\n\t          4087,\n\t          4296\n\t        ],\n\t        MEDIUM: [\n\t          20,\n\t          38,\n\t          61,\n\t          90,\n\t          122,\n\t          154,\n\t          178,\n\t          221,\n\t          262,\n\t          311,\n\t          366,\n\t          419,\n\t          483,\n\t          528,\n\t          600,\n\t          656,\n\t          734,\n\t          816,\n\t          909,\n\t          970,\n\t          1035,\n\t          1134,\n\t          1248,\n\t          1326,\n\t          1451,\n\t          1542,\n\t          1637,\n\t          1732,\n\t          1839,\n\t          1994,\n\t          2113,\n\t          2238,\n\t          2369,\n\t          2506,\n\t          2632,\n\t          2780,\n\t          2894,\n\t          3054,\n\t          3220,\n\t          3391\n\t        ],\n\t        QUARTER: [\n\t          16,\n\t          29,\n\t          47,\n\t          67,\n\t          87,\n\t          108,\n\t          125,\n\t          157,\n\t          189,\n\t          221,\n\t          259,\n\t          296,\n\t          352,\n\t          376,\n\t          426,\n\t          470,\n\t          531,\n\t          574,\n\t          644,\n\t          702,\n\t          742,\n\t          823,\n\t          890,\n\t          963,\n\t          1041,\n\t          1094,\n\t          1172,\n\t          1263,\n\t          1322,\n\t          1429,\n\t          1499,\n\t          1618,\n\t          1700,\n\t          1787,\n\t          1867,\n\t          1966,\n\t          2071,\n\t          2181,\n\t          2298,\n\t          2420\n\t        ],\n\t        HIGH: [\n\t          10,\n\t          20,\n\t          35,\n\t          50,\n\t          64,\n\t          84,\n\t          93,\n\t          122,\n\t          143,\n\t          174,\n\t          200,\n\t          227,\n\t          259,\n\t          283,\n\t          321,\n\t          365,\n\t          408,\n\t          452,\n\t          493,\n\t          557,\n\t          587,\n\t          640,\n\t          672,\n\t          744,\n\t          779,\n\t          864,\n\t          910,\n\t          958,\n\t          1016,\n\t          1080,\n\t          1150,\n\t          1226,\n\t          1307,\n\t          1394,\n\t          1431,\n\t          1530,\n\t          1591,\n\t          1658,\n\t          1774,\n\t          1852\n\t        ]\n\t      },\n\t      KANJI: {\n\t        LOW: [\n\t          10,\n\t          20,\n\t          32,\n\t          48,\n\t          65,\n\t          82,\n\t          95,\n\t          118,\n\t          141,\n\t          167,\n\t          198,\n\t          226,\n\t          262,\n\t          282,\n\t          320,\n\t          361,\n\t          397,\n\t          442,\n\t          488,\n\t          528,\n\t          572,\n\t          618,\n\t          672,\n\t          721,\n\t          784,\n\t          842,\n\t          902,\n\t          940,\n\t          1002,\n\t          1066,\n\t          1132,\n\t          1201,\n\t          1273,\n\t          1347,\n\t          1417,\n\t          1496,\n\t          1577,\n\t          1661,\n\t          1729,\n\t          1817\n\t        ],\n\t        MEDIUM: [\n\t          8,\n\t          16,\n\t          26,\n\t          38,\n\t          52,\n\t          65,\n\t          75,\n\t          93,\n\t          111,\n\t          131,\n\t          155,\n\t          177,\n\t          204,\n\t          223,\n\t          254,\n\t          277,\n\t          310,\n\t          345,\n\t          384,\n\t          410,\n\t          438,\n\t          480,\n\t          528,\n\t          561,\n\t          614,\n\t          652,\n\t          692,\n\t          732,\n\t          778,\n\t          843,\n\t          894,\n\t          947,\n\t          1002,\n\t          1060,\n\t          1113,\n\t          1176,\n\t          1224,\n\t          1292,\n\t          1362,\n\t          1435\n\t        ],\n\t        QUARTER: [\n\t          7,\n\t          12,\n\t          20,\n\t          28,\n\t          37,\n\t          45,\n\t          53,\n\t          66,\n\t          80,\n\t          93,\n\t          109,\n\t          125,\n\t          149,\n\t          159,\n\t          180,\n\t          198,\n\t          224,\n\t          243,\n\t          272,\n\t          297,\n\t          314,\n\t          348,\n\t          376,\n\t          407,\n\t          440,\n\t          462,\n\t          496,\n\t          534,\n\t          559,\n\t          604,\n\t          634,\n\t          684,\n\t          719,\n\t          756,\n\t          790,\n\t          832,\n\t          876,\n\t          923,\n\t          972,\n\t          1024\n\t        ],\n\t        HIGH: [\n\t          4,\n\t          8,\n\t          15,\n\t          21,\n\t          27,\n\t          36,\n\t          39,\n\t          52,\n\t          60,\n\t          74,\n\t          85,\n\t          96,\n\t          109,\n\t          120,\n\t          136,\n\t          154,\n\t          173,\n\t          191,\n\t          208,\n\t          235,\n\t          248,\n\t          270,\n\t          284,\n\t          315,\n\t          330,\n\t          365,\n\t          385,\n\t          405,\n\t          430,\n\t          457,\n\t          486,\n\t          518,\n\t          553,\n\t          590,\n\t          605,\n\t          647,\n\t          673,\n\t          701,\n\t          750,\n\t          784\n\t        ]\n\t      },\n\t      BYTE: {\n\t        LOW: [\n\t          17,\n\t          32,\n\t          53,\n\t          78,\n\t          106,\n\t          134,\n\t          154,\n\t          192,\n\t          230,\n\t          271,\n\t          321,\n\t          367,\n\t          425,\n\t          458,\n\t          520,\n\t          586,\n\t          644,\n\t          718,\n\t          792,\n\t          858,\n\t          929,\n\t          1003,\n\t          1091,\n\t          1171,\n\t          1273,\n\t          1367,\n\t          1465,\n\t          1528,\n\t          1628,\n\t          1732,\n\t          1840,\n\t          1952,\n\t          2068,\n\t          2188,\n\t          2303,\n\t          2431,\n\t          2563,\n\t          2699,\n\t          2809,\n\t          2953\n\t        ],\n\t        MEDIUM: [\n\t          14,\n\t          26,\n\t          42,\n\t          62,\n\t          84,\n\t          106,\n\t          122,\n\t          152,\n\t          180,\n\t          213,\n\t          251,\n\t          287,\n\t          331,\n\t          362,\n\t          412,\n\t          450,\n\t          504,\n\t          560,\n\t          624,\n\t          666,\n\t          711,\n\t          779,\n\t          857,\n\t          911,\n\t          997,\n\t          1059,\n\t          1125,\n\t          1190,\n\t          1264,\n\t          1370,\n\t          1452,\n\t          1538,\n\t          1628,\n\t          1722,\n\t          1809,\n\t          1911,\n\t          1989,\n\t          2099,\n\t          2213,\n\t          2331\n\t        ],\n\t        QUARTER: [\n\t          11,\n\t          20,\n\t          32,\n\t          46,\n\t          60,\n\t          74,\n\t          86,\n\t          108,\n\t          130,\n\t          151,\n\t          177,\n\t          203,\n\t          241,\n\t          258,\n\t          292,\n\t          322,\n\t          364,\n\t          394,\n\t          442,\n\t          482,\n\t          509,\n\t          565,\n\t          611,\n\t          661,\n\t          715,\n\t          751,\n\t          805,\n\t          868,\n\t          908,\n\t          982,\n\t          1030,\n\t          1112,\n\t          1168,\n\t          1228,\n\t          1283,\n\t          1351,\n\t          1423,\n\t          1499,\n\t          1579,\n\t          1663\n\t        ],\n\t        HIGH: [\n\t          7,\n\t          14,\n\t          24,\n\t          34,\n\t          44,\n\t          58,\n\t          64,\n\t          84,\n\t          98,\n\t          119,\n\t          137,\n\t          155,\n\t          177,\n\t          194,\n\t          220,\n\t          250,\n\t          280,\n\t          310,\n\t          338,\n\t          382,\n\t          403,\n\t          439,\n\t          461,\n\t          511,\n\t          535,\n\t          593,\n\t          625,\n\t          658,\n\t          698,\n\t          742,\n\t          790,\n\t          842,\n\t          898,\n\t          958,\n\t          983,\n\t          1051,\n\t          1093,\n\t          1139,\n\t          1219,\n\t          1273\n\t        ]\n\t      }\n\t    }[encoding][errorCorrection];\n\t  }\n\t  get errorCorrections() {\n\t    return [ERROR_CORRECTION.LOW, ERROR_CORRECTION.MEDIUM, ERROR_CORRECTION.QUARTER, ERROR_CORRECTION.HIGH];\n\t  }\n\t  penaltyForMatrix(matrix) {\n\t    let penalty = 0;\n\t    const dimension = matrix.content.length;\n\t    let current, last, run, runTest, finderPattern;\n\t    for (let y = 0; y < dimension - 1; y++) {\n\t      current = matrix.bitAt(0, y);\n\t      last = current;\n\t      run = 1;\n\t      runTest = current;\n\t      finderPattern = current;\n\t      for (let x = 1; x < 10; x++) {\n\t        current = matrix.bitAt(x, y);\n\t        if (last === current) {\n\t          if (matrix.bitAt(x, y + 1) === last && matrix.bitAt(x - 1, y + 1) === last) penalty += 3;\n\t        } else {\n\t          last = current;\n\t        }\n\t        if (runTest === current) {\n\t          run++;\n\t        } else {\n\t          if (run > 4) penalty += run - 2;\n\t          run = 1;\n\t          runTest = current;\n\t        }\n\t        finderPattern = finderPattern * 2 + current;\n\t      }\n\t      for (let x = 10; x < dimension; x++) {\n\t        current = matrix.bitAt(x, y);\n\t        if (last === current) {\n\t          if (matrix.bitAt(x, y + 1) === last && matrix.bitAt(x - 1, y + 1) === last) penalty += 3;\n\t        } else {\n\t          last = current;\n\t        }\n\t        if (runTest === current) {\n\t          run++;\n\t        } else {\n\t          if (run > 4) penalty += run - 2;\n\t          run = 1;\n\t          runTest = current;\n\t        }\n\t        finderPattern = (finderPattern * 2 + current) % 2048;\n\t        if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n\t      }\n\t      if (run > 4) penalty += run - 2;\n\t    }\n\t    let lastY = dimension - 1;\n\t    current = matrix.bitAt(0, lastY);\n\t    run = 1;\n\t    runTest = current;\n\t    finderPattern = current;\n\t    for (let x = 1; x < 10; x++) {\n\t      current = matrix.bitAt(x, lastY);\n\t      if (runTest === current) {\n\t        run++;\n\t      } else {\n\t        if (run > 4) penalty += run - 2;\n\t        run = 1;\n\t        runTest = current;\n\t      }\n\t      finderPattern = finderPattern * 2 + current;\n\t    }\n\t    for (let x = 10; x < dimension; x++) {\n\t      current = matrix.bitAt(x, lastY);\n\t      if (runTest === current) {\n\t        run++;\n\t      } else {\n\t        if (run > 4) penalty += run - 2;\n\t        run = 1;\n\t        runTest = current;\n\t      }\n\t      finderPattern = (finderPattern * 2 + current) % 2048;\n\t      if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n\t    }\n\t    if (run > 4) penalty += run - 2;\n\t    let count = 0;\n\t    for (let x = 0; x < dimension; x++) {\n\t      current = matrix.bitAt(x, 0);\n\t      count += current;\n\t      run = 1;\n\t      runTest = current;\n\t      finderPattern = current;\n\t      for (let y = 1; y < 10; y++) {\n\t        current = matrix.bitAt(x, y);\n\t        count += current;\n\t        if (runTest === current) {\n\t          run++;\n\t        } else {\n\t          if (run > 4) penalty += run - 2;\n\t          run = 1;\n\t          runTest = current;\n\t        }\n\t        finderPattern = finderPattern * 2 + current;\n\t      }\n\t      for (let y = 10; y < dimension; y++) {\n\t        current = matrix.bitAt(x, y);\n\t        count += current;\n\t        if (runTest === current) {\n\t          run++;\n\t        } else {\n\t          if (run > 4) penalty += run - 2;\n\t          run = 1;\n\t          runTest = current;\n\t        }\n\t        finderPattern = (finderPattern * 2 + current) % 2048;\n\t        if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n\t      }\n\t      if (run > 4) penalty += run - 2;\n\t    }\n\t    penalty += Math.floor(Math.abs(count / (dimension * dimension) - 0.5) * 10);\n\t    return penalty;\n\t  }\n\t  toUtf16Bytes(string) {\n\t    const bytes = [];\n\t    for (let i = 0; i < string.length; i++) {\n\t      let code = string.charCodeAt(i);\n\t      let remainder = code % 256;\n\t      let quotient = (code - remainder) / 256;\n\t      bytes.push(quotient);\n\t      bytes.push(remainder);\n\t    }\n\t    return bytes;\n\t  }\n\t  toUtf8Bytes(string) {\n\t    const bytes = [];\n\t    let position = 0;\n\t    for (let i = 0; i < string.length; i++) {\n\t      let code = string.charCodeAt(i);\n\t      if (code < 128) {\n\t        bytes[position++] = code;\n\t      } else if (code < 2048) {\n\t        bytes[position++] = code >> 6 | 192;\n\t        bytes[position++] = code & 63 | 128;\n\t      } else if ((code & 64512) == 55296 && i + 1 < string.length && (string.charCodeAt(i + 1) & 64512) == 56320) {\n\t        code = 65536 + ((code & 1023) << 10) + (string.charCodeAt(++i) & 1023);\n\t        bytes[position++] = code >> 18 | 240;\n\t        bytes[position++] = code >> 12 & 63 | 128;\n\t        bytes[position++] = code >> 6 & 63 | 128;\n\t        bytes[position++] = code & 63 | 128;\n\t      } else {\n\t        bytes[position++] = code >> 12 | 224;\n\t        bytes[position++] = code >> 6 & 63 | 128;\n\t        bytes[position++] = code & 63 | 128;\n\t      }\n\t    }\n\t    return bytes;\n\t  }\n\t  versionForLength(length2, errorCorrection) {\n\t    let capacity;\n\t    if (this.code.hasEci) {\n\t      capacity = DATA_CAPACITY[errorCorrection];\n\t    } else {\n\t      capacity = this.capacity(this.code.encoding, errorCorrection);\n\t    }\n\t    let index2 = capacity.findIndex((allows) => allows >= length2);\n\t    if (index2 === -1) return 100;\n\t    return index2 + 1;\n\t  }\n\t}\n\tvar qrcode = {\n\t  ENCODING,\n\t  ERROR_CORRECTION,\n\t  BitWriter,\n\t  Matrix: Matrix$1,\n\t  BooleanMatrix,\n\t  QRCodeMap,\n\t  QRCode: QRCode$1,\n\t  QRCodeEncoder: QRCodeEncoder$1\n\t};\n\tconst { QRCode, QRCodeEncoder } = qrcode;\n\tclass SquareQRCodeEncoder$1 extends QRCodeEncoder {\n\t  encode() {\n\t    this.initializeEncoding();\n\t    for (const errorCorrection of this.errorCorrections) {\n\t      this.code.errorCorrection = errorCorrection;\n\t      this.initializeVersion();\n\t      if (this.code.version < this.minimumVersion) continue;\n\t      this.initializeCodewords();\n\t      this.initializeMapping();\n\t      this.initializeMasking();\n\t      if (this.lowestPenalty < this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY) {\n\t        this.initializeTurtleData();\n\t        this.initializeSvg();\n\t        return;\n\t      }\n\t    }\n\t    const start = Math.max(this.minimumVersion, this.code.version + 1);\n\t    for (let version = start; version <= QRCode.MAX_VERSION; version++) {\n\t      this.code.version = version;\n\t      this.initializeCodewords();\n\t      this.initializeMapping();\n\t      this.initializeMasking();\n\t      if (this.lowestPenalty < this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY) {\n\t        this.initializeTurtleData();\n\t        this.initializeSvg();\n\t        return;\n\t      }\n\t    }\n\t  }\n\t  initializeSvg() {\n\t    const offset = this.svgOffset;\n\t    const dimension = this.svgDimension;\n\t    const foregroundStyle = this.svgForegroundStyle;\n\t    const backgroundStyle = this.svgBackgroundStyle;\n\t    const source = [];\n\t    source.push(this.svgTag(dimension));\n\t    source.push(\"<defs>\");\n\t    source.push(this.svgFinderPattern(foregroundStyle));\n\t    source.push(\"</defs>\");\n\t    source.push(this.svgBackground(backgroundStyle, dimension, offset === 0 ? void 0 : offset / 2));\n\t    this.svgFinderPatterns(source, offset);\n\t    this.svgTurtle(source, foregroundStyle, offset);\n\t    source.push(\"</svg>\");\n\t    this.svg = source.join(\"\");\n\t  }\n\t  initializeTurtleData() {\n\t    const data = this.code.data.copy();\n\t    for (const point of this.code.timingPatternPositions) {\n\t      data.put(point.x, point.y, true);\n\t    }\n\t    for (const point of this.code.alignmentPatternPositions) {\n\t      data.fillAlignmentPatternAt(point.x, point.y);\n\t    }\n\t    this.turtleData = data;\n\t  }\n\t  get inverted() {\n\t    const inverted = this.code.options.invert;\n\t    if (inverted === void 0) return false;\n\t    return inverted;\n\t  }\n\t  get hasBorder() {\n\t    const hasBorder = this.code.options.border;\n\t    if (hasBorder === void 0) return false;\n\t    return hasBorder;\n\t  }\n\t  get minimumVersion() {\n\t    return 1;\n\t  }\n\t  async png() {\n\t    if (this._png !== void 0) return this._png;\n\t    if (this.svg === void 0) throw \"no SVG to convert to PNG\";\n\t    const image = new Image();\n\t    const imageBlob = new Blob([this.svg], { type: \"image/svg+xml;charset=utf-8\" });\n\t    image.src = URL.createObjectURL(imageBlob);\n\t    await image.decode();\n\t    const dimension = this.svgDimension;\n\t    const canvas = document.createElement(\"canvas\");\n\t    canvas.width = dimension;\n\t    canvas.height = dimension;\n\t    canvas.getContext(\"2d\").drawImage(image, 0, 0, dimension, dimension);\n\t    this._png = canvas.toDataURL();\n\t    return this._png;\n\t  }\n\t  svgBackground(style, dimension, cornerRadius) {\n\t    if (style === \"\") return \"\";\n\t    return cornerRadius === void 0 ? `<rect ${style} x=\"0\" y=\"0\" width=\"${dimension}\" height=\"${dimension}\" />` : `<rect ${style} x=\"0\" y=\"0\" width=\"${dimension}\" height=\"${dimension}\" rx=\"${cornerRadius}\" ry=\"${cornerRadius}\" />`;\n\t  }\n\t  get svgBackgroundStyle() {\n\t    const fromOptions = this.code.options.styleBackground;\n\t    if (fromOptions !== void 0) return fromOptions;\n\t    return this.inverted ? 'fill=\"black\"' : 'fill=\"white\"';\n\t  }\n\t  get svgDimension() {\n\t    return 2 * this.svgOffset + 8 * this.code.dimension;\n\t  }\n\t  svgFinderPattern(style) {\n\t    return `<path id=\"f\" ${style} fill-rule=\"evenodd\" d=\"M 0 10 a10,10 0 0 1 10,-10 h36 a10,10 0 0 1 10,10 v36 a10,10 0 0 1 -10,10 h-36 a10,10 0 0 1 -10,-10 Z M 8 10 a2,2 0 0 1 2,-2 h36 a2,2 0 0 1 2,2 v36 a2,2 0 0 1 -2,2 h-36 a2,2 0 0 1 -2,-2 Z M 16 18 a2,2 0 0 1 2,-2 h20 a2,2 0 0 1 2,2 v20 a2,2 0 0 1 -2,2 h-20 a2,2 0 0 1 -2,-2 Z\" />`;\n\t  }\n\t  svgFinderPatterns(source, offset) {\n\t    for (const point of this.code.finderPatternPositions) {\n\t      source.push(`<use xlink:href=\"#f\" x=\"${point.x * 8 + offset}\" y=\"${point.y * 8 + offset}\" />`);\n\t    }\n\t  }\n\t  get svgForegroundStyle() {\n\t    const fromOptions = this.code.options.styleForeground;\n\t    if (fromOptions !== void 0) return fromOptions;\n\t    return this.inverted ? 'fill=\"white\"' : 'fill=\"black\"';\n\t  }\n\t  get svgOffset() {\n\t    return this.hasBorder ? 32 : 0;\n\t  }\n\t  svgTag(dimension) {\n\t    return `<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${dimension}\" height=\"${dimension}\" viewBox=\"0 0 ${dimension} ${dimension}\">`;\n\t  }\n\t  svgTurtle(source, style, offset) {\n\t    const dimension = this.code.dimension;\n\t    for (let y = 0; y < dimension; y++) {\n\t      for (let x = 0; x < dimension; x++) {\n\t        if (this.turtleData.at(x, y)) {\n\t          source.push(new Turtle(this.turtleData, style, offset, x, y).element);\n\t        }\n\t      }\n\t    }\n\t  }\n\t}\n\tSquareQRCodeEncoder$1.PENALTY_FOR_LEFTOVER_CAPACITY = [32, 16, 8, 4, 2, 1];\n\tSquareQRCodeEncoder$1.PENALTY_FOR_NEGATIVE_CAPACITY = 1e4;\n\tclass Turtle {\n\t  constructor(data, style, offset, x, y) {\n\t    this.data = data;\n\t    this.dimension = data.width;\n\t    this.style = style || \"\";\n\t    this.offset = offset || 0;\n\t    this.start = { x, y };\n\t    this.visitedLocations = /* @__PURE__ */ new Set();\n\t    this.generateElement();\n\t    this.clearVisited();\n\t  }\n\t  clearVisited() {\n\t    this.visitedLocations.forEach((location) => {\n\t      const point = this.fromLocation(location);\n\t      this.data.put(point.x, point.y, false);\n\t    });\n\t  }\n\t  get element() {\n\t    return this._element;\n\t  }\n\t  fromLocation(location) {\n\t    const x = location % this.dimension;\n\t    const y = (location - x) / this.dimension;\n\t    return { x, y };\n\t  }\n\t  generateElement() {\n\t    const startX = this.start.x;\n\t    const startY = this.start.y;\n\t    const startEdge = \"left\";\n\t    let x = startX;\n\t    let y = startY;\n\t    const outsideEdges = [];\n\t    outsideEdges.push(startEdge);\n\t    let edge = \"top\";\n\t    const tops = /* @__PURE__ */ new Set();\n\t    const rights = /* @__PURE__ */ new Set();\n\t    const bottoms = /* @__PURE__ */ new Set();\n\t    const lefts = /* @__PURE__ */ new Set();\n\t    lefts.add(this.toLocation(x, y));\n\t    while (!(x === startX && y === startY && edge === startEdge)) {\n\t      outsideEdges.push(edge);\n\t      const location = this.toLocation(x, y);\n\t      this.visitLocation(location);\n\t      switch (edge) {\n\t        case \"top\":\n\t          tops.add(location);\n\t          if (!this.hasPixelAtCoordinate(x + 1, y)) {\n\t            edge = \"right\";\n\t          } else if (this.hasPixelAtCoordinate(x + 1, y - 1)) {\n\t            x += 1;\n\t            y -= 1;\n\t            edge = \"left\";\n\t          } else {\n\t            x += 1;\n\t          }\n\t          break;\n\t        case \"right\":\n\t          rights.add(location);\n\t          if (!this.hasPixelAtCoordinate(x, y + 1)) {\n\t            edge = \"bottom\";\n\t          } else if (this.hasPixelAtCoordinate(x + 1, y + 1)) {\n\t            x += 1;\n\t            y += 1;\n\t            edge = \"top\";\n\t          } else {\n\t            y += 1;\n\t          }\n\t          break;\n\t        case \"bottom\":\n\t          bottoms.add(location);\n\t          if (!this.hasPixelAtCoordinate(x - 1, y)) {\n\t            edge = \"left\";\n\t          } else if (this.hasPixelAtCoordinate(x - 1, y + 1)) {\n\t            x -= 1;\n\t            y += 1;\n\t            edge = \"right\";\n\t          } else {\n\t            x -= 1;\n\t          }\n\t          break;\n\t        case \"left\":\n\t          lefts.add(location);\n\t          if (!this.hasPixelAtCoordinate(x, y - 1)) {\n\t            edge = \"top\";\n\t          } else if (this.hasPixelAtCoordinate(x - 1, y - 1)) {\n\t            x -= 1;\n\t            y -= 1;\n\t            edge = \"bottom\";\n\t          } else {\n\t            y -= 1;\n\t          }\n\t          break;\n\t      }\n\t    }\n\t    if (outsideEdges.length === 4) {\n\t      this._element = `<rect ${this.style} x=\"${startX * 8 + this.offset}\" y=\"${startY * 8 + this.offset}\" width=\"8\" height=\"8\" rx=\"2\" ry=\"2\" />`;\n\t      return;\n\t    }\n\t    let d = [];\n\t    d.push(`M${startX * 8 + this.offset + 1} ${startY * 8 + this.offset + 4}`);\n\t    let next = outsideEdges[0];\n\t    outsideEdges.push(next);\n\t    let now;\n\t    let length2 = 0;\n\t    for (let i = 1; i < outsideEdges.length; i++) {\n\t      now = next;\n\t      next = outsideEdges[i];\n\t      if (now === next) {\n\t        length2 += 8;\n\t      } else if (now === \"top\" && next === \"right\") {\n\t        if (length2 !== 0) {\n\t          d.push(`h${length2}`);\n\t          length2 = 0;\n\t        }\n\t        d.push(\"a3,3 0 0 1 3,3\");\n\t      } else if (now === \"right\" && next === \"bottom\") {\n\t        if (length2 !== 0) {\n\t          d.push(`v${length2}`);\n\t          length2 = 0;\n\t        }\n\t        d.push(\"a3,3 0 0 1 -3,3\");\n\t      } else if (now === \"bottom\" && next === \"left\") {\n\t        if (length2 !== 0) {\n\t          d.push(`h-${length2}`);\n\t          length2 = 0;\n\t        }\n\t        d.push(\"a3,3 0 0 1 -3,-3\");\n\t      } else if (now === \"left\" && next === \"top\") {\n\t        if (length2 !== 0) {\n\t          d.push(`v-${length2}`);\n\t          length2 = 0;\n\t        }\n\t        d.push(\"a3,3 0 0 1 3,-3\");\n\t      } else if (now === \"top\" && next === \"left\") {\n\t        d.push(`h${length2 + 5}`);\n\t        length2 = 5;\n\t      } else if (now === \"right\" && next === \"top\") {\n\t        d.push(`v${length2 + 5}`);\n\t        length2 = 5;\n\t      } else if (now === \"bottom\" && next === \"right\") {\n\t        d.push(`h-${length2 + 5}`);\n\t        length2 = 5;\n\t      } else if (now === \"left\" && next === \"bottom\") {\n\t        d.push(`v-${length2 + 5}`);\n\t        length2 = 5;\n\t      }\n\t    }\n\t    if (length2 > 0) d.push(`v-${length2}`);\n\t    d.push(\"z\");\n\t    let interior = /* @__PURE__ */ new Set();\n\t    let process = /* @__PURE__ */ new Set();\n\t    this.visitedLocations.forEach((location) => {\n\t      if (!tops.has(location)) process.add(location - this.dimension);\n\t      if (!lefts.has(location)) process.add(location - 1);\n\t      if (!bottoms.has(location)) process.add(location + this.dimension);\n\t      if (!rights.has(location)) process.add(location + 1);\n\t    });\n\t    process = [...process].filter((location) => !this.hasVisitedLocation(location));\n\t    while (process.length > 0) {\n\t      let fanOutFrom = [];\n\t      process.forEach((location) => {\n\t        if (this.hasPixelAtLocation(location)) {\n\t          this.visitLocation(location);\n\t          fanOutFrom.push(location);\n\t        } else {\n\t          interior.add(location);\n\t        }\n\t      });\n\t      process = /* @__PURE__ */ new Set();\n\t      fanOutFrom.forEach((location) => {\n\t        process.add(location - this.dimension);\n\t        process.add(location + this.dimension);\n\t        process.add(location + 1);\n\t        process.add(location - 1);\n\t      });\n\t      process = [...process].filter((location) => !this.hasVisitedLocation(location));\n\t    }\n\t    while (interior.size > 0) {\n\t      let topRight, topRightX, topRightY;\n\t      interior.forEach((location) => {\n\t        x = location % this.dimension;\n\t        y = (location - x) / this.dimension;\n\t        if (topRight === void 0 || y < topRightY || y === topRightY && x > topRightX) {\n\t          topRight = location;\n\t          topRightX = x;\n\t          topRightY = y;\n\t        }\n\t      });\n\t      d.push(`M${topRightX * 8 + this.offset + 9} ${topRightY * 8 + this.offset - 1}`);\n\t      x = topRightX;\n\t      y = topRightY;\n\t      edge = \"top\";\n\t      let distance = 5;\n\t      while (!(x === topRightX && y === topRightY && edge === \"right\")) {\n\t        const location = this.toLocation(x, y);\n\t        interior.delete(location);\n\t        switch (edge) {\n\t          case \"top\":\n\t            if (!this.hasPixelAtCoordinate(x - 1, y - 1)) {\n\t              if (distance > 0) d.push(`h-${distance}`);\n\t              d.push(\"a3,3 0 0 1 -3,-3\");\n\t              distance = 0;\n\t              edge = \"right\";\n\t              x--;\n\t              y--;\n\t            } else if (!this.hasPixelAtCoordinate(x - 1, y)) {\n\t              distance += 8;\n\t              x--;\n\t            } else {\n\t              d.push(`h-${distance + 5}`);\n\t              distance = 5;\n\t              edge = \"left\";\n\t            }\n\t            break;\n\t          case \"left\":\n\t            if (!this.hasPixelAtCoordinate(x - 1, y + 1)) {\n\t              if (distance > 0) d.push(`v${distance}`);\n\t              d.push(\"a3,3 0 0 1 -3,3\");\n\t              distance = 0;\n\t              edge = \"top\";\n\t              x--;\n\t              y++;\n\t            } else if (!this.hasPixelAtCoordinate(x, y + 1)) {\n\t              distance += 8;\n\t              y++;\n\t            } else {\n\t              d.push(`v${distance + 5}`);\n\t              distance = 5;\n\t              edge = \"bottom\";\n\t            }\n\t            break;\n\t          case \"bottom\":\n\t            if (!this.hasPixelAtCoordinate(x + 1, y + 1)) {\n\t              if (distance > 0) d.push(`h${distance}`);\n\t              d.push(\"a3,3 0 0 1 3,3\");\n\t              distance = 0;\n\t              edge = \"left\";\n\t              x++;\n\t              y++;\n\t            } else if (!this.hasPixelAtCoordinate(x + 1, y)) {\n\t              distance += 8;\n\t              x++;\n\t            } else {\n\t              d.push(`h${distance + 5}`);\n\t              distance = 5;\n\t              edge = \"right\";\n\t            }\n\t            break;\n\t          case \"right\":\n\t            if (!this.hasPixelAtCoordinate(x + 1, y - 1)) {\n\t              if (distance > 0) d.push(`v-${distance}`);\n\t              d.push(\"a3,3 0 0 1 3,-3\");\n\t              distance = 0;\n\t              edge = \"bottom\";\n\t              x++;\n\t              y--;\n\t            } else if (!this.hasPixelAtCoordinate(x, y - 1)) {\n\t              distance += 8;\n\t              y--;\n\t            } else {\n\t              d.push(`v-${distance + 5}`);\n\t              distance = 5;\n\t              edge = \"top\";\n\t            }\n\t            break;\n\t        }\n\t      }\n\t      d.push(`v-${distance + 5}`);\n\t      d.push(\"z\");\n\t    }\n\t    this._element = `<path ${this.style} d=\"${d.join(\"\")}\" />`;\n\t  }\n\t  hasPixelAtCoordinate(x, y) {\n\t    if (x >= this.dimension || x < 0 || y >= this.dimension || y < 0) return false;\n\t    return this.data.at(x, y);\n\t  }\n\t  hasPixelAtLocation(location) {\n\t    const x = location % this.dimension;\n\t    const y = (location - x) / this.dimension;\n\t    return this.data.at(x, y);\n\t  }\n\t  hasVisitedCoordinate(x, y) {\n\t    return this.hasVisitedLocation(this.toLocation(x, y));\n\t  }\n\t  hasVisitedLocation(location) {\n\t    return this.visitedLocations.has(location);\n\t  }\n\t  toLocation(x, y) {\n\t    return this.dimension * y + x;\n\t  }\n\t  visitCoordinate(x, y) {\n\t    this.visitLocation(this.toLocation(x, y));\n\t  }\n\t  visitLocation(location) {\n\t    this.visitedLocations.add(location);\n\t  }\n\t}\n\tvar squareQrcode = { SquareQRCodeEncoder: SquareQRCodeEncoder$1, Turtle };\n\tconst { Matrix } = qrcode;\n\tconst { SquareQRCodeEncoder } = squareQrcode;\n\tconst JEWEL_VALUE = Object.freeze({\n\t  AVAILABLE: \"AVAILABLE\",\n\t  FALSE: \"FALSE\",\n\t  TRUE: \"TRUE\",\n\t  UNDECIDED: \"UNDECIDED\"\n\t});\n\tclass MarketQRCodeEncoder extends SquareQRCodeEncoder {\n\t  static getJewel() {\n\t    if (this.jewel !== void 0) return this.jewel;\n\t    const jewel = Matrix.withAll(9, 9, JEWEL_VALUE.UNDECIDED);\n\t    jewel.put(0, 0, JEWEL_VALUE.AVAILABLE);\n\t    jewel.put(0, 8, JEWEL_VALUE.AVAILABLE);\n\t    jewel.put(8, 0, JEWEL_VALUE.AVAILABLE);\n\t    jewel.put(8, 8, JEWEL_VALUE.AVAILABLE);\n\t    for (let offset = 0; offset < 7; offset++) {\n\t      jewel.put(offset + 1, 0, JEWEL_VALUE.FALSE);\n\t      jewel.put(offset + 1, 8, JEWEL_VALUE.FALSE);\n\t      jewel.put(0, offset + 1, JEWEL_VALUE.FALSE);\n\t      jewel.put(8, offset + 1, JEWEL_VALUE.FALSE);\n\t    }\n\t    jewel.put(3, 3, JEWEL_VALUE.FALSE);\n\t    jewel.put(3, 5, JEWEL_VALUE.FALSE);\n\t    jewel.put(5, 3, JEWEL_VALUE.FALSE);\n\t    jewel.put(5, 5, JEWEL_VALUE.FALSE);\n\t    for (let offset = 0; offset < 6; offset++) {\n\t      jewel.put(1 + offset, 1, JEWEL_VALUE.TRUE);\n\t      jewel.put(2 + offset, 7, JEWEL_VALUE.TRUE);\n\t      jewel.put(7, 1 + offset, JEWEL_VALUE.TRUE);\n\t      jewel.put(1, 2 + offset, JEWEL_VALUE.TRUE);\n\t    }\n\t    jewel.put(4, 4, JEWEL_VALUE.TRUE);\n\t    this.jewel = jewel;\n\t    return jewel;\n\t  }\n\t  initializeSvg() {\n\t    const offset = this.svgOffset;\n\t    const dimension = this.svgDimension;\n\t    const foregroundStyle = this.svgForegroundStyle;\n\t    const logoStyle = this.svgLogoStyle;\n\t    const source = [];\n\t    source.push(this.svgTag(dimension));\n\t    source.push(\"<defs>\");\n\t    source.push(this.svgFinderPattern(foregroundStyle));\n\t    source.push(this.svgLogo(logoStyle));\n\t    source.push(\"</defs>\");\n\t    source.push(this.svgBackground(this.svgBackgroundStyle, dimension, offset === 0 ? void 0 : 16));\n\t    this.svgFinderPatterns(source, offset);\n\t    this.svgTurtle(source, foregroundStyle, offset);\n\t    const logoPosition = (this.code.dimension - 7) * 4 + offset;\n\t    source.push(`<use xlink:href=\"#s\" x=\"${logoPosition}\" y=\"${logoPosition}\" />`);\n\t    source.push(\"</svg>\");\n\t    this.svg = source.join(\"\");\n\t  }\n\t  initializeTurtleData() {\n\t    super.initializeTurtleData();\n\t    const start = (this.code.dimension - 9) / 2;\n\t    this.turtleData.fill(start, start + 1, 9, 7, false);\n\t    this.turtleData.fill(start + 1, start, 7, 1, false);\n\t    this.turtleData.fill(start + 1, start + 8, 7, 1, false);\n\t  }\n\t  get isMonochrome() {\n\t    const isMonochrome = this.code.options.monochrome;\n\t    if (isMonochrome === void 0) return false;\n\t    return isMonochrome;\n\t  }\n\t  get minimumVersion() {\n\t    return 2;\n\t  }\n\t  penaltyForMatrix(matrix) {\n\t    const errorCorrectionCapacity = this.map.errorCorrectionCapacity;\n\t    const messedUpBytes = errorCorrectionCapacity.map(() => /* @__PURE__ */ new Set());\n\t    const jewel = this.constructor.getJewel();\n\t    const start = (matrix.content.length - 9) / 2;\n\t    for (let y = 0; y < 9; y++) {\n\t      const yData = y + start;\n\t      for (let x = 0; x < 9; x++) {\n\t        const xData = x + start;\n\t        const pixel = this.map.at(xData, yData);\n\t        if (this.map.isDataPixel(pixel)) {\n\t          switch (jewel.at(x, y)) {\n\t            case JEWEL_VALUE.FALSE:\n\t              if (matrix.at(xData, yData) !== false) messedUpBytes[pixel.chunk].add(pixel.byte);\n\t              break;\n\t            case JEWEL_VALUE.TRUE:\n\t              if (matrix.at(xData, yData) !== true) messedUpBytes[pixel.chunk].add(pixel.byte);\n\t              break;\n\t            case JEWEL_VALUE.UNDECIDED:\n\t              messedUpBytes[pixel.chunk].add(pixel.byte);\n\t              break;\n\t          }\n\t        }\n\t      }\n\t    }\n\t    let penalty = 0;\n\t    errorCorrectionCapacity.forEach((capacity, index2) => {\n\t      const leftoverCapacity = capacity - messedUpBytes[index2].size * 2;\n\t      if (leftoverCapacity < 0) {\n\t        penalty += this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY;\n\t      } else if (leftoverCapacity < this.constructor.PENALTY_FOR_LEFTOVER_CAPACITY.length) {\n\t        penalty += this.constructor.PENALTY_FOR_LEFTOVER_CAPACITY[leftoverCapacity];\n\t      }\n\t    });\n\t    if (!matrix.at(start, start)) penalty++;\n\t    if (!matrix.at(start, start + 8)) penalty++;\n\t    if (!matrix.at(start + 8, start)) penalty++;\n\t    if (!matrix.at(start + 8, start + 8)) penalty++;\n\t    return penalty;\n\t  }\n\t  get svgForegroundStyle() {\n\t    const fromOptions = this.code.options.styleForeground;\n\t    if (fromOptions !== void 0) return fromOptions;\n\t    if (this.inverted) {\n\t      return this.isMonochrome ? 'fill=\"white\"' : 'fill=\"white\" fill-opacity=\"0.95\"';\n\t    } else {\n\t      return this.isMonochrome ? 'fill=\"black\"' : 'fill=\"black\" fill-opacity=\"0.9\"';\n\t    }\n\t  }\n\t  get svgLogoStyle() {\n\t    if (this.isMonochrome) return this.svgForegroundStyle;\n\t    const fromOptions = this.code.options.styleLogo;\n\t    if (fromOptions !== void 0) return fromOptions;\n\t    return 'fill=\"#006AFF\"';\n\t  }\n\t  svgLogo(style) {\n\t    return `<path id=\"s\" ${style} fill-rule=\"evenodd\" d=\"M 0 9.8 C 0 3.92 3.92 0 9.8 0 L 46.2 0 C 52.08 0 56 3.92 56 9.8 L 56 46.2 C 56 52.08 52.08 56 46.2 56 L 9.8 56 C 3.92 56 0 52.08 0 46.2 Z M 11.2 14 C 11.2 12.32 12.32 11.2 14 11.2 L 42 11.2 C 43.68 11.2 44.8 12.32 44.8 14 L 44.8 42 C 44.8 43.68 43.68 44.8 42 44.8 L 14 44.8 C 12.32 44.8 11.2 43.68 11.2 42 Z M 21 22.4 C 21 21.7 21.7 21 22.4 21 L 33.6 21 C 34.3 21 35 21.7 35 22.4 L 35 33.6 C 35 34.3 34.3 35 33.6 35 L 22.4 35 C 21.7 35 21 34.3 21 33.6 Z\" />`;\n\t  }\n\t  get svgOffset() {\n\t    return this.hasBorder ? 48 : 0;\n\t  }\n\t}\n\tvar marketQrcode = { MarketQRCodeEncoder, JEWEL_VALUE };\n\tvar qrcodeEncoder = __spreadValues(__spreadValues(__spreadValues({}, marketQrcode), qrcode), squareQrcode);\n\tconst marketQrcodeCss = \":host{display:inline-block;box-sizing:border-box;border-radius:var(--qrcode-border-radius)}:host svg .foreground{fill:var(--qrcode-normal-variant-foreground-color)}:host svg .background{fill:var(--qrcode-normal-variant-background-color)}:host svg .logo{fill:var(--qrcode-normal-variant-icon-color)}:host([monochrome]) .foreground{fill:var(--qrcode-monochrome-variant-foreground-color)}:host([monochrome]) .background{fill:var(--qrcode-monochrome-variant-background-color)}:host([monochrome]) .logo{fill:var(--qrcode-monochrome-variant-icon-color)}:host([size]) svg{width:100%;height:100%}:host([border]){border:var(--qrcode-border-width) solid var(--qrcode-border-color)}\";\n\tconst MarketQrcodeStyle0 = marketQrcodeCss;\n\tconst MarketQrcode = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.content = \"\";\n\t    this.size = void 0;\n\t    this.border = false;\n\t    this.monochrome = false;\n\t  }\n\t  render() {\n\t    const encoder = this.content ? new qrcodeEncoder.MarketQRCodeEncoder(this.content, {\n\t      border: this.border,\n\t      styleBackground: this.border ? 'class=\"background\"' : \"\",\n\t      styleForeground: 'class=\"foreground\"',\n\t      styleLogo: 'class=\"logo\"'\n\t    }) : null;\n\t    const containerStyle = this.size !== void 0 ? {\n\t      height: `${this.size}px`,\n\t      width: `${this.size}px`\n\t    } : null;\n\t    return index.h(index.Host, { key: \"6194ef9fecf9e6a02fff1c4540b5c4a075b03944\", class: \"market-qrcode\", \"aria-hidden\": \"true\" }, index.h(\"div\", {\n\t      key: \"72af149064f5cc18df5e353a606f67c55bedd6b2\",\n\t      innerHTML: encoder ? encoder.svg : \"\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      style: containerStyle\n\t    }));\n\t  }\n\t};\n\tMarketQrcode.style = MarketQrcodeStyle0;\n\tmarketQrcode_cjs_entry.market_qrcode = MarketQrcode;\n\treturn marketQrcode_cjs_entry;\n}\n\nvar marketRadio_cjs_entry = {};\n\nvar hasRequiredMarketRadio_cjs_entry;\n\nfunction requireMarketRadio_cjs_entry () {\n\tif (hasRequiredMarketRadio_cjs_entry) return marketRadio_cjs_entry;\n\thasRequiredMarketRadio_cjs_entry = 1;\n\tObject.defineProperty(marketRadio_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst marketRadioCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--transition-duration:var(--core-animation-enter-transition-moderate-speed-duration);--radio-offset:calc(-1 * var(--radio-border-size));--focus-ring-color:color-mix(in srgb, var(--radio-focus-ring-color) 100%, transparent);position:relative;display:inline-block;width:var(--radio-width);height:var(--radio-height);border:var(--radio-border-size) solid var(--radio-normal-state-normal-validity-unselected-value-border-color);border-radius:var(--radio-border-radius);background-color:var(--radio-normal-state-normal-validity-unselected-value-background-color)}input{position:absolute;top:var(--radio-offset);left:var(--radio-offset);width:var(--radio-width);height:var(--radio-height);margin:0;border-radius:var(--radio-border-radius);background:transparent;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus-visible{outline:var(--radio-focus-ring-border-size, var(--core-focus-ring-border-size)) solid var(--focus-ring-color);outline-offset:var(--radio-focus-ring-buffer-size)}svg{position:absolute;top:calc(50% - var(--radio-svg-radius));left:calc(50% - var(--radio-svg-radius));align-items:center;pointer-events:none}@media (hover: hover){:host(:hover),:host([hovered]){border-color:var(--radio-hover-state-normal-validity-unselected-value-border-color);background-color:var(--radio-hover-state-normal-validity-unselected-value-background-color)}}:host(:focus),:host([focused]){border-color:var(--radio-focus-state-normal-validity-unselected-value-border-color);background-color:var(--radio-focus-state-normal-validity-unselected-value-background-color)}:host(:active),:host([active]){border-color:var(--radio-pressed-state-normal-validity-unselected-value-border-color);background-color:var(--radio-pressed-state-normal-validity-unselected-value-background-color)}:host([invalid]){border-color:var(--radio-normal-state-invalid-validity-unselected-value-border-color);background-color:var(--radio-normal-state-invalid-validity-unselected-value-background-color)}@media (hover: hover){:host([invalid]:hover),:host([invalid][hovered]){border-color:var(--radio-hover-state-invalid-validity-unselected-value-border-color);background-color:var(--radio-hover-state-invalid-validity-unselected-value-background-color)}}:host([invalid]:focus),:host([invalid][focused]){border-color:var(--radio-focus-state-invalid-validity-unselected-value-border-color);background-color:var(--radio-focus-state-invalid-validity-unselected-value-background-color)}:host([invalid]:active),:host([invalid][active]){border-color:var(--radio-pressed-state-invalid-validity-unselected-value-border-color);background-color:var(--radio-pressed-state-invalid-validity-unselected-value-background-color)}:host([disabled]),:host([invalid][disabled]){border-color:var(--radio-disabled-state-normal-validity-unselected-value-border-color);background-color:var(--radio-disabled-state-normal-validity-unselected-value-background-color)}:host([selected]){border-color:var(--radio-normal-state-normal-validity-selected-value-border-color);background-color:var(--radio-normal-state-normal-validity-selected-value-background-color)}:host([selected]) svg{fill:var(--radio-normal-state-normal-validity-selected-value-icon-color)}@media (hover: hover){:host([selected]:hover),:host([selected][hovered]){border-color:var(--radio-hover-state-normal-validity-selected-value-border-color);background-color:var(--radio-hover-state-normal-validity-selected-value-background-color)}:host([selected]:hover) svg,:host([selected][hovered]) svg{fill:var(--radio-normal-state-normal-validity-selected-value-icon-color)}}:host([selected]:focus),:host([selected][focused]){border-color:var(--radio-focus-state-normal-validity-selected-value-border-color);background-color:var(--radio-focus-state-normal-validity-selected-value-background-color)}:host([selected]:focus) svg,:host([selected][focused]) svg{fill:var(--radio-focus-state-normal-validity-selected-value-icon-color)}:host([selected]:active),:host([selected][active]){border-color:var(--radio-pressed-state-normal-validity-selected-value-border-color);background-color:var(--radio-pressed-state-normal-validity-selected-value-background-color)}:host([selected]:active) svg,:host([selected][active]) svg{fill:var(--radio-pressed-state-normal-validity-selected-value-icon-color)}:host([invalid][selected]){border-color:var(--radio-normal-state-invalid-validity-selected-value-border-color);background-color:var(--radio-normal-state-invalid-validity-selected-value-background-color)}:host([invalid][selected]) svg{fill:var(--radio-normal-state-invalid-validity-selected-value-icon-color)}@media (hover: hover){:host([invalid][selected]:hover),:host([invalid][selected][hovered]){border-color:var(--radio-hover-state-invalid-validity-selected-value-border-color);background-color:var(--radio-hover-state-invalid-validity-selected-value-background-color)}:host([invalid][selected]:hover) svg,:host([invalid][selected][hovered]) svg{fill:var(--radio-hover-state-invalid-validity-selected-value-icon-color)}}:host([invalid][selected]:focus),:host([invalid][selected][focused]){border-color:var(--radio-focus-state-invalid-validity-selected-value-border-color);background-color:var(--radio-focus-state-invalid-validity-selected-value-background-color)}:host([invalid][selected]:focus) svg,:host([invalid][selected][focused]) svg{fill:var(--radio-focus-state-invalid-validity-selected-value-icon-color)}:host([invalid][selected]:active),:host([invalid][selected][active]){border-color:var(--radio-pressed-state-invalid-validity-selected-value-border-color);background-color:var(--radio-pressed-state-invalid-validity-selected-value-background-color)}:host([invalid][selected]:active) svg,:host([invalid][selected][active]) svg{fill:var(--radio-pressed-state-invalid-validity-selected-value-icon-color)}:host([selected][disabled]),:host([selected][disabled][invalid]){border-color:var(--radio-disabled-state-normal-validity-selected-value-border-color);background-color:var(--radio-disabled-state-normal-validity-selected-value-background-color)}:host([selected][disabled]) svg,:host([selected][disabled][invalid]) svg{fill:var(--radio-disabled-state-normal-validity-selected-value-icon-color)}\";\n\tconst MarketRadioStyle0 = marketRadioCss;\n\tconst MarketRadio = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketRadioValueChange = index.createEvent(this, \"marketRadioValueChange\", 7);\n\t    this.selected = false;\n\t    this.disabled = false;\n\t    this.invalid = false;\n\t    this.focused = false;\n\t    this.hovered = false;\n\t    this.active = false;\n\t  }\n\t  /**\n\t   * Toggles `selected` prop, and emits a change event accordingly.\n\t   * Used by `market-row` to sync its selected state w/ slotted radio buttons.\n\t   */\n\t  setSelection(newValue, { silent = false } = {}) {\n\t    const { marketRadioValueChange, selected: prevValue, innerInput } = this;\n\t    if (typeof newValue !== \"boolean\")\n\t      return Promise.resolve();\n\t    if (prevValue === newValue)\n\t      return Promise.resolve();\n\t    if (!silent) {\n\t      const { defaultPrevented } = marketRadioValueChange.emit({\n\t        current: newValue,\n\t        previous: prevValue\n\t      });\n\t      if (defaultPrevented) {\n\t        return Promise.resolve();\n\t      }\n\t    }\n\t    this.selected = newValue;\n\t    if (innerInput) {\n\t      innerInput.checked = newValue;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * DEPRECATED (3.x): Toggles `selected` state (unrelated to the HTML attribute `value`).\n\t   */\n\t  setValue(newValue) {\n\t    console.warn(\"market-radio's setValue() method has been deprecated. Use setSelection() instead.\", this.el);\n\t    this.setSelection(newValue);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `active` state. Allows external elements to programmatically\n\t   * trigger active styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setActive(value) {\n\t    this.active = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `hovered` state. Allows external elements to programmatically\n\t   * trigger hover styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setHover(value) {\n\t    this.hovered = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `disabled` state. Allows external elements to programmatically\n\t   * trigger disabled styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setDisabled(value) {\n\t    this.disabled = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `focused` state, except when disabled.\n\t   * Allows external consumers to programmatically\n\t   * trigger focused styling.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    return Promise.resolve();\n\t  }\n\t  onFocus() {\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    this.focused = true;\n\t    this.el.shadowRoot.querySelector(\"input\").focus();\n\t  }\n\t  handleClick(event) {\n\t    event.preventDefault();\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    if (!this.selected) {\n\t      this.setFocus();\n\t      this.setSelection(true);\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"776cb6549c670131722b9adb48ca6a2fbe9bdafd\", class: \"market-radio\", onBlur: () => {\n\t      this.setFocus(false);\n\t    }, onClick: this.handleClick, onFocus: () => {\n\t      this.setFocus();\n\t    } }, index.h(\"input\", {\n\t      key: \"a2f3db274a2e0409c9dd50d92b236ff08dc5abf9\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.innerInput = el,\n\t      type: \"radio\",\n\t      \"aria-label\": aria.getControlInputAriaLabel(this.el),\n\t      checked: this.selected,\n\t      disabled: this.disabled\n\t    }), this.selected && index.h(\"svg\", { key: \"96147e89ff37ddbc781a4c9a53a1a8ec8434e7d4\", width: \"6\", height: \"6\", viewBox: \"0 0 6 6\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"circle\", { key: \"86fd472309989e2818e84383b9d870a23e4c0ce6\", cx: \"3\", cy: \"3\", r: \"3\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketRadio.style = MarketRadioStyle0;\n\tmarketRadio_cjs_entry.market_radio = MarketRadio;\n\treturn marketRadio_cjs_entry;\n}\n\nvar marketRow_cjs_entry = {};\n\nvar hasRequiredMarketRow_cjs_entry;\n\nfunction requireMarketRow_cjs_entry () {\n\tif (hasRequiredMarketRow_cjs_entry) return marketRow_cjs_entry;\n\thasRequiredMarketRow_cjs_entry = 1;\n\tObject.defineProperty(marketRow_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$2 = requireIndexC43effe9();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst draggable = requireDraggableA7663027();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst raf = requireRafEa414557();\n\tconst elementTypeGuard = requireElementTypeGuardE6549907();\n\tconst _getTag = require_getTag7be0e78a();\n\tconst _Map = require_Map07e1b6b7();\n\trequireMaxZIndex536dd36e();\n\trequire_getNative666f22b9();\n\trequireIsObject7dcf0083();\n\tvar mapTag = \"[object Map]\", setTag = \"[object Set]\";\n\tvar objectProto = Object.prototype;\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\tfunction isEmpty(value) {\n\t  if (value == null) {\n\t    return true;\n\t  }\n\t  if (_getTag.isArrayLike(value) && (_Map.isArray(value) || typeof value == \"string\" || typeof value.splice == \"function\" || _getTag.isBuffer(value) || _getTag.isTypedArray(value) || _Map.isArguments(value))) {\n\t    return !value.length;\n\t  }\n\t  var tag = _getTag.getTag(value);\n\t  if (tag == mapTag || tag == setTag) {\n\t    return !value.size;\n\t  }\n\t  if (_getTag.isPrototype(value)) {\n\t    return !_getTag.baseKeys(value).length;\n\t  }\n\t  for (var key in value) {\n\t    if (hasOwnProperty.call(value, key)) {\n\t      return false;\n\t    }\n\t  }\n\t  return true;\n\t}\n\tfunction isValidRowControl(el) {\n\t  return elementTypeGuard.isCheckboxElement(el) || elementTypeGuard.isRadioElement(el) || elementTypeGuard.isToggleElement(el);\n\t}\n\tconst marketRowCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--transition-duration:0.2s;--row-horizontal-spacing:16px;position:relative;display:block;margin:0 calc(-1 * var(--row-normal-variant-background-horizontal-outset-padding));background-color:var(--row-normal-variant-normal-state-background-color);transition:background-color var(--transition-duration)}:host::before{content:\"\";position:absolute;right:var(--row-normal-variant-background-horizontal-outset-padding);bottom:calc(-1 * var(--row-normal-variant-separator-height));left:var(--row-normal-variant-background-horizontal-outset-padding);display:block;height:var(--row-normal-variant-separator-height);background-color:var(--row-normal-variant-normal-state-separator-color)}:host(:last-of-type)::before{content:none}.container{display:flex;justify-content:space-between;align-items:center;height:100%;padding-right:var(--row-normal-variant-background-horizontal-outset-padding);padding-left:var(--row-normal-variant-background-horizontal-outset-padding);outline:none;text-decoration:none;-moz-column-gap:var(--row-horizontal-spacing);column-gap:var(--row-horizontal-spacing)}.main{display:flex;flex-grow:2;flex-direction:column;min-width:0}.side{display:flex;flex-direction:column;text-align:right}.drill-icon{flex-shrink:0;fill:var(--row-normal-variant-normal-state-drill-color)}.hidden{display:none;}::slotted(*){cursor:inherit}::slotted([slot=\"label\"]){display:block;margin:0;color:var(--row-normal-variant-normal-state-text-color)}::slotted([slot=\"subtext\"]){display:block;margin:0;color:var(--row-normal-variant-normal-state-subtext-color)}::slotted([slot=\"side-label\"]){display:block;margin:0;color:var(--row-normal-variant-normal-state-side-text-primary-color)}::slotted([slot=\"side-subtext\"]){display:block;margin:0;color:var(--row-normal-variant-normal-state-side-text-secondary-color)}::slotted([slot=\"control\"]),::slotted([slot=\"leading-accessory\"]),::slotted([slot=\"trailing-accessory\"]){flex-shrink:0}:host(.market-drag-placeholder)::before{content:\"\" !important;top:0;bottom:0;display:block !important;height:auto;background-color:var(--core-fill-50-color)}:host(.market-drag-placeholder) .market-drag-handle{pointer-events:none}:host(.market-drag-placeholder) *,:host(.market-drag-placeholder) ::slotted(*){opacity:0%;pointer-events:none}:host(.market-drag-clone){--row-dragged-min-width:240px;width:-moz-fit-content;width:fit-content;min-width:var(--row-dragged-min-width);margin:0;border-radius:var(--row-normal-variant-background-radius);background-color:var(--core-surface-20-color);cursor:grabbing;transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:top, width, height}:host(.market-drag-clone)::after{content:\"\";position:absolute;inset:0;display:block;border-radius:var(--row-normal-variant-background-radius);box-shadow:var(--elevation-20-shadow);opacity:var(--market-drag-clone-shadow-opacity, 0%);transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:opacity}:host(.market-drag-clone) .market-drag-handle{cursor:grabbing}:host(.market-drag-clone) ::slotted([slot=\"label\"]){overflow:hidden;max-width:var(--row-dragged-min-width);text-overflow:ellipsis;white-space:nowrap}:host(.market-drag-clone) ::slotted(*:not([slot=\"label\"],[slot=\"leading-accessory\"])){display:none}:host(.market-drag-released){pointer-events:none;transition-property:top, width, height, transform}:host([size=\"small\"]){min-height:var(--row-small-size-min-height, 40px);font-size:var(--row-small-size-text-size);line-height:var(--row-small-size-text-leading);letter-spacing:var(--row-small-size-text-tracking);text-transform:var(--row-small-size-text-case)}:host([size=\"small\"]) .container{padding-top:var(--row-small-size-vertical-padding);padding-bottom:var(--row-small-size-vertical-padding)}:host([size=\"small\"]) .main{gap:var(--row-small-size-text-vertical-spacing)}:host([size=\"small\"]) .side{gap:var(--row-small-size-text-vertical-spacing)}:host([size=\"small\"]) ::slotted([slot=\"label\"]){font-weight:var(--row-small-size-text-weight);font-size:var(--row-small-size-text-size);line-height:var(--row-small-size-text-leading);letter-spacing:var(--row-small-size-text-tracking);text-transform:var(--row-small-size-text-case)}:host([size=\"small\"]) ::slotted([slot=\"subtext\"]){font-weight:var(--row-small-size-subtext-weight);font-size:var(--row-small-size-subtext-size);line-height:var(--row-small-size-subtext-leading);letter-spacing:var(--row-small-size-subtext-tracking);text-transform:var(--row-small-size-subtext-case)}:host([size=\"small\"]) ::slotted([slot=\"side-label\"]){font-weight:var(--row-small-size-side-text-primary-weight);font-size:var(--row-small-size-side-text-primary-size);line-height:var(--row-small-size-side-text-primary-leading);letter-spacing:var(--row-small-size-side-text-primary-tracking);text-transform:var(--row-small-size-side-text-primary-case)}:host([size=\"small\"]) ::slotted([slot=\"side-subtext\"]){font-weight:var(--row-small-size-side-text-secondary-weight);font-size:var(--row-small-size-side-text-secondary-size);line-height:var(--row-small-size-side-text-secondary-leading);letter-spacing:var(--row-small-size-side-text-secondary-tracking);text-transform:var(--row-small-size-side-text-secondary-case)}:host([size=\"medium\"]){min-height:var(--row-medium-size-min-height, 56px);font-size:var(--row-medium-size-text-size);line-height:var(--row-medium-size-text-leading);letter-spacing:var(--row-medium-size-text-tracking);text-transform:var(--row-medium-size-text-case)}:host([size=\"medium\"]) .container{padding-top:var(--row-medium-size-vertical-padding);padding-bottom:var(--row-medium-size-vertical-padding)}:host([size=\"medium\"]) .main{gap:var(--row-medium-size-text-vertical-spacing)}:host([size=\"medium\"]) .side{gap:var(--row-medium-size-text-vertical-spacing)}:host([size=\"medium\"]) ::slotted([slot=\"label\"]){font-weight:var(--row-medium-size-text-weight);font-size:var(--row-medium-size-text-size);line-height:var(--row-medium-size-text-leading);letter-spacing:var(--row-medium-size-text-tracking);text-transform:var(--row-medium-size-text-case)}:host([size=\"medium\"]) ::slotted([slot=\"subtext\"]){font-weight:var(--row-medium-size-subtext-weight);font-size:var(--row-medium-size-subtext-size);line-height:var(--row-medium-size-subtext-leading);letter-spacing:var(--row-medium-size-subtext-tracking);text-transform:var(--row-medium-size-subtext-case)}:host([size=\"medium\"]) ::slotted([slot=\"side-label\"]){font-weight:var(--row-medium-size-side-text-primary-weight);font-size:var(--row-medium-size-side-text-primary-size);line-height:var(--row-medium-size-side-text-primary-leading);letter-spacing:var(--row-medium-size-side-text-primary-tracking);text-transform:var(--row-medium-size-side-text-primary-case)}:host([size=\"medium\"]) ::slotted([slot=\"side-subtext\"]){font-weight:var(--row-medium-size-side-text-secondary-weight);font-size:var(--row-medium-size-side-text-secondary-size);line-height:var(--row-medium-size-side-text-secondary-leading);letter-spacing:var(--row-medium-size-side-text-secondary-tracking);text-transform:var(--row-medium-size-side-text-secondary-case)}:host([interactive]),:host([role=\"option\"]){--focus-ring-color:color-mix(in srgb, var(--row-normal-variant-focus-ring-color) 100%, transparent);border-radius:var(--row-normal-variant-background-radius);outline:none;cursor:pointer}:host([interactive]) .drill-icon,:host([role=\"option\"]) .drill-icon{color:var(--row-normal-variant-normal-state-drill-color)}.container:focus-visible,:host(:focus-visible) .container,:host(.pseudo-focus) .container{border-radius:var(--row-normal-variant-background-radius);outline:var(--row-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--row-focus-ring-buffer-size)}:host(.pseudo-focus){z-index:2}:host(.preload) ::slotted([slot=\"control\"]){--row-slotted-control-transition:none}@media (hover: hover){:host([interactive]:not([destructive]):hover),:host([role=\"option\"]:not([destructive]):hover){background-color:var(--row-normal-variant-hover-state-background-color)}:host([interactive]:not([destructive]):hover)::before,:host([role=\"option\"]:not([destructive]):hover)::before{background-color:var(--row-normal-variant-hover-state-separator-color)}:host([interactive]:not([destructive]):hover) .drill-icon,:host([role=\"option\"]:not([destructive]):hover) .drill-icon{color:var(--row-normal-variant-hover-state-drill-color)}:host([interactive]:not([destructive]):hover) ::slotted([slot=\"label\"]),:host([role=\"option\"]:not([destructive]):hover) ::slotted([slot=\"label\"]){color:var(--row-normal-variant-hover-state-text-color)}:host([interactive]:not([destructive]):hover) ::slotted([slot=\"subtext\"]),:host([role=\"option\"]:not([destructive]):hover) ::slotted([slot=\"subtext\"]){color:var(--row-normal-variant-hover-state-subtext-color)}:host([interactive]:not([destructive]):hover) ::slotted([slot=\"side-label\"]),:host([role=\"option\"]:not([destructive]):hover) ::slotted([slot=\"side-label\"]){color:var(--row-normal-variant-hover-state-side-text-primary-color)}:host([interactive]:not([destructive]):hover) ::slotted([slot=\"side-subtext\"]),:host([role=\"option\"]:not([destructive]):hover) ::slotted([slot=\"side-subtext\"]){color:var(--row-normal-variant-hover-state-side-text-secondary-color)}}:host([interactive][selected]:not(.has-slotted-control)),:host([role=\"option\"][selected]:not(.has-slotted-control)){background-color:var(--row-normal-variant-selected-state-background-color)}:host([interactive][selected]:not(.has-slotted-control))::before,:host([role=\"option\"][selected]:not(.has-slotted-control))::before{background-color:var(--row-normal-variant-selected-state-separator-color)}:host([interactive][selected]:not(.has-slotted-control)) .drill-icon,:host([role=\"option\"][selected]:not(.has-slotted-control)) .drill-icon{color:var(--row-normal-variant-selected-state-drill-color)}:host([interactive][selected]:not(.has-slotted-control)) ::slotted([slot=\"label\"]),:host([role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"label\"]){color:var(--row-normal-variant-selected-state-text-color)}:host([interactive][selected]:not(.has-slotted-control)) ::slotted([slot=\"subtext\"]),:host([role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"subtext\"]){color:var(--row-normal-variant-selected-state-subtext-color)}:host([interactive][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-label\"]),:host([role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-label\"]){color:var(--row-normal-variant-selected-state-side-text-primary-color)}:host([interactive][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-subtext\"]),:host([role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-subtext\"]){color:var(--row-normal-variant-selected-state-side-text-secondary-color)}:host([interactive]:active:not([disabled])),:host([role=\"option\"]:active:not([disabled])){background-color:var(--row-normal-variant-pressed-state-background-color)}:host([interactive]:active:not([disabled]))::before,:host([role=\"option\"]:active:not([disabled]))::before{background-color:var(--row-normal-variant-pressed-state-separator-color)}:host([interactive]:active:not([disabled])) .drill-icon,:host([role=\"option\"]:active:not([disabled])) .drill-icon{color:var(--row-normal-variant-pressed-state-drill-color)}:host([interactive]:active:not([disabled])) ::slotted([slot=\"label\"]),:host([role=\"option\"]:active:not([disabled])) ::slotted([slot=\"label\"]){color:var(--row-normal-variant-pressed-state-text-color)}:host([interactive]:active:not([disabled])) ::slotted([slot=\"subtext\"]),:host([role=\"option\"]:active:not([disabled])) ::slotted([slot=\"subtext\"]){color:var(--row-normal-variant-pressed-state-subtext-color)}:host([interactive]:active:not([disabled])) ::slotted([slot=\"side-label\"]),:host([role=\"option\"]:active:not([disabled])) ::slotted([slot=\"side-label\"]){color:var(--row-normal-variant-pressed-state-side-text-primary-color)}:host([interactive]:active:not([disabled])) ::slotted([slot=\"side-subtext\"]),:host([role=\"option\"]:active:not([disabled])) ::slotted([slot=\"side-subtext\"]){color:var(--row-normal-variant-pressed-state-side-text-secondary-color)}:host([interactive][disabled]),:host([role=\"option\"][disabled]){background-color:var(--row-normal-variant-disabled-state-background-color);color:var(--row-normal-variant-disabled-state-text-color);pointer-events:none}:host([interactive][disabled])::before,:host([role=\"option\"][disabled])::before{background-color:var(--row-normal-variant-disabled-state-separator-color)}:host([interactive][disabled]) .drill-icon,:host([role=\"option\"][disabled]) .drill-icon{color:var(--row-normal-variant-disabled-state-drill-color)}:host([interactive][disabled]) ::slotted([slot=\"label\"]),:host([role=\"option\"][disabled]) ::slotted([slot=\"label\"]){color:var(--row-normal-variant-disabled-state-text-color)}:host([interactive][disabled]) ::slotted([slot=\"subtext\"]),:host([role=\"option\"][disabled]) ::slotted([slot=\"subtext\"]){color:var(--row-normal-variant-disabled-state-subtext-color)}:host([interactive][disabled]) ::slotted([slot=\"side-label\"]),:host([role=\"option\"][disabled]) ::slotted([slot=\"side-label\"]){color:var(--row-normal-variant-disabled-state-side-text-primary-color)}:host([interactive][disabled]) ::slotted([slot=\"side-subtext\"]),:host([role=\"option\"][disabled]) ::slotted([slot=\"side-subtext\"]){color:var(--row-normal-variant-disabled-state-side-text-secondary-color)}:host([interactive][disabled]) ::slotted(.market-accessory),:host([interactive][disabled]) ::slotted(img[slot*=\"accessory\"]),:host([interactive][disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([interactive][disabled]) ::slotted(div[slot*=\"accessory\"]),:host([role=\"option\"][disabled]) ::slotted(.market-accessory),:host([role=\"option\"][disabled]) ::slotted(img[slot*=\"accessory\"]),:host([role=\"option\"][disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([role=\"option\"][disabled]) ::slotted(div[slot*=\"accessory\"]){opacity:var(--row-disabled-state-leading-accessory-opacity)}:host([interactive][disabled]) ::slotted(.market-tooltip),:host([role=\"option\"][disabled]) ::slotted(.market-tooltip){pointer-events:auto !important;}:host([slot=\"displayed-selection\"]){pointer-events:none}:host([slot=\"displayed-selection\"]) .container{padding:0}:host([slot=\"displayed-selection\"]) .main{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([slot=\"displayed-selection\"]) ::slotted([slot=\"label\"]){overflow:hidden;color:inherit;font-weight:var(--field-input-weight);font-size:inherit;line-height:inherit;text-overflow:ellipsis;white-space:nowrap}:host([slot=\"displayed-selection\"]) .side{display:none}:host([slot=\"displayed-selection\"]) ::slotted([slot=\"subtext\"]),:host([slot=\"displayed-selection\"]) ::slotted([slot=\"side-label\"]),:host([slot=\"displayed-selection\"]) ::slotted([slot=\"side-subtext\"]),:host([slot=\"displayed-selection\"]) ::slotted([slot=\"leading-accessory\"]),:host([slot=\"displayed-selection\"]) ::slotted([slot=\"trailing-accessory\"]),:host([slot=\"displayed-selection\"]) ::slotted([slot=\"control\"]){display:none}:host([destructive]) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-normal-state-text-color)}:host([destructive]) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-normal-state-subtext-color)}:host([destructive]) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-normal-state-side-text-primary-color)}:host([destructive]) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-normal-state-side-text-secondary-color)}:host([destructive][role=\"option\"]){border-radius:var(--row-destructive-variant-background-radius)}@media (hover: hover){:host([destructive][interactive]:hover),:host([destructive][role=\"option\"]:hover){background-color:var(--row-destructive-variant-hover-state-background-color)}:host([destructive][interactive]:hover)::before,:host([destructive][role=\"option\"]:hover)::before{background-color:var(--row-destructive-variant-hover-state-separator-color)}:host([destructive][interactive]:hover) .drill-icon,:host([destructive][role=\"option\"]:hover) .drill-icon{fill:var(--row-destructive-variant-hover-state-drill-color)}:host([destructive][interactive]:hover) ::slotted([slot=\"label\"]),:host([destructive][role=\"option\"]:hover) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-hover-state-text-color)}:host([destructive][interactive]:hover) ::slotted([slot=\"subtext\"]),:host([destructive][role=\"option\"]:hover) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-hover-state-subtext-color)}:host([destructive][interactive]:hover) ::slotted([slot=\"side-label\"]),:host([destructive][role=\"option\"]:hover) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-hover-state-side-text-primary-color)}:host([destructive][interactive]:hover) ::slotted([slot=\"side-subtext\"]),:host([destructive][role=\"option\"]:hover) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-hover-state-side-text-secondary-color)}}:host([destructive][role=\"option\"]:focus){background-color:var(--row-destructive-variant-focus-state-background-color)}:host([destructive][role=\"option\"]:focus)::before{background-color:var(--row-destructive-variant-focus-state-separator-color)}:host([destructive][role=\"option\"]:focus) .drill-icon{fill:var(--row-destructive-variant-focus-state-drill-color)}:host([destructive][role=\"option\"]:focus) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-focus-state-text-color)}:host([destructive][role=\"option\"]:focus) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-focus-state-subtext-color)}:host([destructive][role=\"option\"]:focus) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-focus-state-side-text-primary-color)}:host([destructive][role=\"option\"]:focus) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-focus-state-side-text-secondary-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)){background-color:var(--row-destructive-variant-selected-state-background-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control))::before{background-color:var(--row-destructive-variant-selected-state-separator-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)) .drill-icon{fill:var(--row-destructive-variant-selected-state-drill-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-selected-state-text-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-selected-state-subtext-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-selected-state-side-text-primary-color)}:host([destructive][role=\"option\"][selected]:not(.has-slotted-control)) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-selected-state-side-text-secondary-color)}:host([destructive][role=\"option\"]:active){background-color:var(--row-destructive-variant-pressed-state-background-color)}:host([destructive][role=\"option\"]:active)::before{background-color:var(--row-destructive-variant-pressed-state-separator-color)}:host([destructive][role=\"option\"]:active) .drill-icon{fill:var(--row-destructive-variant-pressed-state-drill-color)}:host([destructive][role=\"option\"]:active) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-pressed-state-text-color)}:host([destructive][role=\"option\"]:active) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-pressed-state-subtext-color)}:host([destructive][role=\"option\"]:active) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-pressed-state-side-text-primary-color)}:host([destructive][role=\"option\"]:active) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-pressed-state-side-text-secondary-color)}:host([destructive][role=\"option\"][disabled]){background-color:var(--row-destructive-variant-disabled-state-background-color);color:var(--row-destructive-variant-disabled-state-text-color);pointer-events:none}:host([destructive][role=\"option\"][disabled])::before{background-color:var(--row-destructive-variant-disabled-state-separator-color)}:host([destructive][role=\"option\"][disabled]) .drill-icon{fill:var(--row-destructive-variant-disabled-state-drill-color)}:host([destructive][role=\"option\"][disabled]) ::slotted([slot=\"label\"]){color:var(--row-destructive-variant-disabled-state-text-color)}:host([destructive][role=\"option\"][disabled]) ::slotted([slot=\"subtext\"]){color:var(--row-destructive-variant-disabled-state-subtext-color)}:host([destructive][role=\"option\"][disabled]) ::slotted([slot=\"side-label\"]){color:var(--row-destructive-variant-disabled-state-side-text-primary-color)}:host([destructive][role=\"option\"][disabled]) ::slotted([slot=\"side-subtext\"]){color:var(--row-destructive-variant-disabled-state-side-text-secondary-color)}';\n\tconst MarketRowStyle0 = marketRowCss;\n\tconst MarketRow = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketRowSelected = index.createEvent(this, \"marketRowSelected\", 7);\n\t    this.marketRowDeselected = index.createEvent(this, \"marketRowDeselected\", 7);\n\t    this.slottedControlEl = void 0;\n\t    this.selected = false;\n\t    this.value = void 0;\n\t    this.disabled = false;\n\t    this.size = \"medium\";\n\t    this.interactive = false;\n\t    this.transient = false;\n\t    this.togglable = true;\n\t    this.variant = \"regular\";\n\t    this.destructive = false;\n\t    this.controlPosition = \"trailing\";\n\t    this.href = void 0;\n\t    this.target = void 0;\n\t    this.dragEnabled = false;\n\t    this.dragHandlePosition = \"trailing\";\n\t    this.hasSideText = false;\n\t  }\n\t  /**\n\t   * If a control gets slotted in, set the value to match that of the row\n\t   */\n\t  selectedWatcher(newValue) {\n\t    var _a;\n\t    const selected = newValue && this.transient ? false : newValue;\n\t    this.selected = selected;\n\t    (_a = this.slottedControlEl) === null || _a === void 0 ? void 0 : _a.setSelection(selected);\n\t  }\n\t  /**\n\t   * If a control gets slotted in, set the value to match that of the row\n\t   */\n\t  disabledWatcher(newValue) {\n\t    var _a;\n\t    (_a = this.slottedControlEl) === null || _a === void 0 ? void 0 : _a.setDisabled(newValue);\n\t  }\n\t  /**\n\t   * Link rows should not be selectable\n\t   */\n\t  hrefWatcher(newValue) {\n\t    if (!isEmpty(newValue)) {\n\t      this.transient = true;\n\t    }\n\t  }\n\t  /**\n\t   * Drill rows are interactive and transient\n\t   */\n\t  variantWatcher(newValue) {\n\t    if (newValue === \"drill\") {\n\t      this.interactive = true;\n\t      this.transient = true;\n\t    }\n\t  }\n\t  /**\n\t   * @internal\n\t   * @private\n\t   *\n\t   * Used for setting the selection state to true without emiting the `marketRowSelected` event.\n\t   */\n\t  async silentlySelect() {\n\t    this.selected = true;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * @private\n\t   *\n\t   * Used for setting the selection state to false without emiting the `marketRowDeselected` event.\n\t   */\n\t  async silentlyDeselect() {\n\t    this.selected = false;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * @private\n\t   *\n\t   * Used for manually setting `selected` to true. Generally speaking, it\n\t   * is preferable to avoid using this method and allow `market-row` to\n\t   * manage its own selection state based on user interaction. It should only\n\t   * be used for parent components that need to manage a group of rows, such as\n\t   * `market-list`.\n\t   */\n\t  select() {\n\t    this.selected = true;\n\t    const { defaultPrevented } = this.marketRowSelected.emit({ value: this.value });\n\t    if (defaultPrevented) {\n\t      this.selected = false;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * @private\n\t   *\n\t   * Used for manually setting `selected` to false. Generally speaking, it\n\t   * is preferable to avoid using this method and allow `market-row` to\n\t   * manage its own selection state based on user interaction. It should only\n\t   * be used for parent components that need to manage a group of rows, such as\n\t   * `market-list`.\n\t   */\n\t  deselect() {\n\t    this.selected = false;\n\t    const { defaultPrevented } = this.marketRowDeselected.emit({ value: this.value });\n\t    if (defaultPrevented) {\n\t      this.selected = true;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * @private\n\t   *\n\t   * Used for toggling the row's selected state.\n\t   */\n\t  toggle() {\n\t    return !this.selected ? this.select() : this.deselect();\n\t  }\n\t  handleControlSlotChange() {\n\t    var _a;\n\t    this.querySlots();\n\t    if (this.slottedControlEl) {\n\t      this.interactive = true;\n\t      this.selectedWatcher(this.selected);\n\t      this.disabledWatcher(this.disabled);\n\t      const slottedControlLabel = (_a = this.el.querySelector('[slot=\"label\"]')) === null || _a === void 0 ? void 0 : _a.textContent;\n\t      this.slottedControlEl.setAttribute(\"aria-label\", slottedControlLabel);\n\t    }\n\t  }\n\t  setControlActive(value) {\n\t    var _a, _b;\n\t    (_b = (_a = this.slottedControlEl) === null || _a === void 0 ? void 0 : _a.setActive) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n\t  }\n\t  setControlHover(value) {\n\t    var _a, _b;\n\t    (_b = (_a = this.slottedControlEl) === null || _a === void 0 ? void 0 : _a.setHover) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n\t  }\n\t  async handleClick(e) {\n\t    if (this.disabled || this.transient || !this.interactive || e.target.tagName === \"A\" || e.target.tagName === \"BUTTON\" || e.target.tagName === index$1.getNamespacedTagFor(\"market-button\").toUpperCase() || e.target.tagName === index$1.getNamespacedTagFor(\"market-link\").toUpperCase()) {\n\t      return;\n\t    }\n\t    if (this.togglable) {\n\t      await this.toggle();\n\t    } else if (!this.selected) {\n\t      await this.select();\n\t    }\n\t    if (e.type === \"click\" && e.pointerType === \"mouse\") {\n\t      this.el.blur();\n\t    }\n\t  }\n\t  handleKeydown(e) {\n\t    if (e.target !== this.el) {\n\t      return;\n\t    }\n\t    if (e.key === \" \") {\n\t      e.preventDefault();\n\t      this.el.click();\n\t    }\n\t    if (e.key === \"Enter\") {\n\t      this.el.click();\n\t    }\n\t  }\n\t  async onDragStart(e) {\n\t    e.stopPropagation();\n\t    const { el, dragHandlePosition } = this;\n\t    const coords = e.detail;\n\t    const anchor = dragHandlePosition === \"leading\" ? \"left\" : \"right\";\n\t    const drag = new draggable.Draggable(el, { anchor });\n\t    this.drag = drag;\n\t    await drag.start(coords);\n\t  }\n\t  onDragMove(e) {\n\t    e.stopPropagation();\n\t    const coords = e.detail;\n\t    this.drag.move(coords);\n\t  }\n\t  async onDragEnd(e) {\n\t    e.stopPropagation();\n\t    const coords = e.detail;\n\t    await this.drag.end(coords);\n\t    this.drag.destroy();\n\t  }\n\t  checkIfSideTextIsPresent() {\n\t    const sideTextEl = this.el.querySelector('[slot=\"side-label\"], [slot=\"side-subtext\"]');\n\t    this.hasSideText = Boolean(sideTextEl);\n\t  }\n\t  querySlots() {\n\t    this.slottedControlEl = [...this.el.querySelectorAll('[slot=\"control\"]')].find(isValidRowControl);\n\t    this.checkIfSideTextIsPresent();\n\t  }\n\t  determineRowRole() {\n\t    if (this.interactive && this.transient && !this.href) {\n\t      return \"button\";\n\t    }\n\t    return void 0;\n\t  }\n\t  connectedCallback() {\n\t    this.querySlots();\n\t    this.selectedWatcher(this.selected);\n\t    this.disabledWatcher(this.disabled);\n\t    this.hrefWatcher(this.href);\n\t    this.variantWatcher(this.variant);\n\t  }\n\t  componentWillLoad() {\n\t    this.checkIfSideTextIsPresent();\n\t  }\n\t  async componentDidUpdate() {\n\t    if (this.el.classList.contains(\"preload\")) {\n\t      await raf.asyncRequestAnimationFrame();\n\t      this.el.classList.remove(\"preload\");\n\t    }\n\t  }\n\t  render() {\n\t    const { controlPosition, disabled, href, interactive, selected, slottedControlEl, target, variant, hasSideText, dragEnabled, dragHandlePosition, size, el } = this;\n\t    const tabindex = interactive && !disabled && !slottedControlEl ? \"0\" : null;\n\t    const ContainerTag = href === void 0 ? \"div\" : \"a\";\n\t    const ContainerTagAttrs = ContainerTag === \"a\" ? { href, target } : {};\n\t    ContainerTagAttrs[\"role\"] = this.determineRowRole();\n\t    const leadingControl = controlPosition === \"leading\";\n\t    const MarketDragHandleTagName = index$1.getNamespacedTagFor(\"market-drag-handle\");\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    const drillIconName = size === \"small\" ? index$2.ROW_SMALL_SIZE_CARET_ICON_ASSET : index$2.ROW_MEDIUM_SIZE_CARET_ICON_ASSET;\n\t    return index.h(index.Host, { key: \"298ec38f30afd3f400be5bba14214e831f8c3b70\", tabindex, \"aria-selected\": el.role === \"option\" ? Boolean(selected).toString() : void 0, class: classnames.classNames(\"market-row\", \"preload\", {\n\t      \"has-slotted-control\": typeof slottedControlEl !== \"undefined\",\n\t      \"has-leading-control\": leadingControl\n\t    }), onMouseDown: () => this.setControlActive(true), onMouseUp: () => this.setControlActive(false), onMouseEnter: () => this.setControlHover(true), onMouseLeave: () => this.setControlHover(false), onClick: (e) => this.handleClick(e), onKeydown: (e) => this.handleKeydown(e), onMarketDragHandleDragStart: (e) => this.onDragStart(e), onMarketDragHandleDragMove: (e) => this.onDragMove(e), onMarketDragHandleDragEnd: (e) => this.onDragEnd(e) }, index.h(ContainerTag, Object.assign({ key: \"4fdf8b1ea83c69e8eced8c6c0f1e19502357ae58\", part: \"container\", class: \"container\", tabindex }, ContainerTagAttrs), dragEnabled && dragHandlePosition === \"leading\" && index.h(MarketDragHandleTagName, { key: \"d263bc662fc025917f284f4103354da6ba498d4b\", part: \"drag-handle\" }), leadingControl && index.h(\"slot\", { key: \"6d13a57ad5e9c27ee8233c3ad1b0447bd0d394fe\", name: \"control\", onSlotchange: () => this.handleControlSlotChange() }), index.h(\"slot\", { key: \"dbfb6d271a67b5d1ab7717019e8d4e0f9f85002a\", name: \"leading-accessory\" }), index.h(\"div\", { key: \"356981edc227f025552e823cc3addc788e9142e2\", class: \"main\", part: \"main\" }, index.h(\"slot\", { key: \"4a5aec9b0c40203572ffe9757e17bb89fd8d95f8\", name: \"label\" }), index.h(\"slot\", { key: \"d1da1ba58a30a5de572806ba7676345c9d4abcb1\", name: \"subtext\" }), index.h(\"slot\", { key: \"7794c90742b090bf3067c2e844a47d7d255c19f9\" })), index.h(\"div\", { key: \"a0f0f473f0c17f15c7de11e2952bfc9c62b91431\", part: \"side\", class: classnames.classNames(\"side\", { hidden: !hasSideText }) }, index.h(\"slot\", { key: \"68c2698e9c315a588e25ffee0246f6819cfd1dc9\", name: \"side-label\", onSlotchange: () => this.checkIfSideTextIsPresent() }), index.h(\"slot\", { key: \"280c9625ad32a9c11f8b859ee98a3b6043a1610d\", name: \"side-subtext\", onSlotchange: () => this.checkIfSideTextIsPresent() })), index.h(\"slot\", { key: \"08e04d81e30dc91733c99db46a371a122e4acfe0\", name: \"trailing-accessory\" }), variant === \"regular\" && !leadingControl && index.h(\"slot\", { key: \"4553f972a4de010c7e0adc1b2ce39ede4b791545\", name: \"control\", onSlotchange: () => this.handleControlSlotChange() }), variant === \"drill\" && index.h(MarketIconTagName, { key: \"e8d466ee582b4ada068646ac4969b405390cf2fd\", class: \"drill-icon\", name: drillIconName }), dragEnabled && dragHandlePosition === \"trailing\" && index.h(MarketDragHandleTagName, { key: \"774a38ea5c437b8a7e205e579f56f32bd4f864f0\", part: \"drag-handle\" })));\n\t  }\n\t  static get delegatesFocus() {\n\t    return true;\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"selected\": [\"selectedWatcher\"],\n\t      \"disabled\": [\"disabledWatcher\"],\n\t      \"href\": [\"hrefWatcher\"],\n\t      \"variant\": [\"variantWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketRow.style = MarketRowStyle0;\n\tmarketRow_cjs_entry.market_row = MarketRow;\n\treturn marketRow_cjs_entry;\n}\n\nvar marketSegment_cjs_entry = {};\n\nvar hasRequiredMarketSegment_cjs_entry;\n\nfunction requireMarketSegment_cjs_entry () {\n\tif (hasRequiredMarketSegment_cjs_entry) return marketSegment_cjs_entry;\n\thasRequiredMarketSegment_cjs_entry = 1;\n\tObject.defineProperty(marketSegment_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketSegmentCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--segmented-control-option-min-width:var(--core-small-size-minimum-height);display:flex;flex-direction:row;justify-content:center;align-items:center;min-width:var(--segmented-control-option-min-width);padding:var(--segmented-control-option-vertical-padding) var(--segmented-control-option-horizontal-padding);border-radius:var(--segmented-control-option-radius);color:var(--segmented-control-option-unselected-value-normal-state-label-color);font-weight:var(--segmented-control-option-label-weight);font-size:var(--segmented-control-option-label-size);line-height:var(--segmented-control-option-label-leading);letter-spacing:var(--segmented-control-option-label-tracking);text-align:center;cursor:pointer;transition:color var(--segmented-control-animation-duration)}:host(:hover){color:var(--segmented-control-option-unselected-value-hover-state-label-color)}:host(:active){color:var(--segmented-control-option-unselected-value-pressed-state-label-color)}:host([disabled]){background:var(--segmented-control-option-unselected-value-disabled-state-background-color);color:var(--segmented-control-option-unselected-value-disabled-state-label-color);cursor:not-allowed}:host([selected]){color:var(--segmented-control-option-selected-value-normal-state-label-color)}:host([selected]:hover){color:var(--segmented-control-option-selected-value-hover-state-label-color)}:host([selected]:active){color:var(--segmented-control-option-selected-value-pressed-state-label-color)}:host([selected][disabled]){color:var(--segmented-control-option-selected-value-disabled-state-label-color)}\";\n\tconst MarketSegmentStyle0 = marketSegmentCss;\n\tconst MarketSegment = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketSegmentSelectedChanged = index.createEvent(this, \"marketSegmentSelectedChanged\", 7);\n\t    this.disabled = false;\n\t    this.value = void 0;\n\t    this.selected = false;\n\t  }\n\t  setSelectedState(state) {\n\t    this.selected = state;\n\t    return Promise.resolve();\n\t  }\n\t  selectSegment() {\n\t    if (this.selected || this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.marketSegmentSelectedChanged.emit();\n\t    return Promise.resolve();\n\t  }\n\t  handleKeyDown(ev) {\n\t    if (ev.key === \" \" || ev.key === \"Enter\") {\n\t      ev.preventDefault();\n\t      this.selectSegment();\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"24cac476d593322470f310ceaa80c091f727a2aa\", selected: this.selected, class: \"market-segment\", onClick: () => this.selectSegment(), tabindex: this.disabled ? \"-1\" : \"0\" }, index.h(\"slot\", { key: \"146ffdf8fd1915981afeea04828ca67b01b7da21\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketSegment.style = MarketSegmentStyle0;\n\tmarketSegment_cjs_entry.market_segment = MarketSegment;\n\treturn marketSegment_cjs_entry;\n}\n\nvar marketSegmentedControl_cjs_entry = {};\n\nvar hasRequiredMarketSegmentedControl_cjs_entry;\n\nfunction requireMarketSegmentedControl_cjs_entry () {\n\tif (hasRequiredMarketSegmentedControl_cjs_entry) return marketSegmentedControl_cjs_entry;\n\thasRequiredMarketSegmentedControl_cjs_entry = 1;\n\tObject.defineProperty(marketSegmentedControl_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$2 = requireIndexC43effe9();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketSegmentedControlCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;display:inline-flex;flex-direction:row;gap:calc(var(--segmented-control-horizontal-padding) * 2);align-items:center;min-width:100%;padding:var(--segmented-control-vertical-padding) var(--segmented-control-horizontal-padding);border-radius:var(--segmented-control-radius);background:var(--segmented-control-normal-state-background-color)}:host([disabled]){background:var(--segmented-control-disabled-state-background-color)}::slotted(.market-segment){z-index:2;width:100%;height:100%}:host::before{content:\"\";position:absolute;left:var(--selected-slider-left);z-index:1;width:var(--selected-slider-width);height:calc(100% - var(--segmented-control-vertical-padding) * 2);border-radius:var(--segmented-control-option-radius);background:var(--segmented-control-option-selected-value-normal-state-background-color);box-shadow:var(--elevation-10-shadow);transition:left var(--segmented-control-animation-duration)}';\n\tconst MarketSegmentedControlStyle0 = marketSegmentedControlCss;\n\tfunction isValueEmpty(value) {\n\t  return value === \"\" || value === \" \" || value === null || value === void 0;\n\t}\n\tconst MarketSegmentedControl = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketSegmentedSelectionDidChange = index.createEvent(this, \"marketSegmentedSelectionDidChange\", 7);\n\t    this.items = void 0;\n\t    this.value = \"\";\n\t    this.disabled = false;\n\t  }\n\t  valueWatcher() {\n\t    this.setSelectionsFromValue();\n\t  }\n\t  /**\n\t   * If a segment gets slotted in, set the value to match that of the row\n\t   */\n\t  disabledChangeHandler() {\n\t    var _a;\n\t    (_a = this.items) === null || _a === void 0 ? void 0 : _a.forEach((item) => item.disabled = this.disabled);\n\t  }\n\t  /**\n\t   * Select item that corresponds to passed value, or clear all values if value is empty string.\n\t   */\n\t  setSelectionsFromValue() {\n\t    var _a;\n\t    (_a = this.items) === null || _a === void 0 ? void 0 : _a.forEach((item) => {\n\t      if (this.value === item.value) {\n\t        item.setSelectedState(true);\n\t        this.setSliderPosition(item);\n\t      } else {\n\t        item.setSelectedState(false);\n\t      }\n\t    });\n\t  }\n\t  /**\n\t   * Sets the initial state of the segmented-control by updating and propagating props and setting\n\t   * default value.\n\t   */\n\t  setInternalState() {\n\t    this.items = this.el.querySelectorAll(`${index$1.getNamespacedTagFor(\"market-segment\")}`);\n\t    this.selectedSlider = this.el.shadowRoot.getElementById(\"selected-slider\");\n\t    if (this.items.length > 0) {\n\t      if (isValueEmpty(this.value)) {\n\t        this.value = this.items[0].value;\n\t      }\n\t      this.setSelectionsFromValue();\n\t    }\n\t  }\n\t  /**\n\t   * Sets slider size to be the size of a segment\n\t   */\n\t  setSliderSize() {\n\t    var _a;\n\t    this.el.style.setProperty(\"--selected-slider-width\", `calc(${100 / ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length)}% - ${index$2.SEGMENTED_CONTROL_PADDING_HORIZONTAL * 2}px)`);\n\t  }\n\t  /**\n\t   * Sets slider position (left offset) based on the currently selected item\n\t   */\n\t  setSliderPosition(selectedItem = void 0) {\n\t    if (!selectedItem) {\n\t      this.el.style.setProperty(\"--selected-slider-left\", `${index$2.SEGMENTED_CONTROL_PADDING_HORIZONTAL}px`);\n\t      return;\n\t    }\n\t    const newSelectionIndex = [...this.items].indexOf(selectedItem);\n\t    this.el.style.setProperty(\"--selected-slider-left\", `calc(${newSelectionIndex / this.items.length * 100}% + ${index$2.SEGMENTED_CONTROL_PADDING_HORIZONTAL}px)`);\n\t  }\n\t  /**\n\t   * Sets the initial state of the segmented-control by updating and propagating props and setting\n\t   * default value.\n\t   */\n\t  defaultSlotchangeHandler() {\n\t    this.setInternalState();\n\t    this.setSliderSize();\n\t  }\n\t  marketSegmentSelectedEventHandler(e) {\n\t    const newSelection = e.target;\n\t    const prevSelection = this.el.querySelector(`${index$1.getNamespacedTagFor(\"market-segment\")}[selected]`);\n\t    prevSelection === null || prevSelection === void 0 ? void 0 : prevSelection.setSelectedState(false);\n\t    newSelection.setSelectedState(true);\n\t    this.setSliderPosition(newSelection);\n\t    this.marketSegmentedSelectionDidChange.emit({\n\t      selectedSegment: newSelection,\n\t      selectedSegmentValue: newSelection.value,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      deselectedSegment: prevSelection,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      deselectedSegmentValue: prevSelection === null || prevSelection === void 0 ? void 0 : prevSelection.value\n\t    });\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"af04a6adbc3ccd8d66e9e718cf6292fbaaf9624a\", class: \"market-segmented-control\" }, index.h(\"slot\", { key: \"9857d03c0a244074868122c4a97ce30abae734d3\", onSlotchange: () => this.defaultSlotchangeHandler() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"valueWatcher\"],\n\t      \"disabled\": [\"disabledChangeHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketSegmentedControl.style = MarketSegmentedControlStyle0;\n\tmarketSegmentedControl_cjs_entry.market_segmented_control = MarketSegmentedControl;\n\treturn marketSegmentedControl_cjs_entry;\n}\n\nvar marketSelect_cjs_entry = {};\n\nvar hasRequiredMarketSelect_cjs_entry;\n\nfunction requireMarketSelect_cjs_entry () {\n\tif (hasRequiredMarketSelect_cjs_entry) return marketSelect_cjs_entry;\n\thasRequiredMarketSelect_cjs_entry = 1;\n\tvar __defProp = Object.defineProperty;\n\tvar __defProps = Object.defineProperties;\n\tvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n\tvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\n\tvar __hasOwnProp = Object.prototype.hasOwnProperty;\n\tvar __propIsEnum = Object.prototype.propertyIsEnumerable;\n\tvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n\tvar __spreadValues = (a, b) => {\n\t  for (var prop in b || (b = {}))\n\t    if (__hasOwnProp.call(b, prop))\n\t      __defNormalProp(a, prop, b[prop]);\n\t  if (__getOwnPropSymbols)\n\t    for (var prop of __getOwnPropSymbols(b)) {\n\t      if (__propIsEnum.call(b, prop))\n\t        __defNormalProp(a, prop, b[prop]);\n\t    }\n\t  return a;\n\t};\n\tvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\tvar __objRest = (source, exclude) => {\n\t  var target = {};\n\t  for (var prop in source)\n\t    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n\t      target[prop] = source[prop];\n\t  if (source != null && __getOwnPropSymbols)\n\t    for (var prop of __getOwnPropSymbols(source)) {\n\t      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n\t        target[prop] = source[prop];\n\t    }\n\t  return target;\n\t};\n\tObject.defineProperty(marketSelect_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$2 = requireIndexC43effe9();\n\tconst aria = requireAria71b861a0();\n\tconst forms = requireForms08db29a3();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst maxZIndex = requireMaxZIndex536dd36e();\n\tconst v4 = requireV48e8d6fbc();\n\tconst sides = [\"top\", \"right\", \"bottom\", \"left\"];\n\tconst alignments = [\"start\", \"end\"];\n\tconst placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\n\tconst min = Math.min;\n\tconst max = Math.max;\n\tconst round = Math.round;\n\tconst floor = Math.floor;\n\tconst createCoords = (v) => ({\n\t  x: v,\n\t  y: v\n\t});\n\tconst oppositeSideMap = {\n\t  left: \"right\",\n\t  right: \"left\",\n\t  bottom: \"top\",\n\t  top: \"bottom\"\n\t};\n\tconst oppositeAlignmentMap = {\n\t  start: \"end\",\n\t  end: \"start\"\n\t};\n\tfunction clamp(start, value, end) {\n\t  return max(start, min(value, end));\n\t}\n\tfunction evaluate(value, param) {\n\t  return typeof value === \"function\" ? value(param) : value;\n\t}\n\tfunction getSide(placement) {\n\t  return placement.split(\"-\")[0];\n\t}\n\tfunction getAlignment(placement) {\n\t  return placement.split(\"-\")[1];\n\t}\n\tfunction getOppositeAxis(axis) {\n\t  return axis === \"x\" ? \"y\" : \"x\";\n\t}\n\tfunction getAxisLength(axis) {\n\t  return axis === \"y\" ? \"height\" : \"width\";\n\t}\n\tconst yAxisSides = /* @__PURE__ */ new Set([\"top\", \"bottom\"]);\n\tfunction getSideAxis(placement) {\n\t  return yAxisSides.has(getSide(placement)) ? \"y\" : \"x\";\n\t}\n\tfunction getAlignmentAxis(placement) {\n\t  return getOppositeAxis(getSideAxis(placement));\n\t}\n\tfunction getAlignmentSides(placement, rects, rtl) {\n\t  if (rtl === void 0) {\n\t    rtl = false;\n\t  }\n\t  const alignment = getAlignment(placement);\n\t  const alignmentAxis = getAlignmentAxis(placement);\n\t  const length = getAxisLength(alignmentAxis);\n\t  let mainAlignmentSide = alignmentAxis === \"x\" ? alignment === (rtl ? \"end\" : \"start\") ? \"right\" : \"left\" : alignment === \"start\" ? \"bottom\" : \"top\";\n\t  if (rects.reference[length] > rects.floating[length]) {\n\t    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n\t  }\n\t  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n\t}\n\tfunction getOppositeAlignmentPlacement(placement) {\n\t  return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);\n\t}\n\tfunction getOppositePlacement(placement) {\n\t  return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);\n\t}\n\tfunction expandPaddingObject(padding) {\n\t  return __spreadValues({\n\t    top: 0,\n\t    right: 0,\n\t    bottom: 0,\n\t    left: 0\n\t  }, padding);\n\t}\n\tfunction getPaddingObject(padding) {\n\t  return typeof padding !== \"number\" ? expandPaddingObject(padding) : {\n\t    top: padding,\n\t    right: padding,\n\t    bottom: padding,\n\t    left: padding\n\t  };\n\t}\n\tfunction rectToClientRect(rect) {\n\t  const {\n\t    x,\n\t    y,\n\t    width,\n\t    height\n\t  } = rect;\n\t  return {\n\t    width,\n\t    height,\n\t    top: y,\n\t    left: x,\n\t    right: x + width,\n\t    bottom: y + height,\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n\t  let {\n\t    reference,\n\t    floating\n\t  } = _ref;\n\t  const sideAxis = getSideAxis(placement);\n\t  const alignmentAxis = getAlignmentAxis(placement);\n\t  const alignLength = getAxisLength(alignmentAxis);\n\t  const side = getSide(placement);\n\t  const isVertical = sideAxis === \"y\";\n\t  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n\t  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n\t  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n\t  let coords;\n\t  switch (side) {\n\t    case \"top\":\n\t      coords = {\n\t        x: commonX,\n\t        y: reference.y - floating.height\n\t      };\n\t      break;\n\t    case \"bottom\":\n\t      coords = {\n\t        x: commonX,\n\t        y: reference.y + reference.height\n\t      };\n\t      break;\n\t    case \"right\":\n\t      coords = {\n\t        x: reference.x + reference.width,\n\t        y: commonY\n\t      };\n\t      break;\n\t    case \"left\":\n\t      coords = {\n\t        x: reference.x - floating.width,\n\t        y: commonY\n\t      };\n\t      break;\n\t    default:\n\t      coords = {\n\t        x: reference.x,\n\t        y: reference.y\n\t      };\n\t  }\n\t  switch (getAlignment(placement)) {\n\t    case \"start\":\n\t      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n\t      break;\n\t    case \"end\":\n\t      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n\t      break;\n\t  }\n\t  return coords;\n\t}\n\tconst computePosition$1 = async (reference, floating, config) => {\n\t  const {\n\t    placement = \"bottom\",\n\t    strategy = \"absolute\",\n\t    middleware = [],\n\t    platform: platform2\n\t  } = config;\n\t  const validMiddleware = middleware.filter(Boolean);\n\t  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));\n\t  let rects = await platform2.getElementRects({\n\t    reference,\n\t    floating,\n\t    strategy\n\t  });\n\t  let {\n\t    x,\n\t    y\n\t  } = computeCoordsFromPlacement(rects, placement, rtl);\n\t  let statefulPlacement = placement;\n\t  let middlewareData = {};\n\t  let resetCount = 0;\n\t  for (let i = 0; i < validMiddleware.length; i++) {\n\t    const {\n\t      name,\n\t      fn\n\t    } = validMiddleware[i];\n\t    const {\n\t      x: nextX,\n\t      y: nextY,\n\t      data,\n\t      reset\n\t    } = await fn({\n\t      x,\n\t      y,\n\t      initialPlacement: placement,\n\t      placement: statefulPlacement,\n\t      strategy,\n\t      middlewareData,\n\t      rects,\n\t      platform: platform2,\n\t      elements: {\n\t        reference,\n\t        floating\n\t      }\n\t    });\n\t    x = nextX != null ? nextX : x;\n\t    y = nextY != null ? nextY : y;\n\t    middlewareData = __spreadProps(__spreadValues({}, middlewareData), {\n\t      [name]: __spreadValues(__spreadValues({}, middlewareData[name]), data)\n\t    });\n\t    if (reset && resetCount <= 50) {\n\t      resetCount++;\n\t      if (typeof reset === \"object\") {\n\t        if (reset.placement) {\n\t          statefulPlacement = reset.placement;\n\t        }\n\t        if (reset.rects) {\n\t          rects = reset.rects === true ? await platform2.getElementRects({\n\t            reference,\n\t            floating,\n\t            strategy\n\t          }) : reset.rects;\n\t        }\n\t        ({\n\t          x,\n\t          y\n\t        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n\t      }\n\t      i = -1;\n\t    }\n\t  }\n\t  return {\n\t    x,\n\t    y,\n\t    placement: statefulPlacement,\n\t    strategy,\n\t    middlewareData\n\t  };\n\t};\n\tasync function detectOverflow(state, options) {\n\t  var _await$platform$isEle;\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  const {\n\t    x,\n\t    y,\n\t    platform: platform2,\n\t    rects,\n\t    elements,\n\t    strategy\n\t  } = state;\n\t  const {\n\t    boundary = \"clippingAncestors\",\n\t    rootBoundary = \"viewport\",\n\t    elementContext = \"floating\",\n\t    altBoundary = false,\n\t    padding = 0\n\t  } = evaluate(options, state);\n\t  const paddingObject = getPaddingObject(padding);\n\t  const altContext = elementContext === \"floating\" ? \"reference\" : \"floating\";\n\t  const element = elements[altBoundary ? altContext : elementContext];\n\t  const clippingClientRect = rectToClientRect(await platform2.getClippingRect({\n\t    element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),\n\t    boundary,\n\t    rootBoundary,\n\t    strategy\n\t  }));\n\t  const rect = elementContext === \"floating\" ? {\n\t    x,\n\t    y,\n\t    width: rects.floating.width,\n\t    height: rects.floating.height\n\t  } : rects.reference;\n\t  const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));\n\t  const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {\n\t    x: 1,\n\t    y: 1\n\t  } : {\n\t    x: 1,\n\t    y: 1\n\t  };\n\t  const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({\n\t    elements,\n\t    rect,\n\t    offsetParent,\n\t    strategy\n\t  }) : rect);\n\t  return {\n\t    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n\t    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n\t    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n\t    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n\t  };\n\t}\n\tfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n\t  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter((placement) => getAlignment(placement) === alignment), ...allowedPlacements.filter((placement) => getAlignment(placement) !== alignment)] : allowedPlacements.filter((placement) => getSide(placement) === placement);\n\t  return allowedPlacementsSortedByAlignment.filter((placement) => {\n\t    if (alignment) {\n\t      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n\t    }\n\t    return true;\n\t  });\n\t}\n\tconst autoPlacement$1 = function(options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  return {\n\t    name: \"autoPlacement\",\n\t    options,\n\t    async fn(state) {\n\t      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n\t      const {\n\t        rects,\n\t        middlewareData,\n\t        placement,\n\t        platform: platform2,\n\t        elements\n\t      } = state;\n\t      const _a = evaluate(options, state), {\n\t        crossAxis = false,\n\t        alignment,\n\t        allowedPlacements = placements,\n\t        autoAlignment = true\n\t      } = _a, detectOverflowOptions = __objRest(_a, [\n\t        \"crossAxis\",\n\t        \"alignment\",\n\t        \"allowedPlacements\",\n\t        \"autoAlignment\"\n\t      ]);\n\t      const placements$1 = alignment !== void 0 || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n\t      const overflow = await detectOverflow(state, detectOverflowOptions);\n\t      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n\t      const currentPlacement = placements$1[currentIndex];\n\t      if (currentPlacement == null) {\n\t        return {};\n\t      }\n\t      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)));\n\t      if (placement !== currentPlacement) {\n\t        return {\n\t          reset: {\n\t            placement: placements$1[0]\n\t          }\n\t        };\n\t      }\n\t      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n\t      const allOverflows = [...((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || [], {\n\t        placement: currentPlacement,\n\t        overflows: currentOverflows\n\t      }];\n\t      const nextPlacement = placements$1[currentIndex + 1];\n\t      if (nextPlacement) {\n\t        return {\n\t          data: {\n\t            index: currentIndex + 1,\n\t            overflows: allOverflows\n\t          },\n\t          reset: {\n\t            placement: nextPlacement\n\t          }\n\t        };\n\t      }\n\t      const placementsSortedByMostSpace = allOverflows.map((d) => {\n\t        const alignment2 = getAlignment(d.placement);\n\t        return [d.placement, alignment2 && crossAxis ? (\n\t          // Check along the mainAxis and main crossAxis side.\n\t          d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0)\n\t        ) : (\n\t          // Check only the mainAxis.\n\t          d.overflows[0]\n\t        ), d.overflows];\n\t      }).sort((a, b) => a[1] - b[1]);\n\t      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter((d) => d[2].slice(\n\t        0,\n\t        // Aligned placements should not check their opposite crossAxis\n\t        // side.\n\t        getAlignment(d[0]) ? 2 : 3\n\t      ).every((v) => v <= 0));\n\t      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n\t      if (resetPlacement !== placement) {\n\t        return {\n\t          data: {\n\t            index: currentIndex + 1,\n\t            overflows: allOverflows\n\t          },\n\t          reset: {\n\t            placement: resetPlacement\n\t          }\n\t        };\n\t      }\n\t      return {};\n\t    }\n\t  };\n\t};\n\tconst originSides = /* @__PURE__ */ new Set([\"left\", \"top\"]);\n\tasync function convertValueToCoords(state, options) {\n\t  const {\n\t    placement,\n\t    platform: platform2,\n\t    elements\n\t  } = state;\n\t  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n\t  const side = getSide(placement);\n\t  const alignment = getAlignment(placement);\n\t  const isVertical = getSideAxis(placement) === \"y\";\n\t  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n\t  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n\t  const rawValue = evaluate(options, state);\n\t  let {\n\t    mainAxis,\n\t    crossAxis,\n\t    alignmentAxis\n\t  } = typeof rawValue === \"number\" ? {\n\t    mainAxis: rawValue,\n\t    crossAxis: 0,\n\t    alignmentAxis: null\n\t  } : {\n\t    mainAxis: rawValue.mainAxis || 0,\n\t    crossAxis: rawValue.crossAxis || 0,\n\t    alignmentAxis: rawValue.alignmentAxis\n\t  };\n\t  if (alignment && typeof alignmentAxis === \"number\") {\n\t    crossAxis = alignment === \"end\" ? alignmentAxis * -1 : alignmentAxis;\n\t  }\n\t  return isVertical ? {\n\t    x: crossAxis * crossAxisMulti,\n\t    y: mainAxis * mainAxisMulti\n\t  } : {\n\t    x: mainAxis * mainAxisMulti,\n\t    y: crossAxis * crossAxisMulti\n\t  };\n\t}\n\tconst offset$1 = function(options) {\n\t  if (options === void 0) {\n\t    options = 0;\n\t  }\n\t  return {\n\t    name: \"offset\",\n\t    options,\n\t    async fn(state) {\n\t      var _middlewareData$offse, _middlewareData$arrow;\n\t      const {\n\t        x,\n\t        y,\n\t        placement,\n\t        middlewareData\n\t      } = state;\n\t      const diffCoords = await convertValueToCoords(state, options);\n\t      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n\t        return {};\n\t      }\n\t      return {\n\t        x: x + diffCoords.x,\n\t        y: y + diffCoords.y,\n\t        data: __spreadProps(__spreadValues({}, diffCoords), {\n\t          placement\n\t        })\n\t      };\n\t    }\n\t  };\n\t};\n\tconst shift$1 = function(options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  return {\n\t    name: \"shift\",\n\t    options,\n\t    async fn(state) {\n\t      const {\n\t        x,\n\t        y,\n\t        placement\n\t      } = state;\n\t      const _a = evaluate(options, state), {\n\t        mainAxis: checkMainAxis = true,\n\t        crossAxis: checkCrossAxis = false,\n\t        limiter = {\n\t          fn: (_ref) => {\n\t            let {\n\t              x: x2,\n\t              y: y2\n\t            } = _ref;\n\t            return {\n\t              x: x2,\n\t              y: y2\n\t            };\n\t          }\n\t        }\n\t      } = _a, detectOverflowOptions = __objRest(_a, [\n\t        \"mainAxis\",\n\t        \"crossAxis\",\n\t        \"limiter\"\n\t      ]);\n\t      const coords = {\n\t        x,\n\t        y\n\t      };\n\t      const overflow = await detectOverflow(state, detectOverflowOptions);\n\t      const crossAxis = getSideAxis(getSide(placement));\n\t      const mainAxis = getOppositeAxis(crossAxis);\n\t      let mainAxisCoord = coords[mainAxis];\n\t      let crossAxisCoord = coords[crossAxis];\n\t      if (checkMainAxis) {\n\t        const minSide = mainAxis === \"y\" ? \"top\" : \"left\";\n\t        const maxSide = mainAxis === \"y\" ? \"bottom\" : \"right\";\n\t        const min2 = mainAxisCoord + overflow[minSide];\n\t        const max2 = mainAxisCoord - overflow[maxSide];\n\t        mainAxisCoord = clamp(min2, mainAxisCoord, max2);\n\t      }\n\t      if (checkCrossAxis) {\n\t        const minSide = crossAxis === \"y\" ? \"top\" : \"left\";\n\t        const maxSide = crossAxis === \"y\" ? \"bottom\" : \"right\";\n\t        const min2 = crossAxisCoord + overflow[minSide];\n\t        const max2 = crossAxisCoord - overflow[maxSide];\n\t        crossAxisCoord = clamp(min2, crossAxisCoord, max2);\n\t      }\n\t      const limitedCoords = limiter.fn(__spreadProps(__spreadValues({}, state), {\n\t        [mainAxis]: mainAxisCoord,\n\t        [crossAxis]: crossAxisCoord\n\t      }));\n\t      return __spreadProps(__spreadValues({}, limitedCoords), {\n\t        data: {\n\t          x: limitedCoords.x - x,\n\t          y: limitedCoords.y - y,\n\t          enabled: {\n\t            [mainAxis]: checkMainAxis,\n\t            [crossAxis]: checkCrossAxis\n\t          }\n\t        }\n\t      });\n\t    }\n\t  };\n\t};\n\tconst size$1 = function(options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  return {\n\t    name: \"size\",\n\t    options,\n\t    async fn(state) {\n\t      var _state$middlewareData, _state$middlewareData2;\n\t      const {\n\t        placement,\n\t        rects,\n\t        platform: platform2,\n\t        elements\n\t      } = state;\n\t      const _a = evaluate(options, state), {\n\t        apply = () => {\n\t        }\n\t      } = _a, detectOverflowOptions = __objRest(_a, [\n\t        \"apply\"\n\t      ]);\n\t      const overflow = await detectOverflow(state, detectOverflowOptions);\n\t      const side = getSide(placement);\n\t      const alignment = getAlignment(placement);\n\t      const isYAxis = getSideAxis(placement) === \"y\";\n\t      const {\n\t        width,\n\t        height\n\t      } = rects.floating;\n\t      let heightSide;\n\t      let widthSide;\n\t      if (side === \"top\" || side === \"bottom\") {\n\t        heightSide = side;\n\t        widthSide = alignment === (await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)) ? \"start\" : \"end\") ? \"left\" : \"right\";\n\t      } else {\n\t        widthSide = side;\n\t        heightSide = alignment === \"end\" ? \"top\" : \"bottom\";\n\t      }\n\t      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n\t      const maximumClippingWidth = width - overflow.left - overflow.right;\n\t      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n\t      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n\t      const noShift = !state.middlewareData.shift;\n\t      let availableHeight = overflowAvailableHeight;\n\t      let availableWidth = overflowAvailableWidth;\n\t      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n\t        availableWidth = maximumClippingWidth;\n\t      }\n\t      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n\t        availableHeight = maximumClippingHeight;\n\t      }\n\t      if (noShift && !alignment) {\n\t        const xMin = max(overflow.left, 0);\n\t        const xMax = max(overflow.right, 0);\n\t        const yMin = max(overflow.top, 0);\n\t        const yMax = max(overflow.bottom, 0);\n\t        if (isYAxis) {\n\t          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n\t        } else {\n\t          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n\t        }\n\t      }\n\t      await apply(__spreadProps(__spreadValues({}, state), {\n\t        availableWidth,\n\t        availableHeight\n\t      }));\n\t      const nextDimensions = await platform2.getDimensions(elements.floating);\n\t      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n\t        return {\n\t          reset: {\n\t            rects: true\n\t          }\n\t        };\n\t      }\n\t      return {};\n\t    }\n\t  };\n\t};\n\tfunction hasWindow() {\n\t  return typeof window !== \"undefined\";\n\t}\n\tfunction getNodeName(node) {\n\t  if (isNode(node)) {\n\t    return (node.nodeName || \"\").toLowerCase();\n\t  }\n\t  return \"#document\";\n\t}\n\tfunction getWindow(node) {\n\t  var _node$ownerDocument;\n\t  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n\t}\n\tfunction getDocumentElement(node) {\n\t  var _ref;\n\t  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n\t}\n\tfunction isNode(value) {\n\t  if (!hasWindow()) {\n\t    return false;\n\t  }\n\t  return value instanceof Node || value instanceof getWindow(value).Node;\n\t}\n\tfunction isElement(value) {\n\t  if (!hasWindow()) {\n\t    return false;\n\t  }\n\t  return value instanceof Element || value instanceof getWindow(value).Element;\n\t}\n\tfunction isHTMLElement(value) {\n\t  if (!hasWindow()) {\n\t    return false;\n\t  }\n\t  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n\t}\n\tfunction isShadowRoot(value) {\n\t  if (!hasWindow() || typeof ShadowRoot === \"undefined\") {\n\t    return false;\n\t  }\n\t  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n\t}\n\tconst invalidOverflowDisplayValues = /* @__PURE__ */ new Set([\"inline\", \"contents\"]);\n\tfunction isOverflowElement(element) {\n\t  const {\n\t    overflow,\n\t    overflowX,\n\t    overflowY,\n\t    display\n\t  } = getComputedStyle(element);\n\t  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n\t}\n\tconst tableElements = /* @__PURE__ */ new Set([\"table\", \"td\", \"th\"]);\n\tfunction isTableElement(element) {\n\t  return tableElements.has(getNodeName(element));\n\t}\n\tconst topLayerSelectors = [\":popover-open\", \":modal\"];\n\tfunction isTopLayer(element) {\n\t  return topLayerSelectors.some((selector) => {\n\t    try {\n\t      return element.matches(selector);\n\t    } catch (_e) {\n\t      return false;\n\t    }\n\t  });\n\t}\n\tconst transformProperties = [\"transform\", \"translate\", \"scale\", \"rotate\", \"perspective\"];\n\tconst willChangeValues = [\"transform\", \"translate\", \"scale\", \"rotate\", \"perspective\", \"filter\"];\n\tconst containValues = [\"paint\", \"layout\", \"strict\", \"content\"];\n\tfunction isContainingBlock(elementOrCss) {\n\t  const webkit = isWebKit();\n\t  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\t  return transformProperties.some((value) => css[value] ? css[value] !== \"none\" : false) || (css.containerType ? css.containerType !== \"normal\" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== \"none\" : false) || !webkit && (css.filter ? css.filter !== \"none\" : false) || willChangeValues.some((value) => (css.willChange || \"\").includes(value)) || containValues.some((value) => (css.contain || \"\").includes(value));\n\t}\n\tfunction getContainingBlock(element) {\n\t  let currentNode = getParentNode(element);\n\t  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n\t    if (isContainingBlock(currentNode)) {\n\t      return currentNode;\n\t    } else if (isTopLayer(currentNode)) {\n\t      return null;\n\t    }\n\t    currentNode = getParentNode(currentNode);\n\t  }\n\t  return null;\n\t}\n\tfunction isWebKit() {\n\t  if (typeof CSS === \"undefined\" || !CSS.supports) return false;\n\t  return CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n\t}\n\tconst lastTraversableNodeNames = /* @__PURE__ */ new Set([\"html\", \"body\", \"#document\"]);\n\tfunction isLastTraversableNode(node) {\n\t  return lastTraversableNodeNames.has(getNodeName(node));\n\t}\n\tfunction getComputedStyle(element) {\n\t  return getWindow(element).getComputedStyle(element);\n\t}\n\tfunction getNodeScroll(element) {\n\t  if (isElement(element)) {\n\t    return {\n\t      scrollLeft: element.scrollLeft,\n\t      scrollTop: element.scrollTop\n\t    };\n\t  }\n\t  return {\n\t    scrollLeft: element.scrollX,\n\t    scrollTop: element.scrollY\n\t  };\n\t}\n\tfunction getParentNode(node) {\n\t  if (getNodeName(node) === \"html\") {\n\t    return node;\n\t  }\n\t  const result = (\n\t    // Step into the shadow DOM of the parent of a slotted node.\n\t    node.assignedSlot || // DOM Element detected.\n\t    node.parentNode || // ShadowRoot detected.\n\t    isShadowRoot(node) && node.host || // Fallback.\n\t    getDocumentElement(node)\n\t  );\n\t  return isShadowRoot(result) ? result.host : result;\n\t}\n\tfunction getNearestOverflowAncestor(node) {\n\t  const parentNode = getParentNode(node);\n\t  if (isLastTraversableNode(parentNode)) {\n\t    return node.ownerDocument ? node.ownerDocument.body : node.body;\n\t  }\n\t  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n\t    return parentNode;\n\t  }\n\t  return getNearestOverflowAncestor(parentNode);\n\t}\n\tfunction getOverflowAncestors(node, list, traverseIframes) {\n\t  var _node$ownerDocument2;\n\t  if (list === void 0) {\n\t    list = [];\n\t  }\n\t  if (traverseIframes === void 0) {\n\t    traverseIframes = true;\n\t  }\n\t  const scrollableAncestor = getNearestOverflowAncestor(node);\n\t  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n\t  const win = getWindow(scrollableAncestor);\n\t  if (isBody) {\n\t    const frameElement = getFrameElement(win);\n\t    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n\t  }\n\t  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n\t}\n\tfunction getFrameElement(win) {\n\t  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n\t}\n\tfunction getCssDimensions(element) {\n\t  const css = getComputedStyle(element);\n\t  let width = parseFloat(css.width) || 0;\n\t  let height = parseFloat(css.height) || 0;\n\t  const hasOffset = isHTMLElement(element);\n\t  const offsetWidth = hasOffset ? element.offsetWidth : width;\n\t  const offsetHeight = hasOffset ? element.offsetHeight : height;\n\t  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n\t  if (shouldFallback) {\n\t    width = offsetWidth;\n\t    height = offsetHeight;\n\t  }\n\t  return {\n\t    width,\n\t    height,\n\t    $: shouldFallback\n\t  };\n\t}\n\tfunction unwrapElement(element) {\n\t  return !isElement(element) ? element.contextElement : element;\n\t}\n\tfunction getScale(element) {\n\t  const domElement = unwrapElement(element);\n\t  if (!isHTMLElement(domElement)) {\n\t    return createCoords(1);\n\t  }\n\t  const rect = domElement.getBoundingClientRect();\n\t  const {\n\t    width,\n\t    height,\n\t    $\n\t  } = getCssDimensions(domElement);\n\t  let x = ($ ? round(rect.width) : rect.width) / width;\n\t  let y = ($ ? round(rect.height) : rect.height) / height;\n\t  if (!x || !Number.isFinite(x)) {\n\t    x = 1;\n\t  }\n\t  if (!y || !Number.isFinite(y)) {\n\t    y = 1;\n\t  }\n\t  return {\n\t    x,\n\t    y\n\t  };\n\t}\n\tconst noOffsets = /* @__PURE__ */ createCoords(0);\n\tfunction getVisualOffsets(element) {\n\t  const win = getWindow(element);\n\t  if (!isWebKit() || !win.visualViewport) {\n\t    return noOffsets;\n\t  }\n\t  return {\n\t    x: win.visualViewport.offsetLeft,\n\t    y: win.visualViewport.offsetTop\n\t  };\n\t}\n\tfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n\t  if (isFixed === void 0) {\n\t    isFixed = false;\n\t  }\n\t  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n\t    return false;\n\t  }\n\t  return isFixed;\n\t}\n\tfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n\t  if (includeScale === void 0) {\n\t    includeScale = false;\n\t  }\n\t  if (isFixedStrategy === void 0) {\n\t    isFixedStrategy = false;\n\t  }\n\t  const clientRect = element.getBoundingClientRect();\n\t  const domElement = unwrapElement(element);\n\t  let scale = createCoords(1);\n\t  if (includeScale) {\n\t    if (offsetParent) {\n\t      if (isElement(offsetParent)) {\n\t        scale = getScale(offsetParent);\n\t      }\n\t    } else {\n\t      scale = getScale(element);\n\t    }\n\t  }\n\t  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n\t  let x = (clientRect.left + visualOffsets.x) / scale.x;\n\t  let y = (clientRect.top + visualOffsets.y) / scale.y;\n\t  let width = clientRect.width / scale.x;\n\t  let height = clientRect.height / scale.y;\n\t  if (domElement) {\n\t    const win = getWindow(domElement);\n\t    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n\t    let currentWin = win;\n\t    let currentIFrame = getFrameElement(currentWin);\n\t    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n\t      const iframeScale = getScale(currentIFrame);\n\t      const iframeRect = currentIFrame.getBoundingClientRect();\n\t      const css = getComputedStyle(currentIFrame);\n\t      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n\t      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n\t      x *= iframeScale.x;\n\t      y *= iframeScale.y;\n\t      width *= iframeScale.x;\n\t      height *= iframeScale.y;\n\t      x += left;\n\t      y += top;\n\t      currentWin = getWindow(currentIFrame);\n\t      currentIFrame = getFrameElement(currentWin);\n\t    }\n\t  }\n\t  return rectToClientRect({\n\t    width,\n\t    height,\n\t    x,\n\t    y\n\t  });\n\t}\n\tfunction getWindowScrollBarX(element, rect) {\n\t  const leftScroll = getNodeScroll(element).scrollLeft;\n\t  if (!rect) {\n\t    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n\t  }\n\t  return rect.left + leftScroll;\n\t}\n\tfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n\t  if (ignoreScrollbarX === void 0) {\n\t    ignoreScrollbarX = false;\n\t  }\n\t  const htmlRect = documentElement.getBoundingClientRect();\n\t  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 : (\n\t    // RTL <body> scrollbar.\n\t    getWindowScrollBarX(documentElement, htmlRect)\n\t  ));\n\t  const y = htmlRect.top + scroll.scrollTop;\n\t  return {\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n\t  let {\n\t    elements,\n\t    rect,\n\t    offsetParent,\n\t    strategy\n\t  } = _ref;\n\t  const isFixed = strategy === \"fixed\";\n\t  const documentElement = getDocumentElement(offsetParent);\n\t  const topLayer = elements ? isTopLayer(elements.floating) : false;\n\t  if (offsetParent === documentElement || topLayer && isFixed) {\n\t    return rect;\n\t  }\n\t  let scroll = {\n\t    scrollLeft: 0,\n\t    scrollTop: 0\n\t  };\n\t  let scale = createCoords(1);\n\t  const offsets = createCoords(0);\n\t  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n\t  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n\t    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n\t      scroll = getNodeScroll(offsetParent);\n\t    }\n\t    if (isHTMLElement(offsetParent)) {\n\t      const offsetRect = getBoundingClientRect(offsetParent);\n\t      scale = getScale(offsetParent);\n\t      offsets.x = offsetRect.x + offsetParent.clientLeft;\n\t      offsets.y = offsetRect.y + offsetParent.clientTop;\n\t    }\n\t  }\n\t  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n\t  return {\n\t    width: rect.width * scale.x,\n\t    height: rect.height * scale.y,\n\t    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n\t    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n\t  };\n\t}\n\tfunction getClientRects(element) {\n\t  return Array.from(element.getClientRects());\n\t}\n\tfunction getDocumentRect(element) {\n\t  const html = getDocumentElement(element);\n\t  const scroll = getNodeScroll(element);\n\t  const body = element.ownerDocument.body;\n\t  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n\t  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n\t  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n\t  const y = -scroll.scrollTop;\n\t  if (getComputedStyle(body).direction === \"rtl\") {\n\t    x += max(html.clientWidth, body.clientWidth) - width;\n\t  }\n\t  return {\n\t    width,\n\t    height,\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction getViewportRect(element, strategy) {\n\t  const win = getWindow(element);\n\t  const html = getDocumentElement(element);\n\t  const visualViewport = win.visualViewport;\n\t  let width = html.clientWidth;\n\t  let height = html.clientHeight;\n\t  let x = 0;\n\t  let y = 0;\n\t  if (visualViewport) {\n\t    width = visualViewport.width;\n\t    height = visualViewport.height;\n\t    const visualViewportBased = isWebKit();\n\t    if (!visualViewportBased || visualViewportBased && strategy === \"fixed\") {\n\t      x = visualViewport.offsetLeft;\n\t      y = visualViewport.offsetTop;\n\t    }\n\t  }\n\t  return {\n\t    width,\n\t    height,\n\t    x,\n\t    y\n\t  };\n\t}\n\tconst absoluteOrFixed = /* @__PURE__ */ new Set([\"absolute\", \"fixed\"]);\n\tfunction getInnerBoundingClientRect(element, strategy) {\n\t  const clientRect = getBoundingClientRect(element, true, strategy === \"fixed\");\n\t  const top = clientRect.top + element.clientTop;\n\t  const left = clientRect.left + element.clientLeft;\n\t  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n\t  const width = element.clientWidth * scale.x;\n\t  const height = element.clientHeight * scale.y;\n\t  const x = left * scale.x;\n\t  const y = top * scale.y;\n\t  return {\n\t    width,\n\t    height,\n\t    x,\n\t    y\n\t  };\n\t}\n\tfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n\t  let rect;\n\t  if (clippingAncestor === \"viewport\") {\n\t    rect = getViewportRect(element, strategy);\n\t  } else if (clippingAncestor === \"document\") {\n\t    rect = getDocumentRect(getDocumentElement(element));\n\t  } else if (isElement(clippingAncestor)) {\n\t    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n\t  } else {\n\t    const visualOffsets = getVisualOffsets(element);\n\t    rect = {\n\t      x: clippingAncestor.x - visualOffsets.x,\n\t      y: clippingAncestor.y - visualOffsets.y,\n\t      width: clippingAncestor.width,\n\t      height: clippingAncestor.height\n\t    };\n\t  }\n\t  return rectToClientRect(rect);\n\t}\n\tfunction hasFixedPositionAncestor(element, stopNode) {\n\t  const parentNode = getParentNode(element);\n\t  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n\t    return false;\n\t  }\n\t  return getComputedStyle(parentNode).position === \"fixed\" || hasFixedPositionAncestor(parentNode, stopNode);\n\t}\n\tfunction getClippingElementAncestors(element, cache) {\n\t  const cachedResult = cache.get(element);\n\t  if (cachedResult) {\n\t    return cachedResult;\n\t  }\n\t  let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== \"body\");\n\t  let currentContainingBlockComputedStyle = null;\n\t  const elementIsFixed = getComputedStyle(element).position === \"fixed\";\n\t  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\t  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n\t    const computedStyle = getComputedStyle(currentNode);\n\t    const currentNodeIsContaining = isContainingBlock(currentNode);\n\t    if (!currentNodeIsContaining && computedStyle.position === \"fixed\") {\n\t      currentContainingBlockComputedStyle = null;\n\t    }\n\t    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === \"static\" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n\t    if (shouldDropCurrentNode) {\n\t      result = result.filter((ancestor) => ancestor !== currentNode);\n\t    } else {\n\t      currentContainingBlockComputedStyle = computedStyle;\n\t    }\n\t    currentNode = getParentNode(currentNode);\n\t  }\n\t  cache.set(element, result);\n\t  return result;\n\t}\n\tfunction getClippingRect(_ref) {\n\t  let {\n\t    element,\n\t    boundary,\n\t    rootBoundary,\n\t    strategy\n\t  } = _ref;\n\t  const elementClippingAncestors = boundary === \"clippingAncestors\" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n\t  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n\t  const firstClippingAncestor = clippingAncestors[0];\n\t  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n\t    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n\t    accRect.top = max(rect.top, accRect.top);\n\t    accRect.right = min(rect.right, accRect.right);\n\t    accRect.bottom = min(rect.bottom, accRect.bottom);\n\t    accRect.left = max(rect.left, accRect.left);\n\t    return accRect;\n\t  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n\t  return {\n\t    width: clippingRect.right - clippingRect.left,\n\t    height: clippingRect.bottom - clippingRect.top,\n\t    x: clippingRect.left,\n\t    y: clippingRect.top\n\t  };\n\t}\n\tfunction getDimensions(element) {\n\t  const {\n\t    width,\n\t    height\n\t  } = getCssDimensions(element);\n\t  return {\n\t    width,\n\t    height\n\t  };\n\t}\n\tfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n\t  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n\t  const documentElement = getDocumentElement(offsetParent);\n\t  const isFixed = strategy === \"fixed\";\n\t  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n\t  let scroll = {\n\t    scrollLeft: 0,\n\t    scrollTop: 0\n\t  };\n\t  const offsets = createCoords(0);\n\t  function setLeftRTLScrollbarOffset() {\n\t    offsets.x = getWindowScrollBarX(documentElement);\n\t  }\n\t  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n\t    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n\t      scroll = getNodeScroll(offsetParent);\n\t    }\n\t    if (isOffsetParentAnElement) {\n\t      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n\t      offsets.x = offsetRect.x + offsetParent.clientLeft;\n\t      offsets.y = offsetRect.y + offsetParent.clientTop;\n\t    } else if (documentElement) {\n\t      setLeftRTLScrollbarOffset();\n\t    }\n\t  }\n\t  if (isFixed && !isOffsetParentAnElement && documentElement) {\n\t    setLeftRTLScrollbarOffset();\n\t  }\n\t  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n\t  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n\t  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n\t  return {\n\t    x,\n\t    y,\n\t    width: rect.width,\n\t    height: rect.height\n\t  };\n\t}\n\tfunction isStaticPositioned(element) {\n\t  return getComputedStyle(element).position === \"static\";\n\t}\n\tfunction getTrueOffsetParent(element, polyfill) {\n\t  if (!isHTMLElement(element) || getComputedStyle(element).position === \"fixed\") {\n\t    return null;\n\t  }\n\t  if (polyfill) {\n\t    return polyfill(element);\n\t  }\n\t  let rawOffsetParent = element.offsetParent;\n\t  if (getDocumentElement(element) === rawOffsetParent) {\n\t    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n\t  }\n\t  return rawOffsetParent;\n\t}\n\tfunction getOffsetParent(element, polyfill) {\n\t  const win = getWindow(element);\n\t  if (isTopLayer(element)) {\n\t    return win;\n\t  }\n\t  if (!isHTMLElement(element)) {\n\t    let svgOffsetParent = getParentNode(element);\n\t    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n\t      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n\t        return svgOffsetParent;\n\t      }\n\t      svgOffsetParent = getParentNode(svgOffsetParent);\n\t    }\n\t    return win;\n\t  }\n\t  let offsetParent = getTrueOffsetParent(element, polyfill);\n\t  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n\t    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n\t  }\n\t  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n\t    return win;\n\t  }\n\t  return offsetParent || getContainingBlock(element) || win;\n\t}\n\tconst getElementRects = async function(data) {\n\t  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n\t  const getDimensionsFn = this.getDimensions;\n\t  const floatingDimensions = await getDimensionsFn(data.floating);\n\t  return {\n\t    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n\t    floating: {\n\t      x: 0,\n\t      y: 0,\n\t      width: floatingDimensions.width,\n\t      height: floatingDimensions.height\n\t    }\n\t  };\n\t};\n\tfunction isRTL(element) {\n\t  return getComputedStyle(element).direction === \"rtl\";\n\t}\n\tconst platform = {\n\t  convertOffsetParentRelativeRectToViewportRelativeRect,\n\t  getDocumentElement,\n\t  getClippingRect,\n\t  getOffsetParent,\n\t  getElementRects,\n\t  getClientRects,\n\t  getDimensions,\n\t  getScale,\n\t  isElement,\n\t  isRTL\n\t};\n\tfunction rectsAreEqual(a, b) {\n\t  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n\t}\n\tfunction observeMove(element, onMove) {\n\t  let io = null;\n\t  let timeoutId;\n\t  const root = getDocumentElement(element);\n\t  function cleanup() {\n\t    var _io;\n\t    clearTimeout(timeoutId);\n\t    (_io = io) == null || _io.disconnect();\n\t    io = null;\n\t  }\n\t  function refresh(skip, threshold) {\n\t    if (skip === void 0) {\n\t      skip = false;\n\t    }\n\t    if (threshold === void 0) {\n\t      threshold = 1;\n\t    }\n\t    cleanup();\n\t    const elementRectForRootMargin = element.getBoundingClientRect();\n\t    const {\n\t      left,\n\t      top,\n\t      width,\n\t      height\n\t    } = elementRectForRootMargin;\n\t    if (!skip) {\n\t      onMove();\n\t    }\n\t    if (!width || !height) {\n\t      return;\n\t    }\n\t    const insetTop = floor(top);\n\t    const insetRight = floor(root.clientWidth - (left + width));\n\t    const insetBottom = floor(root.clientHeight - (top + height));\n\t    const insetLeft = floor(left);\n\t    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n\t    const options = {\n\t      rootMargin,\n\t      threshold: max(0, min(1, threshold)) || 1\n\t    };\n\t    let isFirstUpdate = true;\n\t    function handleObserve(entries) {\n\t      const ratio = entries[0].intersectionRatio;\n\t      if (ratio !== threshold) {\n\t        if (!isFirstUpdate) {\n\t          return refresh();\n\t        }\n\t        if (!ratio) {\n\t          timeoutId = setTimeout(() => {\n\t            refresh(false, 1e-7);\n\t          }, 1e3);\n\t        } else {\n\t          refresh(false, ratio);\n\t        }\n\t      }\n\t      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n\t        refresh();\n\t      }\n\t      isFirstUpdate = false;\n\t    }\n\t    try {\n\t      io = new IntersectionObserver(handleObserve, __spreadProps(__spreadValues({}, options), {\n\t        // Handle <iframe>s\n\t        root: root.ownerDocument\n\t      }));\n\t    } catch (_e) {\n\t      io = new IntersectionObserver(handleObserve, options);\n\t    }\n\t    io.observe(element);\n\t  }\n\t  refresh(true);\n\t  return cleanup;\n\t}\n\tfunction autoUpdate(reference, floating, update, options) {\n\t  if (options === void 0) {\n\t    options = {};\n\t  }\n\t  const {\n\t    ancestorScroll = true,\n\t    ancestorResize = true,\n\t    elementResize = typeof ResizeObserver === \"function\",\n\t    layoutShift = typeof IntersectionObserver === \"function\",\n\t    animationFrame = false\n\t  } = options;\n\t  const referenceEl = unwrapElement(reference);\n\t  const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];\n\t  ancestors.forEach((ancestor) => {\n\t    ancestorScroll && ancestor.addEventListener(\"scroll\", update, {\n\t      passive: true\n\t    });\n\t    ancestorResize && ancestor.addEventListener(\"resize\", update);\n\t  });\n\t  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n\t  let reobserveFrame = -1;\n\t  let resizeObserver = null;\n\t  if (elementResize) {\n\t    resizeObserver = new ResizeObserver((_ref) => {\n\t      let [firstEntry] = _ref;\n\t      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n\t        resizeObserver.unobserve(floating);\n\t        cancelAnimationFrame(reobserveFrame);\n\t        reobserveFrame = requestAnimationFrame(() => {\n\t          var _resizeObserver;\n\t          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n\t        });\n\t      }\n\t      update();\n\t    });\n\t    if (referenceEl && !animationFrame) {\n\t      resizeObserver.observe(referenceEl);\n\t    }\n\t    resizeObserver.observe(floating);\n\t  }\n\t  let frameId;\n\t  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\t  if (animationFrame) {\n\t    frameLoop();\n\t  }\n\t  function frameLoop() {\n\t    const nextRefRect = getBoundingClientRect(reference);\n\t    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n\t      update();\n\t    }\n\t    prevRefRect = nextRefRect;\n\t    frameId = requestAnimationFrame(frameLoop);\n\t  }\n\t  update();\n\t  return () => {\n\t    var _resizeObserver2;\n\t    ancestors.forEach((ancestor) => {\n\t      ancestorScroll && ancestor.removeEventListener(\"scroll\", update);\n\t      ancestorResize && ancestor.removeEventListener(\"resize\", update);\n\t    });\n\t    cleanupIo == null || cleanupIo();\n\t    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n\t    resizeObserver = null;\n\t    if (animationFrame) {\n\t      cancelAnimationFrame(frameId);\n\t    }\n\t  };\n\t}\n\tconst offset = offset$1;\n\tconst autoPlacement = autoPlacement$1;\n\tconst shift = shift$1;\n\tconst size = size$1;\n\tconst computePosition = (reference, floating, options) => {\n\t  const cache = /* @__PURE__ */ new Map();\n\t  const mergedOptions = __spreadValues({\n\t    platform\n\t  }, options);\n\t  const platformWithCache = __spreadProps(__spreadValues({}, mergedOptions.platform), {\n\t    _c: cache\n\t  });\n\t  return computePosition$1(reference, floating, __spreadProps(__spreadValues({}, mergedOptions), {\n\t    platform: platformWithCache\n\t  }));\n\t};\n\tconst debounce = (callback, wait) => {\n\t  let timeout;\n\t  return (...args) => {\n\t    const later = () => {\n\t      timeout = null;\n\t      callback.apply(void 0, args);\n\t    };\n\t    clearTimeout(timeout);\n\t    timeout = setTimeout(later, wait);\n\t  };\n\t};\n\tconst marketSelectCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;outline:none;font-weight:var(--field-input-weight);font-size:var(--field-input-size);line-height:var(--field-input-leading);cursor:text}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;cursor:inherit}:host input,:host ::slotted(input){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::slotted(label){cursor:inherit}:host input:focus,:host ::slotted(input:focus),:host textarea:focus,:host ::slotted(textarea:focus){outline:none}:host input::-moz-placeholder,:host textarea::-moz-placeholder{color:var(--field-placeholder-text-color)}:host input::placeholder,:host textarea::placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::-moz-placeholder,:host ::slotted(textarea)::-moz-placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::placeholder,:host ::slotted(textarea)::placeholder{color:var(--field-placeholder-text-color)}:host([size='small']){font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}:host{border-radius:var(--field-border-radius);background-color:var(--field-normal-state-background-color);color:var(--field-normal-state-input-color)}:host::after{content:\"\";position:absolute;inset:0;border-radius:var(--field-border-radius);box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color);pointer-events:none}:host([invalid])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-invalid-validity-border-color)}:host(:hover){background-color:var(--field-hover-state-background-color);color:var(--field-hover-state-input-color)}:host(:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-normal-validity-border-color)}:host([invalid]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-invalid-validity-border-color)}:host([focused]){color:var(--field-focus-state-input-color)}:host([focused])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size)\n        var(--field-focus-state-normal-validity-border-color)}:host([focused][invalid])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size) var(--field-focus-state-invalid-validity-border-color)}:host([readonly]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color)}:host([disabled]){background-color:var(--field-disabled-state-background-color) !important;color:var(--field-disabled-state-input-color) !important;cursor:not-allowed !important}:host([disabled])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-disabled-state-border-color) !important}:host([disabled]) ::slotted(.market-accessory),:host([disabled]) ::slotted(img[slot*=\"accessory\"]),:host([disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([disabled]) ::slotted(div[slot*=\"accessory\"]){--field-disabled-state-accessory-opacity:var(--row-disabled-state-leading-accessory-opacity);opacity:var(--field-disabled-state-accessory-opacity)}:host([value=\"\"]) ::slotted(label){color:var(--field-normal-state-empty-phase-label-color)}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"][autofilled]) ::slotted(label){color:var(--field-normal-state-float-phase-label-color)}:host(:hover) ::slotted(label){color:var(--field-hover-state-empty-phase-label-color)}:host(:not([value=\"\"]):hover) ::slotted(label),:host([value=\"\"][autofilled]:hover) ::slotted(label){color:var(--field-hover-state-float-phase-label-color)}:host([focused]) ::slotted(label){color:var(--field-focus-state-float-phase-label-color)}:host([value=\"\"][disabled]) ::slotted(label){color:var(--field-disabled-state-empty-phase-label-color)}:host(:not([value=\"\"])[disabled]) ::slotted(label),:host([value=\"\"][autofilled][disabled]) ::slotted(label){color:var(--field-disabled-state-float-phase-label-color)}:host{--field-accessory-horizontal-spacing-size:16px;--field-size-small-accessory-horizontal-spacing-size:12px;--field-size-large-image-accessory-outer-spacing-size:12px;--field-size-medium-image-accessory-outer-spacing-size:4px;--field-size-large-button-accessory-outer-spacing-size:12px;--field-size-medium-button-accessory-outer-spacing-size:4px;--field-size-large-tooltip-accessory-horizontal-spacing-size:5px;--field-size-large-tooltip-accessory-vertical-spacing-size:-1px;--field-size-small-tooltip-accessory-horizontal-spacing-size:1px}:host ::slotted([slot=\"leading-accessory\"]){flex-shrink:0;margin-right:var(--field-accessory-horizontal-spacing-size);margin-left:var(--field-accessory-horizontal-spacing-size)}:host ::slotted(.market-accessory[slot=\"leading-accessory\"][size=\"image\"]){margin-left:var(--field-size-large-image-accessory-outer-spacing-size)}:host ::slotted(.market-tooltip[slot=\"leading-accessory\"]){margin:var(--field-size-large-tooltip-accessory-vertical-spacing-size)\n      var(--field-size-large-tooltip-accessory-horizontal-spacing-size)}:host ::slotted(.market-button[slot=\"leading-accessory\"][size=\"small\"]){margin-left:var(--field-size-large-button-accessory-outer-spacing-size)}:host ::slotted([slot=\"trailing-accessory\"]){flex-shrink:0;margin-right:var(--field-accessory-horizontal-spacing-size);margin-left:var(--field-accessory-horizontal-spacing-size)}:host ::slotted(.market-accessory[slot=\"trailing-accessory\"][size=\"image\"]){margin-right:var(--field-size-large-image-accessory-outer-spacing-size)}:host ::slotted(.market-tooltip[slot=\"trailing-accessory\"]){margin:var(--field-size-large-tooltip-accessory-vertical-spacing-size)\n      var(--field-size-large-tooltip-accessory-horizontal-spacing-size)}:host ::slotted(.market-button[slot=\"trailing-accessory\"][size=\"small\"]){margin-right:var(--field-size-large-button-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-accessory[slot=\"leading-accessory\"][size=\"image\"]){margin-left:var(--field-size-medium-image-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-button[slot=\"leading-accessory\"][size=\"small\"]){margin-left:var(--field-size-medium-button-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-accessory[slot=\"trailing-accessory\"][size=\"image\"]){margin-right:var(--field-size-medium-image-accessory-outer-spacing-size)}:host([size='medium']) ::slotted(.market-button[slot=\"trailing-accessory\"][size=\"small\"]){margin-right:var(--field-size-medium-button-accessory-outer-spacing-size)}:host([size='small']) ::slotted([slot=\"leading-accessory\"]),:host([size='small']) ::slotted([slot=\"trailing-accessory\"]){margin-right:var(--field-size-small-accessory-horizontal-spacing-size);margin-left:var(--field-size-small-accessory-horizontal-spacing-size)}:host([size='small']) ::slotted(.market-tooltip[slot=\"leading-accessory\"]),:host([size='small']) ::slotted(.market-tooltip[slot=\"trailing-accessory\"]){margin-right:var(--field-size-small-tooltip-accessory-horizontal-spacing-size);margin-left:var(--field-size-small-tooltip-accessory-horizontal-spacing-size)}:host .label-input-container.has-leading-accessory{padding-left:0 !important;}:host .label-input-container.has-trailing-accessory{padding-right:0 !important;}:host{--field-input-animation-speed:var(--core-animation-enter-transition-moderate-speed-duration);--field-input-label-translate:12px;--field-empty-phase-label-text-size-unitless:16;--field-float-phase-label-text-size-unitless:14;--field-size-medium-float-phase-vertical-padding-size:12px;--field-size-medium-float-phase-horizontal-padding-size:16px;--field-size-small-float-phase-vertical-padding-size:9px;--field-size-small-float-phase-horizontal-padding-size:12px;display:flex;align-items:center}:host .label-input-container,:host([value='']:not([focused]):not([autofilled])) .label-input-container{flex-grow:1;padding:var(--field-float-phase-vertical-padding-size) var(--field-float-phase-horizontal-padding-size)}:host([size='medium']) .label-input-container,:host([size='medium'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-medium-float-phase-vertical-padding-size)\n      var(--field-size-medium-float-phase-horizontal-padding-size)}:host([size='small']) .label-input-container,:host([size='small'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-small-float-phase-vertical-padding-size)\n      var(--field-size-small-float-phase-horizontal-padding-size)}:host ::slotted(label){display:block;min-height:var(--field-empty-phase-label-text-leading);font-weight:var(--field-empty-phase-label-text-weight);font-size:var(--field-empty-phase-label-text-size);line-height:var(--field-empty-phase-label-text-leading);letter-spacing:var(--field-empty-phase-label-text-tracking);transition:all var(--field-input-animation-speed);transform:translateY(var(--field-input-label-translate));transform-origin:0 0}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"]:not([focused])[autofilled]) ::slotted(label),:host([focused]) ::slotted(label){font-weight:var(--field-float-phase-label-text-weight);transform:scale(\n        calc(var(--field-float-phase-label-text-size-unitless) / var(--field-empty-phase-label-text-size-unitless))\n      )}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){opacity:0%}:host([focused]) input,:host([focused]) ::slotted(input),:host([focused]) textarea,:host([focused]) ::slotted(textarea),:host(:not([value=''])) input,:host(:not([value=''])) ::slotted(input),:host(:not([value=''])) textarea,:host(:not([value=''])) ::slotted(textarea){opacity:100%}:host([size='small']) ::slotted(label),:host([size='medium']) ::slotted(label){position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%)}:host([size='small']) input,:host([size='small']) ::slotted(input),:host([size='small']) textarea,:host([size='small']) ::slotted(textarea),:host([size='medium']) input,:host([size='medium']) ::slotted(input),:host([size='medium']) textarea,:host([size='medium']) ::slotted(textarea){opacity:100%}:host{cursor:pointer}:host(:focus-visible){outline:none}.label-input-container{overflow:hidden}.caret{flex-shrink:0;margin-right:var(--field-float-phase-horizontal-padding-size);pointer-events:none;transition:transform var(--field-input-animation-speed)}.caret path{fill:var(--select-caret-color)}:host([aria-expanded=\"true\"]) .caret{transform:rotate(180deg)}.placeholder{overflow:hidden;height:var(--field-input-leading);color:var(--field-placeholder-text-color);font-size:var(--field-input-size);line-height:var(--field-input-leading);text-overflow:ellipsis;white-space:nowrap;visibility:hidden}:host([focused]) .placeholder,:host([size=\"small\"]) .placeholder,:host([size=\"medium\"]) .placeholder{visibility:visible}:host([size=\"small\"]) .placeholder{height:var(--core-type-paragraph-20-leading);font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}::slotted(label){cursor:pointer}::slotted([slot=\"displayed-selection\"]){min-height:0;margin:0}::slotted([slot=\"displayed-selection\"])::before,::slotted([slot=\"displayed-selection\"])::after{display:none}::slotted([slot=\"list\"]){display:none}`;\n\tconst MarketSelectStyle0 = marketSelectCss;\n\tconst UP_DIRECTION = -1;\n\tconst DOWN_DIRECTION = 1;\n\tconst MarketSelect = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketSelectValueDidChange = index.createEvent(this, \"marketSelectValueDidChange\", 7);\n\t    this.marketSelectOpened = index.createEvent(this, \"marketSelectOpened\", 7);\n\t    this.marketSelectClosed = index.createEvent(this, \"marketSelectClosed\", 7);\n\t    this.rowsText = [];\n\t    this.keypresses = [];\n\t    this.debounceDelay = 250;\n\t    this.setFocusOnMatch = debounce(() => {\n\t      const searchString = this.keypresses.join(\"\");\n\t      this.isKeyboardNavigating = true;\n\t      const nextMatch = [\n\t        ...this.rowsText.slice(this.focusedRowIndex + 1),\n\t        ...this.rowsText.slice(0, this.focusedRowIndex + 1)\n\t      ].find((text) => text.startsWith(searchString));\n\t      const matchIndex = this.rowsText.findIndex((text) => {\n\t        return text.startsWith(nextMatch);\n\t      });\n\t      const matchingRow = this.rows[matchIndex];\n\t      if (matchingRow && !matchingRow.disabled) {\n\t        this.focusedRowIndex = matchIndex;\n\t        if (!this.listIsActive && !this.multiselect) {\n\t          this.value = matchingRow.value;\n\t          this.marketSelectValueDidChange.emit({\n\t            value: this.value,\n\t            newSelectedOption: matchingRow,\n\t            // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t            newDeselectedOption: null,\n\t            currentSelectedOptions: [matchingRow]\n\t          });\n\t        }\n\t      }\n\t      this.keypresses = [];\n\t    }, this.debounceDelay);\n\t    this.list = null;\n\t    this.rows = null;\n\t    this.popoverElement = null;\n\t    this.name = void 0;\n\t    this.value = \"\";\n\t    this.size = \"large\";\n\t    this.placeholder = void 0;\n\t    this.readonly = false;\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.invalid = false;\n\t    this.required = false;\n\t    this.multiselect = false;\n\t    this.popoverContainer = void 0;\n\t    this.popoverStrategy = \"absolute\";\n\t    this.listIsActive = false;\n\t    this.focusedRowIndex = -1;\n\t    this.isKeyboardNavigating = false;\n\t    this.hasLeadingAccessory = false;\n\t    this.hasTrailingAccessory = false;\n\t  }\n\t  valueWatcher() {\n\t    this.propagateValue();\n\t  }\n\t  multiselectWatcher() {\n\t    this.list.multiselect = this.multiselect;\n\t  }\n\t  focusedRowIndexWatcher() {\n\t    var _a;\n\t    if (this.rows) {\n\t      const focusedRow = this.rows[this.focusedRowIndex];\n\t      this.rows.forEach((r) => r.classList.remove(\"pseudo-focus\"));\n\t      if (focusedRow && this.isKeyboardNavigating) {\n\t        (_a = this.rows[this.focusedRowIndex]) === null || _a === void 0 ? void 0 : _a.classList.add(\"pseudo-focus\");\n\t        this.ensureRowVisibility(focusedRow);\n\t      }\n\t    }\n\t  }\n\t  ensureRowVisibility(row) {\n\t    if (!this.popoverElement || !row)\n\t      return;\n\t    const rowRect = row.getBoundingClientRect();\n\t    const popoverRect = this.popoverElement.getBoundingClientRect();\n\t    const focusRingBuffer = index$2.ROW_FOCUS_RING_BORDER_SIZE + index$2.ROW_FOCUS_RING_BUFFER_SIZE * 2;\n\t    if (rowRect.top < popoverRect.top + focusRingBuffer) {\n\t      this.popoverElement.scrollTop -= popoverRect.top + focusRingBuffer - rowRect.top;\n\t    } else if (rowRect.bottom > popoverRect.bottom - focusRingBuffer) {\n\t      this.popoverElement.scrollTop += rowRect.bottom - (popoverRect.bottom - focusRingBuffer);\n\t    }\n\t  }\n\t  // Listener for the change event emitted by `market-list`\n\t  handleListSelection({ detail: { currentSelectionValues, currentSelections, newDeselection, newSelection } }) {\n\t    const value = currentSelectionValues.join(\",\");\n\t    this.value = value;\n\t    if (this.multiselect) {\n\t      this.setFocusedRow(newDeselection || newSelection);\n\t    } else {\n\t      this.setFocusedRow(newSelection);\n\t    }\n\t    this.marketSelectValueDidChange.emit({\n\t      value,\n\t      newSelectedOption: newSelection,\n\t      newDeselectedOption: newDeselection,\n\t      currentSelectedOptions: currentSelections\n\t    });\n\t  }\n\t  handleListItemsFiltered() {\n\t    window.requestAnimationFrame(() => {\n\t      if (this.listIsActive) {\n\t        this.updatePopper();\n\t      }\n\t    });\n\t  }\n\t  windowClick(e) {\n\t    var _a;\n\t    if (this.el.contains(e.target) || ((_a = this.popoverElement) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {\n\t      return;\n\t    }\n\t    this.focused = false;\n\t    if (this.listIsActive) {\n\t      this.closeList();\n\t    }\n\t  }\n\t  getValues() {\n\t    if (Array.isArray(this.value)) {\n\t      return new Set(this.value);\n\t    }\n\t    return new Set(this.multiselect ? this.value.split(\",\") : [this.value]);\n\t  }\n\t  getValuesCount() {\n\t    return this.getValues().size;\n\t  }\n\t  /**\n\t   * We search based on the `value` property rather than using querySelector and the `value`\n\t   * attribute (i.e. `market-row[value=${this.value}]`) due to rendering issues we've seen\n\t   * with Ember/Handlebars, where the property may be set before attribute is present.\n\t   * See here for details: https://github.com/squareup/market/issues/2635\n\t   */\n\t  getMatchingRows() {\n\t    if (this.rows === null) {\n\t      return [];\n\t    } else {\n\t      const values = this.getValues();\n\t      return [...this.rows].filter((row) => values.has(row.value));\n\t    }\n\t  }\n\t  get hasMultipleSelections() {\n\t    return this.multiselect && this.getValues().size > 1;\n\t  }\n\t  getMultiselectDisplayValue() {\n\t    const values = this.getValues();\n\t    return values.size > 1 ? `${values.size} selected` : \"\";\n\t  }\n\t  getDisplayedSelectionRow() {\n\t    return this.el.querySelector(`${index$1.getNamespacedTagFor(\"market-row\")}[slot=\"displayed-selection\"]`);\n\t  }\n\t  /**\n\t   * Ensure the passed `value` is reflected in the selected list item and the displayed selection row.\n\t   */\n\t  propagateValue() {\n\t    if (!this.list || !this.rows)\n\t      return;\n\t    const matchingRows = this.getMatchingRows();\n\t    if (matchingRows.length === 0) {\n\t      this.list.value = this.value = \"\";\n\t      this.focusedRowIndex = -1;\n\t    } else {\n\t      this.list.value = this.value;\n\t      this.setFocusedRow(matchingRows[0]);\n\t    }\n\t    this.displaySelection(matchingRows);\n\t  }\n\t  /**\n\t   * Renders the passed row into the displayed selection slot, so it's visible\n\t   * as the current selection in the main \"input\" area of the select.\n\t   */\n\t  displaySelection(selectedRows = []) {\n\t    var _a, _b, _c;\n\t    (_b = (_a = this.getDisplayedSelectionRow()) === null || _a === void 0 ? void 0 : _a.remove) === null || _b === void 0 ? void 0 : _b.call(_a);\n\t    if (selectedRows.length === 1) {\n\t      const clonedRow = selectedRows[0].cloneNode(true);\n\t      clonedRow.interactive = false;\n\t      clonedRow.removeAttribute(\"tabindex\");\n\t      clonedRow.removeAttribute(\"role\");\n\t      clonedRow.removeAttribute(\"id\");\n\t      clonedRow.querySelectorAll(\"[id]\").forEach((el) => el.removeAttribute(\"id\"));\n\t      clonedRow.classList.remove(\"pseudo-focus\");\n\t      clonedRow.setAttribute(\"slot\", \"displayed-selection\");\n\t      clonedRow.size = this.size === \"small\" ? \"small\" : \"medium\";\n\t      this.el.append(clonedRow);\n\t    } else if (selectedRows.length > 1) {\n\t      const multiselectDisplayRow = document.createElement(`${index$1.getNamespacedTagFor(\"market-row\")}`);\n\t      multiselectDisplayRow.setAttribute(\"slot\", \"displayed-selection\");\n\t      multiselectDisplayRow.innerText = `${this.getValuesCount().toLocaleString()} `;\n\t      multiselectDisplayRow.size = this.size === \"small\" ? \"small\" : \"medium\";\n\t      const selectedTranslationSlot = document.createElement(\"slot\");\n\t      selectedTranslationSlot.setAttribute(\"name\", \"selected-translation\");\n\t      const selectedTranslation = this.el.querySelector('[slot=\"selected-translation\"]');\n\t      selectedTranslationSlot.innerHTML = (_c = selectedTranslation === null || selectedTranslation === void 0 ? void 0 : selectedTranslation.innerHTML) !== null && _c !== void 0 ? _c : \"selected\";\n\t      multiselectDisplayRow.appendChild(selectedTranslationSlot);\n\t      if (selectedTranslation) {\n\t        const observer = new MutationObserver(() => {\n\t          selectedTranslationSlot.innerHTML = selectedTranslation === null || selectedTranslation === void 0 ? void 0 : selectedTranslation.innerHTML;\n\t        });\n\t        observer.observe(selectedTranslation, { characterData: true, subtree: true });\n\t      }\n\t      this.el.append(multiselectDisplayRow);\n\t    }\n\t  }\n\t  /**\n\t   * Listens to changes in list content to ensure that if the content is dynamically updated,\n\t   * those changes will be copied to the popover and the displayed-selection row.\n\t   */\n\t  initListObserver() {\n\t    const observer = new MutationObserver(this.onListChange.bind(this));\n\t    observer.observe(this.list, { childList: true, characterData: true, subtree: true });\n\t  }\n\t  onListChange() {\n\t    this.initRows();\n\t    this.propagateValue();\n\t    this.updatePopper();\n\t  }\n\t  /**\n\t   * Record the index of the new selected row for keyboard navigation\n\t   */\n\t  setFocusedRow(row) {\n\t    this.focusedRowIndex = Array.prototype.indexOf.call(this.rows, row);\n\t  }\n\t  /**\n\t   * Opens the select.\n\t   */\n\t  async openList() {\n\t    var _a;\n\t    if (this.listIsActive || !this.popoverElement) {\n\t      return Promise.resolve();\n\t    }\n\t    this.isKeyboardNavigating = false;\n\t    (_a = this.rows) === null || _a === void 0 ? void 0 : _a.forEach((r) => r.classList.remove(\"pseudo-focus\"));\n\t    const container = this.el.closest(this.popoverContainer) || document.body;\n\t    Object.assign(this.popoverElement.style, {\n\t      zIndex: `${maxZIndex.getMaxZIndex(container) + 1}`,\n\t      visibility: \"hidden\"\n\t    });\n\t    this.moveListToPopover();\n\t    container.append(this.popoverElement);\n\t    this.initPopperListeners();\n\t    return new Promise((resolve) => {\n\t      setTimeout(() => {\n\t        this.updatePopper();\n\t        this.popoverElement.style.visibility = \"visible\";\n\t        this.listIsActive = true;\n\t        this.marketSelectOpened.emit();\n\t        resolve();\n\t      }, 50);\n\t    });\n\t  }\n\t  /**\n\t   * Closes the select.\n\t   */\n\t  closeList() {\n\t    if (!this.listIsActive) {\n\t      return Promise.resolve();\n\t    }\n\t    this.popoverElement.remove();\n\t    this.cleanupPopperListeners();\n\t    this.moveListToSelect();\n\t    this.listIsActive = false;\n\t    this.marketSelectClosed.emit();\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Toggles the select open and closed.\n\t   */\n\t  async toggleList() {\n\t    this.listIsActive ? await this.closeList() : await this.openList();\n\t  }\n\t  /* KEYBOARD ACCESSIBILITY */\n\t  // keyboard handler on the trigger (separate from the list)\n\t  handleTriggerKeyDown(ev) {\n\t    switch (ev.key) {\n\t      case \"ArrowDown\":\n\t        this.handleArrowKey(ev, DOWN_DIRECTION);\n\t        break;\n\t      case \"ArrowUp\":\n\t        this.handleArrowKey(ev, UP_DIRECTION);\n\t        break;\n\t      case \" \":\n\t        this.handleSpacebar(ev);\n\t        break;\n\t      case \"Enter\":\n\t        this.handleEnterKey();\n\t        break;\n\t      case \"Escape\":\n\t        this.handleEscape();\n\t        break;\n\t      case \"Tab\":\n\t        this.handleTab(ev);\n\t        break;\n\t      case \"Home\":\n\t        this.handleHomeKey(ev);\n\t        break;\n\t      case \"End\":\n\t        this.handleEndKey(ev);\n\t        break;\n\t      default:\n\t        this.typeaheadHandler(ev);\n\t        break;\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t  /**\n\t   * NOTE: market-list has its own internal keyboard functionality,\n\t   * so we only handle the key presses while the parent select is focused.\n\t   *\n\t   * - if the list is open:\n\t   *   - update the selected row to the next or previous row depending on the arrow direction\n\t   * - if the list is closed:\n\t   *   - open the list\n\t   */\n\t  async handleArrowKey(ev, direction) {\n\t    ev.preventDefault();\n\t    this.isKeyboardNavigating = true;\n\t    if (this.listIsActive) {\n\t      for (let i = this.focusedRowIndex + direction; i >= 0 && i < this.rows.length; i += direction) {\n\t        if (!this.rows[i].disabled) {\n\t          this.focusedRowIndex = i;\n\t          break;\n\t        }\n\t      }\n\t    } else {\n\t      await this.openList();\n\t    }\n\t  }\n\t  /**\n\t   * - if the list is open:\n\t   *   - close it\n\t   * - if the list is closed:\n\t   *   - open the list\n\t   *   - if there is a current selection, focus it\n\t   */\n\t  async handleSpacebar(ev) {\n\t    var _a;\n\t    ev.preventDefault();\n\t    if (this.listIsActive) {\n\t      (_a = this.rows[this.focusedRowIndex]) === null || _a === void 0 ? void 0 : _a.toggle();\n\t    } else {\n\t      await this.openList();\n\t    }\n\t  }\n\t  /**\n\t   * when the list is closed, invoke implicit submission\n\t   */\n\t  handleEnterKey() {\n\t    var _a;\n\t    if (this.listIsActive) {\n\t      (_a = this.rows[this.focusedRowIndex]) === null || _a === void 0 ? void 0 : _a.select();\n\t      this.closeList();\n\t    } else {\n\t      forms.submitFormImplicitly(this.el);\n\t    }\n\t  }\n\t  /*\n\t  - when the list is open, close it\n\t  */\n\t  handleEscape() {\n\t    if (this.listIsActive) {\n\t      this.closeList();\n\t    }\n\t  }\n\t  /*\n\t  - when the list is open, suppress tab navigation\n\t  - when the list is closed, allow tab navigation and remove focus\n\t  */\n\t  handleTab(ev) {\n\t    if (this.listIsActive) {\n\t      ev.preventDefault();\n\t    } else {\n\t      this.focused = false;\n\t    }\n\t  }\n\t  // On Mac, use Fn-Left as \"Home\"\n\t  handleHomeKey(ev) {\n\t    if (this.listIsActive) {\n\t      ev.preventDefault();\n\t      this.isKeyboardNavigating = true;\n\t      this.focusedRowIndex = 0;\n\t    }\n\t  }\n\t  // On Mac, use Fn-Right as \"End\"\n\t  handleEndKey(ev) {\n\t    if (this.listIsActive) {\n\t      ev.preventDefault();\n\t      this.isKeyboardNavigating = true;\n\t      this.focusedRowIndex = this.rows.length - 1;\n\t    }\n\t  }\n\t  // keyboard handler on the list (separate from the trigger)\n\t  handleListKeyDown(ev) {\n\t    switch (ev.key) {\n\t      case \"Enter\":\n\t        this.handleListEnter();\n\t        break;\n\t      case \"Escape\":\n\t        this.handleEscape();\n\t        break;\n\t      case \"Tab\":\n\t        this.handleTab(ev);\n\t        break;\n\t      case \" \":\n\t        this.handleListSpacebar(ev);\n\t        break;\n\t      default:\n\t        this.typeaheadHandler(ev);\n\t        break;\n\t    }\n\t    ev.stopPropagation();\n\t  }\n\t  /**\n\t   * market-list handles selection functionality internally\n\t   * just need to close the list if single select\n\t   */\n\t  handleListSpacebar(ev) {\n\t    if (this.multiselect || ev.target.hasAttribute(\"slot\", \"search\")) {\n\t      return;\n\t    }\n\t    ev.preventDefault();\n\t    this.closeList();\n\t    this.el.focus();\n\t  }\n\t  /**\n\t   * market-list handles selection functionality internally\n\t   * just need to close the list if single select\n\t   */\n\t  handleListEnter() {\n\t    if (!this.multiselect) {\n\t      this.closeList();\n\t      this.el.focus();\n\t    }\n\t  }\n\t  typeaheadHandler(ev) {\n\t    var _a;\n\t    if ((_a = this.list) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"has-search\")) {\n\t      return;\n\t    }\n\t    if (ev.key.length > 1 || ev.key.toUpperCase() === ev.key.toLowerCase()) {\n\t      return;\n\t    }\n\t    this.storeKeypresses(ev);\n\t    this.setFocusOnMatch();\n\t  }\n\t  storeKeypresses(ev) {\n\t    this.keypresses = [...this.keypresses, ev.key];\n\t  }\n\t  /* EVENT HANDLING */\n\t  handleFocus() {\n\t    if (this.readonly || this.disabled) {\n\t      return;\n\t    }\n\t    this.focused = true;\n\t  }\n\t  handleTriggerClick(ev) {\n\t    if (ev.target.tagName.toLowerCase() === index$1.getNamespacedTagFor(\"market-tooltip\")) {\n\t      return;\n\t    }\n\t    if (this.readonly || this.disabled) {\n\t      return;\n\t    }\n\t    this.toggleList();\n\t  }\n\t  handleListClick() {\n\t    if (!this.multiselect) {\n\t      this.closeList();\n\t      this.el.focus();\n\t    }\n\t  }\n\t  initPopperListeners() {\n\t    const { el, popoverElement, updatePopper } = this;\n\t    this.cleanupPopperListeners = autoUpdate(el, popoverElement, updatePopper.bind(this));\n\t  }\n\t  updatePopper() {\n\t    const { el, popoverElement, popoverStrategy } = this;\n\t    const MARGIN_OFFSET = 8;\n\t    const MAX_HEIGHT = 464;\n\t    computePosition(el, popoverElement, {\n\t      strategy: popoverStrategy,\n\t      middleware: [\n\t        offset(MARGIN_OFFSET),\n\t        autoPlacement({\n\t          allowedPlacements: [\"top\", \"bottom\"]\n\t        }),\n\t        size({\n\t          apply({ rects, availableHeight }) {\n\t            Object.assign(popoverElement.style, {\n\t              width: `${rects.reference.width}px`,\n\t              maxHeight: `${Math.min(availableHeight - MARGIN_OFFSET, MAX_HEIGHT)}px`\n\t            });\n\t          }\n\t        }),\n\t        shift({ padding: MARGIN_OFFSET })\n\t      ]\n\t    }).then(({ x, y }) => {\n\t      Object.assign(popoverElement.style, {\n\t        left: `${x}px`,\n\t        top: `${y}px`\n\t      });\n\t    });\n\t  }\n\t  initPopover() {\n\t    this.popoverElement = this.popoverElement || document.createElement(index$1.getNamespacedTagFor(\"market-popover\"));\n\t    this.popoverElement.id = this.popoverId;\n\t    this.popoverElement.style.position = this.popoverStrategy;\n\t  }\n\t  initList() {\n\t    this.list = this.el.querySelector('[slot=\"list\"]');\n\t    this.list.interactive = true;\n\t    this.list.multiselect = this.multiselect;\n\t    this.list.addEventListener(\"marketListSelectionsDidChange\", this.handleListSelection.bind(this));\n\t    this.list.addEventListener(\"marketListItemsFiltered\", this.handleListItemsFiltered.bind(this));\n\t    this.list.addEventListener(\"keydown\", this.handleListKeyDown.bind(this));\n\t    this.list.addEventListener(\"click\", this.handleListClick.bind(this));\n\t  }\n\t  initRows() {\n\t    this.rows = this.list.querySelectorAll(`${index$1.getNamespacedTagFor(\"market-row\")}`);\n\t    this.rows.forEach((row) => {\n\t      if (!row.id) {\n\t        row.id = `market-row-${v4.v4()}`;\n\t      }\n\t    });\n\t    this.rowsText = [...this.rows].map((row) => {\n\t      const text = row.textContent;\n\t      return text ? text.trim().toLowerCase() : \"\";\n\t    }).filter((text) => text !== \"\");\n\t  }\n\t  moveListToPopover() {\n\t    this.list.removeAttribute(\"slot\");\n\t    this.popoverElement.append(this.list);\n\t  }\n\t  moveListToSelect() {\n\t    this.list.setAttribute(\"slot\", \"list\");\n\t    this.el.append(this.list);\n\t  }\n\t  /* COMPONENT LIFECYCLE EVENTS AND HELPERS */\n\t  registerSlottedAccessories() {\n\t    const leadingAccessory = [...this.el.children].filter(function(child) {\n\t      return child.matches('[slot=\"leading-accessory\"]');\n\t    });\n\t    const trailingAccessory = [...this.el.children].filter(function(child) {\n\t      return child.matches('[slot=\"trailing-accessory\"]');\n\t    });\n\t    this.hasLeadingAccessory = leadingAccessory.length > 0;\n\t    this.hasTrailingAccessory = trailingAccessory.length > 0;\n\t  }\n\t  componentWillLoad() {\n\t    this.registerSlottedAccessories();\n\t    this.popoverId = this.popoverId || `popover-${v4.v4()}`;\n\t  }\n\t  componentDidLoad() {\n\t    this.initList();\n\t    this.initRows();\n\t    this.initPopover();\n\t    this.initListObserver();\n\t    this.propagateValue();\n\t  }\n\t  componentWillRender() {\n\t    const { listIsActive, list } = this;\n\t    if (list && listIsActive) {\n\t      list.removeAttribute(\"slot\");\n\t    }\n\t  }\n\t  disconnectedCallback() {\n\t    this.closeList();\n\t  }\n\t  render() {\n\t    const tabindex = this.disabled ? null : \"0\";\n\t    return index.h(index.Host, { key: \"0a598ff23c4d7f9641f0a9a2dee86ec509c446c8\", class: \"market-select\", role: \"combobox\", \"aria-label\": aria.getTextInputAriaLabel(this.el), \"aria-expanded\": this.listIsActive.toString(), \"aria-controls\": this.popoverId, \"aria-activedescendant\": this.focusedRowIndex > -1 ? this.rows[this.focusedRowIndex].id : null, \"aria-required\": this.required.toString(), tabindex, onClick: (e) => {\n\t      this.handleTriggerClick(e);\n\t    }, onFocus: () => {\n\t      this.handleFocus();\n\t    }, onKeyDown: (e) => {\n\t      this.handleTriggerKeyDown(e);\n\t    } }, index.h(\"slot\", { key: \"ddd8cf54b0cb6f83fc8c91374dec4d02cae17d85\", name: \"leading-accessory\", onSlotchange: () => this.registerSlottedAccessories() }), index.h(\"div\", { key: \"a68f84cc339280f8a3d3d04f3d57ae117b3ef902\", class: classnames.classNames(\"label-input-container\", {\n\t      \"has-leading-accessory\": this.hasLeadingAccessory,\n\t      \"has-trailing-accessory\": this.hasTrailingAccessory\n\t    }) }, index.h(\"slot\", { key: \"d4688c2fe58a07133482135f40fea1715a5a47df\" }), index.h(\"slot\", { key: \"8df6ca6a1d7952e6ab72eb08cf2500d7086c909a\", name: \"displayed-selection\" }, index.h(\"div\", { key: \"a94bbe9bdba35a62a5c66d1b61b8168492f45357\", class: \"placeholder\" }, this.placeholder))), index.h(\"slot\", { key: \"71f03eb85be88e2a3b389e6668c9c1a1387d8256\", name: \"list\" }), index.h(\"slot\", { key: \"820cc50af76a8da353e8a2d614304020165d9444\", name: \"trailing-accessory\", onSlotchange: () => this.registerSlottedAccessories() }), index.h(\"svg\", { key: \"65d5f89e55825f5d5b85f5fa63d7718bc55daa45\", class: \"caret\", width: \"14\", height: \"8\", viewBox: \"0 0 14 8\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"365090c31caa002328fd0cf928bebc039dc1ff51\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M7.70715 7.70711C7.31663 8.09763 6.68346 8.09763 6.29294 7.70711L0.29294 1.70711L1.70715 0.292892L7.00005 5.58579L12.2929 0.292893L13.7072 1.70711L7.70715 7.70711Z\", fill: \"black\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"valueWatcher\"],\n\t      \"multiselect\": [\"multiselectWatcher\"],\n\t      \"focusedRowIndex\": [\"focusedRowIndexWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketSelect.style = MarketSelectStyle0;\n\tmarketSelect_cjs_entry.market_select = MarketSelect;\n\treturn marketSelect_cjs_entry;\n}\n\nvar marketSheet_cjs_entry = {};\n\nvar hasRequiredMarketSheet_cjs_entry;\n\nfunction requireMarketSheet_cjs_entry () {\n\tif (hasRequiredMarketSheet_cjs_entry) return marketSheet_cjs_entry;\n\thasRequiredMarketSheet_cjs_entry = 1;\n\tObject.defineProperty(marketSheet_cjs_entry, \"__esModule\", { value: true });\n\tconst index$1 = requireIndex37364565();\n\tconst index = requireIndexC43effe9();\n\tconst utils = requireUtils608a13a9();\n\tconst focusTrap = requireFocusTrapD7750c92();\n\tconst throttle = requireThrottle88e2e29a();\n\tconst identity = requireIdentity8189b2e1();\n\tconst _overRest = require_overRest15f291dd();\n\trequireIsObject7dcf0083();\n\trequireIsSymbolFbd13c73();\n\trequire_getNative666f22b9();\n\tfunction baseRest(func, start) {\n\t  return _overRest.setToString(_overRest.overRest(func, start, identity.identity), func + \"\");\n\t}\n\tvar FUNC_ERROR_TEXT = \"Expected a function\";\n\tfunction baseDelay(func, wait, args) {\n\t  if (typeof func != \"function\") {\n\t    throw new TypeError(FUNC_ERROR_TEXT);\n\t  }\n\t  return setTimeout(function() {\n\t    func.apply(void 0, args);\n\t  }, wait);\n\t}\n\tvar delay = baseRest(function(func, wait, args) {\n\t  return baseDelay(func, throttle.toNumber(wait) || 0, args);\n\t});\n\tconst delay$1 = delay;\n\tconst compressDefaults = { threshold: 0, linearRatio: 1, quadraticRatio: 1, invert: false };\n\tfunction compress(input, options = {}) {\n\t  const { quadraticRatio, linearRatio, threshold, invert } = Object.assign({}, compressDefaults, options);\n\t  const inverter = invert ? -1 : 1;\n\t  if (input * inverter < threshold * inverter) {\n\t    return input;\n\t  }\n\t  const inputDelta = (input - threshold) * inverter;\n\t  let outputDelta = (inputDelta + 1) ** quadraticRatio - 1;\n\t  outputDelta = outputDelta * linearRatio;\n\t  return threshold + outputDelta * inverter;\n\t}\n\tfunction lerp(a, b, alpha) {\n\t  return a + alpha * (b - a);\n\t}\n\tfunction getDelta(startCoords, endCoords) {\n\t  return {\n\t    x: endCoords.x - startCoords.x,\n\t    y: endCoords.y - startCoords.y\n\t  };\n\t}\n\tfunction magnitude(delta) {\n\t  return (delta.x ** 2 + delta.y ** 2) ** 0.5;\n\t}\n\tconst marketSheetCss = ':root{--animation-infinite-duration:1s;--animation-infinite-iteration-count:infinite;--animation-infinite-timing-function:linear}@keyframes market-popup{from{opacity:0%;transform:scale(0.9, 0.9)}to{opacity:100%;transform:scale(1, 1)}}@keyframes market-popdown{from{opacity:100%;transform:scale(1, 1)}to{opacity:0%;transform:scale(0.9, 0.9)}}@keyframes market-slideup{from{opacity:0%;transform:translateY(80vh)}to{opacity:100%;transform:translateY(0)}}@keyframes market-slidedown{from{opacity:100%;transform:translateY(0)}to{opacity:0%;transform:translateY(80vh)}}@keyframes market-slide-left-enter{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes market-slide-left-exit{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes market-fade-in{from{opacity:0%}to{opacity:100%}}@keyframes market-fade-out{from{opacity:100%}to{opacity:0%}}@keyframes market-file-upload-loading-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-activity-indicator-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes market-input-autofill-start{from{}to{}}@keyframes market-input-autofill-cancel{from{}to{}}@keyframes market-input-search-compact-enter{from{}to{}}@keyframes market-input-search-compact-exit{from{}to{}}:host{display:flex;flex-direction:column;justify-content:stretch;overflow:hidden}:host ::slotted(main),:host ::slotted(.main){flex:0 1 100%;overflow-y:auto;height:100%}:host ::slotted(.market-header){margin-bottom:var(--core-metrics-spacing-300);padding-top:0}:host ::slotted(.market-footer){padding-bottom:0}:host{--handle-whitespace:calc(var(--modal-sheet-handle-padding-top-size) + var(--modal-sheet-handle-padding-bottom-size));--handle-area-height:calc(var(--handle-whitespace) + var(--modal-sheet-handle-height));--max-width-padding:var(--modal-sheet-regular-horizontal-size-class-horizontal-padding);--min-width-padding:var(--modal-sheet-compact-horizontal-size-class-horizontal-padding);--padding-width:clamp(var(--min-width-padding), calc(50% - 200px), var(--max-width-padding));--padding-height:var(--modal-sheet-regular-vertical-size-class-vertical-padding);position:fixed;top:calc(100vh + var(--handle-area-height));bottom:auto;left:50%;overflow:visible;box-sizing:border-box;width:100%;max-width:calc(400px + calc(var(--max-width-padding) + var(--max-width-padding)));max-height:calc(100% - var(--handle-area-height));padding-top:var(--padding-height);border-radius:var(--modal-sheet-border-radius) var(--modal-sheet-border-radius) 0 0;background-color:var(--modal-sheet-background-color);opacity:0%;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:top var(--core-animation-enter-transition-moderate-speed-duration),\\n    opacity var(--core-animation-enter-transition-moderate-speed-duration);transform:translate(-50%, 0)}:host([state=\"closed\"]){top:calc(100vh + var(--handle-area-height));opacity:0%;transition:top var(--core-animation-exit-transition-moderate-speed-duration),\\n      opacity var(--core-animation-exit-transition-moderate-speed-duration)}:host([state=\"partial-open\"]){opacity:100%}:host([state=\"full-open\"]){opacity:100%}:host([dragging]){transition:opacity var(--core-animation-enter-transition-moderate-speed-duration)}:host([tapdisabled]){pointer-events:none}:host ::slotted([slot=\"header\"]){padding-right:var(--padding-width);padding-left:var(--padding-width)}:host::after{content:\"\";position:absolute;top:100%;display:block;width:inherit;max-width:inherit;height:100vh;background-color:inherit}.handle{position:fixed;bottom:calc(100% + var(--modal-sheet-handle-padding-bottom-size));left:50%;display:block;width:var(--modal-sheet-handle-width);height:var(--modal-sheet-handle-height);border:none;border-radius:var(--modal-sheet-border-radius);background-color:var(--modal-sheet-handle-background-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;transform:translate(-50%, 0)}.handle::before{content:\"\";position:absolute;inset:calc(var(--modal-sheet-handle-padding-bottom-size) * -1)}.handle:focus{outline:var(--button-focus-ring-border-size) solid var(--button-focus-ring-color)}.main{overflow-x:hidden;overflow-y:auto;padding-right:var(--padding-width);padding-bottom:var(--padding-height);padding-left:var(--padding-width);overscroll-behavior:contain}.main[dragging]{overflow-y:hidden}';\n\tconst MarketSheetStyle0 = marketSheetCss;\n\tconst TOP_GAP = index.MODAL_SHEET_HANDLE_HEIGHT + index.MODAL_SHEET_HANDLE_PADDING_BOTTOM_SIZE + index.MODAL_SHEET_HANDLE_PADDING_TOP_SIZE;\n\tconst SWIPE_DISTANCE = 0.12;\n\tconst SWIPE_WINDOW = 250;\n\tconst TAP_DISABLE_DISTANCE = 0.01;\n\tconst MIN_DRAG_COMPRESSION_RATIO = 0.8;\n\tconst MAX_DRAG_COMPRESSION_RATIO = 0.55;\n\tconst RESIZE_DEBOUNCE_DURATION = 16;\n\tconst MarketSheet = class {\n\t  constructor(hostRef) {\n\t    index$1.registerInstance(this, hostRef);\n\t    this.marketDialogLoaded = index$1.createEvent(this, \"marketDialogLoaded\", 7);\n\t    this.marketDialogDismissed = index$1.createEvent(this, \"marketDialogDismissed\", 7);\n\t    this.marketDialogDidDismiss = index$1.createEvent(this, \"marketDialogDidDismiss\", 7);\n\t    this.type = \"sheet\";\n\t    this.boundOnDragMove = this.onDragMove.bind(this);\n\t    this.boundOnDragEnd = this.onDragEnd.bind(this);\n\t    this.boundOnScrollDrag = this.onScrollDrag.bind(this);\n\t    this.hidden = false;\n\t    this.dialogID = void 0;\n\t    this.openMode = \"partial\";\n\t    this.animationEnterDuration = index.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.animationExitDuration = index.CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION;\n\t    this.disableFocus = false;\n\t    this.closeHandleAriaLabel = \"Close\";\n\t  }\n\t  /* eslint-disable @typescript-eslint/require-await */\n\t  /**\n\t   * Activates the focus trap\n\t   * @param {Object} [options] [focus-trap `.createFocusTrap` options](https://github.com/focus-trap/focus-trap#createoptions)\n\t   * @param {Object} [activateOptions] [focus-trap `.activate` options](https://github.com/focus-trap/focus-trap#trapactivate)\n\t   */\n\t  async activateFocusTrap(options, activateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.activate(activateOptions);\n\t      if (this.disableFocus) {\n\t        this.disableFocus = false;\n\t      }\n\t    } else {\n\t      this.focusTrap = focusTrap.createAndActivateFocusTrap({\n\t        activateOptions,\n\t        el: this.el,\n\t        options: Object.assign(Object.assign({}, options), { initialFocus: false })\n\t      });\n\t    }\n\t    this.focusTrapActivateOptions = activateOptions || {};\n\t  }\n\t  /**\n\t   * Deactivates the focus trap\n\t   * @param {Object} [deactivateOptions] [focus-trap `.deactivate` options](https://github.com/focus-trap/focus-trap#trapdeactivate)\n\t   */\n\t  async deactivateFocusTrap(deactivateOptions) {\n\t    if (this.focusTrap) {\n\t      this.focusTrap.deactivate(deactivateOptions);\n\t      this.focusTrap = void 0;\n\t    }\n\t  }\n\t  /**\n\t   * Emits the dismiss event\n\t   * The parent context will handle actually removing elements from the DOM,\n\t   * All the sheet needs to do it emit an event so actually closing it can be\n\t   * some other elements problem\n\t   */\n\t  async dismiss(options) {\n\t    const { defaultPrevented } = this.marketDialogDismissed.emit({\n\t      dialog: this.el,\n\t      type: this.type,\n\t      origin: (options === null || options === void 0 ? void 0 : options.origin) || this.el\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.hidden = true;\n\t      await new Promise((resolve) => setTimeout(resolve, index.CORE_ANIMATION_EXIT_TRANSITION_MODERATE_SPEED_DURATION));\n\t      this.marketDialogDidDismiss.emit({\n\t        dialog: this.el,\n\t        type: this.type,\n\t        origin: this.el\n\t      });\n\t    }\n\t  }\n\t  /* eslint-enable @typescript-eslint/require-await */\n\t  // Given a desired state, we update our actual state according to the open mode.\n\t  // e.g. \"fully opening\" a sheet in partial open mode will result in a partial-open state.\n\t  setState(state) {\n\t    let targetState = state;\n\t    if (targetState !== \"closed\" && this.openMode !== \"dynamic\") {\n\t      targetState = `${this.openMode}-open`;\n\t    }\n\t    this.el.setAttribute(\"state\", targetState);\n\t    this.resetTopByState();\n\t  }\n\t  // Calculate the `top` value for the sheet according to the state.\n\t  resetTopByState() {\n\t    var _a, _b, _c;\n\t    this.calculateTopBoundary();\n\t    this.el.style.paddingBottom = \"0\";\n\t    const state = this.el.getAttribute(\"state\");\n\t    const clientHeight = this.el.clientHeight;\n\t    if (state === \"closed\") {\n\t      this.el.style.removeProperty(\"top\");\n\t    } else if (clientHeight + TOP_GAP >= window.innerHeight || state === \"full-open\") {\n\t      this.el.style.top = `${TOP_GAP + (((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.offsetTop) || 0)}px`;\n\t    } else {\n\t      this.el.style.top = `calc(100% - ${clientHeight}px)`;\n\t    }\n\t    this.el.style.paddingBottom = ((_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.offsetTop) ? `${(_c = window.visualViewport) === null || _c === void 0 ? void 0 : _c.offsetTop}px` : \"0\";\n\t  }\n\t  // Calculate the highest top value allowed by the open mode.\n\t  // Dragging past this boundary will experience resitance.\n\t  // The closer the top boundary is to the top of the screen, the more resistance.\n\t  calculateTopBoundary() {\n\t    this.topBoundary = this.openMode === \"partial\" ? window.innerHeight - this.el.clientHeight : TOP_GAP;\n\t    this.compressionRatio = lerp(MAX_DRAG_COMPRESSION_RATIO, MIN_DRAG_COMPRESSION_RATIO, this.topBoundary / window.innerHeight);\n\t  }\n\t  setTop(top) {\n\t    const newTop = compress(top, { threshold: this.topBoundary, quadraticRatio: this.compressionRatio, invert: true });\n\t    this.el.style.top = `${newTop}px`;\n\t    return newTop;\n\t  }\n\t  onDragStart(e) {\n\t    var _a;\n\t    if (!utils.isTouchEvent(e) && e.button !== 0) {\n\t      return;\n\t    }\n\t    if ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.offsetTop) {\n\t      if (e.target === document.activeElement) {\n\t        return;\n\t      }\n\t      document.activeElement.blur();\n\t      e.target.click();\n\t      return;\n\t    }\n\t    const { top } = this.el.getBoundingClientRect();\n\t    this.dragStartTop = top;\n\t    this.el.setAttribute(\"dragging\", \"\");\n\t    this.calculateTopBoundary();\n\t    const newTop = this.setTop(top);\n\t    const eventCoords = utils.getCoordsFromEvent(e);\n\t    this.dragEventStack = [[e.timeStamp, newTop]];\n\t    this.touchStartCoords = eventCoords;\n\t    this.dragDelta = { x: 0, y: 0 };\n\t    const { boundOnDragMove, boundOnDragEnd } = this;\n\t    document.addEventListener(\"mousemove\", boundOnDragMove);\n\t    document.addEventListener(\"mouseup\", boundOnDragEnd);\n\t    document.addEventListener(\"touchmove\", boundOnDragMove);\n\t    document.addEventListener(\"touchend\", boundOnDragEnd);\n\t  }\n\t  onDragMove(e) {\n\t    const eventCoords = utils.getCoordsFromEvent(e);\n\t    this.dragDelta = getDelta(this.touchStartCoords, eventCoords);\n\t    if (!this.el.hasAttribute(\"tapdisabled\") && magnitude(this.dragDelta) / window.innerHeight > TAP_DISABLE_DISTANCE) {\n\t      this.el.setAttribute(\"tapdisabled\", \"\");\n\t    }\n\t    const newTop = this.setTop(this.dragStartTop + this.dragDelta.y);\n\t    this.dragEventStack.push([e.timeStamp, newTop]);\n\t    this.pruneStack(e.timeStamp);\n\t  }\n\t  // When we end drag we need to calculate what gesture was performed and update the state accordingly.\n\t  // There are two categories of gesture: 'swipe' and 'drop'. If the gesture ends with movement that exceeds\n\t  // the SWIPE_DISTANCE within the SWIPE_WINDOW, then the gesture is a 'swipe', otherwise it is a 'drop.'\n\t  // A 'swipe' up always sets the sheet to its maximally open mode, while a swipe down closes it.\n\t  // A 'drop' sets the state according to where on the page the sheet was released (e.g) releasing the sheet\n\t  // near the bottom of the screen will close it.\n\t  onDragEnd(e) {\n\t    const eventCoords = utils.getCoordsFromEvent(e);\n\t    this.dragDelta = getDelta(this.touchStartCoords, eventCoords);\n\t    const finalTop = this.dragStartTop + this.dragDelta.y;\n\t    const newTop = this.setTop(finalTop);\n\t    const naturalTop = this.openMode === \"full\" ? TOP_GAP : window.innerHeight - this.el.clientHeight;\n\t    const halfwayBreakpoint = window.innerHeight / 2;\n\t    const bottomDropBreakpoint = lerp(window.innerHeight, naturalTop, 0.6);\n\t    const topDropBreakpoint = lerp(TOP_GAP, naturalTop, 0.6);\n\t    const minSwipeDistance = SWIPE_DISTANCE * window.innerHeight;\n\t    this.dragEventStack.push([e.timeStamp, newTop]);\n\t    const gestureDelta = this.getGestureDelta(e, minSwipeDistance);\n\t    if (gestureDelta > minSwipeDistance) {\n\t      this.dismiss();\n\t    } else if (gestureDelta < -minSwipeDistance) {\n\t      this.setState(\"full-open\");\n\t    } else if (finalTop > halfwayBreakpoint && finalTop > bottomDropBreakpoint) {\n\t      this.dismiss();\n\t    } else if (finalTop < topDropBreakpoint) {\n\t      this.setState(\"full-open\");\n\t    } else {\n\t      this.setState(\"partial-open\");\n\t    }\n\t    this.cleanupDragging();\n\t  }\n\t  // When we start a touch within the scrollable part of the sheet we set up a listener\n\t  // to track this move.\n\t  onScrollStart() {\n\t    this.scrollStart = this.mainContent.scrollTop;\n\t    document.addEventListener(\"touchmove\", this.boundOnScrollDrag, { passive: true });\n\t  }\n\t  // When we get our first touch move event (after touching within the scrollable area)\n\t  // we calculate whether this move will result in scrolling within the sheet. If so we disable\n\t  // the drag event handling for the rest of the touch move and let the browser handle scrolling.\n\t  // If the move won't result in scrolling (i.e. we've alreadry reached the end of the scrollable area)\n\t  // then instead we disable scrolling until the touch move completes, allowing the drag event\n\t  // handlers to operate as normal.\n\t  onScrollDrag(e) {\n\t    const maxScroll = this.mainContent.scrollHeight - this.mainContent.clientHeight;\n\t    const dragCoords = utils.getCoordsFromEvent(e);\n\t    const scrollDelta = getDelta(this.touchStartCoords, dragCoords);\n\t    const scrollTarget = this.scrollStart - scrollDelta.y;\n\t    const { boundOnScrollDrag, mainContent } = this;\n\t    if (scrollTarget >= 0 && scrollTarget <= maxScroll) {\n\t      e.stopImmediatePropagation();\n\t      this.cleanupDragging();\n\t    } else {\n\t      mainContent.setAttribute(\"dragging\", \"\");\n\t    }\n\t    document.removeEventListener(\"touchmove\", boundOnScrollDrag);\n\t  }\n\t  // Remove expired events from the gesutre tracking stack.\n\t  pruneStack(timeStamp) {\n\t    while (this.dragEventStack.length > 0 && this.dragEventStack[0][0] < timeStamp - SWIPE_WINDOW) {\n\t      this.dragEventStack.shift();\n\t    }\n\t  }\n\t  // 'Replay' events from our gesture tracking stack until we reach total movement\n\t  // that exceeds the minSwipeDistance threshhold (indicating a 'swipe' rather than a 'drop').\n\t  // This means the most recent movement will be considered first, and so if the gesture ends in a\n\t  // swipe this will be detected regardless of the total delta of the gesture.\n\t  // (e.g. the sheet is dragged downward before ending with a swipe up will register as a swipe up\n\t  // even if the released position of the sheet is below its starting position.\n\t  getGestureDelta(e, minSwipeDistance) {\n\t    var _a, _b;\n\t    let gestureDelta = 0;\n\t    let currentTop = (_a = this.dragEventStack.pop()) === null || _a === void 0 ? void 0 : _a[1];\n\t    this.pruneStack(e.timeStamp);\n\t    while (this.dragEventStack.length > 0 && currentTop) {\n\t      const previousTop = (_b = this.dragEventStack.pop()) === null || _b === void 0 ? void 0 : _b[1];\n\t      const updateDelta = (currentTop || 0) - (previousTop || 0);\n\t      gestureDelta += updateDelta;\n\t      currentTop = previousTop;\n\t      if (Math.abs(gestureDelta) > minSwipeDistance)\n\t        break;\n\t    }\n\t    return gestureDelta;\n\t  }\n\t  cleanupDragging() {\n\t    const { boundOnDragMove, boundOnDragEnd, el, mainContent } = this;\n\t    el.removeAttribute(\"dragging\");\n\t    mainContent.removeAttribute(\"dragging\");\n\t    el.removeAttribute(\"tapdisabled\");\n\t    document.removeEventListener(\"mousemove\", boundOnDragMove);\n\t    document.removeEventListener(\"mouseup\", boundOnDragEnd);\n\t    document.removeEventListener(\"touchmove\", boundOnDragMove);\n\t    document.removeEventListener(\"touchend\", boundOnDragEnd);\n\t  }\n\t  onKeyDown(e) {\n\t    switch (e.key) {\n\t      case \"Enter\":\n\t        this.dismiss();\n\t        break;\n\t      case \" \":\n\t        this.dismiss(e);\n\t        e.preventDefault();\n\t        break;\n\t    }\n\t  }\n\t  connectedCallback() {\n\t    setTimeout(() => {\n\t      this.marketDialogLoaded.emit({\n\t        dialog: this.el,\n\t        type: this.type\n\t      });\n\t      if (!this.disableFocus) {\n\t        this.activateFocusTrap();\n\t      }\n\t    }, this.hidden ? 0 : index.CORE_ANIMATION_ENTER_TRANSITION_MODERATE_SPEED_DURATION);\n\t  }\n\t  hiddenHandler() {\n\t    this.setState(this.hidden ? \"closed\" : \"partial-open\");\n\t  }\n\t  componentDidLoad() {\n\t    var _a;\n\t    this.hiddenHandler();\n\t    this.heightObserver = new ResizeObserver(throttle.throttle(() => {\n\t      this.resetTopByState();\n\t    }, RESIZE_DEBOUNCE_DURATION));\n\t    this.heightObserver.observe(this.el);\n\t    (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.addEventListener(\"resize\", throttle.throttle(() => {\n\t      this.resetTopByState();\n\t    }, RESIZE_DEBOUNCE_DURATION));\n\t    this.mainContent.addEventListener(\"focusin\", (e) => {\n\t      this.resetTopByState();\n\t      delay$1(() => {\n\t        var _a2, _b, _c, _d;\n\t        if ((_a2 = window.visualViewport) === null || _a2 === void 0 ? void 0 : _a2.offsetTop) {\n\t          const prevOffsetTop = (_b = e.relatedTarget) === null || _b === void 0 ? void 0 : _b.offsetTop;\n\t          const currOffsetTop = (_c = document.activeElement) === null || _c === void 0 ? void 0 : _c.offsetTop;\n\t          (_d = document.activeElement) === null || _d === void 0 ? void 0 : _d.scrollIntoView({\n\t            behavior: \"smooth\",\n\t            block: prevOffsetTop < currOffsetTop ? \"start\" : \"center\",\n\t            inline: \"start\"\n\t          });\n\t        }\n\t      }, 250);\n\t    });\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.heightObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  render() {\n\t    return index$1.h(index$1.Host, { key: \"9738de8b6657b219ff859a815c8c2d4f4a5559e2\", role: \"dialog\", onMouseDown: (e) => this.onDragStart(e), onTouchStart: (e) => this.onDragStart(e) }, index$1.h(\"button\", { key: \"d3a99ce91c48283fb5cc12d0f4b97f9e13acb7cd\", \"aria-label\": this.closeHandleAriaLabel, class: \"handle\", onClick: this.dismiss.bind(this), onKeyDown: this.onKeyDown.bind(this) }), index$1.h(\"slot\", { key: \"071c1c9dc1c1d457a22b53e677630eea84ec7b1c\", name: \"header\" }), index$1.h(\"div\", { key: \"7895a3bad5d55482c0352e97517b91ef8a35820d\", class: \"main\", ref: (el) => (\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      this.mainContent = el\n\t    ), onTouchStart: () => this.onScrollStart() }, index$1.h(\"slot\", { key: \"738c9010c8c56090000dcd0c6a087c1bd791a003\" })));\n\t  }\n\t  get el() {\n\t    return index$1.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"hidden\": [\"hiddenHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketSheet.style = MarketSheetStyle0;\n\tmarketSheet_cjs_entry.market_sheet = MarketSheet;\n\treturn marketSheet_cjs_entry;\n}\n\nvar marketStepper_cjs_entry = {};\n\nvar hasRequiredMarketStepper_cjs_entry;\n\nfunction requireMarketStepper_cjs_entry () {\n\tif (hasRequiredMarketStepper_cjs_entry) return marketStepper_cjs_entry;\n\thasRequiredMarketStepper_cjs_entry = 1;\n\tObject.defineProperty(marketStepper_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst forms = requireForms08db29a3();\n\tconst marketStepperCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;outline:none;font-weight:var(--field-input-weight);font-size:var(--field-input-size);line-height:var(--field-input-leading);cursor:text}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;cursor:inherit}:host input,:host ::slotted(input){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::slotted(label){cursor:inherit}:host input:focus,:host ::slotted(input:focus),:host textarea:focus,:host ::slotted(textarea:focus){outline:none}:host input::-moz-placeholder,:host textarea::-moz-placeholder{color:var(--field-placeholder-text-color)}:host input::placeholder,:host textarea::placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::-moz-placeholder,:host ::slotted(textarea)::-moz-placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::placeholder,:host ::slotted(textarea)::placeholder{color:var(--field-placeholder-text-color)}:host([size='small']){font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}:host{border-radius:var(--field-border-radius);background-color:var(--field-normal-state-background-color);color:var(--field-normal-state-input-color)}:host::after{content:\"\";position:absolute;inset:0;border-radius:var(--field-border-radius);box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color);pointer-events:none}:host([invalid])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-invalid-validity-border-color)}:host(:hover){background-color:var(--field-hover-state-background-color);color:var(--field-hover-state-input-color)}:host(:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-normal-validity-border-color)}:host([invalid]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-invalid-validity-border-color)}:host([focused]){color:var(--field-focus-state-input-color)}:host([focused])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size)\n        var(--field-focus-state-normal-validity-border-color)}:host([focused][invalid])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size) var(--field-focus-state-invalid-validity-border-color)}:host([readonly]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color)}:host([disabled]){background-color:var(--field-disabled-state-background-color) !important;color:var(--field-disabled-state-input-color) !important;cursor:not-allowed !important}:host([disabled])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-disabled-state-border-color) !important}:host([disabled]) ::slotted(.market-accessory),:host([disabled]) ::slotted(img[slot*=\"accessory\"]),:host([disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([disabled]) ::slotted(div[slot*=\"accessory\"]){--field-disabled-state-accessory-opacity:var(--row-disabled-state-leading-accessory-opacity);opacity:var(--field-disabled-state-accessory-opacity)}:host([value=\"\"]) ::slotted(label){color:var(--field-normal-state-empty-phase-label-color)}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"][autofilled]) ::slotted(label){color:var(--field-normal-state-float-phase-label-color)}:host(:hover) ::slotted(label){color:var(--field-hover-state-empty-phase-label-color)}:host(:not([value=\"\"]):hover) ::slotted(label),:host([value=\"\"][autofilled]:hover) ::slotted(label){color:var(--field-hover-state-float-phase-label-color)}:host([focused]) ::slotted(label){color:var(--field-focus-state-float-phase-label-color)}:host([value=\"\"][disabled]) ::slotted(label){color:var(--field-disabled-state-empty-phase-label-color)}:host(:not([value=\"\"])[disabled]) ::slotted(label),:host([value=\"\"][autofilled][disabled]) ::slotted(label){color:var(--field-disabled-state-float-phase-label-color)}:host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}:host input[type=\"number\"]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}:host{--focus-ring-color:color-mix(in srgb, var(--core-focus-ring-color) 100%, transparent);display:flex;align-items:center}:host input{--stepper-quantity-input-field-height:calc(\n        var(--stepper-quantity-input-field-value-text-leading) + var(--stepper-padding-size) * 2\n      );position:relative;bottom:0;width:100%;height:var(--stepper-quantity-input-field-height);color:var(--stepper-quantity-input-field-value-text-normal-state-color);font-weight:var(--stepper-quantity-input-field-value-text-weight);font-size:var(--stepper-quantity-input-field-value-text-size);font-family:var(--stepper-quantity-input-field-value-text-font-family);line-height:var(--stepper-quantity-input-field-value-text-leading);letter-spacing:var(--stepper-quantity-input-field-value-text-tracking);text-align:center;text-transform:var(--stepper-quantity-input-field-value-text-case);cursor:text;font-feature-settings:\"tnum\"}:host input[disabled]{color:var(--stepper-quantity-input-field-value-text-disabled-state-color)}:host input::-moz-placeholder{color:var(--stepper-quantity-input-field-value-text-placeholder-color)}:host input::placeholder{color:var(--stepper-quantity-input-field-value-text-placeholder-color)}button{--transition-duration:var(--core-animation-enter-transition-moderate-speed-duration);--stepper-button-size:var(--stepper-button-minimum-height);position:relative;display:inline-flex;flex-shrink:0;justify-content:center;align-items:center;box-sizing:content-box;width:var(--stepper-button-size);height:var(--stepper-button-size);padding:var(--stepper-padding-size);border:none;border-radius:var(--stepper-border-radius);background:none;cursor:pointer;transition:background-color color var(--transition-duration)}button::before{content:\"\";position:absolute;inset:0;display:block;margin:var(--stepper-padding-size);border-radius:var(--stepper-button-border-radius);background:var(--stepper-button-normal-state-background-color)}button svg{position:relative;pointer-events:none;fill:var(--stepper-button-normal-state-icon-color)}button:hover::before{background:var(--stepper-button-hover-state-background-color)}button:hover svg{fill:var(--stepper-button-hover-state-icon-color)}button:focus{outline:none}button:focus-visible::before{outline:var(--core-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--core-focus-ring-border-size)}button:active::before{background:var(--stepper-button-pressed-state-background-color)}button:active svg{fill:var(--stepper-button-pressed-state-icon-color)}button[disabled]{cursor:not-allowed}button[disabled]::before{background:var(--stepper-button-disabled-state-background-color)}button[disabled] svg{fill:var(--stepper-button-disabled-state-icon-color)}`;\n\tconst MarketStepperStyle0 = marketStepperCss;\n\tconst MarketStepper = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketStepperValueChange = index.createEvent(this, \"marketStepperValueChange\", 7);\n\t    this.marketStepperInputFocus = index.createEvent(this, \"marketStepperInputFocus\", 7);\n\t    this.value = void 0;\n\t    this.inputId = void 0;\n\t    this.name = void 0;\n\t    this.placeholder = \"0\";\n\t    this.max = void 0;\n\t    this.min = void 0;\n\t    this.step = 1;\n\t    this.readonly = false;\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.invalid = false;\n\t    this.inputAriaLabel = \"Number\";\n\t    this.decrementAriaLabel = \"Decrement\";\n\t    this.incrementAriaLabel = \"Increment\";\n\t    this.incrementDisabled = false;\n\t    this.decrementDisabled = false;\n\t  }\n\t  valueChangeHandler() {\n\t    const sanitized = this.sanitizeValue(this.value);\n\t    if (sanitized !== this.value) {\n\t      this.value = sanitized;\n\t    }\n\t    this.updateButtonDisabledStates();\n\t  }\n\t  /**\n\t   * Toggle focus styling on `<market-stepper>` and focus/blur the inner `<input />`.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.readonly || this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    this.focused ? this.inputEl.focus() : this.inputEl.blur();\n\t    return Promise.resolve();\n\t  }\n\t  onChange() {\n\t    const previousValue = this.value;\n\t    let nextValue = Number.parseFloat(this.inputEl.value);\n\t    if (Number.isNaN(nextValue)) {\n\t      nextValue = null;\n\t      this.inputEl.value = \"\";\n\t    } else {\n\t      nextValue = this.sanitizeValue(nextValue);\n\t      this.inputEl.value = nextValue.toString();\n\t    }\n\t    if (nextValue !== previousValue) {\n\t      this.value = nextValue;\n\t      this.emitChangeEvent(previousValue);\n\t    }\n\t  }\n\t  onInputFocus() {\n\t    this.emitInputFocusEvent();\n\t  }\n\t  onDecrementClick() {\n\t    this.stepValue(-this.step);\n\t  }\n\t  onIncrementClick() {\n\t    this.stepValue(this.step);\n\t  }\n\t  onKeyDown(e) {\n\t    if (e.key === \"Enter\") {\n\t      forms.submitFormImplicitly(this.el);\n\t    }\n\t  }\n\t  stepValue(step) {\n\t    const previousValue = this.value;\n\t    const nextValue = (previousValue || 0) + step;\n\t    const sanitizedValue = this.sanitizeValue(nextValue);\n\t    if (sanitizedValue !== previousValue) {\n\t      this.value = sanitizedValue;\n\t      this.emitChangeEvent(previousValue);\n\t    }\n\t  }\n\t  sanitizeValue(value) {\n\t    var _a;\n\t    const decimalPlaces = ((_a = this.step.toString().split(\".\")[1]) === null || _a === void 0 ? void 0 : _a.length) || 0;\n\t    const hasMax = this.max !== null && this.max !== void 0;\n\t    const hasMin = this.min !== null && this.min !== void 0;\n\t    let sanitized = Math.round(value / this.step) * this.step;\n\t    sanitized = Number.parseFloat(sanitized.toFixed(decimalPlaces));\n\t    sanitized = hasMax ? Math.min(sanitized, this.max) : sanitized;\n\t    return hasMin ? Math.max(sanitized, this.min) : sanitized;\n\t  }\n\t  updateButtonDisabledStates() {\n\t    const { value, max, min } = this;\n\t    const hasValue = value !== null && value !== void 0;\n\t    this.incrementDisabled = hasValue ? value === max : false;\n\t    this.decrementDisabled = hasValue ? value === min : false;\n\t  }\n\t  emitChangeEvent(previousValue) {\n\t    const { el, value, marketStepperValueChange } = this;\n\t    marketStepperValueChange.emit({ el, value, previousValue });\n\t  }\n\t  emitInputFocusEvent() {\n\t    const { marketStepperInputFocus } = this;\n\t    marketStepperInputFocus.emit();\n\t  }\n\t  componentWillRender() {\n\t    this.updateButtonDisabledStates();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"d7242f2a19c8fae5887c098d88dd39102ffb377d\", class: \"market-stepper\", onFocus: () => {\n\t      this.focused = true;\n\t    }, onBlur: () => {\n\t      this.focused = false;\n\t    } }, index.h(\"button\", {\n\t      key: \"d1f1efce8375bd14e079e1c8d31ed5762fe88ffe\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      tabindex: this.disabled || this.decrementDisabled ? -1 : null,\n\t      disabled: this.disabled || this.decrementDisabled,\n\t      onClick: () => this.onDecrementClick(),\n\t      \"aria-label\": this.decrementAriaLabel\n\t    }, index.h(\"svg\", { key: \"aefbc03e8b2b0147f1e39a983170a13cbb6a6add\", width: \"10\", height: \"2\", viewBox: \"0 0 10 2\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"4f48bed708f4ca0cd1d57d4bec3746fee181ae60\", d: \"M9.66667 0.333328H0.333336V1.66666H9.66667V0.333328Z\" }))), index.h(\"input\", {\n\t      key: \"9037d8a7c407f43edeaf067de97f1d5b73e63e88\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.inputEl = el,\n\t      type: \"number\",\n\t      id: this.inputId,\n\t      name: this.name,\n\t      readonly: this.readonly,\n\t      disabled: this.disabled,\n\t      placeholder: this.placeholder,\n\t      step: this.step,\n\t      min: this.min,\n\t      max: this.max,\n\t      value: this.value,\n\t      \"aria-label\": this.inputAriaLabel,\n\t      onChange: () => this.onChange(),\n\t      onFocus: () => this.onInputFocus(),\n\t      onKeyDown: (e) => this.onKeyDown(e),\n\t      part: \"native-input\"\n\t    }), index.h(\"button\", {\n\t      key: \"8c42d5b8fa9a355b0647674e7820a778e054e457\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      tabindex: this.disabled || this.incrementDisabled ? -1 : null,\n\t      disabled: this.disabled || this.incrementDisabled,\n\t      onClick: () => this.onIncrementClick(),\n\t      \"aria-label\": this.incrementAriaLabel\n\t    }, index.h(\"svg\", { key: \"f9df1006051855f402157b16ac3fc1efbb9bb2bb\", width: \"10\", height: \"10\", viewBox: \"0 0 10 10\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"152bfb022ccc4613b84b549f8f46dd0477fe033d\", d: \"M5.66665 9.66666V5.66666H9.66665V4.33333H5.66665V0.333328H4.33331V4.33333H0.333313V5.66666H4.33331V9.66666H5.66665Z\" }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"value\": [\"valueChangeHandler\"]\n\t    };\n\t  }\n\t};\n\tMarketStepper.style = MarketStepperStyle0;\n\tmarketStepper_cjs_entry.market_stepper = MarketStepper;\n\treturn marketStepper_cjs_entry;\n}\n\nvar marketTab_cjs_entry = {};\n\nvar hasRequiredMarketTab_cjs_entry;\n\nfunction requireMarketTab_cjs_entry () {\n\tif (hasRequiredMarketTab_cjs_entry) return marketTab_cjs_entry;\n\thasRequiredMarketTab_cjs_entry = 1;\n\tObject.defineProperty(marketTab_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTabCss = ':host([size=\"large\"]){font-weight:var(--core-type-heading-30-weight);font-size:var(--core-type-heading-30-size);font-family:var(--core-type-heading-30-font-family);line-height:var(--core-type-heading-30-leading);letter-spacing:var(--core-type-heading-30-tracking);text-transform:var(--core-type-heading-30-case)}:host(:not([size])),:host([size=\"medium\"]){font-weight:var(--core-type-heading-20-weight);font-size:var(--core-type-heading-20-size);font-family:var(--core-type-heading-20-font-family);line-height:var(--core-type-heading-20-leading);letter-spacing:var(--core-type-heading-20-tracking);text-transform:var(--core-type-heading-20-case)}:host([size=\"small\"]){font-weight:var(--core-type-medium-20-weight);font-size:var(--core-type-medium-20-size);font-family:var(--core-type-medium-20-font-family);line-height:var(--core-type-medium-20-leading);letter-spacing:var(--core-type-medium-20-tracking);text-transform:var(--core-type-medium-20-case)}:host{--focus-ring-color:color-mix(in srgb, var(--core-focus-ring-color) 100%, transparent);color:var(--tabs-tab-text-color, var(--core-text-20-color))}:host(:focus-visible){border-radius:var(--core-radius-66);outline:var(--core-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}:host [part=\"button\"]{position:relative;border:0;background:none;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;transition:color\\n    var(--core-animation-enter-transition-fast-speed-duration)\\n    var(--core-animation-enter-transition-easing)}:host [part=\"button\"]::after{content:\"\";position:absolute;bottom:0;left:0;z-index:1;width:100%;height:0;border-radius:var(--tabs-tab-bottom-border-border-radius-top-left, var(--core-metrics-spacing-25))\\n      var(--tabs-tab-bottom-border-border-radius-top-right, var(--core-metrics-spacing-25))\\n      var(--tabs-tab-bottom-border-border-radius-bottom-right, 0)\\n      var(--tabs-tab-bottom-border-border-radius-bottom-left, 0);background:var(--tabs-tab-bottom-border-background-color, var(--core-text-10-color));transition:height\\n      var(--core-animation-enter-transition-fast-speed-duration)\\n      var(--core-animation-enter-transition-easing),\\n      background\\n      var(--core-animation-enter-transition-fast-speed-duration)\\n      var(--core-animation-enter-transition-easing)}:host(:hover),:host(:active){color:var(--tabs-tab-hover-state-text-color, var(--core-emphasis-text-color));transition:color\\n    var(--core-animation-exit-transition-fast-speed-duration)\\n    var(--core-animation-exit-transition-easing)}@media (-webkit-device-pixel-ratio: 1){:host [part=\"button\"]::after{border-radius:0}}:host([size=\"small\"]) [part=\"button\"]{padding:var(--tabs-tab-small-size-top-padding-size, 4px)\\n      0\\n      var(--tabs-tab-small-size-bottom-padding-size, 10px)}:host(:not([size])) [part=\"button\"],:host([size=\"medium\"]) [part=\"button\"]{padding:var(--tabs-tab-medium-size-top-padding-size, 4px)\\n      0\\n      var(--tabs-tab-medium-size-bottom-padding-size, 10px)}:host([size=\"large\"]) [part=\"button\"]{padding:var(--tabs-tab-large-size-top-padding-size, 4px)\\n      0\\n      var(--tabs-tab-large-size-bottom-padding-size, 12px)}:host([selected]){color:var(--tabs-tab-selected-text-color, var(--core-text-10-color))}:host([selected]) [part=\"button\"]::after{height:var(--tabs-tab-selected-bottom-border-height, var(--core-metrics-spacing-25))}:host([selected]):hover{color:var(--tabs-tab-hover-state-selected-text-color, var(--core-text-10-color))}:host([selected]):active{color:var(--tabs-tab-active-state-selected-text-color, var(--core-emphasis-text-color))}:host([selected]):active [part=\"button\"]::after{background:var(--tabs-tab-active-state-bottom-border-background-color, var(--core-emphasis-text-color))}:host([disabled]){color:var(--tabs-tab-disabled-state-text-color, var(--core-text-30-color))}:host([disabled]):hover{color:var(--tabs-tab-disabled-state-text-color, var(--core-text-30-color))}:host([disabled]) [part=\"button\"]{cursor:not-allowed}';\n\tconst MarketTabStyle0 = marketTabCss;\n\tconst MarketTab = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTabSelectedChanged = index.createEvent(this, \"marketTabSelectedChanged\", 7);\n\t    this.disabled = false;\n\t    this.size = \"medium\";\n\t    this.selected = false;\n\t  }\n\t  /**\n\t   * Select the tab and emits a `marketTabSelectedChanged` event\n\t   */\n\t  select() {\n\t    if (this.selected || this.disabled) {\n\t      return Promise.resolve();\n\t    }\n\t    const { defaultPrevented } = this.marketTabSelectedChanged.emit({\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      panelId: this.el.getAttribute(\"aria-controls\"),\n\t      prevValue: this.selected,\n\t      tabId: this.el.id,\n\t      value: true\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.selected = true;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Deselects the tab and emits a `marketTabSelectedChanged` event\n\t   */\n\t  deselect() {\n\t    if (!this.selected) {\n\t      return Promise.resolve();\n\t    }\n\t    const { defaultPrevented } = this.marketTabSelectedChanged.emit({\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      panelId: this.el.getAttribute(\"aria-controls\"),\n\t      prevValue: this.selected,\n\t      tabId: this.el.id,\n\t      value: false\n\t    });\n\t    if (!defaultPrevented) {\n\t      this.selected = false;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  disabledWatcher() {\n\t    this.selected = false;\n\t  }\n\t  handleClick() {\n\t    this.select();\n\t  }\n\t  handleKeydown(e) {\n\t    if (e.key === \"Enter\" || e.key === \" \") {\n\t      e.preventDefault();\n\t      this.select();\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"94a982f36672134b47427850915d79d4a1eba2aa\", \"aria-disabled\": this.disabled.toString(), \"aria-selected\": this.selected.toString(), class: \"market-tab\", onClick: this.handleClick.bind(this), onKeydown: this.handleKeydown.bind(this), role: \"tab\", tabindex: \"0\" }, index.h(\"button\", { key: \"309b3378622afeaa840ffa89ecc0116d81ab9d37\", disabled: this.disabled, part: \"button\", ref: (el) => (\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      this.buttonEl = el\n\t    ), tabindex: \"-1\" }, index.h(\"slot\", { key: \"69d62b428d1e5615e6f3362086fa98f25b22496a\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"disabled\": [\"disabledWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketTab.style = MarketTabStyle0;\n\tmarketTab_cjs_entry.market_tab = MarketTab;\n\treturn marketTab_cjs_entry;\n}\n\nvar marketTabList_cjs_entry = {};\n\nvar hasRequiredMarketTabList_cjs_entry;\n\nfunction requireMarketTabList_cjs_entry () {\n\tif (hasRequiredMarketTabList_cjs_entry) return marketTabList_cjs_entry;\n\thasRequiredMarketTabList_cjs_entry = 1;\n\tObject.defineProperty(marketTabList_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketTabListCss = ':host{position:relative;display:flex}:host::after{content:\"\";position:absolute;bottom:0;left:0;display:block;width:100%;height:var(--tabs-list-bottom-border-size, 1px);background-color:var(--tabs-list-bottom-border-color, var(--core-divider-20-color))}:host(:not([size])),:host([size=\"small\"]),:host([size=\"medium\"]){gap:var(--tabs-list-medium-size-horizontal-spacing, var(--core-metrics-spacing-200))}:host([size=\"large\"]){gap:var(--tabs-list-large-size-horizontal-spacing, var(--core-metrics-spacing-300))}';\n\tconst MarketTabListStyle0 = marketTabListCss;\n\tconst MarketTabList = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTabListSelectedTabChanged = index.createEvent(this, \"marketTabListSelectedTabChanged\", 7);\n\t    this.size = void 0;\n\t    this.selectedTab = void 0;\n\t    this.defaultTab = void 0;\n\t  }\n\t  marketTabSelectedChangedEventHandler(e) {\n\t    var _a;\n\t    const { tabId, value } = e.detail;\n\t    if (!value) {\n\t      return;\n\t    }\n\t    if (this.selectedTab !== tabId) {\n\t      const { defaultPrevented } = this.marketTabListSelectedTabChanged.emit({\n\t        // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t        prevValue: this.selectedTab,\n\t        value: tabId\n\t      });\n\t      if (!defaultPrevented) {\n\t        this.selectedTab = tabId;\n\t      }\n\t    }\n\t    (_a = this.tabEls) === null || _a === void 0 ? void 0 : _a.forEach((tabEl) => {\n\t      if (tabEl.id !== tabId) {\n\t        tabEl.deselect();\n\t        tabEl.tabIndex = -1;\n\t      } else {\n\t        tabEl.tabIndex = 0;\n\t      }\n\t    });\n\t  }\n\t  tabWatcher(newTabId) {\n\t    this.selectTab(newTabId);\n\t  }\n\t  sizeWatcher(newSize) {\n\t    this.propagateSizeProp(newSize);\n\t  }\n\t  selectTab(tabId) {\n\t    var _a, _b;\n\t    const tabEl = ((_a = this.tabEls) === null || _a === void 0 ? void 0 : _a.find((el) => tabId === el.id && !el.disabled)) || ((_b = this.tabEls) === null || _b === void 0 ? void 0 : _b.find((el) => !el.disabled));\n\t    tabEl === null || tabEl === void 0 ? void 0 : tabEl.select();\n\t  }\n\t  propagateSizeProp(size) {\n\t    this.tabEls.forEach((el) => {\n\t      if (this.size && el.size !== this.size) {\n\t        el.size = size;\n\t      }\n\t    });\n\t  }\n\t  focusOnTab(el) {\n\t    el === null || el === void 0 ? void 0 : el.focus();\n\t  }\n\t  handleKeyDown(e) {\n\t    if (!this.tabEls || this.tabEls.every((el) => el.disabled)) {\n\t      return;\n\t    }\n\t    if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\" || e.key === \"Home\" || e.key === \"End\") {\n\t      e.preventDefault();\n\t      const currentTabIndex = this.tabEls.indexOf(e.target);\n\t      if (currentTabIndex < 0) {\n\t        return;\n\t      }\n\t      const left = this.tabEls.slice(0, currentTabIndex);\n\t      const right = this.tabEls.slice(currentTabIndex + 1);\n\t      switch (e.key) {\n\t        case \"ArrowRight\": {\n\t          const focusableTabEls = [...right, ...left].find((el) => !el.disabled);\n\t          this.focusOnTab(focusableTabEls);\n\t          break;\n\t        }\n\t        case \"ArrowLeft\": {\n\t          const focusableTabEls = [...right, ...left].reverse().find((el) => !el.disabled);\n\t          this.focusOnTab(focusableTabEls);\n\t          break;\n\t        }\n\t        case \"Home\": {\n\t          const focusableTabEls = this.tabEls.find((el) => !el.disabled);\n\t          this.focusOnTab(focusableTabEls);\n\t          break;\n\t        }\n\t        case \"End\": {\n\t          const focusableTabEls = this.tabEls.filter((el) => !el.disabled);\n\t          this.focusOnTab(focusableTabEls[focusableTabEls.length - 1]);\n\t          break;\n\t        }\n\t      }\n\t    }\n\t  }\n\t  handleSlotChange() {\n\t    this.tabEls = [...this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-tab\"))];\n\t    this.propagateSizeProp(this.size);\n\t  }\n\t  componentWillLoad() {\n\t    this.handleSlotChange();\n\t    this.selectTab(this.selectedTab || this.defaultTab);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"21272981dc2e1e5be7de3a262508da9723d56ad8\", class: \"market-tab-list\", onKeyDown: this.handleKeyDown.bind(this), role: \"tablist\" }, index.h(\"slot\", { key: \"945e8d4a746acfc13da9234dc327a06efc10ea03\", onSlotchange: () => this.handleSlotChange() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"selectedTab\": [\"tabWatcher\"],\n\t      \"size\": [\"sizeWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketTabList.style = MarketTabListStyle0;\n\tmarketTabList_cjs_entry.market_tab_list = MarketTabList;\n\treturn marketTabList_cjs_entry;\n}\n\nvar marketTabPanel_cjs_entry = {};\n\nvar hasRequiredMarketTabPanel_cjs_entry;\n\nfunction requireMarketTabPanel_cjs_entry () {\n\tif (hasRequiredMarketTabPanel_cjs_entry) return marketTabPanel_cjs_entry;\n\thasRequiredMarketTabPanel_cjs_entry = 1;\n\tObject.defineProperty(marketTabPanel_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTabPanelCss = \":host{--focus-ring-color:color-mix(in srgb, var(--core-focus-ring-color) 100%, transparent);display:block}:host(:focus-visible){border-radius:var(--core-radius-66);outline:var(--core-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}:host([hidden]){display:none}\";\n\tconst MarketTabPanelStyle0 = marketTabPanelCss;\n\tconst MarketTabPanel = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.hidden = false;\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"30a4ba8ec7d40591d3bb88b72e0375d97395998c\", \"aria-hidden\": this.hidden.toString(), class: \"market-tab-panel\", role: \"tabpanel\", tabindex: \"0\" }, index.h(\"slot\", { key: \"1ad01c746746a40322acb299ab6e439461441a4f\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketTabPanel.style = MarketTabPanelStyle0;\n\tmarketTabPanel_cjs_entry.market_tab_panel = MarketTabPanel;\n\treturn marketTabPanel_cjs_entry;\n}\n\nvar marketTable_cjs_entry = {};\n\nvar hasRequiredMarketTable_cjs_entry;\n\nfunction requireMarketTable_cjs_entry () {\n\tif (hasRequiredMarketTable_cjs_entry) return marketTable_cjs_entry;\n\thasRequiredMarketTable_cjs_entry = 1;\n\tObject.defineProperty(marketTable_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst throttle = requireThrottle88e2e29a();\n\tconst _baseIsEqual = require_baseIsEqual9956408d();\n\trequireIsObject7dcf0083();\n\trequireIsSymbolFbd13c73();\n\trequire_arrayPush24af5aa3();\n\trequire_getNative666f22b9();\n\trequire_Map07e1b6b7();\n\trequire_getTag7be0e78a();\n\tfunction isEqual(value, other) {\n\t  return _baseIsEqual.baseIsEqual(value, other);\n\t}\n\tconst parsedGridTemplateColumnValues = (cssPropertyValue) => {\n\t  const array = cssPropertyValue.split(\" \");\n\t  const unsupportedValues = [\"auto-fill\", \"auto-fit\", \"minmax\", \"fit-content\"];\n\t  const matches = unsupportedValues.filter((value) => cssPropertyValue.includes(value));\n\t  const unsupportedValuesText = `${matches.length > 0 ? \"features\" : \"feature\"} ${matches.map((match) => `\\`${match}\\``).join(\", \")}`;\n\t  if (matches.length > 0) {\n\t    console.warn(`<market-table>'s grid layout is not built to support the use of the CSS ${unsupportedValuesText}.\nTo avoid potential column layout issues, try using explicitly defined \\`grid-template-column\\` widths using length, percentage, or flex units.`);\n\t    return array;\n\t  }\n\t  const output = [];\n\t  let i = 0;\n\t  let repeatedColCount = null;\n\t  for (i = 0; i < array.length; i++) {\n\t    const item = array[i];\n\t    if (item.includes(\"repeat(\")) {\n\t      repeatedColCount = Number.parseInt(item.match(/\\d+/).toString(), 10);\n\t      const endOfRepeatFunctionIndex = array.findIndex((item2, index2) => index2 > i && item2.includes(\")\"));\n\t      const repeatedValues = array.slice(i + 1, endOfRepeatFunctionIndex + 1).map((item2) => item2.replace(/\\W/, \"\"));\n\t      for (let j = 0; j < repeatedColCount; j++) {\n\t        output.push(repeatedValues[j % repeatedValues.length].toString());\n\t      }\n\t      repeatedColCount = null;\n\t      i += repeatedValues.length;\n\t    } else if (!repeatedColCount) {\n\t      output.push(item);\n\t    }\n\t  }\n\t  return output;\n\t};\n\tconst marketTableCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;display:grid;grid-auto-columns:1fr;grid-auto-flow:rows;overflow-x:clip;height:auto}::slotted(.market-table-row:last-of-type:not([slot=\"header\"])),::slotted(.market-table-row.buffer-row){border-bottom:none !important;}';\n\tconst MarketTableStyle0 = marketTableCss;\n\tconst RESIZE_DEBOUNCE_DURATION = 16;\n\tconst MarketTable = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.observers = {};\n\t    this.throttledDetectStyleDeclaration = throttle.throttle(this.detectStyleDeclaration.bind(this), RESIZE_DEBOUNCE_DURATION);\n\t    this.styleDeclaration = void 0;\n\t    this.gridColumnTemplate = void 0;\n\t    this.allColumns = [];\n\t    this.visibleColumns = [];\n\t    this.columnsStuckLeft = [];\n\t    this.columnsStuckRight = [];\n\t    this.columnsUnstuck = [];\n\t    this.allRows = [];\n\t    this.rowsStuckTop = [];\n\t    this.rowsStuckBottom = [];\n\t    this.rowsUnstuck = [];\n\t    this.hasAccordionRows = false;\n\t  }\n\t  /* Everytime the computed CSS style for this element is updated, we want to\n\t    mutate the grid template definition, and save whatever template they have set\n\t    to our grid definition so we know what size the columns are */\n\t  styleDeclarationObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      if (newValue.getPropertyValue(\"grid-template-columns\") === newValue.getPropertyValue(\"width\")) {\n\t        this.gridColumnTemplate = [];\n\t        return;\n\t      }\n\t      const gridTemplateColumnsValue = parsedGridTemplateColumnValues(newValue.getPropertyValue(\"grid-template-columns\"));\n\t      if (!isEqual(gridTemplateColumnsValue, this.gridColumnTemplate)) {\n\t        this.gridColumnTemplate = gridTemplateColumnsValue;\n\t      }\n\t    }\n\t  }\n\t  /* When the grid template changes, forward it's value to the child sections.\n\t  Use an observer instead of binding in the template to prevent polluting\n\t  the DOM with unneeded attributes */\n\t  gridTemplateObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.setColumnWidths(newValue);\n\t      this.updateGridLayout();\n\t    }\n\t  }\n\t  /* If the columns change, forward their values to the child rows, and update\n\t  the column count */\n\t  allColumnsObserver(columns, oldValue) {\n\t    if (columns && (!oldValue || columns !== oldValue)) {\n\t      this.setColumnWidths(this.gridColumnTemplate);\n\t      this.forwardColumnPropertiesToCells(this.allColumns);\n\t      this.updateGridLayout();\n\t    }\n\t  }\n\t  allRowsObserver(rows, oldValue) {\n\t    if (rows !== oldValue && rows) {\n\t      this.updateGridLayout();\n\t      this.forwardColumnPropertiesToCells(this.allColumns);\n\t      this.updateStickyRows();\n\t    }\n\t  }\n\t  stuckRowsObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.allRows.map((row) => row.classList.remove(\"buffer-row\"));\n\t      if (this.rowsStuckTop.length > 0) {\n\t        this.rowsStuckTop[this.rowsStuckTop.length - 1].classList.add(\"buffer-row\");\n\t      }\n\t      if (this.rowsUnstuck.length > 0 && this.rowsStuckBottom.length > 0) {\n\t        this.rowsUnstuck[this.rowsUnstuck.length - 1].classList.add(\"buffer-row\");\n\t      }\n\t    }\n\t  }\n\t  marketTableHeaderLoadedEventHandler({ detail }) {\n\t    this.allColumns = [...detail.columns];\n\t    this.checkColumnVisibility();\n\t  }\n\t  marketTableRowStickEventHandler({ target, detail }) {\n\t    switch (detail.position) {\n\t      case \"top\":\n\t        target.slot = \"sticky-header\";\n\t        break;\n\t      case \"bottom\":\n\t        target.slot = \"sticky-footer\";\n\t        break;\n\t      default:\n\t        console.warn(\"could not stick row to an unknown position\");\n\t        break;\n\t    }\n\t    this.updateStickyRows();\n\t  }\n\t  marketTableRowUnstickEventHandler({ target }) {\n\t    if (target.originalSlot) {\n\t      target.slot = target.originalSlot;\n\t    } else {\n\t      target.removeAttribute(\"slot\");\n\t    }\n\t    this.updateStickyRows();\n\t  }\n\t  async marketTableColumnStickEventHandler({ target, detail }) {\n\t    await Promise.all([...this.allRows].map(async (row) => {\n\t      await row._stickColumn(target.name, detail.position);\n\t    }));\n\t    this.updateGridLayout();\n\t  }\n\t  async marketTableColumnUnstickEventHandler({ target }) {\n\t    await Promise.all([...this.allRows].map(async (row) => {\n\t      await row._unstickColumn(target.name);\n\t    }));\n\t    this.updateGridLayout();\n\t  }\n\t  marketTableColumnVisibilityChangeHandler({ detail }) {\n\t    this.checkColumnVisibility();\n\t    this.allRows.forEach((row) => row._syncColumnVisibilityWithCells(detail.columnName, detail.hidden));\n\t    this.detectStyleDeclaration();\n\t  }\n\t  checkColumnVisibility() {\n\t    this.visibleColumns = this.allColumns.filter((column) => !column.hidden);\n\t  }\n\t  setColumnWidths(gridTemplate) {\n\t    if (this.allColumns.length > 0) {\n\t      this.visibleColumns.forEach((column, i) => {\n\t        column.width = gridTemplate[i];\n\t      });\n\t    }\n\t  }\n\t  forwardColumnPropertiesToCells(columns) {\n\t    this.allRows.forEach((row) => row.tableColumns = columns);\n\t  }\n\t  updateGridLayout() {\n\t    if (this.allColumns.length > 0) {\n\t      this.columnsUnstuck = this.visibleColumns.filter((column) => !column.stickTo);\n\t      this.columnsStuckLeft = this.visibleColumns.filter((column) => column.stickTo === \"left\");\n\t      this.columnsStuckRight = this.visibleColumns.filter((column) => column.stickTo === \"right\");\n\t      const mainGrid = this.columnsUnstuck.map((column) => column.width);\n\t      const leftGrid = this.columnsStuckLeft.map((column) => column.width);\n\t      const rightGrid = this.columnsStuckRight.map((column) => column.width);\n\t      if (this.allRows.length > 0) {\n\t        this.allRows.forEach((row) => {\n\t          row.gridTemplateMain = mainGrid;\n\t          row.gridTemplateLeft = leftGrid;\n\t          row.gridTemplateRight = rightGrid;\n\t        });\n\t      }\n\t    }\n\t  }\n\t  updateStickyRows() {\n\t    this.rowsStuckTop = this.allRows.filter((row) => row.sticky && row.header || row.stickTo === \"top\");\n\t    this.rowsStuckBottom = this.allRows.filter((row) => row.sticky && row.footer || row.stickTo === \"bottom\");\n\t    this.rowsUnstuck = this.allRows.filter((row) => !row.stickTo && !row.sticky);\n\t  }\n\t  /* If the slotted content of the table changes, we need to update\n\t  our saved copy of the section and column children */\n\t  handleSlotChange() {\n\t    this.allRows = [...this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-table-row\"))];\n\t    const hasAccordionElements = [...this.el.children].some((element) => {\n\t      return element.tagName.toLowerCase() === index$1.getNamespacedTagFor(\"market-accordion-item\");\n\t    }) || this.hasAccordionRows;\n\t    this.allRows.forEach((row) => {\n\t      row.index = Array.prototype.indexOf.call(this.allRows, row);\n\t      row.nested = hasAccordionElements;\n\t    });\n\t  }\n\t  /**\n\t   * Gets current CSSStyleDeclaration object for this.el (see styleDeclarationObserver)\n\t   */\n\t  detectStyleDeclaration() {\n\t    this.styleDeclaration = window.getComputedStyle(this.el);\n\t  }\n\t  /**\n\t   * Supports setting dynamic column sizes using CSS media queries by recalculating column width on table resize\n\t   */\n\t  initResizeObserver() {\n\t    if (!this.observers.resize) {\n\t      this.observers.resize = new ResizeObserver(() => {\n\t        window.requestAnimationFrame(() => {\n\t          this.throttledDetectStyleDeclaration();\n\t        });\n\t      });\n\t      this.observers.resize.observe(this.el);\n\t    }\n\t  }\n\t  /**\n\t   * Supports setting dynamic column widths by updating inline styles\n\t   */\n\t  initInlineStyleObserver() {\n\t    if (!this.observers.inlineStyle) {\n\t      this.observers.inlineStyle = new MutationObserver(() => this.detectStyleDeclaration());\n\t      this.observers.inlineStyle.observe(this.el, {\n\t        attributes: true,\n\t        attributeFilter: [\"style\"]\n\t      });\n\t    }\n\t  }\n\t  /**\n\t   * since onSlotchange only fires on changes to the <Host> node itself (not changes to the child slots of the\n\t   * <market-table-area>s), we're using a mutation observer to listen for added rows or changes in row content\n\t   * https://github.com/ionic-team/stencil/issues/232#issuecomment-397871813\n\t   */\n\t  initContentObserver() {\n\t    if (!this.observers.content) {\n\t      this.observers.content = new MutationObserver(() => this.handleSlotChange());\n\t      this.observers.content.observe(this.el, {\n\t        childList: true,\n\t        subtree: true,\n\t        characterData: true\n\t      });\n\t    }\n\t  }\n\t  /* When the component loads, we need to check for a grid-template-columns\n\t  CSS declaration on the table, and also read the column children\n\t  Setting both of these will trigger watcher functions which forward these\n\t  values to the row children */\n\t  componentWillLoad() {\n\t    this.detectStyleDeclaration();\n\t    this.handleSlotChange();\n\t  }\n\t  componentDidLoad() {\n\t    this.initResizeObserver();\n\t    this.initInlineStyleObserver();\n\t    this.initContentObserver();\n\t  }\n\t  render() {\n\t    const MarketTableAreaTagName = index$1.getNamespacedTagFor(\"market-table-area\");\n\t    return index.h(index.Host, { key: \"ca459611cdd0df60948cfb5c47585b999d3c9fd8\", class: \"market-table\", role: \"table\", onSlotchange: () => this.handleSlotChange() }, index.h(MarketTableAreaTagName, { key: \"35a05ddbbabf28d7c4d93c990fcb0b7475902da9\", orientation: \"horizontal\", \"stick-to\": \"top\", active: this.rowsStuckTop.length > 0 }, index.h(\"slot\", { key: \"f9339745779a09f79c28a9d767498d6894fe3afe\", name: \"sticky-header\" })), index.h(MarketTableAreaTagName, { key: \"db2c295e9e2c8509c21bba9111376245f946b95f\", orientation: \"horizontal\", active: true }, index.h(\"slot\", { key: \"8483c9077e993a4c644c93b34c80c04db821e8f4\", name: \"header\" }), index.h(\"slot\", { key: \"ba3220658aa8a6310be24f3a81250c6c89cec560\" }), index.h(\"slot\", { key: \"f11673ba6729c753e27fdc335cc7c5064f8e86aa\", name: \"footer\" })), index.h(MarketTableAreaTagName, { key: \"312b6e98f5afa47175e66111a6232c513ed91094\", orientation: \"horizontal\", \"stick-to\": \"bottom\", active: this.rowsStuckBottom.length > 0 }, index.h(\"slot\", { key: \"1d0065ee60402195208e5340ac5f6c238e3260c8\", name: \"sticky-footer\" })));\n\t  }\n\t  disconnectedCallback() {\n\t    Object.values(this.observers).forEach((observer) => {\n\t      observer === null || observer === void 0 ? void 0 : observer.disconnect();\n\t    });\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"styleDeclaration\": [\"styleDeclarationObserver\"],\n\t      \"gridColumnTemplate\": [\"gridTemplateObserver\"],\n\t      \"allColumns\": [\"allColumnsObserver\"],\n\t      \"visibleColumns\": [\"allColumnsObserver\"],\n\t      \"allRows\": [\"allRowsObserver\"],\n\t      \"rowsStuckTop\": [\"stuckRowsObserver\"],\n\t      \"rowsStuckBottom\": [\"stuckRowsObserver\"],\n\t      \"rowsUnstuck\": [\"stuckRowsObserver\"]\n\t    };\n\t  }\n\t};\n\tMarketTable.style = MarketTableStyle0;\n\tmarketTable_cjs_entry.market_table = MarketTable;\n\treturn marketTable_cjs_entry;\n}\n\nvar marketTableArea_cjs_entry = {};\n\nvar hasRequiredMarketTableArea_cjs_entry;\n\nfunction requireMarketTableArea_cjs_entry () {\n\tif (hasRequiredMarketTableArea_cjs_entry) return marketTableArea_cjs_entry;\n\thasRequiredMarketTableArea_cjs_entry = 1;\n\tObject.defineProperty(marketTableArea_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTableAreaCss = ':host{position:relative;grid-column:1 / -1;background-color:var(--table-cell-state-normal-background-color, var(--core-surface-10-color))}:host(:not([active])){display:none !important;}:host([orientation=\"horizontal\"]){display:block}:host([orientation=\"vertical\"]){display:grid;grid-auto-columns:1fr;grid-auto-flow:column}:host([orientation=\"vertical\"]) ::slotted(.market-table-row){border-bottom:none}:host([stick-to]){position:sticky;z-index:1}:host([stick-to][orientation=\"horizontal\"]){z-index:2}:host([stick-to=\"top\"]){top:0;border-bottom:var(--table-border-width, 1px) solid var(--table-heading-border-color, var(--core-divider-10-color))}:host([stick-to=\"bottom\"]){bottom:0}:host([stick-to=\"bottom\"]:not(:empty)){border-top:var(--table-border-width, 1px) solid var(--table-heading-border-color, var(--core-divider-10-color))}:host([stick-to=\"left\"]){left:0;justify-content:end;border-right:var(--table-border-width, 1px) solid var(--table-heading-border-color, var(--core-divider-10-color))}:host([stick-to=\"right\"]){right:0;justify-content:start;border-left:var(--table-border-width, 1px) solid var(--table-heading-border-color, var(--core-divider-10-color))}';\n\tconst MarketTableAreaStyle0 = marketTableAreaCss;\n\tconst MarketTableArea = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.orientation = \"horizontal\";\n\t    this.stickTo = void 0;\n\t    this.gridTemplate = void 0;\n\t    this.active = false;\n\t    this.placement = [1, -1];\n\t    this.elements = void 0;\n\t  }\n\t  /* When the gridTemplate changes, we need to parse it and update this elements's\n\t  grid-template-columns property, which defines the number and widths of columns\n\t  within this area */\n\t  assignGridTemplate(newValue, oldValue) {\n\t    if (newValue && newValue !== oldValue) {\n\t      if (newValue.length > 0 || oldValue === void 0) {\n\t        this.active = true;\n\t        this.el.style.gridTemplateColumns = newValue.join(\" \");\n\t      } else {\n\t        this.active = false;\n\t        this.el.style.gridTemplateColumns = void 0;\n\t      }\n\t    }\n\t  }\n\t  /* When the placement changes, we need to parse it and update this element's\n\t  grid-column property in order to correctly place it within the parent grid.\n\t  Used to support sticky areas */\n\t  placementObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.el.style.gridColumn = `${newValue[0]} / span ${newValue[1]}`;\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.assignGridTemplate(this.gridTemplate);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"1aea5ba210d6229aeef7297d2d68d46e90a6a758\", class: \"market-table-area\" }, index.h(\"slot\", { key: \"390fcebf799c9e22f333e3a18839f1df959f3c31\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"gridTemplate\": [\"assignGridTemplate\"],\n\t      \"placement\": [\"placementObserver\"]\n\t    };\n\t  }\n\t};\n\tMarketTableArea.style = MarketTableAreaStyle0;\n\tmarketTableArea_cjs_entry.market_table_area = MarketTableArea;\n\treturn marketTableArea_cjs_entry;\n}\n\nvar marketTableCell_cjs_entry = {};\n\nvar hasRequiredMarketTableCell_cjs_entry;\n\nfunction requireMarketTableCell_cjs_entry () {\n\tif (hasRequiredMarketTableCell_cjs_entry) return marketTableCell_cjs_entry;\n\thasRequiredMarketTableCell_cjs_entry = 1;\n\tObject.defineProperty(marketTableCell_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTableCellCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;display:flex;justify-content:flex-start;align-items:center;overflow:hidden;padding:var(--table-cell-vertical-padding-size, 12px) var(--table-cell-horizontal-padding-size, 8px);background-color:var(--table-cell-state-normal-background-color, var(--core-surface-10-color));font-weight:var(--table-cell-primary-text-font-weight, var(--core-type-paragraph-20-weight));font-size:var(--table-cell-primary-text-font-size, var(--core-type-paragraph-20-size));line-height:var(--table-cell-primary-text-line-height, var(--core-type-paragraph-20-leading));text-overflow:ellipsis}:host([align=\"right\"]){justify-content:flex-end}:host([align=\"right\"]) .sorting-caret{order:-1;margin-right:var(--table-heading-sort-icon-space-size, 8px);margin-left:0}:host([stickTo=\"left\"]){position:sticky;grid-area:left;border-right:var(--table-fixed-column-border-width, 1px)\\n      solid\\n      var(--table-fixed-column-border-color, var(--core-divider-20-color))}:host([stickTo=\"right\"]){grid-area:right;border-left:var(--table-fixed-column-border-width, 1px)\\n      solid\\n      var(--table-fixed-column-border-color, var(--core-divider-20-color))}:host{--transition-duration:var(--core-animation-enter-transition-moderate-speed-duration);transition:background-color var(--transition-duration)}@media (hover: hover){:host{}:host([interactive]:not([disabled]):hover){background-color:var(--table-cell-hover-state-background-color)}}:host([interactive]){cursor:pointer}:host([interactive]:focus){outline:none;}:host([interactive]:not([disabled]):focus){background-color:var(--table-cell-focus-state-background-color)}:host([interactive]:not([disabled]):active){background-color:var(--table-cell-pressed-state-background-color)}:host([active]){background-color:var(--table-cell-selected-state-background-color)}:host([interactive][disabled]){pointer-events:none}:host([disabled]){background-color:transparent;color:var(--table-cell-disabled-state-text-color);pointer-events:none}:host([hidden]){display:none}:host(:first-of-type){padding-left:var(--table-cell-padding, 8px)}:host(:first-of-type) ::slotted(button){all:unset;display:flex;justify-content:space-between;align-items:center;padding-right:var(--core-metrics-spacing-100);padding-left:calc(\\n        var(--cell-indent-level) *\\n        var(--table-row-indentation-padding, 40px) +\\n        var(--core-metrics-spacing-100)\\n      );color:var(--table-cell-normal-state-content-color, var(--core-fill-black-color));cursor:pointer}:host(:first-of-type) ::slotted(button):focus-visible{outline:none}:host(:first-of-type) ::slotted(button):focus{color:var(--table-accordion-focus-state-content-color, var(--core-fill-black-color))}:host(:first-of-type) ::slotted(button):hover{color:var(--table-accordion-hover-state-content-color, var(--core-fill-black-color))}:host(:first-of-type) ::slotted(button):active{color:var(--table-accordion-pressed-state-content-color, var(--core-fill-black-color))}:host(:first-of-type) ::slotted([slot=\"nested-row-indicator\"]){height:100%}:host(:first-of-type) ::slotted([slot=\"nested-row-indicator\"]:focus-visible){z-index:1;border-radius:var(--core-radius-66);outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color)}::slotted([slot=\"leading-accessory\"][size=\"image\"]){margin-right:16px;margin-left:12px}::slotted([slot=\"leading-accessory\"][size=\"icon\"]){margin-right:16px;margin-left:16px}::slotted([slot=\"trailing-accessory\"][size=\"image\"]){margin-right:12px;margin-left:16px}::slotted([slot=\"trailing-accessory\"][size=\"icon\"]){margin-right:16px;margin-left:16px}::slotted([slot=\"nested-row-indicator\"]){color:var(--table-cell-normal-state-content-color, var(--core-fill-black-color))}::slotted([slot=\"nested-row-indicator\"]:focus){color:var(--table-accordion-focus-state-content-color, var(--core-fill-black-color))}::slotted([slot=\"nested-row-indicator\"]:hover){color:var(--table-accordion-hover-state-content-color, var(--core-fill-black-color))}::slotted([slot=\"nested-row-indicator\"]:active){color:var(--table-accordion-pressed-state-content-color, var(--core-fill-black-color))}';\n\tconst MarketTableCellStyle0 = marketTableCellCss;\n\tconst MarketTableCell = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTableCellClicked = index.createEvent(this, \"marketTableCellClicked\", 7);\n\t    this.align = false;\n\t    this.column = void 0;\n\t    this.leadingIndentation = 0;\n\t    this.active = false;\n\t    this.interactive = false;\n\t    this.disabled = false;\n\t    this.originalSlot = void 0;\n\t    this.hidden = false;\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Forwards appropriate properties from matching header market-table-column element to this cell.\n\t   */\n\t  _updateColumnRelatedProperties(column) {\n\t    if (!column) {\n\t      return Promise.resolve();\n\t    }\n\t    this.column = column.name;\n\t    this.align = column.align;\n\t    this.hidden = column.hidden;\n\t    if (column.stickTo) {\n\t      this._stickSelf(column.stickTo);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Sets properties specified in the row element. Leading and trailing\n\t   * accessories are best set on the first or last cell to not mess\n\t   * with the grid structure\n\t   * @param rowEl\n\t   */\n\t  _updateFirstCellProperties(rowEl) {\n\t    this.leadingIndentation = rowEl.leadingIndentation || 0;\n\t    this.el.style.setProperty(\"--cell-indent-level\", `${this.leadingIndentation}`);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Moves this column into a slot inside the market-table-area\n\t   * which is fixed to the provided edge (position), allowing\n\t   * for fixed columns\n\t   */\n\t  _stickSelf(position) {\n\t    if (position) {\n\t      this.el.slot = `sticky-${position}`;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Moves this column back into it's original slot from a slot\n\t   * within a fixed market-table-area\n\t   */\n\t  _unstickSelf() {\n\t    if (!this.originalSlot) {\n\t      this.el.removeAttribute(\"slot\");\n\t    } else {\n\t      this.el.slot = this.originalSlot;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  componentWillLoad() {\n\t    this.originalSlot = this.el.getAttribute(\"slot\");\n\t  }\n\t  handleClick() {\n\t    if (this.interactive) {\n\t      this.marketTableCellClicked.emit();\n\t    }\n\t  }\n\t  handleKeydown(e) {\n\t    if (e.target !== this.el) {\n\t      return;\n\t    }\n\t    switch (e.key) {\n\t      case \"Enter\":\n\t        this.handleClick();\n\t        break;\n\t      case \" \":\n\t        this.handleClick();\n\t        e.preventDefault();\n\t        break;\n\t    }\n\t  }\n\t  render() {\n\t    const { disabled, interactive, align, hidden } = this;\n\t    return index.h(index.Host, { key: \"b41603a60df2a5762aab2cd4f14d44f13ac5c718\", class: \"market-table-cell\", role: \"cell\", align: align === \"right\" && align, hidden, tabindex: interactive && !disabled ? \"0\" : null, onClick: () => this.handleClick(), onKeydown: (e) => this.handleKeydown(e) }, index.h(\"slot\", { key: \"06f544309fb8b58adf434c22189703adef8bb445\", name: \"nested-row-indicator\" }), index.h(\"slot\", { key: \"2abebc9e841a66f9ece9df05c3e190cb8715013b\", name: \"leading-accessory\" }), index.h(\"slot\", { key: \"3b491e0f4a37787412947dc98ab47faff2ea7923\" }), index.h(\"slot\", { key: \"f3fecab4c3e4eae656c7e1f64b625fe078a072dd\", name: \"trailing-accessory\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketTableCell.style = MarketTableCellStyle0;\n\tmarketTableCell_cjs_entry.market_table_cell = MarketTableCell;\n\treturn marketTableCell_cjs_entry;\n}\n\nvar marketTableColumn_cjs_entry = {};\n\nvar hasRequiredMarketTableColumn_cjs_entry;\n\nfunction requireMarketTableColumn_cjs_entry () {\n\tif (hasRequiredMarketTableColumn_cjs_entry) return marketTableColumn_cjs_entry;\n\thasRequiredMarketTableColumn_cjs_entry = 1;\n\tObject.defineProperty(marketTableColumn_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTableColumnCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;display:flex;justify-content:flex-start;align-items:center;overflow:hidden;padding:var(--table-cell-vertical-padding-size, 12px) var(--table-cell-horizontal-padding-size, 8px);background-color:var(--table-cell-state-normal-background-color, var(--core-surface-10-color));font-weight:var(--table-cell-primary-text-font-weight, var(--core-type-paragraph-20-weight));font-size:var(--table-cell-primary-text-font-size, var(--core-type-paragraph-20-size));line-height:var(--table-cell-primary-text-line-height, var(--core-type-paragraph-20-leading));text-overflow:ellipsis}:host([align=\"right\"]){justify-content:flex-end}:host([align=\"right\"]) .sorting-caret{order:-1;margin-right:var(--table-heading-sort-icon-space-size, 8px);margin-left:0}:host([stickTo=\"left\"]){position:sticky;grid-area:left;border-right:var(--table-fixed-column-border-width, 1px)\\n      solid\\n      var(--table-fixed-column-border-color, var(--core-divider-20-color))}:host([stickTo=\"right\"]){grid-area:right;border-left:var(--table-fixed-column-border-width, 1px)\\n      solid\\n      var(--table-fixed-column-border-color, var(--core-divider-20-color))}:host{font-weight:var(--table-heading-primary-text-font-weight, 500);font-size:var(--table-heading-primary-text-font-size, var(--core-type-semibold-20-size));line-height:var(--table-heading-primary-text-line-height, var(--core-type-semibold-20-leading))}:host([sortable]){cursor:pointer;transition:background-color\\n      var(--core-animation-enter-transition-fast-speed-duration)\\n      var(--core-animation-enter-transition-fast-speed-duration-easing)}:host([sortable]:hover){background-color:var(--table-heading-hover-state-background-color, var(--core-fill-50-color))}:host([sortable]:active){background-color:var(--table-heading-active-state-background-color, var(--core-emphasis-40-color))}:host([sort-order]) .sorting-caret{fill:var(--table-heading-sortable-variant-active-state-caret-color, var(--core-text-10-color))}:host([sort-order=\"descending\"]) .sorting-caret{transform:rotate(0deg)}:host([hidden]){display:none}.sorting-caret{margin-left:var(--table-heading-sort-icon-space-size, 8px);fill:var(--table-heading-sortable-variant-normal-state-caret-color, var(--core-text-30-color));transition:color\\n    var(--core-animation-enter-transition-fast-speed-duration)\\n    var(--core-animation-enter-transition-fast-speed-duration-easing);transform:rotate(180deg)}::slotted([slot=\"leading-accessory\"][size=\"image\"]){margin-right:16px;margin-left:12px}::slotted([slot=\"leading-accessory\"][size=\"icon\"]){margin-right:16px;margin-left:16px}::slotted([slot=\"trailing-accessory\"][size=\"image\"]){margin-right:12px;margin-left:16px}::slotted([slot=\"trailing-accessory\"][size=\"icon\"]){margin-right:16px;margin-left:16px}button{display:flex;align-items:center;padding:0;border:inherit;background-color:transparent;color:unset;font:inherit}';\n\tconst MarketTableColumnStyle0 = marketTableColumnCss;\n\tconst MarketTableColumn = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTableColumnStick = index.createEvent(this, \"marketTableColumnStick\", 7);\n\t    this.marketTableColumnUnstick = index.createEvent(this, \"marketTableColumnUnstick\", 7);\n\t    this.marketTableColumnSort = index.createEvent(this, \"marketTableColumnSort\", 7);\n\t    this.marketTableColumnVisibilityChange = index.createEvent(this, \"marketTableColumnVisibilityChange\", 7);\n\t    this.name = void 0;\n\t    this.align = false;\n\t    this.stickTo = void 0;\n\t    this.sortable = false;\n\t    this.sortOrder = void 0;\n\t    this.hidden = false;\n\t    this.index = 0;\n\t    this.width = void 0;\n\t    this.originalSlot = void 0;\n\t  }\n\t  emitVisibilityChangeEvent(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.marketTableColumnVisibilityChange.emit({\n\t        columnName: this.name,\n\t        hidden: newValue\n\t      });\n\t    }\n\t  }\n\t  async emitStickyEvents(newValue, oldValue) {\n\t    if (newValue && newValue !== oldValue) {\n\t      await this.stick(newValue);\n\t    } else {\n\t      this.unstick(newValue);\n\t    }\n\t  }\n\t  /**\n\t   * Fixes this column to the provided table edge (position)\n\t   */\n\t  stick(position) {\n\t    if (position !== this.stickTo) {\n\t      this.stickTo = position;\n\t    } else {\n\t      this.marketTableColumnStick.emit({\n\t        position,\n\t        index: this.index\n\t      });\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Un-fixes this column from any table edge\n\t   */\n\t  unstick(position) {\n\t    this.marketTableColumnUnstick.emit({\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      position,\n\t      index: this.index\n\t    });\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Moves this column into a slot inside the market-table-area\n\t   * which is fixed to the provided edge (position), allowing\n\t   * for fixed columns\n\t   */\n\t  _stickSelf(position) {\n\t    if (position) {\n\t      this.el.slot = `sticky-${position}`;\n\t    }\n\t    this.stickTo = position;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Moves this column back into it's original slot from a slot\n\t   * within a fixed market-table-area\n\t   */\n\t  _unstickSelf() {\n\t    if (!this.originalSlot) {\n\t      this.el.removeAttribute(\"slot\");\n\t    } else {\n\t      this.el.slot = this.originalSlot;\n\t    }\n\t    this.el.removeAttribute(\"stick-to\");\n\t    return Promise.resolve();\n\t  }\n\t  clickHandler() {\n\t    if (this.sortable) {\n\t      this.marketTableColumnSort.emit({\n\t        column: this.name,\n\t        previousSortOrder: this.sortOrder\n\t      });\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.originalSlot = this.el.getAttribute(\"slot\");\n\t    if (!this.name) {\n\t      console.warn(\"Please set a name on <market-table-column>. Tables may not work correctly without this.\");\n\t    }\n\t  }\n\t  componentDidLoad() {\n\t    if (this.stickTo) {\n\t      this.stick(this.stickTo);\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"d669105d0c9ae41ef610e19685f8a215b94e4f85\", class: \"market-table-column\", align: this.align === \"right\" && this.align, role: \"columnheader\", \"aria-sort\": this.sortOrder, onClick: () => this.clickHandler() }, index.h(\"slot\", { key: \"e1dda1a2411a1b671aab5bed510479e76bf9259c\", name: \"leading-accessory\" }), this.sortable && // A11Y: This button allows screen readers to access and click on the column header.\n\t    index.h(\"button\", { key: \"20bea201d01a72e2bf52edf678a338b9c3c85b1a\" }, index.h(\"slot\", { key: \"a52ef83bc30b707ecf2244d8238493e69988373f\" }), index.h(\"svg\", { key: \"bd321eef940d20c3ef43b0ce512da469b21219fa\", width: \"16\", height: \"15\", viewBox: \"0 0 16 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", class: \"sorting-caret\", \"aria-hidden\": \"true\" }, index.h(\"path\", { key: \"a189ba280ca800a26e4005d7f245db72dce4056d\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M8.70709 14.7071C8.31657 15.0976 7.6834 15.0976 7.29288 14.7071L0.292879 7.7071L1.70709 6.29289L6.99999 11.5858L6.99999 -7.612e-07L8.99999 -5.86354e-07L8.99999 11.5858L14.2929 6.29289L15.7071 7.70711L8.70709 14.7071Z\" }))), !this.sortable && index.h(\"slot\", { key: \"2cb01acc2ca30d95ddaa12e5a2028b0f65c4dc8c\" }), index.h(\"slot\", { key: \"b82892fbb09d1433de0fdaa3bebdf5325f4caf94\", name: \"trailing-accessory\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"hidden\": [\"emitVisibilityChangeEvent\"],\n\t      \"stickTo\": [\"emitStickyEvents\"]\n\t    };\n\t  }\n\t};\n\tMarketTableColumn.style = MarketTableColumnStyle0;\n\tmarketTableColumn_cjs_entry.market_table_column = MarketTableColumn;\n\treturn marketTableColumn_cjs_entry;\n}\n\nvar marketTableRow_cjs_entry = {};\n\nvar hasRequiredMarketTableRow_cjs_entry;\n\nfunction requireMarketTableRow_cjs_entry () {\n\tif (hasRequiredMarketTableRow_cjs_entry) return marketTableRow_cjs_entry;\n\thasRequiredMarketTableRow_cjs_entry = 1;\n\tObject.defineProperty(marketTableRow_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketTableRowCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--transition-duration:var(--core-animation-enter-transition-moderate-speed-duration);position:relative;display:grid;grid-column:1 / -1;grid-auto-columns:1fr;grid-auto-flow:column;border-bottom:var(--table-border-width, 1px) solid var(--table-row-border-color, var(--core-divider-20-color));transition:background-color var(--transition-duration)}@media (hover: hover){:host{}:host([interactive]:not([disabled]):hover) ::slotted(.market-table-cell){background-color:var(--table-cell-hover-state-background-color, var(--core-fill-50-color))}}:host([header]){border-bottom:var(--table-border-width, 1px) solid var(--table-heading-border-color, var(--core-divider-10-color))}:host([footer]) ::slotted(.market-table-cell){border-bottom:none;font-weight:var(--table-footing-primary-text-font-weight, 500);font-size:var(--table-footing-primary-text-font-size, var(--core-type-semibold-20-size));line-height:var(--table-footing-primary-text-line-height, var(--core-type-semibold-20-leading))}:host([interactive]) ::slotted(.market-table-cell){cursor:pointer}:host([interactive]:focus){outline:none;}:host([interactive]:not([disabled]):focus) ::slotted(.market-table-cell){background-color:var(--table-cell-focus-state-background-color)}:host([interactive]:not([disabled]):active) ::slotted(.market-table-cell){background-color:var(--table-cell-pressed-state-background-color)}:host([active]) ::slotted(.market-table-cell){background-color:var(--table-cell-selected-state-background-color)}:host([active]) ::slotted(.market-table-cell),:host([interactive]:not([disabled]):active) ::slotted(.market-table-cell){background-color:var(--table-cell-pressed-state-background-color, var(--core-emphasis-40-color))}:host([interactive][disabled]){pointer-events:none}:host([disabled]) ::slotted(.market-table-cell){background-color:transparent;color:var(--table-cell-disabled-state-text-color, var(--core-text-30-color));pointer-events:none}:host([nested]) ::slotted(.market-table-cell:first-of-type){padding-left:calc(\\n        (\\n          var(--cell-indent-level) *\\n          var(--table-row-indentation-padding, 40px)\\n        ) +\\n        var(--table-cell-padding, 8px) +\\n        var(--table-accordion-content-width, 30px)\\n      )}:host([slot='custom-trigger']) ::slotted(.market-table-cell:first-of-type),:host([slot='header']) ::slotted(.market-table-cell:first-of-type),:host([slot='footer']) ::slotted(.market-table-cell:first-of-type){padding-left:var(--table-cell-padding, 8px)}:host ::slotted(.market-table-cell:first-of-type){padding-left:calc(\\n      var(--table-cell-padding, 8px) +\\n      (var(--cell-indent-level) * var(--table-row-indentation-padding, 40px))\\n    )}\";\n\tconst MarketTableRowStyle0 = marketTableRowCss;\n\tconst MarketTableRow = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTableHeaderLoaded = index.createEvent(this, \"marketTableHeaderLoaded\", 7);\n\t    this.marketTableRowClicked = index.createEvent(this, \"marketTableRowClicked\", 7);\n\t    this.marketTableRowStick = index.createEvent(this, \"marketTableRowStick\", 7);\n\t    this.marketTableRowUnstick = index.createEvent(this, \"marketTableRowUnstick\", 7);\n\t    this.marketAccordionToggled = index.createEvent(this, \"marketAccordionToggled\", 7);\n\t    this.marketNestedRowToggled = index.createEvent(this, \"marketNestedRowToggled\", 7);\n\t    this.componentLoaded = false;\n\t    this.leadingIndentation = 0;\n\t    this.stickTo = false;\n\t    this.sticky = void 0;\n\t    this.active = false;\n\t    this.interactive = false;\n\t    this.disabled = false;\n\t    this.selected = false;\n\t    this.header = false;\n\t    this.footer = false;\n\t    this.originalSlot = void 0;\n\t    this.index = 0;\n\t    this.tableColumns = void 0;\n\t    this.cells = void 0;\n\t    this.gridTemplateMain = [];\n\t    this.gridTemplateLeft = [];\n\t    this.gridTemplateRight = [];\n\t    this.expanded = false;\n\t    this.nested = false;\n\t    this.styleDeclaration = void 0;\n\t    this.gridTemplate = [];\n\t    this.nestedRowToggleButton = void 0;\n\t  }\n\t  formNewGridTemplate() {\n\t    this.gridTemplate = [...this.gridTemplateLeft, ...this.gridTemplateMain, ...this.gridTemplateRight];\n\t    if (this.tableAreaLeft) {\n\t      this.tableAreaLeft.placement = [1, this.gridTemplateLeft.length];\n\t    }\n\t    if (this.tableAreaMain) {\n\t      this.tableAreaMain.placement = [this.gridTemplateLeft.length + 1, this.gridTemplateMain.length];\n\t    }\n\t    if (this.tableAreaRight) {\n\t      this.tableAreaRight.placement = [\n\t        this.gridTemplateLeft.length + this.gridTemplateMain.length + 1,\n\t        this.gridTemplateRight.length\n\t      ];\n\t    }\n\t  }\n\t  gridTemplateObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.el.style.gridTemplateColumns = newValue.join(\" \");\n\t    }\n\t  }\n\t  stickyObserver(newValue, oldValue) {\n\t    if (newValue !== oldValue) {\n\t      this.emitStickyEvents();\n\t    }\n\t  }\n\t  columnsObserver(columns) {\n\t    this.setCellColumnProperties(columns);\n\t  }\n\t  updateCellProperties(oldCellList, newCellList) {\n\t    if (oldCellList !== newCellList) {\n\t      this.setCellColumnProperties(this.tableColumns);\n\t    }\n\t  }\n\t  updateFirstCellProperties() {\n\t    this._setFirstCellProperties();\n\t  }\n\t  updateNestedRowButton() {\n\t    if (this.nestedRowToggleButton) {\n\t      this.nestedRowToggleButton.ariaExpanded = `${this.expanded}`;\n\t      const svgElement = this.nestedRowToggleButton.querySelector(\"svg\");\n\t      if (svgElement) {\n\t        if (this.expanded) {\n\t          svgElement.style.transform = \"rotate(-180deg)\";\n\t        } else {\n\t          svgElement.style.transform = \"rotate(0deg)\";\n\t        }\n\t      }\n\t    }\n\t  }\n\t  updateSlottedControlCheckedValue() {\n\t    var _a;\n\t    (_a = this.slottedControl) === null || _a === void 0 ? void 0 : _a.setSelection(this.selected);\n\t  }\n\t  updateSlottedControlDisabledValue() {\n\t    var _a;\n\t    (_a = this.slottedControl) === null || _a === void 0 ? void 0 : _a.setDisabled(this.disabled);\n\t  }\n\t  handleMarketCheckboxValueChange(event) {\n\t    if (event.target !== this.slottedControl) {\n\t      return;\n\t    }\n\t    this.selected = event.detail.current;\n\t  }\n\t  /**\n\t   * Sticks this row to the provided edge (position) of the table\n\t   */\n\t  stick(position) {\n\t    if (position) {\n\t      this.stickTo = position;\n\t    } else if (this.header || this.footer) {\n\t      this.sticky = true;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Unsticks this row from any edge of the table\n\t   */\n\t  unstick() {\n\t    this.sticky = false;\n\t    this.stickTo = false;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Used by the parent table to support fixing columns to either side of the table\n\t   */\n\t  async _stickColumn(column, position) {\n\t    const cell = this.el.querySelector(`[name=\"${column}\"], [column=\"${column}\"]`);\n\t    if (cell) {\n\t      await cell._stickSelf(position);\n\t    } else {\n\t      console.warn(\"cannot stick cell to unknown position\");\n\t    }\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Used by the parent table to support fixing columns to either side of the table\n\t   */\n\t  async _unstickColumn(column) {\n\t    const cell = this.el.querySelector(`[name=\"${column}\"], [column=\"${column}\"]`);\n\t    if (cell) {\n\t      await cell._unstickSelf();\n\t    } else {\n\t      console.warn(\"cannot unstick cell from unknown position\");\n\t    }\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Sets the hidden prop on market-table-cell. Used by market-table to allow market-table-column\n\t   * to control the hidden/visible state of its associated table cells.\n\t   */\n\t  _syncColumnVisibilityWithCells(columnName, hidden) {\n\t    const cell = this.el.querySelector(`[name=\"${columnName}\"], [column=\"${columnName}\"]`);\n\t    if (cell) {\n\t      cell.hidden = hidden;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * **INTERNAL [do not use directly]**\n\t   * Sets properties computed or specified on the row on the first\n\t   * cell to keep the table rows from shifting\n\t   */\n\t  _setFirstCellProperties() {\n\t    var _a, _b, _c;\n\t    if (((_a = this.cells) === null || _a === void 0 ? void 0 : _a.length) && this.isStylableCell(this.cells[0])) {\n\t      (_c = (_b = this.cells[0])._updateFirstCellProperties) === null || _c === void 0 ? void 0 : _c.call(_b, this.el);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets the leadingIndentation\n\t   * @param leadingIndentation\n\t   */\n\t  setLeadingIndentation(leadingIndentation) {\n\t    this.leadingIndentation = leadingIndentation;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets expanded property and emits nested row toggle event\n\t   */\n\t  toggleNestedRow() {\n\t    this.expanded = !this.expanded;\n\t    this.marketAccordionToggled.emit({ expanded: this.expanded });\n\t    this.marketNestedRowToggled.emit({ expanded: this.expanded });\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Checks type of cell to make Typescript happy about using functions that are only on\n\t   * HTMLMarketTableCellElement and not HTMLMarketTableColumnElement\n\t   * @param cell\n\t   * @returns\n\t   */\n\t  isStylableCell(cell) {\n\t    return cell._updateColumnRelatedProperties !== void 0 && cell._updateFirstCellProperties !== void 0;\n\t  }\n\t  setCellColumnProperties(columns) {\n\t    if (this.cells && columns && columns.length > 0) {\n\t      this.cells.forEach((cell, i) => {\n\t        if (this.isStylableCell(cell)) {\n\t          const column = columns[i];\n\t          cell._updateColumnRelatedProperties(column);\n\t        }\n\t      });\n\t    }\n\t  }\n\t  emitStickyEvents() {\n\t    let position;\n\t    if (this.stickTo) {\n\t      position = this.stickTo;\n\t    } else if (this.header) {\n\t      position = \"top\";\n\t    } else if (this.footer) {\n\t      position = \"bottom\";\n\t    }\n\t    if (this.sticky || this.stickTo) {\n\t      this.marketTableRowStick.emit({\n\t        position,\n\t        index: this.index\n\t      });\n\t    } else if (this.componentLoaded) {\n\t      this.marketTableRowUnstick.emit({\n\t        position,\n\t        index: this.index\n\t      });\n\t    }\n\t  }\n\t  componentWillLoad() {\n\t    this.originalSlot = this.el.slot;\n\t    this.header = this.originalSlot === \"header\";\n\t    this.footer = this.originalSlot === \"footer\";\n\t    this.cells = this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-table-cell\"));\n\t  }\n\t  handleSlotChange() {\n\t    this.cells = this.el.querySelectorAll(`${index$1.getNamespacedTagFor(\"market-table-cell\")}, ${index$1.getNamespacedTagFor(\"market-table-column\")}`);\n\t    if (this.header) {\n\t      this.marketTableHeaderLoaded.emit({\n\t        columns: this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-table-column\"))\n\t      });\n\t    }\n\t    this.emitStickyEvents();\n\t  }\n\t  _getMarketRowElement(element) {\n\t    return element.querySelector(index$1.getNamespacedTagFor(\"market-table-row\"));\n\t  }\n\t  _addCaretButtonToFirstCell() {\n\t    if (this.cells && this.cells[0]) {\n\t      this.nestedRowToggleButton = document.createElement(\"button\");\n\t      Object.assign(this.nestedRowToggleButton, {\n\t        slot: \"nested-row-indicator\",\n\t        type: \"button\",\n\t        ariaExpanded: `${this.expanded}`,\n\t        onclick: () => this.toggleNestedRow()\n\t      });\n\t      this.nestedRowToggleButton.innerHTML = `<svg class=\"caret\" width=\"14\" height=\"8\" viewBox=\"0 0 14 8\" fill=\"none\" style=\"transition-duration:300ms;\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M7.70715 7.70711C7.31663 8.09763 6.68346 8.09763 6.29294 7.70711L0.29294 1.70711L1.70715 0.292892L7.00005 5.58579L12.2929 0.292893L13.7072 1.70711L7.70715 7.70711Z\"\n            fill=\"currentColor\"\n          />\n        </svg>`;\n\t      this.cells[0].append(this.nestedRowToggleButton);\n\t    }\n\t  }\n\t  _registerSlottedControl() {\n\t    this.slottedControl = this.el.querySelector([\n\t      `[slot=\"control\"] ${index$1.getNamespacedTagFor(\"market-checkbox\")}`,\n\t      `[slot=\"control\"] ${index$1.getNamespacedTagFor(\"market-toggle\")}`\n\t    ].join(\",\"));\n\t    if (this.slottedControl) {\n\t      this.slottedControl.setDisabled(this.disabled);\n\t      this.slottedControl.setSelection(this.selected);\n\t    }\n\t  }\n\t  componentDidRender() {\n\t    var _a, _b;\n\t    const accordionElement = this.el.closest(index$1.getNamespacedTagFor(\"market-accordion-item\"));\n\t    if (accordionElement) {\n\t      let parentRow;\n\t      if (this.el.slot === \"custom-trigger\") {\n\t        const parentAccordionElement = (_a = accordionElement.parentElement) === null || _a === void 0 ? void 0 : _a.closest(index$1.getNamespacedTagFor(\"market-accordion-item\"));\n\t        if (parentAccordionElement) {\n\t          parentRow = [...parentAccordionElement.children].find((child) => child.slot === \"custom-trigger\");\n\t        }\n\t      } else {\n\t        parentRow = [...accordionElement.children].find((child) => child.slot === \"custom-trigger\");\n\t      }\n\t      this.leadingIndentation = parentRow ? ((_b = parentRow.leadingIndentation) !== null && _b !== void 0 ? _b : 0) + 1 : 0;\n\t    }\n\t    this._setFirstCellProperties();\n\t  }\n\t  componentDidLoad() {\n\t    this.componentLoaded = true;\n\t    if (this.el.slot === \"custom-trigger\") {\n\t      this._addCaretButtonToFirstCell();\n\t      const svgElement = this.nestedRowToggleButton.querySelector(\"svg\");\n\t      if (svgElement && this.expanded) {\n\t        svgElement.style.transform = \"rotate(-180deg)\";\n\t      }\n\t    }\n\t  }\n\t  handleClick(e) {\n\t    const ignoredElementTagNames = [\n\t      index$1.getNamespacedTagFor(\"market-accessory\"),\n\t      index$1.getNamespacedTagFor(\"market-button\"),\n\t      index$1.getNamespacedTagFor(\"market-button-dropdown\"),\n\t      index$1.getNamespacedTagFor(\"market-checkbox\"),\n\t      index$1.getNamespacedTagFor(\"market-link\"),\n\t      index$1.getNamespacedTagFor(\"market-toggle\"),\n\t      \"button\",\n\t      \"a\"\n\t      // add more interactive element tag names here\n\t    ];\n\t    const shouldIgnoreClick = ignoredElementTagNames.some((tagname) => e.target.closest(tagname));\n\t    if (shouldIgnoreClick) {\n\t      return;\n\t    }\n\t    if (this.interactive) {\n\t      this.marketTableRowClicked.emit();\n\t    }\n\t  }\n\t  handleKeydown(e) {\n\t    if (e.target !== this.el) {\n\t      return;\n\t    }\n\t    switch (e.key) {\n\t      case \"Enter\":\n\t        this.handleClick(e);\n\t        break;\n\t      case \" \":\n\t        this.handleClick(e);\n\t        e.preventDefault();\n\t        break;\n\t    }\n\t  }\n\t  render() {\n\t    const { disabled, footer, gridTemplateLeft, gridTemplateMain, gridTemplateRight, header, interactive, selected, slottedControl } = this;\n\t    const MarketTableAreaTagName = index$1.getNamespacedTagFor(\"market-table-area\");\n\t    return index.h(index.Host, { key: \"eea6bf6f223982e1c4a0e948acfcbc083988bf93\", \"aria-selected\": slottedControl ? Boolean(selected).toString() : null, class: \"market-table-row\", role: \"row\", tabindex: interactive && !disabled ? \"0\" : null, header, footer, onClick: (e) => this.handleClick(e), onKeydown: (e) => this.handleKeydown(e) }, index.h(MarketTableAreaTagName, {\n\t      key: \"842b98506d0055c57f16b6b0d42fc8ce325deb94\",\n\t      orientation: \"vertical\",\n\t      \"stick-to\": \"left\",\n\t      gridTemplate: gridTemplateLeft,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.tableAreaLeft = el\n\t    }, index.h(\"slot\", { key: \"2c0abc8c65eab2ea79d7bc16ce6f0e353fdc6fdc\", name: \"sticky-left\" })), index.h(MarketTableAreaTagName, {\n\t      key: \"a41edf771e4fbaf36c409ac6ac54689c61e7c82d\",\n\t      orientation: \"vertical\",\n\t      gridTemplate: gridTemplateMain,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.tableAreaMain = el,\n\t      active: true\n\t    }, index.h(\"slot\", { key: \"8b72ebef2087ae0a9e8efa1d4c3310baaf29d2f5\", name: \"control\", onSlotchange: () => this._registerSlottedControl() }), index.h(\"slot\", { key: \"c3885faf2bb3f61b5be368ffb88a3768fa48488c\", onSlotchange: () => this.handleSlotChange() })), index.h(MarketTableAreaTagName, {\n\t      key: \"c91aa618635fce3d23d2f77ae0e8c50b26fd9798\",\n\t      orientation: \"vertical\",\n\t      \"stick-to\": \"right\",\n\t      gridTemplate: gridTemplateRight,\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.tableAreaRight = el\n\t    }, index.h(\"slot\", { key: \"a1413866529e8210207b320b92e6fccb0623317e\", name: \"sticky-right\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"gridTemplateMain\": [\"formNewGridTemplate\"],\n\t      \"gridTemplateLeft\": [\"formNewGridTemplate\"],\n\t      \"gridTemplateRight\": [\"formNewGridTemplate\"],\n\t      \"gridTemplate\": [\"gridTemplateObserver\"],\n\t      \"stickTo\": [\"stickyObserver\"],\n\t      \"sticky\": [\"stickyObserver\"],\n\t      \"tableColumns\": [\"columnsObserver\"],\n\t      \"cells\": [\"updateCellProperties\"],\n\t      \"leadingIndentation\": [\"updateFirstCellProperties\"],\n\t      \"expanded\": [\"updateNestedRowButton\"],\n\t      \"selected\": [\"updateSlottedControlCheckedValue\"],\n\t      \"disabled\": [\"updateSlottedControlDisabledValue\"]\n\t    };\n\t  }\n\t};\n\tMarketTableRow.style = MarketTableRowStyle0;\n\tmarketTableRow_cjs_entry.market_table_row = MarketTableRow;\n\treturn marketTableRow_cjs_entry;\n}\n\nvar marketTableV2_cjs_entry = {};\n\nvar utils94f130b4 = {};\n\nvar hasRequiredUtils94f130b4;\n\nfunction requireUtils94f130b4 () {\n\tif (hasRequiredUtils94f130b4) return utils94f130b4;\n\thasRequiredUtils94f130b4 = 1;\n\tconst draggable = requireDraggableA7663027();\n\tconst index = requireIndexB1e6d30f();\n\tconst index$1 = requireIndexF2237153();\n\tfunction assign(target, object) {\n\t  if (target == null) {\n\t    throw new TypeError(\"assign requires that input parameter not be null or undefined\");\n\t  }\n\t  for (var property in object) {\n\t    if (Object.prototype.hasOwnProperty.call(object, property)) {\n\t      target[property] = object[property];\n\t    }\n\t  }\n\t  return target;\n\t}\n\tfunction _arrayLikeToArray(arr, len) {\n\t  if (len == null || len > arr.length) len = arr.length;\n\t  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\t  return arr2;\n\t}\n\tfunction _unsupportedIterableToArray(o, minLen) {\n\t  if (!o) return;\n\t  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n\t  var n = Object.prototype.toString.call(o).slice(8, -1);\n\t  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n\t  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n\t  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n\t}\n\tfunction _createForOfIteratorHelper(o, allowArrayLike) {\n\t  var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\t  if (!it) {\n\t    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike) {\n\t      if (it) o = it;\n\t      var i = 0;\n\t      var F = function F2() {\n\t      };\n\t      return {\n\t        s: F,\n\t        n: function n() {\n\t          if (i >= o.length) return {\n\t            done: true\n\t          };\n\t          return {\n\t            done: false,\n\t            value: o[i++]\n\t          };\n\t        },\n\t        e: function e(_e) {\n\t          throw _e;\n\t        },\n\t        f: F\n\t      };\n\t    }\n\t    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n\t  }\n\t  var normalCompletion = true, didErr = false, err;\n\t  return {\n\t    s: function s() {\n\t      it = it.call(o);\n\t    },\n\t    n: function n() {\n\t      var step = it.next();\n\t      normalCompletion = step.done;\n\t      return step;\n\t    },\n\t    e: function e(_e2) {\n\t      didErr = true;\n\t      err = _e2;\n\t    },\n\t    f: function f() {\n\t      try {\n\t        if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n\t      } finally {\n\t        if (didErr) throw err;\n\t      }\n\t    }\n\t  };\n\t}\n\tfunction _assertThisInitialized(self) {\n\t  if (self === void 0) {\n\t    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\t  }\n\t  return self;\n\t}\n\tfunction _setPrototypeOf(o, p) {\n\t  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {\n\t    o2.__proto__ = p2;\n\t    return o2;\n\t  };\n\t  return _setPrototypeOf(o, p);\n\t}\n\tfunction _inherits(subClass, superClass) {\n\t  if (typeof superClass !== \"function\" && superClass !== null) {\n\t    throw new TypeError(\"Super expression must either be null or a function\");\n\t  }\n\t  subClass.prototype = Object.create(superClass && superClass.prototype, {\n\t    constructor: {\n\t      value: subClass,\n\t      writable: true,\n\t      configurable: true\n\t    }\n\t  });\n\t  Object.defineProperty(subClass, \"prototype\", {\n\t    writable: false\n\t  });\n\t  if (superClass) _setPrototypeOf(subClass, superClass);\n\t}\n\tfunction _getPrototypeOf(o) {\n\t  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o2) {\n\t    return o2.__proto__ || Object.getPrototypeOf(o2);\n\t  };\n\t  return _getPrototypeOf(o);\n\t}\n\tfunction _isNativeReflectConstruct() {\n\t  try {\n\t    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n\t    }));\n\t  } catch (t2) {\n\t  }\n\t  return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() {\n\t    return !!t;\n\t  })();\n\t}\n\tfunction _possibleConstructorReturn(self, call) {\n\t  if (call && (index._typeof(call) === \"object\" || typeof call === \"function\")) {\n\t    return call;\n\t  } else if (call !== void 0) {\n\t    throw new TypeError(\"Derived constructors may only return object or undefined\");\n\t  }\n\t  return _assertThisInitialized(self);\n\t}\n\tfunction _createSuper(Derived) {\n\t  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\t  return function _createSuperInternal() {\n\t    var Super = _getPrototypeOf(Derived), result;\n\t    if (hasNativeReflectConstruct) {\n\t      var NewTarget = _getPrototypeOf(this).constructor;\n\t      result = Reflect.construct(Super, arguments, NewTarget);\n\t    } else {\n\t      result = Super.apply(this, arguments);\n\t    }\n\t    return _possibleConstructorReturn(this, result);\n\t  };\n\t}\n\tfunction _classCallCheck(instance, Constructor) {\n\t  if (!(instance instanceof Constructor)) {\n\t    throw new TypeError(\"Cannot call a class as a function\");\n\t  }\n\t}\n\tfunction toPrimitive(t, r) {\n\t  if (\"object\" != index._typeof(t) || !t) return t;\n\t  var e = t[Symbol.toPrimitive];\n\t  if (void 0 !== e) {\n\t    var i = e.call(t, r);\n\t    if (\"object\" != index._typeof(i)) return i;\n\t    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n\t  }\n\t  return (\"string\" === r ? String : Number)(t);\n\t}\n\tfunction toPropertyKey(t) {\n\t  var i = toPrimitive(t, \"string\");\n\t  return \"symbol\" == index._typeof(i) ? i : i + \"\";\n\t}\n\tfunction _defineProperties(target, props) {\n\t  for (var i = 0; i < props.length; i++) {\n\t    var descriptor = props[i];\n\t    descriptor.enumerable = descriptor.enumerable || false;\n\t    descriptor.configurable = true;\n\t    if (\"value\" in descriptor) descriptor.writable = true;\n\t    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n\t  }\n\t}\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t  Object.defineProperty(Constructor, \"prototype\", {\n\t    writable: false\n\t  });\n\t  return Constructor;\n\t}\n\tfunction _defineProperty(obj, key, value) {\n\t  key = toPropertyKey(key);\n\t  if (key in obj) {\n\t    Object.defineProperty(obj, key, {\n\t      value,\n\t      enumerable: true,\n\t      configurable: true,\n\t      writable: true\n\t    });\n\t  } else {\n\t    obj[key] = value;\n\t  }\n\t  return obj;\n\t}\n\tvar TIMEZONE_UNIT_PRIORITY = 10;\n\tvar Setter = /* @__PURE__ */ function() {\n\t  function Setter2() {\n\t    _classCallCheck(this, Setter2);\n\t    _defineProperty(this, \"priority\", void 0);\n\t    _defineProperty(this, \"subPriority\", 0);\n\t  }\n\t  _createClass(Setter2, [{\n\t    key: \"validate\",\n\t    value: function validate(_utcDate, _options) {\n\t      return true;\n\t    }\n\t  }]);\n\t  return Setter2;\n\t}();\n\tvar ValueSetter = /* @__PURE__ */ function(_Setter) {\n\t  _inherits(ValueSetter2, _Setter);\n\t  var _super = _createSuper(ValueSetter2);\n\t  function ValueSetter2(value, validateValue, setValue, priority, subPriority) {\n\t    var _this;\n\t    _classCallCheck(this, ValueSetter2);\n\t    _this = _super.call(this);\n\t    _this.value = value;\n\t    _this.validateValue = validateValue;\n\t    _this.setValue = setValue;\n\t    _this.priority = priority;\n\t    if (subPriority) {\n\t      _this.subPriority = subPriority;\n\t    }\n\t    return _this;\n\t  }\n\t  _createClass(ValueSetter2, [{\n\t    key: \"validate\",\n\t    value: function validate(utcDate, options) {\n\t      return this.validateValue(utcDate, this.value, options);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(utcDate, flags, options) {\n\t      return this.setValue(utcDate, flags, this.value, options);\n\t    }\n\t  }]);\n\t  return ValueSetter2;\n\t}(Setter);\n\tvar DateToSystemTimezoneSetter = /* @__PURE__ */ function(_Setter2) {\n\t  _inherits(DateToSystemTimezoneSetter2, _Setter2);\n\t  var _super2 = _createSuper(DateToSystemTimezoneSetter2);\n\t  function DateToSystemTimezoneSetter2() {\n\t    var _this2;\n\t    _classCallCheck(this, DateToSystemTimezoneSetter2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this2 = _super2.call.apply(_super2, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n\t    _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n\t    return _this2;\n\t  }\n\t  _createClass(DateToSystemTimezoneSetter2, [{\n\t    key: \"set\",\n\t    value: function set(date, flags) {\n\t      if (flags.timestampIsSet) {\n\t        return date;\n\t      }\n\t      var convertedDate = /* @__PURE__ */ new Date(0);\n\t      convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n\t      convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n\t      return convertedDate;\n\t    }\n\t  }]);\n\t  return DateToSystemTimezoneSetter2;\n\t}(Setter);\n\tvar Parser = /* @__PURE__ */ function() {\n\t  function Parser2() {\n\t    _classCallCheck(this, Parser2);\n\t    _defineProperty(this, \"incompatibleTokens\", void 0);\n\t    _defineProperty(this, \"priority\", void 0);\n\t    _defineProperty(this, \"subPriority\", void 0);\n\t  }\n\t  _createClass(Parser2, [{\n\t    key: \"run\",\n\t    value: function run(dateString, token, match, options) {\n\t      var result = this.parse(dateString, token, match, options);\n\t      if (!result) {\n\t        return null;\n\t      }\n\t      return {\n\t        setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n\t        rest: result.rest\n\t      };\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_utcDate, _value, _options) {\n\t      return true;\n\t    }\n\t  }]);\n\t  return Parser2;\n\t}();\n\tvar EraParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(EraParser2, _Parser);\n\t  var _super = _createSuper(EraParser2);\n\t  function EraParser2() {\n\t    var _this;\n\t    _classCallCheck(this, EraParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"R\", \"u\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(EraParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        // AD, BC\n\t        case \"G\":\n\t        case \"GG\":\n\t        case \"GGG\":\n\t          return match.era(dateString, {\n\t            width: \"abbreviated\"\n\t          }) || match.era(dateString, {\n\t            width: \"narrow\"\n\t          });\n\t        // A, B\n\t        case \"GGGGG\":\n\t          return match.era(dateString, {\n\t            width: \"narrow\"\n\t          });\n\t        // Anno Domini, Before Christ\n\t        case \"GGGG\":\n\t        default:\n\t          return match.era(dateString, {\n\t            width: \"wide\"\n\t          }) || match.era(dateString, {\n\t            width: \"abbreviated\"\n\t          }) || match.era(dateString, {\n\t            width: \"narrow\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, flags, value) {\n\t      flags.era = value;\n\t      date.setUTCFullYear(value, 0, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return EraParser2;\n\t}(Parser);\n\tvar numericPatterns = {\n\t  month: /^(1[0-2]|0?\\d)/,\n\t  // 0 to 12\n\t  date: /^(3[0-1]|[0-2]?\\d)/,\n\t  // 0 to 31\n\t  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n\t  // 0 to 366\n\t  week: /^(5[0-3]|[0-4]?\\d)/,\n\t  // 0 to 53\n\t  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n\t  // 0 to 23\n\t  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n\t  // 0 to 24\n\t  hour11h: /^(1[0-1]|0?\\d)/,\n\t  // 0 to 11\n\t  hour12h: /^(1[0-2]|0?\\d)/,\n\t  // 0 to 12\n\t  minute: /^[0-5]?\\d/,\n\t  // 0 to 59\n\t  second: /^[0-5]?\\d/,\n\t  // 0 to 59\n\t  singleDigit: /^\\d/,\n\t  // 0 to 9\n\t  twoDigits: /^\\d{1,2}/,\n\t  // 0 to 99\n\t  threeDigits: /^\\d{1,3}/,\n\t  // 0 to 999\n\t  fourDigits: /^\\d{1,4}/,\n\t  // 0 to 9999\n\t  anyDigitsSigned: /^-?\\d+/,\n\t  singleDigitSigned: /^-?\\d/,\n\t  // 0 to 9, -0 to -9\n\t  twoDigitsSigned: /^-?\\d{1,2}/,\n\t  // 0 to 99, -0 to -99\n\t  threeDigitsSigned: /^-?\\d{1,3}/,\n\t  // 0 to 999, -0 to -999\n\t  fourDigitsSigned: /^-?\\d{1,4}/\n\t  // 0 to 9999, -0 to -9999\n\t};\n\tvar timezonePatterns = {\n\t  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n\t  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n\t  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n\t  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n\t  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n\t};\n\tfunction mapValue(parseFnResult, mapFn) {\n\t  if (!parseFnResult) {\n\t    return parseFnResult;\n\t  }\n\t  return {\n\t    value: mapFn(parseFnResult.value),\n\t    rest: parseFnResult.rest\n\t  };\n\t}\n\tfunction parseNumericPattern(pattern, dateString) {\n\t  var matchResult = dateString.match(pattern);\n\t  if (!matchResult) {\n\t    return null;\n\t  }\n\t  return {\n\t    value: parseInt(matchResult[0], 10),\n\t    rest: dateString.slice(matchResult[0].length)\n\t  };\n\t}\n\tfunction parseTimezonePattern(pattern, dateString) {\n\t  var matchResult = dateString.match(pattern);\n\t  if (!matchResult) {\n\t    return null;\n\t  }\n\t  if (matchResult[0] === \"Z\") {\n\t    return {\n\t      value: 0,\n\t      rest: dateString.slice(1)\n\t    };\n\t  }\n\t  var sign = matchResult[1] === \"+\" ? 1 : -1;\n\t  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n\t  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n\t  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\t  return {\n\t    value: sign * (hours * index$1.millisecondsInHour + minutes * index$1.millisecondsInMinute + seconds * index$1.millisecondsInSecond),\n\t    rest: dateString.slice(matchResult[0].length)\n\t  };\n\t}\n\tfunction parseAnyDigitsSigned(dateString) {\n\t  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n\t}\n\tfunction parseNDigits(n, dateString) {\n\t  switch (n) {\n\t    case 1:\n\t      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n\t    case 2:\n\t      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n\t    case 3:\n\t      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n\t    case 4:\n\t      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n\t    default:\n\t      return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n\t  }\n\t}\n\tfunction parseNDigitsSigned(n, dateString) {\n\t  switch (n) {\n\t    case 1:\n\t      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n\t    case 2:\n\t      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n\t    case 3:\n\t      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n\t    case 4:\n\t      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n\t    default:\n\t      return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n\t  }\n\t}\n\tfunction dayPeriodEnumToHours(dayPeriod) {\n\t  switch (dayPeriod) {\n\t    case \"morning\":\n\t      return 4;\n\t    case \"evening\":\n\t      return 17;\n\t    case \"pm\":\n\t    case \"noon\":\n\t    case \"afternoon\":\n\t      return 12;\n\t    case \"am\":\n\t    case \"midnight\":\n\t    case \"night\":\n\t    default:\n\t      return 0;\n\t  }\n\t}\n\tfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n\t  var isCommonEra = currentYear > 0;\n\t  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\t  var result;\n\t  if (absCurrentYear <= 50) {\n\t    result = twoDigitYear || 100;\n\t  } else {\n\t    var rangeEnd = absCurrentYear + 50;\n\t    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n\t    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n\t    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n\t  }\n\t  return isCommonEra ? result : 1 - result;\n\t}\n\tfunction isLeapYearIndex(year) {\n\t  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n\t}\n\tvar YearParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(YearParser2, _Parser);\n\t  var _super = _createSuper(YearParser2);\n\t  function YearParser2() {\n\t    var _this;\n\t    _classCallCheck(this, YearParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(YearParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      var valueCallback = function valueCallback2(year) {\n\t        return {\n\t          year,\n\t          isTwoDigitYear: token === \"yy\"\n\t        };\n\t      };\n\t      switch (token) {\n\t        case \"y\":\n\t          return mapValue(parseNDigits(4, dateString), valueCallback);\n\t        case \"yo\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"year\"\n\t          }), valueCallback);\n\t        default:\n\t          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value.isTwoDigitYear || value.year > 0;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, flags, value) {\n\t      var currentYear = date.getUTCFullYear();\n\t      if (value.isTwoDigitYear) {\n\t        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n\t        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n\t        date.setUTCHours(0, 0, 0, 0);\n\t        return date;\n\t      }\n\t      var year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n\t      date.setUTCFullYear(year, 0, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return YearParser2;\n\t}(Parser);\n\tvar LocalWeekYearParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(LocalWeekYearParser2, _Parser);\n\t  var _super = _createSuper(LocalWeekYearParser2);\n\t  function LocalWeekYearParser2() {\n\t    var _this;\n\t    _classCallCheck(this, LocalWeekYearParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"R\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(LocalWeekYearParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      var valueCallback = function valueCallback2(year) {\n\t        return {\n\t          year,\n\t          isTwoDigitYear: token === \"YY\"\n\t        };\n\t      };\n\t      switch (token) {\n\t        case \"Y\":\n\t          return mapValue(parseNDigits(4, dateString), valueCallback);\n\t        case \"Yo\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"year\"\n\t          }), valueCallback);\n\t        default:\n\t          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value.isTwoDigitYear || value.year > 0;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, flags, value, options) {\n\t      var currentYear = index$1.getUTCWeekYear(date, options);\n\t      if (value.isTwoDigitYear) {\n\t        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n\t        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n\t        date.setUTCHours(0, 0, 0, 0);\n\t        return index$1.startOfUTCWeek(date, options);\n\t      }\n\t      var year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n\t      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return index$1.startOfUTCWeek(date, options);\n\t    }\n\t  }]);\n\t  return LocalWeekYearParser2;\n\t}(Parser);\n\tvar ISOWeekYearParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ISOWeekYearParser2, _Parser);\n\t  var _super = _createSuper(ISOWeekYearParser2);\n\t  function ISOWeekYearParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ISOWeekYearParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"G\", \"y\", \"Y\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ISOWeekYearParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token) {\n\t      if (token === \"R\") {\n\t        return parseNDigitsSigned(4, dateString);\n\t      }\n\t      return parseNDigitsSigned(token.length, dateString);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(_date, _flags, value) {\n\t      var firstWeekOfYear = /* @__PURE__ */ new Date(0);\n\t      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n\t      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n\t      return index$1.startOfUTCISOWeek(firstWeekOfYear);\n\t    }\n\t  }]);\n\t  return ISOWeekYearParser2;\n\t}(Parser);\n\tvar ExtendedYearParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ExtendedYearParser2, _Parser);\n\t  var _super = _createSuper(ExtendedYearParser2);\n\t  function ExtendedYearParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ExtendedYearParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ExtendedYearParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token) {\n\t      if (token === \"u\") {\n\t        return parseNDigitsSigned(4, dateString);\n\t      }\n\t      return parseNDigitsSigned(token.length, dateString);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCFullYear(value, 0, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return ExtendedYearParser2;\n\t}(Parser);\n\tvar QuarterParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(QuarterParser2, _Parser);\n\t  var _super = _createSuper(QuarterParser2);\n\t  function QuarterParser2() {\n\t    var _this;\n\t    _classCallCheck(this, QuarterParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(QuarterParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        // 1, 2, 3, 4\n\t        case \"Q\":\n\t        case \"QQ\":\n\t          return parseNDigits(token.length, dateString);\n\t        // 1st, 2nd, 3rd, 4th\n\t        case \"Qo\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"quarter\"\n\t          });\n\t        // Q1, Q2, Q3, Q4\n\t        case \"QQQ\":\n\t          return match.quarter(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\t        case \"QQQQQ\":\n\t          return match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // 1st quarter, 2nd quarter, ...\n\t        case \"QQQQ\":\n\t        default:\n\t          return match.quarter(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 4;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMonth((value - 1) * 3, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return QuarterParser2;\n\t}(Parser);\n\tvar StandAloneQuarterParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(StandAloneQuarterParser2, _Parser);\n\t  var _super = _createSuper(StandAloneQuarterParser2);\n\t  function StandAloneQuarterParser2() {\n\t    var _this;\n\t    _classCallCheck(this, StandAloneQuarterParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(StandAloneQuarterParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        // 1, 2, 3, 4\n\t        case \"q\":\n\t        case \"qq\":\n\t          return parseNDigits(token.length, dateString);\n\t        // 1st, 2nd, 3rd, 4th\n\t        case \"qo\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"quarter\"\n\t          });\n\t        // Q1, Q2, Q3, Q4\n\t        case \"qqq\":\n\t          return match.quarter(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\t        case \"qqqqq\":\n\t          return match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // 1st quarter, 2nd quarter, ...\n\t        case \"qqqq\":\n\t        default:\n\t          return match.quarter(dateString, {\n\t            width: \"wide\",\n\t            context: \"standalone\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.quarter(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 4;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMonth((value - 1) * 3, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return StandAloneQuarterParser2;\n\t}(Parser);\n\tvar MonthParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(MonthParser2, _Parser);\n\t  var _super = _createSuper(MonthParser2);\n\t  function MonthParser2() {\n\t    var _this;\n\t    _classCallCheck(this, MonthParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"q\", \"Q\", \"L\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\t    return _this;\n\t  }\n\t  _createClass(MonthParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        return value - 1;\n\t      };\n\t      switch (token) {\n\t        // 1, 2, ..., 12\n\t        case \"M\":\n\t          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n\t        // 01, 02, ..., 12\n\t        case \"MM\":\n\t          return mapValue(parseNDigits(2, dateString), valueCallback);\n\t        // 1st, 2nd, ..., 12th\n\t        case \"Mo\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"month\"\n\t          }), valueCallback);\n\t        // Jan, Feb, ..., Dec\n\t        case \"MMM\":\n\t          return match.month(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // J, F, ..., D\n\t        case \"MMMMM\":\n\t          return match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // January, February, ..., December\n\t        case \"MMMM\":\n\t        default:\n\t          return match.month(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.month(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 11;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMonth(value, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return MonthParser2;\n\t}(Parser);\n\tvar StandAloneMonthParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(StandAloneMonthParser2, _Parser);\n\t  var _super = _createSuper(StandAloneMonthParser2);\n\t  function StandAloneMonthParser2() {\n\t    var _this;\n\t    _classCallCheck(this, StandAloneMonthParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(StandAloneMonthParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        return value - 1;\n\t      };\n\t      switch (token) {\n\t        // 1, 2, ..., 12\n\t        case \"L\":\n\t          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n\t        // 01, 02, ..., 12\n\t        case \"LL\":\n\t          return mapValue(parseNDigits(2, dateString), valueCallback);\n\t        // 1st, 2nd, ..., 12th\n\t        case \"Lo\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"month\"\n\t          }), valueCallback);\n\t        // Jan, Feb, ..., Dec\n\t        case \"LLL\":\n\t          return match.month(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // J, F, ..., D\n\t        case \"LLLLL\":\n\t          return match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // January, February, ..., December\n\t        case \"LLLL\":\n\t        default:\n\t          return match.month(dateString, {\n\t            width: \"wide\",\n\t            context: \"standalone\"\n\t          }) || match.month(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.month(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 11;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMonth(value, 1);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return StandAloneMonthParser2;\n\t}(Parser);\n\tfunction setUTCWeek(dirtyDate, dirtyWeek, options) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var week = index.toInteger(dirtyWeek);\n\t  var diff = index$1.getUTCWeek(date, options) - week;\n\t  date.setUTCDate(date.getUTCDate() - diff * 7);\n\t  return date;\n\t}\n\tvar LocalWeekParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(LocalWeekParser2, _Parser);\n\t  var _super = _createSuper(LocalWeekParser2);\n\t  function LocalWeekParser2() {\n\t    var _this;\n\t    _classCallCheck(this, LocalWeekParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(LocalWeekParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"w\":\n\t          return parseNumericPattern(numericPatterns.week, dateString);\n\t        case \"wo\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"week\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 53;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value, options) {\n\t      return index$1.startOfUTCWeek(setUTCWeek(date, value, options), options);\n\t    }\n\t  }]);\n\t  return LocalWeekParser2;\n\t}(Parser);\n\tfunction setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n\t  index.requiredArgs(2, arguments);\n\t  var date = index.toDate(dirtyDate);\n\t  var isoWeek = index.toInteger(dirtyISOWeek);\n\t  var diff = index$1.getUTCISOWeek(date) - isoWeek;\n\t  date.setUTCDate(date.getUTCDate() - diff * 7);\n\t  return date;\n\t}\n\tvar ISOWeekParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ISOWeekParser2, _Parser);\n\t  var _super = _createSuper(ISOWeekParser2);\n\t  function ISOWeekParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ISOWeekParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ISOWeekParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"I\":\n\t          return parseNumericPattern(numericPatterns.week, dateString);\n\t        case \"Io\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"week\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 53;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      return index$1.startOfUTCISOWeek(setUTCISOWeek(date, value));\n\t    }\n\t  }]);\n\t  return ISOWeekParser2;\n\t}(Parser);\n\tvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\tvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\tvar DateParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(DateParser2, _Parser);\n\t  var _super = _createSuper(DateParser2);\n\t  function DateParser2() {\n\t    var _this;\n\t    _classCallCheck(this, DateParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"q\", \"Q\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(DateParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"d\":\n\t          return parseNumericPattern(numericPatterns.date, dateString);\n\t        case \"do\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"date\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(date, value) {\n\t      var year = date.getUTCFullYear();\n\t      var isLeapYear = isLeapYearIndex(year);\n\t      var month = date.getUTCMonth();\n\t      if (isLeapYear) {\n\t        return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n\t      } else {\n\t        return value >= 1 && value <= DAYS_IN_MONTH[month];\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCDate(value);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return DateParser2;\n\t}(Parser);\n\tvar DayOfYearParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(DayOfYearParser2, _Parser);\n\t  var _super = _createSuper(DayOfYearParser2);\n\t  function DayOfYearParser2() {\n\t    var _this;\n\t    _classCallCheck(this, DayOfYearParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"E\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(DayOfYearParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"D\":\n\t        case \"DD\":\n\t          return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n\t        case \"Do\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"date\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(date, value) {\n\t      var year = date.getUTCFullYear();\n\t      var isLeapYear = isLeapYearIndex(year);\n\t      if (isLeapYear) {\n\t        return value >= 1 && value <= 366;\n\t      } else {\n\t        return value >= 1 && value <= 365;\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMonth(0, value);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return DayOfYearParser2;\n\t}(Parser);\n\tfunction setUTCDay(dirtyDate, dirtyDay, options) {\n\t  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\t  index.requiredArgs(2, arguments);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  var date = index.toDate(dirtyDate);\n\t  var day = index.toInteger(dirtyDay);\n\t  var currentDay = date.getUTCDay();\n\t  var remainder = day % 7;\n\t  var dayIndex = (remainder + 7) % 7;\n\t  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\t  date.setUTCDate(date.getUTCDate() + diff);\n\t  return date;\n\t}\n\tvar DayParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(DayParser2, _Parser);\n\t  var _super = _createSuper(DayParser2);\n\t  function DayParser2() {\n\t    var _this;\n\t    _classCallCheck(this, DayParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(DayParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        // Tue\n\t        case \"E\":\n\t        case \"EE\":\n\t        case \"EEE\":\n\t          return match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // T\n\t        case \"EEEEE\":\n\t          return match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // Tu\n\t        case \"EEEEEE\":\n\t          return match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // Tuesday\n\t        case \"EEEE\":\n\t        default:\n\t          return match.day(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 6;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value, options) {\n\t      date = setUTCDay(date, value, options);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return DayParser2;\n\t}(Parser);\n\tvar LocalDayParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(LocalDayParser2, _Parser);\n\t  var _super = _createSuper(LocalDayParser2);\n\t  function LocalDayParser2() {\n\t    var _this;\n\t    _classCallCheck(this, LocalDayParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(LocalDayParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match, options) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n\t        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n\t      };\n\t      switch (token) {\n\t        // 3\n\t        case \"e\":\n\t        case \"ee\":\n\t          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n\t        // 3rd\n\t        case \"eo\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"day\"\n\t          }), valueCallback);\n\t        // Tue\n\t        case \"eee\":\n\t          return match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // T\n\t        case \"eeeee\":\n\t          return match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // Tu\n\t        case \"eeeeee\":\n\t          return match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        // Tuesday\n\t        case \"eeee\":\n\t        default:\n\t          return match.day(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 6;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value, options) {\n\t      date = setUTCDay(date, value, options);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return LocalDayParser2;\n\t}(Parser);\n\tvar StandAloneLocalDayParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(StandAloneLocalDayParser2, _Parser);\n\t  var _super = _createSuper(StandAloneLocalDayParser2);\n\t  function StandAloneLocalDayParser2() {\n\t    var _this;\n\t    _classCallCheck(this, StandAloneLocalDayParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"e\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(StandAloneLocalDayParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match, options) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n\t        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n\t      };\n\t      switch (token) {\n\t        // 3\n\t        case \"c\":\n\t        case \"cc\":\n\t          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n\t        // 3rd\n\t        case \"co\":\n\t          return mapValue(match.ordinalNumber(dateString, {\n\t            unit: \"day\"\n\t          }), valueCallback);\n\t        // Tue\n\t        case \"ccc\":\n\t          return match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // T\n\t        case \"ccccc\":\n\t          return match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // Tu\n\t        case \"cccccc\":\n\t          return match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t        // Tuesday\n\t        case \"cccc\":\n\t        default:\n\t          return match.day(dateString, {\n\t            width: \"wide\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"standalone\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"standalone\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 6;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value, options) {\n\t      date = setUTCDay(date, value, options);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return StandAloneLocalDayParser2;\n\t}(Parser);\n\tfunction setUTCISODay(dirtyDate, dirtyDay) {\n\t  index.requiredArgs(2, arguments);\n\t  var day = index.toInteger(dirtyDay);\n\t  if (day % 7 === 0) {\n\t    day = day - 7;\n\t  }\n\t  var weekStartsOn = 1;\n\t  var date = index.toDate(dirtyDate);\n\t  var currentDay = date.getUTCDay();\n\t  var remainder = day % 7;\n\t  var dayIndex = (remainder + 7) % 7;\n\t  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\t  date.setUTCDate(date.getUTCDate() + diff);\n\t  return date;\n\t}\n\tvar ISODayParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ISODayParser2, _Parser);\n\t  var _super = _createSuper(ISODayParser2);\n\t  function ISODayParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ISODayParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"E\", \"e\", \"c\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ISODayParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        if (value === 0) {\n\t          return 7;\n\t        }\n\t        return value;\n\t      };\n\t      switch (token) {\n\t        // 2\n\t        case \"i\":\n\t        case \"ii\":\n\t          return parseNDigits(token.length, dateString);\n\t        // 2nd\n\t        case \"io\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"day\"\n\t          });\n\t        // Tue\n\t        case \"iii\":\n\t          return mapValue(match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          }), valueCallback);\n\t        // T\n\t        case \"iiiii\":\n\t          return mapValue(match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          }), valueCallback);\n\t        // Tu\n\t        case \"iiiiii\":\n\t          return mapValue(match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          }), valueCallback);\n\t        // Tuesday\n\t        case \"iiii\":\n\t        default:\n\t          return mapValue(match.day(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"short\",\n\t            context: \"formatting\"\n\t          }) || match.day(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          }), valueCallback);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 7;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date = setUTCISODay(date, value);\n\t      date.setUTCHours(0, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return ISODayParser2;\n\t}(Parser);\n\tvar AMPMParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(AMPMParser2, _Parser);\n\t  var _super = _createSuper(AMPMParser2);\n\t  function AMPMParser2() {\n\t    var _this;\n\t    _classCallCheck(this, AMPMParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(AMPMParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"a\":\n\t        case \"aa\":\n\t        case \"aaa\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"aaaaa\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"aaaa\":\n\t        default:\n\t          return match.dayPeriod(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return AMPMParser2;\n\t}(Parser);\n\tvar AMPMMidnightParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(AMPMMidnightParser2, _Parser);\n\t  var _super = _createSuper(AMPMMidnightParser2);\n\t  function AMPMMidnightParser2() {\n\t    var _this;\n\t    _classCallCheck(this, AMPMMidnightParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(AMPMMidnightParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"b\":\n\t        case \"bb\":\n\t        case \"bbb\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"bbbbb\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"bbbb\":\n\t        default:\n\t          return match.dayPeriod(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return AMPMMidnightParser2;\n\t}(Parser);\n\tvar DayPeriodParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(DayPeriodParser2, _Parser);\n\t  var _super = _createSuper(DayPeriodParser2);\n\t  function DayPeriodParser2() {\n\t    var _this;\n\t    _classCallCheck(this, DayPeriodParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"a\", \"b\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(DayPeriodParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"B\":\n\t        case \"BB\":\n\t        case \"BBB\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"BBBBB\":\n\t          return match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t        case \"BBBB\":\n\t        default:\n\t          return match.dayPeriod(dateString, {\n\t            width: \"wide\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"abbreviated\",\n\t            context: \"formatting\"\n\t          }) || match.dayPeriod(dateString, {\n\t            width: \"narrow\",\n\t            context: \"formatting\"\n\t          });\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return DayPeriodParser2;\n\t}(Parser);\n\tvar Hour1to12Parser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(Hour1to12Parser2, _Parser);\n\t  var _super = _createSuper(Hour1to12Parser2);\n\t  function Hour1to12Parser2() {\n\t    var _this;\n\t    _classCallCheck(this, Hour1to12Parser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"H\", \"K\", \"k\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(Hour1to12Parser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"h\":\n\t          return parseNumericPattern(numericPatterns.hour12h, dateString);\n\t        case \"ho\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"hour\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 12;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      var isPM = date.getUTCHours() >= 12;\n\t      if (isPM && value < 12) {\n\t        date.setUTCHours(value + 12, 0, 0, 0);\n\t      } else if (!isPM && value === 12) {\n\t        date.setUTCHours(0, 0, 0, 0);\n\t      } else {\n\t        date.setUTCHours(value, 0, 0, 0);\n\t      }\n\t      return date;\n\t    }\n\t  }]);\n\t  return Hour1to12Parser2;\n\t}(Parser);\n\tvar Hour0to23Parser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(Hour0to23Parser2, _Parser);\n\t  var _super = _createSuper(Hour0to23Parser2);\n\t  function Hour0to23Parser2() {\n\t    var _this;\n\t    _classCallCheck(this, Hour0to23Parser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(Hour0to23Parser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"H\":\n\t          return parseNumericPattern(numericPatterns.hour23h, dateString);\n\t        case \"Ho\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"hour\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 23;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCHours(value, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return Hour0to23Parser2;\n\t}(Parser);\n\tvar Hour0To11Parser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(Hour0To11Parser2, _Parser);\n\t  var _super = _createSuper(Hour0To11Parser2);\n\t  function Hour0To11Parser2() {\n\t    var _this;\n\t    _classCallCheck(this, Hour0To11Parser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"h\", \"H\", \"k\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(Hour0To11Parser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"K\":\n\t          return parseNumericPattern(numericPatterns.hour11h, dateString);\n\t        case \"Ko\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"hour\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 11;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      var isPM = date.getUTCHours() >= 12;\n\t      if (isPM && value < 12) {\n\t        date.setUTCHours(value + 12, 0, 0, 0);\n\t      } else {\n\t        date.setUTCHours(value, 0, 0, 0);\n\t      }\n\t      return date;\n\t    }\n\t  }]);\n\t  return Hour0To11Parser2;\n\t}(Parser);\n\tvar Hour1To24Parser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(Hour1To24Parser2, _Parser);\n\t  var _super = _createSuper(Hour1To24Parser2);\n\t  function Hour1To24Parser2() {\n\t    var _this;\n\t    _classCallCheck(this, Hour1To24Parser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(Hour1To24Parser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"k\":\n\t          return parseNumericPattern(numericPatterns.hour24h, dateString);\n\t        case \"ko\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"hour\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 1 && value <= 24;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      var hours = value <= 24 ? value % 24 : value;\n\t      date.setUTCHours(hours, 0, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return Hour1To24Parser2;\n\t}(Parser);\n\tvar MinuteParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(MinuteParser2, _Parser);\n\t  var _super = _createSuper(MinuteParser2);\n\t  function MinuteParser2() {\n\t    var _this;\n\t    _classCallCheck(this, MinuteParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(MinuteParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"m\":\n\t          return parseNumericPattern(numericPatterns.minute, dateString);\n\t        case \"mo\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"minute\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 59;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMinutes(value, 0, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return MinuteParser2;\n\t}(Parser);\n\tvar SecondParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(SecondParser2, _Parser);\n\t  var _super = _createSuper(SecondParser2);\n\t  function SecondParser2() {\n\t    var _this;\n\t    _classCallCheck(this, SecondParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(SecondParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token, match) {\n\t      switch (token) {\n\t        case \"s\":\n\t          return parseNumericPattern(numericPatterns.second, dateString);\n\t        case \"so\":\n\t          return match.ordinalNumber(dateString, {\n\t            unit: \"second\"\n\t          });\n\t        default:\n\t          return parseNDigits(token.length, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"validate\",\n\t    value: function validate(_date, value) {\n\t      return value >= 0 && value <= 59;\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCSeconds(value, 0);\n\t      return date;\n\t    }\n\t  }]);\n\t  return SecondParser2;\n\t}(Parser);\n\tvar FractionOfSecondParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(FractionOfSecondParser2, _Parser);\n\t  var _super = _createSuper(FractionOfSecondParser2);\n\t  function FractionOfSecondParser2() {\n\t    var _this;\n\t    _classCallCheck(this, FractionOfSecondParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"t\", \"T\"]);\n\t    return _this;\n\t  }\n\t  _createClass(FractionOfSecondParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token) {\n\t      var valueCallback = function valueCallback2(value) {\n\t        return Math.floor(value * Math.pow(10, -token.length + 3));\n\t      };\n\t      return mapValue(parseNDigits(token.length, dateString), valueCallback);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, _flags, value) {\n\t      date.setUTCMilliseconds(value);\n\t      return date;\n\t    }\n\t  }]);\n\t  return FractionOfSecondParser2;\n\t}(Parser);\n\tvar ISOTimezoneWithZParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ISOTimezoneWithZParser2, _Parser);\n\t  var _super = _createSuper(ISOTimezoneWithZParser2);\n\t  function ISOTimezoneWithZParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ISOTimezoneWithZParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"t\", \"T\", \"x\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ISOTimezoneWithZParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token) {\n\t      switch (token) {\n\t        case \"X\":\n\t          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\t        case \"XX\":\n\t          return parseTimezonePattern(timezonePatterns.basic, dateString);\n\t        case \"XXXX\":\n\t          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\t        case \"XXXXX\":\n\t          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\t        case \"XXX\":\n\t        default:\n\t          return parseTimezonePattern(timezonePatterns.extended, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, flags, value) {\n\t      if (flags.timestampIsSet) {\n\t        return date;\n\t      }\n\t      return new Date(date.getTime() - value);\n\t    }\n\t  }]);\n\t  return ISOTimezoneWithZParser2;\n\t}(Parser);\n\tvar ISOTimezoneParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(ISOTimezoneParser2, _Parser);\n\t  var _super = _createSuper(ISOTimezoneParser2);\n\t  function ISOTimezoneParser2() {\n\t    var _this;\n\t    _classCallCheck(this, ISOTimezoneParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", [\"t\", \"T\", \"X\"]);\n\t    return _this;\n\t  }\n\t  _createClass(ISOTimezoneParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString, token) {\n\t      switch (token) {\n\t        case \"x\":\n\t          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\t        case \"xx\":\n\t          return parseTimezonePattern(timezonePatterns.basic, dateString);\n\t        case \"xxxx\":\n\t          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\t        case \"xxxxx\":\n\t          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\t        case \"xxx\":\n\t        default:\n\t          return parseTimezonePattern(timezonePatterns.extended, dateString);\n\t      }\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(date, flags, value) {\n\t      if (flags.timestampIsSet) {\n\t        return date;\n\t      }\n\t      return new Date(date.getTime() - value);\n\t    }\n\t  }]);\n\t  return ISOTimezoneParser2;\n\t}(Parser);\n\tvar TimestampSecondsParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(TimestampSecondsParser2, _Parser);\n\t  var _super = _createSuper(TimestampSecondsParser2);\n\t  function TimestampSecondsParser2() {\n\t    var _this;\n\t    _classCallCheck(this, TimestampSecondsParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", \"*\");\n\t    return _this;\n\t  }\n\t  _createClass(TimestampSecondsParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString) {\n\t      return parseAnyDigitsSigned(dateString);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(_date, _flags, value) {\n\t      return [new Date(value * 1e3), {\n\t        timestampIsSet: true\n\t      }];\n\t    }\n\t  }]);\n\t  return TimestampSecondsParser2;\n\t}(Parser);\n\tvar TimestampMillisecondsParser = /* @__PURE__ */ function(_Parser) {\n\t  _inherits(TimestampMillisecondsParser2, _Parser);\n\t  var _super = _createSuper(TimestampMillisecondsParser2);\n\t  function TimestampMillisecondsParser2() {\n\t    var _this;\n\t    _classCallCheck(this, TimestampMillisecondsParser2);\n\t    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t      args[_key] = arguments[_key];\n\t    }\n\t    _this = _super.call.apply(_super, [this].concat(args));\n\t    _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n\t    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", \"*\");\n\t    return _this;\n\t  }\n\t  _createClass(TimestampMillisecondsParser2, [{\n\t    key: \"parse\",\n\t    value: function parse2(dateString) {\n\t      return parseAnyDigitsSigned(dateString);\n\t    }\n\t  }, {\n\t    key: \"set\",\n\t    value: function set(_date, _flags, value) {\n\t      return [new Date(value), {\n\t        timestampIsSet: true\n\t      }];\n\t    }\n\t  }]);\n\t  return TimestampMillisecondsParser2;\n\t}(Parser);\n\tvar parsers = {\n\t  G: new EraParser(),\n\t  y: new YearParser(),\n\t  Y: new LocalWeekYearParser(),\n\t  R: new ISOWeekYearParser(),\n\t  u: new ExtendedYearParser(),\n\t  Q: new QuarterParser(),\n\t  q: new StandAloneQuarterParser(),\n\t  M: new MonthParser(),\n\t  L: new StandAloneMonthParser(),\n\t  w: new LocalWeekParser(),\n\t  I: new ISOWeekParser(),\n\t  d: new DateParser(),\n\t  D: new DayOfYearParser(),\n\t  E: new DayParser(),\n\t  e: new LocalDayParser(),\n\t  c: new StandAloneLocalDayParser(),\n\t  i: new ISODayParser(),\n\t  a: new AMPMParser(),\n\t  b: new AMPMMidnightParser(),\n\t  B: new DayPeriodParser(),\n\t  h: new Hour1to12Parser(),\n\t  H: new Hour0to23Parser(),\n\t  K: new Hour0To11Parser(),\n\t  k: new Hour1To24Parser(),\n\t  m: new MinuteParser(),\n\t  s: new SecondParser(),\n\t  S: new FractionOfSecondParser(),\n\t  X: new ISOTimezoneWithZParser(),\n\t  x: new ISOTimezoneParser(),\n\t  t: new TimestampSecondsParser(),\n\t  T: new TimestampMillisecondsParser()\n\t};\n\tvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\tvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\tvar escapedStringRegExp = /^'([^]*?)'?$/;\n\tvar doubleQuoteRegExp = /''/g;\n\tvar notWhitespaceRegExp = /\\S/;\n\tvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\tfunction parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n\t  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _defaultOptions$local3, _defaultOptions$local4;\n\t  index.requiredArgs(3, arguments);\n\t  var dateString = String(dirtyDateString);\n\t  var formatString = String(dirtyFormatString);\n\t  var defaultOptions = index.getDefaultOptions();\n\t  var locale = (_ref = (_options$locale = void 0 ) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : index$1.defaultLocale;\n\t  if (!locale.match) {\n\t    throw new RangeError(\"locale must contain match property\");\n\t  }\n\t  var firstWeekContainsDate = index.toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = void 0 ) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : void 0 ) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\t  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n\t    throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n\t  }\n\t  var weekStartsOn = index.toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = void 0 ) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : void 0 ) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\t  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n\t    throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n\t  }\n\t  if (formatString === \"\") {\n\t    if (dateString === \"\") {\n\t      return index.toDate(dirtyReferenceDate);\n\t    } else {\n\t      return /* @__PURE__ */ new Date(NaN);\n\t    }\n\t  }\n\t  var subFnOptions = {\n\t    firstWeekContainsDate,\n\t    weekStartsOn,\n\t    locale\n\t  };\n\t  var setters = [new DateToSystemTimezoneSetter()];\n\t  var tokens = formatString.match(longFormattingTokensRegExp).map(function(substring) {\n\t    var firstCharacter = substring[0];\n\t    if (firstCharacter in index$1.longFormatters) {\n\t      var longFormatter = index$1.longFormatters[firstCharacter];\n\t      return longFormatter(substring, locale.formatLong);\n\t    }\n\t    return substring;\n\t  }).join(\"\").match(formattingTokensRegExp);\n\t  var usedTokens = [];\n\t  var _iterator = _createForOfIteratorHelper(tokens), _step;\n\t  try {\n\t    var _loop = function _loop2() {\n\t      var token = _step.value;\n\t      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && index$1.isProtectedWeekYearToken(token)) {\n\t        index$1.throwProtectedError(token, formatString, dirtyDateString);\n\t      }\n\t      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && index$1.isProtectedDayOfYearToken(token)) {\n\t        index$1.throwProtectedError(token, formatString, dirtyDateString);\n\t      }\n\t      var firstCharacter = token[0];\n\t      var parser = parsers[firstCharacter];\n\t      if (parser) {\n\t        var incompatibleTokens = parser.incompatibleTokens;\n\t        if (Array.isArray(incompatibleTokens)) {\n\t          var incompatibleToken = usedTokens.find(function(usedToken) {\n\t            return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n\t          });\n\t          if (incompatibleToken) {\n\t            throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n\t          }\n\t        } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n\t          throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n\t        }\n\t        usedTokens.push({\n\t          token: firstCharacter,\n\t          fullToken: token\n\t        });\n\t        var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n\t        if (!parseResult) {\n\t          return {\n\t            v: /* @__PURE__ */ new Date(NaN)\n\t          };\n\t        }\n\t        setters.push(parseResult.setter);\n\t        dateString = parseResult.rest;\n\t      } else {\n\t        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n\t          throw new RangeError(\"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\");\n\t        }\n\t        if (token === \"''\") {\n\t          token = \"'\";\n\t        } else if (firstCharacter === \"'\") {\n\t          token = cleanEscapedString(token);\n\t        }\n\t        if (dateString.indexOf(token) === 0) {\n\t          dateString = dateString.slice(token.length);\n\t        } else {\n\t          return {\n\t            v: /* @__PURE__ */ new Date(NaN)\n\t          };\n\t        }\n\t      }\n\t    };\n\t    for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n\t      var _ret = _loop();\n\t      if (index._typeof(_ret) === \"object\") return _ret.v;\n\t    }\n\t  } catch (err) {\n\t    _iterator.e(err);\n\t  } finally {\n\t    _iterator.f();\n\t  }\n\t  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  var uniquePrioritySetters = setters.map(function(setter2) {\n\t    return setter2.priority;\n\t  }).sort(function(a, b) {\n\t    return b - a;\n\t  }).filter(function(priority, index2, array) {\n\t    return array.indexOf(priority) === index2;\n\t  }).map(function(priority) {\n\t    return setters.filter(function(setter2) {\n\t      return setter2.priority === priority;\n\t    }).sort(function(a, b) {\n\t      return b.subPriority - a.subPriority;\n\t    });\n\t  }).map(function(setterArray) {\n\t    return setterArray[0];\n\t  });\n\t  var date = index.toDate(dirtyReferenceDate);\n\t  if (isNaN(date.getTime())) {\n\t    return /* @__PURE__ */ new Date(NaN);\n\t  }\n\t  var utcDate = index$1.subMilliseconds(date, index$1.getTimezoneOffsetInMilliseconds(date));\n\t  var flags = {};\n\t  var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters), _step2;\n\t  try {\n\t    for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n\t      var setter = _step2.value;\n\t      if (!setter.validate(utcDate, subFnOptions)) {\n\t        return /* @__PURE__ */ new Date(NaN);\n\t      }\n\t      var result = setter.set(utcDate, flags, subFnOptions);\n\t      if (Array.isArray(result)) {\n\t        utcDate = result[0];\n\t        assign(flags, result[1]);\n\t      } else {\n\t        utcDate = result;\n\t      }\n\t    }\n\t  } catch (err) {\n\t    _iterator2.e(err);\n\t  } finally {\n\t    _iterator2.f();\n\t  }\n\t  return utcDate;\n\t}\n\tfunction cleanEscapedString(input) {\n\t  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n\t}\n\tconst sortItems = ({ items, order, column, strategy, format }) => {\n\t  const sortedItems = [...items];\n\t  sortedItems.sort((childA, childB) => {\n\t    const rowA = draggable.isMarketTableV2Group(childA) ? childA.querySelector('[slot=\"parent\"]') : childA;\n\t    const rowB = draggable.isMarketTableV2Group(childB) ? childB.querySelector('[slot=\"parent\"]') : childB;\n\t    const params = { rowA, rowB, order, column };\n\t    if (typeof strategy === \"function\") {\n\t      return strategy(params);\n\t    } else if (strategy === \"number\") {\n\t      return sortByNumber(params);\n\t    } else if (strategy === \"datetime\" && format) {\n\t      return sortByDateTime(Object.assign(Object.assign({}, params), { format }));\n\t    } else {\n\t      return sortByString(params);\n\t    }\n\t  });\n\t  return sortedItems;\n\t};\n\tconst sortByNumber = ({ rowA, rowB, order, column }) => {\n\t  var _a, _b, _c, _d;\n\t  const numberA = Number.parseFloat((_b = (_a = rowA === null || rowA === void 0 ? void 0 : rowA.children[column]) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim());\n\t  const numberB = Number.parseFloat((_d = (_c = rowB === null || rowB === void 0 ? void 0 : rowB.children[column]) === null || _c === void 0 ? void 0 : _c.textContent) === null || _d === void 0 ? void 0 : _d.trim());\n\t  if (order === \"ascending\") {\n\t    return numberA - numberB;\n\t  } else {\n\t    return numberB - numberA;\n\t  }\n\t};\n\tconst sortByString = ({ rowA, rowB, order, column }) => {\n\t  var _a, _b, _c, _d, _e, _f;\n\t  const contentA = (_c = (_b = (_a = rowA === null || rowA === void 0 ? void 0 : rowA.children[column]) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim()) === null || _c === void 0 ? void 0 : _c.toUpperCase();\n\t  const contentB = (_f = (_e = (_d = rowB === null || rowB === void 0 ? void 0 : rowB.children[column]) === null || _d === void 0 ? void 0 : _d.textContent) === null || _e === void 0 ? void 0 : _e.trim()) === null || _f === void 0 ? void 0 : _f.toUpperCase();\n\t  if (order === \"ascending\") {\n\t    if (contentA < contentB)\n\t      return -1;\n\t    if (contentA > contentB)\n\t      return 1;\n\t    return 0;\n\t  } else {\n\t    if (contentA < contentB)\n\t      return 1;\n\t    if (contentA > contentB)\n\t      return -1;\n\t    return 0;\n\t  }\n\t};\n\tconst sortByDateTime = ({ rowA, rowB, order, column, format }) => {\n\t  var _a, _b, _c, _d;\n\t  const contentA = (_b = (_a = rowA === null || rowA === void 0 ? void 0 : rowA.children[column]) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim();\n\t  const contentB = (_d = (_c = rowB === null || rowB === void 0 ? void 0 : rowB.children[column]) === null || _c === void 0 ? void 0 : _c.textContent) === null || _d === void 0 ? void 0 : _d.trim();\n\t  const dateA = parse(contentA, format, /* @__PURE__ */ new Date());\n\t  const dateB = parse(contentB, format, /* @__PURE__ */ new Date());\n\t  if (order === \"ascending\") {\n\t    if (dateA < dateB)\n\t      return -1;\n\t    if (dateA > dateB)\n\t      return 1;\n\t    return 0;\n\t  } else {\n\t    if (dateA < dateB)\n\t      return 1;\n\t    if (dateA > dateB)\n\t      return -1;\n\t    return 0;\n\t  }\n\t};\n\tutils94f130b4.sortItems = sortItems;\n\treturn utils94f130b4;\n}\n\nvar hasRequiredMarketTableV2_cjs_entry;\n\nfunction requireMarketTableV2_cjs_entry () {\n\tif (hasRequiredMarketTableV2_cjs_entry) return marketTableV2_cjs_entry;\n\thasRequiredMarketTableV2_cjs_entry = 1;\n\tObject.defineProperty(marketTableV2_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst reorderable = requireReorderable3af89049();\n\tconst draggable = requireDraggableA7663027();\n\tconst utils = requireUtils94f130b4();\n\trequireRafEa414557();\n\trequireMaxZIndex536dd36e();\n\trequireIndexB1e6d30f();\n\trequireIndexF2237153();\n\tconst marketTableV2Css = ':host,*{box-sizing:border-box}:host{--table-cell-state-normal-background-color:var(--core-surface-10-color);position:relative;display:block;overflow:auto;width:100%;background-color:var(--table-cell-state-normal-background-color);font-feature-settings:\"tnum\"}:host [role=\"table\"]{display:table;vertical-align:middle;width:100%;height:100%;border-spacing:0;border-collapse:separate;table-layout:auto;text-align:left}:host slot{vertical-align:inherit;text-align:inherit}:host([layout=\"fixed\"]) [role=\"table\"]{table-layout:fixed}:host([align=\"left\"]) [role=\"table\"]{text-align:left}:host([align=\"center\"]) [role=\"table\"]{text-align:center}:host([align=\"right\"]) [role=\"table\"]{text-align:right}:host([valign=\"top\"]) [role=\"table\"]{vertical-align:top}:host([valign=\"middle\"]) [role=\"table\"]{vertical-align:middle}:host([valign=\"bottom\"]) [role=\"table\"]{vertical-align:bottom}::slotted(.market-drag-cursor){--drag-cursor-height:4px;position:absolute;right:0;left:0;z-index:3;display:block;height:0;outline:calc(var(--drag-cursor-height) / 2) solid var(--core-emphasis-fill-color);pointer-events:none}';\n\tconst MarketTableV2Style0 = marketTableV2Css;\n\tconst MarketTableV2 = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTableV2RowsReordered = index.createEvent(this, \"marketTableV2RowsReordered\", 7);\n\t    this.align = void 0;\n\t    this.collapsible = false;\n\t    this.layout = \"auto\";\n\t    this.reorderable = void 0;\n\t    this.reorderMode = \"default\";\n\t    this.selected = \"false\";\n\t    this.valign = void 0;\n\t  }\n\t  async onMarketTableV2SelectionChange(e) {\n\t    const { header, footer } = this;\n\t    const { target, detail } = e;\n\t    const eventSelected = detail.current;\n\t    e.stopPropagation();\n\t    if (target === header || target === footer) {\n\t      await this.setSelected(eventSelected, { silent: true });\n\t    } else {\n\t      await this.setSelectedFromChildEvent(e);\n\t    }\n\t  }\n\t  onMarketTableV2CellSortClicked(e) {\n\t    const { el, header, children, groups, footer } = this;\n\t    const sortedCell = e.target;\n\t    if (sortedCell.parentElement !== header)\n\t      return;\n\t    const { current: newSortOrder } = e.detail;\n\t    const headerChildren = [...header.children];\n\t    const sortedColumnIndex = headerChildren.indexOf(sortedCell);\n\t    const { sortStrategy, sortStrategyFormat } = sortedCell;\n\t    const sortedChildren = utils.sortItems({\n\t      items: children,\n\t      order: newSortOrder,\n\t      column: sortedColumnIndex,\n\t      strategy: sortStrategy,\n\t      format: sortStrategyFormat\n\t    });\n\t    groups === null || groups === void 0 ? void 0 : groups.forEach((group) => {\n\t      group.sort({\n\t        order: newSortOrder,\n\t        column: sortedColumnIndex,\n\t        strategy: sortStrategy,\n\t        format: sortStrategyFormat\n\t      });\n\t    });\n\t    sortedCell.sortOrder = newSortOrder;\n\t    headerChildren.forEach((cell) => {\n\t      cell.sortOrder = cell === sortedCell ? newSortOrder : void 0;\n\t    });\n\t    sortedChildren.forEach((row) => {\n\t      el.append(row);\n\t    });\n\t    if (footer)\n\t      el.append(footer);\n\t  }\n\t  onDragMove(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragMove(e);\n\t  }\n\t  onDragLeave() {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragLeave();\n\t  }\n\t  onDragEnd(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragEnd(e);\n\t  }\n\t  onDragDrop(e) {\n\t    var _a;\n\t    (_a = this.reorder) === null || _a === void 0 ? void 0 : _a.dragDrop(e);\n\t  }\n\t  watchCollapsible() {\n\t    const { rows, groups, collapsible } = this;\n\t    groups.forEach((group) => {\n\t      group.collapsible = collapsible;\n\t      group.indent = 0;\n\t    });\n\t    rows.forEach((row) => {\n\t      if (row.header || row.footer)\n\t        return;\n\t      row.indent = collapsible && groups.length > 0 ? 1 : 0;\n\t    });\n\t  }\n\t  watchReorderable() {\n\t    const { el, reorder, reorderable: reorderable$1, reorderMode, marketTableV2RowsReordered } = this;\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.destroy();\n\t    const reorderEnabled = [\"internal\", \"external\"].includes(reorderable$1);\n\t    if (reorderEnabled) {\n\t      const rowTagName = index$1.getNamespacedTagFor(\"market-table-v2-row\");\n\t      const groupTagName = index$1.getNamespacedTagFor(\"market-table-v2-group\");\n\t      this.reorder = new reorderable.Reorderable({\n\t        el,\n\t        accepts: [`${rowTagName}:not([header]):not([footer]):not([slot=\"parent\"])`, groupTagName],\n\t        event: marketTableV2RowsReordered,\n\t        mode: reorderMode\n\t      });\n\t    }\n\t    this.syncDragEnabled();\n\t  }\n\t  /**\n\t   * @internal\n\t   * Sets selection on the table and propagates the value\n\t   * downwards to its children rows and groups.\n\t   */\n\t  async setSelected(selected, { silent = false } = {}) {\n\t    const { header, footer, children, selected: prevSelected } = this;\n\t    if (prevSelected === selected)\n\t      return Promise.resolve();\n\t    this.selected = selected;\n\t    await (header === null || header === void 0 ? void 0 : header.setSelected(selected, { silent }));\n\t    await (footer === null || footer === void 0 ? void 0 : footer.setSelected(selected, { silent }));\n\t    children === null || children === void 0 ? void 0 : children.forEach(async (child) => {\n\t      await child.setSelected(selected, { silent });\n\t    });\n\t    return Promise.resolve();\n\t  }\n\t  async setSelectedFromChildEvent(e) {\n\t    const { header, footer, children, selected: prevSelected } = this;\n\t    const { target, detail } = e;\n\t    const { current: childSelected } = detail;\n\t    const childrenSelected = children.map((child) => {\n\t      if (target === child)\n\t        return childSelected;\n\t      return child.selected;\n\t    });\n\t    const tableSelected = childrenSelected.every((val) => val === \"true\") ? \"true\" : childrenSelected.every((val) => val === \"false\") ? \"false\" : \"indeterminate\";\n\t    if (prevSelected === tableSelected)\n\t      return;\n\t    this.selected = tableSelected;\n\t    await (header === null || header === void 0 ? void 0 : header.setSelected(tableSelected, { silent: true }));\n\t    await (footer === null || footer === void 0 ? void 0 : footer.setSelected(tableSelected, { silent: true }));\n\t  }\n\t  getElements() {\n\t    this.rows = [...this.el.children].filter((child) => {\n\t      return child.tagName === index$1.getNamespacedTagFor(\"market-table-v2-row\").toUpperCase();\n\t    });\n\t    this.groups = [...this.el.children].filter((child) => {\n\t      return child.tagName === index$1.getNamespacedTagFor(\"market-table-v2-group\").toUpperCase();\n\t    });\n\t    this.header = this.rows.find((row) => row.header);\n\t    this.footer = this.rows.find((row) => row.footer);\n\t    this.children = [...this.groups, ...this.rows.filter((row) => !row.header && !row.footer)];\n\t  }\n\t  syncDragEnabled() {\n\t    const { header, footer, rows, groups, reorderable: reorderable2, reorderMode } = this;\n\t    const reorderEnabled = [\"internal\", \"external\"].includes(reorderable2);\n\t    if (header)\n\t      header.dragEnabled = reorderEnabled;\n\t    if (footer)\n\t      footer.dragEnabled = reorderEnabled;\n\t    rows === null || rows === void 0 ? void 0 : rows.forEach((row) => {\n\t      if (!draggable.isDraggable(row))\n\t        return;\n\t      row.dragEnabled = reorderEnabled;\n\t    });\n\t    groups === null || groups === void 0 ? void 0 : groups.forEach((group) => {\n\t      group.dragEnabled = reorderEnabled;\n\t      group.reorderable = reorderable2;\n\t      group.reorderMode = reorderMode;\n\t    });\n\t  }\n\t  onSlotChange() {\n\t    this.getElements();\n\t    this.watchCollapsible();\n\t    this.syncDragEnabled();\n\t  }\n\t  connectedCallback() {\n\t    this.getElements();\n\t    this.watchCollapsible();\n\t    this.syncDragEnabled();\n\t  }\n\t  componentDidRender() {\n\t    this.watchReorderable();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"9439ffd2072776047f83148e99185f0d20313e18\", class: \"market-table-v2\" }, index.h(\"div\", { key: \"fae9f97a17df6245d39fde47576c910796b12998\", role: \"table\", part: \"table\" }, index.h(\"slot\", { key: \"f5f2d8d545193678ab2cbb30733f4cb2a0927156\", onSlotchange: () => this.onSlotChange() })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"collapsible\": [\"watchCollapsible\"],\n\t      \"reorderable\": [\"watchReorderable\"]\n\t    };\n\t  }\n\t};\n\tMarketTableV2.style = MarketTableV2Style0;\n\tmarketTableV2_cjs_entry.market_table_v2 = MarketTableV2;\n\treturn marketTableV2_cjs_entry;\n}\n\nvar marketTableV2Cell_cjs_entry = {};\n\nvar hasRequiredMarketTableV2Cell_cjs_entry;\n\nfunction requireMarketTableV2Cell_cjs_entry () {\n\tif (hasRequiredMarketTableV2Cell_cjs_entry) return marketTableV2Cell_cjs_entry;\n\thasRequiredMarketTableV2Cell_cjs_entry = 1;\n\tObject.defineProperty(marketTableV2Cell_cjs_entry, \"__esModule\", { value: true });\n\tconst index$1 = requireIndex37364565();\n\tconst index = index254d04f0.requireIndex254d04f0();\n\tfunction isMarketCheckbox(value) {\n\t  var _a;\n\t  const tagName = (_a = value === null || value === void 0 ? void 0 : value.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n\t  return Boolean(value && tagName === index.getNamespacedTagFor(\"market-checkbox\"));\n\t}\n\tfunction isMarketToggle(value) {\n\t  var _a;\n\t  const tagName = (_a = value === null || value === void 0 ? void 0 : value.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n\t  return Boolean(value && tagName === index.getNamespacedTagFor(\"market-toggle\"));\n\t}\n\tfunction isMarketTableV2ControlElement(value) {\n\t  return isMarketCheckbox(value) || isMarketToggle(value);\n\t}\n\tconst marketTableV2CellCss = ':host,*{box-sizing:border-box}:host{--table-cell-vertical-padding-size:var(--core-metrics-spacing-150);--table-cell-horizontal-padding-size:var(--core-metrics-spacing-100);--table-cell-horizontal-spacing-size:var(--core-metrics-spacing-150);--table-cell-border-width:1px;--table-cell-heading-border-color:var(--core-divider-10-color);--table-cell-indent-level:0;--table-cell-indent-size:var(--core-metrics-spacing-500);--table-cell-caret-size:var(--core-metrics-spacing-500);--table-cell-text-font-weight:var(--core-type-paragraph-20-weight);--table-cell-text-font-size:var(--core-type-paragraph-20-size);--table-cell-text-line-height:var(--core-type-paragraph-20-leading);--table-cell-focus-ring-color:var(--core-focus-ring-color);display:table-cell;vertical-align:inherit;width:auto;padding:var(--table-cell-vertical-padding-size) var(--table-cell-horizontal-padding-size);border-bottom:var(--table-cell-border-width) solid var(--table-cell-border-color);outline:none;font-weight:var(--table-cell-text-font-weight);font-size:var(--table-cell-text-font-size);line-height:var(--table-cell-text-line-height);text-align:inherit}:host .content-outer{display:flex;gap:var(--table-cell-horizontal-spacing-size);justify-content:space-between;align-items:center;width:100%;transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:gap}:host .content-inner{display:flex;gap:var(--table-cell-horizontal-spacing-size);align-items:center;width:100%}:host .default-slot{width:100%}:host([indent]:not([indent=\"0\"])){padding-left:calc(\\n        var(--table-cell-horizontal-spacing-size) + var(--table-cell-indent-level) * var(--table-cell-indent-size)\\n      )}:host([indent][caret]:not([indent=\"0\"])){padding-left:calc(\\n        var(--table-cell-horizontal-padding-size) + var(--table-cell-indent-level) * var(--table-cell-indent-size)\\n      )}:host([nowrap]) .default-slot{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([align=\"left\"]){text-align:left}:host([align=\"center\"]){text-align:center}:host([align=\"right\"]){text-align:right}:host([valign=\"top\"]){vertical-align:top}:host([valign=\"middle\"]){vertical-align:middle}:host([valign=\"bottom\"]){vertical-align:bottom}:host([sticky]){position:sticky;z-index:2;background-color:var(--table-cell-state-normal-background-color)}:host([sticky=\"left\"]){left:0;border-right:var(--table-cell-border-width) solid var(--table-cell-heading-border-color)}:host([sticky=\"right\"]){right:0;border-left:var(--table-cell-border-width) solid var(--table-cell-heading-border-color)}:host(.market-drag-clone-first-cell){padding-left:var(--table-cell-horizontal-padding-size) !important}:host(.market-drag-clone-first-cell) .content-outer{gap:0}:host(.market-drag-clone-first-cell) .caret-button,:host(.market-drag-clone-first-cell) ::slotted([slot=\"control\"]){width:0;height:0;opacity:0%}::slotted([slot=\"control\"]),::slotted([slot=\"leading-accessory\"]),::slotted([slot=\"trailing-accessory\"]){flex-shrink:0}.caret-button,::slotted([slot=\"control\"]){transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:width, height, opacity}:host([interactive]){cursor:pointer}@media (hover: hover){:host([sortable]:hover),:host([interactive]:hover){background-color:var(--table-cell-hover-state-background-color)}}:host([sortable]:focus),:host([interactive]:focus){background-color:var(--table-cell-focus-state-background-color)}:host([sortable]:active),:host([interactive]:active){background-color:var(--table-cell-pressed-state-background-color)}:host([active]){background-color:var(--table-cell-selected-state-background-color)}:host([disabled]){color:var(--table-cell-disabled-state-text-color);pointer-events:none}.caret-button{display:flex;flex-shrink:0;justify-content:center;align-items:center;width:var(--table-cell-caret-size);height:var(--table-cell-caret-size);margin-top:calc(var(--table-cell-vertical-padding-size) * -1);margin-bottom:calc(var(--table-cell-vertical-padding-size) * -1);margin-left:calc(var(--table-cell-horizontal-padding-size) * -1);padding:0;border:none;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.caret-button svg{display:block;fill:var(--core-fill-20-color);transition:var(--core-animation-enter-transition-moderate-speed-duration) transform ease}:host([caret=\"up\"]) .caret-button svg{transform:rotate(-180deg)}.caret-button:focus-visible{border-radius:var(--core-radius-10);outline:var(--core-focus-ring-border-size) solid var(--table-cell-focus-ring-color);outline-offset:calc(var(--core-focus-ring-border-size) * -1)}.sort-button{display:flex;flex-shrink:0;gap:var(--core-metrics-spacing-50);align-items:center;width:100%;margin:0;padding:var(--table-cell-vertical-padding-size) var(--table-cell-horizontal-padding-size);border:none;background:transparent;color:unset;outline:none;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.sort-button svg{display:block;flex-shrink:0;fill:var(--core-text-30-color)}.sort-button:focus-visible{border-radius:var(--core-radius-10);outline:var(--core-focus-ring-border-size) solid var(--table-cell-focus-ring-color);outline-offset:calc(var(--core-focus-ring-border-size) * -1)}:host([align=\"left\"]) .sort-button{justify-content:start}:host([align=\"center\"]) .sort-button{justify-content:center}:host([align=\"right\"]) .sort-button{justify-content:end}:host([sortable]){padding:0}:host([sortable][sort-order=\"ascending\"]) .sort-button svg,:host([sortable][sort-order=\"descending\"]) .sort-button svg{fill:var(--core-text-10-color)}';\n\tconst MarketTableV2CellStyle0 = marketTableV2CellCss;\n\tconst MarketTableV2Cell = class {\n\t  constructor(hostRef) {\n\t    index$1.registerInstance(this, hostRef);\n\t    this.marketTableV2CellCaretClicked = index$1.createEvent(this, \"marketTableV2CellCaretClicked\", 7);\n\t    this.marketTableV2CellSortClicked = index$1.createEvent(this, \"marketTableV2CellSortClicked\", 7);\n\t    this.marketInternalTableV2CellSelectionChange = index$1.createEvent(this, \"marketInternalTableV2CellSelectionChange\", 7);\n\t    this.active = false;\n\t    this.align = void 0;\n\t    this.caret = void 0;\n\t    this.caretAriaLabelExpanded = \"Group of rows is expanded: click to collapse\";\n\t    this.caretAriaLabelCollapsed = \"Group of rows is collapsed: click to expand\";\n\t    this.disabled = false;\n\t    this.indent = void 0;\n\t    this.interactive = false;\n\t    this.nowrap = false;\n\t    this.selected = \"false\";\n\t    this.sticky = void 0;\n\t    this.sortable = void 0;\n\t    this.sortAriaLabelAscending = \"Sorted ascending: click to sort descending\";\n\t    this.sortAriaLabelDescending = \"Sorted descending: click to sort ascending\";\n\t    this.sortAriaLabelNone = \"Not sorted: click to sort ascending\";\n\t    this.sortOrder = \"none\";\n\t    this.sortStrategy = void 0;\n\t    this.sortStrategyFormat = void 0;\n\t    this.valign = void 0;\n\t  }\n\t  onKeydown(e) {\n\t    const { target, key } = e;\n\t    const { el, disabled, interactive } = this;\n\t    if (disabled)\n\t      return;\n\t    if (!interactive)\n\t      return;\n\t    if (target !== el)\n\t      return;\n\t    if (key === \"Enter\" || key === \" \") {\n\t      e.preventDefault();\n\t      el.click();\n\t    }\n\t  }\n\t  async onMarketControlSelectionChange(e) {\n\t    const { control } = this;\n\t    const { target, detail } = e;\n\t    if (target !== control)\n\t      return;\n\t    const selected = detail.current ? \"true\" : \"false\";\n\t    await this.setSelected(selected);\n\t  }\n\t  /**\n\t   * @internal\n\t   * Sets selection on the cell and propagates value to its slotted control\n\t   */\n\t  async setSelected(selected, { silent = false } = {}) {\n\t    const { marketInternalTableV2CellSelectionChange, selected: prevSelected } = this;\n\t    if (prevSelected === selected)\n\t      return Promise.resolve();\n\t    if (!silent) {\n\t      marketInternalTableV2CellSelectionChange.emit({\n\t        current: selected,\n\t        previous: prevSelected\n\t      });\n\t    }\n\t    this.selected = selected;\n\t    await this.setControlSelected(selected);\n\t    return Promise.resolve();\n\t  }\n\t  async setControlSelected(selected) {\n\t    const { control } = this;\n\t    if (!control)\n\t      return;\n\t    await control.setSelection(selected === \"true\", { silent: true });\n\t    if (isMarketCheckbox(control))\n\t      await control.setIndeterminate(selected === \"indeterminate\");\n\t  }\n\t  getTabIndex() {\n\t    const { disabled, interactive } = this;\n\t    return interactive && !disabled ? \"0\" : null;\n\t  }\n\t  getStyles() {\n\t    const { indent } = this;\n\t    if (!indent || indent < 1)\n\t      return {};\n\t    return { \"--table-cell-indent-level\": indent.toString() };\n\t  }\n\t  getSortButtonLabel() {\n\t    const { sortOrder, sortAriaLabelAscending, sortAriaLabelDescending, sortAriaLabelNone } = this;\n\t    switch (sortOrder) {\n\t      case \"ascending\":\n\t        return sortAriaLabelAscending;\n\t      case \"descending\":\n\t        return sortAriaLabelDescending;\n\t      default:\n\t        return sortAriaLabelNone;\n\t    }\n\t  }\n\t  onCaretClick(e) {\n\t    e.stopPropagation();\n\t    this.marketTableV2CellCaretClicked.emit();\n\t  }\n\t  onSortClick() {\n\t    const { sortOrder, marketTableV2CellSortClicked } = this;\n\t    const previous = sortOrder || \"none\";\n\t    const current = previous === \"ascending\" ? \"descending\" : \"ascending\";\n\t    const { defaultPrevented } = marketTableV2CellSortClicked.emit({\n\t      current,\n\t      previous\n\t    });\n\t    if (!defaultPrevented)\n\t      this.sortOrder = current;\n\t  }\n\t  async syncControlState() {\n\t    const { el, selected } = this;\n\t    const control = [...el.children].find((child) => child.slot === \"control\");\n\t    if (isMarketTableV2ControlElement(control)) {\n\t      this.control = control;\n\t      if (selected)\n\t        await this.setControlSelected(selected);\n\t    }\n\t  }\n\t  async connectedCallback() {\n\t    await this.syncControlState();\n\t  }\n\t  renderCaretButton() {\n\t    return (\n\t      // Note: We would ideally also have aria-expanded and aria-controls attributes; however, this is not currently\n\t      // possible (as of Mar 2024) due to the lack of support for referencing elements across shadow DOMs. Browser\n\t      // support work is ongoing in this area, but it is insufficient at this time. We should revisit in the future.\n\t      index$1.h(\"button\", { class: \"caret-button\", \"aria-label\": this.caret === \"down\" ? this.caretAriaLabelCollapsed : this.caretAriaLabelExpanded, onClick: (e) => this.onCaretClick(e) }, index$1.h(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, index$1.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M8.70715 11.7071C8.31663 12.0976 7.68346 12.0976 7.29294 11.7071L1.29294 5.70711L2.70715 4.29289L8.00005 9.58579L13.2929 4.29289L14.7072 5.70711L8.70715 11.7071Z\" })))\n\t    );\n\t  }\n\t  renderSortAscendingSvg() {\n\t    return index$1.h(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, index$1.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M7.52861 2.86177C7.78895 2.60142 8.21107 2.60142 8.47141 2.86177L13.1381 7.52843L12.1953 8.47124L8.66668 4.94265L8.66668 12.6665H7.33334V4.94265L3.80475 8.47124L2.86194 7.52843L7.52861 2.86177Z\" }));\n\t  }\n\t  renderSortDecendingSvg() {\n\t    return index$1.h(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, index$1.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M8.47129 13.1382C8.21094 13.3986 7.78883 13.3986 7.52848 13.1382L2.86182 8.47157L3.80463 7.52876L7.33322 11.0574L7.33322 3.3335L8.66655 3.3335L8.66655 11.0574L12.1952 7.52876L13.138 8.47157L8.47129 13.1382Z\" }));\n\t  }\n\t  renderSortNoneSvg() {\n\t    return index$1.h(\"svg\", { width: \"16\", height: \"17\", viewBox: \"0 0 16 17\", xmlns: \"http://www.w3.org/2000/svg\" }, index$1.h(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M10.8633 14.31L8.19664 11.6434L9.1433 10.7034L10.67 12.23L10.67 3.17002L12.0033 3.17002L12.0033 12.23L13.53 10.7034L14.47 11.6434L11.8033 14.31C11.5433 14.57 11.1233 14.57 10.8633 14.31ZM2.46997 6.30338L1.52997 5.36338L4.19664 2.69671C4.45664 2.43671 4.87664 2.43671 5.13664 2.69671L7.8033 5.36338L6.8633 6.30338L5.33664 4.77671L5.33664 13.8367L4.0033 13.8367L4.0033 4.77671L2.46997 6.30338Z\" }));\n\t  }\n\t  renderSortSvg() {\n\t    switch (this.sortOrder) {\n\t      case \"ascending\":\n\t        return this.renderSortAscendingSvg();\n\t      case \"descending\":\n\t        return this.renderSortDecendingSvg();\n\t      default:\n\t        return this.renderSortNoneSvg();\n\t    }\n\t  }\n\t  render() {\n\t    var _a;\n\t    const { el, caret, sortable, sortOrder } = this;\n\t    return index$1.h(index$1.Host, { key: \"b82397e1be1e001f255a3d37bf66b10c0a966ed6\", role: (_a = el.role) !== null && _a !== void 0 ? _a : \"cell\", tabindex: this.getTabIndex(), style: this.getStyles(), class: \"market-table-v2-cell\", \"sort-order\": sortOrder !== \"none\" ? sortOrder : null, \"aria-sort\": sortOrder !== \"none\" ? sortOrder : null }, index$1.h(\"div\", { key: \"535aefc1ead349c0313675f120561c6e029d745c\", class: \"content-outer\" }, caret && this.renderCaretButton(), index$1.h(\"slot\", { key: \"863954364b93a1b572af7230ffe70c3b98cceb8b\", name: \"control\", onSlotchange: () => this.syncControlState() }), index$1.h(\"div\", { key: \"8400976b23d3d49022c8f5e917c4711312778fad\", class: \"content-inner\" }, index$1.h(\"slot\", { key: \"153bc71b4689cf9155b8b239c86b21de6be4a3a3\", name: \"leading-accessory\" }), index$1.h(\"div\", { key: \"4f66a7d1957cdaf6f6025e91baca59f99501e717\", class: \"default-slot\" }, !sortable && index$1.h(\"slot\", { key: \"e7d8af9b9a38bac612c4cf40a71e328da71183f5\" }), sortable && index$1.h(\"button\", { key: \"f0b9df995a4239e6623f51f30786a637335fb908\", class: \"sort-button\", \"aria-describedby\": \"sort-button-label\", onClick: () => this.onSortClick() }, index$1.h(\"slot\", { key: \"5341a61eba09e6167bbf620141c754d911ef6d10\" }), this.renderSortSvg(), index$1.h(\"span\", { key: \"a5080b9c030cca839c167c1f5198faa2d633c977\", id: \"sort-button-label\", hidden: true }, this.getSortButtonLabel()))), index$1.h(\"slot\", { key: \"a66296c5887569fb978904933900f671f2337306\", name: \"trailing-accessory\" }))));\n\t  }\n\t  get el() {\n\t    return index$1.getElement(this);\n\t  }\n\t};\n\tMarketTableV2Cell.style = MarketTableV2CellStyle0;\n\tmarketTableV2Cell_cjs_entry.market_table_v2_cell = MarketTableV2Cell;\n\treturn marketTableV2Cell_cjs_entry;\n}\n\nvar marketTableV2Group_cjs_entry = {};\n\nvar hasRequiredMarketTableV2Group_cjs_entry;\n\nfunction requireMarketTableV2Group_cjs_entry () {\n\tif (hasRequiredMarketTableV2Group_cjs_entry) return marketTableV2Group_cjs_entry;\n\thasRequiredMarketTableV2Group_cjs_entry = 1;\n\tObject.defineProperty(marketTableV2Group_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst draggable = requireDraggableA7663027();\n\tconst reorderable = requireReorderable3af89049();\n\tconst utils = requireUtils94f130b4();\n\trequireMaxZIndex536dd36e();\n\trequireRafEa414557();\n\trequireIndexB1e6d30f();\n\trequireIndexF2237153();\n\tconst marketTableV2GroupCss = ':host{--table-cell-horizontal-padding-size:8px;--table-cell-indent-size:40px;--drag-highlight-border-size:2px}:host,slot,.children{vertical-align:inherit;text-align:inherit}:host,.children{display:contents}:host([collapsible][collapsed]) .children{display:none}:host(.market-drag-cursor-parent[collapsible][collapsed]) ::slotted([slot=\"parent\"]){position:relative;border-radius:var(--core-radius-10);background-color:var(--core-emphasis-40-color);outline:var(--drag-highlight-border-size) solid var(--core-emphasis-fill-color);outline-offset:calc(var(--drag-highlight-border-size) * -1)}::slotted(.market-drag-cursor){--drag-cursor-height:4px;position:absolute;right:0;left:calc(\\n      var(--table-cell-horizontal-padding-size) +\\n      (var(--drag-cursor-indent-level) + 1) * var(--table-cell-indent-size)\\n    );display:block;height:0;outline:calc(var(--drag-cursor-height) / 2) solid var(--core-emphasis-fill-color);pointer-events:none}:host(.market-drag-placeholder) ::slotted(:not([slot=\"parent\"])){display:none}';\n\tconst MarketTableV2GroupStyle0 = marketTableV2GroupCss;\n\tconst MarketTableV2Group = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInternalTableV2GroupSelectionChange = index.createEvent(this, \"marketInternalTableV2GroupSelectionChange\", 7);\n\t    this.marketTableV2RowsReordered = index.createEvent(this, \"marketTableV2RowsReordered\", 7);\n\t    this.marketTableV2GroupCollapsedChange = index.createEvent(this, \"marketTableV2GroupCollapsedChange\", 7);\n\t    this.collapsible = false;\n\t    this.collapsed = false;\n\t    this.dragEnabled = false;\n\t    this.indent = 0;\n\t    this.reorderable = void 0;\n\t    this.reorderMode = \"default\";\n\t    this.selected = \"false\";\n\t  }\n\t  onMarketTableV2CellCaretClicked(e) {\n\t    e.stopPropagation();\n\t    this.setCollapsed(!this.collapsed);\n\t  }\n\t  async onMarketTableV2SelectionChange(e) {\n\t    const { el, parent } = this;\n\t    const { target, detail } = e;\n\t    const { current } = detail;\n\t    if (target === el)\n\t      return;\n\t    e.stopImmediatePropagation();\n\t    if (target === parent) {\n\t      await this.setSelected(current);\n\t    } else {\n\t      await this.setSelectedFromChildEvent(e);\n\t    }\n\t  }\n\t  // These marketDragHandle listeners are for dragging this entire group,\n\t  // which is triggered by dragging the handle of the parent row.\n\t  // We ONLY want to listen for drag handle events on the parent,\n\t  // so we return early if the target is NOT the parent.\n\t  async onDragHandleStart(e) {\n\t    e.stopImmediatePropagation();\n\t    const { el, parent } = this;\n\t    const { target, detail: coords } = e;\n\t    if (parent !== target)\n\t      return;\n\t    const anchor = parent.dragHandlePosition === \"leading\" ? \"left\" : \"right\";\n\t    const drag = new draggable.Draggable(el, { anchor });\n\t    this.drag = drag;\n\t    await drag.start(coords);\n\t    parent.classList.add(\"market-drag-placeholder\");\n\t  }\n\t  onDragHandleMove(e) {\n\t    e.stopImmediatePropagation();\n\t    const { parent, drag } = this;\n\t    const { target, detail: coords } = e;\n\t    if (parent !== target)\n\t      return;\n\t    drag.move(coords);\n\t  }\n\t  async onDragHandleDragEnd(e) {\n\t    e.stopImmediatePropagation();\n\t    const { parent, drag } = this;\n\t    const { target, detail: coords } = e;\n\t    if (parent !== target)\n\t      return;\n\t    await drag.end(coords);\n\t    parent.classList.remove(\"market-drag-placeholder\");\n\t    drag.destroy();\n\t  }\n\t  // These marketDrag listeners are for dragging WITHIN this group.\n\t  // If the dragged element is the parent row, we return early.\n\t  onDragMove(e) {\n\t    const { parent, reorder } = this;\n\t    const { el } = e.detail;\n\t    if (parent === el)\n\t      return;\n\t    e.stopImmediatePropagation();\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.dragMove(e);\n\t  }\n\t  onDragLeave(e) {\n\t    const { parent, reorder } = this;\n\t    const { el } = e.detail;\n\t    if (parent === el)\n\t      return;\n\t    e.stopImmediatePropagation();\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.dragLeave();\n\t  }\n\t  onDragEnd(e) {\n\t    const { parent, reorder } = this;\n\t    const { el } = e.detail;\n\t    if (parent === el)\n\t      return;\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.dragEnd(e);\n\t  }\n\t  onDragDrop(e) {\n\t    const { parent, reorder } = this;\n\t    const { el } = e.detail;\n\t    if (parent === el)\n\t      return;\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.dragDrop(e);\n\t  }\n\t  propagateNestedState() {\n\t    const { parent, children, groups, rows, indent, collapsible, collapsed } = this;\n\t    groups.forEach((group) => {\n\t      group.collapsible = collapsible;\n\t    });\n\t    if (collapsible) {\n\t      const hasChildren = children.length > 0;\n\t      if (parent) {\n\t        parent.caret = hasChildren ? collapsed ? \"down\" : \"up\" : void 0;\n\t        parent.indent = hasChildren ? indent : indent + 1;\n\t      }\n\t      groups.forEach((group) => {\n\t        group.indent = indent + 1;\n\t        group.collapsible = collapsible;\n\t      });\n\t      rows.forEach((row) => {\n\t        row.indent = indent + 2;\n\t      });\n\t    } else {\n\t      if (parent) {\n\t        parent.caret = void 0;\n\t        parent.indent = indent;\n\t      }\n\t      children.forEach((child) => {\n\t        child.indent = indent + 1;\n\t      });\n\t      groups.forEach((group) => {\n\t        group.collapsible = collapsible;\n\t      });\n\t    }\n\t  }\n\t  watchDragEnabled() {\n\t    const { parent, children, dragEnabled } = this;\n\t    if (parent)\n\t      parent.dragEnabled = dragEnabled;\n\t    children === null || children === void 0 ? void 0 : children.forEach((child) => {\n\t      child.dragEnabled = dragEnabled;\n\t    });\n\t  }\n\t  watchReorderable() {\n\t    const { el, reorder, reorderable: reorderable$1, reorderMode, marketTableV2RowsReordered } = this;\n\t    reorder === null || reorder === void 0 ? void 0 : reorder.destroy();\n\t    const reorderEnabled = [\"internal\", \"external\"].includes(reorderable$1);\n\t    if (reorderEnabled) {\n\t      const rowTagName = index$1.getNamespacedTagFor(\"market-table-v2-row\");\n\t      const groupTagName = index$1.getNamespacedTagFor(\"market-table-v2-group\");\n\t      this.reorder = new reorderable.Reorderable({\n\t        el,\n\t        accepts: [`${rowTagName}:not([header]):not([footer]):not([slot=\"parent\"])`, groupTagName],\n\t        event: marketTableV2RowsReordered,\n\t        mode: reorderMode\n\t      });\n\t    }\n\t    this.syncDragEnabled();\n\t  }\n\t  /**\n\t   * @internal\n\t   * Sets selection on the group and propagates the value\n\t   * downwards to its children rows and upwards to any parent groups or tables.\n\t   */\n\t  async setSelected(selected, { silent = false } = {}) {\n\t    const { parent, children, marketInternalTableV2GroupSelectionChange, selected: prevSelected } = this;\n\t    if (prevSelected === selected)\n\t      return Promise.resolve();\n\t    if (!silent) {\n\t      marketInternalTableV2GroupSelectionChange.emit({\n\t        current: selected,\n\t        previous: prevSelected\n\t      });\n\t    }\n\t    this.selected = selected;\n\t    await (parent === null || parent === void 0 ? void 0 : parent.setSelected(selected, { silent: true }));\n\t    children === null || children === void 0 ? void 0 : children.forEach(async (child) => {\n\t      await child.setSelected(selected, { silent: true });\n\t    });\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * Used internally by Reorderable utils.\n\t   * Sets the group's collapsed state and fires the change event.\n\t   * Normally you should set the `collapsed` prop directly.\n\t   */\n\t  async setCollapsed(collapsed, { silent = false } = {}) {\n\t    const { collapsed: prevCollapsed, collapsible, marketTableV2GroupCollapsedChange } = this;\n\t    if (!collapsible)\n\t      return Promise.resolve();\n\t    if (collapsed === prevCollapsed)\n\t      return Promise.resolve();\n\t    this.collapsed = collapsed;\n\t    if (!silent) {\n\t      const { defaultPrevented } = marketTableV2GroupCollapsedChange.emit({\n\t        previous: prevCollapsed,\n\t        current: collapsed\n\t      });\n\t      if (defaultPrevented)\n\t        this.collapsed = prevCollapsed;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * @internal\n\t   * Recursively sorts the group's children rows and groups.\n\t   */\n\t  async sort({ order, column, strategy, format }) {\n\t    const { el, children, groups } = this;\n\t    const sortedChildren = utils.sortItems({\n\t      items: children,\n\t      order,\n\t      column,\n\t      strategy,\n\t      format\n\t    });\n\t    groups === null || groups === void 0 ? void 0 : groups.forEach((group) => group.sort({\n\t      order,\n\t      column,\n\t      strategy,\n\t      format\n\t    }));\n\t    sortedChildren.forEach((row) => {\n\t      el.append(row);\n\t    });\n\t    return Promise.resolve();\n\t  }\n\t  async setSelectedFromChildEvent(e) {\n\t    const { parent, children, marketInternalTableV2GroupSelectionChange, selected: prevSelected } = this;\n\t    const { target, detail } = e;\n\t    const { current: childSelected } = detail;\n\t    const childrenSelected = children.map((child) => {\n\t      if (target === child)\n\t        return childSelected;\n\t      return child.selected;\n\t    });\n\t    const groupSelected = childrenSelected.every((val) => val === \"true\") ? \"true\" : childrenSelected.every((val) => val === \"false\") ? \"false\" : \"indeterminate\";\n\t    if (prevSelected === groupSelected)\n\t      return;\n\t    marketInternalTableV2GroupSelectionChange.emit({\n\t      current: groupSelected,\n\t      previous: prevSelected\n\t    });\n\t    this.selected = groupSelected;\n\t    await parent.setSelected(groupSelected, { silent: true });\n\t  }\n\t  getElements() {\n\t    this.parent = [...this.el.children].find((child) => {\n\t      return child.tagName === index$1.getNamespacedTagFor(\"market-table-v2-row\").toUpperCase() && child.slot === \"parent\";\n\t    });\n\t    this.rows = [...this.el.children].filter((child) => {\n\t      return child.tagName === index$1.getNamespacedTagFor(\"market-table-v2-row\").toUpperCase() && child.slot !== \"parent\";\n\t    });\n\t    this.groups = [...this.el.children].filter((child) => {\n\t      return child.tagName === index$1.getNamespacedTagFor(\"market-table-v2-group\").toUpperCase() && child.slot !== \"parent\";\n\t    });\n\t    this.children = [...this.groups, ...this.rows];\n\t  }\n\t  getStyles() {\n\t    const { indent } = this;\n\t    return { \"--drag-cursor-indent-level\": indent.toString() };\n\t  }\n\t  syncDragEnabled() {\n\t    const { parent, rows, groups, reorderable: reorderable2, reorderMode } = this;\n\t    const reorderEnabled = [\"internal\", \"external\"].includes(reorderable2);\n\t    if (parent)\n\t      parent.dragEnabled = reorderEnabled;\n\t    rows === null || rows === void 0 ? void 0 : rows.forEach((row) => {\n\t      if (!draggable.isDraggable(row))\n\t        return;\n\t      row.dragEnabled = reorderEnabled;\n\t    });\n\t    groups === null || groups === void 0 ? void 0 : groups.forEach((group) => {\n\t      group.dragEnabled = reorderEnabled;\n\t      group.reorderable = reorderable2;\n\t      group.reorderMode = reorderMode;\n\t    });\n\t  }\n\t  onSlotChange() {\n\t    this.getElements();\n\t    this.propagateNestedState();\n\t    this.syncDragEnabled();\n\t  }\n\t  connectedCallback() {\n\t    this.getElements();\n\t    this.propagateNestedState();\n\t    this.syncDragEnabled();\n\t  }\n\t  componentDidRender() {\n\t    this.watchReorderable();\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"84390ff0fa82e9e171605a446e9313752ae5f2f0\", class: \"market-table-v2-group\", style: this.getStyles() }, index.h(\"slot\", { key: \"3da6cef5e57b83298b4ccb16fd717ff8a3677843\", name: \"parent\", onSlotchange: () => this.onSlotChange() }), index.h(\"div\", { key: \"a4571aa4004670ee6ec6efaa1ca1cd9ee480cd32\", class: \"children\" }, index.h(\"slot\", { key: \"b6349aab9652bd03d81a671867228359e58a2002\", onSlotchange: () => this.onSlotChange() })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"indent\": [\"propagateNestedState\"],\n\t      \"collapsed\": [\"propagateNestedState\"],\n\t      \"collapsible\": [\"propagateNestedState\"],\n\t      \"dragEnabled\": [\"watchDragEnabled\"],\n\t      \"reorderable\": [\"watchReorderable\"]\n\t    };\n\t  }\n\t};\n\tMarketTableV2Group.style = MarketTableV2GroupStyle0;\n\tmarketTableV2Group_cjs_entry.market_table_v2_group = MarketTableV2Group;\n\treturn marketTableV2Group_cjs_entry;\n}\n\nvar marketTableV2Row_cjs_entry = {};\n\nvar hasRequiredMarketTableV2Row_cjs_entry;\n\nfunction requireMarketTableV2Row_cjs_entry () {\n\tif (hasRequiredMarketTableV2Row_cjs_entry) return marketTableV2Row_cjs_entry;\n\thasRequiredMarketTableV2Row_cjs_entry = 1;\n\tObject.defineProperty(marketTableV2Row_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst draggable = requireDraggableA7663027();\n\trequireMaxZIndex536dd36e();\n\trequireRafEa414557();\n\tconst marketTableV2RowCss = ':host,*{box-sizing:border-box}:host{--table-cell-border-width:1px;--table-cell-border-color:var(--core-divider-20-color);--table-cell-horizontal-spacing:var(--core-metrics-spacing-150);--table-cell-heading-border-color:var(--core-divider-10-color);--table-cell-heading-font-weight:var(--core-type-medium-weight);--table-cell-state-normal-background-color:var(--core-surface-10-color);display:table-row;vertical-align:inherit;width:100%;outline:none;text-align:inherit}:host slot{vertical-align:inherit;text-align:inherit}:host([align=\"left\"]){text-align:left}:host([align=\"center\"]){text-align:center}:host([align=\"right\"]){text-align:right}:host([valign=\"top\"]){vertical-align:top}:host([valign=\"middle\"]){vertical-align:middle}:host([valign=\"bottom\"]){vertical-align:bottom}:host([header]) .market-table-v2-cell,:host([header]) ::slotted(.market-table-v2-cell),:host([footer]) .market-table-v2-cell,:host([footer]) ::slotted(.market-table-v2-cell){font-weight:var(--table-cell-heading-font-weight)}:host([header]) .market-drag-handle,:host([footer]) .market-drag-handle{visibility:hidden}:host([header]) .market-table-v2-cell,:host([header]) ::slotted(.market-table-v2-cell),:host([sticky=\"top\"]) .market-table-v2-cell,:host([sticky=\"top\"]) ::slotted(.market-table-v2-cell){border-bottom:var(--table-cell-border-width) solid var(--table-cell-heading-border-color)}:host([footer]) .market-table-v2-cell,:host([footer]) ::slotted(.market-table-v2-cell),:host([sticky=\"bottom\"]) .market-table-v2-cell,:host([sticky=\"bottom\"]) ::slotted(.market-table-v2-cell){border-top:var(--table-cell-border-width) solid var(--table-cell-heading-border-color);border-bottom:none}:host([sticky]){position:sticky;z-index:3;background-color:var(--table-cell-state-normal-background-color)}:host([sticky=\"top\"]){top:0}:host([sticky=\"bottom\"]){bottom:0}:host([interactive]){cursor:pointer}@media (hover: hover){:host([interactive]:hover){background-color:var(--table-cell-hover-state-background-color)}}:host([interactive]:focus){background-color:var(--table-cell-focus-state-background-color)}:host([interactive]:active){background-color:var(--table-cell-pressed-state-background-color)}:host([active]){background-color:var(--table-cell-selected-state-background-color)}:host([disabled]){color:var(--table-cell-disabled-state-text-color);pointer-events:none}.drag-handle-cell{width:var(--core-metrics-spacing-500)}@media (hover: hover){:host([drag-handle-visibility=\"hover\"]) .market-drag-handle{opacity:0%}:host([drag-handle-visibility=\"hover\"]:hover) .market-drag-handle{opacity:100%}}:host(.market-drag-placeholder),:host(.market-drag-placeholder[interactive]){background-color:var(--core-fill-50-color)}:host(.market-drag-placeholder) *,:host(.market-drag-placeholder) ::slotted(*),:host(.market-drag-placeholder[interactive]) *,:host(.market-drag-placeholder[interactive]) ::slotted(*){opacity:0%}:host(.market-drag-placeholder) .market-drag-handle,:host(.market-drag-placeholder[interactive]) .market-drag-handle{pointer-events:none}:host(.market-drag-clone),:host(.market-drag-clone[interactive]){--table-row-dragged-width:240px;display:flex;justify-content:space-between;align-items:center;width:var(--table-row-dragged-width);border-bottom:var(--table-cell-border-width) solid var(--table-cell-border-color);border-radius:var(--core-radius-10);background-color:var(--core-surface-20-color);cursor:grabbing;transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:top, width, height}:host(.market-drag-clone)::after,:host(.market-drag-clone[interactive])::after{content:\"\";position:absolute;inset:0;display:block;border-radius:var(--core-radius-10);box-shadow:var(--elevation-20-shadow);opacity:var(--market-drag-clone-shadow-opacity, 0%);transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:opacity}:host(.market-drag-clone) .market-drag-handle,:host(.market-drag-clone[interactive]) .market-drag-handle{cursor:grabbing}:host(.market-drag-clone) ::slotted(.market-table-v2-cell:first-child),:host(.market-drag-clone[interactive]) ::slotted(.market-table-v2-cell:first-child){overflow:hidden;width:100%;border:none;text-overflow:ellipsis;white-space:nowrap;transition-timing-function:var(--core-animation-move-transition-easing);transition-duration:var(--core-animation-move-transition-moderate-speed-duration);transition-property:padding-left}:host(.market-drag-clone) ::slotted(.market-table-v2-cell:not(:first-child)),:host(.market-drag-clone[interactive]) ::slotted(.market-table-v2-cell:not(:first-child)){display:none}:host(.market-drag-clone) .drag-handle-cell,:host(.market-drag-clone[interactive]) .drag-handle-cell{border:none}:host(.market-drag-clone[drag-handle-position=\"leading\"]){justify-content:flex-start}:host(.market-drag-released){pointer-events:none;transition-property:opacity, width, height, transform, scale}:host(.market-drag-into-collapsed-group){opacity:0%;scale:0}';\n\tconst MarketTableV2RowStyle0 = marketTableV2RowCss;\n\tconst MarketTableV2Row = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketInternalTableV2RowSelectionChange = index.createEvent(this, \"marketInternalTableV2RowSelectionChange\", 7);\n\t    this.marketTableV2RowSelectionChange = index.createEvent(this, \"marketTableV2RowSelectionChange\", 7);\n\t    this.active = false;\n\t    this.align = void 0;\n\t    this.caret = void 0;\n\t    this.disabled = false;\n\t    this.dragEnabled = false;\n\t    this.dragHandleVisibility = void 0;\n\t    this.dragHandlePosition = void 0;\n\t    this.footer = false;\n\t    this.header = false;\n\t    this.indent = void 0;\n\t    this.interactive = false;\n\t    this.selected = \"false\";\n\t    this.sticky = void 0;\n\t    this.valign = void 0;\n\t  }\n\t  onKeydown(e) {\n\t    const { target, key } = e;\n\t    const { el, disabled, interactive } = this;\n\t    if (disabled)\n\t      return;\n\t    if (!interactive)\n\t      return;\n\t    if (target !== el)\n\t      return;\n\t    if (key === \"Enter\" || key === \" \") {\n\t      e.preventDefault();\n\t      el.click();\n\t    }\n\t  }\n\t  async onMarketInternalTableV2CellSelectionChange(e) {\n\t    const { detail, target } = e;\n\t    const { current } = detail;\n\t    const { firstCell } = this;\n\t    if (target !== firstCell)\n\t      return;\n\t    e.stopPropagation();\n\t    await this.setSelected(current);\n\t  }\n\t  async onDragStart(e) {\n\t    const { el, dragHandlePosition } = this;\n\t    if (el.slot === \"parent\")\n\t      return;\n\t    e.stopPropagation();\n\t    const coords = e.detail;\n\t    const anchor = dragHandlePosition === \"leading\" ? \"left\" : \"right\";\n\t    const drag = new draggable.Draggable(el, { anchor });\n\t    this.drag = drag;\n\t    await drag.start(coords);\n\t  }\n\t  onDragMove(e) {\n\t    if (this.el.slot === \"parent\")\n\t      return;\n\t    e.stopPropagation();\n\t    const coords = e.detail;\n\t    this.drag.move(coords);\n\t  }\n\t  async onDragEnd(e) {\n\t    if (this.el.slot === \"parent\")\n\t      return;\n\t    e.stopPropagation();\n\t    const coords = e.detail;\n\t    await this.drag.end(coords);\n\t    this.drag.destroy();\n\t  }\n\t  watchCaret() {\n\t    const { firstCell, caret } = this;\n\t    if (firstCell)\n\t      firstCell.caret = caret;\n\t  }\n\t  watchIndent() {\n\t    const { firstCell, indent } = this;\n\t    if (firstCell)\n\t      firstCell.indent = indent;\n\t  }\n\t  /**\n\t   * Sets selection on the row and propagates the value\n\t   * downwards to the slotted control in its first cell\n\t   * and upwards to any parent groups or tables.\n\t   */\n\t  async setSelected(selected, { silent = false } = {}) {\n\t    const { firstCell, selected: prevSelected, marketTableV2RowSelectionChange, marketInternalTableV2RowSelectionChange } = this;\n\t    if (prevSelected === selected)\n\t      return Promise.resolve();\n\t    const { defaultPrevented } = marketTableV2RowSelectionChange.emit({\n\t      current: selected,\n\t      previous: prevSelected\n\t    });\n\t    if (defaultPrevented) {\n\t      await (firstCell === null || firstCell === void 0 ? void 0 : firstCell.setSelected(prevSelected, { silent: true }));\n\t      return Promise.resolve();\n\t    }\n\t    if (!silent) {\n\t      marketInternalTableV2RowSelectionChange.emit({\n\t        current: selected,\n\t        previous: prevSelected\n\t      });\n\t    }\n\t    this.selected = selected;\n\t    await (firstCell === null || firstCell === void 0 ? void 0 : firstCell.setSelected(selected, { silent }));\n\t    return Promise.resolve();\n\t  }\n\t  getTabIndex() {\n\t    const { disabled, interactive } = this;\n\t    return interactive && !disabled ? \"0\" : null;\n\t  }\n\t  async initFirstCell() {\n\t    const { el, selected } = this;\n\t    const MarketTableV2CellTagName = index$1.getNamespacedTagFor(\"market-table-v2-cell\");\n\t    const firstCell = el.querySelector(`${MarketTableV2CellTagName}`);\n\t    if (firstCell) {\n\t      this.firstCell = firstCell;\n\t      if (selected)\n\t        await (firstCell === null || firstCell === void 0 ? void 0 : firstCell.setSelected(selected));\n\t    }\n\t    this.watchCaret();\n\t    this.watchIndent();\n\t  }\n\t  async connectedCallBack() {\n\t    await this.initFirstCell();\n\t  }\n\t  renderDragHandleCell() {\n\t    const MarketDragHandleTagName = index$1.getNamespacedTagFor(\"market-drag-handle\");\n\t    const MarketTableV2CellTagName = index$1.getNamespacedTagFor(\"market-table-v2-cell\");\n\t    return index.h(MarketTableV2CellTagName, { class: \"drag-handle-cell\", part: \"drag-handle-cell\" }, index.h(MarketDragHandleTagName, { part: \"drag-handle\" }));\n\t  }\n\t  render() {\n\t    const { dragEnabled, dragHandlePosition } = this;\n\t    return index.h(index.Host, { key: \"ea547384e2c7295e09b61d07c471ac6ea3640449\", role: \"row\", class: \"market-table-v2-row\", tabindex: this.getTabIndex(), onMarketDragHandleDragStart: (e) => this.onDragStart(e), onMarketDragHandleDragMove: (e) => this.onDragMove(e), onMarketDragHandleDragEnd: (e) => this.onDragEnd(e) }, dragEnabled && dragHandlePosition === \"leading\" && this.renderDragHandleCell(), index.h(\"slot\", { key: \"bbe60ca331df90a9ccd2a5d3467a8504021363be\", onSlotchange: () => this.initFirstCell() }), dragEnabled && dragHandlePosition !== \"leading\" && this.renderDragHandleCell());\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"caret\": [\"watchCaret\"],\n\t      \"indent\": [\"watchIndent\"]\n\t    };\n\t  }\n\t};\n\tMarketTableV2Row.style = MarketTableV2RowStyle0;\n\tmarketTableV2Row_cjs_entry.market_table_v2_row = MarketTableV2Row;\n\treturn marketTableV2Row_cjs_entry;\n}\n\nvar marketTabs_cjs_entry = {};\n\nvar hasRequiredMarketTabs_cjs_entry;\n\nfunction requireMarketTabs_cjs_entry () {\n\tif (hasRequiredMarketTabs_cjs_entry) return marketTabs_cjs_entry;\n\thasRequiredMarketTabs_cjs_entry = 1;\n\tObject.defineProperty(marketTabs_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketTabsCss = \":host{display:block}\";\n\tconst MarketTabsStyle0 = marketTabsCss;\n\tconst MarketTabs = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.selectedTab = void 0;\n\t    this.defaultTab = void 0;\n\t  }\n\t  marketTabSelectedChangedEventHandler(e) {\n\t    e.stopPropagation();\n\t    const { panelId, tabId, value } = e.detail;\n\t    if (!value) {\n\t      return;\n\t    } else if (this.selectedTab !== tabId) {\n\t      this.selectedTab = tabId;\n\t    }\n\t    this.showPanelWithId(panelId);\n\t  }\n\t  tabWatcher(newTabId) {\n\t    this.setTab(newTabId);\n\t  }\n\t  setTab(tabId) {\n\t    if (this.tabListEl) {\n\t      this.tabListEl.selectedTab = tabId;\n\t    }\n\t  }\n\t  showPanelWithId(panelId) {\n\t    var _a;\n\t    (_a = this.panelEls) === null || _a === void 0 ? void 0 : _a.forEach((panelEl) => {\n\t      panelEl.hidden = panelEl.id !== panelId;\n\t    });\n\t  }\n\t  handleSlotChange() {\n\t    this.panelEls = [...this.el.querySelectorAll(index$1.getNamespacedTagFor(\"market-tab-panel\"))].map((panelEl) => {\n\t      panelEl.hidden = true;\n\t      return panelEl;\n\t    });\n\t    this.tabListEl = this.el.querySelector(index$1.getNamespacedTagFor(\"market-tab-list\"));\n\t  }\n\t  componentWillLoad() {\n\t    var _a;\n\t    this.handleSlotChange();\n\t    this.setTab((_a = this.selectedTab) !== null && _a !== void 0 ? _a : this.defaultTab);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"53ff789aed8ca0f7be61b9a25db6626b42205547\", class: \"market-tabs\" }, index.h(\"slot\", { key: \"1bd8b9a6a81c14e139d9e74bdee8f12669d792e6\", onSlotchange: () => this.handleSlotChange() }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"selectedTab\": [\"tabWatcher\"]\n\t    };\n\t  }\n\t};\n\tMarketTabs.style = MarketTabsStyle0;\n\tmarketTabs_cjs_entry.market_tabs = MarketTabs;\n\treturn marketTabs_cjs_entry;\n}\n\nvar marketTag_cjs_entry = {};\n\nvar hasRequiredMarketTag_cjs_entry;\n\nfunction requireMarketTag_cjs_entry () {\n\tif (hasRequiredMarketTag_cjs_entry) return marketTag_cjs_entry;\n\thasRequiredMarketTag_cjs_entry = 1;\n\tObject.defineProperty(marketTag_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketTagCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--tag-small-size-minimum-height:var(--core-metrics-spacing-400);--tag-small-size-horizontal-spacing:var(--core-metrics-spacing-50);--tag-small-size-text-weight:var(--core-type-paragraph-10-weight);--tag-small-size-text-size:var(--core-type-paragraph-10-size);--tag-small-size-text-leading:var(--core-type-paragraph-10-leading);--tag-small-size-text-tracking:var(--core-type-paragraph-10-tracking);--tag-small-size-text-case:var(--core-type-paragraph-10-case);--tag-small-size-basic-format-top-padding:7px;--tag-small-size-basic-format-right-padding:8px;--tag-small-size-basic-format-bottom-padding:7px;--tag-small-size-basic-format-left-padding:12px;--tag-small-size-with-icon-format-top-padding:7px;--tag-small-size-with-icon-format-right-padding:8px;--tag-small-size-with-icon-format-bottom-padding:7px;--tag-small-size-with-icon-format-left-padding:8px;--tag-medium-size-minimum-height:var(--core-metrics-spacing-500);--tag-medium-size-horizontal-spacing:var(--core-metrics-spacing-50);--tag-medium-size-text-weight:var(--core-type-paragraph-20-weight);--tag-medium-size-text-size:var(--core-type-paragraph-20-size);--tag-medium-size-text-leading:var(--core-type-paragraph-20-leading);--tag-medium-size-text-tracking:var(--core-type-paragraph-20-tracking);--tag-medium-size-text-case:var(--core-type-paragraph-20-case);--tag-medium-size-basic-format-top-padding:9px;--tag-medium-size-basic-format-right-padding:8px;--tag-medium-size-basic-format-bottom-padding:9px;--tag-medium-size-basic-format-left-padding:12px;--tag-medium-size-with-icon-format-top-padding:9px;--tag-medium-size-with-icon-format-right-padding:8px;--tag-medium-size-with-icon-format-bottom-padding:9px;--tag-medium-size-with-icon-format-left-padding:8px;display:inline-flex;align-items:center;background-color:var(--tag-normal-state-background-color);color:var(--tag-normal-state-label-color);cursor:pointer}:host .icon{display:none}:host(.has-icon) .icon{display:inline-block}:host([size=\"small\"]){gap:var(--tag-small-size-horizontal-spacing);min-height:var(--tag-small-size-minimum-height);padding:var(--tag-small-size-basic-format-top-padding)\\n      var(--tag-small-size-basic-format-right-padding)\\n      var(--tag-small-size-basic-format-bottom-padding)\\n      var(--tag-small-size-basic-format-left-padding);border-radius:calc(var(--tag-small-size-minimum-height) / 2);font-weight:var(--tag-small-size-text-weight);font-size:var(--tag-small-size-text-size);line-height:var(--tag-small-size-text-leading);letter-spacing:var(--tag-small-size-text-tracking);text-transform:var(--tag-small-size-text-case)}:host([size=\"small\"],.has-icon){padding:var(--tag-small-size-with-icon-format-top-padding)\\n        var(--tag-small-size-with-icon-format-right-padding)\\n        var(--tag-small-size-with-icon-format-bottom-padding)\\n        var(--tag-small-size-with-icon-format-left-padding)}:host([size=\"medium\"]){gap:var(--tag-medium-size-horizontal-spacing);min-height:var(--tag-medium-size-minimum-height);padding:var(--tag-medium-size-basic-format-top-padding)\\n      var(--tag-medium-size-basic-format-right-padding)\\n      var(--tag-medium-size-basic-format-bottom-padding)\\n      var(--tag-medium-size-basic-format-left-padding);border-radius:calc(var(--tag-medium-size-minimum-height) / 2);font-weight:var(--tag-medium-size-text-weight);font-size:var(--tag-medium-size-text-size);line-height:var(--tag-medium-size-text-leading);letter-spacing:var(--tag-medium-size-text-tracking);text-transform:var(--tag-medium-size-text-case)}:host([size=\"medium\"],.has-icon){padding:var(--tag-medium-size-with-icon-format-top-padding)\\n        var(--tag-medium-size-with-icon-format-right-padding)\\n        var(--tag-medium-size-with-icon-format-bottom-padding)\\n        var(--tag-medium-size-with-icon-format-left-padding)}svg.remove-indicator,::slotted([slot=\"icon\"]){flex-shrink:0}::slotted([slot=\"icon\"]){fill:var(--tag-normal-state-icon-color)}svg.remove-indicator{fill:var(--tag-normal-state-remove-indicator-color)}@media (hover: hover){:host(:hover){background-color:var(--tag-hover-state-background-color);color:var(--tag-hover-state-label-color)}:host(:hover) ::slotted([slot=\"icon\"]){fill:var(--tag-hover-state-icon-color)}:host(:hover) svg.remove-indicator{fill:var(--tag-hover-state-remove-indicator-color)}}:host(:active){background-color:var(--tag-pressed-state-background-color);color:var(--tag-pressed-state-label-color)}:host(:active) ::slotted([slot=\"icon\"]){fill:var(--tag-pressed-state-icon-color)}:host(:active) svg.remove-indicator{fill:var(--tag-pressed-state-remove-indicator-color)}:host(:focus),:host([focused]){background-color:var(--tag-focus-state-background-color);color:var(--tag-focus-state-label-color)}:host(:focus) ::slotted([slot=\"icon\"]),:host([focused]) ::slotted([slot=\"icon\"]){fill:var(--tag-focus-state-icon-color)}:host(:focus) svg.remove-indicator,:host([focused]) svg.remove-indicator{fill:var(--tag-focus-state-remove-indicator-color)}:host([disabled]){background-color:var(--tag-disabled-state-background-color);color:var(--tag-disabled-state-label-color)}:host([disabled]) ::slotted([slot=\"icon\"]){fill:var(--tag-disabled-state-icon-color)}:host([disabled]) svg.remove-indicator{fill:var(--tag-disabled-state-remove-indicator-color)}';\n\tconst MarketTagStyle0 = marketTagCss;\n\tconst MarketTag = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTagDismissed = index.createEvent(this, \"marketTagDismissed\", 7);\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.size = \"small\";\n\t    this.hasIcon = false;\n\t  }\n\t  /* handles click and unclick in tag */\n\t  onFocus() {\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    if (!this.focused) {\n\t      this.focused = true;\n\t    } else {\n\t      this.focused = false;\n\t    }\n\t  }\n\t  handleDismissTagEvent(e) {\n\t    this.marketTagDismissed.emit();\n\t    e.stopPropagation();\n\t    this.el.remove();\n\t  }\n\t  componentWillLoad() {\n\t    this.hasIcon = Boolean(this.el.querySelector('[slot=\"icon\"]'));\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"e59ef5674b918cb2403a2a4ea154045d3486316e\", class: `market-tag ${this.hasIcon ? \"has-icon\" : \"\"}`, onClick: () => {\n\t      this.onFocus();\n\t    }, onFocus: () => {\n\t      this.onFocus();\n\t    }, \"aria-disabled\": this.disabled }, index.h(\"span\", { key: \"f2f1a315307a633240e66038a72a5905d388cfa4\", class: \"icon\" }, index.h(\"slot\", { key: \"6825e1f6d4ea4b363de9bff5e1fd6b558bac764e\", name: \"icon\" })), index.h(\"slot\", { key: \"ddb3190b1c6b4f49ffaa75da3cfe89ba870db8d5\" }), index.h(\"svg\", { key: \"2aa542b63b922f3cb6ddc515649bd2492dd999bc\", class: \"remove-indicator\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\", onClick: (e) => this.handleDismissTagEvent(e) }, index.h(\"path\", { key: \"d919f0cb4e59e6c448b8d3d74c9d6e73eec23d39\", d: \"M4.4734 12.4734L8.00007 8.94002L11.5267 12.4734L12.4734 11.5267L8.94007 8.00002L12.4734 4.47335L11.5267 3.52669L8.00007 7.06002L4.4734 3.52669L3.52673 4.47335L7.06007 8.00002L3.52673 11.5267L4.4734 12.4734Z\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketTag.style = MarketTagStyle0;\n\tmarketTag_cjs_entry.market_tag = MarketTag;\n\treturn marketTag_cjs_entry;\n}\n\nvar marketTextarea_cjs_entry = {};\n\nvar hasRequiredMarketTextarea_cjs_entry;\n\nfunction requireMarketTextarea_cjs_entry () {\n\tif (hasRequiredMarketTextarea_cjs_entry) return marketTextarea_cjs_entry;\n\thasRequiredMarketTextarea_cjs_entry = 1;\n\tObject.defineProperty(marketTextarea_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst aria = requireAria71b861a0();\n\tconst marketTextareaCss = `:host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:relative;outline:none;font-weight:var(--field-input-weight);font-size:var(--field-input-size);line-height:var(--field-input-leading);cursor:text}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){width:100%;margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;cursor:inherit}:host input,:host ::slotted(input){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::slotted(label){cursor:inherit}:host input:focus,:host ::slotted(input:focus),:host textarea:focus,:host ::slotted(textarea:focus){outline:none}:host input::-moz-placeholder,:host textarea::-moz-placeholder{color:var(--field-placeholder-text-color)}:host input::placeholder,:host textarea::placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::-moz-placeholder,:host ::slotted(textarea)::-moz-placeholder{color:var(--field-placeholder-text-color)}:host ::slotted(input)::placeholder,:host ::slotted(textarea)::placeholder{color:var(--field-placeholder-text-color)}:host([size='small']){font-size:var(--core-type-paragraph-20-size);line-height:var(--core-type-paragraph-20-leading)}:host{border-radius:var(--field-border-radius);background-color:var(--field-normal-state-background-color);color:var(--field-normal-state-input-color)}:host::after{content:\"\";position:absolute;inset:0;border-radius:var(--field-border-radius);box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color);pointer-events:none}:host([invalid])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-invalid-validity-border-color)}:host(:hover){background-color:var(--field-hover-state-background-color);color:var(--field-hover-state-input-color)}:host(:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-normal-validity-border-color)}:host([invalid]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-hover-state-invalid-validity-border-color)}:host([focused]){color:var(--field-focus-state-input-color)}:host([focused])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size)\n        var(--field-focus-state-normal-validity-border-color)}:host([focused][invalid])::after{box-shadow:inset 0 0 0 var(--field-focus-state-border-size) var(--field-focus-state-invalid-validity-border-color)}:host([readonly]:hover)::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-normal-state-normal-validity-border-color)}:host([disabled]){background-color:var(--field-disabled-state-background-color) !important;color:var(--field-disabled-state-input-color) !important;cursor:not-allowed !important}:host([disabled])::after{box-shadow:inset 0 0 0 var(--field-border-size) var(--field-disabled-state-border-color) !important}:host([disabled]) ::slotted(.market-accessory),:host([disabled]) ::slotted(img[slot*=\"accessory\"]),:host([disabled]) ::slotted(svg[slot*=\"accessory\"]),:host([disabled]) ::slotted(div[slot*=\"accessory\"]){--field-disabled-state-accessory-opacity:var(--row-disabled-state-leading-accessory-opacity);opacity:var(--field-disabled-state-accessory-opacity)}:host([value=\"\"]) ::slotted(label){color:var(--field-normal-state-empty-phase-label-color)}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"][autofilled]) ::slotted(label){color:var(--field-normal-state-float-phase-label-color)}:host(:hover) ::slotted(label){color:var(--field-hover-state-empty-phase-label-color)}:host(:not([value=\"\"]):hover) ::slotted(label),:host([value=\"\"][autofilled]:hover) ::slotted(label){color:var(--field-hover-state-float-phase-label-color)}:host([focused]) ::slotted(label){color:var(--field-focus-state-float-phase-label-color)}:host([value=\"\"][disabled]) ::slotted(label){color:var(--field-disabled-state-empty-phase-label-color)}:host(:not([value=\"\"])[disabled]) ::slotted(label),:host([value=\"\"][autofilled][disabled]) ::slotted(label){color:var(--field-disabled-state-float-phase-label-color)}:host{--field-input-animation-speed:var(--core-animation-enter-transition-moderate-speed-duration);--field-input-label-translate:12px;--field-empty-phase-label-text-size-unitless:16;--field-float-phase-label-text-size-unitless:14;--field-size-medium-float-phase-vertical-padding-size:12px;--field-size-medium-float-phase-horizontal-padding-size:16px;--field-size-small-float-phase-vertical-padding-size:9px;--field-size-small-float-phase-horizontal-padding-size:12px;display:flex;align-items:center}:host .label-input-container,:host([value='']:not([focused]):not([autofilled])) .label-input-container{flex-grow:1;padding:var(--field-float-phase-vertical-padding-size) var(--field-float-phase-horizontal-padding-size)}:host([size='medium']) .label-input-container,:host([size='medium'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-medium-float-phase-vertical-padding-size)\n      var(--field-size-medium-float-phase-horizontal-padding-size)}:host([size='small']) .label-input-container,:host([size='small'][value='']:not([focused]):not([autofilled])) .label-input-container{padding:var(--field-size-small-float-phase-vertical-padding-size)\n      var(--field-size-small-float-phase-horizontal-padding-size)}:host ::slotted(label){display:block;min-height:var(--field-empty-phase-label-text-leading);font-weight:var(--field-empty-phase-label-text-weight);font-size:var(--field-empty-phase-label-text-size);line-height:var(--field-empty-phase-label-text-leading);letter-spacing:var(--field-empty-phase-label-text-tracking);transition:all var(--field-input-animation-speed);transform:translateY(var(--field-input-label-translate));transform-origin:0 0}:host(:not([value=\"\"])) ::slotted(label),:host([value=\"\"]:not([focused])[autofilled]) ::slotted(label),:host([focused]) ::slotted(label){font-weight:var(--field-float-phase-label-text-weight);transform:scale(\n        calc(var(--field-float-phase-label-text-size-unitless) / var(--field-empty-phase-label-text-size-unitless))\n      )}:host input,:host ::slotted(input),:host textarea,:host ::slotted(textarea){opacity:0%}:host([focused]) input,:host([focused]) ::slotted(input),:host([focused]) textarea,:host([focused]) ::slotted(textarea),:host(:not([value=''])) input,:host(:not([value=''])) ::slotted(input),:host(:not([value=''])) textarea,:host(:not([value=''])) ::slotted(textarea){opacity:100%}:host([size='small']) ::slotted(label),:host([size='medium']) ::slotted(label){position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%)}:host([size='small']) input,:host([size='small']) ::slotted(input),:host([size='small']) textarea,:host([size='small']) ::slotted(textarea),:host([size='medium']) input,:host([size='medium']) ::slotted(input),:host([size='medium']) textarea,:host([size='medium']) ::slotted(textarea){opacity:100%}:host{--textarea-height:120px;--textarea-minimum-height:120px;--textarea-label-bottom-padding:16px;flex-direction:column;overflow:hidden;min-height:var(--textarea-minimum-height);max-height:var(--textarea-maximum-height);resize:vertical}:host .label-input-container,:host([value='']:not([focused]):not([autofilled])) .label-input-container{display:flex;flex-direction:column;width:100%;padding-bottom:var(--textarea-label-bottom-padding);font-weight:var(--textarea-font-weight);font-size:var(--textarea-font-size);line-height:var(--textarea-font-leading);letter-spacing:var(--textarea-font-tracking)}:host([disabled]) textarea,:host([disabled]) ::slotted(textarea){pointer-events:auto !important;}textarea,::slotted(textarea){flex-grow:1;resize:none}`;\n\tconst MarketTextareaStyle0 = marketTextareaCss;\n\tconst MarketTextarea = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTextareaValueChange = index.createEvent(this, \"marketTextareaValueChange\", 7);\n\t    this.onMutationObserved = (ariaAttributes) => {\n\t      this.ariaAttributes = ariaAttributes;\n\t    };\n\t    this.placeholder = void 0;\n\t    this.name = void 0;\n\t    this.value = \"\";\n\t    this.maxlength = void 0;\n\t    this.readonly = false;\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.invalid = false;\n\t    this.maxHeight = `${index$1.TEXTAREA_MAXIMUM_HEIGHT}px`;\n\t    this.autofocus = false;\n\t    this.inputmode = void 0;\n\t    this.ariaAttributes = void 0;\n\t  }\n\t  handleMarketDialogLoaded() {\n\t    if (this.autofocus) {\n\t      this.setFocus();\n\t    }\n\t  }\n\t  /**\n\t   * Allows passing an alternative light DOM textarea.\n\t   * Sets the this.slottedTextarea value to undefined if there is no slotted element.\n\t   */\n\t  registerSlottedTextarea(slottedTextarea) {\n\t    var _a;\n\t    this.slottedTextarea = slottedTextarea || // textarea slotted into market-textarea\n\t    this.el.querySelector(\"textarea[slot=textarea]\") || // textarea slotted into a higher-level component that uses market-textarea\n\t    ((_a = this.el.getRootNode().host) === null || _a === void 0 ? void 0 : _a.querySelector(\"textarea[slot=textarea]\"));\n\t    if (this.slottedTextarea) {\n\t      this.slottedTextarea.addEventListener(\"input\", (e) => this.textareaValueDidChange(e));\n\t      this.slottedTextarea.addEventListener(\"focus\", () => this.setFocus());\n\t      this.slottedTextarea.addEventListener(\"blur\", () => this.focused = false);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  syncSharedPropsToSlottedTextarea(prevSharedProps) {\n\t    if (this.slottedTextarea) {\n\t      const modifiedPropKeys = [.../* @__PURE__ */ new Set([...Object.keys(prevSharedProps), ...Object.keys(this.sharedProps)])];\n\t      modifiedPropKeys.forEach((key) => {\n\t        if (!(key in this.sharedProps)) {\n\t          this.slottedTextarea.removeAttribute(key);\n\t        } else {\n\t          const attributeValue = this.sharedProps[key] !== true ? this.sharedProps[key] : \"\";\n\t          this.slottedTextarea.setAttribute(key, attributeValue);\n\t        }\n\t      });\n\t    }\n\t  }\n\t  updateSharedPropsAndSyncSlottedTextarea() {\n\t    const prevSharedProps = Object.assign({}, this.sharedProps);\n\t    this.sharedProps = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this.name && { name: this.name }), this.placeholder && { placeholder: this.placeholder }), this.maxlength !== void 0 && Number.parseInt(this.maxlength, 10) >= 0 && { maxlength: this.maxlength }), this.value !== void 0 && { value: this.value }), this.readonly && { readonly: this.readonly }), this.disabled && { disabled: this.disabled }), this.autofocus && { autofocus: this.autofocus }), this.inputmode && { inputmode: this.inputmode }), this.ariaAttributes), { \"aria-label\": aria.getTextInputAriaLabel(this.el) });\n\t    this.syncSharedPropsToSlottedTextarea(prevSharedProps);\n\t  }\n\t  componentWillLoad() {\n\t    this.mutationObserver = aria.observeAriaAttributes(this.el, this.onMutationObserved);\n\t    this.registerSlottedTextarea();\n\t    this.updateSharedPropsAndSyncSlottedTextarea();\n\t  }\n\t  componentDidLoad() {\n\t    if (this.maxHeight) {\n\t      this.el.style.maxHeight = this.maxHeight;\n\t    }\n\t  }\n\t  componentWillUpdate() {\n\t    this.updateSharedPropsAndSyncSlottedTextarea();\n\t  }\n\t  textareaValueDidChange(e) {\n\t    this.value = e.target.value;\n\t    this.marketTextareaValueChange.emit({\n\t      value: e.target.value,\n\t      originalEvent: e\n\t    });\n\t  }\n\t  setFocus(value = true) {\n\t    var _a, _b, _c, _d, _e;\n\t    if (this.readonly || this.disabled) {\n\t      return;\n\t    }\n\t    const shouldSetElementFocus = value && !this.focused;\n\t    this.focused = value;\n\t    if (shouldSetElementFocus) {\n\t      this.slottedTextarea ? this.slottedTextarea.focus() : (_e = (_d = (_c = (_b = (_a = this.el) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector) === null || _c === void 0 ? void 0 : _c.call(_b, \"textarea\")) === null || _d === void 0 ? void 0 : _d.focus) === null || _e === void 0 ? void 0 : _e.call(_d);\n\t    }\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"e4de66e1470882e0449edd809b51366635f9c6e7\", class: \"market-textarea\", onBlur: () => {\n\t      this.focused = false;\n\t    }, onClick: () => {\n\t      this.setFocus();\n\t    }, onFocus: () => {\n\t      this.setFocus();\n\t    } }, index.h(\"div\", { key: \"dd331d3e90d7223e34c731f569c11795cc1c9b76\", class: \"label-input-container\", part: \"container\" }, index.h(\"slot\", { key: \"ca15992ded338a288da9cd3e9a43361db16ea7dc\" }), index.h(\"slot\", { key: \"d39f77e400abebefb28b2e19a455355d618966a0\", name: \"textarea\", onSlotchange: () => this.registerSlottedTextarea() }, !this.slottedTextarea && index.h(\"textarea\", Object.assign({ key: \"995ac699b06b5483cc8b6f4769e1a03daa64d841\" }, this.ariaAttributes, { id: this.name, onInput: (e) => this.textareaValueDidChange(e) }, this.sharedProps)))));\n\t  }\n\t  disconnectedCallback() {\n\t    var _a;\n\t    (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketTextarea.style = MarketTextareaStyle0;\n\tmarketTextarea_cjs_entry.market_textarea = MarketTextarea;\n\treturn marketTextarea_cjs_entry;\n}\n\nvar marketTile_cjs_entry = {};\n\nvar hasRequiredMarketTile_cjs_entry;\n\nfunction requireMarketTile_cjs_entry () {\n\tif (hasRequiredMarketTile_cjs_entry) return marketTile_cjs_entry;\n\thasRequiredMarketTile_cjs_entry = 1;\n\tObject.defineProperty(marketTile_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst classnames = requireClassnames6fb22aa3();\n\tconst marketTileCss = '::slotted([slot=\"hint\"]){font-weight:var(--core-type-display-10-weight);font-size:var(--core-type-display-10-size);font-family:var(--core-type-display-10-font-family);line-height:var(--core-type-display-10-leading);letter-spacing:var(--core-type-display-10-tracking);text-transform:var(--core-type-display-10-case)}::slotted([slot=\"subtext\"]){font-weight:var(--core-type-paragraph-10-weight);font-size:var(--core-type-paragraph-10-size);font-family:var(--core-type-paragraph-10-font-family);line-height:var(--core-type-paragraph-10-leading);letter-spacing:var(--core-type-paragraph-10-tracking);text-transform:var(--core-type-paragraph-10-case)}::slotted([slot=\"subtext\"]) b,::slotted([slot=\"subtext\"]) strong{font-weight:var(--core-type-semibold-10-weight)}::slotted([slot=\"label\"]){font-weight:var(--core-type-medium-30-weight);font-size:var(--core-type-medium-30-size);font-family:var(--core-type-medium-30-font-family);line-height:var(--core-type-medium-30-leading);letter-spacing:var(--core-type-medium-30-tracking);text-transform:var(--core-type-medium-30-case)}::slotted([slot=\"indicator\"]){font-weight:var(--core-type-semibold-10-weight);font-size:var(--core-type-semibold-10-size);font-family:var(--core-type-semibold-10-font-family);line-height:var(--core-type-semibold-10-leading);letter-spacing:var(--core-type-semibold-10-tracking);text-transform:var(--core-type-semibold-10-case)}:host{--item-tile-text-color:black;--focus-ring-color:color-mix(\\n      in srgb,\\n      var(--item-tile-focus-ring-color, var(--core-focus-ring-color)) 100%,\\n      transparent\\n    );position:relative;z-index:1;display:grid;grid-template-areas:\"leading-accessory _ trailing-accessory\"\\n    \"content content content\";grid-template-columns:minmax(0, max-content) 1fr auto;box-sizing:border-box;width:var(--item-tile-width, 200px);height:var(--item-tile-medium-height, 124px);padding:var(--item-tile-medium-padding, var(--core-metrics-spacing-150));border-radius:var(--item-tile-border-radius, 6px);background:var(--item-tile-fill-color, var(--core-fill-40-color));-webkit-user-select:none;-moz-user-select:none;user-select:none}:host([interactive]){cursor:pointer}:host([size=\"small\"]){grid-template-areas:\"leading-accessory content trailing-accessory\";grid-template-columns:max-content 1fr minmax(0, max-content);height:var(--item-tile-small-height, 56px);padding:var(--item-tile-small-padding-vertical, var(--core-metrics-spacing-50))\\n      var(--item-tile-small-padding-horizontal, var(--core-metrics-spacing-150));-moz-column-gap:var(--core-metrics-spacing-100);column-gap:var(--core-metrics-spacing-100)}:host([size=\"small\"]) ::slotted([slot=\"leading-accessory\"]),:host([size=\"small\"]) .trailing-accessory-container{align-items:center}:host([size=\"small\"]) .content{justify-content:center;align-items:start}:host([size=\"small\"]) .remove-button{position:relative}:host([aria-disabled]){opacity:20%;cursor:not-allowed}:host([aria-disabled]) .remove-button{cursor:not-allowed}:host([aria-disabled]) .remove-button:hover{background:var(--item-tile-remove-button-fill, #fff)}:host([aria-selected=\"true\"]) ::before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:var(--item-tile-border-radius, 6px);box-shadow:inset 0 0 0 var(--item-tile-selected-value-border-width, 2px)\\n        var(--item-tile-selected-value-border-color, var(--core-emphasis-fill-color))}:host(:focus-visible){outline:var(--item-tile-focus-ring-border-size, var(--core-focus-ring-border-size)) solid var(--focus-ring-color);outline-offset:var(--item-tile-focus-ring-buffer-size, var(--core-focus-ring-buffer-size))}.background-image{display:none}.background-image.has-slotted-media,.background-image ::slotted([slot=\"media\"]){--item-tile-text-color:white;position:absolute;top:0;left:0;z-index:-1;display:block;-o-object-fit:cover;object-fit:cover;width:100%;height:100%;border-radius:var(--item-tile-border-radius, 6px)}.background-image.has-slotted-media::before,.background-image ::slotted([slot=\"media\"])::before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:var(--item-tile-border-radius, 6px);background-image:var(\\n        --item-tile-background-image-gradient,\\n        linear-gradient(180.98deg, rgb(0 0 0 / 4%) 0.84%, rgb(0 0 0 / 40%) 99.16%)\\n      )}::slotted([slot=\"leading-accessory\"]){z-index:2;display:flex;grid-area:leading-accessory;align-items:flex-start}.trailing-accessory-container{z-index:3;display:flex;grid-area:trailing-accessory;justify-content:flex-end}.trailing-accessory-container .remove-button{position:absolute;width:var(--item-tile-remove-button-width, 24px);height:var(--item-tile-remove-button-height, 24px);border:none;border-radius:100px;background:var(--item-tile-remove-button-fill, var(--core-surface-30-color));box-shadow:var(--elevation-10-shadow);cursor:pointer}.trailing-accessory-container .remove-button:hover{background:var(--item-tile-remove-button-hover-state-background-color, #ffe5ea)}.trailing-accessory-container .remove-button:active{background:var(--item-time-remove-button-active-state-background-color, #ffccd5)}.trailing-accessory-container .remove-button svg{position:absolute;top:0;left:0;padding:var(--core-metrics-spacing-50)}.trailing-accessory-container ::slotted([slot=\"indicator\"]){height:var(--core-metrics-spacing-200);padding:0 var(--core-metrics-spacing-100);border-radius:100px;background:var(--core-fill-10-dark-mode-color);color:black;box-shadow:var(--elevation-10-shadow)}.content{z-index:2;display:flex;flex-direction:column;grid-area:content;justify-content:flex-end;min-width:0}::slotted([slot=\"label\"]){display:-webkit-box;overflow-y:hidden;min-width:0;-webkit-line-clamp:var(--item-tile-label-line-clamp, 1);-webkit-box-orient:vertical}::slotted([slot=\"subtext\"]){display:-webkit-box;overflow-y:hidden;min-width:0;-webkit-line-clamp:1;-webkit-box-orient:vertical}';\n\tconst MarketTileStyle0 = marketTileCss;\n\tconst MarketTile = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTileSelectedChanged = index.createEvent(this, \"marketTileSelectedChanged\", 7);\n\t    this.marketTileRemoveClicked = index.createEvent(this, \"marketTileRemoveClicked\", 7);\n\t    this.hasTrailingAccessorySlot = false;\n\t    this.hasIndicatorTextSlot = false;\n\t    this.disabled = false;\n\t    this.interactive = false;\n\t    this.showActions = false;\n\t    this.size = \"medium\";\n\t    this.value = void 0;\n\t    this.selected = false;\n\t    this.hasSlottedMedia = false;\n\t  }\n\t  onSizeChange() {\n\t    this.adjustSlottedLabels();\n\t  }\n\t  /**\n\t   * Allows external elements to set selected value.\n\t   */\n\t  setSelected(newValue) {\n\t    if (typeof newValue !== \"boolean\") {\n\t      return Promise.resolve();\n\t    }\n\t    if (this.selected !== newValue) {\n\t      const { defaultPrevented } = this.marketTileSelectedChanged.emit({\n\t        selected: this.selected,\n\t        value: this.value\n\t      });\n\t      if (!defaultPrevented) {\n\t        this.selected = newValue;\n\t      }\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  handleClick(event) {\n\t    if (this.disabled || !this.interactive) {\n\t      return;\n\t    }\n\t    this.selected = !this.selected;\n\t    event.preventDefault();\n\t    this.marketTileSelectedChanged.emit({ selected: this.selected, value: this.value });\n\t  }\n\t  handleRemoveActionKeydown(event) {\n\t    switch (event.key) {\n\t      case \"Enter\":\n\t      case \" \":\n\t        this.handleRemoveActionClick(event);\n\t        break;\n\t    }\n\t  }\n\t  handleRemoveActionClick(event) {\n\t    if (this.disabled || !this.interactive) {\n\t      return;\n\t    }\n\t    event.stopPropagation();\n\t    this.marketTileRemoveClicked.emit();\n\t  }\n\t  renderDefaultRemoveAction() {\n\t    const { disabled, handleRemoveActionClick, handleRemoveActionKeydown } = this;\n\t    return index.h(\"button\", { class: \"remove-button\", disabled, onClick: handleRemoveActionClick.bind(this), onKeyUp: handleRemoveActionKeydown.bind(this) }, index.h(\"svg\", { slot: \"icon\", width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"var(--core-critical-text-color)\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { d: \"M12.8318 7.3335V7.1685H12.6668H3.3335H3.1685V7.3335V8.66683V8.83183H3.3335H12.6668H12.8318V8.66683V7.3335Z\", fill: \"var(--core-critical-text-color)\", stroke: \"var(--core-critical-text-color)\", \"stroke-width\": \"0.33\" })));\n\t  }\n\t  handleKeydown(event) {\n\t    if (event.target !== this.el) {\n\t      return;\n\t    }\n\t    switch (event.key) {\n\t      case \"Enter\":\n\t      case \" \":\n\t        this.handleClick(event);\n\t        break;\n\t    }\n\t  }\n\t  /**\n\t   * This function determines the number of lines the `label` slot text should clamp to.\n\t   * It should clamp to a single line if the hint slot exists or if the subtext slot exists\n\t   * and the element `size` prop is set to \"small\".\n\t   */\n\t  adjustSlottedLabels() {\n\t    const { size, el } = this;\n\t    const hint = el.querySelector('[slot=\"hint\"]');\n\t    const label = el.querySelector('[slot=\"label\"]');\n\t    const subtext = el.querySelector('[slot=\"subtext\"]');\n\t    if (!label) {\n\t      return;\n\t    }\n\t    const labelLineClamp = hint || subtext && size === \"small\" ? 1 : 2;\n\t    el.style.setProperty(\"--item-tile-label-line-clamp\", labelLineClamp.toString());\n\t  }\n\t  checkSlottedMedia() {\n\t    this.hasSlottedMedia = Boolean(this.el.querySelector('[slot=\"media\"]'));\n\t  }\n\t  componentWillLoad() {\n\t    this.checkSlottedMedia();\n\t    this.hasIndicatorTextSlot = Boolean(this.el.querySelector('[slot=\"indicator\"]'));\n\t  }\n\t  render() {\n\t    const { disabled, size, hasSlottedMedia, hasIndicatorTextSlot, interactive, showActions, selected } = this;\n\t    const tabindex = interactive && !disabled ? \"0\" : null;\n\t    return index.h(index.Host, { key: \"541483b1cf369bf9642e5458d9b4912b80c8695b\", class: \"market-tile\", tabindex, \"aria-selected\": selected.toString(), onClick: (e) => this.handleClick(e), onKeydown: (e) => this.handleKeydown(e) }, index.h(\"div\", { key: \"38d9e4ecede9b50df43ef76b5c2ed0f369d7578e\", class: classnames.classNames(\"background-image\", { \"has-slotted-media\": hasSlottedMedia }) }, index.h(\"slot\", { key: \"91d0eea54153117b8db4f042550cadc0b9cab326\", onSlotchange: () => this.checkSlottedMedia(), name: \"media\" })), index.h(\"slot\", { key: \"0441d432389fed40905136ac57cfbacdff8078ec\", name: \"leading-accessory\" }), index.h(\"div\", { key: \"22b93caf2b9d5d56c9a7f4847aa26e2b0a69cc16\", class: \"trailing-accessory-container\" }, showActions && index.h(\"slot\", { key: \"1466b8d7b681f65cf6bb9622b8da3a58cc4a8fbf\", name: \"actions\" }, this.renderDefaultRemoveAction()), !showActions && hasIndicatorTextSlot && index.h(\"slot\", { key: \"4002c1c265a270a90464cdcf03341a6e54f210d5\", name: \"indicator\" })), index.h(\"div\", { key: \"ab7d79571908ef1a3c78a2e1d093615bfb584edd\", class: \"content\" }, size !== \"small\" && index.h(\"slot\", { key: \"6fbdb0962dca8f293d2f8498c5501434b1e6ec32\", onSlotchange: () => this.adjustSlottedLabels(), name: \"hint\" }), index.h(\"slot\", { key: \"7d2b5919dcc4cd3abaac6beebe0bba52bb95d83b\", onSlotchange: () => this.adjustSlottedLabels(), name: \"label\" }), index.h(\"slot\", { key: \"7ca0269dee16b4b9e6a2164887d4beb1ecdc505e\", onSlotchange: () => this.adjustSlottedLabels(), name: \"subtext\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t  static get watchers() {\n\t    return {\n\t      \"size\": [\"onSizeChange\"]\n\t    };\n\t  }\n\t};\n\tMarketTile.style = MarketTileStyle0;\n\tmarketTile_cjs_entry.market_tile = MarketTile;\n\treturn marketTile_cjs_entry;\n}\n\nvar marketToast_cjs_entry = {};\n\nvar hasRequiredMarketToast_cjs_entry;\n\nfunction requireMarketToast_cjs_entry () {\n\tif (hasRequiredMarketToast_cjs_entry) return marketToast_cjs_entry;\n\thasRequiredMarketToast_cjs_entry = 1;\n\tObject.defineProperty(marketToast_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketToastCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:flex;flex-direction:column;align-items:flex-start;overflow:hidden;width:100%;max-width:var(--toast-maximum-width);border-radius:var(--toast-radius);box-shadow:var(--elevation-30-shadow);font-weight:var(--toast-text-weight);font-size:var(--toast-text-size);line-height:var(--toast-text-leading);letter-spacing:var(--toast-text-tracking);text-transform:var(--toast-text-case)}.icon-container,.dismiss-container{display:flex;flex-shrink:0;align-items:center}.dismiss-container button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;border:none;background-color:transparent;color:inherit;cursor:pointer;transition:opacity var(--core-animation-enter-transition-moderate-speed-duration);-webkit-appearance:none;-moz-appearance:none;appearance:none}.content{display:flex;align-items:flex-start;width:100%;padding:var(--toast-vertical-padding-size) var(--toast-horizontal-padding-size);-moz-column-gap:var(--toast-icon-spacing);column-gap:var(--toast-icon-spacing)}.main{display:flex;flex-grow:1;flex-wrap:wrap;row-gap:var(--toast-text-multiline-spacing);-moz-column-gap:var(--toast-content-spacing);column-gap:var(--toast-content-spacing)}section{flex-grow:1}nav{display:flex;flex-wrap:wrap;justify-content:flex-end}nav.hidden{display:none}::slotted(button),::slotted(a){margin:0;padding:0;border:none;background-color:transparent;color:inherit;font-weight:var(--toast-button-text-weight);font-size:var(--toast-button-text-size);font-family:inherit;line-height:var(--toast-button-text-leading);letter-spacing:var(--toast-button-text-tracking);text-decoration:underline;text-transform:var(--toast-button-text-case);cursor:pointer;transition:opacity var(--core-animation-enter-transition-moderate-speed-duration);text-underline-offset:2px;text-decoration-thickness:1px}::slotted(button:hover),::slotted(a:hover){opacity:var(--text-link-hover-state-opacity)}::slotted(button:active),::slotted(a:active){opacity:var(--text-link-pressed-state-opacity)}::slotted([slot=\"action\"]){display:flex;justify-content:center;align-items:center}::slotted([slot=\"action\"]:not(:last-child)){margin-right:calc(var(--toast-button-spacing) * 2 + var(--toast-separator-width))}::slotted([slot=\"action\"]:not(:last-child))::after{content:\"\";display:inline-block;width:var(--toast-separator-width);height:var(--toast-separator-height);margin-right:calc(-1 * var(--toast-button-spacing) - var(--toast-separator-width));margin-left:var(--toast-button-spacing);opacity:var(--toast-separator-opacity);pointer-events:none}progress-bar{height:var(--toast-progress-bar-height)}:host([variant=\"info\"]){background-color:var(--toast-info-variant-background-color);color:var(--toast-info-variant-text-color)}:host([variant=\"info\"]) .icon-container{color:var(--toast-info-variant-icon-color)}:host([variant=\"info\"]) .dismiss-container{color:var(--toast-info-variant-dismiss-button-color)}:host([variant=\"info\"]) progress-bar{background-color:var(--toast-info-variant-progress-bar-color)}:host([variant=\"info\"]) ::slotted(a){color:var(--toast-info-variant-text-link-text-color)}:host([variant=\"info\"]) ::slotted(button){color:var(--toast-info-variant-button-text-color)}:host([variant=\"info\"]) ::slotted([slot=\"action\"]:not(:last-child))::after{background-color:var(--toast-info-variant-separator-color)}:host([variant=\"success\"]){background-color:var(--toast-success-variant-background-color);color:var(--toast-success-variant-text-color)}:host([variant=\"success\"]) .icon-container{color:var(--toast-success-variant-icon-color)}:host([variant=\"success\"]) .dismiss-container{color:var(--toast-success-variant-dismiss-button-color)}:host([variant=\"success\"]) progress-bar{background-color:var(--toast-success-variant-progress-bar-color)}:host([variant=\"success\"]) ::slotted(a){color:var(--toast-success-variant-text-link-text-color)}:host([variant=\"success\"]) ::slotted(button){color:var(--toast-success-variant-button-text-color)}:host([variant=\"success\"]) ::slotted([slot=\"action\"]:not(:last-child))::after{background-color:var(--toast-success-variant-separator-color)}:host([variant=\"warning\"]){background-color:var(--toast-warning-variant-background-color);color:var(--toast-warning-variant-text-color)}:host([variant=\"warning\"]) .icon-container{color:var(--toast-warning-variant-icon-color)}:host([variant=\"warning\"]) .dismiss-container{color:var(--toast-warning-variant-dismiss-button-color)}:host([variant=\"warning\"]) progress-bar{background-color:var(--toast-warning-variant-progress-bar-color)}:host([variant=\"warning\"]) ::slotted(a){color:var(--toast-warning-variant-text-link-text-color)}:host([variant=\"warning\"]) ::slotted(button){color:var(--toast-warning-variant-button-text-color)}:host([variant=\"warning\"]) ::slotted([slot=\"action\"]:not(:last-child))::after{background-color:var(--toast-warning-variant-separator-color)}:host([variant=\"critical\"]){background-color:var(--toast-critical-variant-background-color);color:var(--toast-critical-variant-text-color)}:host([variant=\"critical\"]) .icon-container{color:var(--toast-critical-variant-icon-color)}:host([variant=\"critical\"]) .dismiss-container{color:var(--toast-critical-variant-dismiss-button-color)}:host([variant=\"critical\"]) progress-bar{background-color:var(--toast-critical-variant-progress-bar-color)}:host([variant=\"critical\"]) ::slotted(a){color:var(--toast-critical-variant-text-link-text-color)}:host([variant=\"critical\"]) ::slotted(button){color:var(--toast-critical-variant-button-text-color)}:host([variant=\"critical\"]) ::slotted([slot=\"action\"]:not(:last-child))::after{background-color:var(--toast-critical-variant-separator-color)}:host([variant=\"insight\"]){background-color:var(--toast-insight-variant-background-color);color:var(--toast-insight-variant-text-color)}:host([variant=\"insight\"]) .icon-container{color:var(--toast-insight-variant-icon-color)}:host([variant=\"insight\"]) .dismiss-container{color:var(--toast-insight-variant-dismiss-button-color)}:host([variant=\"insight\"]) progress-bar{background-color:var(--toast-insight-variant-progress-bar-color)}:host([variant=\"insight\"]) ::slotted(a){color:var(--toast-insight-variant-text-link-text-color)}:host([variant=\"insight\"]) ::slotted(button){color:var(--toast-insight-variant-button-text-color)}:host([variant=\"insight\"]) ::slotted([slot=\"action\"]:not(:last-child))::after{background-color:var(--toast-insight-variant-separator-color)}:host-context([data-market-theme=\"monochrome\"]) ::slotted(button:focus-visible),:host-context([data-market-theme=\"monochrome\"]) ::slotted(a:focus-visible),:host-context([data-market-theme=\"monochrome\"]) .dismiss-container *:focus-visible{outline-color:currentcolor}';\n\tconst MarketToastStyle0 = marketToastCss;\n\tconst MarketToast = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketToastAutoDismissed = index.createEvent(this, \"marketToastAutoDismissed\", 7);\n\t    this.marketToastManuallyDismissed = index.createEvent(this, \"marketToastManuallyDismissed\", 7);\n\t    this.variant = \"info\";\n\t    this.persistent = false;\n\t    this.dismissButtonAriaLabel = \"Dismiss\";\n\t    this.progress = -1;\n\t    this.durationTilAutoDismiss = 5e3;\n\t    this.showActionsNav = false;\n\t  }\n\t  /**\n\t   * Set toast to disappear after the autodismiss timeout has passed\n\t   */\n\t  startAutoDismissTimer() {\n\t    if (!this.persistent) {\n\t      setTimeout(() => {\n\t        this.marketToastAutoDismissed.emit();\n\t      }, this.durationTilAutoDismiss);\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  handleManualDismiss() {\n\t    this.marketToastManuallyDismissed.emit();\n\t  }\n\t  componentWillLoad() {\n\t    this.checkIfActionsArePresent();\n\t  }\n\t  checkIfActionsArePresent() {\n\t    const actions = this.el.querySelector('[slot=\"action\"]');\n\t    this.showActionsNav = actions ? true : false;\n\t  }\n\t  // TODO: replace with design token references after they are added (UI-6241)\n\t  getVariantIcon() {\n\t    switch (this.variant) {\n\t      case \"success\":\n\t        return \"success\";\n\t      case \"info\":\n\t        return \"info\";\n\t      case \"warning\":\n\t        return \"attention\";\n\t      case \"insight\":\n\t        return \"recommendation\";\n\t      default:\n\t        return \"warning\";\n\t    }\n\t  }\n\t  render() {\n\t    const MarketIconTagName = index$1.getNamespacedTagFor(\"market-icon\");\n\t    const progress = Math.min(this.progress, 100);\n\t    const progressStyle = {\n\t      width: `${progress}%`\n\t    };\n\t    return index.h(index.Host, { key: \"77f5dd0b12f619f7ea3455782c48993b64fe925b\", class: \"market-toast\", role: \"alert\" }, index.h(\"div\", { key: \"c549d75fdf3f279f479e491f9c70a2907853222a\", class: \"content\" }, index.h(\"span\", { key: \"da5032bb657a18c664f647076ddc255e3f975168\", class: \"icon-container\" }, index.h(MarketIconTagName, { key: \"1ce255d4d3a02e2c45a3270114bd38fab24b6a30\", name: this.getVariantIcon() })), index.h(\"div\", { key: \"50d65fe47be18348df0c6f36f0e8d5906aac0770\", class: \"main\" }, index.h(\"section\", { key: \"d6dda0fdc486a37ad959fc73b033f94b0a08e633\" }, index.h(\"slot\", { key: \"c03db2a00d9c5f71b41ca2c39fd7eecf3d7ff99b\" })), index.h(\"nav\", { key: \"5efc3c9bc57bc548616f0d8e1d04fe8306d1802b\", \"aria-label\": \"toast-actions\", class: this.showActionsNav ? \"\" : \"hidden\" }, index.h(\"slot\", { key: \"9409e3719a29efac81b51b479d26033e896bf181\", name: \"action\", onSlotchange: () => this.checkIfActionsArePresent() }))), index.h(\"nav\", { key: \"dccc244fbd545d2ccd7dc4df3a0530d59f71d181\", \"aria-label\": \"dismiss-container\", class: \"dismiss-container\" }, index.h(\"button\", { key: \"35af5b09098ec29b833f8c9bf92ebbb21757482e\", type: \"button\", \"aria-label\": this.dismissButtonAriaLabel, onClick: () => this.handleManualDismiss() }, index.h(MarketIconTagName, { key: \"30a0f42051b351813dbace683686dc9fbda82ae2\", name: \"close\" })))), this.progress >= 0 && index.h(\"progress-bar\", { key: \"a33bd0c8755be4a19538ca55ee473c4d32289edc\", role: \"progressbar\", \"aria-valuenow\": progress, \"aria-valuemin\": \"0\", \"aria-valuemax\": \"100\", style: progressStyle }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketToast.style = MarketToastStyle0;\n\tmarketToast_cjs_entry.market_toast = MarketToast;\n\treturn marketToast_cjs_entry;\n}\n\nvar marketToaster_cjs_entry = {};\n\nvar hasRequiredMarketToaster_cjs_entry;\n\nfunction requireMarketToaster_cjs_entry () {\n\tif (hasRequiredMarketToaster_cjs_entry) return marketToaster_cjs_entry;\n\thasRequiredMarketToaster_cjs_entry = 1;\n\tObject.defineProperty(marketToaster_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst marketToasterCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{position:fixed;right:0;bottom:0;left:0;z-index:1010;padding:0 0 var(--toast-bottom-margin, 24px);pointer-events:none}:host ::slotted(.market-toast){width:calc(100% - var(--toast-horizontal-margin, 16px) * 2);margin:var(--toast-vertical-spacing, 16px) auto 0;pointer-events:auto}:host ::slotted(.use-transitions){position:absolute;top:100%;left:50%;margin:0;transition:transform\\n      var(\\n        --toast-animation-transition-duration,\\n        var(--core-animation-enter-transition-moderate-speed-duration)\\n      )\\n      ease-in-out;transform:translate(-50%, 0)}\";\n\tconst MarketToasterStyle0 = marketToasterCss;\n\tconst TOAST_VERTICAL_SPACING = 16;\n\tconst TOAST_BOTTOM_MARGIN = 24;\n\tconst TOAST_ANIMATION_TRANSITION_DURATION = 200;\n\tconst MarketToaster = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.toasts = [];\n\t  }\n\t  /**\n\t   * Add the passed toastEl to market-toaster and make it visible\n\t   **/\n\t  async show(toastEl) {\n\t    this.toasts.unshift(toastEl);\n\t    toastEl.classList.add(\"use-transitions\");\n\t    this.el.appendChild(toastEl);\n\t    window.requestAnimationFrame(this.positionToasts.bind(this));\n\t    await new Promise((resolve) => setTimeout(resolve, TOAST_ANIMATION_TRANSITION_DURATION));\n\t    toastEl.startAutoDismissTimer();\n\t  }\n\t  positionToasts() {\n\t    let offset = TOAST_BOTTOM_MARGIN;\n\t    this.toasts.forEach((toast) => {\n\t      toast.style.transform = `translate(-50%, calc(-100% - ${offset}px))`;\n\t      offset += toast.offsetHeight + TOAST_VERTICAL_SPACING;\n\t    });\n\t  }\n\t  /**\n\t   * Remove the passed toastEl from market-toaster\n\t   **/\n\t  async hide(toastEl) {\n\t    const index2 = this.toasts.indexOf(toastEl);\n\t    this.toasts.splice(index2, 1);\n\t    window.requestAnimationFrame(() => {\n\t      toastEl.style.transform = \"\";\n\t      this.positionToasts();\n\t    });\n\t    await new Promise((resolve) => setTimeout(resolve, TOAST_ANIMATION_TRANSITION_DURATION));\n\t    toastEl.remove();\n\t  }\n\t  /**\n\t   * Remove all market-toasts from market-toaster\n\t   **/\n\t  removeAll() {\n\t    const allActiveToasts = [...this.toasts];\n\t    return Promise.all(allActiveToasts.map((toast) => this.hide(toast)));\n\t  }\n\t  toastAutoDismissedEventHandler({ target: toast }) {\n\t    this.hide(toast);\n\t  }\n\t  toastManuallyDismissedEventHandler({ target: toast }) {\n\t    this.hide(toast);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"1e7cd1efe786c2e413bc777b5c3f7de137c6f100\", class: \"market-toaster\" }, index.h(\"slot\", { key: \"0e77820fe26f481aa541124a1f399e12b0602e28\" }));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketToaster.style = MarketToasterStyle0;\n\tmarketToaster_cjs_entry.market_toaster = MarketToaster;\n\treturn marketToaster_cjs_entry;\n}\n\nvar marketToggle_cjs_entry = {};\n\nvar hasRequiredMarketToggle_cjs_entry;\n\nfunction requireMarketToggle_cjs_entry () {\n\tif (hasRequiredMarketToggle_cjs_entry) return marketToggle_cjs_entry;\n\thasRequiredMarketToggle_cjs_entry = 1;\n\tObject.defineProperty(marketToggle_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst aria = requireAria71b861a0();\n\tconst marketToggleCss = \":host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{--focus-ring-color:color-mix(in srgb, var(--toggle-focus-ring-color) 100%, transparent);position:relative;display:inline-block;height:var(--toggle-height)}input{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;border-radius:var(--toggle-border-radius);background:transparent;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}input:focus-visible{outline:var(--toggle-focus-ring-border-size) solid var(--focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size);}circle,rect{transition:var(--row-slotted-control-transition, var(--core-animation-enter-transition-moderate-speed-duration))}circle{fill:var(--toggle-normal-state-unselected-value-thumb-color)}rect{fill:var(--toggle-normal-state-unselected-value-track-color);stroke:var(--toggle-normal-state-unselected-value-border-color)}:host([checked]) circle{fill:var(--toggle-normal-state-selected-value-thumb-color);cx:28px}:host([checked]) rect{fill:var(--toggle-normal-state-selected-value-track-color);stroke:var(--toggle-normal-state-selected-value-border-color)}:host(:hover) circle,:host([hovered]) circle{fill:var(--toggle-hover-state-unselected-value-thumb-color)}:host(:hover) rect,:host([hovered]) rect{fill:var(--toggle-hover-state-unselected-value-track-color);stroke:var(--toggle-hover-state-unselected-value-border-color)}:host([checked]:hover) circle,:host([checked][hovered]) circle{fill:var(--toggle-hover-state-selected-value-thumb-color)}:host([checked]:hover) rect,:host([checked][hovered]) rect{fill:var(--toggle-hover-state-selected-value-track-color);stroke:var(--toggle-hover-state-selected-value-border-color)}:host([focused]) circle{fill:var(--toggle-focus-state-unselected-value-thumb-color)}:host([focused]) rect{fill:var(--toggle-focus-state-unselected-value-track-color);stroke:var(--toggle-focus-state-unselected-value-border-color)}:host([checked][focused]) circle{fill:var(--toggle-focus-state-selected-value-thumb-color)}:host([checked][focused]) rect{fill:var(--toggle-focus-state-selected-value-track-color);stroke:var(--toggle-focus-state-selected-value-border-color)}:host(:active) circle,:host([active]) circle{fill:var(--toggle-pressed-state-unselected-value-thumb-color)}:host(:active) rect,:host([active]) rect{fill:var(--toggle-pressed-state-unselected-value-track-color);stroke:var(--toggle-pressed-state-unselected-value-border-color)}:host([checked]:active) circle,:host([checked][active]) circle{fill:var(--toggle-pressed-state-selected-value-thumb-color)}:host([checked]:active) rect,:host([checked][active]) rect{fill:var(--toggle-pressed-state-selected-value-track-color);stroke:var(--toggle-pressed-state-selected-value-border-color)}:host([disabled]) input{cursor:not-allowed}:host([disabled]) circle{fill:var(--toggle-disabled-state-unselected-value-thumb-color)}:host([disabled]) rect{fill:var(--toggle-disabled-state-unselected-value-track-color);stroke:var(--toggle-disabled-state-unselected-value-border-color)}:host([disabled][checked]) circle{fill:var(--toggle-disabled-state-selected-value-thumb-color)}:host([disabled][checked]) rect{fill:var(--toggle-disabled-state-selected-value-track-color);stroke:var(--toggle-disabled-state-selected-value-border-color)}\";\n\tconst MarketToggleStyle0 = marketToggleCss;\n\tconst MarketToggle = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketToggleChange = index.createEvent(this, \"marketToggleChange\", 7);\n\t    this.checked = false;\n\t    this.disabled = false;\n\t    this.focused = false;\n\t    this.hovered = false;\n\t    this.active = false;\n\t  }\n\t  /**\n\t   * Toggles `checked` prop, and emits a change event accordingly.\n\t   * Used by `market-row` to sync its selected state w/ slotted toggles.\n\t   */\n\t  setSelection(newValue, { silent = false } = {}) {\n\t    const { marketToggleChange, checked: prevValue, innerInput } = this;\n\t    if (typeof newValue !== \"boolean\")\n\t      return Promise.resolve();\n\t    if (prevValue === newValue)\n\t      return Promise.resolve();\n\t    if (!silent) {\n\t      const { defaultPrevented } = marketToggleChange.emit({\n\t        current: newValue,\n\t        previous: prevValue\n\t      });\n\t      if (defaultPrevented) {\n\t        return Promise.resolve();\n\t      }\n\t    }\n\t    this.checked = newValue;\n\t    if (innerInput) {\n\t      innerInput.checked = newValue;\n\t    }\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * DEPRECATED (3.x): Toggles `selected` state (unrelated to the HTML attribute `value`).\n\t   */\n\t  setValue(newValue) {\n\t    console.warn(\"market-toggle's setValue() method has been deprecated. Use setSelection() instead.\", this.el);\n\t    this.setSelection(newValue);\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `active` state. Allows external elements to programmatically\n\t   * trigger active styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setActive(value) {\n\t    this.active = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `hovered` state. Allows external elements to programmatically\n\t   * trigger hover styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setHover(value) {\n\t    this.hovered = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `disabled` state. Allows external elements to programmatically\n\t   * trigger disabled styling, ex. when slotted as a control into `market-row`.\n\t   */\n\t  setDisabled(value) {\n\t    this.disabled = value;\n\t    return Promise.resolve();\n\t  }\n\t  /**\n\t   * Sets `focused` state, except when disabled.\n\t   * Allows external consumers to programmatically\n\t   * trigger focused styling.\n\t   */\n\t  setFocus(value = true) {\n\t    if (this.disabled && value) {\n\t      return Promise.resolve();\n\t    }\n\t    this.focused = value;\n\t    return Promise.resolve();\n\t  }\n\t  handleClick(event) {\n\t    event.preventDefault();\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    this.setFocus();\n\t    this.setSelection(!this.checked);\n\t  }\n\t  render() {\n\t    return index.h(index.Host, { key: \"49d58be7be433ae6b29889caff3bd87cc0e8ed00\", class: \"market-toggle\", onBlur: () => {\n\t      this.setFocus(false);\n\t    }, onClick: this.handleClick, onFocus: () => {\n\t      this.setFocus();\n\t    } }, index.h(\"input\", {\n\t      key: \"69a5d843c4a3063a5b6ae8a643ffb84615cf0d83\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.innerInput = el,\n\t      type: \"checkbox\",\n\t      role: \"switch\",\n\t      \"aria-label\": aria.getControlInputAriaLabel(this.el),\n\t      checked: this.checked,\n\t      disabled: this.disabled\n\t    }), index.h(\"svg\", { key: \"03cee62f852d8f68fc746b9e8ddfecd934308c98\", width: \"40\", height: \"24\", viewBox: \"0 0 40 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", \"aria-hidden\": \"true\" }, index.h(\"rect\", { key: \"a51ce33931cb98da7c8177e49ecafd24214f715d\", x: \"1\", y: \"1\", width: \"38\", height: \"22\", rx: \"11\", \"stroke-width\": \"2\" }), index.h(\"circle\", { key: \"c4ac352f763d9ed12bd5163663caf54b847f260b\", cx: \"12\", cy: \"12\", r: \"7\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketToggle.style = MarketToggleStyle0;\n\tmarketToggle_cjs_entry.market_toggle = MarketToggle;\n\treturn marketToggle_cjs_entry;\n}\n\nvar marketTooltip_cjs_entry = {};\n\nvar hasRequiredMarketTooltip_cjs_entry;\n\nfunction requireMarketTooltip_cjs_entry () {\n\tif (hasRequiredMarketTooltip_cjs_entry) return marketTooltip_cjs_entry;\n\thasRequiredMarketTooltip_cjs_entry = 1;\n\tObject.defineProperty(marketTooltip_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = index254d04f0.requireIndex254d04f0();\n\tconst marketTooltipCss = ':host,::slotted(*),*{box-sizing:border-box}:host([disabled]){cursor:not-allowed !important;}:host([disabled]) *,:host([disabled]) ::slotted(*){cursor:not-allowed !important;pointer-events:none !important;}:host *{outline-color:var(--core-focus-ring-color)}:host(:focus-visible),::slotted(*:focus-visible){outline:var(--core-focus-ring-border-size) solid var(--core-focus-ring-color);outline-offset:var(--core-focus-ring-buffer-size)}::slotted(a),::slotted(button){border-radius:1px}:host{display:inline-block}:host .market-dropdown{padding-bottom:0;border-radius:var(--core-radius-66)}:host .market-dropdown .trigger-tap-target{display:flex;justify-content:center;align-items:center;min-width:var(--tooltip-minimum-width);min-height:var(--tooltip-minimum-height)}:host svg,:host ::slotted(svg[slot=\"trigger\"]){fill:var(--tooltip-trigger-icon-normal-state-color);transition:fill\\n      var(--tooltip-animation-move-transition-duration)\\n      ease-out}:host ::slotted([slot=\"trigger\"]:not(svg)){color:var(--tooltip-trigger-text-normal-state-color);transition:color\\n      border-bottom\\n      var(--tooltip-trigger-animation-fade-transition-duration)\\n      ease-out;text-decoration-line:underline;text-decoration-style:dashed;text-decoration-color:var(--tooltip-trigger-text-normal-state-color);text-decoration-thickness:var(--tooltip-trigger-text-underline-size);text-underline-position:under;text-underline-offset:2px;}:host([aria-expanded]) svg,:host([aria-expanded]) ::slotted(svg[slot=\"trigger\"]){fill:var(--tooltip-trigger-icon-active-state-color)}:host([aria-expanded]) ::slotted([slot=\"trigger\"]:not(svg)){color:var(--tooltip-trigger-text-active-state-color);text-decoration-color:var(--tooltip-trigger-text-active-state-color)}:host([disabled]) svg,:host([disabled]) ::slotted(svg[slot=\"trigger\"]){fill:var(--tooltip-trigger-icon-disabled-state-color)}:host([disabled]) ::slotted([slot=\"trigger\"]:not(svg)){color:var(--tooltip-trigger-text-disabled-state-color);text-decoration-color:var(--tooltip-trigger-text-disabled-state-color)}:host .popover{--text-link-normal-variant-color:var(--tooltip-link-color);--text-link-normal-variant-hover-state-color:var(--tooltip-link-color);--text-link-normal-variant-pressed-state-color:var(--tooltip-link-color);--text-link-normal-variant-disabled-state-color:var(--tooltip-link-color);--text-link-destructive-variant-color:var(--tooltip-link-color);--text-link-destructive-variant-hover-state-color:var(--tooltip-link-color);--text-link-destructive-variant-pressed-state-color:var(--tooltip-link-color);--text-link-destructive-variant-disabled-state-color:var(--tooltip-link-color);max-width:var(--tooltip-maximum-width);padding:var(--tooltip-padding-vertical-size) var(--tooltip-padding-horizontal-size);border-radius:var(--tooltip-radius);background-color:var(--tooltip-background-color);color:var(--tooltip-text-color);box-shadow:var(--elevation-30-shadow);font-weight:var(--tooltip-text-weight);font-size:var(--tooltip-text-size);line-height:var(--tooltip-text-leading);letter-spacing:var(--tooltip-text-tracking);text-transform:var(--tooltip-text-case)}';\n\tconst MarketTooltipStyle0 = marketTooltipCss;\n\tconst MarketTooltip = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketTooltipOpened = index.createEvent(this, \"marketTooltipOpened\", 7);\n\t    this.marketTooltipClosed = index.createEvent(this, \"marketTooltipClosed\", 7);\n\t    this.interaction = \"hover\";\n\t    this.disabled = false;\n\t    this.popoverPlacement = \"bottom\";\n\t    this.popoverStrategy = \"absolute\";\n\t    this.popoverSkidding = void 0;\n\t    this.popoverDistance = 0;\n\t    this.expanded = false;\n\t  }\n\t  dropdownOpenedEventHandler(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    e.stopPropagation();\n\t    this.expanded = true;\n\t    this.marketTooltipOpened.emit();\n\t  }\n\t  dropdownClosedEventHandler(e) {\n\t    if (e.target !== this.el)\n\t      return;\n\t    e.stopPropagation();\n\t    this.expanded = false;\n\t    this.marketTooltipClosed.emit();\n\t  }\n\t  /**\n\t   * Opens the tooltip\n\t   */\n\t  openTooltip() {\n\t    return this.innerDropdown.openDropdown();\n\t  }\n\t  /**\n\t   * Closes the tooltip\n\t   */\n\t  closeTooltip() {\n\t    return this.innerDropdown.closeDropdown();\n\t  }\n\t  styleLinks() {\n\t    const slottedContent = [...this.el.children].find((child) => child.slot === \"content\");\n\t    const slottedHtmlLinks = slottedContent === null || slottedContent === void 0 ? void 0 : slottedContent.querySelectorAll(\"a\");\n\t    const slottedMarketLinks = slottedContent === null || slottedContent === void 0 ? void 0 : slottedContent.querySelectorAll(`${index$1.getNamespacedTagFor(\"market-link\")}`);\n\t    slottedHtmlLinks.forEach((link) => {\n\t      link.style.color = \"var(--tooltip-link-color)\";\n\t      link.style.fontSize = \"var(--tooltip-link-size)\";\n\t      link.style.fontWeight = \"var(--tooltip-link-weight)\";\n\t      link.style.lineHeight = \"var(--tooltip-link-leading)\";\n\t      link.style.letterSpacing = \"var(--tooltip-link-tracking)\";\n\t      link.style.textTransform = \"var(--tooltip-link-case)\";\n\t      link.style.textDecoration = \"underline\";\n\t      link.style.textUnderlineOffset = \"2px\";\n\t      link.style.outline = \"none\";\n\t    });\n\t    slottedMarketLinks === null || slottedMarketLinks === void 0 ? void 0 : slottedMarketLinks.forEach((link) => {\n\t      link.style.setProperty(\"--link-internal-underline-size\", \"1px\");\n\t    });\n\t  }\n\t  componentWillRender() {\n\t    this.styleLinks();\n\t  }\n\t  render() {\n\t    const MarketDropdownTagName = index$1.getNamespacedTagFor(\"market-dropdown\");\n\t    return index.h(index.Host, { key: \"e65704ed9ec7e8faf45ffd568d7d0e3474c96ad2\", \"aria-expanded\": this.expanded, class: \"market-tooltip\" }, index.h(MarketDropdownTagName, {\n\t      key: \"1a67ca4841d5639f176ae2cfe785780fa8a14322\",\n\t      interaction: this.interaction,\n\t      \"popover-placement\": this.popoverPlacement,\n\t      \"popover-strategy\": this.popoverStrategy,\n\t      \"popover-distance\": this.popoverDistance,\n\t      \"popover-skidding\": this.popoverSkidding,\n\t      disabled: this.disabled,\n\t      expanded: this.expanded,\n\t      \"aria-expanded\": this.expanded,\n\t      part: \"dropdown\",\n\t      // @ts-expect-error TODO: remove legacy non-strict null SQWP-1540 (2025-08-26)\n\t      ref: (el) => this.innerDropdown = el,\n\t      tabIndex: 0\n\t    }, index.h(\"div\", { key: \"5c0964c736cf0cdf0db9e49959f2815e3b7e7148\", slot: \"trigger\", part: \"trigger\", class: \"trigger-tap-target\" }, index.h(\"slot\", { key: \"d2a3c979b2712faf54762c59c32cc659d0960a2f\", name: \"trigger\" }, index.h(\"svg\", { key: \"b513ec9ee65704decd475034d1b930ab8794048a\", width: \"18\", height: \"18\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"840df2308ecc0bb444e3673fb4d19bb2c3dc5e31\", \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M9 0C4.04 0 0 4.04 0 9C0 13.96 4.04 18 9 18C13.96 18 18 13.96 18 9C18 4.04 13.96 0 9 0ZM9 16C5.14 16 2 12.86 2 9C2 5.14 5.14 2 9 2C12.86 2 16 5.14 16 9C16 12.86 12.86 16 9 16ZM8 7.5V14H10V7.5H8ZM10.25 5.25C10.25 5.94036 9.69036 6.5 9 6.5C8.30964 6.5 7.75 5.94036 7.75 5.25C7.75 4.55964 8.30964 4 9 4C9.69036 4 10.25 4.55964 10.25 5.25Z\" })))), index.h(\"div\", { key: \"5719804cc9ad2493d0cef3e01938a10777e36865\", class: \"popover\", slot: \"popover\", part: \"popover\", role: \"tooltip\" }, index.h(\"slot\", { key: \"724bffa81a6928afd08d6ae1d1dfffb06e12ffa8\", name: \"content\", onSlotchange: () => this.styleLinks() }))));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketTooltip.style = MarketTooltipStyle0;\n\tmarketTooltip_cjs_entry.market_tooltip = MarketTooltip;\n\treturn marketTooltip_cjs_entry;\n}\n\nvar marketColorSwatch_cjs_entry = {};\n\nvar hasRequiredMarketColorSwatch_cjs_entry;\n\nfunction requireMarketColorSwatch_cjs_entry () {\n\tif (hasRequiredMarketColorSwatch_cjs_entry) return marketColorSwatch_cjs_entry;\n\thasRequiredMarketColorSwatch_cjs_entry = 1;\n\tObject.defineProperty(marketColorSwatch_cjs_entry, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst index$1 = requireIndexC43effe9();\n\tconst color = requireColorE689fb5f();\n\tconst marketColorSwatchCss = \":host{position:relative;display:inline-block;width:40px;height:40px;border-radius:50%;background-color:var(--swatch-color);box-shadow:inset 0 0 0 1px rgb(0 0 0 / 15%);transition:box-shadow\\n    var(--core-animation-enter-transition-moderate-speed-duration)\\n    var(--core-animation-enter-transition-easing)}:host .inner-circle{position:absolute;top:50%;left:50%;width:0;height:0;border:0;border-radius:50%;background-color:white;box-shadow:0 0 0 0 rgb(0 0 0 / 15%);transition:width\\n      var(--core-animation-enter-transition-moderate-speed-duration)\\n      var(--core-animation-enter-transition-easing),\\n      height\\n      var(--core-animation-enter-transition-moderate-speed-duration)\\n      var(--core-animation-enter-transition-easing),\\n      box-shadow\\n      var(--core-animation-enter-transition-moderate-speed-duration)\\n      var(--core-animation-enter-transition-easing),\\n      border\\n      var(--core-animation-enter-transition-fast-speed-duration)\\n      var(--core-animation-enter-transition-easing);transform:translate(-50%, -50%)}:host .checkmark-icon{position:absolute;top:50%;left:50%;opacity:0%;transition:opacity var(--core-animation-enter-transition-moderate-speed-duration) ease-out;transform:translate(-50%, -50%)}:host(:hover:not([disabled])) .inner-circle{width:8px;height:8px;box-shadow:0 0 0 1px rgb(0 0 0 / 15%)}:host([selected]){box-shadow:inset 0 0 0 2px var(--color-picker-swatch-selected-state-border-color, #006aff)}:host([selected]) .inner-circle,:host([selected]:hover) .inner-circle{width:32px;height:32px;border:2px solid white;background-color:transparent;box-shadow:inset 0 0 0 1px rgb(0 0 0 / 15%)}:host([selected]) .checkmark-icon{opacity:100%}:host(:active:not([disabled])) .inner-circle,:host([selected]:active) .inner-circle{width:16px;height:16px;border:0;background-color:white;box-shadow:0 0 0 1px rgb(0 0 0 / 15%)}:host([selected]:active:not([disabled])) .checkmark-icon{opacity:0%}.checkmark-icon path{fill:var(--core-text-10-dark-mode-color)}.checkmark-icon.bright-background path{fill:var(--core-text-10-light-mode-color)}:host(:hover:not([disabled])) .inner-circle,:host(:active:not([disabled])) .inner-circle{transition:width var(--core-animation-exit-transition-moderate-speed-duration),\\n    height var(--core-animation-exit-transition-moderate-speed-duration),\\n    box-shadow var(--core-animation-exit-transition-moderate-speed-duration),\\n    border var(--core-animation-exit-transition-fast-speed-duration)}\";\n\tconst MarketColorSwatchStyle0 = marketColorSwatchCss;\n\tconst MarketColorSwatch = class {\n\t  constructor(hostRef) {\n\t    index.registerInstance(this, hostRef);\n\t    this.marketColorSwatchSelectedChange = index.createEvent(this, \"marketColorSwatchSelectedChange\", 7);\n\t    this.value = index$1.CORE_BLUE_FILL_COLOR;\n\t    this.name = void 0;\n\t    this.disabled = void 0;\n\t    this.selected = false;\n\t  }\n\t  toggleSelection() {\n\t    if (this.disabled) {\n\t      return;\n\t    }\n\t    const newSelection = !this.selected;\n\t    const swatchValue = { value: this.value, selected: newSelection };\n\t    const { defaultPrevented } = this.marketColorSwatchSelectedChange.emit(swatchValue);\n\t    if (!defaultPrevented) {\n\t      this.selected = newSelection;\n\t    }\n\t  }\n\t  render() {\n\t    const isBright = color.isColorBright(this.value);\n\t    const checkmarkClass = isBright ? \"checkmark-icon bright-background\" : \"checkmark-icon\";\n\t    return index.h(index.Host, { key: \"9c018edd3795c17c69f9159b8f96e2ed5eaa3c9e\", class: \"market-color-swatch\", role: \"listitem\", onClick: () => this.toggleSelection(), style: { \"--swatch-color\": this.value } }, index.h(\"div\", { key: \"e875933cad4184e30853dd4c6c6ad7cd49221bf7\", class: \"inner-circle\" }), index.h(\"svg\", { key: \"9683c3d42063e523d146e4c3360ac453e92f0dab\", class: checkmarkClass, width: \"18\", height: \"12\", viewBox: \"0 0 18 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, index.h(\"path\", { key: \"41e5eeb32214f7a8ea8e501bea0c389f2cc63d5d\", d: \"M6.7 11.7C6.96 11.7 7.21 11.6 7.41 11.41L17.41 1.41L16 0L6.7 9.29L1.41 4L0 5.41L6 11.41C6.19 11.6 6.44 11.7 6.7 11.7Z\" })));\n\t  }\n\t  get el() {\n\t    return index.getElement(this);\n\t  }\n\t};\n\tMarketColorSwatch.style = MarketColorSwatchStyle0;\n\tmarketColorSwatch_cjs_entry.market_color_swatch = MarketColorSwatch;\n\treturn marketColorSwatch_cjs_entry;\n}\n\nvar hasRequiredIndex37364565;\n\nfunction requireIndex37364565 () {\n\tif (hasRequiredIndex37364565) return index37364565;\n\thasRequiredIndex37364565 = 1;\n\tvar __defProp2 = Object.defineProperty;\n\tvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\n\tvar __hasOwnProp = Object.prototype.hasOwnProperty;\n\tvar __propIsEnum = Object.prototype.propertyIsEnumerable;\n\tvar __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n\tvar __spreadValues = (a, b) => {\n\t  for (var prop in b || (b = {}))\n\t    if (__hasOwnProp.call(b, prop))\n\t      __defNormalProp(a, prop, b[prop]);\n\t  if (__getOwnPropSymbols)\n\t    for (var prop of __getOwnPropSymbols(b)) {\n\t      if (__propIsEnum.call(b, prop))\n\t        __defNormalProp(a, prop, b[prop]);\n\t    }\n\t  return a;\n\t};\n\tfunction _interopNamespace(e) {\n\t  if (e && e.__esModule) return e;\n\t  var n = /* @__PURE__ */ Object.create(null);\n\t  if (e) {\n\t    Object.keys(e).forEach(function(k) {\n\t      if (k !== \"default\") {\n\t        var d = Object.getOwnPropertyDescriptor(e, k);\n\t        Object.defineProperty(n, k, d.get ? d : {\n\t          enumerable: true,\n\t          get: function() {\n\t            return e[k];\n\t          }\n\t        });\n\t      }\n\t    });\n\t  }\n\t  n[\"default\"] = e;\n\t  return Object.freeze(n);\n\t}\n\tconst NAMESPACE = \"market\";\n\tconst BUILD = (\n\t  /* market */\n\t  { experimentalSlotFixes: false}\n\t);\n\tvar __defProp = Object.defineProperty;\n\tvar __export = (target, all) => {\n\t  for (var name in all)\n\t    __defProp(target, name, { get: all[name], enumerable: true });\n\t};\n\tvar EMPTY_OBJ = {};\n\tvar SVG_NS = \"http://www.w3.org/2000/svg\";\n\tvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\tvar isDef = (v) => v != null;\n\tvar isComplexType = (o) => {\n\t  o = typeof o;\n\t  return o === \"object\" || o === \"function\";\n\t};\n\tfunction queryNonceMetaTagContent(doc2) {\n\t  var _a, _b, _c;\n\t  return (_c = (_b = (_a = doc2.head) == null ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) == null ? void 0 : _b.getAttribute(\"content\")) != null ? _c : void 0;\n\t}\n\tvar result_exports = {};\n\t__export(result_exports, {\n\t  err: () => err,\n\t  map: () => map,\n\t  ok: () => ok,\n\t  unwrap: () => unwrap,\n\t  unwrapErr: () => unwrapErr\n\t});\n\tvar ok = (value) => ({\n\t  isOk: true,\n\t  isErr: false,\n\t  value\n\t});\n\tvar err = (value) => ({\n\t  isOk: false,\n\t  isErr: true,\n\t  value\n\t});\n\tfunction map(result, fn) {\n\t  if (result.isOk) {\n\t    const val = fn(result.value);\n\t    if (val instanceof Promise) {\n\t      return val.then((newVal) => ok(newVal));\n\t    } else {\n\t      return ok(val);\n\t    }\n\t  }\n\t  if (result.isErr) {\n\t    const value = result.value;\n\t    return err(value);\n\t  }\n\t  throw \"should never get here\";\n\t}\n\tvar unwrap = (result) => {\n\t  if (result.isOk) {\n\t    return result.value;\n\t  } else {\n\t    throw result.value;\n\t  }\n\t};\n\tvar unwrapErr = (result) => {\n\t  if (result.isErr) {\n\t    return result.value;\n\t  } else {\n\t    throw result.value;\n\t  }\n\t};\n\tvar createTime = (fnName, tagName = \"\") => {\n\t  {\n\t    return () => {\n\t      return;\n\t    };\n\t  }\n\t};\n\tvar uniqueTime = (key, measureText) => {\n\t  {\n\t    return () => {\n\t      return;\n\t    };\n\t  }\n\t};\n\tvar CONTENT_REF_ID = \"r\";\n\tvar ORG_LOCATION_ID = \"o\";\n\tvar SLOT_NODE_ID = \"s\";\n\tvar TEXT_NODE_ID = \"t\";\n\tvar HYDRATE_ID = \"s-id\";\n\tvar HYDRATED_STYLE_ID = \"sty-id\";\n\tvar HYDRATE_CHILD_ID = \"c-id\";\n\tvar HYDRATED_CSS = \"{visibility:hidden}[hydrated]{visibility:inherit}\";\n\tvar SLOT_FB_CSS = \"slot-fb{display:contents}slot-fb[hidden]{display:none}\";\n\tvar XLINK_NS = \"http://www.w3.org/1999/xlink\";\n\tvar FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [\n\t  \"formAssociatedCallback\",\n\t  \"formResetCallback\",\n\t  \"formDisabledCallback\",\n\t  \"formStateRestoreCallback\"\n\t];\n\tvar h = (nodeName, vnodeData, ...children) => {\n\t  let child = null;\n\t  let key = null;\n\t  let slotName = null;\n\t  let simple = false;\n\t  let lastSimple = false;\n\t  const vNodeChildren = [];\n\t  const walk = (c) => {\n\t    for (let i2 = 0; i2 < c.length; i2++) {\n\t      child = c[i2];\n\t      if (Array.isArray(child)) {\n\t        walk(child);\n\t      } else if (child != null && typeof child !== \"boolean\") {\n\t        if (simple = typeof nodeName !== \"function\" && !isComplexType(child)) {\n\t          child = String(child);\n\t        }\n\t        if (simple && lastSimple) {\n\t          vNodeChildren[vNodeChildren.length - 1].$text$ += child;\n\t        } else {\n\t          vNodeChildren.push(simple ? newVNode(null, child) : child);\n\t        }\n\t        lastSimple = simple;\n\t      }\n\t    }\n\t  };\n\t  walk(children);\n\t  if (vnodeData) {\n\t    if (vnodeData.key) {\n\t      key = vnodeData.key;\n\t    }\n\t    if (vnodeData.name) {\n\t      slotName = vnodeData.name;\n\t    }\n\t    {\n\t      const classData = vnodeData.className || vnodeData.class;\n\t      if (classData) {\n\t        vnodeData.class = typeof classData !== \"object\" ? classData : Object.keys(classData).filter((k) => classData[k]).join(\" \");\n\t      }\n\t    }\n\t  }\n\t  if (typeof nodeName === \"function\") {\n\t    return nodeName(\n\t      vnodeData === null ? {} : vnodeData,\n\t      vNodeChildren,\n\t      vdomFnUtils\n\t    );\n\t  }\n\t  const vnode = newVNode(nodeName, null);\n\t  vnode.$attrs$ = vnodeData;\n\t  if (vNodeChildren.length > 0) {\n\t    vnode.$children$ = vNodeChildren;\n\t  }\n\t  {\n\t    vnode.$key$ = key;\n\t  }\n\t  {\n\t    vnode.$name$ = slotName;\n\t  }\n\t  return vnode;\n\t};\n\tvar newVNode = (tag, text) => {\n\t  const vnode = {\n\t    $flags$: 0,\n\t    $tag$: tag,\n\t    $text$: text,\n\t    $elm$: null,\n\t    $children$: null\n\t  };\n\t  {\n\t    vnode.$attrs$ = null;\n\t  }\n\t  {\n\t    vnode.$key$ = null;\n\t  }\n\t  {\n\t    vnode.$name$ = null;\n\t  }\n\t  return vnode;\n\t};\n\tvar Host = {};\n\tvar isHost = (node) => node && node.$tag$ === Host;\n\tvar vdomFnUtils = {\n\t  forEach: (children, cb) => children.map(convertToPublic).forEach(cb),\n\t  map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate)\n\t};\n\tvar convertToPublic = (node) => ({\n\t  vattrs: node.$attrs$,\n\t  vchildren: node.$children$,\n\t  vkey: node.$key$,\n\t  vname: node.$name$,\n\t  vtag: node.$tag$,\n\t  vtext: node.$text$\n\t});\n\tvar convertToPrivate = (node) => {\n\t  if (typeof node.vtag === \"function\") {\n\t    const vnodeData = __spreadValues({}, node.vattrs);\n\t    if (node.vkey) {\n\t      vnodeData.key = node.vkey;\n\t    }\n\t    if (node.vname) {\n\t      vnodeData.name = node.vname;\n\t    }\n\t    return h(node.vtag, vnodeData, ...node.vchildren || []);\n\t  }\n\t  const vnode = newVNode(node.vtag, node.vtext);\n\t  vnode.$attrs$ = node.vattrs;\n\t  vnode.$children$ = node.vchildren;\n\t  vnode.$key$ = node.vkey;\n\t  vnode.$name$ = node.vname;\n\t  return vnode;\n\t};\n\tvar initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {\n\t  const endHydrate = createTime(\"hydrateClient\", tagName);\n\t  const shadowRoot = hostElm.shadowRoot;\n\t  const childRenderNodes = [];\n\t  const slotNodes = [];\n\t  const shadowRootNodes = shadowRoot ? [] : null;\n\t  const vnode = hostRef.$vnode$ = newVNode(tagName, null);\n\t  if (!plt.$orgLocNodes$) {\n\t    initializeDocumentHydrate(doc.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map());\n\t  }\n\t  hostElm[HYDRATE_ID] = hostId;\n\t  hostElm.removeAttribute(HYDRATE_ID);\n\t  clientHydrate(vnode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, hostElm, hostId);\n\t  childRenderNodes.map((c) => {\n\t    const orgLocationId = c.$hostId$ + \".\" + c.$nodeId$;\n\t    const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId);\n\t    const node = c.$elm$;\n\t    if (orgLocationNode && supportsShadow && orgLocationNode[\"s-en\"] === \"\") {\n\t      orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling);\n\t    }\n\t    if (!shadowRoot) {\n\t      node[\"s-hn\"] = tagName;\n\t      if (orgLocationNode) {\n\t        node[\"s-ol\"] = orgLocationNode;\n\t        node[\"s-ol\"][\"s-nr\"] = node;\n\t      }\n\t    }\n\t    plt.$orgLocNodes$.delete(orgLocationId);\n\t  });\n\t  if (shadowRoot) {\n\t    shadowRootNodes.map((shadowRootNode) => {\n\t      if (shadowRootNode) {\n\t        shadowRoot.appendChild(shadowRootNode);\n\t      }\n\t    });\n\t  }\n\t  endHydrate();\n\t};\n\tvar clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, node, hostId) => {\n\t  let childNodeType;\n\t  let childIdSplt;\n\t  let childVNode;\n\t  let i2;\n\t  if (node.nodeType === 1) {\n\t    childNodeType = node.getAttribute(HYDRATE_CHILD_ID);\n\t    if (childNodeType) {\n\t      childIdSplt = childNodeType.split(\".\");\n\t      if (childIdSplt[0] === hostId || childIdSplt[0] === \"0\") {\n\t        childVNode = {\n\t          $flags$: 0,\n\t          $hostId$: childIdSplt[0],\n\t          $nodeId$: childIdSplt[1],\n\t          $depth$: childIdSplt[2],\n\t          $index$: childIdSplt[3],\n\t          $tag$: node.tagName.toLowerCase(),\n\t          $elm$: node,\n\t          $attrs$: null,\n\t          $children$: null,\n\t          $key$: null,\n\t          $name$: null,\n\t          $text$: null\n\t        };\n\t        childRenderNodes.push(childVNode);\n\t        node.removeAttribute(HYDRATE_CHILD_ID);\n\t        if (!parentVNode.$children$) {\n\t          parentVNode.$children$ = [];\n\t        }\n\t        parentVNode.$children$[childVNode.$index$] = childVNode;\n\t        parentVNode = childVNode;\n\t        if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n\t          shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n\t        }\n\t      }\n\t    }\n\t    for (i2 = node.childNodes.length - 1; i2 >= 0; i2--) {\n\t      clientHydrate(\n\t        parentVNode,\n\t        childRenderNodes,\n\t        slotNodes,\n\t        shadowRootNodes,\n\t        hostElm,\n\t        node.childNodes[i2],\n\t        hostId\n\t      );\n\t    }\n\t    if (node.shadowRoot) {\n\t      for (i2 = node.shadowRoot.childNodes.length - 1; i2 >= 0; i2--) {\n\t        clientHydrate(\n\t          parentVNode,\n\t          childRenderNodes,\n\t          slotNodes,\n\t          shadowRootNodes,\n\t          hostElm,\n\t          node.shadowRoot.childNodes[i2],\n\t          hostId\n\t        );\n\t      }\n\t    }\n\t  } else if (node.nodeType === 8) {\n\t    childIdSplt = node.nodeValue.split(\".\");\n\t    if (childIdSplt[1] === hostId || childIdSplt[1] === \"0\") {\n\t      childNodeType = childIdSplt[0];\n\t      childVNode = {\n\t        $flags$: 0,\n\t        $hostId$: childIdSplt[1],\n\t        $nodeId$: childIdSplt[2],\n\t        $depth$: childIdSplt[3],\n\t        $index$: childIdSplt[4],\n\t        $elm$: node,\n\t        $attrs$: null,\n\t        $children$: null,\n\t        $key$: null,\n\t        $name$: null,\n\t        $tag$: null,\n\t        $text$: null\n\t      };\n\t      if (childNodeType === TEXT_NODE_ID) {\n\t        childVNode.$elm$ = node.nextSibling;\n\t        if (childVNode.$elm$ && childVNode.$elm$.nodeType === 3) {\n\t          childVNode.$text$ = childVNode.$elm$.textContent;\n\t          childRenderNodes.push(childVNode);\n\t          node.remove();\n\t          if (!parentVNode.$children$) {\n\t            parentVNode.$children$ = [];\n\t          }\n\t          parentVNode.$children$[childVNode.$index$] = childVNode;\n\t          if (shadowRootNodes && childVNode.$depth$ === \"0\") {\n\t            shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n\t          }\n\t        }\n\t      } else if (childVNode.$hostId$ === hostId) {\n\t        if (childNodeType === SLOT_NODE_ID) {\n\t          childVNode.$tag$ = \"slot\";\n\t          if (childIdSplt[5]) {\n\t            node[\"s-sn\"] = childVNode.$name$ = childIdSplt[5];\n\t          } else {\n\t            node[\"s-sn\"] = \"\";\n\t          }\n\t          node[\"s-sr\"] = true;\n\t          if (shadowRootNodes) {\n\t            childVNode.$elm$ = doc.createElement(childVNode.$tag$);\n\t            if (childVNode.$name$) {\n\t              childVNode.$elm$.setAttribute(\"name\", childVNode.$name$);\n\t            }\n\t            node.parentNode.insertBefore(childVNode.$elm$, node);\n\t            node.remove();\n\t            if (childVNode.$depth$ === \"0\") {\n\t              shadowRootNodes[childVNode.$index$] = childVNode.$elm$;\n\t            }\n\t          }\n\t          slotNodes.push(childVNode);\n\t          if (!parentVNode.$children$) {\n\t            parentVNode.$children$ = [];\n\t          }\n\t          parentVNode.$children$[childVNode.$index$] = childVNode;\n\t        } else if (childNodeType === CONTENT_REF_ID) {\n\t          if (shadowRootNodes) {\n\t            node.remove();\n\t          } else {\n\t            hostElm[\"s-cr\"] = node;\n\t            node[\"s-cn\"] = true;\n\t          }\n\t        }\n\t      }\n\t    }\n\t  } else if (parentVNode && parentVNode.$tag$ === \"style\") {\n\t    const vnode = newVNode(null, node.textContent);\n\t    vnode.$elm$ = node;\n\t    vnode.$index$ = \"0\";\n\t    parentVNode.$children$ = [vnode];\n\t  }\n\t};\n\tvar initializeDocumentHydrate = (node, orgLocNodes) => {\n\t  if (node.nodeType === 1) {\n\t    let i2 = 0;\n\t    for (; i2 < node.childNodes.length; i2++) {\n\t      initializeDocumentHydrate(node.childNodes[i2], orgLocNodes);\n\t    }\n\t    if (node.shadowRoot) {\n\t      for (i2 = 0; i2 < node.shadowRoot.childNodes.length; i2++) {\n\t        initializeDocumentHydrate(node.shadowRoot.childNodes[i2], orgLocNodes);\n\t      }\n\t    }\n\t  } else if (node.nodeType === 8) {\n\t    const childIdSplt = node.nodeValue.split(\".\");\n\t    if (childIdSplt[0] === ORG_LOCATION_ID) {\n\t      orgLocNodes.set(childIdSplt[1] + \".\" + childIdSplt[2], node);\n\t      node.nodeValue = \"\";\n\t      node[\"s-en\"] = childIdSplt[3];\n\t    }\n\t  }\n\t};\n\tvar parsePropertyValue = (propValue, propType) => {\n\t  if (propValue != null && !isComplexType(propValue)) {\n\t    if (propType & 4) {\n\t      return propValue === \"false\" ? false : propValue === \"\" || !!propValue;\n\t    }\n\t    if (propType & 2) {\n\t      return parseFloat(propValue);\n\t    }\n\t    if (propType & 1) {\n\t      return String(propValue);\n\t    }\n\t    return propValue;\n\t  }\n\t  return propValue;\n\t};\n\tvar getElement = (ref) => getHostRef(ref).$hostElement$;\n\tvar createEvent = (ref, name, flags) => {\n\t  const elm = getElement(ref);\n\t  return {\n\t    emit: (detail) => {\n\t      return emitEvent(elm, name, {\n\t        bubbles: !!(flags & 4),\n\t        composed: !!(flags & 2),\n\t        cancelable: !!(flags & 1),\n\t        detail\n\t      });\n\t    }\n\t  };\n\t};\n\tvar emitEvent = (elm, name, opts) => {\n\t  const ev = plt.ce(name, opts);\n\t  elm.dispatchEvent(ev);\n\t  return ev;\n\t};\n\tvar rootAppliedStyles = /* @__PURE__ */ new WeakMap();\n\tvar registerStyle = (scopeId2, cssText, allowCS) => {\n\t  let style = styles.get(scopeId2);\n\t  if (supportsConstructableStylesheets && allowCS) {\n\t    style = style || new CSSStyleSheet();\n\t    if (typeof style === \"string\") {\n\t      style = cssText;\n\t    } else {\n\t      style.replaceSync(cssText);\n\t    }\n\t  } else {\n\t    style = cssText;\n\t  }\n\t  styles.set(scopeId2, style);\n\t};\n\tvar addStyle = (styleContainerNode, cmpMeta, mode) => {\n\t  var _a;\n\t  const scopeId2 = getScopeId(cmpMeta);\n\t  const style = styles.get(scopeId2);\n\t  styleContainerNode = styleContainerNode.nodeType === 11 ? styleContainerNode : doc;\n\t  if (style) {\n\t    if (typeof style === \"string\") {\n\t      styleContainerNode = styleContainerNode.head || styleContainerNode;\n\t      let appliedStyles = rootAppliedStyles.get(styleContainerNode);\n\t      let styleElm;\n\t      if (!appliedStyles) {\n\t        rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());\n\t      }\n\t      if (!appliedStyles.has(scopeId2)) {\n\t        if (styleContainerNode.host && (styleElm = styleContainerNode.querySelector(`[${HYDRATED_STYLE_ID}=\"${scopeId2}\"]`))) {\n\t          styleElm.innerHTML = style;\n\t        } else {\n\t          styleElm = doc.createElement(\"style\");\n\t          styleElm.innerHTML = style;\n\t          const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n\t          if (nonce != null) {\n\t            styleElm.setAttribute(\"nonce\", nonce);\n\t          }\n\t          styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector(\"link\"));\n\t        }\n\t        if (cmpMeta.$flags$ & 4) {\n\t          styleElm.innerHTML += SLOT_FB_CSS;\n\t        }\n\t        if (appliedStyles) {\n\t          appliedStyles.add(scopeId2);\n\t        }\n\t      }\n\t    } else if (!styleContainerNode.adoptedStyleSheets.includes(style)) {\n\t      styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];\n\t    }\n\t  }\n\t  return scopeId2;\n\t};\n\tvar attachStyles = (hostRef) => {\n\t  const cmpMeta = hostRef.$cmpMeta$;\n\t  const elm = hostRef.$hostElement$;\n\t  const flags = cmpMeta.$flags$;\n\t  const endAttachStyles = createTime(\"attachStyles\", cmpMeta.$tagName$);\n\t  const scopeId2 = addStyle(\n\t    elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(),\n\t    cmpMeta\n\t  );\n\t  if (flags & 10) {\n\t    elm[\"s-sc\"] = scopeId2;\n\t    elm.classList.add(scopeId2 + \"-h\");\n\t  }\n\t  endAttachStyles();\n\t};\n\tvar getScopeId = (cmp, mode) => \"sc-\" + cmp.$tagName$;\n\tvar convertScopedToShadow = (css) => css.replace(/\\/\\*!@([^\\/]+)\\*\\/[^\\{]+\\{/g, \"$1{\");\n\tvar setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {\n\t  if (oldValue !== newValue) {\n\t    let isProp = isMemberInElement(elm, memberName);\n\t    let ln = memberName.toLowerCase();\n\t    if (memberName === \"class\") {\n\t      const classList = elm.classList;\n\t      const oldClasses = parseClassList(oldValue);\n\t      const newClasses = parseClassList(newValue);\n\t      classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));\n\t      classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));\n\t    } else if (memberName === \"style\") {\n\t      {\n\t        for (const prop in oldValue) {\n\t          if (!newValue || newValue[prop] == null) {\n\t            if (prop.includes(\"-\")) {\n\t              elm.style.removeProperty(prop);\n\t            } else {\n\t              elm.style[prop] = \"\";\n\t            }\n\t          }\n\t        }\n\t      }\n\t      for (const prop in newValue) {\n\t        if (!oldValue || newValue[prop] !== oldValue[prop]) {\n\t          if (prop.includes(\"-\")) {\n\t            elm.style.setProperty(prop, newValue[prop]);\n\t          } else {\n\t            elm.style[prop] = newValue[prop];\n\t          }\n\t        }\n\t      }\n\t    } else if (memberName === \"key\") ;\n\t    else if (memberName === \"ref\") {\n\t      if (newValue) {\n\t        newValue(elm);\n\t      }\n\t    } else if (!isProp && memberName[0] === \"o\" && memberName[1] === \"n\") {\n\t      if (memberName[2] === \"-\") {\n\t        memberName = memberName.slice(3);\n\t      } else if (isMemberInElement(win, ln)) {\n\t        memberName = ln.slice(2);\n\t      } else {\n\t        memberName = ln[2] + memberName.slice(3);\n\t      }\n\t      if (oldValue || newValue) {\n\t        const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);\n\t        memberName = memberName.replace(CAPTURE_EVENT_REGEX, \"\");\n\t        if (oldValue) {\n\t          plt.rel(elm, memberName, oldValue, capture);\n\t        }\n\t        if (newValue) {\n\t          plt.ael(elm, memberName, newValue, capture);\n\t        }\n\t      }\n\t    } else {\n\t      const isComplex = isComplexType(newValue);\n\t      if ((isProp || isComplex && newValue !== null) && !isSvg) {\n\t        try {\n\t          if (!elm.tagName.includes(\"-\")) {\n\t            const n = newValue == null ? \"\" : newValue;\n\t            if (memberName === \"list\") {\n\t              isProp = false;\n\t            } else if (oldValue == null || elm[memberName] != n) {\n\t              elm[memberName] = n;\n\t            }\n\t          } else {\n\t            elm[memberName] = newValue;\n\t          }\n\t        } catch (e) {\n\t        }\n\t      }\n\t      let xlink = false;\n\t      {\n\t        if (ln !== (ln = ln.replace(/^xlink\\:?/, \"\"))) {\n\t          memberName = ln;\n\t          xlink = true;\n\t        }\n\t      }\n\t      if (newValue == null || newValue === false) {\n\t        if (newValue !== false || elm.getAttribute(memberName) === \"\") {\n\t          if (xlink) {\n\t            elm.removeAttributeNS(XLINK_NS, memberName);\n\t          } else {\n\t            elm.removeAttribute(memberName);\n\t          }\n\t        }\n\t      } else if ((!isProp || flags & 4 || isSvg) && !isComplex) {\n\t        newValue = newValue === true ? \"\" : newValue;\n\t        if (xlink) {\n\t          elm.setAttributeNS(XLINK_NS, memberName, newValue);\n\t        } else {\n\t          elm.setAttribute(memberName, newValue);\n\t        }\n\t      }\n\t    }\n\t  }\n\t};\n\tvar parseClassListRegex = /\\s/;\n\tvar parseClassList = (value) => !value ? [] : value.split(parseClassListRegex);\n\tvar CAPTURE_EVENT_SUFFIX = \"Capture\";\n\tvar CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + \"$\");\n\tvar updateElement = (oldVnode, newVnode, isSvgMode2) => {\n\t  const elm = newVnode.$elm$.nodeType === 11 && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;\n\t  const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || EMPTY_OBJ;\n\t  const newVnodeAttrs = newVnode.$attrs$ || EMPTY_OBJ;\n\t  {\n\t    for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {\n\t      if (!(memberName in newVnodeAttrs)) {\n\t        setAccessor(elm, memberName, oldVnodeAttrs[memberName], void 0, isSvgMode2, newVnode.$flags$);\n\t      }\n\t    }\n\t  }\n\t  for (const memberName of sortedAttrNames(Object.keys(newVnodeAttrs))) {\n\t    setAccessor(elm, memberName, oldVnodeAttrs[memberName], newVnodeAttrs[memberName], isSvgMode2, newVnode.$flags$);\n\t  }\n\t};\n\tfunction sortedAttrNames(attrNames) {\n\t  return attrNames.includes(\"ref\") ? (\n\t    // we need to sort these to ensure that `'ref'` is the last attr\n\t    [...attrNames.filter((attr) => attr !== \"ref\"), \"ref\"]\n\t  ) : (\n\t    // no need to sort, return the original array\n\t    attrNames\n\t  );\n\t}\n\tvar scopeId;\n\tvar contentRef;\n\tvar hostTagName;\n\tvar useNativeShadowDom = false;\n\tvar checkSlotFallbackVisibility = false;\n\tvar checkSlotRelocate = false;\n\tvar isSvgMode = false;\n\tvar createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {\n\t  var _d;\n\t  const newVNode2 = newParentVNode.$children$[childIndex];\n\t  let i2 = 0;\n\t  let elm;\n\t  let childNode;\n\t  let oldVNode;\n\t  if (!useNativeShadowDom) {\n\t    checkSlotRelocate = true;\n\t    if (newVNode2.$tag$ === \"slot\") {\n\t      if (scopeId) {\n\t        parentElm.classList.add(scopeId + \"-s\");\n\t      }\n\t      newVNode2.$flags$ |= newVNode2.$children$ ? (\n\t        // slot element has fallback content\n\t        // still create an element that \"mocks\" the slot element\n\t        2\n\t      ) : (\n\t        // slot element does not have fallback content\n\t        // create an html comment we'll use to always reference\n\t        // where actual slot content should sit next to\n\t        1\n\t      );\n\t    }\n\t  }\n\t  if (newVNode2.$text$ !== null) {\n\t    elm = newVNode2.$elm$ = doc.createTextNode(newVNode2.$text$);\n\t  } else if (newVNode2.$flags$ & 1) {\n\t    elm = newVNode2.$elm$ = doc.createTextNode(\"\");\n\t  } else {\n\t    if (!isSvgMode) {\n\t      isSvgMode = newVNode2.$tag$ === \"svg\";\n\t    }\n\t    elm = newVNode2.$elm$ = doc.createElementNS(\n\t      isSvgMode ? SVG_NS : HTML_NS,\n\t      newVNode2.$flags$ & 2 ? \"slot-fb\" : newVNode2.$tag$\n\t    );\n\t    if (isSvgMode && newVNode2.$tag$ === \"foreignObject\") {\n\t      isSvgMode = false;\n\t    }\n\t    {\n\t      updateElement(null, newVNode2, isSvgMode);\n\t    }\n\t    if (isDef(scopeId) && elm[\"s-si\"] !== scopeId) {\n\t      elm.classList.add(elm[\"s-si\"] = scopeId);\n\t    }\n\t    if (newVNode2.$children$) {\n\t      for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {\n\t        childNode = createElm(oldParentVNode, newVNode2, i2, elm);\n\t        if (childNode) {\n\t          elm.appendChild(childNode);\n\t        }\n\t      }\n\t    }\n\t    {\n\t      if (newVNode2.$tag$ === \"svg\") {\n\t        isSvgMode = false;\n\t      } else if (elm.tagName === \"foreignObject\") {\n\t        isSvgMode = true;\n\t      }\n\t    }\n\t  }\n\t  elm[\"s-hn\"] = hostTagName;\n\t  {\n\t    if (newVNode2.$flags$ & (2 | 1)) {\n\t      elm[\"s-sr\"] = true;\n\t      elm[\"s-cr\"] = contentRef;\n\t      elm[\"s-sn\"] = newVNode2.$name$ || \"\";\n\t      elm[\"s-rf\"] = (_d = newVNode2.$attrs$) == null ? void 0 : _d.ref;\n\t      oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];\n\t      if (oldVNode && oldVNode.$tag$ === newVNode2.$tag$ && oldParentVNode.$elm$) {\n\t        {\n\t          putBackInOriginalLocation(oldParentVNode.$elm$, false);\n\t        }\n\t      }\n\t    }\n\t  }\n\t  return elm;\n\t};\n\tvar putBackInOriginalLocation = (parentElm, recursive) => {\n\t  plt.$flags$ |= 1;\n\t  const oldSlotChildNodes = Array.from(parentElm.childNodes);\n\t  if (parentElm[\"s-sr\"] && BUILD.experimentalSlotFixes) ;\n\t  for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {\n\t    const childNode = oldSlotChildNodes[i2];\n\t    if (childNode[\"s-hn\"] !== hostTagName && childNode[\"s-ol\"]) {\n\t      parentReferenceNode(childNode).insertBefore(childNode, referenceNode(childNode));\n\t      childNode[\"s-ol\"].remove();\n\t      childNode[\"s-ol\"] = void 0;\n\t      childNode[\"s-sh\"] = void 0;\n\t      checkSlotRelocate = true;\n\t    }\n\t    if (recursive) {\n\t      putBackInOriginalLocation(childNode, recursive);\n\t    }\n\t  }\n\t  plt.$flags$ &= -2;\n\t};\n\tvar addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {\n\t  let containerElm = parentElm[\"s-cr\"] && parentElm[\"s-cr\"].parentNode || parentElm;\n\t  let childNode;\n\t  if (containerElm.shadowRoot && containerElm.tagName === hostTagName) {\n\t    containerElm = containerElm.shadowRoot;\n\t  }\n\t  for (; startIdx <= endIdx; ++startIdx) {\n\t    if (vnodes[startIdx]) {\n\t      childNode = createElm(null, parentVNode, startIdx, parentElm);\n\t      if (childNode) {\n\t        vnodes[startIdx].$elm$ = childNode;\n\t        containerElm.insertBefore(childNode, referenceNode(before));\n\t      }\n\t    }\n\t  }\n\t};\n\tvar removeVnodes = (vnodes, startIdx, endIdx) => {\n\t  for (let index = startIdx; index <= endIdx; ++index) {\n\t    const vnode = vnodes[index];\n\t    if (vnode) {\n\t      const elm = vnode.$elm$;\n\t      nullifyVNodeRefs(vnode);\n\t      if (elm) {\n\t        {\n\t          checkSlotFallbackVisibility = true;\n\t          if (elm[\"s-ol\"]) {\n\t            elm[\"s-ol\"].remove();\n\t          } else {\n\t            putBackInOriginalLocation(elm, true);\n\t          }\n\t        }\n\t        elm.remove();\n\t      }\n\t    }\n\t  }\n\t};\n\tvar updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = false) => {\n\t  let oldStartIdx = 0;\n\t  let newStartIdx = 0;\n\t  let idxInOld = 0;\n\t  let i2 = 0;\n\t  let oldEndIdx = oldCh.length - 1;\n\t  let oldStartVnode = oldCh[0];\n\t  let oldEndVnode = oldCh[oldEndIdx];\n\t  let newEndIdx = newCh.length - 1;\n\t  let newStartVnode = newCh[0];\n\t  let newEndVnode = newCh[newEndIdx];\n\t  let node;\n\t  let elmToMove;\n\t  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n\t    if (oldStartVnode == null) {\n\t      oldStartVnode = oldCh[++oldStartIdx];\n\t    } else if (oldEndVnode == null) {\n\t      oldEndVnode = oldCh[--oldEndIdx];\n\t    } else if (newStartVnode == null) {\n\t      newStartVnode = newCh[++newStartIdx];\n\t    } else if (newEndVnode == null) {\n\t      newEndVnode = newCh[--newEndIdx];\n\t    } else if (isSameVnode(oldStartVnode, newStartVnode, isInitialRender)) {\n\t      patch(oldStartVnode, newStartVnode, isInitialRender);\n\t      oldStartVnode = oldCh[++oldStartIdx];\n\t      newStartVnode = newCh[++newStartIdx];\n\t    } else if (isSameVnode(oldEndVnode, newEndVnode, isInitialRender)) {\n\t      patch(oldEndVnode, newEndVnode, isInitialRender);\n\t      oldEndVnode = oldCh[--oldEndIdx];\n\t      newEndVnode = newCh[--newEndIdx];\n\t    } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {\n\t      if (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\") {\n\t        putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);\n\t      }\n\t      patch(oldStartVnode, newEndVnode, isInitialRender);\n\t      parentElm.insertBefore(oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);\n\t      oldStartVnode = oldCh[++oldStartIdx];\n\t      newEndVnode = newCh[--newEndIdx];\n\t    } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {\n\t      if (oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\") {\n\t        putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);\n\t      }\n\t      patch(oldEndVnode, newStartVnode, isInitialRender);\n\t      parentElm.insertBefore(oldEndVnode.$elm$, oldStartVnode.$elm$);\n\t      oldEndVnode = oldCh[--oldEndIdx];\n\t      newStartVnode = newCh[++newStartIdx];\n\t    } else {\n\t      idxInOld = -1;\n\t      {\n\t        for (i2 = oldStartIdx; i2 <= oldEndIdx; ++i2) {\n\t          if (oldCh[i2] && oldCh[i2].$key$ !== null && oldCh[i2].$key$ === newStartVnode.$key$) {\n\t            idxInOld = i2;\n\t            break;\n\t          }\n\t        }\n\t      }\n\t      if (idxInOld >= 0) {\n\t        elmToMove = oldCh[idxInOld];\n\t        if (elmToMove.$tag$ !== newStartVnode.$tag$) {\n\t          node = createElm(oldCh && oldCh[newStartIdx], newVNode2, idxInOld, parentElm);\n\t        } else {\n\t          patch(elmToMove, newStartVnode, isInitialRender);\n\t          oldCh[idxInOld] = void 0;\n\t          node = elmToMove.$elm$;\n\t        }\n\t        newStartVnode = newCh[++newStartIdx];\n\t      } else {\n\t        node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx, parentElm);\n\t        newStartVnode = newCh[++newStartIdx];\n\t      }\n\t      if (node) {\n\t        {\n\t          parentReferenceNode(oldStartVnode.$elm$).insertBefore(node, referenceNode(oldStartVnode.$elm$));\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if (oldStartIdx > oldEndIdx) {\n\t    addVnodes(\n\t      parentElm,\n\t      newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$,\n\t      newVNode2,\n\t      newCh,\n\t      newStartIdx,\n\t      newEndIdx\n\t    );\n\t  } else if (newStartIdx > newEndIdx) {\n\t    removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n\t  }\n\t};\n\tvar isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {\n\t  if (leftVNode.$tag$ === rightVNode.$tag$) {\n\t    if (leftVNode.$tag$ === \"slot\") {\n\t      return leftVNode.$name$ === rightVNode.$name$;\n\t    }\n\t    if (!isInitialRender) {\n\t      return leftVNode.$key$ === rightVNode.$key$;\n\t    }\n\t    return true;\n\t  }\n\t  return false;\n\t};\n\tvar referenceNode = (node) => {\n\t  return node && node[\"s-ol\"] || node;\n\t};\n\tvar parentReferenceNode = (node) => (node[\"s-ol\"] ? node[\"s-ol\"] : node).parentNode;\n\tvar patch = (oldVNode, newVNode2, isInitialRender = false) => {\n\t  const elm = newVNode2.$elm$ = oldVNode.$elm$;\n\t  const oldChildren = oldVNode.$children$;\n\t  const newChildren = newVNode2.$children$;\n\t  const tag = newVNode2.$tag$;\n\t  const text = newVNode2.$text$;\n\t  let defaultHolder;\n\t  if (text === null) {\n\t    {\n\t      isSvgMode = tag === \"svg\" ? true : tag === \"foreignObject\" ? false : isSvgMode;\n\t    }\n\t    {\n\t      if (tag === \"slot\" && !useNativeShadowDom) ;\n\t      else {\n\t        updateElement(oldVNode, newVNode2, isSvgMode);\n\t      }\n\t    }\n\t    if (oldChildren !== null && newChildren !== null) {\n\t      updateChildren(elm, oldChildren, newVNode2, newChildren, isInitialRender);\n\t    } else if (newChildren !== null) {\n\t      if (oldVNode.$text$ !== null) {\n\t        elm.textContent = \"\";\n\t      }\n\t      addVnodes(elm, null, newVNode2, newChildren, 0, newChildren.length - 1);\n\t    } else if (oldChildren !== null) {\n\t      removeVnodes(oldChildren, 0, oldChildren.length - 1);\n\t    }\n\t    if (isSvgMode && tag === \"svg\") {\n\t      isSvgMode = false;\n\t    }\n\t  } else if (defaultHolder = elm[\"s-cr\"]) {\n\t    defaultHolder.parentNode.textContent = text;\n\t  } else if (oldVNode.$text$ !== text) {\n\t    elm.data = text;\n\t  }\n\t};\n\tvar updateFallbackSlotVisibility = (elm) => {\n\t  const childNodes = elm.childNodes;\n\t  for (const childNode of childNodes) {\n\t    if (childNode.nodeType === 1) {\n\t      if (childNode[\"s-sr\"]) {\n\t        const slotName = childNode[\"s-sn\"];\n\t        childNode.hidden = false;\n\t        for (const siblingNode of childNodes) {\n\t          if (siblingNode !== childNode) {\n\t            if (siblingNode[\"s-hn\"] !== childNode[\"s-hn\"] || slotName !== \"\") {\n\t              if (siblingNode.nodeType === 1 && (slotName === siblingNode.getAttribute(\"slot\") || slotName === siblingNode[\"s-sn\"]) || siblingNode.nodeType === 3 && slotName === siblingNode[\"s-sn\"]) {\n\t                childNode.hidden = true;\n\t                break;\n\t              }\n\t            } else {\n\t              if (siblingNode.nodeType === 1 || siblingNode.nodeType === 3 && siblingNode.textContent.trim() !== \"\") {\n\t                childNode.hidden = true;\n\t                break;\n\t              }\n\t            }\n\t          }\n\t        }\n\t      }\n\t      updateFallbackSlotVisibility(childNode);\n\t    }\n\t  }\n\t};\n\tvar relocateNodes = [];\n\tvar markSlotContentForRelocation = (elm) => {\n\t  let node;\n\t  let hostContentNodes;\n\t  let j;\n\t  for (const childNode of elm.childNodes) {\n\t    if (childNode[\"s-sr\"] && (node = childNode[\"s-cr\"]) && node.parentNode) {\n\t      hostContentNodes = node.parentNode.childNodes;\n\t      const slotName = childNode[\"s-sn\"];\n\t      for (j = hostContentNodes.length - 1; j >= 0; j--) {\n\t        node = hostContentNodes[j];\n\t        if (!node[\"s-cn\"] && !node[\"s-nr\"] && node[\"s-hn\"] !== childNode[\"s-hn\"] && true) {\n\t          if (isNodeLocatedInSlot(node, slotName)) {\n\t            let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n\t            checkSlotFallbackVisibility = true;\n\t            node[\"s-sn\"] = node[\"s-sn\"] || slotName;\n\t            if (relocateNodeData) {\n\t              relocateNodeData.$nodeToRelocate$[\"s-sh\"] = childNode[\"s-hn\"];\n\t              relocateNodeData.$slotRefNode$ = childNode;\n\t            } else {\n\t              node[\"s-sh\"] = childNode[\"s-hn\"];\n\t              relocateNodes.push({\n\t                $slotRefNode$: childNode,\n\t                $nodeToRelocate$: node\n\t              });\n\t            }\n\t            if (node[\"s-sr\"]) {\n\t              relocateNodes.map((relocateNode) => {\n\t                if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node[\"s-sn\"])) {\n\t                  relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n\t                  if (relocateNodeData && !relocateNode.$slotRefNode$) {\n\t                    relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;\n\t                  }\n\t                }\n\t              });\n\t            }\n\t          } else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {\n\t            relocateNodes.push({\n\t              $nodeToRelocate$: node\n\t            });\n\t          }\n\t        }\n\t      }\n\t    }\n\t    if (childNode.nodeType === 1) {\n\t      markSlotContentForRelocation(childNode);\n\t    }\n\t  }\n\t};\n\tvar isNodeLocatedInSlot = (nodeToRelocate, slotName) => {\n\t  if (nodeToRelocate.nodeType === 1) {\n\t    if (nodeToRelocate.getAttribute(\"slot\") === null && slotName === \"\") {\n\t      return true;\n\t    }\n\t    if (nodeToRelocate.getAttribute(\"slot\") === slotName) {\n\t      return true;\n\t    }\n\t    return false;\n\t  }\n\t  if (nodeToRelocate[\"s-sn\"] === slotName) {\n\t    return true;\n\t  }\n\t  return slotName === \"\";\n\t};\n\tvar nullifyVNodeRefs = (vNode) => {\n\t  {\n\t    vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);\n\t    vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);\n\t  }\n\t};\n\tvar renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {\n\t  var _a, _b, _c, _d;\n\t  const hostElm = hostRef.$hostElement$;\n\t  const cmpMeta = hostRef.$cmpMeta$;\n\t  const oldVNode = hostRef.$vnode$ || newVNode(null, null);\n\t  const rootVnode = isHost(renderFnResults) ? renderFnResults : h(null, null, renderFnResults);\n\t  hostTagName = hostElm.tagName;\n\t  if (cmpMeta.$attrsToReflect$) {\n\t    rootVnode.$attrs$ = rootVnode.$attrs$ || {};\n\t    cmpMeta.$attrsToReflect$.map(\n\t      ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]\n\t    );\n\t  }\n\t  if (isInitialLoad && rootVnode.$attrs$) {\n\t    for (const key of Object.keys(rootVnode.$attrs$)) {\n\t      if (hostElm.hasAttribute(key) && ![\"key\", \"ref\", \"style\", \"class\"].includes(key)) {\n\t        rootVnode.$attrs$[key] = hostElm[key];\n\t      }\n\t    }\n\t  }\n\t  rootVnode.$tag$ = null;\n\t  rootVnode.$flags$ |= 4;\n\t  hostRef.$vnode$ = rootVnode;\n\t  rootVnode.$elm$ = oldVNode.$elm$ = hostElm.shadowRoot || hostElm;\n\t  {\n\t    scopeId = hostElm[\"s-sc\"];\n\t  }\n\t  useNativeShadowDom = (cmpMeta.$flags$ & 1) !== 0;\n\t  {\n\t    contentRef = hostElm[\"s-cr\"];\n\t    checkSlotFallbackVisibility = false;\n\t  }\n\t  patch(oldVNode, rootVnode, isInitialLoad);\n\t  {\n\t    plt.$flags$ |= 1;\n\t    if (checkSlotRelocate) {\n\t      markSlotContentForRelocation(rootVnode.$elm$);\n\t      for (const relocateData of relocateNodes) {\n\t        const nodeToRelocate = relocateData.$nodeToRelocate$;\n\t        if (!nodeToRelocate[\"s-ol\"]) {\n\t          const orgLocationNode = doc.createTextNode(\"\");\n\t          orgLocationNode[\"s-nr\"] = nodeToRelocate;\n\t          nodeToRelocate.parentNode.insertBefore(nodeToRelocate[\"s-ol\"] = orgLocationNode, nodeToRelocate);\n\t        }\n\t      }\n\t      for (const relocateData of relocateNodes) {\n\t        const nodeToRelocate = relocateData.$nodeToRelocate$;\n\t        const slotRefNode = relocateData.$slotRefNode$;\n\t        if (slotRefNode) {\n\t          const parentNodeRef = slotRefNode.parentNode;\n\t          let insertBeforeNode = slotRefNode.nextSibling;\n\t          {\n\t            let orgLocationNode = (_a = nodeToRelocate[\"s-ol\"]) == null ? void 0 : _a.previousSibling;\n\t            while (orgLocationNode) {\n\t              let refNode = (_b = orgLocationNode[\"s-nr\"]) != null ? _b : null;\n\t              if (refNode && refNode[\"s-sn\"] === nodeToRelocate[\"s-sn\"] && parentNodeRef === refNode.parentNode) {\n\t                refNode = refNode.nextSibling;\n\t                while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode[\"s-sr\"])) {\n\t                  refNode = refNode == null ? void 0 : refNode.nextSibling;\n\t                }\n\t                if (!refNode || !refNode[\"s-nr\"]) {\n\t                  insertBeforeNode = refNode;\n\t                  break;\n\t                }\n\t              }\n\t              orgLocationNode = orgLocationNode.previousSibling;\n\t            }\n\t          }\n\t          if (!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode || nodeToRelocate.nextSibling !== insertBeforeNode) {\n\t            if (nodeToRelocate !== insertBeforeNode) {\n\t              if (!nodeToRelocate[\"s-hn\"] && nodeToRelocate[\"s-ol\"]) {\n\t                nodeToRelocate[\"s-hn\"] = nodeToRelocate[\"s-ol\"].parentNode.nodeName;\n\t              }\n\t              parentNodeRef.insertBefore(nodeToRelocate, insertBeforeNode);\n\t              if (nodeToRelocate.nodeType === 1) {\n\t                nodeToRelocate.hidden = (_c = nodeToRelocate[\"s-ih\"]) != null ? _c : false;\n\t              }\n\t            }\n\t          }\n\t          nodeToRelocate && typeof slotRefNode[\"s-rf\"] === \"function\" && slotRefNode[\"s-rf\"](nodeToRelocate);\n\t        } else {\n\t          if (nodeToRelocate.nodeType === 1) {\n\t            if (isInitialLoad) {\n\t              nodeToRelocate[\"s-ih\"] = (_d = nodeToRelocate.hidden) != null ? _d : false;\n\t            }\n\t            nodeToRelocate.hidden = true;\n\t          }\n\t        }\n\t      }\n\t    }\n\t    if (checkSlotFallbackVisibility) {\n\t      updateFallbackSlotVisibility(rootVnode.$elm$);\n\t    }\n\t    plt.$flags$ &= -2;\n\t    relocateNodes.length = 0;\n\t  }\n\t  contentRef = void 0;\n\t};\n\tvar attachToAncestor = (hostRef, ancestorComponent) => {\n\t  if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent[\"s-p\"]) {\n\t    ancestorComponent[\"s-p\"].push(new Promise((r) => hostRef.$onRenderResolve$ = r));\n\t  }\n\t};\n\tvar scheduleUpdate = (hostRef, isInitialLoad) => {\n\t  {\n\t    hostRef.$flags$ |= 16;\n\t  }\n\t  if (hostRef.$flags$ & 4) {\n\t    hostRef.$flags$ |= 512;\n\t    return;\n\t  }\n\t  attachToAncestor(hostRef, hostRef.$ancestorComponent$);\n\t  const dispatch = () => dispatchHooks(hostRef, isInitialLoad);\n\t  return writeTask(dispatch);\n\t};\n\tvar dispatchHooks = (hostRef, isInitialLoad) => {\n\t  const elm = hostRef.$hostElement$;\n\t  const endSchedule = createTime(\"scheduleUpdate\", hostRef.$cmpMeta$.$tagName$);\n\t  const instance = hostRef.$lazyInstance$;\n\t  let maybePromise;\n\t  if (isInitialLoad) {\n\t    {\n\t      hostRef.$flags$ |= 256;\n\t      if (hostRef.$queuedListeners$) {\n\t        hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));\n\t        hostRef.$queuedListeners$ = void 0;\n\t      }\n\t    }\n\t    emitLifecycleEvent(elm, \"componentWillLoad\");\n\t    {\n\t      maybePromise = safeCall(instance, \"componentWillLoad\");\n\t    }\n\t  } else {\n\t    emitLifecycleEvent(elm, \"componentWillUpdate\");\n\t    {\n\t      maybePromise = safeCall(instance, \"componentWillUpdate\");\n\t    }\n\t  }\n\t  emitLifecycleEvent(elm, \"componentWillRender\");\n\t  {\n\t    maybePromise = enqueue(maybePromise, () => safeCall(instance, \"componentWillRender\"));\n\t  }\n\t  endSchedule();\n\t  return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));\n\t};\n\tvar enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn) : fn();\n\tvar isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === \"function\";\n\tvar updateComponent = async (hostRef, instance, isInitialLoad) => {\n\t  var _a;\n\t  const elm = hostRef.$hostElement$;\n\t  const endUpdate = createTime(\"update\", hostRef.$cmpMeta$.$tagName$);\n\t  const rc = elm[\"s-rc\"];\n\t  if (isInitialLoad) {\n\t    attachStyles(hostRef);\n\t  }\n\t  const endRender = createTime(\"render\", hostRef.$cmpMeta$.$tagName$);\n\t  {\n\t    callRender(hostRef, instance, elm, isInitialLoad);\n\t  }\n\t  if (rc) {\n\t    rc.map((cb) => cb());\n\t    elm[\"s-rc\"] = void 0;\n\t  }\n\t  endRender();\n\t  endUpdate();\n\t  {\n\t    const childrenPromises = (_a = elm[\"s-p\"]) != null ? _a : [];\n\t    const postUpdate = () => postUpdateComponent(hostRef);\n\t    if (childrenPromises.length === 0) {\n\t      postUpdate();\n\t    } else {\n\t      Promise.all(childrenPromises).then(postUpdate);\n\t      hostRef.$flags$ |= 4;\n\t      childrenPromises.length = 0;\n\t    }\n\t  }\n\t};\n\tvar callRender = (hostRef, instance, elm, isInitialLoad) => {\n\t  try {\n\t    instance = instance.render();\n\t    {\n\t      hostRef.$flags$ &= ~16;\n\t    }\n\t    {\n\t      hostRef.$flags$ |= 2;\n\t    }\n\t    {\n\t      {\n\t        {\n\t          renderVdom(hostRef, instance, isInitialLoad);\n\t        }\n\t      }\n\t    }\n\t  } catch (e) {\n\t    consoleError(e, hostRef.$hostElement$);\n\t  }\n\t  return null;\n\t};\n\tvar postUpdateComponent = (hostRef) => {\n\t  const tagName = hostRef.$cmpMeta$.$tagName$;\n\t  const elm = hostRef.$hostElement$;\n\t  const endPostUpdate = createTime(\"postUpdate\", tagName);\n\t  const instance = hostRef.$lazyInstance$;\n\t  const ancestorComponent = hostRef.$ancestorComponent$;\n\t  {\n\t    safeCall(instance, \"componentDidRender\");\n\t  }\n\t  emitLifecycleEvent(elm, \"componentDidRender\");\n\t  if (!(hostRef.$flags$ & 64)) {\n\t    hostRef.$flags$ |= 64;\n\t    {\n\t      addHydratedFlag(elm);\n\t    }\n\t    {\n\t      safeCall(instance, \"componentDidLoad\");\n\t    }\n\t    emitLifecycleEvent(elm, \"componentDidLoad\");\n\t    endPostUpdate();\n\t    {\n\t      hostRef.$onReadyResolve$(elm);\n\t      if (!ancestorComponent) {\n\t        appDidLoad();\n\t      }\n\t    }\n\t  } else {\n\t    {\n\t      safeCall(instance, \"componentDidUpdate\");\n\t    }\n\t    emitLifecycleEvent(elm, \"componentDidUpdate\");\n\t    endPostUpdate();\n\t  }\n\t  {\n\t    hostRef.$onInstanceResolve$(elm);\n\t  }\n\t  {\n\t    if (hostRef.$onRenderResolve$) {\n\t      hostRef.$onRenderResolve$();\n\t      hostRef.$onRenderResolve$ = void 0;\n\t    }\n\t    if (hostRef.$flags$ & 512) {\n\t      nextTick(() => scheduleUpdate(hostRef, false));\n\t    }\n\t    hostRef.$flags$ &= -517;\n\t  }\n\t};\n\tvar appDidLoad = (who) => {\n\t  {\n\t    addHydratedFlag(doc.documentElement);\n\t  }\n\t  nextTick(() => emitEvent(win, \"appload\", { detail: { namespace: NAMESPACE } }));\n\t};\n\tvar safeCall = (instance, method, arg) => {\n\t  if (instance && instance[method]) {\n\t    try {\n\t      return instance[method](arg);\n\t    } catch (e) {\n\t      consoleError(e);\n\t    }\n\t  }\n\t  return void 0;\n\t};\n\tvar emitLifecycleEvent = (elm, lifecycleName) => {\n\t  {\n\t    emitEvent(elm, \"stencil_\" + lifecycleName, {\n\t      bubbles: true,\n\t      composed: true,\n\t      detail: {\n\t        namespace: NAMESPACE\n\t      }\n\t    });\n\t  }\n\t};\n\tvar addHydratedFlag = (elm) => elm.setAttribute(\"hydrated\", \"\");\n\tvar getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);\n\tvar setValue = (ref, propName, newVal, cmpMeta) => {\n\t  const hostRef = getHostRef(ref);\n\t  const elm = hostRef.$hostElement$;\n\t  const oldVal = hostRef.$instanceValues$.get(propName);\n\t  const flags = hostRef.$flags$;\n\t  const instance = hostRef.$lazyInstance$;\n\t  newVal = parsePropertyValue(newVal, cmpMeta.$members$[propName][0]);\n\t  const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);\n\t  const didValueChange = newVal !== oldVal && !areBothNaN;\n\t  if ((!(flags & 8) || oldVal === void 0) && didValueChange) {\n\t    hostRef.$instanceValues$.set(propName, newVal);\n\t    if (instance) {\n\t      if (cmpMeta.$watchers$ && flags & 128) {\n\t        const watchMethods = cmpMeta.$watchers$[propName];\n\t        if (watchMethods) {\n\t          watchMethods.map((watchMethodName) => {\n\t            try {\n\t              instance[watchMethodName](newVal, oldVal, propName);\n\t            } catch (e) {\n\t              consoleError(e, elm);\n\t            }\n\t          });\n\t        }\n\t      }\n\t      if ((flags & (2 | 16)) === 2) {\n\t        scheduleUpdate(hostRef, false);\n\t      }\n\t    }\n\t  }\n\t};\n\tvar proxyComponent = (Cstr, cmpMeta, flags) => {\n\t  var _a;\n\t  const prototype = Cstr.prototype;\n\t  if (cmpMeta.$flags$ & 64 && flags & 1) {\n\t    FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS.forEach(\n\t      (cbName) => Object.defineProperty(prototype, cbName, {\n\t        value(...args) {\n\t          const hostRef = getHostRef(this);\n\t          const instance = hostRef.$lazyInstance$;\n\t          if (!instance) {\n\t            hostRef.$onReadyPromise$.then((instance2) => {\n\t              const cb = instance2[cbName];\n\t              typeof cb === \"function\" && cb.call(instance2, ...args);\n\t            });\n\t          } else {\n\t            const cb = instance[cbName];\n\t            typeof cb === \"function\" && cb.call(instance, ...args);\n\t          }\n\t        }\n\t      })\n\t    );\n\t  }\n\t  if (cmpMeta.$members$) {\n\t    if (Cstr.watchers) {\n\t      cmpMeta.$watchers$ = Cstr.watchers;\n\t    }\n\t    const members = Object.entries(cmpMeta.$members$);\n\t    members.map(([memberName, [memberFlags]]) => {\n\t      if (memberFlags & 31 || flags & 2 && memberFlags & 32) {\n\t        Object.defineProperty(prototype, memberName, {\n\t          get() {\n\t            return getValue(this, memberName);\n\t          },\n\t          set(newValue) {\n\t            setValue(this, memberName, newValue, cmpMeta);\n\t          },\n\t          configurable: true,\n\t          enumerable: true\n\t        });\n\t      } else if (flags & 1 && memberFlags & 64) {\n\t        Object.defineProperty(prototype, memberName, {\n\t          value(...args) {\n\t            var _a2;\n\t            const ref = getHostRef(this);\n\t            return (_a2 = ref == null ? void 0 : ref.$onInstancePromise$) == null ? void 0 : _a2.then(() => {\n\t              var _a3;\n\t              return (_a3 = ref.$lazyInstance$) == null ? void 0 : _a3[memberName](...args);\n\t            });\n\t          }\n\t        });\n\t      }\n\t    });\n\t    if (flags & 1) {\n\t      const attrNameToPropName = /* @__PURE__ */ new Map();\n\t      prototype.attributeChangedCallback = function(attrName, oldValue, newValue) {\n\t        plt.jmp(() => {\n\t          var _a2;\n\t          const propName = attrNameToPropName.get(attrName);\n\t          if (this.hasOwnProperty(propName)) {\n\t            newValue = this[propName];\n\t            delete this[propName];\n\t          } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === \"number\" && this[propName] == newValue) {\n\t            return;\n\t          } else if (propName == null) {\n\t            const hostRef = getHostRef(this);\n\t            const flags2 = hostRef == null ? void 0 : hostRef.$flags$;\n\t            if (flags2 && !(flags2 & 8) && flags2 & 128 && newValue !== oldValue) {\n\t              const instance = hostRef.$lazyInstance$;\n\t              const entry = (_a2 = cmpMeta.$watchers$) == null ? void 0 : _a2[attrName];\n\t              entry == null ? void 0 : entry.forEach((callbackName) => {\n\t                if (instance[callbackName] != null) {\n\t                  instance[callbackName].call(instance, newValue, oldValue, attrName);\n\t                }\n\t              });\n\t            }\n\t            return;\n\t          }\n\t          this[propName] = newValue === null && typeof this[propName] === \"boolean\" ? false : newValue;\n\t        });\n\t      };\n\t      Cstr.observedAttributes = Array.from(\n\t        /* @__PURE__ */ new Set([\n\t          ...Object.keys((_a = cmpMeta.$watchers$) != null ? _a : {}),\n\t          ...members.filter(\n\t            ([_, m]) => m[0] & 15\n\t            /* HasAttribute */\n\t          ).map(([propName, m]) => {\n\t            var _a2;\n\t            const attrName = m[1] || propName;\n\t            attrNameToPropName.set(attrName, propName);\n\t            if (m[0] & 512) {\n\t              (_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);\n\t            }\n\t            return attrName;\n\t          })\n\t        ])\n\t      );\n\t    }\n\t  }\n\t  return Cstr;\n\t};\n\tvar initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {\n\t  let Cstr;\n\t  if ((hostRef.$flags$ & 32) === 0) {\n\t    hostRef.$flags$ |= 32;\n\t    const bundleId = cmpMeta.$lazyBundleId$;\n\t    if (bundleId) {\n\t      Cstr = loadModule(cmpMeta);\n\t      if (Cstr.then) {\n\t        const endLoad = uniqueTime();\n\t        Cstr = await Cstr;\n\t        endLoad();\n\t      }\n\t      if (!Cstr.isProxied) {\n\t        {\n\t          cmpMeta.$watchers$ = Cstr.watchers;\n\t        }\n\t        proxyComponent(\n\t          Cstr,\n\t          cmpMeta,\n\t          2\n\t          /* proxyState */\n\t        );\n\t        Cstr.isProxied = true;\n\t      }\n\t      const endNewInstance = createTime(\"createInstance\", cmpMeta.$tagName$);\n\t      {\n\t        hostRef.$flags$ |= 8;\n\t      }\n\t      try {\n\t        new Cstr(hostRef);\n\t      } catch (e) {\n\t        consoleError(e);\n\t      }\n\t      {\n\t        hostRef.$flags$ &= -9;\n\t      }\n\t      {\n\t        hostRef.$flags$ |= 128;\n\t      }\n\t      endNewInstance();\n\t      fireConnectedCallback(hostRef.$lazyInstance$);\n\t    } else {\n\t      Cstr = elm.constructor;\n\t      customElements.whenDefined(cmpMeta.$tagName$).then(\n\t        () => hostRef.$flags$ |= 128\n\t        /* isWatchReady */\n\t      );\n\t    }\n\t    if (Cstr.style) {\n\t      let style = Cstr.style;\n\t      const scopeId2 = getScopeId(cmpMeta);\n\t      if (!styles.has(scopeId2)) {\n\t        const endRegisterStyles = createTime(\"registerStyles\", cmpMeta.$tagName$);\n\t        registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1));\n\t        endRegisterStyles();\n\t      }\n\t    }\n\t  }\n\t  const ancestorComponent = hostRef.$ancestorComponent$;\n\t  const schedule = () => scheduleUpdate(hostRef, true);\n\t  if (ancestorComponent && ancestorComponent[\"s-rc\"]) {\n\t    ancestorComponent[\"s-rc\"].push(schedule);\n\t  } else {\n\t    schedule();\n\t  }\n\t};\n\tvar fireConnectedCallback = (instance) => {\n\t  {\n\t    safeCall(instance, \"connectedCallback\");\n\t  }\n\t};\n\tvar connectedCallback = (elm) => {\n\t  if ((plt.$flags$ & 1) === 0) {\n\t    const hostRef = getHostRef(elm);\n\t    const cmpMeta = hostRef.$cmpMeta$;\n\t    const endConnected = createTime(\"connectedCallback\", cmpMeta.$tagName$);\n\t    if (!(hostRef.$flags$ & 1)) {\n\t      hostRef.$flags$ |= 1;\n\t      let hostId;\n\t      {\n\t        hostId = elm.getAttribute(HYDRATE_ID);\n\t        if (hostId) {\n\t          if (cmpMeta.$flags$ & 1) {\n\t            const scopeId2 = addStyle(elm.shadowRoot, cmpMeta);\n\t            elm.classList.remove(scopeId2 + \"-h\", scopeId2 + \"-s\");\n\t          }\n\t          initializeClientHydrate(elm, cmpMeta.$tagName$, hostId, hostRef);\n\t        }\n\t      }\n\t      if (!hostId) {\n\t        if (\n\t          // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n\t          cmpMeta.$flags$ & (4 | 8)\n\t        ) {\n\t          setContentReference(elm);\n\t        }\n\t      }\n\t      {\n\t        let ancestorComponent = elm;\n\t        while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n\t          if (ancestorComponent.nodeType === 1 && ancestorComponent.hasAttribute(\"s-id\") && ancestorComponent[\"s-p\"] || ancestorComponent[\"s-p\"]) {\n\t            attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n\t            break;\n\t          }\n\t        }\n\t      }\n\t      if (cmpMeta.$members$) {\n\t        Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n\t          if (memberFlags & 31 && elm.hasOwnProperty(memberName)) {\n\t            const value = elm[memberName];\n\t            delete elm[memberName];\n\t            elm[memberName] = value;\n\t          }\n\t        });\n\t      }\n\t      {\n\t        initializeComponent(elm, hostRef, cmpMeta);\n\t      }\n\t    } else {\n\t      addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);\n\t      if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n\t        fireConnectedCallback(hostRef.$lazyInstance$);\n\t      } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n\t        hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$));\n\t      }\n\t    }\n\t    endConnected();\n\t  }\n\t};\n\tvar setContentReference = (elm) => {\n\t  const contentRefElm = elm[\"s-cr\"] = doc.createComment(\n\t    \"\"\n\t  );\n\t  contentRefElm[\"s-cn\"] = true;\n\t  elm.insertBefore(contentRefElm, elm.firstChild);\n\t};\n\tvar disconnectInstance = (instance) => {\n\t  {\n\t    safeCall(instance, \"disconnectedCallback\");\n\t  }\n\t};\n\tvar disconnectedCallback = async (elm) => {\n\t  if ((plt.$flags$ & 1) === 0) {\n\t    const hostRef = getHostRef(elm);\n\t    {\n\t      if (hostRef.$rmListeners$) {\n\t        hostRef.$rmListeners$.map((rmListener) => rmListener());\n\t        hostRef.$rmListeners$ = void 0;\n\t      }\n\t    }\n\t    if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n\t      disconnectInstance(hostRef.$lazyInstance$);\n\t    } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n\t      hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$));\n\t    }\n\t  }\n\t};\n\tvar bootstrapLazy = (lazyBundles, options = {}) => {\n\t  var _a;\n\t  const endBootstrap = createTime();\n\t  const cmpTags = [];\n\t  const exclude = options.exclude || [];\n\t  const customElements2 = win.customElements;\n\t  const head = doc.head;\n\t  const metaCharset = /* @__PURE__ */ head.querySelector(\"meta[charset]\");\n\t  const dataStyles = /* @__PURE__ */ doc.createElement(\"style\");\n\t  const deferredConnectedCallbacks = [];\n\t  const styles2 = /* @__PURE__ */ doc.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);\n\t  let appLoadFallback;\n\t  let isBootstrapping = true;\n\t  let i2 = 0;\n\t  Object.assign(plt, options);\n\t  plt.$resourcesUrl$ = new URL(options.resourcesUrl || \"./\", doc.baseURI).href;\n\t  {\n\t    plt.$flags$ |= 2;\n\t  }\n\t  {\n\t    for (; i2 < styles2.length; i2++) {\n\t      registerStyle(styles2[i2].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles2[i2].innerHTML), true);\n\t    }\n\t  }\n\t  let hasSlotRelocation = false;\n\t  lazyBundles.map((lazyBundle) => {\n\t    lazyBundle[1].map((compactMeta) => {\n\t      var _a2;\n\t      const cmpMeta = {\n\t        $flags$: compactMeta[0],\n\t        $tagName$: compactMeta[1],\n\t        $members$: compactMeta[2],\n\t        $listeners$: compactMeta[3]\n\t      };\n\t      if (cmpMeta.$flags$ & 4) {\n\t        hasSlotRelocation = true;\n\t      }\n\t      {\n\t        cmpMeta.$members$ = compactMeta[2];\n\t      }\n\t      {\n\t        cmpMeta.$listeners$ = compactMeta[3];\n\t      }\n\t      {\n\t        cmpMeta.$attrsToReflect$ = [];\n\t      }\n\t      {\n\t        cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};\n\t      }\n\t      const tagName = options.transformTagName ? options.transformTagName(cmpMeta.$tagName$) : cmpMeta.$tagName$;\n\t      const HostElement = class extends HTMLElement {\n\t        // StencilLazyHost\n\t        constructor(self) {\n\t          super(self);\n\t          self = this;\n\t          registerHost(self, cmpMeta);\n\t          if (cmpMeta.$flags$ & 1) {\n\t            {\n\t              {\n\t                self.attachShadow({\n\t                  mode: \"open\",\n\t                  delegatesFocus: !!(cmpMeta.$flags$ & 16)\n\t                });\n\t              }\n\t            }\n\t          }\n\t        }\n\t        connectedCallback() {\n\t          if (appLoadFallback) {\n\t            clearTimeout(appLoadFallback);\n\t            appLoadFallback = null;\n\t          }\n\t          if (isBootstrapping) {\n\t            deferredConnectedCallbacks.push(this);\n\t          } else {\n\t            plt.jmp(() => connectedCallback(this));\n\t          }\n\t        }\n\t        disconnectedCallback() {\n\t          plt.jmp(() => disconnectedCallback(this));\n\t        }\n\t        componentOnReady() {\n\t          return getHostRef(this).$onReadyPromise$;\n\t        }\n\t      };\n\t      if (cmpMeta.$flags$ & 64) {\n\t        HostElement.formAssociated = true;\n\t      }\n\t      cmpMeta.$lazyBundleId$ = lazyBundle[0];\n\t      if (!exclude.includes(tagName) && !customElements2.get(tagName)) {\n\t        cmpTags.push(tagName);\n\t        customElements2.define(\n\t          tagName,\n\t          proxyComponent(\n\t            HostElement,\n\t            cmpMeta,\n\t            1\n\t            /* isElementConstructor */\n\t          )\n\t        );\n\t      }\n\t    });\n\t  });\n\t  if (cmpTags.length > 0) {\n\t    if (hasSlotRelocation) {\n\t      dataStyles.textContent += SLOT_FB_CSS;\n\t    }\n\t    {\n\t      dataStyles.textContent += cmpTags + HYDRATED_CSS;\n\t    }\n\t    if (dataStyles.innerHTML.length) {\n\t      dataStyles.setAttribute(\"data-styles\", \"\");\n\t      const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n\t      if (nonce != null) {\n\t        dataStyles.setAttribute(\"nonce\", nonce);\n\t      }\n\t      head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);\n\t    }\n\t  }\n\t  isBootstrapping = false;\n\t  if (deferredConnectedCallbacks.length) {\n\t    deferredConnectedCallbacks.map((host) => host.connectedCallback());\n\t  } else {\n\t    {\n\t      plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n\t    }\n\t  }\n\t  endBootstrap();\n\t};\n\tvar Fragment = (_, children) => children;\n\tvar addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {\n\t  if (listeners) {\n\t    listeners.map(([flags, name, method]) => {\n\t      const target = getHostListenerTarget(elm, flags);\n\t      const handler = hostListenerProxy(hostRef, method);\n\t      const opts = hostListenerOpts(flags);\n\t      plt.ael(target, name, handler, opts);\n\t      (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));\n\t    });\n\t  }\n\t};\n\tvar hostListenerProxy = (hostRef, methodName) => (ev) => {\n\t  try {\n\t    {\n\t      if (hostRef.$flags$ & 256) {\n\t        hostRef.$lazyInstance$[methodName](ev);\n\t      } else {\n\t        (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);\n\t      }\n\t    }\n\t  } catch (e) {\n\t    consoleError(e);\n\t  }\n\t};\n\tvar getHostListenerTarget = (elm, flags) => {\n\t  if (flags & 8)\n\t    return win;\n\t  return elm;\n\t};\n\tvar hostListenerOpts = (flags) => supportsListenerOptions ? {\n\t  passive: (flags & 1) !== 0,\n\t  capture: (flags & 2) !== 0\n\t} : (flags & 2) !== 0;\n\tvar setNonce = (nonce) => plt.$nonce$ = nonce;\n\tvar hostRefs = /* @__PURE__ */ new WeakMap();\n\tvar getHostRef = (ref) => hostRefs.get(ref);\n\tvar registerInstance = (lazyInstance, hostRef) => hostRefs.set(hostRef.$lazyInstance$ = lazyInstance, hostRef);\n\tvar registerHost = (hostElement, cmpMeta) => {\n\t  const hostRef = {\n\t    $flags$: 0,\n\t    $hostElement$: hostElement,\n\t    $cmpMeta$: cmpMeta,\n\t    $instanceValues$: /* @__PURE__ */ new Map()\n\t  };\n\t  {\n\t    hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);\n\t  }\n\t  {\n\t    hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);\n\t    hostElement[\"s-p\"] = [];\n\t    hostElement[\"s-rc\"] = [];\n\t  }\n\t  addHostEventListeners(hostElement, hostRef, cmpMeta.$listeners$);\n\t  return hostRefs.set(hostElement, hostRef);\n\t};\n\tvar isMemberInElement = (elm, memberName) => memberName in elm;\n\tvar consoleError = (e, el) => (0, console.error)(e, el);\n\tvar cmpModules = /* @__PURE__ */ new Map();\n\tvar loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n\t  const exportName = cmpMeta.$tagName$.replace(/-/g, \"_\");\n\t  const bundleId = cmpMeta.$lazyBundleId$;\n\t  const module = cmpModules.get(bundleId);\n\t  if (module) {\n\t    return module[exportName];\n\t  }\n\t  {\n\t    const processMod = (importedModule) => {\n\t      cmpModules.set(bundleId, importedModule);\n\t      return importedModule[exportName];\n\t    };\n\t    switch (bundleId) {\n\t      case \"market-accessory.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketAccessory_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-accordion-item.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketAccordionItem_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-action-card.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketActionCard_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-activity-indicator.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketActivityIndicator_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-activity-indicator-bar.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketActivityIndicatorBar_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-banner.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketBanner_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-blade.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketBlade_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-button.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketButton_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-button-dropdown.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketButtonDropdown_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-button-group.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketButtonGroup_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-checkbox.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketCheckbox_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-choice-button.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketChoiceButton_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-code-display.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketCodeDisplay_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-code-input.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketCodeInput_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-color-picker.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketColorPicker_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-color-picker-gradient.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketColorPickerGradient_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-color-picker-input.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketColorPickerInput_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-color-swatch-list.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketColorSwatchList_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-content-card.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketContentCard_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-context.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketContext_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-context-manager.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketContextManager_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-date-picker.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDatePicker_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-date-picker-date.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDatePickerDate_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-date-picker-input-date.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDatePickerInputDate_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-date-picker-menu.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDatePickerMenu_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-dialog.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDialog_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-divider.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDivider_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-drag-handle.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDragHandle_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-dropdown.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketDropdown_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-empty-state.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketEmptyState_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-field.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketField_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-file-upload.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFileUpload_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-filter.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFilter_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-filter-button.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFilterButton_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-filter-dropdown-menu.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFilterDropdownMenu_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-filter-group.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFilterGroup_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-footer.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketFooter_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-header.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketHeader_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-icon.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketIcon_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-inline-section-header.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketInlineSectionHeader_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-inline-status.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketInlineStatus_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-input-password.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketInputPassword_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-input-search.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketInputSearch_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-input-text.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketInputText_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-link.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketLink_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-list.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketList_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-modal-full.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketModalFull_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-modal-partial.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketModalPartial_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-pagination.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketPagination_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-pagination-nav.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketPaginationNav_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-pagination-page-size.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketPaginationPageSize_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-pill.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketPill_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-popover.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketPopover_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-progress-tracker.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketProgressTracker_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-progress-tracker-step.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketProgressTrackerStep_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-qrcode.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketQrcode_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-radio.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketRadio_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-row.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketRow_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-segment.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketSegment_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-segmented-control.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketSegmentedControl_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-select.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketSelect_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-sheet.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketSheet_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-stepper.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketStepper_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tab.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTab_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tab-list.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTabList_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tab-panel.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTabPanel_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTable_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-area.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableArea_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-cell.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableCell_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-column.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableColumn_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-row.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableRow_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-v2.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableV2_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-v2-cell.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableV2Cell_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-v2-group.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableV2Group_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-table-v2-row.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTableV2Row_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tabs.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTabs_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tag.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTag_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-textarea.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTextarea_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tile.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTile_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-toast.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketToast_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-toaster.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketToaster_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-toggle.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketToggle_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-tooltip.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketTooltip_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t      case \"market-color-swatch.cjs\":\n\t        return Promise.resolve().then(function() {\n\t          return /* @__PURE__ */ _interopNamespace(requireMarketColorSwatch_cjs_entry());\n\t        }).then(processMod, consoleError);\n\t    }\n\t  }\n\t  return Promise.resolve().then(function() {\n\t    return /* @__PURE__ */ _interopNamespace(require(\n\t      /* @vite-ignore */\n\t      /* webpackInclude: /\\.entry\\.js$/ */\n\t      /* webpackExclude: /\\.system\\.entry\\.js$/ */\n\t      /* webpackMode: \"lazy\" */\n\t      `./${bundleId}.entry.js${\"\"}`\n\t    ));\n\t  }).then((importedModule) => {\n\t    {\n\t      cmpModules.set(bundleId, importedModule);\n\t    }\n\t    return importedModule[exportName];\n\t  }, consoleError);\n\t};\n\tvar styles = /* @__PURE__ */ new Map();\n\tvar win = typeof window !== \"undefined\" ? window : {};\n\tvar doc = win.document || { head: {} };\n\tvar plt = {\n\t  $flags$: 0,\n\t  $resourcesUrl$: \"\",\n\t  jmp: (h2) => h2(),\n\t  raf: (h2) => requestAnimationFrame(h2),\n\t  ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n\t  rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n\t  ce: (eventName, opts) => new CustomEvent(eventName, opts)\n\t};\n\tvar supportsShadow = (\n\t  // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n\t  true\n\t);\n\tvar supportsListenerOptions = /* @__PURE__ */ (() => {\n\t  let supportsListenerOptions2 = false;\n\t  try {\n\t    doc.addEventListener(\n\t      \"e\",\n\t      null,\n\t      Object.defineProperty({}, \"passive\", {\n\t        get() {\n\t          supportsListenerOptions2 = true;\n\t        }\n\t      })\n\t    );\n\t  } catch (e) {\n\t  }\n\t  return supportsListenerOptions2;\n\t})();\n\tvar promiseResolve = (v) => Promise.resolve(v);\n\tvar supportsConstructableStylesheets = /* @__PURE__ */ (() => {\n\t  try {\n\t    new CSSStyleSheet();\n\t    return typeof new CSSStyleSheet().replaceSync === \"function\";\n\t  } catch (e) {\n\t  }\n\t  return false;\n\t})();\n\tvar queuePending = false;\n\tvar queueDomReads = [];\n\tvar queueDomWrites = [];\n\tvar queueTask = (queue, write) => (cb) => {\n\t  queue.push(cb);\n\t  if (!queuePending) {\n\t    queuePending = true;\n\t    if (plt.$flags$ & 4) {\n\t      nextTick(flush);\n\t    } else {\n\t      plt.raf(flush);\n\t    }\n\t  }\n\t};\n\tvar consume = (queue) => {\n\t  for (let i2 = 0; i2 < queue.length; i2++) {\n\t    try {\n\t      queue[i2](performance.now());\n\t    } catch (e) {\n\t      consoleError(e);\n\t    }\n\t  }\n\t  queue.length = 0;\n\t};\n\tvar flush = () => {\n\t  consume(queueDomReads);\n\t  {\n\t    consume(queueDomWrites);\n\t    if (queuePending = queueDomReads.length > 0) {\n\t      plt.raf(flush);\n\t    }\n\t  }\n\t};\n\tvar nextTick = (cb) => promiseResolve().then(cb);\n\tvar writeTask = /* @__PURE__ */ queueTask(queueDomWrites);\n\tindex37364565.Fragment = Fragment;\n\tindex37364565.Host = Host;\n\tindex37364565.bootstrapLazy = bootstrapLazy;\n\tindex37364565.createEvent = createEvent;\n\tindex37364565.getElement = getElement;\n\tindex37364565.h = h;\n\tindex37364565.promiseResolve = promiseResolve;\n\tindex37364565.registerInstance = registerInstance;\n\tindex37364565.setNonce = setNonce;\n\treturn index37364565;\n}\n\nvar appGlobals3a1e7e63 = {};\n\nvar hasRequiredAppGlobals3a1e7e63;\n\nfunction requireAppGlobals3a1e7e63 () {\n\tif (hasRequiredAppGlobals3a1e7e63) return appGlobals3a1e7e63;\n\thasRequiredAppGlobals3a1e7e63 = 1;\n\tconst globalScripts = () => {\n\t};\n\tappGlobals3a1e7e63.globalScripts = globalScripts;\n\treturn appGlobals3a1e7e63;\n}\n\nvar hasRequiredLoader_cjs;\n\nfunction requireLoader_cjs () {\n\tif (hasRequiredLoader_cjs) return loader_cjs;\n\thasRequiredLoader_cjs = 1;\n\tObject.defineProperty(loader_cjs, \"__esModule\", { value: true });\n\tconst index = requireIndex37364565();\n\tconst appGlobals = requireAppGlobals3a1e7e63();\n\tconst defineCustomElements = async (win, options) => {\n\t  if (typeof window === \"undefined\") return void 0;\n\t  await appGlobals.globalScripts();\n\t  return index.bootstrapLazy(JSON.parse('[[\"market-color-swatch-list.cjs\",[[1,\"market-color-swatch-list\",{\"value\":[1537]},[[0,\"marketColorSwatchSelectedChange\",\"colorSwatchSelectedEventHandler\"]],{\"value\":[\"valueWatcher\"]}]]],[\"market-accessory.cjs\",[[1,\"market-accessory\",{\"size\":[1]}]]],[\"market-accordion-item.cjs\",[[1,\"market-accordion-item\",{\"name\":[513],\"expanded\":[1540],\"disabled\":[1540],\"size\":[513],\"customTrigger\":[32],\"setExpanded\":[64],\"setDisabled\":[64]},[[0,\"marketAccordionToggled\",\"marketAccordionToggleHandler\"]]]]],[\"market-action-card.cjs\",[[1,\"market-action-card\",{\"selected\":[1540],\"disabled\":[516],\"value\":[513],\"transient\":[4],\"select\":[64],\"deselect\":[64],\"silentlySelect\":[64],\"silentlyDeselect\":[64]},[[0,\"marketRowSelected\",\"handleRowSelection\"],[0,\"marketRowDeselected\",\"handleRowDeselection\"]]]]],[\"market-activity-indicator.cjs\",[[0,\"market-activity-indicator\",{\"size\":[513]}]]],[\"market-activity-indicator-bar.cjs\",[[1,\"market-activity-indicator-bar\",{\"value\":[2],\"max\":[2]}]]],[\"market-banner.cjs\",[[1,\"market-banner\",{\"variant\":[513],\"dismissable\":[516],\"dismissButtonAriaLabel\":[513,\"dismiss-button-aria-label\"],\"iconImageTitle\":[1,\"icon-image-title\"],\"hasTitle\":[32],\"hasAction\":[32]}]]],[\"market-blade.cjs\",[[1,\"market-blade\",{\"hidden\":[1540],\"dialogID\":[513,\"data-dialog-id\"],\"index\":[514,\"data-dialog-index\"],\"animationDuration\":[2,\"animation-duration\"],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"trapFocus\":[1028,\"trap-focus\"],\"dismiss\":[64],\"activateFocusTrap\":[64],\"deactivateFocusTrap\":[64]},[[0,\"marketHeaderNavigate\",\"headerNavigateEventHandler\"]],{\"hidden\":[\"reenableAnimation\"],\"trapFocus\":[\"onTrapFocusChanged\"]}]]],[\"market-button.cjs\",[[1,\"market-button\",{\"caret\":[1],\"disabled\":[516],\"download\":[1],\"focused\":[1540],\"href\":[1],\"iconOnly\":[1540,\"icon-only\"],\"innerTabindex\":[2,\"inner-tabindex\"],\"isLoading\":[516,\"is-loading\"],\"rank\":[513],\"rel\":[1],\"size\":[513],\"target\":[1],\"type\":[513],\"variant\":[513],\"ariaAttributes\":[32],\"setFocus\":[64]},[[2,\"click\",\"handleClick\"]],{\"focused\":[\"focusedChangeHandler\"]}]]],[\"market-button-dropdown.cjs\",[[1,\"market-button-dropdown\",{\"interaction\":[1],\"disabled\":[516],\"noCaret\":[4,\"no-caret\"],\"popoverPlacement\":[1,\"popover-placement\"],\"popoverStrategy\":[1,\"popover-strategy\"],\"persistListSelections\":[4,\"persist-list\"],\"dropdownIsActive\":[32],\"ariaAttributes\":[32]},[[0,\"marketDropdownOpened\",\"dropdownOpenedEventHandler\"],[0,\"marketDropdownClosed\",\"dropdownClosedEventHandler\"]],{\"disabled\":[\"syncTriggerDisabledState\"]}]]],[\"market-button-group.cjs\",[[1,\"market-button-group\",{\"alignment\":[513],\"popoverStrategy\":[1,\"popover-strategy\"],\"_sortedButtonEls\":[32]}]]],[\"market-checkbox.cjs\",[[1,\"market-checkbox\",{\"checked\":[1540],\"disabled\":[1540],\"indeterminate\":[1540],\"invalid\":[516],\"focused\":[1540],\"hovered\":[1540],\"active\":[1540],\"setSelection\":[64],\"setIndeterminate\":[64],\"setValue\":[64],\"setActive\":[64],\"setHover\":[64],\"setDisabled\":[64],\"setFocus\":[64]}]]],[\"market-choice-button.cjs\",[[1,\"market-choice-button\",{\"disabled\":[516],\"selected\":[1540],\"size\":[513]}]]],[\"market-code-display.cjs\",[[1,\"market-code-display\",{\"disabled\":[1540],\"focused\":[1540]}]]],[\"market-code-input.cjs\",[[1,\"market-code-input\",{\"type\":[513],\"name\":[1],\"length\":[2],\"focused\":[1540],\"value\":[1537],\"readonly\":[516],\"invalid\":[516],\"disabled\":[516],\"_code\":[32],\"setFocus\":[64]},null,{\"value\":[\"valueChangeHandler\"]}]]],[\"market-color-picker.cjs\",[[1,\"market-color-picker\",{\"value\":[1537],\"inputValue\":[32]},[[0,\"marketColorPickerGradientValueChange\",\"gradientValueChange\"],[0,\"marketColorSwatchListValueChange\",\"swatchValueChange\"],[0,\"marketColorPickerInputValueChange\",\"inputValueChange\"]]]]],[\"market-color-picker-gradient.cjs\",[[1,\"market-color-picker-gradient\",{\"value\":[1]},null,{\"value\":[\"updateGradientsByValue\"]}]]],[\"market-color-picker-input.cjs\",[[1,\"market-color-picker-input\",{\"value\":[1537]},[[0,\"marketInputValueChange\",\"inputValueChange\"]]]]],[\"market-content-card.cjs\",[[1,\"market-content-card\"]]],[\"market-context.cjs\",[[1,\"market-context\",{\"currentDialog\":[1040],\"noVeil\":[1040],\"hidden\":[1540],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"stack\":[32],\"totalCount\":[32],\"dialogMeta\":[32],\"open\":[64],\"close\":[64],\"closeCurrent\":[64]},[[0,\"marketDialogLoaded\",\"modalLoadedEventHandler\"],[0,\"marketDialogDismissed\",\"dialogDismissedEventHandler\"]],{\"currentDialog\":[\"currentDialogWatcher\"],\"stack\":[\"stackWatcher\"]}]]],[\"market-context-manager.cjs\",[[1,\"market-context-manager\",{\"active\":[1540],\"currentContext\":[32],\"stack\":[32],\"open\":[64],\"close\":[64],\"createNewContext\":[64],\"deactivate\":[64],\"activate\":[64]},[[0,\"marketContextEmptied\",\"contextEmptiedEventHandler\"],[8,\"keydown\",\"windowKeydown\"]]]]],[\"market-date-picker.cjs\",[[1,\"market-date-picker\",{\"selectionType\":[1,\"selection-type\"],\"selectedStartDate\":[1537,\"selected-start-date\"],\"selectedEndDate\":[1537,\"selected-end-date\"],\"payPeriodStartDate\":[1,\"pay-period-start-date\"],\"payPeriodEndDate\":[1,\"pay-period-end-date\"],\"presetMenuOption\":[1,\"preset-menu-option\"],\"displayMenu\":[4,\"display-menu\"],\"mobileMenuPosition\":[513,\"mobile-menu-position\"],\"excludeMenuItems\":[1,\"exclude-menu-items\"],\"timeframe\":[1],\"weekStartsOn\":[1,\"week-starts-on\"],\"isDateDisabled\":[16],\"locale\":[1],\"displayedDate\":[1025,\"displayed-date\"],\"withInputs\":[1537,\"with-inputs\"],\"invalid\":[1540],\"disableViewToggle\":[516,\"disable-view-toggle\"],\"yearViewActive\":[1540,\"year-view-active\"],\"displayedMonth\":[32],\"displayedWeekdays\":[32],\"yearViewYearsList\":[32],\"hoveredDate\":[32],\"resetMenu\":[64]},[[0,\"marketDatePickerInputDateSet\",\"dateInputDateSet\"],[0,\"marketDatePickerDateSelected\",\"selectDate\"],[0,\"marketDatePickerDateMousedOver\",\"hoverDate\"],[0,\"marketDatePickerDateMousedOut\",\"mousedOutDate\"],[0,\"marketDatePickerMenuSelectionChanged\",\"selectMenuRow\"],[0,\"marketDatePickerInputDateInvalidStateChanged\",\"setInvalidState\"]]]]],[\"market-date-picker-date.cjs\",[[1,\"market-date-picker-date\",{\"disabled\":[516],\"selection\":[513],\"today\":[516],\"selected\":[516],\"day\":[513],\"type\":[513]}]]],[\"market-date-picker-input-date.cjs\",[[1,\"market-date-picker-input-date\",{\"withTime\":[4,\"with-time\"],\"selectedStartDate\":[1,\"selected-start-date\"],\"selectedEndDate\":[1,\"selected-end-date\"],\"isDateDisabled\":[16],\"timeframe\":[1],\"range\":[4],\"isRangeInvalid\":[32]},null,{\"isRangeInvalid\":[\"emitInvalidStateEvent\"]}]]],[\"market-date-picker-menu.cjs\",[[1,\"market-date-picker-menu\",{\"timeframe\":[513],\"excludeMenuItems\":[1,\"exclude-menu-items\"],\"presetMenuOption\":[1,\"preset-menu-option\"],\"_selectCustomRow\":[64]},[[0,\"marketListSelectionsDidChange\",\"handleMarketListSelectionsDidChange\"]]]]],[\"market-dialog.cjs\",[[1,\"market-dialog\",{\"hidden\":[1540],\"dialogID\":[513,\"data-dialog-id\"],\"index\":[514,\"data-dialog-index\"],\"isLoading\":[4,\"is-loading\"],\"persistent\":[516],\"trapFocus\":[1028,\"trap-focus\"],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"dismiss\":[64],\"activateFocusTrap\":[64],\"deactivateFocusTrap\":[64]},null,{\"trapFocus\":[\"onTrapFocusChanged\"]}]]],[\"market-divider.cjs\",[[1,\"market-divider\",{\"margin\":[513],\"size\":[513]}]]],[\"market-drag-handle.cjs\",[[1,\"market-drag-handle\"]]],[\"market-dropdown.cjs\",[[1,\"market-dropdown\",{\"interaction\":[513],\"disabled\":[516],\"expanded\":[1540],\"popoverPlacement\":[1,\"popover-placement\"],\"popoverStrategy\":[1,\"popover-strategy\"],\"popoverSkidding\":[2,\"popover-skidding\"],\"popoverDistance\":[2,\"popover-distance\"],\"ariaAttributes\":[32],\"toggleDropdown\":[64],\"openDropdown\":[64],\"closeDropdown\":[64],\"updateDropdownPosition\":[64]},[[8,\"click\",\"windowClick\"]],{\"expanded\":[\"onExpandedChange\"],\"disabled\":[\"syncDisabledState\"],\"popoverSkidding\":[\"updatePopoverConfig\"],\"popoverDistance\":[\"updatePopoverConfig\"]}]]],[\"market-empty-state.cjs\",[[1,\"market-empty-state\"]]],[\"market-field.cjs\",[[1,\"market-field\",{\"name\":[513],\"readonly\":[516],\"disabled\":[516],\"invalid\":[516]}]]],[\"market-file-upload.cjs\",[[1,\"market-file-upload\",{\"accept\":[1],\"value\":[16],\"disabled\":[516],\"invalid\":[516],\"multiple\":[516],\"compact\":[516],\"fileSubtext\":[1,\"file-subtext\"],\"fileMetadata\":[16],\"deleteButtonAriaLabel\":[513,\"delete-button-aria-label\"],\"isDraggingOver\":[32],\"files\":[32]},null,{\"value\":[\"watchValueHandler\"],\"disabled\":[\"watchDisabledHandler\"]}]]],[\"market-filter.cjs\",[[1,\"market-filter\",{\"name\":[1],\"disabled\":[4],\"focused\":[1540],\"size\":[1],\"expanded\":[1540],\"dropdownInteraction\":[1,\"dropdown-interaction\"],\"popoverPlacement\":[1,\"popover-placement\"],\"popoverStrategy\":[1,\"popover-strategy\"],\"selectedDisplayValue\":[32],\"getFilterType\":[64],\"setFocus\":[64],\"__setAndEmitListValue\":[64],\"__setAndEmitDatePickerValue\":[64]},[[0,\"marketInternalListValueChange\",\"handleListValueChange\"],[0,\"marketListSelectionsDidChange\",\"handleListSelectionChange\"],[0,\"marketDateRangeChanged\",\"handleDateRangeChange\"],[0,\"marketDropdownOpened\",\"handleDropdownOpened\"],[0,\"marketDropdownClosed\",\"handleDropdownClosed\"]]]]],[\"market-filter-button.cjs\",[[1,\"market-filter-button\",{\"size\":[513],\"disabled\":[516],\"focused\":[1540],\"iconOnly\":[516,\"icon-only\"],\"active\":[516],\"popoverId\":[1,\"popover-id\"],\"ariaAttributes\":[32],\"setFocus\":[64]},[[2,\"click\",\"handleClick\"]],{\"disabled\":[\"handleDisabledChange\"]}]]],[\"market-filter-dropdown-menu.cjs\",[[1,\"market-filter-dropdown-menu\",{\"size\":[513],\"filtersWithSelectedValue\":[32],\"hasSelectedFilter\":[32],\"isDropdownActive\":[32]},[[0,\"marketDropdownOpened\",\"handleDropdownOpened\"],[0,\"marketDropdownClosed\",\"handleDropdownClosed\"],[0,\"marketHeaderNavigate\",\"handleHeaderNavigate\"]]]]],[\"market-filter-group.cjs\",[[1,\"market-filter-group\",{\"maxVisibleFilters\":[2,\"max-visible-filters\"],\"_sortedFilterEls\":[32]},[[0,\"marketInputSearchFocus\",\"marketInputSearchFocusHandler\"],[0,\"marketInternalInputSearchCompactAnimation\",\"marketInternalInputSearchCompactAnimationHandler\"],[0,\"marketDropdownOpened\",\"marketDropdownOpenedHandler\"]],{\"maxVisibleFilters\":[\"maxVisibleFiltersWatcher\"]}]]],[\"market-footer.cjs\",[[1,\"market-footer\"]]],[\"market-header.cjs\",[[1,\"market-header\",{\"showNavigation\":[1540,\"show-navigation\"],\"closeButtonAriaLabel\":[513,\"close-button-aria-label\"],\"disableCloseButton\":[4,\"disable-close-button\"],\"compact\":[516],\"compactTitle\":[513,\"compact-title\"],\"hideCompactWayfinding\":[4,\"hide-compact-wayfinding\"],\"showActions\":[32]},null,{\"compact\":[\"handleCompact\"]}]]],[\"market-icon.cjs\",[[1,\"market-icon\",{\"name\":[513],\"fidelity\":[514]}]]],[\"market-inline-section-header.cjs\",[[1,\"market-inline-section-header\"]]],[\"market-inline-status.cjs\",[[1,\"market-inline-status\",{\"variant\":[513]}]]],[\"market-input-password.cjs\",[[1,\"market-input-password\",{\"inputId\":[1,\"input-id\"],\"name\":[1],\"value\":[1],\"placeholder\":[1],\"maxlength\":[2],\"minlength\":[2],\"size\":[513],\"readonly\":[4],\"required\":[4],\"disabled\":[4],\"focused\":[1028],\"invalid\":[4],\"autocomplete\":[8],\"inputmode\":[1],\"type\":[32],\"setFocus\":[64]}]]],[\"market-input-search.cjs\",[[65,\"market-input-search\",{\"value\":[1537],\"placeholder\":[1],\"maxlength\":[2],\"size\":[513],\"variant\":[513],\"disabled\":[516],\"focused\":[1540],\"autofocus\":[4],\"autocomplete\":[8],\"name\":[1],\"inputAriaLabel\":[1,\"input-aria-label\"],\"clearButtonAriaLabel\":[1,\"clear-button-aria-label\"],\"searchIconButtonAriaLabel\":[1,\"search-icon-button-aria-label\"],\"compact\":[4],\"setFocus\":[64],\"clearInput\":[64]},null,{\"focused\":[\"focusedWatcher\"],\"disabled\":[\"disabledWatcher\"],\"autocomplete\":[\"autocompleteWatcher\"]}]]],[\"market-input-text.cjs\",[[65,\"market-input-text\",{\"type\":[513],\"inputId\":[1,\"input-id\"],\"name\":[1],\"value\":[1537],\"placeholder\":[1],\"maxlength\":[2],\"minlength\":[2],\"size\":[513],\"step\":[1],\"min\":[1],\"max\":[1],\"pattern\":[1],\"required\":[4],\"readonly\":[516],\"disabled\":[516],\"focused\":[1540],\"invalid\":[1540],\"inputmode\":[1],\"autofocus\":[4],\"autocomplete\":[8],\"autovalidate\":[4],\"autofilled\":[1540],\"ariaAttributes\":[32],\"setFocus\":[64],\"getInputElement\":[64],\"registerSlottedInput\":[64]},[[8,\"marketDialogLoaded\",\"handleMarketDialogLoaded\"]],{\"focused\":[\"focusedChangeHandler\"],\"autocomplete\":[\"autocompleteWatcher\"]}]]],[\"market-link.cjs\",[[1,\"market-link\",{\"href\":[1],\"target\":[1],\"rel\":[1],\"destructive\":[516],\"disabled\":[516],\"download\":[1],\"highlight\":[520],\"ariaAttributes\":[32]}]]],[\"market-list.cjs\",[[1,\"market-list\",{\"value\":[1537],\"interactive\":[1028],\"transient\":[4],\"multiselect\":[516],\"name\":[1],\"filterStrategy\":[1,\"filter-strategy\"],\"reorderable\":[513],\"reorderMode\":[1,\"reorder-mode\"],\"hideSelectableCount\":[516,\"hide-selectable-count\"],\"hasSearch\":[32],\"items\":[32],\"selections\":[32],\"filteredItems\":[32],\"focusRowAtIndex\":[64]},[[0,\"marketRowSelected\",\"rowSelectedEventHandler\"],[0,\"marketRowDeselected\",\"rowDeselectedEventHandler\"],[0,\"marketCardSelected\",\"cardSelectedEventHandler\"],[0,\"marketCardDeselected\",\"cardDeselectedEventHandler\"],[0,\"marketInputSearchValueChange\",\"marketInputSearchValueChangeEventHander\"]],{\"reorderable\":[\"reorderableWatcher\"],\"value\":[\"valueWatcher\"],\"hideSelectableCount\":[\"hideSelectableCountWatcher\"]}]]],[\"market-modal-full.cjs\",[[1,\"market-modal-full\",{\"hidden\":[1540],\"dialogID\":[513,\"data-dialog-id\"],\"index\":[514,\"data-dialog-index\"],\"layout\":[513],\"trapFocus\":[1028,\"trap-focus\"],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"dismiss\":[64],\"activateFocusTrap\":[64],\"deactivateFocusTrap\":[64]},[[0,\"marketHeaderNavigate\",\"headerNavigateEventHandler\"]],{\"layout\":[\"layoutWatcher\"],\"trapFocus\":[\"onTrapFocusChanged\"]}]]],[\"market-modal-partial.cjs\",[[1,\"market-modal-partial\",{\"hidden\":[1540],\"dialogID\":[513,\"data-dialog-id\"],\"index\":[514,\"data-dialog-index\"],\"trapFocus\":[1028,\"trap-focus\"],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"dismiss\":[64],\"activateFocusTrap\":[64],\"deactivateFocusTrap\":[64]},[[0,\"marketHeaderNavigate\",\"headerNavigateEventHandler\"]],{\"trapFocus\":[\"onTrapFocusChanged\"]}]]],[\"market-pagination.cjs\",[[1,\"market-pagination\",{\"currentPage\":[2,\"current-page\"],\"disabled\":[516],\"totalPages\":[2,\"total-pages\"],\"hasNextPage\":[4,\"has-next-page\"],\"hasPreviousPage\":[4,\"has-previous-page\"],\"pageSize\":[1,\"page-size\"],\"pageSizeOptions\":[1,\"page-size-options\"]},[[0,\"marketInternalPaginationPageSizeChange\",\"changePageSize\"],[0,\"marketInternalPaginationNavigation\",\"navigatePage\"]]]]],[\"market-pagination-nav.cjs\",[[4,\"market-pagination-nav\",{\"currentPage\":[2,\"current-page\"],\"disabled\":[516],\"totalPages\":[2,\"total-pages\"],\"hasNextPage\":[4,\"has-next-page\"],\"hasPreviousPage\":[4,\"has-previous-page\"],\"pageSize\":[1,\"page-size\"]},[[0,\"marketListSelectionsDidChange\",\"listSelectionEventHandler\"]]]]],[\"market-pagination-page-size.cjs\",[[4,\"market-pagination-page-size\",{\"disabled\":[516],\"value\":[1],\"pageSizeOptions\":[1,\"page-size-options\"]},[[0,\"marketListSelectionsDidChange\",\"listSelectionEventHander\"]]]]],[\"market-pill.cjs\",[[1,\"market-pill\",{\"variant\":[513],\"size\":[513],\"indicator\":[516],\"interactive\":[516]}]]],[\"market-popover.cjs\",[[1,\"market-popover\"]]],[\"market-progress-tracker.cjs\",[[1,\"market-progress-tracker\",{\"compact\":[4],\"connectorless\":[4],\"currentStepIndex\":[1538,\"current-step-index\"],\"indicator\":[1],\"interactive\":[4],\"orientation\":[1],\"reversed\":[4],\"size\":[513]},[[0,\"marketProgressTrackerStepClick\",\"marketProgressTrackerStepClickEventHandler\"]],{\"currentStepIndex\":[\"currentStepIndexWatcher\"],\"reversed\":[\"reversedWatcher\"],\"compact\":[\"otherPropsWatcher\"],\"indicator\":[\"otherPropsWatcher\"],\"interactive\":[\"otherPropsWatcher\"],\"orientation\":[\"otherPropsWatcher\"],\"size\":[\"otherPropsWatcher\"]}]]],[\"market-progress-tracker-step.cjs\",[[1,\"market-progress-tracker-step\",{\"active\":[516],\"compact\":[516],\"connector\":[513],\"completed\":[516],\"indicator\":[1],\"interactive\":[516],\"name\":[1],\"orientation\":[513],\"size\":[513],\"defaultIcon\":[32]},null,{\"active\":[\"updateDefaultIcon\"],\"completed\":[\"updateDefaultIcon\"],\"indicator\":[\"updateDefaultIcon\"],\"orientation\":[\"updateDefaultIcon\"]}]]],[\"market-qrcode.cjs\",[[1,\"market-qrcode\",{\"content\":[513],\"size\":[514],\"border\":[4],\"monochrome\":[516]}]]],[\"market-radio.cjs\",[[1,\"market-radio\",{\"selected\":[1540],\"disabled\":[1540],\"invalid\":[516],\"focused\":[1540],\"hovered\":[1540],\"active\":[1540],\"setSelection\":[64],\"setValue\":[64],\"setActive\":[64],\"setHover\":[64],\"setDisabled\":[64],\"setFocus\":[64]}]]],[\"market-row.cjs\",[[17,\"market-row\",{\"selected\":[1540],\"value\":[513],\"disabled\":[516],\"size\":[513],\"interactive\":[1540],\"transient\":[1540],\"togglable\":[4],\"variant\":[1],\"destructive\":[516],\"controlPosition\":[1,\"control-position\"],\"href\":[1],\"target\":[1],\"dragEnabled\":[516,\"drag-enabled\"],\"dragHandlePosition\":[513,\"drag-handle-position\"],\"slottedControlEl\":[32],\"hasSideText\":[32],\"silentlySelect\":[64],\"silentlyDeselect\":[64],\"select\":[64],\"deselect\":[64],\"toggle\":[64]},null,{\"selected\":[\"selectedWatcher\"],\"disabled\":[\"disabledWatcher\"],\"href\":[\"hrefWatcher\"],\"variant\":[\"variantWatcher\"]}]]],[\"market-segment.cjs\",[[1,\"market-segment\",{\"disabled\":[1540],\"value\":[1537],\"selected\":[32],\"setSelectedState\":[64],\"selectSegment\":[64]},[[0,\"keydown\",\"handleKeyDown\"]]]]],[\"market-segmented-control.cjs\",[[1,\"market-segmented-control\",{\"value\":[1537],\"disabled\":[516],\"items\":[32]},[[0,\"marketSegmentSelectedChanged\",\"marketSegmentSelectedEventHandler\"]],{\"value\":[\"valueWatcher\"],\"disabled\":[\"disabledChangeHandler\"]}]]],[\"market-select.cjs\",[[1,\"market-select\",{\"name\":[1],\"value\":[1537],\"size\":[513],\"placeholder\":[1],\"readonly\":[516],\"disabled\":[516],\"focused\":[1540],\"invalid\":[516],\"required\":[516],\"multiselect\":[516],\"popoverContainer\":[1,\"popover-container\"],\"popoverStrategy\":[1,\"popover-strategy\"],\"listIsActive\":[32],\"focusedRowIndex\":[32],\"isKeyboardNavigating\":[32],\"hasLeadingAccessory\":[32],\"hasTrailingAccessory\":[32],\"openList\":[64],\"closeList\":[64],\"toggleList\":[64]},[[8,\"click\",\"windowClick\"]],{\"value\":[\"valueWatcher\"],\"multiselect\":[\"multiselectWatcher\"],\"focusedRowIndex\":[\"focusedRowIndexWatcher\"]}]]],[\"market-sheet.cjs\",[[1,\"market-sheet\",{\"hidden\":[1540],\"dialogID\":[513,\"data-dialog-id\"],\"openMode\":[1025,\"open-mode\"],\"animationEnterDuration\":[2,\"animation-enter-duration\"],\"animationExitDuration\":[2,\"animation-exit-duration\"],\"disableFocus\":[1028,\"disable-focus\"],\"closeHandleAriaLabel\":[1,\"close-handle-aria-label\"],\"activateFocusTrap\":[64],\"deactivateFocusTrap\":[64],\"dismiss\":[64]},null,{\"hidden\":[\"hiddenHandler\"]}]]],[\"market-stepper.cjs\",[[1,\"market-stepper\",{\"value\":[1538],\"inputId\":[1,\"input-id\"],\"name\":[1],\"placeholder\":[1],\"max\":[2],\"min\":[2],\"step\":[2],\"readonly\":[516],\"disabled\":[516],\"focused\":[1540],\"invalid\":[516],\"inputAriaLabel\":[513,\"input-aria-label\"],\"decrementAriaLabel\":[513,\"decrement-aria-label\"],\"incrementAriaLabel\":[513,\"increment-aria-label\"],\"incrementDisabled\":[32],\"decrementDisabled\":[32],\"setFocus\":[64]},null,{\"value\":[\"valueChangeHandler\"]}]]],[\"market-tab.cjs\",[[1,\"market-tab\",{\"disabled\":[516],\"size\":[513],\"selected\":[1540],\"select\":[64],\"deselect\":[64]},null,{\"disabled\":[\"disabledWatcher\"]}]]],[\"market-tab-list.cjs\",[[1,\"market-tab-list\",{\"size\":[1],\"selectedTab\":[1537,\"selected-tab\"],\"defaultTab\":[1,\"default-tab\"]},[[0,\"marketTabSelectedChanged\",\"marketTabSelectedChangedEventHandler\"]],{\"selectedTab\":[\"tabWatcher\"],\"size\":[\"sizeWatcher\"]}]]],[\"market-tab-panel.cjs\",[[1,\"market-tab-panel\",{\"hidden\":[516]}]]],[\"market-table.cjs\",[[1,\"market-table\",{\"styleDeclaration\":[32],\"gridColumnTemplate\":[32],\"allColumns\":[32],\"visibleColumns\":[32],\"columnsStuckLeft\":[32],\"columnsStuckRight\":[32],\"columnsUnstuck\":[32],\"allRows\":[32],\"rowsStuckTop\":[32],\"rowsStuckBottom\":[32],\"rowsUnstuck\":[32],\"hasAccordionRows\":[32]},[[0,\"marketTableHeaderLoaded\",\"marketTableHeaderLoadedEventHandler\"],[0,\"marketTableRowStick\",\"marketTableRowStickEventHandler\"],[0,\"marketTableRowUnstick\",\"marketTableRowUnstickEventHandler\"],[0,\"marketTableColumnStick\",\"marketTableColumnStickEventHandler\"],[0,\"marketTableColumnUnstick\",\"marketTableColumnUnstickEventHandler\"],[0,\"marketTableColumnVisibilityChange\",\"marketTableColumnVisibilityChangeHandler\"]],{\"styleDeclaration\":[\"styleDeclarationObserver\"],\"gridColumnTemplate\":[\"gridTemplateObserver\"],\"allColumns\":[\"allColumnsObserver\"],\"visibleColumns\":[\"allColumnsObserver\"],\"allRows\":[\"allRowsObserver\"],\"rowsStuckTop\":[\"stuckRowsObserver\"],\"rowsStuckBottom\":[\"stuckRowsObserver\"],\"rowsUnstuck\":[\"stuckRowsObserver\"]}]]],[\"market-table-area.cjs\",[[1,\"market-table-area\",{\"orientation\":[513],\"stickTo\":[513,\"stick-to\"],\"gridTemplate\":[16],\"active\":[1540],\"placement\":[16],\"elements\":[32]},null,{\"gridTemplate\":[\"assignGridTemplate\"],\"placement\":[\"placementObserver\"]}]]],[\"market-table-cell.cjs\",[[1,\"market-table-cell\",{\"align\":[1032],\"column\":[1537],\"leadingIndentation\":[1026,\"leading-indentation\"],\"active\":[516],\"interactive\":[516],\"disabled\":[516],\"originalSlot\":[32],\"hidden\":[32],\"_updateColumnRelatedProperties\":[64],\"_updateFirstCellProperties\":[64],\"_stickSelf\":[64],\"_unstickSelf\":[64]}]]],[\"market-table-column.cjs\",[[1,\"market-table-column\",{\"name\":[513],\"align\":[8],\"stickTo\":[1537,\"stick-to\"],\"sortable\":[516],\"sortOrder\":[513,\"sort-order\"],\"hidden\":[516],\"index\":[2],\"width\":[1],\"originalSlot\":[32],\"stick\":[64],\"unstick\":[64],\"_stickSelf\":[64],\"_unstickSelf\":[64]},null,{\"hidden\":[\"emitVisibilityChangeEvent\"],\"stickTo\":[\"emitStickyEvents\"]}]]],[\"market-table-row.cjs\",[[1,\"market-table-row\",{\"leadingIndentation\":[1538,\"leading-indentation\"],\"stickTo\":[1544,\"stick-to\"],\"sticky\":[1540],\"active\":[516],\"interactive\":[516],\"disabled\":[516],\"selected\":[1540],\"header\":[1540],\"footer\":[1540],\"originalSlot\":[1025,\"original-slot\"],\"index\":[2],\"tableColumns\":[16],\"cells\":[1040],\"gridTemplateMain\":[16],\"gridTemplateLeft\":[16],\"gridTemplateRight\":[16],\"expanded\":[1028],\"nested\":[1540],\"styleDeclaration\":[32],\"gridTemplate\":[32],\"nestedRowToggleButton\":[32],\"stick\":[64],\"unstick\":[64],\"_stickColumn\":[64],\"_unstickColumn\":[64],\"_syncColumnVisibilityWithCells\":[64],\"_setFirstCellProperties\":[64],\"setLeadingIndentation\":[64],\"toggleNestedRow\":[64]},[[0,\"marketCheckboxValueChange\",\"handleMarketCheckboxValueChange\"],[0,\"marketToggleChange\",\"handleMarketCheckboxValueChange\"]],{\"gridTemplateMain\":[\"formNewGridTemplate\"],\"gridTemplateLeft\":[\"formNewGridTemplate\"],\"gridTemplateRight\":[\"formNewGridTemplate\"],\"gridTemplate\":[\"gridTemplateObserver\"],\"stickTo\":[\"stickyObserver\"],\"sticky\":[\"stickyObserver\"],\"tableColumns\":[\"columnsObserver\"],\"cells\":[\"updateCellProperties\"],\"leadingIndentation\":[\"updateFirstCellProperties\"],\"expanded\":[\"updateNestedRowButton\"],\"selected\":[\"updateSlottedControlCheckedValue\"],\"disabled\":[\"updateSlottedControlDisabledValue\"]}]]],[\"market-table-v2.cjs\",[[1,\"market-table-v2\",{\"align\":[513],\"collapsible\":[516],\"layout\":[513],\"reorderable\":[513],\"reorderMode\":[1,\"reorder-mode\"],\"selected\":[1025],\"valign\":[513],\"setSelected\":[64]},[[0,\"marketInternalTableV2RowSelectionChange\",\"onMarketTableV2SelectionChange\"],[0,\"marketInternalTableV2GroupSelectionChange\",\"onMarketTableV2SelectionChange\"],[0,\"marketTableV2CellSortClicked\",\"onMarketTableV2CellSortClicked\"],[0,\"marketDragMove\",\"onDragMove\"],[0,\"marketDragLeave\",\"onDragLeave\"],[0,\"marketDragEnd\",\"onDragEnd\"],[0,\"marketDragDrop\",\"onDragDrop\"]],{\"collapsible\":[\"watchCollapsible\"],\"reorderable\":[\"watchReorderable\"]}]]],[\"market-table-v2-cell.cjs\",[[1,\"market-table-v2-cell\",{\"active\":[516],\"align\":[513],\"caret\":[513],\"caretAriaLabelExpanded\":[1,\"caret-aria-label-expanded\"],\"caretAriaLabelCollapsed\":[1,\"caret-aria-label-collapsed\"],\"disabled\":[516],\"indent\":[514],\"interactive\":[516],\"nowrap\":[516],\"selected\":[1025],\"sticky\":[513],\"sortable\":[516],\"sortAriaLabelAscending\":[1,\"sort-aria-label-ascending\"],\"sortAriaLabelDescending\":[1,\"sort-aria-label-descending\"],\"sortAriaLabelNone\":[1,\"sort-aria-label-none\"],\"sortOrder\":[1025,\"sort-order\"],\"sortStrategy\":[1,\"sort-strategy\"],\"sortStrategyFormat\":[1,\"sort-strategy-format\"],\"valign\":[513],\"setSelected\":[64]},[[0,\"keydown\",\"onKeydown\"],[0,\"marketToggleChange\",\"onMarketControlSelectionChange\"],[0,\"marketCheckboxValueChange\",\"onMarketControlSelectionChange\"]]]]],[\"market-table-v2-group.cjs\",[[1,\"market-table-v2-group\",{\"collapsible\":[516],\"collapsed\":[1540],\"dragEnabled\":[516,\"drag-enabled\"],\"indent\":[514],\"reorderable\":[513],\"reorderMode\":[1,\"reorder-mode\"],\"selected\":[1025],\"setSelected\":[64],\"setCollapsed\":[64],\"sort\":[64]},[[0,\"marketTableV2CellCaretClicked\",\"onMarketTableV2CellCaretClicked\"],[0,\"marketInternalTableV2RowSelectionChange\",\"onMarketTableV2SelectionChange\"],[0,\"marketInternalTableV2GroupSelectionChange\",\"onMarketTableV2SelectionChange\"],[0,\"marketDragHandleDragStart\",\"onDragHandleStart\"],[0,\"marketDragHandleDragMove\",\"onDragHandleMove\"],[0,\"marketDragHandleDragEnd\",\"onDragHandleDragEnd\"],[0,\"marketDragMove\",\"onDragMove\"],[0,\"marketDragLeave\",\"onDragLeave\"],[0,\"marketDragEnd\",\"onDragEnd\"],[0,\"marketDragDrop\",\"onDragDrop\"]],{\"indent\":[\"propagateNestedState\"],\"collapsed\":[\"propagateNestedState\"],\"collapsible\":[\"propagateNestedState\"],\"dragEnabled\":[\"watchDragEnabled\"],\"reorderable\":[\"watchReorderable\"]}]]],[\"market-table-v2-row.cjs\",[[1,\"market-table-v2-row\",{\"active\":[516],\"align\":[513],\"caret\":[513],\"disabled\":[516],\"dragEnabled\":[516,\"drag-enabled\"],\"dragHandleVisibility\":[513,\"drag-handle-visibility\"],\"dragHandlePosition\":[513,\"drag-handle-position\"],\"footer\":[516],\"header\":[516],\"indent\":[514],\"interactive\":[516],\"selected\":[1025],\"sticky\":[513],\"valign\":[513],\"setSelected\":[64]},[[0,\"keydown\",\"onKeydown\"],[0,\"marketInternalTableV2CellSelectionChange\",\"onMarketInternalTableV2CellSelectionChange\"]],{\"caret\":[\"watchCaret\"],\"indent\":[\"watchIndent\"]}]]],[\"market-tabs.cjs\",[[1,\"market-tabs\",{\"selectedTab\":[1537,\"selected-tab\"],\"defaultTab\":[1,\"default-tab\"]},[[0,\"marketTabSelectedChanged\",\"marketTabSelectedChangedEventHandler\"]],{\"selectedTab\":[\"tabWatcher\"]}]]],[\"market-tag.cjs\",[[1,\"market-tag\",{\"disabled\":[516],\"focused\":[1540],\"size\":[513],\"hasIcon\":[32]}]]],[\"market-textarea.cjs\",[[1,\"market-textarea\",{\"placeholder\":[1],\"name\":[1],\"value\":[1537],\"maxlength\":[1],\"readonly\":[516],\"disabled\":[516],\"focused\":[1540],\"invalid\":[516],\"maxHeight\":[1,\"max-height\"],\"autofocus\":[4],\"inputmode\":[1],\"ariaAttributes\":[32],\"registerSlottedTextarea\":[64]},[[8,\"marketDialogLoaded\",\"handleMarketDialogLoaded\"]]]]],[\"market-tile.cjs\",[[1,\"market-tile\",{\"disabled\":[516,\"aria-disabled\"],\"interactive\":[4],\"showActions\":[4,\"show-actions\"],\"size\":[513],\"value\":[513],\"selected\":[1540],\"hasSlottedMedia\":[32],\"setSelected\":[64]},null,{\"size\":[\"onSizeChange\"]}]]],[\"market-toast.cjs\",[[1,\"market-toast\",{\"variant\":[513],\"persistent\":[4],\"dismissButtonAriaLabel\":[513,\"dismiss-button-aria-label\"],\"progress\":[514],\"durationTilAutoDismiss\":[32],\"showActionsNav\":[32],\"startAutoDismissTimer\":[64]}]]],[\"market-toaster.cjs\",[[1,\"market-toaster\",{\"show\":[64],\"hide\":[64],\"removeAll\":[64]},[[0,\"marketToastAutoDismissed\",\"toastAutoDismissedEventHandler\"],[0,\"marketToastManuallyDismissed\",\"toastManuallyDismissedEventHandler\"]]]]],[\"market-toggle.cjs\",[[1,\"market-toggle\",{\"checked\":[1540],\"disabled\":[1540],\"focused\":[1540],\"hovered\":[1540],\"active\":[1540],\"setSelection\":[64],\"setValue\":[64],\"setActive\":[64],\"setHover\":[64],\"setDisabled\":[64],\"setFocus\":[64]}]]],[\"market-tooltip.cjs\",[[1,\"market-tooltip\",{\"interaction\":[1],\"disabled\":[516],\"popoverPlacement\":[1,\"popover-placement\"],\"popoverStrategy\":[1,\"popover-strategy\"],\"popoverSkidding\":[2,\"popover-skidding\"],\"popoverDistance\":[2,\"popover-distance\"],\"expanded\":[516],\"openTooltip\":[64],\"closeTooltip\":[64]},[[0,\"marketDropdownOpened\",\"dropdownOpenedEventHandler\"],[0,\"marketDropdownClosed\",\"dropdownClosedEventHandler\"]]]]],[\"market-color-swatch.cjs\",[[1,\"market-color-swatch\",{\"value\":[513],\"name\":[513],\"disabled\":[516],\"selected\":[1540]}]]]]'), options);\n\t};\n\tloader_cjs.setNonce = index.setNonce;\n\tloader_cjs.defineCustomElements = defineCustomElements;\n\treturn loader_cjs;\n}\n\nvar hasRequiredIndex_cjs;\n\nfunction requireIndex_cjs () {\n\tif (hasRequiredIndex_cjs) return index_cjs$1.exports;\n\thasRequiredIndex_cjs = 1;\n\tindex_cjs$1.exports = requireLoader_cjs();\n\tindex_cjs$1.exports.applyPolyfills = function() {\n\t  return Promise.resolve();\n\t};\n\treturn index_cjs$1.exports;\n}\n\nvar index_cjsExports = requireIndex_cjs();\nvar index_cjs = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(index_cjsExports);\n\nmodule.exports = index_cjs;\n0&&(module.exports={applyPolyfills,__esModule,setNonce,defineCustomElements});\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n  discarded_events: ClientReport['discarded_events'],\n  dsn?: string,\n  timestamp?: number,\n): ClientReportEnvelope {\n  const clientReportItem: ClientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n  BrowserClientProfilingOptions,\n  BrowserClientReplayOptions,\n  ClientOptions,\n  Event,\n  EventHint,\n  Options,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions<BrowserTransportOptions> &\n  BrowserClientReplayOptions &\n  BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient<BrowserClientOptions> {\n  /**\n   * Creates a new Browser SDK instance.\n   *\n   * @param options Configuration options for this SDK.\n   */\n  public constructor(options: BrowserClientOptions) {\n    const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n    applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n    super(options);\n\n    if (options.sendClientReports && WINDOW.document) {\n      WINDOW.document.addEventListener('visibilitychange', () => {\n        if (WINDOW.document.visibilityState === 'hidden') {\n          this._flushOutcomes();\n        }\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {\n    return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public eventFromMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level: Severity | SeverityLevel = 'info',\n    hint?: EventHint,\n  ): PromiseLike<Event> {\n    return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n  }\n\n  /**\n   * Sends user feedback to Sentry.\n   */\n  public captureUserFeedback(feedback: UserFeedback): void {\n    if (!this._isEnabled()) {\n      DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n      return;\n    }\n\n    const envelope = createUserFeedbackEnvelope(feedback, {\n      metadata: this.getSdkMetadata(),\n      dsn: this.getDsn(),\n      tunnel: this.getOptions().tunnel,\n    });\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event | null> {\n    event.platform = event.platform || 'javascript';\n    return super._prepareEvent(event, hint, scope);\n  }\n\n  /**\n   * Sends client reports as an envelope.\n   */\n  private _flushOutcomes(): void {\n    const outcomes = this._clearOutcomes();\n\n    if (outcomes.length === 0) {\n      DEBUG_BUILD && logger.log('No outcomes to send');\n      return;\n    }\n\n    // This is really the only place where we want to check for a DSN and only send outcomes then\n    if (!this._dsn) {\n      DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n    const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(envelope);\n  }\n}\n","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n  const metadata = options._metadata || {};\n\n  if (!metadata.sdk) {\n    metadata.sdk = {\n      name: `sentry.javascript.${name}`,\n      packages: names.map(name => ({\n        name: `${source}:@sentry/${name}`,\n        version: SDK_VERSION,\n      })),\n      version: SDK_VERSION,\n    };\n  }\n\n  options._metadata = metadata;\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type {\n  Client,\n  Event,\n  EventHint,\n  Exception,\n  Extras,\n  Hub,\n  Mechanism,\n  ParameterizedString,\n  Severity,\n  SeverityLevel,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\n\nimport { isError, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n  return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n  const exception: Exception = {\n    type: error.name || error.constructor.name,\n    value: error.message,\n  };\n\n  const frames = parseStackFrames(stackParser, error);\n  if (frames.length) {\n    exception.stacktrace = { frames };\n  }\n\n  return exception;\n}\n\nfunction getMessageForObject(exception: object): string {\n  if ('name' in exception && typeof exception.name === 'string') {\n    let message = `'${exception.name}' captured as exception`;\n\n    if ('message' in exception && typeof exception.message === 'string') {\n      message += ` with message '${exception.message}'`;\n    }\n\n    return message;\n  } else if ('message' in exception && typeof exception.message === 'string') {\n    return exception.message;\n  } else {\n    // This will allow us to group events based on top-level keys\n    // which is much better than creating new group when any key/value change\n    return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n      exception as Record<string, unknown>,\n    )}`;\n  }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nexport function eventFromUnknownInput(\n  // eslint-disable-next-line deprecation/deprecation\n  getHubOrClient: (() => Hub) | Client | undefined,\n  stackParser: StackParser,\n  exception: unknown,\n  hint?: EventHint,\n): Event {\n  const client =\n    typeof getHubOrClient === 'function'\n      ? // eslint-disable-next-line deprecation/deprecation\n        getHubOrClient().getClient()\n      : getHubOrClient;\n\n  let ex: unknown = exception;\n  const providedMechanism: Mechanism | undefined =\n    hint && hint.data && (hint.data as { mechanism: Mechanism }).mechanism;\n  const mechanism: Mechanism = providedMechanism || {\n    handled: true,\n    type: 'generic',\n  };\n\n  let extras: Extras | undefined;\n\n  if (!isError(exception)) {\n    if (isPlainObject(exception)) {\n      const normalizeDepth = client && client.getOptions().normalizeDepth;\n      extras = { ['__serialized__']: normalizeToSize(exception as Record<string, unknown>, normalizeDepth) };\n\n      const message = getMessageForObject(exception);\n      ex = (hint && hint.syntheticException) || new Error(message);\n      (ex as Error).message = message;\n    } else {\n      // This handles when someone does: `throw \"something awesome\";`\n      // We use synthesized Error here so we can extract a (rough) stack trace.\n      ex = (hint && hint.syntheticException) || new Error(exception as string);\n      (ex as Error).message = exception as string;\n    }\n    mechanism.synthetic = true;\n  }\n\n  const event: Event = {\n    exception: {\n      values: [exceptionFromError(stackParser, ex as Error)],\n    },\n  };\n\n  if (extras) {\n    event.extra = extras;\n  }\n\n  addExceptionTypeValue(event, undefined, undefined);\n  addExceptionMechanism(event, mechanism);\n\n  return {\n    ...event,\n    event_id: hint && hint.event_id,\n  };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n  stackParser: StackParser,\n  message: ParameterizedString,\n  // eslint-disable-next-line deprecation/deprecation\n  level: Severity | SeverityLevel = 'info',\n  hint?: EventHint,\n  attachStacktrace?: boolean,\n): Event {\n  const event: Event = {\n    event_id: hint && hint.event_id,\n    level,\n  };\n\n  if (attachStacktrace && hint && hint.syntheticException) {\n    const frames = parseStackFrames(stackParser, hint.syntheticException);\n    if (frames.length) {\n      event.exception = {\n        values: [\n          {\n            value: message,\n            stacktrace: { frames },\n          },\n        ],\n      };\n    }\n  }\n\n  if (isParameterizedString(message)) {\n    const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n    event.logentry = {\n      message: __sentry_template_string__,\n      params: __sentry_template_values__,\n    };\n    return event;\n  }\n\n  event.message = message;\n  return event;\n}\n","import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  addExceptionMechanism,\n  addExceptionTypeValue,\n  addNonEnumerableProperty,\n  getOriginalFunction,\n  markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n  return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n  // onerror should trigger before setTimeout\n  ignoreOnError++;\n  setTimeout(() => {\n    ignoreOnError--;\n  });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n  fn: WrappedFunction,\n  options: {\n    mechanism?: Mechanism;\n  } = {},\n  before?: WrappedFunction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n  // for future readers what this does is wrap a function and then create\n  // a bi-directional wrapping between them.\n  //\n  // example: wrapped = wrap(original);\n  //  original.__sentry_wrapped__ -> wrapped\n  //  wrapped.__sentry_original__ -> original\n\n  if (typeof fn !== 'function') {\n    return fn;\n  }\n\n  try {\n    // if we're dealing with a function that was previously wrapped, return\n    // the original wrapper.\n    const wrapper = fn.__sentry_wrapped__;\n    if (wrapper) {\n      if (typeof wrapper === 'function') {\n        return wrapper;\n      } else {\n        // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n        // that something messed with it. In that case we want to return the originally passed function.\n        return fn;\n      }\n    }\n\n    // We don't wanna wrap it twice\n    if (getOriginalFunction(fn)) {\n      return fn;\n    }\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    // Bail on wrapping and return the function as-is (defers to window.onerror).\n    return fn;\n  }\n\n  /* eslint-disable prefer-rest-params */\n  // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n  const sentryWrapped: WrappedFunction = function (this: unknown): void {\n    const args = Array.prototype.slice.call(arguments);\n\n    try {\n      if (before && typeof before === 'function') {\n        before.apply(this, arguments);\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n      const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n      // Attempt to invoke user-land function\n      // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n      //       means the sentry.javascript SDK caught an error invoking your application code. This\n      //       is expected behavior and NOT indicative of a bug with sentry.javascript.\n      return fn.apply(this, wrappedArguments);\n    } catch (ex) {\n      ignoreNextOnError();\n\n      withScope(scope => {\n        scope.addEventProcessor(event => {\n          if (options.mechanism) {\n            addExceptionTypeValue(event, undefined, undefined);\n            addExceptionMechanism(event, options.mechanism);\n          }\n\n          event.extra = {\n            ...event.extra,\n            arguments: args,\n          };\n\n          return event;\n        });\n\n        captureException(ex);\n      });\n\n      throw ex;\n    }\n  };\n  /* eslint-enable prefer-rest-params */\n\n  // Accessing some objects may throw\n  // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n  try {\n    for (const property in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, property)) {\n        sentryWrapped[property] = fn[property];\n      }\n    }\n  } catch (_oO) {} // eslint-disable-line no-empty\n\n  // Signal that this function has been wrapped/filled already\n  // for both debugging and to prevent it to being wrapped/filled twice\n  markFunctionWrapped(sentryWrapped, fn);\n\n  addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n  // Restore original function name (not all browsers allow that)\n  try {\n    const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n    if (descriptor.configurable) {\n      Object.defineProperty(sentryWrapped, 'name', {\n        get(): string {\n          return fn.name;\n        },\n      });\n    }\n    // eslint-disable-next-line no-empty\n  } catch (_oO) {}\n\n  return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n  eventId?: string;\n  dsn?: DsnLike;\n  user?: {\n    email?: string;\n    name?: string;\n  };\n  lang?: string;\n  title?: string;\n  subtitle?: string;\n  subtitle2?: string;\n  labelName?: string;\n  labelEmail?: string;\n  labelComments?: string;\n  labelClose?: string;\n  labelSubmit?: string;\n  errorGeneric?: string;\n  errorFormEntry?: string;\n  successMessage?: string;\n  /** Callback after reportDialog showed up */\n  onLoad?(this: void): void;\n  /** Callback after reportDialog closed */\n  onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n  options: Parameters<typeof browserTracingIntegration>[0] = {},\n): Integration {\n  // Migrate some options from the old integration to the new one\n  // eslint-disable-next-line deprecation/deprecation\n  const opts: ConstructorParameters<typeof BrowserTracing>[0] = options;\n\n  if (typeof options.markBackgroundSpan === 'boolean') {\n    opts.markBackgroundTransactions = options.markBackgroundSpan;\n  }\n\n  if (typeof options.instrumentPageLoad === 'boolean') {\n    opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n  }\n\n  if (typeof options.instrumentNavigation === 'boolean') {\n    opts.startTransactionOnLocationChange = options.instrumentNavigation;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return new BrowserTracing(opts);\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n  key?: string;\n  limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n  const limit = options.limit || DEFAULT_LIMIT;\n  const key = options.key || DEFAULT_KEY;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event, hint, client) {\n      const options = client.getOptions();\n\n      applyAggregateErrorsToEvent(\n        // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n        exceptionFromError,\n        options.stackParser,\n        options.maxValueLength,\n        key,\n        limit,\n        event,\n        hint,\n      );\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","// eslint-disable-next-line deprecation/deprecation\nimport { Replay as InternalReplay, replayIntegration as internalReplayIntegration } from './integration';\nimport type {\n  CanvasManagerInterface as InternalCanvasManagerInterface,\n  CanvasManagerOptions as InternalCanvasManagerOptions,\n  ReplayBreadcrumbFrame as InternalReplayBreadcrumbFrame,\n  ReplayBreadcrumbFrameEvent as InternalReplayBreadcrumbFrameEvent,\n  ReplayConfiguration as InternalReplayConfiguration,\n  ReplayEventType as InternalReplayEventType,\n  ReplayEventWithTime as InternalReplayEventWithTime,\n  ReplayFrame as InternalReplayFrame,\n  ReplayFrameEvent as InternalReplayFrameEvent,\n  ReplayOptionFrameEvent as InternalReplayOptionFrameEvent,\n  ReplaySpanFrame as InternalReplaySpanFrame,\n  ReplaySpanFrameEvent as InternalReplaySpanFrameEvent,\n} from './types';\nimport { getReplay as internalGetReplay } from './util/getReplay';\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst getReplay = internalGetReplay;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst replayIntegration = internalReplayIntegration;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\n// eslint-disable-next-line deprecation/deprecation\nclass Replay extends InternalReplay {}\n\n// eslint-disable-next-line deprecation/deprecation\nexport { replayIntegration, getReplay, Replay, internalReplayIntegration, internalGetReplay, InternalReplay };\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayConfiguration = InternalReplayConfiguration;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayEventType = InternalReplayEventType;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayEventWithTime = InternalReplayEventWithTime;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayBreadcrumbFrame = InternalReplayBreadcrumbFrame;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayBreadcrumbFrameEvent = InternalReplayBreadcrumbFrameEvent;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayOptionFrameEvent = InternalReplayOptionFrameEvent;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayFrame = InternalReplayFrame;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplayFrameEvent = InternalReplayFrameEvent;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplaySpanFrame = InternalReplaySpanFrame;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype ReplaySpanFrameEvent = InternalReplaySpanFrameEvent;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype CanvasManagerInterface = InternalCanvasManagerInterface;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\ntype CanvasManagerOptions = InternalCanvasManagerOptions;\n\nexport type {\n  // eslint-disable-next-line deprecation/deprecation\n  CanvasManagerInterface,\n  // eslint-disable-next-line deprecation/deprecation\n  CanvasManagerOptions,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayBreadcrumbFrame,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayBreadcrumbFrameEvent,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayConfiguration,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayEventType,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayEventWithTime,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayFrame,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayFrameEvent,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplayOptionFrameEvent,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplaySpanFrame,\n  // eslint-disable-next-line deprecation/deprecation\n  ReplaySpanFrameEvent,\n  InternalCanvasManagerInterface,\n  InternalCanvasManagerOptions,\n  InternalReplayBreadcrumbFrame,\n  InternalReplayBreadcrumbFrameEvent,\n  InternalReplayConfiguration,\n  InternalReplayEventType,\n  InternalReplayEventWithTime,\n  InternalReplayFrame,\n  InternalReplayFrameEvent,\n  InternalReplayOptionFrameEvent,\n  InternalReplaySpanFrame,\n  InternalReplaySpanFrameEvent,\n};\n\n// TODO (v8): Remove deprecated types\nexport * from './types/deprecated';\n","import type { Event, StackParser } from '@sentry/types';\nimport { GLOBAL_OBJ } from '@sentry/utils';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map<string, any>();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set<string>();\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n  if (!GLOBAL_OBJ._sentryModuleMetadata) {\n    return;\n  }\n\n  for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n    const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n    if (parsedStacks.has(stack)) {\n      continue;\n    }\n\n    // Ensure this stack doesn't get parsed again\n    parsedStacks.add(stack);\n\n    const frames = parser(stack);\n\n    // Go through the frames starting from the top of the stack and find the first one with a filename\n    for (const frame of frames.reverse()) {\n      if (frame.filename) {\n        // Save the metadata for this filename\n        filenameMetadataMap.set(frame.filename, metadata);\n        break;\n      }\n    }\n  }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n  ensureMetadataStacksAreParsed(parser);\n  return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      if (!exception.stacktrace) {\n        return;\n      }\n\n      for (const frame of exception.stacktrace.frames || []) {\n        if (!frame.filename) {\n          continue;\n        }\n\n        const metadata = getMetadataForUrl(parser, frame.filename);\n\n        if (metadata) {\n          frame.module_metadata = metadata;\n        }\n      }\n    });\n  } catch (_) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      if (!exception.stacktrace) {\n        return;\n      }\n\n      for (const frame of exception.stacktrace.frames || []) {\n        delete frame.module_metadata;\n      }\n    });\n  } catch (_) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n","import type { Client, Event, EventHint, EventItem, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { forEachEnvelopeItem } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\n\nconst INTEGRATION_NAME = 'ModuleMetadata';\n\nconst _moduleMetadataIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (typeof client.on !== 'function') {\n        return;\n      }\n\n      // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n      client.on('beforeEnvelope', envelope => {\n        forEachEnvelopeItem(envelope, (item, type) => {\n          if (type === 'event') {\n            const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n            if (event) {\n              stripMetadataFromStackFrames(event);\n              item[1] = event;\n            }\n          }\n        });\n      });\n    },\n\n    processEvent(event, _hint, client) {\n      const stackParser = client.getOptions().stackParser;\n      addMetadataToStackFrames(stackParser, event);\n      return event;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const moduleMetadataIntegration = defineIntegration(_moduleMetadataIntegration);\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n *\n * @deprecated Use `moduleMetadataIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ModuleMetadata = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  moduleMetadataIntegration,\n) as IntegrationClass<\n  Integration & {\n    setup: (client: Client) => void;\n    processEvent: (event: Event, hint: EventHint, client: Client) => Event;\n  }\n>;\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { Transaction } from '@sentry/types';\nimport { extractTraceparentData as _extractTraceparentData } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveTransaction<T extends Transaction>(maybeHub?: Hub): T | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = maybeHub || getCurrentHub();\n  // eslint-disable-next-line deprecation/deprecation\n  const scope = hub.getScope();\n  // eslint-disable-next-line deprecation/deprecation\n  return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nexport const extractTraceparentData = _extractTraceparentData;\n","import {\n  addGlobalErrorInstrumentationHandler,\n  addGlobalUnhandledRejectionInstrumentationHandler,\n  logger,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SpanStatusType } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n  if (errorsInstrumented) {\n    return;\n  }\n\n  errorsInstrumented = true;\n  addGlobalErrorInstrumentationHandler(errorCallback);\n  addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n  // eslint-disable-next-line deprecation/deprecation\n  const activeTransaction = getActiveTransaction();\n  if (activeTransaction) {\n    const status: SpanStatusType = 'internal_error';\n    DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n    activeTransaction.setStatus(status);\n  }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  Fn extends () => any,\n>(\n  fn: Fn,\n  onError: (error: unknown) => void,\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onFinally: () => void = () => {},\n): ReturnType<Fn> {\n  let maybePromiseResult: ReturnType<Fn>;\n  try {\n    maybePromiseResult = fn();\n  } catch (e) {\n    onError(e);\n    onFinally();\n    throw e;\n  }\n\n  return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection<MaybePromise>(\n  value: MaybePromise,\n  onError: (error: unknown) => void,\n  onFinally: () => void,\n): MaybePromise {\n  if (isThenable(value)) {\n    // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n    return value.then(\n      res => {\n        onFinally();\n        return res;\n      },\n      e => {\n        onError(e);\n        onFinally();\n        throw e;\n      },\n    );\n  }\n\n  onFinally();\n  return value;\n}\n","import type { Options } from '@sentry/types';\n\nimport { getClient } from '../exports';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n  maybeOptions?: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'> | undefined,\n): boolean {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const client = getClient();\n  const options = maybeOptions || (client && client.getOptions());\n  return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types';\n\nimport { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '.';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getCurrentScope, withScope } from '../exports';\nimport type { Hub } from '../hub';\nimport { runWithAsyncContext } from '../hub';\nimport { getIsolationScope } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport type { Scope as ScopeClass } from '../scope';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nexport function trace<T>(\n  context: TransactionContext,\n  callback: (span?: Span) => T,\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onError: (error: unknown, span?: Span) => void = () => {},\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  afterFinish: () => void = () => {},\n): T {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n  const scope = getCurrentScope();\n  // eslint-disable-next-line deprecation/deprecation\n  const parentSpan = scope.getSpan();\n\n  const spanContext = normalizeContext(context);\n  const activeSpan = createChildSpanOrTransaction(hub, {\n    parentSpan,\n    spanContext,\n    forceTransaction: false,\n    scope,\n  });\n\n  // eslint-disable-next-line deprecation/deprecation\n  scope.setSpan(activeSpan);\n\n  return handleCallbackErrors(\n    () => callback(activeSpan),\n    error => {\n      activeSpan && activeSpan.setStatus('internal_error');\n      onError(error, activeSpan);\n    },\n    () => {\n      activeSpan && activeSpan.end();\n      // eslint-disable-next-line deprecation/deprecation\n      scope.setSpan(parentSpan);\n      afterFinish();\n    },\n  );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpan<T>(context: StartSpanOptions, callback: (span: Span | undefined) => T): T {\n  const spanContext = normalizeContext(context);\n\n  return runWithAsyncContext(() => {\n    return withScope(context.scope, scope => {\n      // eslint-disable-next-line deprecation/deprecation\n      const hub = getCurrentHub();\n      // eslint-disable-next-line deprecation/deprecation\n      const parentSpan = scope.getSpan();\n\n      const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? undefined\n        : createChildSpanOrTransaction(hub, {\n            parentSpan,\n            spanContext,\n            forceTransaction: context.forceTransaction,\n            scope,\n          });\n\n      return handleCallbackErrors(\n        () => callback(activeSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet\n          if (activeSpan) {\n            const { status } = spanToJSON(activeSpan);\n            if (!status || status === 'ok') {\n              activeSpan.setStatus('internal_error');\n            }\n          }\n        },\n        () => activeSpan && activeSpan.end(),\n      );\n    });\n  });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nexport const startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpanManual<T>(\n  context: StartSpanOptions,\n  callback: (span: Span | undefined, finish: () => void) => T,\n): T {\n  const spanContext = normalizeContext(context);\n\n  return runWithAsyncContext(() => {\n    return withScope(context.scope, scope => {\n      // eslint-disable-next-line deprecation/deprecation\n      const hub = getCurrentHub();\n      // eslint-disable-next-line deprecation/deprecation\n      const parentSpan = scope.getSpan();\n\n      const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? undefined\n        : createChildSpanOrTransaction(hub, {\n            parentSpan,\n            spanContext,\n            forceTransaction: context.forceTransaction,\n            scope,\n          });\n\n      function finishAndSetSpan(): void {\n        activeSpan && activeSpan.end();\n      }\n\n      return handleCallbackErrors(\n        () => callback(activeSpan, finishAndSetSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          if (activeSpan && activeSpan.isRecording()) {\n            const { status } = spanToJSON(activeSpan);\n            if (!status || status === 'ok') {\n              activeSpan.setStatus('internal_error');\n            }\n          }\n        },\n      );\n    });\n  });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startInactiveSpan(context: StartSpanOptions): Span | undefined {\n  if (!hasTracingEnabled()) {\n    return undefined;\n  }\n\n  const spanContext = normalizeContext(context);\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n  const parentSpan = context.scope\n    ? // eslint-disable-next-line deprecation/deprecation\n      context.scope.getSpan()\n    : getActiveSpan();\n\n  const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n  if (shouldSkipSpan) {\n    return undefined;\n  }\n\n  const scope = context.scope || getCurrentScope();\n\n  // Even though we don't actually want to make this span active on the current scope,\n  // we need to make it active on a temporary scope that we use for event processing\n  // as otherwise, it won't pick the correct span for the event when processing it\n  const temporaryScope = (scope as ScopeClass).clone();\n\n  return createChildSpanOrTransaction(hub, {\n    parentSpan,\n    spanContext,\n    forceTransaction: context.forceTransaction,\n    scope: temporaryScope,\n  });\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentScope().getSpan();\n}\n\ninterface ContinueTrace {\n  /**\n   * Continue a trace from `sentry-trace` and `baggage` values.\n   * These values can be obtained from incoming request headers,\n   * or in the browser from `<meta name=\"sentry-trace\">` and `<meta name=\"baggage\">` HTML tags.\n   *\n   * @deprecated Use the version of this function taking a callback as second parameter instead:\n   *\n   * ```\n   * Sentry.continueTrace(sentryTrace: '...', baggage: '...' }, () => {\n   *    // ...\n   * })\n   * ```\n   *\n   */\n  ({\n    sentryTrace,\n    baggage,\n  }: {\n    // eslint-disable-next-line deprecation/deprecation\n    sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n    // eslint-disable-next-line deprecation/deprecation\n    baggage: Parameters<typeof tracingContextFromHeaders>[1];\n  }): Partial<TransactionContext>;\n\n  /**\n   * Continue a trace from `sentry-trace` and `baggage` values.\n   * These values can be obtained from incoming request headers, or in the browser from `<meta name=\"sentry-trace\">`\n   * and `<meta name=\"baggage\">` HTML tags.\n   *\n   * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n   * be attached to the incoming trace.\n   *\n   * Deprecation notice: In the next major version of the SDK the provided callback will not receive a transaction\n   * context argument.\n   */\n  <V>(\n    {\n      sentryTrace,\n      baggage,\n    }: {\n      // eslint-disable-next-line deprecation/deprecation\n      sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n      // eslint-disable-next-line deprecation/deprecation\n      baggage: Parameters<typeof tracingContextFromHeaders>[1];\n    },\n    // TODO(v8): Remove parameter from this callback.\n    callback: (transactionContext: Partial<TransactionContext>) => V,\n  ): V;\n}\n\nexport const continueTrace: ContinueTrace = <V>(\n  {\n    sentryTrace,\n    baggage,\n  }: {\n    // eslint-disable-next-line deprecation/deprecation\n    sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n    // eslint-disable-next-line deprecation/deprecation\n    baggage: Parameters<typeof tracingContextFromHeaders>[1];\n  },\n  callback?: (transactionContext: Partial<TransactionContext>) => V,\n): V | Partial<TransactionContext> => {\n  // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n  /*\n    return withScope((scope) => {\n      const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n      scope.setPropagationContext(propagationContext);\n      return callback();\n    })\n  */\n\n  const currentScope = getCurrentScope();\n\n  // eslint-disable-next-line deprecation/deprecation\n  const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n    sentryTrace,\n    baggage,\n  );\n\n  currentScope.setPropagationContext(propagationContext);\n\n  if (DEBUG_BUILD && traceparentData) {\n    logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n  }\n\n  const transactionContext: Partial<TransactionContext> = {\n    ...traceparentData,\n    metadata: dropUndefinedKeys({\n      dynamicSamplingContext,\n    }),\n  };\n\n  if (!callback) {\n    return transactionContext;\n  }\n\n  return runWithAsyncContext(() => {\n    return callback(transactionContext);\n  });\n};\n\nfunction createChildSpanOrTransaction(\n  // eslint-disable-next-line deprecation/deprecation\n  hub: Hub,\n  {\n    parentSpan,\n    spanContext,\n    forceTransaction,\n    scope,\n  }: {\n    parentSpan: Span | undefined;\n    spanContext: TransactionContext;\n    forceTransaction?: boolean;\n    scope: Scope;\n  },\n): Span | undefined {\n  if (!hasTracingEnabled()) {\n    return undefined;\n  }\n\n  const isolationScope = getIsolationScope();\n\n  let span: Span | undefined;\n  if (parentSpan && !forceTransaction) {\n    // eslint-disable-next-line deprecation/deprecation\n    span = parentSpan.startChild(spanContext);\n  } else if (parentSpan) {\n    // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n    const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n    const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n    const sampled = spanIsSampled(parentSpan);\n\n    // eslint-disable-next-line deprecation/deprecation\n    span = hub.startTransaction({\n      traceId,\n      parentSpanId,\n      parentSampled: sampled,\n      ...spanContext,\n      metadata: {\n        dynamicSamplingContext: dsc,\n        // eslint-disable-next-line deprecation/deprecation\n        ...spanContext.metadata,\n      },\n    });\n  } else {\n    const { traceId, dsc, parentSpanId, sampled } = {\n      ...isolationScope.getPropagationContext(),\n      ...scope.getPropagationContext(),\n    };\n\n    // eslint-disable-next-line deprecation/deprecation\n    span = hub.startTransaction({\n      traceId,\n      parentSpanId,\n      parentSampled: sampled,\n      ...spanContext,\n      metadata: {\n        dynamicSamplingContext: dsc,\n        // eslint-disable-next-line deprecation/deprecation\n        ...spanContext.metadata,\n      },\n    });\n  }\n\n  // We always set this as active span on the scope\n  // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n  // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n  // eslint-disable-next-line deprecation/deprecation\n  scope.setSpan(span);\n\n  setCapturedScopesOnSpan(span, scope, isolationScope);\n\n  return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context: StartSpanOptions): TransactionContext {\n  if (context.startTime) {\n    const ctx: TransactionContext & { startTime?: SpanTimeInput } = { ...context };\n    ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n    delete ctx.startTime;\n    return ctx;\n  }\n\n  return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n  [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n  [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\nfunction setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n  return {\n    scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n  };\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport { getActiveSpan } from '../tracing';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map<string, [string, MetricSummary]>;\n\nlet SPAN_METRIC_SUMMARY: WeakMap<Span, MetricSummaryStorage> | undefined;\n\nfunction getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined {\n  return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record<string, Array<MetricSummary>> | undefined {\n  const storage = getMetricStorageForSpan(span);\n\n  if (!storage) {\n    return undefined;\n  }\n  const output: Record<string, Array<MetricSummary>> = {};\n\n  for (const [, [exportKey, summary]] of storage) {\n    if (!output[exportKey]) {\n      output[exportKey] = [];\n    }\n\n    output[exportKey].push(dropUndefinedKeys(summary));\n  }\n\n  return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n  metricType: MetricType,\n  sanitizedName: string,\n  value: number,\n  unit: MeasurementUnit,\n  tags: Record<string, Primitive>,\n  bucketKey: string,\n): void {\n  const span = getActiveSpan();\n  if (span) {\n    const storage = getMetricStorageForSpan(span) || new Map<string, [string, MetricSummary]>();\n\n    const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n    const bucketItem = storage.get(bucketKey);\n\n    if (bucketItem) {\n      const [, summary] = bucketItem;\n      storage.set(bucketKey, [\n        exportKey,\n        {\n          min: Math.min(summary.min, value),\n          max: Math.max(summary.max, value),\n          count: (summary.count += 1),\n          sum: (summary.sum += value),\n          tags: summary.tags,\n        },\n      ]);\n    } else {\n      storage.set(bucketKey, [\n        exportKey,\n        {\n          min: value,\n          max: value,\n          count: 1,\n          sum: value,\n          tags,\n        },\n      ]);\n    }\n\n    if (!SPAN_METRIC_SUMMARY) {\n      SPAN_METRIC_SUMMARY = new WeakMap();\n    }\n\n    SPAN_METRIC_SUMMARY.set(span, storage);\n  }\n}\n","import type { Span } from '@sentry/types';\n\n/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nexport enum SpanStatus {\n  /** The operation completed successfully. */\n  Ok = 'ok',\n  /** Deadline expired before operation could complete. */\n  DeadlineExceeded = 'deadline_exceeded',\n  /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n  Unauthenticated = 'unauthenticated',\n  /** 403 Forbidden */\n  PermissionDenied = 'permission_denied',\n  /** 404 Not Found. Some requested entity (file or directory) was not found. */\n  NotFound = 'not_found',\n  /** 429 Too Many Requests */\n  ResourceExhausted = 'resource_exhausted',\n  /** Client specified an invalid argument. 4xx. */\n  InvalidArgument = 'invalid_argument',\n  /** 501 Not Implemented */\n  Unimplemented = 'unimplemented',\n  /** 503 Service Unavailable */\n  Unavailable = 'unavailable',\n  /** Other/generic 5xx. */\n  InternalError = 'internal_error',\n  /** Unknown. Any non-standard HTTP status code. */\n  UnknownError = 'unknown_error',\n  /** The operation was cancelled (typically by the user). */\n  Cancelled = 'cancelled',\n  /** Already exists (409) */\n  AlreadyExists = 'already_exists',\n  /** Operation was rejected because the system is not in a state required for the operation's */\n  FailedPrecondition = 'failed_precondition',\n  /** The operation was aborted, typically due to a concurrency issue. */\n  Aborted = 'aborted',\n  /** Operation was attempted past the valid range. */\n  OutOfRange = 'out_of_range',\n  /** Unrecoverable data loss or corruption */\n  DataLoss = 'data_loss',\n}\n\nexport type SpanStatusType =\n  /** The operation completed successfully. */\n  | 'ok'\n  /** Deadline expired before operation could complete. */\n  | 'deadline_exceeded'\n  /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n  | 'unauthenticated'\n  /** 403 Forbidden */\n  | 'permission_denied'\n  /** 404 Not Found. Some requested entity (file or directory) was not found. */\n  | 'not_found'\n  /** 429 Too Many Requests */\n  | 'resource_exhausted'\n  /** Client specified an invalid argument. 4xx. */\n  | 'invalid_argument'\n  /** 501 Not Implemented */\n  | 'unimplemented'\n  /** 503 Service Unavailable */\n  | 'unavailable'\n  /** Other/generic 5xx. */\n  | 'internal_error'\n  /** Unknown. Any non-standard HTTP status code. */\n  | 'unknown_error'\n  /** The operation was cancelled (typically by the user). */\n  | 'cancelled'\n  /** Already exists (409) */\n  | 'already_exists'\n  /** Operation was rejected because the system is not in a state required for the operation's */\n  | 'failed_precondition'\n  /** The operation was aborted, typically due to a concurrency issue. */\n  | 'aborted'\n  /** Operation was attempted past the valid range. */\n  | 'out_of_range'\n  /** Unrecoverable data loss or corruption */\n  | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatusType {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return 'ok';\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return 'unauthenticated';\n      case 403:\n        return 'permission_denied';\n      case 404:\n        return 'not_found';\n      case 409:\n        return 'already_exists';\n      case 413:\n        return 'failed_precondition';\n      case 429:\n        return 'resource_exhausted';\n      default:\n        return 'invalid_argument';\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return 'unimplemented';\n      case 503:\n        return 'unavailable';\n      case 504:\n        return 'deadline_exceeded';\n      default:\n        return 'internal_error';\n    }\n  }\n\n  return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport const spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n  // TODO (v8): Remove these calls\n  // Relay does not require us to send the status code as a tag\n  // For now, just because users might expect it to land as a tag we keep sending it.\n  // Same with data.\n  // In v8, we replace both, simply with\n  // span.setAttribute('http.response.status_code', httpStatus);\n\n  // eslint-disable-next-line deprecation/deprecation\n  span.setTag('http.status_code', String(httpStatus));\n  // eslint-disable-next-line deprecation/deprecation\n  span.setData('http.response.status_code', httpStatus);\n\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus !== 'unknown_error') {\n    span.setStatus(spanStatus);\n  }\n}\n","/* eslint-disable max-lines */\nimport type {\n  Instrumenter,\n  Measurements,\n  Primitive,\n  Span as SpanInterface,\n  SpanAttributeValue,\n  SpanAttributes,\n  SpanContext,\n  SpanContextData,\n  SpanJSON,\n  SpanOrigin,\n  SpanTimeInput,\n  TraceContext,\n  Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n  SEMANTIC_ATTRIBUTE_PROFILE_ID,\n  SEMANTIC_ATTRIBUTE_SENTRY_OP,\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n} from '../semanticAttributes';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport {\n  TRACE_FLAG_NONE,\n  TRACE_FLAG_SAMPLED,\n  spanTimeInputToSeconds,\n  spanToJSON,\n  spanToTraceContext,\n  spanToTraceHeader,\n} from '../utils/spanUtils';\nimport type { SpanStatusType } from './spanstatus';\nimport { setHttpStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n  public spans: Span[];\n\n  private readonly _maxlen: number;\n\n  public constructor(maxlen: number = 1000) {\n    this._maxlen = maxlen;\n    this.spans = [];\n  }\n\n  /**\n   * This is just so that we don't run out of memory while recording a lot\n   * of spans. At some point we just stop and flush out the start of the\n   * trace tree (i.e.the first n spans with the smallest\n   * start_timestamp).\n   */\n  public add(span: Span): void {\n    if (this.spans.length > this._maxlen) {\n      // eslint-disable-next-line deprecation/deprecation\n      span.spanRecorder = undefined;\n    } else {\n      this.spans.push(span);\n    }\n  }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n  /**\n   * Tags for the span.\n   * @deprecated Use `spanToJSON(span).atttributes` instead.\n   */\n  public tags: { [key: string]: Primitive };\n\n  /**\n   * Data for the span.\n   * @deprecated Use `spanToJSON(span).atttributes` instead.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public data: { [key: string]: any };\n\n  /**\n   * List of spans that were finalized\n   *\n   * @deprecated This property will no longer be public. Span recording will be handled internally.\n   */\n  public spanRecorder?: SpanRecorder;\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `Sentry.getRootSpan()` instead\n   */\n  public transaction?: Transaction;\n\n  /**\n   * The instrumenter that created this span.\n   *\n   * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n   *            the instrumenter can only be sentry or otel so we can check the span instance\n   *            to verify which one it is and remove this field entirely.\n   *\n   * @deprecated This field will be removed.\n   */\n  public instrumenter: Instrumenter;\n\n  protected _traceId: string;\n  protected _spanId: string;\n  protected _parentSpanId?: string | undefined;\n  protected _sampled: boolean | undefined;\n  protected _name?: string | undefined;\n  protected _attributes: SpanAttributes;\n  /** Epoch timestamp in seconds when the span started. */\n  protected _startTime: number;\n  /** Epoch timestamp in seconds when the span ended. */\n  protected _endTime?: number | undefined;\n  /** Internal keeper of the status */\n  protected _status?: SpanStatusType | string | undefined;\n  protected _exclusiveTime?: number;\n\n  protected _measurements: Measurements;\n\n  private _logMessage?: string;\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startTransaction()`\n   * or call `startChild()` on an existing span.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n  public constructor(spanContext: SpanContext = {}) {\n    this._traceId = spanContext.traceId || uuid4();\n    this._spanId = spanContext.spanId || uuid4().substring(16);\n    this._startTime = spanContext.startTimestamp || timestampInSeconds();\n    // eslint-disable-next-line deprecation/deprecation\n    this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n    // eslint-disable-next-line deprecation/deprecation\n    this.data = spanContext.data ? { ...spanContext.data } : {};\n    // eslint-disable-next-line deprecation/deprecation\n    this.instrumenter = spanContext.instrumenter || 'sentry';\n\n    this._attributes = {};\n    this.setAttributes({\n      [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n      [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n      ...spanContext.attributes,\n    });\n\n    // eslint-disable-next-line deprecation/deprecation\n    this._name = spanContext.name || spanContext.description;\n\n    if (spanContext.parentSpanId) {\n      this._parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this._sampled = spanContext.sampled;\n    }\n    if (spanContext.status) {\n      this._status = spanContext.status;\n    }\n    if (spanContext.endTimestamp) {\n      this._endTime = spanContext.endTimestamp;\n    }\n    if (spanContext.exclusiveTime !== undefined) {\n      this._exclusiveTime = spanContext.exclusiveTime;\n    }\n    this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n  }\n\n  // This rule conflicts with another eslint rule :(\n  /* eslint-disable @typescript-eslint/member-ordering */\n\n  /**\n   * An alias for `description` of the Span.\n   * @deprecated Use `spanToJSON(span).description` instead.\n   */\n  public get name(): string {\n    return this._name || '';\n  }\n\n  /**\n   * Update the name of the span.\n   * @deprecated Use `spanToJSON(span).description` instead.\n   */\n  public set name(name: string) {\n    this.updateName(name);\n  }\n\n  /**\n   * Get the description of the Span.\n   * @deprecated Use `spanToJSON(span).description` instead.\n   */\n  public get description(): string | undefined {\n    return this._name;\n  }\n\n  /**\n   * Get the description of the Span.\n   * @deprecated Use `spanToJSON(span).description` instead.\n   */\n  public set description(description: string | undefined) {\n    this._name = description;\n  }\n\n  /**\n   * The ID of the trace.\n   * @deprecated Use `spanContext().traceId` instead.\n   */\n  public get traceId(): string {\n    return this._traceId;\n  }\n\n  /**\n   * The ID of the trace.\n   * @deprecated You cannot update the traceId of a span after span creation.\n   */\n  public set traceId(traceId: string) {\n    this._traceId = traceId;\n  }\n\n  /**\n   * The ID of the span.\n   * @deprecated Use `spanContext().spanId` instead.\n   */\n  public get spanId(): string {\n    return this._spanId;\n  }\n\n  /**\n   * The ID of the span.\n   * @deprecated You cannot update the spanId of a span after span creation.\n   */\n  public set spanId(spanId: string) {\n    this._spanId = spanId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `startSpan` functions instead.\n   */\n  public set parentSpanId(string) {\n    this._parentSpanId = string;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n   */\n  public get parentSpanId(): string | undefined {\n    return this._parentSpanId;\n  }\n\n  /**\n   * Was this span chosen to be sent as part of the sample?\n   * @deprecated Use `isRecording()` instead.\n   */\n  public get sampled(): boolean | undefined {\n    return this._sampled;\n  }\n\n  /**\n   * Was this span chosen to be sent as part of the sample?\n   * @deprecated You cannot update the sampling decision of a span after span creation.\n   */\n  public set sampled(sampled: boolean | undefined) {\n    this._sampled = sampled;\n  }\n\n  /**\n   * Attributes for the span.\n   * @deprecated Use `spanToJSON(span).atttributes` instead.\n   */\n  public get attributes(): SpanAttributes {\n    return this._attributes;\n  }\n\n  /**\n   * Attributes for the span.\n   * @deprecated Use `setAttributes()` instead.\n   */\n  public set attributes(attributes: SpanAttributes) {\n    this._attributes = attributes;\n  }\n\n  /**\n   * Timestamp in seconds (epoch time) indicating when the span started.\n   * @deprecated Use `spanToJSON()` instead.\n   */\n  public get startTimestamp(): number {\n    return this._startTime;\n  }\n\n  /**\n   * Timestamp in seconds (epoch time) indicating when the span started.\n   * @deprecated In v8, you will not be able to update the span start time after creation.\n   */\n  public set startTimestamp(startTime: number) {\n    this._startTime = startTime;\n  }\n\n  /**\n   * Timestamp in seconds when the span ended.\n   * @deprecated Use `spanToJSON()` instead.\n   */\n  public get endTimestamp(): number | undefined {\n    return this._endTime;\n  }\n\n  /**\n   * Timestamp in seconds when the span ended.\n   * @deprecated Set the end time via `span.end()` instead.\n   */\n  public set endTimestamp(endTime: number | undefined) {\n    this._endTime = endTime;\n  }\n\n  /**\n   * The status of the span.\n   *\n   * @deprecated Use `spanToJSON().status` instead to get the status.\n   */\n  public get status(): SpanStatusType | string | undefined {\n    return this._status;\n  }\n\n  /**\n   * The status of the span.\n   *\n   * @deprecated Use `.setStatus()` instead to set or update the status.\n   */\n  public set status(status: SpanStatusType | string | undefined) {\n    this._status = status;\n  }\n\n  /**\n   * Operation of the span\n   *\n   * @deprecated Use `spanToJSON().op` to read the op instead.\n   */\n  public get op(): string | undefined {\n    return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n  }\n\n  /**\n   * Operation of the span\n   *\n   * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n   *             to update the span instead.\n   */\n  public set op(op: string | undefined) {\n    this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n  }\n\n  /**\n   * The origin of the span, giving context about what created the span.\n   *\n   * @deprecated Use `spanToJSON().origin` to read the origin instead.\n   */\n  public get origin(): SpanOrigin | undefined {\n    return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n  }\n\n  /**\n   * The origin of the span, giving context about what created the span.\n   *\n   * @deprecated Use `startSpan()` functions to set the origin instead.\n   */\n  public set origin(origin: SpanOrigin | undefined) {\n    this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n  }\n\n  /* eslint-enable @typescript-eslint/member-ordering */\n\n  /** @inheritdoc */\n  public spanContext(): SpanContextData {\n    const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n    return {\n      spanId,\n      traceId,\n      traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n    };\n  }\n\n  /**\n   * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n   * Also the `sampled` decision will be inherited.\n   *\n   * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n   */\n  public startChild(\n    spanContext?: Pick<SpanContext, Exclude<keyof SpanContext, 'sampled' | 'traceId' | 'parentSpanId'>>,\n  ): SpanInterface {\n    const childSpan = new Span({\n      ...spanContext,\n      parentSpanId: this._spanId,\n      sampled: this._sampled,\n      traceId: this._traceId,\n    });\n\n    // eslint-disable-next-line deprecation/deprecation\n    childSpan.spanRecorder = this.spanRecorder;\n    // eslint-disable-next-line deprecation/deprecation\n    if (childSpan.spanRecorder) {\n      // eslint-disable-next-line deprecation/deprecation\n      childSpan.spanRecorder.add(childSpan);\n    }\n\n    const rootSpan = getRootSpan(this);\n    // TODO: still set span.transaction here until we have a more permanent solution\n    // Probably similarly to the weakmap we hold in node-experimental\n    // eslint-disable-next-line deprecation/deprecation\n    childSpan.transaction = rootSpan as Transaction;\n\n    if (DEBUG_BUILD && rootSpan) {\n      const opStr = (spanContext && spanContext.op) || '< unknown op >';\n      const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n      const idStr = rootSpan.spanContext().spanId;\n\n      const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n      logger.log(logMessage);\n      this._logMessage = logMessage;\n    }\n\n    return childSpan;\n  }\n\n  /**\n   * Sets the tag attribute on the current span.\n   *\n   * Can also be used to unset a tag, by passing `undefined`.\n   *\n   * @param key Tag key\n   * @param value Tag value\n   * @deprecated Use `setAttribute()` instead.\n   */\n  public setTag(key: string, value: Primitive): this {\n    // eslint-disable-next-line deprecation/deprecation\n    this.tags = { ...this.tags, [key]: value };\n    return this;\n  }\n\n  /**\n   * Sets the data attribute on the current span\n   * @param key Data key\n   * @param value Data value\n   * @deprecated Use `setAttribute()` instead.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public setData(key: string, value: any): this {\n    // eslint-disable-next-line deprecation/deprecation\n    this.data = { ...this.data, [key]: value };\n    return this;\n  }\n\n  /** @inheritdoc */\n  public setAttribute(key: string, value: SpanAttributeValue | undefined): void {\n    if (value === undefined) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n    } else {\n      this._attributes[key] = value;\n    }\n  }\n\n  /** @inheritdoc */\n  public setAttributes(attributes: SpanAttributes): void {\n    Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setStatus(value: SpanStatusType): this {\n    this._status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top-level `setHttpStatus()` instead.\n   */\n  public setHttpStatus(httpStatus: number): this {\n    setHttpStatus(this, httpStatus);\n    return this;\n  }\n\n  /**\n   * @inheritdoc\n   *\n   * @deprecated Use `.updateName()` instead.\n   */\n  public setName(name: string): void {\n    this.updateName(name);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public updateName(name: string): this {\n    this._name = name;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n   */\n  public isSuccess(): boolean {\n    return this._status === 'ok';\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `.end()` instead.\n   */\n  public finish(endTimestamp?: number): void {\n    return this.end(endTimestamp);\n  }\n\n  /** @inheritdoc */\n  public end(endTimestamp?: SpanTimeInput): void {\n    // If already ended, skip\n    if (this._endTime) {\n      return;\n    }\n    const rootSpan = getRootSpan(this);\n    if (\n      DEBUG_BUILD &&\n      // Don't call this for transactions\n      rootSpan &&\n      rootSpan.spanContext().spanId !== this._spanId\n    ) {\n      const logMessage = this._logMessage;\n      if (logMessage) {\n        logger.log((logMessage as string).replace('Starting', 'Finishing'));\n      }\n    }\n\n    this._endTime = spanTimeInputToSeconds(endTimestamp);\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `spanToTraceHeader()` instead.\n   */\n  public toTraceparent(): string {\n    return spanToTraceHeader(this);\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `spanToJSON()` or access the fields directly instead.\n   */\n  public toContext(): SpanContext {\n    return dropUndefinedKeys({\n      data: this._getData(),\n      description: this._name,\n      endTimestamp: this._endTime,\n      // eslint-disable-next-line deprecation/deprecation\n      op: this.op,\n      parentSpanId: this._parentSpanId,\n      sampled: this._sampled,\n      spanId: this._spanId,\n      startTimestamp: this._startTime,\n      status: this._status,\n      // eslint-disable-next-line deprecation/deprecation\n      tags: this.tags,\n      traceId: this._traceId,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Update the fields directly instead.\n   */\n  public updateWithContext(spanContext: SpanContext): this {\n    // eslint-disable-next-line deprecation/deprecation\n    this.data = spanContext.data || {};\n    // eslint-disable-next-line deprecation/deprecation\n    this._name = spanContext.name || spanContext.description;\n    this._endTime = spanContext.endTimestamp;\n    // eslint-disable-next-line deprecation/deprecation\n    this.op = spanContext.op;\n    this._parentSpanId = spanContext.parentSpanId;\n    this._sampled = spanContext.sampled;\n    this._spanId = spanContext.spanId || this._spanId;\n    this._startTime = spanContext.startTimestamp || this._startTime;\n    this._status = spanContext.status;\n    // eslint-disable-next-line deprecation/deprecation\n    this.tags = spanContext.tags || {};\n    this._traceId = spanContext.traceId || this._traceId;\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `spanToTraceContext()` util function instead.\n   */\n  public getTraceContext(): TraceContext {\n    return spanToTraceContext(this);\n  }\n\n  /**\n   * Get JSON representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n  public getSpanJSON(): SpanJSON {\n    return dropUndefinedKeys({\n      data: this._getData(),\n      description: this._name,\n      op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined,\n      parent_span_id: this._parentSpanId,\n      span_id: this._spanId,\n      start_timestamp: this._startTime,\n      status: this._status,\n      // eslint-disable-next-line deprecation/deprecation\n      tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n      timestamp: this._endTime,\n      trace_id: this._traceId,\n      origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n      _metrics_summary: getMetricSummaryJsonForSpan(this),\n      profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n      exclusive_time: this._exclusiveTime,\n      measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n    });\n  }\n\n  /** @inheritdoc */\n  public isRecording(): boolean {\n    return !this._endTime && !!this._sampled;\n  }\n\n  /**\n   * Convert the object to JSON.\n   * @deprecated Use `spanToJSON(span)` instead.\n   */\n  public toJSON(): SpanJSON {\n    return this.getSpanJSON();\n  }\n\n  /**\n   * Get the merged data for this span.\n   * For now, this combines `data` and `attributes` together,\n   * until eventually we can ingest `attributes` directly.\n   */\n  private _getData():\n    | {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        [key: string]: any;\n      }\n    | undefined {\n    // eslint-disable-next-line deprecation/deprecation\n    const { data, _attributes: attributes } = this;\n\n    const hasData = Object.keys(data).length > 0;\n    const hasAttributes = Object.keys(attributes).length > 0;\n\n    if (!hasData && !hasAttributes) {\n      return undefined;\n    }\n\n    if (hasData && hasAttributes) {\n      return {\n        ...data,\n        ...attributes,\n      };\n    }\n\n    return hasData ? data : attributes;\n  }\n}\n","import type {\n  Context,\n  Contexts,\n  DynamicSamplingContext,\n  MeasurementUnit,\n  SpanTimeInput,\n  Transaction as TransactionInterface,\n  TransactionContext,\n  TransactionEvent,\n  TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { Span as SpanClass, SpanRecorder } from './span';\nimport { getCapturedScopesOnSpan } from './trace';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n  /**\n   * The reference to the current hub.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public _hub: Hub;\n\n  protected _name: string;\n\n  private _contexts: Contexts;\n\n  private _trimEnd?: boolean | undefined;\n\n  // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n  private _frozenDynamicSamplingContext: Readonly<Partial<DynamicSamplingContext>> | undefined;\n\n  private _metadata: Partial<TransactionMetadata>;\n\n  /**\n   * This constructor should never be called manually. Those instrumenting tracing should use\n   * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   *\n   * @deprecated Transactions will be removed in v8. Use spans instead.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public constructor(transactionContext: TransactionContext, hub?: Hub) {\n    super(transactionContext);\n    this._contexts = {};\n\n    // eslint-disable-next-line deprecation/deprecation\n    this._hub = hub || getCurrentHub();\n\n    this._name = transactionContext.name || '';\n\n    this._metadata = {\n      // eslint-disable-next-line deprecation/deprecation\n      ...transactionContext.metadata,\n    };\n\n    this._trimEnd = transactionContext.trimEnd;\n\n    // this is because transactions are also spans, and spans have a transaction pointer\n    // TODO (v8): Replace this with another way to set the root span\n    // eslint-disable-next-line deprecation/deprecation\n    this.transaction = this;\n\n    // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n    // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n    const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n    if (incomingDynamicSamplingContext) {\n      // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n      this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n    }\n  }\n\n  // This sadly conflicts with the getter/setter ordering :(\n  /* eslint-disable @typescript-eslint/member-ordering */\n\n  /**\n   * Getter for `name` property.\n   * @deprecated Use `spanToJSON(span).description` instead.\n   */\n  public get name(): string {\n    return this._name;\n  }\n\n  /**\n   * Setter for `name` property, which also sets `source` as custom.\n   * @deprecated Use `updateName()` and `setMetadata()` instead.\n   */\n  public set name(newName: string) {\n    // eslint-disable-next-line deprecation/deprecation\n    this.setName(newName);\n  }\n\n  /**\n   * Get the metadata for this transaction.\n   * @deprecated Use `spanGetMetadata(transaction)` instead.\n   */\n  public get metadata(): TransactionMetadata {\n    // We merge attributes in for backwards compatibility\n    return {\n      // Defaults\n      // eslint-disable-next-line deprecation/deprecation\n      source: 'custom',\n      spanMetadata: {},\n\n      // Legacy metadata\n      ...this._metadata,\n\n      // From attributes\n      ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n        source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionMetadata['source'],\n      }),\n      ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n        sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as TransactionMetadata['sampleRate'],\n      }),\n    };\n  }\n\n  /**\n   * Update the metadata for this transaction.\n   * @deprecated Use `spanGetMetadata(transaction)` instead.\n   */\n  public set metadata(metadata: TransactionMetadata) {\n    this._metadata = metadata;\n  }\n\n  /* eslint-enable @typescript-eslint/member-ordering */\n\n  /**\n   * Setter for `name` property, which also sets `source` on the metadata.\n   *\n   * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n   */\n  public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n    this._name = name;\n    this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n  }\n\n  /** @inheritdoc */\n  public updateName(name: string): this {\n    this._name = name;\n    return this;\n  }\n\n  /**\n   * Attaches SpanRecorder to the span itself\n   * @param maxlen maximum number of spans that can be recorded\n   */\n  public initSpanRecorder(maxlen: number = 1000): void {\n    // eslint-disable-next-line deprecation/deprecation\n    if (!this.spanRecorder) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.spanRecorder = new SpanRecorder(maxlen);\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * Set the context of a transaction event.\n   * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n   */\n  public setContext(key: string, context: Context | null): void {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use top-level `setMeasurement()` instead.\n   */\n  public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n    this._measurements[name] = { value, unit };\n  }\n\n  /**\n   * Store metadata on this transaction.\n   * @deprecated Use attributes or store data on the scope instead.\n   */\n  public setMetadata(newMetadata: Partial<TransactionMetadata>): void {\n    this._metadata = { ...this._metadata, ...newMetadata };\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public end(endTimestamp?: SpanTimeInput): string | undefined {\n    const timestampInS = spanTimeInputToSeconds(endTimestamp);\n    const transaction = this._finishTransaction(timestampInS);\n    if (!transaction) {\n      return undefined;\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    return this._hub.captureEvent(transaction);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public toContext(): TransactionContext {\n    // eslint-disable-next-line deprecation/deprecation\n    const spanContext = super.toContext();\n\n    return dropUndefinedKeys({\n      ...spanContext,\n      name: this._name,\n      trimEnd: this._trimEnd,\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public updateWithContext(transactionContext: TransactionContext): this {\n    // eslint-disable-next-line deprecation/deprecation\n    super.updateWithContext(transactionContext);\n\n    this._name = transactionContext.name || '';\n    this._trimEnd = transactionContext.trimEnd;\n\n    return this;\n  }\n\n  /**\n   * @inheritdoc\n   *\n   * @experimental\n   *\n   * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n   */\n  public getDynamicSamplingContext(): Readonly<Partial<DynamicSamplingContext>> {\n    return getDynamicSamplingContextFromSpan(this);\n  }\n\n  /**\n   * Override the current hub with a new one.\n   * Used if you want another hub to finish the transaction.\n   *\n   * @internal\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public setHub(hub: Hub): void {\n    this._hub = hub;\n  }\n\n  /**\n   * Get the profile id of the transaction.\n   */\n  public getProfileId(): string | undefined {\n    if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n      return this._contexts['profile'].profile_id as string;\n    }\n    return undefined;\n  }\n\n  /**\n   * Finish the transaction & prepare the event to send to Sentry.\n   */\n  protected _finishTransaction(endTimestamp?: number): TransactionEvent | undefined {\n    // This transaction is already finished, so we should not flush it again.\n    if (this._endTime !== undefined) {\n      return undefined;\n    }\n\n    if (!this._name) {\n      DEBUG_BUILD && logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n      this._name = '<unlabeled transaction>';\n    }\n\n    // just sets the end timestamp\n    super.end(endTimestamp);\n\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this._hub.getClient();\n    if (client && client.emit) {\n      client.emit('finishTransaction', this);\n    }\n\n    if (this._sampled !== true) {\n      // At this point if `sampled !== true` we want to discard the transaction.\n      DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n      if (client) {\n        client.recordDroppedEvent('sample_rate', 'transaction');\n      }\n\n      return undefined;\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    const finishedSpans = this.spanRecorder\n      ? // eslint-disable-next-line deprecation/deprecation\n        this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n      : [];\n\n    if (this._trimEnd && finishedSpans.length > 0) {\n      const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) as number[];\n      this._endTime = endTimes.reduce((prev, current) => {\n        return prev > current ? prev : current;\n      });\n    }\n\n    const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n    // eslint-disable-next-line deprecation/deprecation\n    const { metadata } = this;\n    // eslint-disable-next-line deprecation/deprecation\n    const { source } = metadata;\n\n    const transaction: TransactionEvent = {\n      contexts: {\n        ...this._contexts,\n        // We don't want to override trace context\n        trace: spanToTraceContext(this),\n      },\n      // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n      spans: finishedSpans,\n      start_timestamp: this._startTime,\n      // eslint-disable-next-line deprecation/deprecation\n      tags: this.tags,\n      timestamp: this._endTime,\n      transaction: this._name,\n      type: 'transaction',\n      sdkProcessingMetadata: {\n        ...metadata,\n        capturedSpanScope,\n        capturedSpanIsolationScope,\n        ...dropUndefinedKeys({\n          dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n        }),\n      },\n      _metrics_summary: getMetricSummaryJsonForSpan(this),\n      ...(source && {\n        transaction_info: {\n          source,\n        },\n      }),\n    };\n\n    const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n    if (hasMeasurements) {\n      DEBUG_BUILD &&\n        logger.log(\n          '[Measurements] Adding measurements to transaction',\n          JSON.stringify(this._measurements, undefined, 2),\n        );\n      transaction.measurements = this._measurements;\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n    return transaction;\n  }\n}\n","/* eslint-disable max-lines */\nimport type { SpanTimeInput, TransactionContext } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n  idleTimeout: 1000,\n  finalTimeout: 30000,\n  heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n  'heartbeatFailed',\n  'idleTimeout',\n  'documentHidden',\n  'finalTimeout',\n  'externalFinish',\n  'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n  public constructor(\n    private readonly _pushActivity: (id: string) => void,\n    private readonly _popActivity: (id: string) => void,\n    public transactionSpanId: string,\n    maxlen?: number,\n  ) {\n    super(maxlen);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public add(span: Span): void {\n    // We should make sure we do not push and pop activities for\n    // the transaction that this span recorder belongs to.\n    if (span.spanContext().spanId !== this.transactionSpanId) {\n      // We patch span.end() to pop an activity after setting an endTimestamp.\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const originalEnd = span.end;\n      span.end = (...rest: unknown[]) => {\n        this._popActivity(span.spanContext().spanId);\n        return originalEnd.apply(span, rest);\n      };\n\n      // We should only push new activities if the span does not have an end timestamp.\n      if (spanToJSON(span).timestamp === undefined) {\n        this._pushActivity(span.spanContext().spanId);\n      }\n    }\n\n    super.add(span);\n  }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n  // Activities store a list of active spans\n  public activities: Record<string, boolean>;\n  // Track state of activities in previous heartbeat\n  private _prevHeartbeatString: string | undefined;\n\n  // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n  private _heartbeatCounter: number;\n\n  // We should not use heartbeat if we finished a transaction\n  private _finished: boolean;\n\n  // Idle timeout was canceled and we should finish the transaction with the last span end.\n  private _idleTimeoutCanceledPermanently: boolean;\n\n  private readonly _beforeFinishCallbacks: BeforeFinishCallback[];\n\n  /**\n   * Timer that tracks Transaction idleTimeout\n   */\n  private _idleTimeoutID: ReturnType<typeof setTimeout> | undefined;\n\n  private _finishReason: (typeof IDLE_TRANSACTION_FINISH_REASONS)[number];\n\n  private _autoFinishAllowed: boolean;\n\n  /**\n   * @deprecated Transactions will be removed in v8. Use spans instead.\n   */\n  public constructor(\n    transactionContext: TransactionContext,\n    // eslint-disable-next-line deprecation/deprecation\n    private readonly _idleHub: Hub,\n    /**\n     * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n     * there are no active spans on this transaction.\n     */\n    private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n    /**\n     * The final value in ms that a transaction cannot exceed\n     */\n    private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n    private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n    // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n    private readonly _onScope: boolean = false,\n    /**\n     * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n     * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n     * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n     * reached, no matter what this option is configured to.\n     *\n     * Defaults to `false`.\n     */\n    delayAutoFinishUntilSignal: boolean = false,\n  ) {\n    super(transactionContext, _idleHub);\n\n    this.activities = {};\n    this._heartbeatCounter = 0;\n    this._finished = false;\n    this._idleTimeoutCanceledPermanently = false;\n    this._beforeFinishCallbacks = [];\n    this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n    this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n    if (_onScope) {\n      // We set the transaction here on the scope so error events pick up the trace\n      // context and attach it to the error.\n      DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n      // eslint-disable-next-line deprecation/deprecation\n      _idleHub.getScope().setSpan(this);\n    }\n\n    if (!delayAutoFinishUntilSignal) {\n      this._restartIdleTimeout();\n    }\n\n    setTimeout(() => {\n      if (!this._finished) {\n        this.setStatus('deadline_exceeded');\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n        this.end();\n      }\n    }, this._finalTimeout);\n  }\n\n  /** {@inheritDoc} */\n  public end(endTimestamp?: SpanTimeInput): string | undefined {\n    const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n    this._finished = true;\n    this.activities = {};\n\n    // eslint-disable-next-line deprecation/deprecation\n    if (this.op === 'ui.action.click') {\n      this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    if (this.spanRecorder) {\n      DEBUG_BUILD &&\n        // eslint-disable-next-line deprecation/deprecation\n        logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n      for (const callback of this._beforeFinishCallbacks) {\n        callback(this, endTimestampInS);\n      }\n\n      // eslint-disable-next-line deprecation/deprecation\n      this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n        // If we are dealing with the transaction itself, we just return it\n        if (span.spanContext().spanId === this.spanContext().spanId) {\n          return true;\n        }\n\n        // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n        if (!spanToJSON(span).timestamp) {\n          span.setStatus('cancelled');\n          span.end(endTimestampInS);\n          DEBUG_BUILD &&\n            logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n        }\n\n        const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n        const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n        // Add a delta with idle timeout so that we prevent false positives\n        const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n        const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n        if (DEBUG_BUILD) {\n          const stringifiedSpan = JSON.stringify(span, undefined, 2);\n          if (!spanStartedBeforeTransactionFinish) {\n            logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n          } else if (!spanEndedBeforeFinalTimeout) {\n            logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n          }\n        }\n\n        return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n      });\n\n      DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n    } else {\n      DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n    }\n\n    // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n    if (this._onScope) {\n      // eslint-disable-next-line deprecation/deprecation\n      const scope = this._idleHub.getScope();\n      // eslint-disable-next-line deprecation/deprecation\n      if (scope.getTransaction() === this) {\n        // eslint-disable-next-line deprecation/deprecation\n        scope.setSpan(undefined);\n      }\n    }\n\n    return super.end(endTimestamp);\n  }\n\n  /**\n   * Register a callback function that gets executed before the transaction finishes.\n   * Useful for cleanup or if you want to add any additional spans based on current context.\n   *\n   * This is exposed because users have no other way of running something before an idle transaction\n   * finishes.\n   */\n  public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n    this._beforeFinishCallbacks.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public initSpanRecorder(maxlen?: number): void {\n    // eslint-disable-next-line deprecation/deprecation\n    if (!this.spanRecorder) {\n      const pushActivity = (id: string): void => {\n        if (this._finished) {\n          return;\n        }\n        this._pushActivity(id);\n      };\n      const popActivity = (id: string): void => {\n        if (this._finished) {\n          return;\n        }\n        this._popActivity(id);\n      };\n\n      // eslint-disable-next-line deprecation/deprecation\n      this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n      // Start heartbeat so that transactions do not run forever.\n      DEBUG_BUILD && logger.log('Starting heartbeat');\n      this._pingHeartbeat();\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.spanRecorder.add(this);\n  }\n\n  /**\n   * Cancels the existing idle timeout, if there is one.\n   * @param restartOnChildSpanChange Default is `true`.\n   *                                 If set to false the transaction will end\n   *                                 with the last child span.\n   */\n  public cancelIdleTimeout(\n    endTimestamp?: Parameters<IdleTransaction['end']>[0],\n    {\n      restartOnChildSpanChange,\n    }: {\n      restartOnChildSpanChange?: boolean;\n    } = {\n      restartOnChildSpanChange: true,\n    },\n  ): void {\n    this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n    if (this._idleTimeoutID) {\n      clearTimeout(this._idleTimeoutID);\n      this._idleTimeoutID = undefined;\n\n      if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n        this.end(endTimestamp);\n      }\n    }\n  }\n\n  /**\n   * Temporary method used to externally set the transaction's `finishReason`\n   *\n   * ** WARNING**\n   * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n   *\n   * @internal\n   *\n   */\n  public setFinishReason(reason: string): void {\n    this._finishReason = reason;\n  }\n\n  /**\n   * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n   */\n  public sendAutoFinishSignal(): void {\n    if (!this._autoFinishAllowed) {\n      DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n      this._restartIdleTimeout();\n      this._autoFinishAllowed = true;\n    }\n  }\n\n  /**\n   * Restarts idle timeout, if there is no running idle timeout it will start one.\n   */\n  private _restartIdleTimeout(endTimestamp?: Parameters<IdleTransaction['end']>[0]): void {\n    this.cancelIdleTimeout();\n    this._idleTimeoutID = setTimeout(() => {\n      if (!this._finished && Object.keys(this.activities).length === 0) {\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n        this.end(endTimestamp);\n      }\n    }, this._idleTimeout);\n  }\n\n  /**\n   * Start tracking a specific activity.\n   * @param spanId The span id that represents the activity\n   */\n  private _pushActivity(spanId: string): void {\n    this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n    DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n    this.activities[spanId] = true;\n    DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n  }\n\n  /**\n   * Remove an activity from usage\n   * @param spanId The span id that represents the activity\n   */\n  private _popActivity(spanId: string): void {\n    if (this.activities[spanId]) {\n      DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this.activities[spanId];\n      DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n    }\n\n    if (Object.keys(this.activities).length === 0) {\n      const endTimestamp = timestampInSeconds();\n      if (this._idleTimeoutCanceledPermanently) {\n        if (this._autoFinishAllowed) {\n          this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n          this.end(endTimestamp);\n        }\n      } else {\n        // We need to add the timeout here to have the real endtimestamp of the transaction\n        // Remember timestampInSeconds is in seconds, timeout is in ms\n        this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n      }\n    }\n  }\n\n  /**\n   * Checks when entries of this.activities are not changing for 3 beats.\n   * If this occurs we finish the transaction.\n   */\n  private _beat(): void {\n    // We should not be running heartbeat if the idle transaction is finished.\n    if (this._finished) {\n      return;\n    }\n\n    const heartbeatString = Object.keys(this.activities).join('');\n\n    if (heartbeatString === this._prevHeartbeatString) {\n      this._heartbeatCounter++;\n    } else {\n      this._heartbeatCounter = 1;\n    }\n\n    this._prevHeartbeatString = heartbeatString;\n\n    if (this._heartbeatCounter >= 3) {\n      if (this._autoFinishAllowed) {\n        DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n        this.setStatus('deadline_exceeded');\n        this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n        this.end();\n      }\n    } else {\n      this._pingHeartbeat();\n    }\n  }\n\n  /**\n   * Pings the heartbeat\n   */\n  private _pingHeartbeat(): void {\n    DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n    setTimeout(() => {\n      this._beat();\n    }, this._heartbeatInterval);\n  }\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanToJSON } from '../utils/spanUtils';\nimport type { Transaction } from './transaction';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nexport function sampleTransaction<T extends Transaction>(\n  transaction: T,\n  options: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'>,\n  samplingContext: SamplingContext,\n): T {\n  // nothing to do if tracing is not enabled\n  if (!hasTracingEnabled(options)) {\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n  // eslint-disable-next-line deprecation/deprecation\n  if (transaction.sampled !== undefined) {\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n    return transaction;\n  }\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler(samplingContext);\n    transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n    transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n  } else {\n    // When `enableTracing === true`, we use a sample rate of 100%\n    sampleRate = 1;\n    transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n  // only valid values are booleans or numbers between 0 and 1.)\n  if (!isValidSampleRate(sampleRate)) {\n    DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!sampleRate) {\n    DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.sampled = false;\n    return transaction;\n  }\n\n  // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n  // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n  // eslint-disable-next-line deprecation/deprecation\n  transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n  // if we're not going to keep it, we're done\n  // eslint-disable-next-line deprecation/deprecation\n  if (!transaction.sampled) {\n    DEBUG_BUILD &&\n      logger.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n    return transaction;\n  }\n\n  DEBUG_BUILD &&\n    // eslint-disable-next-line deprecation/deprecation\n    logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n  return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n  // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          rate,\n        )} of type ${JSON.stringify(typeof rate)}.`,\n      );\n    return false;\n  }\n\n  // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n  if (rate < 0 || rate > 1) {\n    DEBUG_BUILD &&\n      logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n    return false;\n  }\n  return true;\n}\n","import type { ClientOptions, CustomSamplingContext, TransactionContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { spanToTraceHeader } from '../utils/spanUtils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { sampleTransaction } from './sampling';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n  // eslint-disable-next-line deprecation/deprecation\n  const scope = this.getScope();\n  // eslint-disable-next-line deprecation/deprecation\n  const span = scope.getSpan();\n\n  return span\n    ? {\n        'sentry-trace': spanToTraceHeader(span),\n      }\n    : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n  // eslint-disable-next-line deprecation/deprecation\n  this: Hub,\n  transactionContext: TransactionContext,\n  customSamplingContext?: CustomSamplingContext,\n): Transaction {\n  // eslint-disable-next-line deprecation/deprecation\n  const client = this.getClient();\n  const options: Partial<ClientOptions> = (client && client.getOptions()) || {};\n\n  const configInstrumenter = options.instrumenter || 'sentry';\n  const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n  if (configInstrumenter !== transactionInstrumenter) {\n    DEBUG_BUILD &&\n      logger.error(\n        `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n      );\n\n    // eslint-disable-next-line deprecation/deprecation\n    transactionContext.sampled = false;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  let transaction = new Transaction(transactionContext, this);\n  transaction = sampleTransaction(transaction, options, {\n    name: transactionContext.name,\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    attributes: {\n      // eslint-disable-next-line deprecation/deprecation\n      ...transactionContext.data,\n      ...transactionContext.attributes,\n    },\n    ...customSamplingContext,\n  });\n  if (transaction.isRecording()) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n  }\n  if (client && client.emit) {\n    client.emit('startTransaction', transaction);\n  }\n  return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n  // eslint-disable-next-line deprecation/deprecation\n  hub: Hub,\n  transactionContext: TransactionContext,\n  idleTimeout: number,\n  finalTimeout: number,\n  onScope?: boolean,\n  customSamplingContext?: CustomSamplingContext,\n  heartbeatInterval?: number,\n  delayAutoFinishUntilSignal: boolean = false,\n): IdleTransaction {\n  // eslint-disable-next-line deprecation/deprecation\n  const client = hub.getClient();\n  const options: Partial<ClientOptions> = (client && client.getOptions()) || {};\n\n  // eslint-disable-next-line deprecation/deprecation\n  let transaction = new IdleTransaction(\n    transactionContext,\n    hub,\n    idleTimeout,\n    finalTimeout,\n    heartbeatInterval,\n    onScope,\n    delayAutoFinishUntilSignal,\n  );\n  transaction = sampleTransaction(transaction, options, {\n    name: transactionContext.name,\n    parentSampled: transactionContext.parentSampled,\n    transactionContext,\n    attributes: {\n      // eslint-disable-next-line deprecation/deprecation\n      ...transactionContext.data,\n      ...transactionContext.attributes,\n    },\n    ...customSamplingContext,\n  });\n  if (transaction.isRecording()) {\n    transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n  }\n  if (client && client.emit) {\n    client.emit('startTransaction', transaction);\n  }\n  return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n  const carrier = getMainCarrier();\n  if (!carrier.__SENTRY__) {\n    return;\n  }\n  carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n  if (!carrier.__SENTRY__.extensions.startTransaction) {\n    carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n  }\n  if (!carrier.__SENTRY__.extensions.traceHeaders) {\n    carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n  }\n\n  registerErrorInstrumentation();\n}\n","import type {\n  BaseTransportOptions,\n  Envelope,\n  EnvelopeItemType,\n  Event,\n  EventItem,\n  Transport,\n  TransportMakeRequestResponse,\n} from '@sentry/types';\nimport { createEnvelope, dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\n\ninterface MatchParam {\n  /** The envelope to be sent */\n  envelope: Envelope;\n  /**\n   * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n   * types to filter by - only envelopes matching the given types will be multiplexed.\n   * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n   *\n   * @param types Defaults to ['event']\n   */\n  getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n  let event: Event | undefined;\n\n  forEachEnvelopeItem(env, (item, type) => {\n    if (types.includes(type)) {\n      event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n    }\n    // bail out if we found an event\n    return !!event;\n  });\n\n  return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport<TO extends BaseTransportOptions>(\n  createTransport: (options: TO) => Transport,\n  release: string,\n): (options: TO) => Transport {\n  return options => {\n    const transport = createTransport(options);\n\n    return {\n      ...transport,\n      send: async (envelope: Envelope): Promise<void | TransportMakeRequestResponse> => {\n        const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n        if (event) {\n          event.release = release;\n        }\n        return transport.send(envelope);\n      },\n    };\n  };\n}\n\n/** Overrides the DSN in the envelope header  */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n  return createEnvelope(\n    dsn\n      ? {\n          ...envelope[0],\n          dsn,\n        }\n      : envelope[0],\n    envelope[1],\n  );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nexport function makeMultiplexedTransport<TO extends BaseTransportOptions>(\n  createTransport: (options: TO) => Transport,\n  matcher: Matcher,\n): (options: TO) => Transport {\n  return options => {\n    const fallbackTransport = createTransport(options);\n    const otherTransports = new Map<string, Transport>();\n\n    function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n      // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n      // use at the same time\n      const key = release ? `${dsn}:${release}` : dsn;\n\n      let transport = otherTransports.get(key);\n\n      if (!transport) {\n        const validatedDsn = dsnFromString(dsn);\n        if (!validatedDsn) {\n          return undefined;\n        }\n\n        const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n        transport = release\n          ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n          : createTransport({ ...options, url });\n\n        otherTransports.set(key, transport);\n      }\n\n      return [dsn, transport];\n    }\n\n    async function send(envelope: Envelope): Promise<void | TransportMakeRequestResponse> {\n      function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n        const eventTypes: EnvelopeItemType[] = types && types.length ? types : ['event'];\n        return eventFromEnvelope(envelope, eventTypes);\n      }\n\n      const transports = matcher({ envelope, getEvent })\n        .map(result => {\n          if (typeof result === 'string') {\n            return getTransport(result, undefined);\n          } else {\n            return getTransport(result.dsn, result.release);\n          }\n        })\n        .filter((t): t is [string, Transport] => !!t);\n\n      // If we have no transports to send to, use the fallback transport\n      if (transports.length === 0) {\n        // Don't override the DSN in the header for the fallback transport. '' is falsy\n        transports.push(['', fallbackTransport]);\n      }\n\n      const results = await Promise.all(\n        transports.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n      );\n\n      return results[0];\n    }\n\n    async function flush(timeout: number | undefined): Promise<boolean> {\n      const promises = [await fallbackTransport.flush(timeout)];\n      for (const [, transport] of otherTransports) {\n        promises.push(await transport.flush(timeout));\n      }\n\n      return promises.every(r => r);\n    }\n\n    return {\n      send,\n      flush,\n    };\n  };\n}\n","import type { MetricInstance } from '@sentry/types';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, SET_METRIC_TYPE } from './constants';\nimport { simpleHash } from './utils';\n\n/**\n * A metric instance representing a counter.\n */\nexport class CounterMetric implements MetricInstance {\n  public constructor(private _value: number) {}\n\n  /** @inheritDoc */\n  public get weight(): number {\n    return 1;\n  }\n\n  /** @inheritdoc */\n  public add(value: number): void {\n    this._value += value;\n  }\n\n  /** @inheritdoc */\n  public toString(): string {\n    return `${this._value}`;\n  }\n}\n\n/**\n * A metric instance representing a gauge.\n */\nexport class GaugeMetric implements MetricInstance {\n  private _last: number;\n  private _min: number;\n  private _max: number;\n  private _sum: number;\n  private _count: number;\n\n  public constructor(value: number) {\n    this._last = value;\n    this._min = value;\n    this._max = value;\n    this._sum = value;\n    this._count = 1;\n  }\n\n  /** @inheritDoc */\n  public get weight(): number {\n    return 5;\n  }\n\n  /** @inheritdoc */\n  public add(value: number): void {\n    this._last = value;\n    if (value < this._min) {\n      this._min = value;\n    }\n    if (value > this._max) {\n      this._max = value;\n    }\n    this._sum += value;\n    this._count++;\n  }\n\n  /** @inheritdoc */\n  public toString(): string {\n    return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`;\n  }\n}\n\n/**\n * A metric instance representing a distribution.\n */\nexport class DistributionMetric implements MetricInstance {\n  private _value: number[];\n\n  public constructor(first: number) {\n    this._value = [first];\n  }\n\n  /** @inheritDoc */\n  public get weight(): number {\n    return this._value.length;\n  }\n\n  /** @inheritdoc */\n  public add(value: number): void {\n    this._value.push(value);\n  }\n\n  /** @inheritdoc */\n  public toString(): string {\n    return this._value.join(':');\n  }\n}\n\n/**\n * A metric instance representing a set.\n */\nexport class SetMetric implements MetricInstance {\n  private _value: Set<number | string>;\n\n  public constructor(public first: number | string) {\n    this._value = new Set([first]);\n  }\n\n  /** @inheritDoc */\n  public get weight(): number {\n    return this._value.size;\n  }\n\n  /** @inheritdoc */\n  public add(value: number | string): void {\n    this._value.add(value);\n  }\n\n  /** @inheritdoc */\n  public toString(): string {\n    return Array.from(this._value)\n      .map(val => (typeof val === 'string' ? simpleHash(val) : val))\n      .join(':');\n  }\n}\n\nexport const METRIC_MAP = {\n  [COUNTER_METRIC_TYPE]: CounterMetric,\n  [GAUGE_METRIC_TYPE]: GaugeMetric,\n  [DISTRIBUTION_METRIC_TYPE]: DistributionMetric,\n  [SET_METRIC_TYPE]: SetMetric,\n};\n","import type { Client, ClientOptions, MeasurementUnit, MetricsAggregator, Primitive } from '@sentry/types';\nimport { timestampInSeconds } from '@sentry/utils';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants';\nimport { METRIC_MAP } from './instance';\nimport { updateMetricSummaryOnActiveSpan } from './metric-summary';\nimport type { MetricBucket, MetricType } from './types';\nimport { getBucketKey, sanitizeMetricKey, sanitizeTags, sanitizeUnit } from './utils';\n\n/**\n * A simple metrics aggregator that aggregates metrics in memory and flushes them periodically.\n * Default flush interval is 5 seconds.\n *\n * @experimental This API is experimental and might change in the future.\n */\nexport class BrowserMetricsAggregator implements MetricsAggregator {\n  // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets\n  // when the aggregator is garbage collected.\n  // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n  private _buckets: MetricBucket;\n  private readonly _interval: ReturnType<typeof setInterval>;\n\n  public constructor(private readonly _client: Client<ClientOptions>) {\n    this._buckets = new Map();\n    this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public add(\n    metricType: MetricType,\n    unsanitizedName: string,\n    value: number | string,\n    unsanitizedUnit: MeasurementUnit | undefined = 'none',\n    unsanitizedTags: Record<string, Primitive> | undefined = {},\n    maybeFloatTimestamp: number | undefined = timestampInSeconds(),\n  ): void {\n    const timestamp = Math.floor(maybeFloatTimestamp);\n    const name = sanitizeMetricKey(unsanitizedName);\n    const tags = sanitizeTags(unsanitizedTags);\n    const unit = sanitizeUnit(unsanitizedUnit as string);\n\n    const bucketKey = getBucketKey(metricType, name, unit, tags);\n\n    let bucketItem = this._buckets.get(bucketKey);\n    // If this is a set metric, we need to calculate the delta from the previous weight.\n    const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0;\n\n    if (bucketItem) {\n      bucketItem.metric.add(value);\n      // TODO(abhi): Do we need this check?\n      if (bucketItem.timestamp < timestamp) {\n        bucketItem.timestamp = timestamp;\n      }\n    } else {\n      bucketItem = {\n        // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size.\n        metric: new METRIC_MAP[metricType](value),\n        timestamp,\n        metricType,\n        name,\n        unit,\n        tags,\n      };\n      this._buckets.set(bucketKey, bucketItem);\n    }\n\n    // If value is a string, it's a set metric so calculate the delta from the previous weight.\n    const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value;\n    updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public flush(): void {\n    // short circuit if buckets are empty.\n    if (this._buckets.size === 0) {\n      return;\n    }\n\n    if (this._client.captureAggregateMetrics) {\n      // TODO(@anonrig): Use Object.values() when we support ES6+\n      const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem);\n      this._client.captureAggregateMetrics(metricBuckets);\n    }\n\n    this._buckets.clear();\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public close(): void {\n    clearInterval(this._interval);\n    this.flush();\n  }\n}\n","export const COUNTER_METRIC_TYPE = 'c' as const;\nexport const GAUGE_METRIC_TYPE = 'g' as const;\nexport const SET_METRIC_TYPE = 's' as const;\nexport const DISTRIBUTION_METRIC_TYPE = 'd' as const;\n\n/**\n * This does not match spec in https://develop.sentry.dev/sdk/metrics\n * but was chosen to optimize for the most common case in browser environments.\n */\nexport const DEFAULT_BROWSER_FLUSH_INTERVAL = 5000;\n\n/**\n * SDKs are required to bucket into 10 second intervals (rollup in seconds)\n * which is the current lower bound of metric accuracy.\n */\nexport const DEFAULT_FLUSH_INTERVAL = 10000;\n\n/**\n * The maximum number of metrics that should be stored in memory.\n */\nexport const MAX_WEIGHT = 10000;\n","import type { Client, ClientOptions, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport type { BaseClient } from '../baseclient';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\nimport { BrowserMetricsAggregator } from './browser-aggregator';\n\nconst INTEGRATION_NAME = 'MetricsAggregator';\n\nconst _metricsAggregatorIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client: BaseClient<ClientOptions>) {\n      client.metricsAggregator = new BrowserMetricsAggregator(client);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const metricsAggregatorIntegration = defineIntegration(_metricsAggregatorIntegration);\n\n/**\n * Enables Sentry metrics monitoring.\n *\n * @experimental This API is experimental and might having breaking changes in the future.\n * @deprecated Use `metricsAggegratorIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const MetricsAggregator = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  metricsAggregatorIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }>;\n","import type { ClientOptions, MeasurementUnit, Primitive } from '@sentry/types';\nimport { logger } from '@sentry/utils';\nimport type { BaseClient } from '../baseclient';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getClient, getCurrentScope } from '../exports';\nimport { spanToJSON } from '../utils/spanUtils';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, SET_METRIC_TYPE } from './constants';\nimport { MetricsAggregator, metricsAggregatorIntegration } from './integration';\nimport type { MetricType } from './types';\n\ninterface MetricData {\n  unit?: MeasurementUnit;\n  tags?: Record<string, Primitive>;\n  timestamp?: number;\n}\n\nfunction addToMetricsAggregator(\n  metricType: MetricType,\n  name: string,\n  value: number | string,\n  data: MetricData | undefined = {},\n): void {\n  const client = getClient<BaseClient<ClientOptions>>();\n  const scope = getCurrentScope();\n  if (client) {\n    if (!client.metricsAggregator) {\n      DEBUG_BUILD &&\n        logger.warn('No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs');\n      return;\n    }\n    const { unit, tags, timestamp } = data;\n    const { release, environment } = client.getOptions();\n    // eslint-disable-next-line deprecation/deprecation\n    const transaction = scope.getTransaction();\n    const metricTags: Record<string, string> = {};\n    if (release) {\n      metricTags.release = release;\n    }\n    if (environment) {\n      metricTags.environment = environment;\n    }\n    if (transaction) {\n      metricTags.transaction = spanToJSON(transaction).description || '';\n    }\n\n    DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n    client.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n  }\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function increment(name: string, value: number = 1, data?: MetricData): void {\n  addToMetricsAggregator(COUNTER_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function distribution(name: string, value: number, data?: MetricData): void {\n  addToMetricsAggregator(DISTRIBUTION_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function set(name: string, value: number | string, data?: MetricData): void {\n  addToMetricsAggregator(SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function gauge(name: string, value: number, data?: MetricData): void {\n  addToMetricsAggregator(GAUGE_METRIC_TYPE, name, value, data);\n}\n\nexport const metrics = {\n  increment,\n  distribution,\n  set,\n  gauge,\n  /** @deprecated Use `metrics.metricsAggregratorIntegration()` instead. */\n  // eslint-disable-next-line deprecation/deprecation\n  MetricsAggregator,\n  metricsAggregatorIntegration,\n};\n","import type { ParameterizedString } from '@sentry/types';\n\n/**\n * Tagged template function which returns paramaterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns String with template information in __sentry_template_string__ and __sentry_template_values__ properties\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: string[]): ParameterizedString {\n  const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n  formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n  formatted.__sentry_template_values__ = values;\n  return formatted;\n}\n","import type { MeasurementUnit } from '@sentry/types';\n\nimport { getActiveTransaction } from './utils';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit): void {\n  // eslint-disable-next-line deprecation/deprecation\n  const transaction = getActiveTransaction();\n  if (transaction) {\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.setMeasurement(name, value, unit);\n  }\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n  let lastAccessLHS: unknown = undefined;\n  let value = ops[0];\n  let i = 1;\n  while (i < ops.length) {\n    const op = ops[i] as string;\n    const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n    i += 2;\n    // by checking for loose equality to `null`, we catch both `null` and `undefined`\n    if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n      // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n      return;\n    }\n    if (op === 'access' || op === 'optionalAccess') {\n      lastAccessLHS = value;\n      value = fn(value);\n    } else if (op === 'call' || op === 'optionalCall') {\n      value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n      lastAccessLHS = undefined;\n    }\n  }\n  return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n//   let lastAccessLHS = undefined;\n//   let value = ops[0];\n//   let i = 1;\n//   while (i < ops.length) {\n//     const op = ops[i];\n//     const fn = ops[i + 1];\n//     i += 2;\n//     if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n//       return undefined;\n//     }\n//     if (op === 'access' || op === 'optionalAccess') {\n//       lastAccessLHS = value;\n//       value = fn(value);\n//     } else if (op === 'call' || op === 'optionalCall') {\n//       value = fn((...args) => value.call(lastAccessLHS, ...args));\n//       lastAccessLHS = undefined;\n//     }\n//   }\n//   return value;\n// }\n","import type { Client, DsnComponents, Hub } from '@sentry/types';\n\n/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function isSentryRequestUrl(url: string, hubOrClient: Hub | Client | undefined): boolean {\n  const client =\n    hubOrClient && isHub(hubOrClient)\n      ? // eslint-disable-next-line deprecation/deprecation\n        hubOrClient.getClient()\n      : hubOrClient;\n  const dsn = client && client.getDsn();\n  const tunnel = client && client.getOptions().tunnel;\n\n  return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url: string, tunnel: string | undefined): boolean {\n  if (!tunnel) {\n    return false;\n  }\n\n  return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url: string, dsn: DsnComponents | undefined): boolean {\n  return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str: string): string {\n  return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction isHub(hubOrClient: Hub | Client | undefined): hubOrClient is Hub {\n  // eslint-disable-next-line deprecation/deprecation\n  return (hubOrClient as Hub).getClient !== undefined;\n}\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n  // eslint-disable-next-line no-restricted-globals\n  return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n  return (\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n    (GLOBAL_OBJ as any).process !== undefined && ((GLOBAL_OBJ as any).process as ElectronProcess).type === 'renderer'\n  );\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n  callback: ReportCallback,\n  metric: Metric,\n  reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n  let prevValue: number;\n  let delta: number;\n  return (forceReport?: boolean) => {\n    if (metric.value >= 0) {\n      if (forceReport || reportAllChanges) {\n        delta = metric.value - (prevValue || 0);\n\n        // Report the metric if there's a non-zero delta or if no previous\n        // value exists (which can happen in the case of the document becoming\n        // hidden when the metric value is 0).\n        // See: https://github.com/GoogleChrome/web-vitals/issues/14\n        if (delta || prevValue === undefined) {\n          prevValue = metric.value;\n          metric.delta = delta;\n          callback(metric);\n        }\n      }\n    }\n  };\n};\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n  // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n  Omit<Window, 'document'> &\n  Partial<Pick<Window, 'document'>>;\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n  // eslint-disable-next-line deprecation/deprecation\n  const timing = WINDOW.performance.timing;\n  // eslint-disable-next-line deprecation/deprecation\n  const type = WINDOW.performance.navigation.type;\n\n  const navigationEntry: { [key: string]: number | string } = {\n    entryType: 'navigation',\n    startTime: 0,\n    type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n  };\n\n  for (const key in timing) {\n    if (key !== 'navigationStart' && key !== 'toJSON') {\n      // eslint-disable-next-line deprecation/deprecation\n      navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n    }\n  }\n  return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n  if (WINDOW.__WEB_VITALS_POLYFILL__) {\n    return (\n      WINDOW.performance &&\n      ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n        getNavigationEntryFromPerformanceTiming())\n    );\n  } else {\n    return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n  }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n  const navEntry = getNavigationEntry();\n  return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n  const navEntry = getNavigationEntry();\n  let navigationType: Metric['navigationType'] = 'navigate';\n\n  if (navEntry) {\n    if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n      navigationType = 'prerender';\n    } else {\n      navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n    }\n  }\n\n  return {\n    name,\n    value: typeof value === 'undefined' ? -1 : value,\n    rating: 'good', // Will be updated if the value changes.\n    delta: 0,\n    entries: [],\n    id: generateUniqueID(),\n    navigationType,\n  };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n  return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n  (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n  event: PerformanceEventTiming[];\n  paint: PerformancePaintTiming[];\n  'layout-shift': LayoutShift[];\n  'largest-contentful-paint': LargestContentfulPaint[];\n  'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n  navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n  resource: PerformanceResourceTiming[];\n  longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = <K extends keyof PerformanceEntryMap>(\n  type: K,\n  callback: (entries: PerformanceEntryMap[K]) => void,\n  opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n  try {\n    if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n      const po = new PerformanceObserver(list => {\n        callback(list.getEntries() as PerformanceEntryMap[K]);\n      });\n      po.observe(\n        Object.assign(\n          {\n            type,\n            buffered: true,\n          },\n          opts || {},\n        ) as PerformanceObserverInit,\n      );\n      return po;\n    }\n  } catch (e) {\n    // Do nothing.\n  }\n  return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n  (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n  const onHiddenOrPageHide = (event: Event): void => {\n    if (event.type === 'pagehide' || WINDOW.document!.visibilityState === 'hidden') {\n      cb(event);\n      if (once) {\n        removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n        removeEventListener('pagehide', onHiddenOrPageHide, true);\n      }\n    }\n  };\n\n  if (WINDOW.document) {\n    addEventListener('visibilitychange', onHiddenOrPageHide, true);\n    // Some browsers have buggy implementations of visibilitychange,\n    // so we use pagehide in addition, just to be safe.\n    addEventListener('pagehide', onHiddenOrPageHide, true);\n  }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): void => {\n  // If the document is hidden and not prerendering, assume it was always\n  // hidden and the page was loaded in the background.\n  if (WINDOW.document && WINDOW.document.visibilityState) {\n    firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n  }\n};\n\nconst trackChanges = (): void => {\n  // Update the time if/when the document becomes hidden.\n  onHidden(({ timeStamp }) => {\n    firstHiddenTime = timeStamp;\n  }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n  readonly firstHiddenTime: number;\n} => {\n  if (firstHiddenTime < 0) {\n    // If the document is hidden when this code runs, assume it was hidden\n    // since navigation start. This isn't a perfect heuristic, but it's the\n    // best we can do until an API is available to support querying past\n    // visibilityState.\n    initHiddenTime();\n    trackChanges();\n  }\n  return {\n    get firstHiddenTime() {\n      return firstHiddenTime;\n    },\n  };\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric } from '../../types';\nimport { observe } from '../observe';\n\ndeclare global {\n  interface Performance {\n    interactionCount: number;\n  }\n}\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries: Metric['entries']): void => {\n  (entries as PerformanceEventTiming[]).forEach(e => {\n    if (e.interactionId) {\n      minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n      maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n      interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n    }\n  });\n};\n\nlet po: PerformanceObserver | undefined;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = (): number => {\n  return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nexport const initInteractionCountPolyfill = (): void => {\n  if ('interactionCount' in performance || po) return;\n\n  po = observe('event', updateEstimate, {\n    type: 'event',\n    buffered: true,\n    durationThreshold: 0,\n  } as PerformanceObserverInit);\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { getInteractionCount, initInteractionCountPolyfill } from './lib/polyfills/interactionCountPolyfill';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { INPMetric } from './types/inp';\n\ninterface Interaction {\n  id: number;\n  latency: number;\n  entries: PerformanceEventTiming[];\n}\n\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = (): number => {\n  return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList: Interaction[] = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap: { [interactionId: string]: Interaction } = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry: PerformanceEventTiming): void => {\n  // The least-long of the 10 longest interactions.\n  const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const existingInteraction = longestInteractionMap[entry.interactionId!];\n\n  // Only process the entry if it's possibly one of the ten longest,\n  // or if it's part of an existing interaction.\n  if (\n    existingInteraction ||\n    longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n    entry.duration > minLongestInteraction.latency\n  ) {\n    // If the interaction already exists, update it. Otherwise create one.\n    if (existingInteraction) {\n      existingInteraction.entries.push(entry);\n      existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n    } else {\n      const interaction = {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        id: entry.interactionId!,\n        latency: entry.duration,\n        entries: [entry],\n      };\n      longestInteractionMap[interaction.id] = interaction;\n      longestInteractionList.push(interaction);\n    }\n\n    // Sort the entries by latency (descending) and keep only the top ten.\n    longestInteractionList.sort((a, b) => b.latency - a.latency);\n    longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete longestInteractionMap[i.id];\n    });\n  }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = (): Interaction => {\n  const candidateInteractionIndex = Math.min(\n    longestInteractionList.length - 1,\n    Math.floor(getInteractionCountForNavigation() / 50),\n  );\n\n  return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** INP should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onINP = (onReport: ReportCallback, opts?: ReportOpts): void => {\n  // Set defaults\n  // eslint-disable-next-line no-param-reassign\n  opts = opts || {};\n\n  // https://web.dev/inp/#what's-a-%22good%22-inp-value\n  // const thresholds = [200, 500];\n\n  // TODO(philipwalton): remove once the polyfill is no longer needed.\n  initInteractionCountPolyfill();\n\n  const metric = initMetric('INP');\n  // eslint-disable-next-line prefer-const\n  let report: ReturnType<typeof bindReporter>;\n\n  const handleEntries = (entries: INPMetric['entries']): void => {\n    entries.forEach(entry => {\n      if (entry.interactionId) {\n        processEntry(entry);\n      }\n\n      // Entries of type `first-input` don't currently have an `interactionId`,\n      // so to consider them in INP we have to first check that an existing\n      // entry doesn't match the `duration` and `startTime`.\n      // Note that this logic assumes that `event` entries are dispatched\n      // before `first-input` entries. This is true in Chrome but it is not\n      // true in Firefox; however, Firefox doesn't support interactionId, so\n      // it's not an issue at the moment.\n      // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n      if (entry.entryType === 'first-input') {\n        const noMatchingEntry = !longestInteractionList.some(interaction => {\n          return interaction.entries.some(prevEntry => {\n            return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n          });\n        });\n        if (noMatchingEntry) {\n          processEntry(entry);\n        }\n      }\n    });\n\n    const inp = estimateP98LongestInteraction();\n\n    if (inp && inp.latency !== metric.value) {\n      metric.value = inp.latency;\n      metric.entries = inp.entries;\n      report();\n    }\n  };\n\n  const po = observe('event', handleEntries, {\n    // Event Timing entries have their durations rounded to the nearest 8ms,\n    // so a duration of 40ms would be any event that spans 2.5 or more frames\n    // at 60Hz. This threshold is chosen to strike a balance between usefulness\n    // and performance. Running this callback for any interaction that spans\n    // just one or two frames is likely not worth the insight that could be\n    // gained.\n    durationThreshold: opts.durationThreshold || 40,\n  } as PerformanceObserverInit);\n\n  report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n  if (po) {\n    // Also observe entries of type `first-input`. This is useful in cases\n    // where the first interaction is less than the `durationThreshold`.\n    po.observe({ type: 'first-input', buffered: true });\n\n    onHidden(() => {\n      handleEntries(po.takeRecords() as INPMetric['entries']);\n\n      // If the interaction count shows that there were interactions but\n      // none were captured by the PerformanceObserver, report a latency of 0.\n      if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n        metric.value = 0;\n        metric.entries = [];\n      }\n\n      report(true);\n    });\n  }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record<string, boolean> = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('LCP');\n  let report: ReturnType<typeof bindReporter>;\n\n  const handleEntries = (entries: LCPMetric['entries']): void => {\n    const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n    if (lastEntry) {\n      // The startTime attribute returns the value of the renderTime if it is\n      // not 0, and the value of the loadTime otherwise. The activationStart\n      // reference is used because LCP should be relative to page activation\n      // rather than navigation start if the page was prerendered.\n      const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n      // Only report if the page wasn't hidden prior to LCP.\n      if (value < visibilityWatcher.firstHiddenTime) {\n        metric.value = value;\n        metric.entries = [lastEntry];\n        report();\n      }\n    }\n  };\n\n  const po = observe('largest-contentful-paint', handleEntries);\n\n  if (po) {\n    report = bindReporter(onReport, metric);\n\n    const stopListening = (): void => {\n      if (!reportedMetricIDs[metric.id]) {\n        handleEntries(po.takeRecords() as LCPMetric['entries']);\n        po.disconnect();\n        reportedMetricIDs[metric.id] = true;\n        report(true);\n      }\n    };\n\n    // Stop listening after input. Note: while scrolling is an input that\n    // stop LCP observation, it's unreliable since it can be programmatically\n    // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n    ['keydown', 'click'].forEach(type => {\n      if (WINDOW.document) {\n        addEventListener(type, stopListening, { once: true, capture: true });\n      }\n    });\n\n    onHidden(stopListening, true);\n\n    return stopListening;\n  }\n\n  return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getNavigationEntry } from './lib/getNavigationEntry';\nimport { initMetric } from './lib/initMetric';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { TTFBMetric } from './types/ttfb';\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback: () => void): void => {\n  if (!WINDOW.document) {\n    return;\n  }\n\n  if (WINDOW.document.prerendering) {\n    addEventListener('prerenderingchange', () => whenReady(callback), true);\n  } else if (WINDOW.document.readyState !== 'complete') {\n    addEventListener('load', () => whenReady(callback), true);\n  } else {\n    // Queue a task so the callback runs after `loadEventEnd`.\n    setTimeout(callback, 0);\n  }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nexport const onTTFB = (onReport: ReportCallback, opts?: ReportOpts): void => {\n  // Set defaults\n  // eslint-disable-next-line no-param-reassign\n  opts = opts || {};\n\n  // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n  // const thresholds = [800, 1800];\n\n  const metric = initMetric('TTFB');\n  const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n  whenReady(() => {\n    const navEntry = getNavigationEntry() as TTFBMetric['entries'][number];\n\n    if (navEntry) {\n      // The activationStart reference is used because TTFB should be\n      // relative to page activation rather than navigation start if the\n      // page was prerendered. But in cases where `activationStart` occurs\n      // after the first byte is received, this time should be clamped at 0.\n      metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n      // In some cases the value reported is negative or is larger\n      // than the current page time. Ignore these cases:\n      // https://github.com/GoogleChrome/web-vitals/issues/137\n      // https://github.com/GoogleChrome/web-vitals/issues/162\n      if (metric.value < 0 || metric.value > performance.now()) return;\n\n      metric.entries = [navEntry];\n\n      report(true);\n    }\n  });\n};\n","import { getFunctionName, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { onCLS } from './web-vitals/getCLS';\nimport { onFID } from './web-vitals/getFID';\nimport { onINP } from './web-vitals/getINP';\nimport { onLCP } from './web-vitals/getLCP';\nimport { observe } from './web-vitals/lib/observe';\nimport { onTTFB } from './web-vitals/onTTFB';\n\ntype InstrumentHandlerTypePerformanceObserver =\n  | 'longtask'\n  | 'event'\n  | 'navigation'\n  | 'paint'\n  | 'resource'\n  | 'first-input';\n\ntype InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'ttfb' | 'inp';\n\n// We provide this here manually instead of relying on a global, as this is not available in non-browser environements\n// And we do not want to expose such types\ninterface PerformanceEntry {\n  readonly duration: number;\n  readonly entryType: string;\n  readonly name: string;\n  readonly startTime: number;\n  toJSON(): Record<string, unknown>;\n}\ninterface PerformanceEventTiming extends PerformanceEntry {\n  processingStart: number;\n  processingEnd: number;\n  duration: number;\n  cancelable?: boolean;\n  target?: unknown | null;\n  interactionId?: number;\n}\n\ninterface Metric {\n  /**\n   * The name of the metric (in acronym form).\n   */\n  name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\n  /**\n   * The current value of the metric.\n   */\n  value: number;\n\n  /**\n   * The rating as to whether the metric value is within the \"good\",\n   * \"needs improvement\", or \"poor\" thresholds of the metric.\n   */\n  rating: 'good' | 'needs-improvement' | 'poor';\n\n  /**\n   * The delta between the current value and the last-reported value.\n   * On the first report, `delta` and `value` will always be the same.\n   */\n  delta: number;\n\n  /**\n   * A unique ID representing this particular metric instance. This ID can\n   * be used by an analytics tool to dedupe multiple values sent for the same\n   * metric instance, or to group multiple deltas together and calculate a\n   * total. It can also be used to differentiate multiple different metric\n   * instances sent from the same page, which can happen if the page is\n   * restored from the back/forward cache (in that case new metrics object\n   * get created).\n   */\n  id: string;\n\n  /**\n   * Any performance entries relevant to the metric value calculation.\n   * The array may also be empty if the metric value was not based on any\n   * entries (e.g. a CLS value of 0 given no layout shifts).\n   */\n  entries: PerformanceEntry[];\n\n  /**\n   * The type of navigation\n   *\n   * Navigation Timing API (or `undefined` if the browser doesn't\n   * support that API). For pages that are restored from the bfcache, this\n   * value will be 'back-forward-cache'.\n   */\n  navigationType: 'navigate' | 'reload' | 'back-forward' | 'back-forward-cache' | 'prerender';\n}\n\ntype InstrumentHandlerType = InstrumentHandlerTypeMetric | InstrumentHandlerTypePerformanceObserver;\n\ntype StopListening = undefined | void | (() => void);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstrumentHandlerCallback = (data: any) => void;\n\ntype CleanupHandlerCallback = () => void;\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\nlet _previousCls: Metric | undefined;\nlet _previousFid: Metric | undefined;\nlet _previousLcp: Metric | undefined;\nlet _previousTtfb: Metric | undefined;\nlet _previousInp: Metric | undefined;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nexport function addClsInstrumentationHandler(\n  callback: (data: { metric: Metric }) => void,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nexport function addLcpInstrumentationHandler(\n  callback: (data: { metric: Metric }) => void,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nexport function addTtfbInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n  return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addFidInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n  return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addInpInstrumentationHandler(\n  callback: (data: { metric: Omit<Metric, 'entries'> & { entries: PerformanceEventTiming[] } }) => void,\n): CleanupHandlerCallback {\n  return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\nexport function addPerformanceInstrumentationHandler(\n  type: 'event' | 'first-input',\n  callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void,\n): CleanupHandlerCallback;\nexport function addPerformanceInstrumentationHandler(\n  type: InstrumentHandlerTypePerformanceObserver,\n  callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback;\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addPerformanceInstrumentationHandler(\n  type: InstrumentHandlerTypePerformanceObserver,\n  callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback {\n  addHandler(type, callback);\n\n  if (!instrumented[type]) {\n    instrumentPerformanceObserver(type);\n    instrumented[type] = true;\n  }\n\n  return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = handlers[type];\n\n  if (!typeHandlers || !typeHandlers.length) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n\nfunction instrumentCls(): StopListening {\n  return onCLS(\n    metric => {\n      triggerHandlers('cls', {\n        metric,\n      });\n      _previousCls = metric;\n    },\n    { reportAllChanges: true },\n  );\n}\n\nfunction instrumentFid(): void {\n  return onFID(metric => {\n    triggerHandlers('fid', {\n      metric,\n    });\n    _previousFid = metric;\n  });\n}\n\nfunction instrumentLcp(): StopListening {\n  return onLCP(metric => {\n    triggerHandlers('lcp', {\n      metric,\n    });\n    _previousLcp = metric;\n  });\n}\n\nfunction instrumentTtfb(): StopListening {\n  return onTTFB(metric => {\n    triggerHandlers('ttfb', {\n      metric,\n    });\n    _previousTtfb = metric;\n  });\n}\n\nfunction instrumentInp(): void {\n  return onINP(metric => {\n    triggerHandlers('inp', {\n      metric,\n    });\n    _previousInp = metric;\n  });\n}\n\nfunction addMetricObserver(\n  type: InstrumentHandlerTypeMetric,\n  callback: InstrumentHandlerCallback,\n  instrumentFn: () => StopListening,\n  previousValue: Metric | undefined,\n  stopOnCallback = false,\n): CleanupHandlerCallback {\n  addHandler(type, callback);\n\n  let stopListening: StopListening | undefined;\n\n  if (!instrumented[type]) {\n    stopListening = instrumentFn();\n    instrumented[type] = true;\n  }\n\n  if (previousValue) {\n    callback({ metric: previousValue });\n  }\n\n  return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type: InstrumentHandlerTypePerformanceObserver): void {\n  const options: PerformanceObserverInit = {};\n\n  // Special per-type options we want to use\n  if (type === 'event') {\n    options.durationThreshold = 0;\n  }\n\n  observe(\n    type,\n    entries => {\n      triggerHandlers(type, { entries });\n    },\n    options,\n  );\n}\n\nfunction addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n  type: InstrumentHandlerType,\n  callback: InstrumentHandlerCallback,\n  stopListening: StopListening,\n): CleanupHandlerCallback {\n  return () => {\n    if (stopListening) {\n      stopListening();\n    }\n\n    const typeHandlers = handlers[type];\n\n    if (!typeHandlers) {\n      return;\n    }\n\n    const index = typeHandlers.indexOf(callback);\n    if (index !== -1) {\n      typeHandlers.splice(index, 1);\n    }\n  };\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { CLSMetric, ReportCallback, StopListening } from './types';\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onCLS = (\n  onReport: ReportCallback,\n  options: { reportAllChanges?: boolean } = {},\n): StopListening | undefined => {\n  const metric = initMetric('CLS', 0);\n  let report: ReturnType<typeof bindReporter>;\n\n  let sessionValue = 0;\n  let sessionEntries: PerformanceEntry[] = [];\n\n  // const handleEntries = (entries: Metric['entries']) => {\n  const handleEntries = (entries: LayoutShift[]): void => {\n    entries.forEach(entry => {\n      // Only count layout shifts without recent user input.\n      if (!entry.hadRecentInput) {\n        const firstSessionEntry = sessionEntries[0];\n        const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n        // If the entry occurred less than 1 second after the previous entry and\n        // less than 5 seconds after the first entry in the session, include the\n        // entry in the current session. Otherwise, start a new session.\n        if (\n          sessionValue &&\n          sessionEntries.length !== 0 &&\n          entry.startTime - lastSessionEntry.startTime < 1000 &&\n          entry.startTime - firstSessionEntry.startTime < 5000\n        ) {\n          sessionValue += entry.value;\n          sessionEntries.push(entry);\n        } else {\n          sessionValue = entry.value;\n          sessionEntries = [entry];\n        }\n\n        // If the current session value is larger than the current CLS value,\n        // update CLS and the entries contributing to it.\n        if (sessionValue > metric.value) {\n          metric.value = sessionValue;\n          metric.entries = sessionEntries;\n          if (report) {\n            report();\n          }\n        }\n      }\n    });\n  };\n\n  const po = observe('layout-shift', handleEntries);\n  if (po) {\n    report = bindReporter(onReport, metric, options.reportAllChanges);\n\n    const stopListening = (): void => {\n      handleEntries(po.takeRecords() as CLSMetric['entries']);\n      report(true);\n    };\n\n    onHidden(stopListening);\n\n    return stopListening;\n  }\n\n  return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { FIDMetric, PerformanceEventTiming, ReportCallback } from './types';\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nexport const onFID = (onReport: ReportCallback): void => {\n  const visibilityWatcher = getVisibilityWatcher();\n  const metric = initMetric('FID');\n  // eslint-disable-next-line prefer-const\n  let report: ReturnType<typeof bindReporter>;\n\n  const handleEntry = (entry: PerformanceEventTiming): void => {\n    // Only report if the page wasn't hidden prior to the first input.\n    if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n      metric.value = entry.processingStart - entry.startTime;\n      metric.entries.push(entry);\n      report(true);\n    }\n  };\n\n  const handleEntries = (entries: FIDMetric['entries']): void => {\n    (entries as PerformanceEventTiming[]).forEach(handleEntry);\n  };\n\n  const po = observe('first-input', handleEntries);\n  report = bindReporter(onReport, metric);\n\n  if (po) {\n    onHidden(() => {\n      handleEntries(po.takeRecords() as FIDMetric['entries']);\n      po.disconnect();\n    }, true);\n  }\n};\n","export const DEFAULT_ENVIRONMENT = 'production';\n","var NodeType;\r\n(function (NodeType) {\r\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n    return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n    const host = n?.host;\r\n    return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n    return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n    if (cssText.includes(' background-clip: text;') &&\r\n        !cssText.includes(' -webkit-background-clip: text;')) {\r\n        cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n    }\r\n    return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n    const { cssText } = rule;\r\n    if (cssText.split('\"').length < 3)\r\n        return cssText;\r\n    const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n    if (rule.layerName === '') {\r\n        statement.push(`layer`);\r\n    }\r\n    else if (rule.layerName) {\r\n        statement.push(`layer(${rule.layerName})`);\r\n    }\r\n    if (rule.supportsText) {\r\n        statement.push(`supports(${rule.supportsText})`);\r\n    }\r\n    if (rule.media.length) {\r\n        statement.push(rule.media.mediaText);\r\n    }\r\n    return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n    try {\r\n        const rules = s.rules || s.cssRules;\r\n        return rules\r\n            ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n            : null;\r\n    }\r\n    catch (error) {\r\n        return null;\r\n    }\r\n}\r\nfunction stringifyRule(rule) {\r\n    let importStringified;\r\n    if (isCSSImportRule(rule)) {\r\n        try {\r\n            importStringified =\r\n                stringifyStylesheet(rule.styleSheet) ||\r\n                    escapeImportStatement(rule);\r\n        }\r\n        catch (error) {\r\n        }\r\n    }\r\n    else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n        return fixSafariColons(rule.cssText);\r\n    }\r\n    return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n    const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n    return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n    return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n    return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n    constructor() {\r\n        this.idNodeMap = new Map();\r\n        this.nodeMetaMap = new WeakMap();\r\n    }\r\n    getId(n) {\r\n        if (!n)\r\n            return -1;\r\n        const id = this.getMeta(n)?.id;\r\n        return id ?? -1;\r\n    }\r\n    getNode(id) {\r\n        return this.idNodeMap.get(id) || null;\r\n    }\r\n    getIds() {\r\n        return Array.from(this.idNodeMap.keys());\r\n    }\r\n    getMeta(n) {\r\n        return this.nodeMetaMap.get(n) || null;\r\n    }\r\n    removeNodeFromMap(n) {\r\n        const id = this.getId(n);\r\n        this.idNodeMap.delete(id);\r\n        if (n.childNodes) {\r\n            n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n        }\r\n    }\r\n    has(id) {\r\n        return this.idNodeMap.has(id);\r\n    }\r\n    hasNode(node) {\r\n        return this.nodeMetaMap.has(node);\r\n    }\r\n    add(n, meta) {\r\n        const id = meta.id;\r\n        this.idNodeMap.set(id, n);\r\n        this.nodeMetaMap.set(n, meta);\r\n    }\r\n    replace(id, n) {\r\n        const oldNode = this.getNode(id);\r\n        if (oldNode) {\r\n            const meta = this.nodeMetaMap.get(oldNode);\r\n            if (meta)\r\n                this.nodeMetaMap.set(n, meta);\r\n        }\r\n        this.idNodeMap.set(id, n);\r\n    }\r\n    reset() {\r\n        this.idNodeMap = new Map();\r\n        this.nodeMetaMap = new WeakMap();\r\n    }\r\n}\r\nfunction createMirror() {\r\n    return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n    if (tagName === 'OPTION') {\r\n        tagName = 'SELECT';\r\n    }\r\n    return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n        (type && maskInputOptions[type]) ||\r\n        type === 'password' ||\r\n        (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n    let text = value || '';\r\n    if (!isMasked) {\r\n        return text;\r\n    }\r\n    if (maskInputFn) {\r\n        text = maskInputFn(text, element);\r\n    }\r\n    return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n    return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n    return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n    const ctx = canvas.getContext('2d');\r\n    if (!ctx)\r\n        return true;\r\n    const chunkSize = 50;\r\n    for (let x = 0; x < canvas.width; x += chunkSize) {\r\n        for (let y = 0; y < canvas.height; y += chunkSize) {\r\n            const getImageData = ctx.getImageData;\r\n            const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n                ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n                : getImageData;\r\n            const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n            if (pixelBuffer.some((pixel) => pixel !== 0))\r\n                return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n    if (!a || !b || a.type !== b.type)\r\n        return false;\r\n    if (a.type === NodeType.Document)\r\n        return a.compatMode === b.compatMode;\r\n    else if (a.type === NodeType.DocumentType)\r\n        return (a.name === b.name &&\r\n            a.publicId === b.publicId &&\r\n            a.systemId === b.systemId);\r\n    else if (a.type === NodeType.Comment ||\r\n        a.type === NodeType.Text ||\r\n        a.type === NodeType.CDATA)\r\n        return a.textContent === b.textContent;\r\n    else if (a.type === NodeType.Element)\r\n        return (a.tagName === b.tagName &&\r\n            JSON.stringify(a.attributes) ===\r\n                JSON.stringify(b.attributes) &&\r\n            a.isSVG === b.isSVG &&\r\n            a.needBlock === b.needBlock);\r\n    return false;\r\n}\r\nfunction getInputType(element) {\r\n    const type = element.type;\r\n    return element.hasAttribute('data-rr-is-password')\r\n        ? 'password'\r\n        : type\r\n            ?\r\n                toLowerCase(type)\r\n            : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n    if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n        return el.getAttribute('value') || '';\r\n    }\r\n    return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n    return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n    if (element instanceof HTMLFormElement) {\r\n        return 'form';\r\n    }\r\n    const processedTagName = toLowerCase(element.tagName);\r\n    if (tagNameRegex.test(processedTagName)) {\r\n        return 'div';\r\n    }\r\n    return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n    let origin = '';\r\n    if (url.indexOf('//') > -1) {\r\n        origin = url.split('/').slice(0, 3).join('/');\r\n    }\r\n    else {\r\n        origin = url.split('/')[0];\r\n    }\r\n    origin = origin.split('?')[0];\r\n    return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n    return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n        const filePath = path1 || path2 || path3;\r\n        const maybeQuote = quote1 || quote2 || '';\r\n        if (!filePath) {\r\n            return origin;\r\n        }\r\n        if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n        }\r\n        if (DATA_URI.test(filePath)) {\r\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n        }\r\n        if (filePath[0] === '/') {\r\n            return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n        }\r\n        const stack = href.split('/');\r\n        const parts = filePath.split('/');\r\n        stack.pop();\r\n        for (const part of parts) {\r\n            if (part === '.') {\r\n                continue;\r\n            }\r\n            else if (part === '..') {\r\n                stack.pop();\r\n            }\r\n            else {\r\n                stack.push(part);\r\n            }\r\n        }\r\n        return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n    });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n    if (attributeValue.trim() === '') {\r\n        return attributeValue;\r\n    }\r\n    let pos = 0;\r\n    function collectCharacters(regEx) {\r\n        let chars;\r\n        const match = regEx.exec(attributeValue.substring(pos));\r\n        if (match) {\r\n            chars = match[0];\r\n            pos += chars.length;\r\n            return chars;\r\n        }\r\n        return '';\r\n    }\r\n    const output = [];\r\n    while (true) {\r\n        collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n        if (pos >= attributeValue.length) {\r\n            break;\r\n        }\r\n        let url = collectCharacters(SRCSET_NOT_SPACES);\r\n        if (url.slice(-1) === ',') {\r\n            url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n            output.push(url);\r\n        }\r\n        else {\r\n            let descriptorsStr = '';\r\n            url = absoluteToDoc(doc, url);\r\n            let inParens = false;\r\n            while (true) {\r\n                const c = attributeValue.charAt(pos);\r\n                if (c === '') {\r\n                    output.push((url + descriptorsStr).trim());\r\n                    break;\r\n                }\r\n                else if (!inParens) {\r\n                    if (c === ',') {\r\n                        pos += 1;\r\n                        output.push((url + descriptorsStr).trim());\r\n                        break;\r\n                    }\r\n                    else if (c === '(') {\r\n                        inParens = true;\r\n                    }\r\n                }\r\n                else {\r\n                    if (c === ')') {\r\n                        inParens = false;\r\n                    }\r\n                }\r\n                descriptorsStr += c;\r\n                pos += 1;\r\n            }\r\n        }\r\n    }\r\n    return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n    if (!attributeValue || attributeValue.trim() === '') {\r\n        return attributeValue;\r\n    }\r\n    const a = doc.createElement('a');\r\n    a.href = attributeValue;\r\n    return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n    return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n    const a = document.createElement('a');\r\n    a.href = '';\r\n    return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n    if (!value) {\r\n        return value;\r\n    }\r\n    if (name === 'src' ||\r\n        (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'xlink:href' && value[0] !== '#') {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'background' &&\r\n        (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'srcset') {\r\n        return getAbsoluteSrcsetString(doc, value);\r\n    }\r\n    else if (name === 'style') {\r\n        return absoluteToStylesheet(value, getHref());\r\n    }\r\n    else if (tagName === 'object' && name === 'data') {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    if (typeof maskAttributeFn === 'function') {\r\n        return maskAttributeFn(name, value, element);\r\n    }\r\n    return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n    return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n    try {\r\n        if (unblockSelector && element.matches(unblockSelector)) {\r\n            return false;\r\n        }\r\n        if (typeof blockClass === 'string') {\r\n            if (element.classList.contains(blockClass)) {\r\n                return true;\r\n            }\r\n        }\r\n        else {\r\n            for (let eIndex = element.classList.length; eIndex--;) {\r\n                const className = element.classList[eIndex];\r\n                if (blockClass.test(className)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        if (blockSelector) {\r\n            return element.matches(blockSelector);\r\n        }\r\n    }\r\n    catch (e) {\r\n    }\r\n    return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n    for (let eIndex = el.classList.length; eIndex--;) {\r\n        const className = el.classList[eIndex];\r\n        if (regex.test(className)) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n    if (!node)\r\n        return -1;\r\n    if (node.nodeType !== node.ELEMENT_NODE)\r\n        return -1;\r\n    if (distance > limit)\r\n        return -1;\r\n    if (matchPredicate(node))\r\n        return distance;\r\n    return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n    return (node) => {\r\n        const el = node;\r\n        if (el === null)\r\n            return false;\r\n        try {\r\n            if (className) {\r\n                if (typeof className === 'string') {\r\n                    if (el.matches(`.${className}`))\r\n                        return true;\r\n                }\r\n                else if (elementClassMatchesRegex(el, className)) {\r\n                    return true;\r\n                }\r\n            }\r\n            if (selector && el.matches(selector))\r\n                return true;\r\n            return false;\r\n        }\r\n        catch {\r\n            return false;\r\n        }\r\n    };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n    try {\r\n        const el = node.nodeType === node.ELEMENT_NODE\r\n            ? node\r\n            : node.parentElement;\r\n        if (el === null)\r\n            return false;\r\n        if (el.tagName === 'INPUT') {\r\n            const autocomplete = el.getAttribute('autocomplete');\r\n            const disallowedAutocompleteValues = [\r\n                'current-password',\r\n                'new-password',\r\n                'cc-number',\r\n                'cc-exp',\r\n                'cc-exp-month',\r\n                'cc-exp-year',\r\n                'cc-csc',\r\n            ];\r\n            if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n                return true;\r\n            }\r\n        }\r\n        let maskDistance = -1;\r\n        let unmaskDistance = -1;\r\n        if (maskAllText) {\r\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n            if (unmaskDistance < 0) {\r\n                return true;\r\n            }\r\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n        }\r\n        else {\r\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n            if (maskDistance < 0) {\r\n                return false;\r\n            }\r\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n        }\r\n        return maskDistance >= 0\r\n            ? unmaskDistance >= 0\r\n                ? maskDistance <= unmaskDistance\r\n                : true\r\n            : unmaskDistance >= 0\r\n                ? false\r\n                : !!maskAllText;\r\n    }\r\n    catch (e) {\r\n    }\r\n    return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n    const win = iframeEl.contentWindow;\r\n    if (!win) {\r\n        return;\r\n    }\r\n    let fired = false;\r\n    let readyState;\r\n    try {\r\n        readyState = win.document.readyState;\r\n    }\r\n    catch (error) {\r\n        return;\r\n    }\r\n    if (readyState !== 'complete') {\r\n        const timer = setTimeout(() => {\r\n            if (!fired) {\r\n                listener();\r\n                fired = true;\r\n            }\r\n        }, iframeLoadTimeout);\r\n        iframeEl.addEventListener('load', () => {\r\n            clearTimeout(timer);\r\n            fired = true;\r\n            listener();\r\n        });\r\n        return;\r\n    }\r\n    const blankUrl = 'about:blank';\r\n    if (win.location.href !== blankUrl ||\r\n        iframeEl.src === blankUrl ||\r\n        iframeEl.src === '') {\r\n        setTimeout(listener, 0);\r\n        return iframeEl.addEventListener('load', listener);\r\n    }\r\n    iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n    let fired = false;\r\n    let styleSheetLoaded;\r\n    try {\r\n        styleSheetLoaded = link.sheet;\r\n    }\r\n    catch (error) {\r\n        return;\r\n    }\r\n    if (styleSheetLoaded)\r\n        return;\r\n    const timer = setTimeout(() => {\r\n        if (!fired) {\r\n            listener();\r\n            fired = true;\r\n        }\r\n    }, styleSheetLoadTimeout);\r\n    link.addEventListener('load', () => {\r\n        clearTimeout(timer);\r\n        fired = true;\r\n        listener();\r\n    });\r\n}\r\nfunction serializeNode(n, options) {\r\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n    const rootId = getRootId(doc, mirror);\r\n    switch (n.nodeType) {\r\n        case n.DOCUMENT_NODE:\r\n            if (n.compatMode !== 'CSS1Compat') {\r\n                return {\r\n                    type: NodeType.Document,\r\n                    childNodes: [],\r\n                    compatMode: n.compatMode,\r\n                };\r\n            }\r\n            else {\r\n                return {\r\n                    type: NodeType.Document,\r\n                    childNodes: [],\r\n                };\r\n            }\r\n        case n.DOCUMENT_TYPE_NODE:\r\n            return {\r\n                type: NodeType.DocumentType,\r\n                name: n.name,\r\n                publicId: n.publicId,\r\n                systemId: n.systemId,\r\n                rootId,\r\n            };\r\n        case n.ELEMENT_NODE:\r\n            return serializeElementNode(n, {\r\n                doc,\r\n                blockClass,\r\n                blockSelector,\r\n                unblockSelector,\r\n                inlineStylesheet,\r\n                maskAttributeFn,\r\n                maskInputOptions,\r\n                maskInputFn,\r\n                dataURLOptions,\r\n                inlineImages,\r\n                recordCanvas,\r\n                keepIframeSrcFn,\r\n                newlyAddedElement,\r\n                rootId,\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n            });\r\n        case n.TEXT_NODE:\r\n            return serializeTextNode(n, {\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n                maskTextFn,\r\n                maskInputOptions,\r\n                maskInputFn,\r\n                rootId,\r\n            });\r\n        case n.CDATA_SECTION_NODE:\r\n            return {\r\n                type: NodeType.CDATA,\r\n                textContent: '',\r\n                rootId,\r\n            };\r\n        case n.COMMENT_NODE:\r\n            return {\r\n                type: NodeType.Comment,\r\n                textContent: n.textContent || '',\r\n                rootId,\r\n            };\r\n        default:\r\n            return false;\r\n    }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n    if (!mirror.hasNode(doc))\r\n        return undefined;\r\n    const docId = mirror.getId(doc);\r\n    return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n    const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n    const parentTagName = n.parentNode && n.parentNode.tagName;\r\n    let textContent = n.textContent;\r\n    const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n    const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n    const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n    if (isStyle && textContent) {\r\n        try {\r\n            if (n.nextSibling || n.previousSibling) {\r\n            }\r\n            else if (n.parentNode.sheet?.cssRules) {\r\n                textContent = stringifyStylesheet(n.parentNode.sheet);\r\n            }\r\n        }\r\n        catch (err) {\r\n            console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n        }\r\n        textContent = absoluteToStylesheet(textContent, getHref());\r\n    }\r\n    if (isScript) {\r\n        textContent = 'SCRIPT_PLACEHOLDER';\r\n    }\r\n    const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n    if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n        textContent = maskTextFn\r\n            ? maskTextFn(textContent, n.parentElement)\r\n            : textContent.replace(/[\\S]/g, '*');\r\n    }\r\n    if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n        textContent = maskInputFn\r\n            ? maskInputFn(textContent, n.parentNode)\r\n            : textContent.replace(/[\\S]/g, '*');\r\n    }\r\n    if (parentTagName === 'OPTION' && textContent) {\r\n        const isInputMasked = shouldMaskInput({\r\n            type: null,\r\n            tagName: parentTagName,\r\n            maskInputOptions,\r\n        });\r\n        textContent = maskInputValue({\r\n            isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n            element: n,\r\n            value: textContent,\r\n            maskInputFn,\r\n        });\r\n    }\r\n    return {\r\n        type: NodeType.Text,\r\n        textContent: textContent || '',\r\n        isStyle,\r\n        rootId,\r\n    };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n    const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n    const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n    const tagName = getValidTagName(n);\r\n    let attributes = {};\r\n    const len = n.attributes.length;\r\n    for (let i = 0; i < len; i++) {\r\n        const attr = n.attributes[i];\r\n        if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n            attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n        }\r\n    }\r\n    if (tagName === 'link' && inlineStylesheet) {\r\n        const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n            return s.href === n.href;\r\n        });\r\n        let cssText = null;\r\n        if (stylesheet) {\r\n            cssText = stringifyStylesheet(stylesheet);\r\n        }\r\n        if (cssText) {\r\n            delete attributes.rel;\r\n            delete attributes.href;\r\n            attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n        }\r\n    }\r\n    if (tagName === 'style' &&\r\n        n.sheet &&\r\n        !(n.innerText || n.textContent || '').trim().length) {\r\n        const cssText = stringifyStylesheet(n.sheet);\r\n        if (cssText) {\r\n            attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n        }\r\n    }\r\n    if (tagName === 'input' ||\r\n        tagName === 'textarea' ||\r\n        tagName === 'select' ||\r\n        tagName === 'option') {\r\n        const el = n;\r\n        const type = getInputType(el);\r\n        const value = getInputValue(el, toUpperCase(tagName), type);\r\n        const checked = el.checked;\r\n        if (type !== 'submit' && type !== 'button' && value) {\r\n            const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n                type,\r\n                tagName: toUpperCase(tagName),\r\n                maskInputOptions,\r\n            }));\r\n            attributes.value = maskInputValue({\r\n                isMasked: forceMask,\r\n                element: el,\r\n                value,\r\n                maskInputFn,\r\n            });\r\n        }\r\n        if (checked) {\r\n            attributes.checked = checked;\r\n        }\r\n    }\r\n    if (tagName === 'option') {\r\n        if (n.selected && !maskInputOptions['select']) {\r\n            attributes.selected = true;\r\n        }\r\n        else {\r\n            delete attributes.selected;\r\n        }\r\n    }\r\n    if (tagName === 'canvas' && recordCanvas) {\r\n        if (n.__context === '2d') {\r\n            if (!is2DCanvasBlank(n)) {\r\n                attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            }\r\n        }\r\n        else if (!('__context' in n)) {\r\n            const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            const blankCanvas = document.createElement('canvas');\r\n            blankCanvas.width = n.width;\r\n            blankCanvas.height = n.height;\r\n            const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            if (canvasDataURL !== blankCanvasDataURL) {\r\n                attributes.rr_dataURL = canvasDataURL;\r\n            }\r\n        }\r\n    }\r\n    if (tagName === 'img' && inlineImages) {\r\n        if (!canvasService) {\r\n            canvasService = doc.createElement('canvas');\r\n            canvasCtx = canvasService.getContext('2d');\r\n        }\r\n        const image = n;\r\n        const oldValue = image.crossOrigin;\r\n        image.crossOrigin = 'anonymous';\r\n        const recordInlineImage = () => {\r\n            image.removeEventListener('load', recordInlineImage);\r\n            try {\r\n                canvasService.width = image.naturalWidth;\r\n                canvasService.height = image.naturalHeight;\r\n                canvasCtx.drawImage(image, 0, 0);\r\n                attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            }\r\n            catch (err) {\r\n                console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n            }\r\n            oldValue\r\n                ? (attributes.crossOrigin = oldValue)\r\n                : image.removeAttribute('crossorigin');\r\n        };\r\n        if (image.complete && image.naturalWidth !== 0)\r\n            recordInlineImage();\r\n        else\r\n            image.addEventListener('load', recordInlineImage);\r\n    }\r\n    if (tagName === 'audio' || tagName === 'video') {\r\n        attributes.rr_mediaState = n.paused\r\n            ? 'paused'\r\n            : 'played';\r\n        attributes.rr_mediaCurrentTime = n.currentTime;\r\n    }\r\n    if (!newlyAddedElement) {\r\n        if (n.scrollLeft) {\r\n            attributes.rr_scrollLeft = n.scrollLeft;\r\n        }\r\n        if (n.scrollTop) {\r\n            attributes.rr_scrollTop = n.scrollTop;\r\n        }\r\n    }\r\n    if (needBlock) {\r\n        const { width, height } = n.getBoundingClientRect();\r\n        attributes = {\r\n            class: attributes.class,\r\n            rr_width: `${width}px`,\r\n            rr_height: `${height}px`,\r\n        };\r\n    }\r\n    if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n        if (!n.contentDocument) {\r\n            attributes.rr_src = attributes.src;\r\n        }\r\n        delete attributes.src;\r\n    }\r\n    let isCustomElement;\r\n    try {\r\n        if (customElements.get(tagName))\r\n            isCustomElement = true;\r\n    }\r\n    catch (e) {\r\n    }\r\n    return {\r\n        type: NodeType.Element,\r\n        tagName,\r\n        attributes,\r\n        childNodes: [],\r\n        isSVG: isSVGElement(n) || undefined,\r\n        needBlock,\r\n        rootId,\r\n        isCustom: isCustomElement,\r\n    };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n    if (maybeAttr === undefined || maybeAttr === null) {\r\n        return '';\r\n    }\r\n    else {\r\n        return maybeAttr.toLowerCase();\r\n    }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n    if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n        return true;\r\n    }\r\n    else if (sn.type === NodeType.Element) {\r\n        if (slimDOMOptions.script &&\r\n            (sn.tagName === 'script' ||\r\n                (sn.tagName === 'link' &&\r\n                    (sn.attributes.rel === 'preload' ||\r\n                        sn.attributes.rel === 'modulepreload') &&\r\n                    sn.attributes.as === 'script') ||\r\n                (sn.tagName === 'link' &&\r\n                    sn.attributes.rel === 'prefetch' &&\r\n                    typeof sn.attributes.href === 'string' &&\r\n                    sn.attributes.href.endsWith('.js')))) {\r\n            return true;\r\n        }\r\n        else if (slimDOMOptions.headFavicon &&\r\n            ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n                (sn.tagName === 'meta' &&\r\n                    (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n                        lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n            return true;\r\n        }\r\n        else if (sn.tagName === 'meta') {\r\n            if (slimDOMOptions.headMetaDescKeywords &&\r\n                lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaSocial &&\r\n                (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n                    lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n                    lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaRobots &&\r\n                (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n                    lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n                    lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaHttpEquiv &&\r\n                sn.attributes['http-equiv'] !== undefined) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaAuthorship &&\r\n                (lowerIfExists(sn.attributes.name) === 'author' ||\r\n                    lowerIfExists(sn.attributes.name) === 'generator' ||\r\n                    lowerIfExists(sn.attributes.name) === 'framework' ||\r\n                    lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n                    lowerIfExists(sn.attributes.name) === 'progid' ||\r\n                    lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n                    lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaVerification &&\r\n                (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n                    lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n                    lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n                    lowerIfExists(sn.attributes.name) === 'verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n    let { preserveWhiteSpace = true } = options;\r\n    const _serializedNode = serializeNode(n, {\r\n        doc,\r\n        mirror,\r\n        blockClass,\r\n        blockSelector,\r\n        maskAllText,\r\n        unblockSelector,\r\n        maskTextClass,\r\n        unmaskTextClass,\r\n        maskTextSelector,\r\n        unmaskTextSelector,\r\n        inlineStylesheet,\r\n        maskInputOptions,\r\n        maskAttributeFn,\r\n        maskTextFn,\r\n        maskInputFn,\r\n        dataURLOptions,\r\n        inlineImages,\r\n        recordCanvas,\r\n        keepIframeSrcFn,\r\n        newlyAddedElement,\r\n    });\r\n    if (!_serializedNode) {\r\n        console.warn(n, 'not serialized');\r\n        return null;\r\n    }\r\n    let id;\r\n    if (mirror.hasNode(n)) {\r\n        id = mirror.getId(n);\r\n    }\r\n    else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n        (!preserveWhiteSpace &&\r\n            _serializedNode.type === NodeType.Text &&\r\n            !_serializedNode.isStyle &&\r\n            !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n        id = IGNORED_NODE;\r\n    }\r\n    else {\r\n        id = genId();\r\n    }\r\n    const serializedNode = Object.assign(_serializedNode, { id });\r\n    mirror.add(n, serializedNode);\r\n    if (id === IGNORED_NODE) {\r\n        return null;\r\n    }\r\n    if (onSerialize) {\r\n        onSerialize(n);\r\n    }\r\n    let recordChild = !skipChild;\r\n    if (serializedNode.type === NodeType.Element) {\r\n        recordChild = recordChild && !serializedNode.needBlock;\r\n        delete serializedNode.needBlock;\r\n        const shadowRoot = n.shadowRoot;\r\n        if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n            serializedNode.isShadowHost = true;\r\n    }\r\n    if ((serializedNode.type === NodeType.Document ||\r\n        serializedNode.type === NodeType.Element) &&\r\n        recordChild) {\r\n        if (slimDOMOptions.headWhitespace &&\r\n            serializedNode.type === NodeType.Element &&\r\n            serializedNode.tagName === 'head') {\r\n            preserveWhiteSpace = false;\r\n        }\r\n        const bypassOptions = {\r\n            doc,\r\n            mirror,\r\n            blockClass,\r\n            blockSelector,\r\n            maskAllText,\r\n            unblockSelector,\r\n            maskTextClass,\r\n            unmaskTextClass,\r\n            maskTextSelector,\r\n            unmaskTextSelector,\r\n            skipChild,\r\n            inlineStylesheet,\r\n            maskInputOptions,\r\n            maskAttributeFn,\r\n            maskTextFn,\r\n            maskInputFn,\r\n            slimDOMOptions,\r\n            dataURLOptions,\r\n            inlineImages,\r\n            recordCanvas,\r\n            preserveWhiteSpace,\r\n            onSerialize,\r\n            onIframeLoad,\r\n            iframeLoadTimeout,\r\n            onStylesheetLoad,\r\n            stylesheetLoadTimeout,\r\n            keepIframeSrcFn,\r\n        };\r\n        for (const childN of Array.from(n.childNodes)) {\r\n            const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n            if (serializedChildNode) {\r\n                serializedNode.childNodes.push(serializedChildNode);\r\n            }\r\n        }\r\n        if (isElement(n) && n.shadowRoot) {\r\n            for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n                const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n                if (serializedChildNode) {\r\n                    isNativeShadowDom(n.shadowRoot) &&\r\n                        (serializedChildNode.isShadow = true);\r\n                    serializedNode.childNodes.push(serializedChildNode);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (n.parentNode &&\r\n        isShadowRoot(n.parentNode) &&\r\n        isNativeShadowDom(n.parentNode)) {\r\n        serializedNode.isShadow = true;\r\n    }\r\n    if (serializedNode.type === NodeType.Element &&\r\n        serializedNode.tagName === 'iframe') {\r\n        onceIframeLoaded(n, () => {\r\n            const iframeDoc = n.contentDocument;\r\n            if (iframeDoc && onIframeLoad) {\r\n                const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n                    doc: iframeDoc,\r\n                    mirror,\r\n                    blockClass,\r\n                    blockSelector,\r\n                    unblockSelector,\r\n                    maskAllText,\r\n                    maskTextClass,\r\n                    unmaskTextClass,\r\n                    maskTextSelector,\r\n                    unmaskTextSelector,\r\n                    skipChild: false,\r\n                    inlineStylesheet,\r\n                    maskInputOptions,\r\n                    maskAttributeFn,\r\n                    maskTextFn,\r\n                    maskInputFn,\r\n                    slimDOMOptions,\r\n                    dataURLOptions,\r\n                    inlineImages,\r\n                    recordCanvas,\r\n                    preserveWhiteSpace,\r\n                    onSerialize,\r\n                    onIframeLoad,\r\n                    iframeLoadTimeout,\r\n                    onStylesheetLoad,\r\n                    stylesheetLoadTimeout,\r\n                    keepIframeSrcFn,\r\n                });\r\n                if (serializedIframeNode) {\r\n                    onIframeLoad(n, serializedIframeNode);\r\n                }\r\n            }\r\n        }, iframeLoadTimeout);\r\n    }\r\n    if (serializedNode.type === NodeType.Element &&\r\n        serializedNode.tagName === 'link' &&\r\n        serializedNode.attributes.rel === 'stylesheet') {\r\n        onceStylesheetLoaded(n, () => {\r\n            if (onStylesheetLoad) {\r\n                const serializedLinkNode = serializeNodeWithId(n, {\r\n                    doc,\r\n                    mirror,\r\n                    blockClass,\r\n                    blockSelector,\r\n                    unblockSelector,\r\n                    maskAllText,\r\n                    maskTextClass,\r\n                    unmaskTextClass,\r\n                    maskTextSelector,\r\n                    unmaskTextSelector,\r\n                    skipChild: false,\r\n                    inlineStylesheet,\r\n                    maskInputOptions,\r\n                    maskAttributeFn,\r\n                    maskTextFn,\r\n                    maskInputFn,\r\n                    slimDOMOptions,\r\n                    dataURLOptions,\r\n                    inlineImages,\r\n                    recordCanvas,\r\n                    preserveWhiteSpace,\r\n                    onSerialize,\r\n                    onIframeLoad,\r\n                    iframeLoadTimeout,\r\n                    onStylesheetLoad,\r\n                    stylesheetLoadTimeout,\r\n                    keepIframeSrcFn,\r\n                });\r\n                if (serializedLinkNode) {\r\n                    onStylesheetLoad(n, serializedLinkNode);\r\n                }\r\n            }\r\n        }, stylesheetLoadTimeout);\r\n    }\r\n    return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n    const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n    const maskInputOptions = maskAllInputs === true\r\n        ? {\r\n            color: true,\r\n            date: true,\r\n            'datetime-local': true,\r\n            email: true,\r\n            month: true,\r\n            number: true,\r\n            range: true,\r\n            search: true,\r\n            tel: true,\r\n            text: true,\r\n            time: true,\r\n            url: true,\r\n            week: true,\r\n            textarea: true,\r\n            select: true,\r\n        }\r\n        : maskAllInputs === false\r\n            ? {}\r\n            : maskAllInputs;\r\n    const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n        ?\r\n            {\r\n                script: true,\r\n                comment: true,\r\n                headFavicon: true,\r\n                headWhitespace: true,\r\n                headMetaDescKeywords: slimDOM === 'all',\r\n                headMetaSocial: true,\r\n                headMetaRobots: true,\r\n                headMetaHttpEquiv: true,\r\n                headMetaAuthorship: true,\r\n                headMetaVerification: true,\r\n            }\r\n        : slimDOM === false\r\n            ? {}\r\n            : slimDOM;\r\n    return serializeNodeWithId(n, {\r\n        doc: n,\r\n        mirror,\r\n        blockClass,\r\n        blockSelector,\r\n        unblockSelector,\r\n        maskAllText,\r\n        maskTextClass,\r\n        unmaskTextClass,\r\n        maskTextSelector,\r\n        unmaskTextSelector,\r\n        skipChild: false,\r\n        inlineStylesheet,\r\n        maskInputOptions,\r\n        maskAttributeFn,\r\n        maskTextFn,\r\n        maskInputFn,\r\n        slimDOMOptions,\r\n        dataURLOptions,\r\n        inlineImages,\r\n        recordCanvas,\r\n        preserveWhiteSpace,\r\n        onSerialize,\r\n        onIframeLoad,\r\n        iframeLoadTimeout,\r\n        onStylesheetLoad,\r\n        stylesheetLoadTimeout,\r\n        keepIframeSrcFn,\r\n        newlyAddedElement: false,\r\n    });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n    let lineno = 1;\r\n    let column = 1;\r\n    function updatePosition(str) {\r\n        const lines = str.match(/\\n/g);\r\n        if (lines) {\r\n            lineno += lines.length;\r\n        }\r\n        const i = str.lastIndexOf('\\n');\r\n        column = i === -1 ? column + str.length : str.length - i;\r\n    }\r\n    function position() {\r\n        const start = { line: lineno, column };\r\n        return (node) => {\r\n            node.position = new Position(start);\r\n            whitespace();\r\n            return node;\r\n        };\r\n    }\r\n    class Position {\r\n        constructor(start) {\r\n            this.start = start;\r\n            this.end = { line: lineno, column };\r\n            this.source = options.source;\r\n        }\r\n    }\r\n    Position.prototype.content = css;\r\n    const errorsList = [];\r\n    function error(msg) {\r\n        const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n        err.reason = msg;\r\n        err.filename = options.source;\r\n        err.line = lineno;\r\n        err.column = column;\r\n        err.source = css;\r\n        if (options.silent) {\r\n            errorsList.push(err);\r\n        }\r\n        else {\r\n            throw err;\r\n        }\r\n    }\r\n    function stylesheet() {\r\n        const rulesList = rules();\r\n        return {\r\n            type: 'stylesheet',\r\n            stylesheet: {\r\n                source: options.source,\r\n                rules: rulesList,\r\n                parsingErrors: errorsList,\r\n            },\r\n        };\r\n    }\r\n    function open() {\r\n        return match(/^{\\s*/);\r\n    }\r\n    function close() {\r\n        return match(/^}/);\r\n    }\r\n    function rules() {\r\n        let node;\r\n        const rules = [];\r\n        whitespace();\r\n        comments(rules);\r\n        while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n            if (node) {\r\n                rules.push(node);\r\n                comments(rules);\r\n            }\r\n        }\r\n        return rules;\r\n    }\r\n    function match(re) {\r\n        const m = re.exec(css);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const str = m[0];\r\n        updatePosition(str);\r\n        css = css.slice(str.length);\r\n        return m;\r\n    }\r\n    function whitespace() {\r\n        match(/^\\s*/);\r\n    }\r\n    function comments(rules = []) {\r\n        let c;\r\n        while ((c = comment())) {\r\n            if (c) {\r\n                rules.push(c);\r\n            }\r\n            c = comment();\r\n        }\r\n        return rules;\r\n    }\r\n    function comment() {\r\n        const pos = position();\r\n        if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n            return;\r\n        }\r\n        let i = 2;\r\n        while ('' !== css.charAt(i) &&\r\n            ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n            ++i;\r\n        }\r\n        i += 2;\r\n        if ('' === css.charAt(i - 1)) {\r\n            return error('End of comment missing');\r\n        }\r\n        const str = css.slice(2, i - 2);\r\n        column += 2;\r\n        updatePosition(str);\r\n        css = css.slice(i);\r\n        column += 2;\r\n        return pos({\r\n            type: 'comment',\r\n            comment: str,\r\n        });\r\n    }\r\n    function selector() {\r\n        whitespace();\r\n        while (css[0] == '}') {\r\n            error('extra closing bracket');\r\n            css = css.slice(1);\r\n            whitespace();\r\n        }\r\n        const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const cleanedInput = m[0]\r\n            .trim()\r\n            .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n            .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n            return m.replace(/,/g, '\\u200C');\r\n        });\r\n        return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n    }\r\n    function customSplit(input) {\r\n        const result = [];\r\n        let currentSegment = '';\r\n        let depthParentheses = 0;\r\n        let depthBrackets = 0;\r\n        let currentStringChar = null;\r\n        for (const char of input) {\r\n            const hasStringEscape = currentSegment.endsWith('\\\\');\r\n            if (currentStringChar) {\r\n                if (currentStringChar === char && !hasStringEscape) {\r\n                    currentStringChar = null;\r\n                }\r\n            }\r\n            else if (char === '(') {\r\n                depthParentheses++;\r\n            }\r\n            else if (char === ')') {\r\n                depthParentheses--;\r\n            }\r\n            else if (char === '[') {\r\n                depthBrackets++;\r\n            }\r\n            else if (char === ']') {\r\n                depthBrackets--;\r\n            }\r\n            else if ('\\'\"'.includes(char)) {\r\n                currentStringChar = char;\r\n            }\r\n            if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n                result.push(currentSegment);\r\n                currentSegment = '';\r\n            }\r\n            else {\r\n                currentSegment += char;\r\n            }\r\n        }\r\n        if (currentSegment) {\r\n            result.push(currentSegment);\r\n        }\r\n        return result;\r\n    }\r\n    function declaration() {\r\n        const pos = position();\r\n        const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n        if (!propMatch) {\r\n            return;\r\n        }\r\n        const prop = trim(propMatch[0]);\r\n        if (!match(/^:\\s*/)) {\r\n            return error(`property missing ':'`);\r\n        }\r\n        const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n        const ret = pos({\r\n            type: 'declaration',\r\n            property: prop.replace(commentre, ''),\r\n            value: val ? trim(val[0]).replace(commentre, '') : '',\r\n        });\r\n        match(/^[;\\s]*/);\r\n        return ret;\r\n    }\r\n    function declarations() {\r\n        const decls = [];\r\n        if (!open()) {\r\n            return error(`missing '{'`);\r\n        }\r\n        comments(decls);\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            if (decl !== false) {\r\n                decls.push(decl);\r\n                comments(decls);\r\n            }\r\n            decl = declaration();\r\n        }\r\n        if (!close()) {\r\n            return error(`missing '}'`);\r\n        }\r\n        return decls;\r\n    }\r\n    function keyframe() {\r\n        let m;\r\n        const vals = [];\r\n        const pos = position();\r\n        while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n            vals.push(m[1]);\r\n            match(/^,\\s*/);\r\n        }\r\n        if (!vals.length) {\r\n            return;\r\n        }\r\n        return pos({\r\n            type: 'keyframe',\r\n            values: vals,\r\n            declarations: declarations(),\r\n        });\r\n    }\r\n    function atkeyframes() {\r\n        const pos = position();\r\n        let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const vendor = m[1];\r\n        m = match(/^([-\\w]+)\\s*/);\r\n        if (!m) {\r\n            return error('@keyframes missing name');\r\n        }\r\n        const name = m[1];\r\n        if (!open()) {\r\n            return error(`@keyframes missing '{'`);\r\n        }\r\n        let frame;\r\n        let frames = comments();\r\n        while ((frame = keyframe())) {\r\n            frames.push(frame);\r\n            frames = frames.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@keyframes missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'keyframes',\r\n            name,\r\n            vendor,\r\n            keyframes: frames,\r\n        });\r\n    }\r\n    function atsupports() {\r\n        const pos = position();\r\n        const m = match(/^@supports *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const supports = trim(m[1]);\r\n        if (!open()) {\r\n            return error(`@supports missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@supports missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'supports',\r\n            supports,\r\n            rules: style,\r\n        });\r\n    }\r\n    function athost() {\r\n        const pos = position();\r\n        const m = match(/^@host\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        if (!open()) {\r\n            return error(`@host missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@host missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'host',\r\n            rules: style,\r\n        });\r\n    }\r\n    function atmedia() {\r\n        const pos = position();\r\n        const m = match(/^@media *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const media = trim(m[1]);\r\n        if (!open()) {\r\n            return error(`@media missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@media missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'media',\r\n            media,\r\n            rules: style,\r\n        });\r\n    }\r\n    function atcustommedia() {\r\n        const pos = position();\r\n        const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        return pos({\r\n            type: 'custom-media',\r\n            name: trim(m[1]),\r\n            media: trim(m[2]),\r\n        });\r\n    }\r\n    function atpage() {\r\n        const pos = position();\r\n        const m = match(/^@page */);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const sel = selector() || [];\r\n        if (!open()) {\r\n            return error(`@page missing '{'`);\r\n        }\r\n        let decls = comments();\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            decls.push(decl);\r\n            decls = decls.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@page missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'page',\r\n            selectors: sel,\r\n            declarations: decls,\r\n        });\r\n    }\r\n    function atdocument() {\r\n        const pos = position();\r\n        const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const vendor = trim(m[1]);\r\n        const doc = trim(m[2]);\r\n        if (!open()) {\r\n            return error(`@document missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@document missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'document',\r\n            document: doc,\r\n            vendor,\r\n            rules: style,\r\n        });\r\n    }\r\n    function atfontface() {\r\n        const pos = position();\r\n        const m = match(/^@font-face\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        if (!open()) {\r\n            return error(`@font-face missing '{'`);\r\n        }\r\n        let decls = comments();\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            decls.push(decl);\r\n            decls = decls.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@font-face missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'font-face',\r\n            declarations: decls,\r\n        });\r\n    }\r\n    const atimport = _compileAtrule('import');\r\n    const atcharset = _compileAtrule('charset');\r\n    const atnamespace = _compileAtrule('namespace');\r\n    function _compileAtrule(name) {\r\n        const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n        return () => {\r\n            const pos = position();\r\n            const m = match(re);\r\n            if (!m) {\r\n                return;\r\n            }\r\n            const ret = { type: name };\r\n            ret[name] = m[1].trim();\r\n            return pos(ret);\r\n        };\r\n    }\r\n    function atrule() {\r\n        if (css[0] !== '@') {\r\n            return;\r\n        }\r\n        return (atkeyframes() ||\r\n            atmedia() ||\r\n            atcustommedia() ||\r\n            atsupports() ||\r\n            atimport() ||\r\n            atcharset() ||\r\n            atnamespace() ||\r\n            atdocument() ||\r\n            atpage() ||\r\n            athost() ||\r\n            atfontface());\r\n    }\r\n    function rule() {\r\n        const pos = position();\r\n        const sel = selector();\r\n        if (!sel) {\r\n            return error('selector missing');\r\n        }\r\n        comments();\r\n        return pos({\r\n            type: 'rule',\r\n            selectors: sel,\r\n            declarations: declarations(),\r\n        });\r\n    }\r\n    return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n    return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n    const isNode = obj && typeof obj.type === 'string';\r\n    const childParent = isNode ? obj : parent;\r\n    for (const k of Object.keys(obj)) {\r\n        const value = obj[k];\r\n        if (Array.isArray(value)) {\r\n            value.forEach((v) => {\r\n                addParent(v, childParent);\r\n            });\r\n        }\r\n        else if (value && typeof value === 'object') {\r\n            addParent(value, childParent);\r\n        }\r\n    }\r\n    if (isNode) {\r\n        Object.defineProperty(obj, 'parent', {\r\n            configurable: true,\r\n            writable: true,\r\n            enumerable: false,\r\n            value: parent || null,\r\n        });\r\n    }\r\n    return obj;\r\n}\n\nconst tagMap = {\r\n    script: 'noscript',\r\n    altglyph: 'altGlyph',\r\n    altglyphdef: 'altGlyphDef',\r\n    altglyphitem: 'altGlyphItem',\r\n    animatecolor: 'animateColor',\r\n    animatemotion: 'animateMotion',\r\n    animatetransform: 'animateTransform',\r\n    clippath: 'clipPath',\r\n    feblend: 'feBlend',\r\n    fecolormatrix: 'feColorMatrix',\r\n    fecomponenttransfer: 'feComponentTransfer',\r\n    fecomposite: 'feComposite',\r\n    feconvolvematrix: 'feConvolveMatrix',\r\n    fediffuselighting: 'feDiffuseLighting',\r\n    fedisplacementmap: 'feDisplacementMap',\r\n    fedistantlight: 'feDistantLight',\r\n    fedropshadow: 'feDropShadow',\r\n    feflood: 'feFlood',\r\n    fefunca: 'feFuncA',\r\n    fefuncb: 'feFuncB',\r\n    fefuncg: 'feFuncG',\r\n    fefuncr: 'feFuncR',\r\n    fegaussianblur: 'feGaussianBlur',\r\n    feimage: 'feImage',\r\n    femerge: 'feMerge',\r\n    femergenode: 'feMergeNode',\r\n    femorphology: 'feMorphology',\r\n    feoffset: 'feOffset',\r\n    fepointlight: 'fePointLight',\r\n    fespecularlighting: 'feSpecularLighting',\r\n    fespotlight: 'feSpotLight',\r\n    fetile: 'feTile',\r\n    feturbulence: 'feTurbulence',\r\n    foreignobject: 'foreignObject',\r\n    glyphref: 'glyphRef',\r\n    lineargradient: 'linearGradient',\r\n    radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n    let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n    if (tagName === 'link' && n.attributes._cssText) {\r\n        tagName = 'style';\r\n    }\r\n    return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n    const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n    if (cachedStyle)\r\n        return cachedStyle;\r\n    if (cssText.length >= 1000000) {\r\n        return cssText;\r\n    }\r\n    const ast = parse(cssText, {\r\n        silent: true,\r\n    });\r\n    if (!ast.stylesheet) {\r\n        return cssText;\r\n    }\r\n    const selectors = [];\r\n    ast.stylesheet.rules.forEach((rule) => {\r\n        if ('selectors' in rule) {\r\n            (rule.selectors || []).forEach((selector) => {\r\n                if (HOVER_SELECTOR.test(selector)) {\r\n                    selectors.push(selector);\r\n                }\r\n            });\r\n        }\r\n    });\r\n    if (selectors.length === 0) {\r\n        return cssText;\r\n    }\r\n    const selectorMatcher = new RegExp(selectors\r\n        .filter((selector, index) => selectors.indexOf(selector) === index)\r\n        .sort((a, b) => b.length - a.length)\r\n        .map((selector) => {\r\n        return escapeRegExp(selector);\r\n    })\r\n        .join('|'), 'g');\r\n    const result = cssText.replace(selectorMatcher, (selector) => {\r\n        const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n        return `${selector}, ${newSelector}`;\r\n    });\r\n    cache?.stylesWithHoverClass.set(cssText, result);\r\n    return result;\r\n}\r\nfunction createCache() {\r\n    const stylesWithHoverClass = new Map();\r\n    return {\r\n        stylesWithHoverClass,\r\n    };\r\n}\r\nfunction buildNode(n, options) {\r\n    const { doc, hackCss, cache } = options;\r\n    switch (n.type) {\r\n        case NodeType.Document:\r\n            return doc.implementation.createDocument(null, '', null);\r\n        case NodeType.DocumentType:\r\n            return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n        case NodeType.Element: {\r\n            const tagName = getTagName(n);\r\n            let node;\r\n            if (n.isSVG) {\r\n                node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n            }\r\n            else {\r\n                if (n.isCustom &&\r\n                    doc.defaultView?.customElements &&\r\n                    !doc.defaultView.customElements.get(n.tagName))\r\n                    doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n                    });\r\n                node = doc.createElement(tagName);\r\n            }\r\n            const specialAttributes = {};\r\n            for (const name in n.attributes) {\r\n                if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n                    continue;\r\n                }\r\n                let value = n.attributes[name];\r\n                if (tagName === 'option' &&\r\n                    name === 'selected' &&\r\n                    value === false) {\r\n                    continue;\r\n                }\r\n                if (value === null) {\r\n                    continue;\r\n                }\r\n                if (value === true)\r\n                    value = '';\r\n                if (name.startsWith('rr_')) {\r\n                    specialAttributes[name] = value;\r\n                    continue;\r\n                }\r\n                const isTextarea = tagName === 'textarea' && name === 'value';\r\n                const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n                if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n                    value = addHoverClass(value, cache);\r\n                }\r\n                if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n                    const child = doc.createTextNode(value);\r\n                    for (const c of Array.from(node.childNodes)) {\r\n                        if (c.nodeType === node.TEXT_NODE) {\r\n                            node.removeChild(c);\r\n                        }\r\n                    }\r\n                    node.appendChild(child);\r\n                    continue;\r\n                }\r\n                try {\r\n                    if (n.isSVG && name === 'xlink:href') {\r\n                        node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n                    }\r\n                    else if (name === 'onload' ||\r\n                        name === 'onclick' ||\r\n                        name.substring(0, 7) === 'onmouse') {\r\n                        node.setAttribute('_' + name, value.toString());\r\n                    }\r\n                    else if (tagName === 'meta' &&\r\n                        n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n                        name === 'content') {\r\n                        node.setAttribute('csp-content', value.toString());\r\n                        continue;\r\n                    }\r\n                    else if (tagName === 'link' &&\r\n                        (n.attributes.rel === 'preload' ||\r\n                            n.attributes.rel === 'modulepreload') &&\r\n                        n.attributes.as === 'script') {\r\n                    }\r\n                    else if (tagName === 'link' &&\r\n                        n.attributes.rel === 'prefetch' &&\r\n                        typeof n.attributes.href === 'string' &&\r\n                        n.attributes.href.endsWith('.js')) {\r\n                    }\r\n                    else if (tagName === 'img' &&\r\n                        n.attributes.srcset &&\r\n                        n.attributes.rr_dataURL) {\r\n                        node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n                    }\r\n                    else {\r\n                        node.setAttribute(name, value.toString());\r\n                    }\r\n                }\r\n                catch (error) {\r\n                }\r\n            }\r\n            for (const name in specialAttributes) {\r\n                const value = specialAttributes[name];\r\n                if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n                    const image = document.createElement('img');\r\n                    image.onload = () => {\r\n                        const ctx = node.getContext('2d');\r\n                        if (ctx) {\r\n                            ctx.drawImage(image, 0, 0, image.width, image.height);\r\n                        }\r\n                    };\r\n                    image.src = value.toString();\r\n                    if (node.RRNodeType)\r\n                        node.rr_dataURL = value.toString();\r\n                }\r\n                else if (tagName === 'img' && name === 'rr_dataURL') {\r\n                    const image = node;\r\n                    if (!image.currentSrc.startsWith('data:')) {\r\n                        image.setAttribute('rrweb-original-src', n.attributes.src);\r\n                        image.src = value.toString();\r\n                    }\r\n                }\r\n                if (name === 'rr_width') {\r\n                    node.style.setProperty('width', value.toString());\r\n                }\r\n                else if (name === 'rr_height') {\r\n                    node.style.setProperty('height', value.toString());\r\n                }\r\n                else if (name === 'rr_mediaCurrentTime' &&\r\n                    typeof value === 'number') {\r\n                    node.currentTime = value;\r\n                }\r\n                else if (name === 'rr_mediaState') {\r\n                    switch (value) {\r\n                        case 'played':\r\n                            node\r\n                                .play()\r\n                                .catch((e) => console.warn('media playback error', e));\r\n                            break;\r\n                        case 'paused':\r\n                            node.pause();\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            if (n.isShadowHost) {\r\n                if (!node.shadowRoot) {\r\n                    node.attachShadow({ mode: 'open' });\r\n                }\r\n                else {\r\n                    while (node.shadowRoot.firstChild) {\r\n                        node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n                    }\r\n                }\r\n            }\r\n            return node;\r\n        }\r\n        case NodeType.Text:\r\n            return doc.createTextNode(n.isStyle && hackCss\r\n                ? addHoverClass(n.textContent, cache)\r\n                : n.textContent);\r\n        case NodeType.CDATA:\r\n            return doc.createCDATASection(n.textContent);\r\n        case NodeType.Comment:\r\n            return doc.createComment(n.textContent);\r\n        default:\r\n            return null;\r\n    }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n    const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n    if (mirror.has(n.id)) {\r\n        const nodeInMirror = mirror.getNode(n.id);\r\n        const meta = mirror.getMeta(nodeInMirror);\r\n        if (isNodeMetaEqual(meta, n))\r\n            return mirror.getNode(n.id);\r\n    }\r\n    let node = buildNode(n, { doc, hackCss, cache });\r\n    if (!node) {\r\n        return null;\r\n    }\r\n    if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n        mirror.replace(n.rootId, doc);\r\n    }\r\n    if (n.type === NodeType.Document) {\r\n        doc.close();\r\n        doc.open();\r\n        if (n.compatMode === 'BackCompat' &&\r\n            n.childNodes &&\r\n            n.childNodes[0].type !== NodeType.DocumentType) {\r\n            if (n.childNodes[0].type === NodeType.Element &&\r\n                'xmlns' in n.childNodes[0].attributes &&\r\n                n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n                doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n            }\r\n            else {\r\n                doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n            }\r\n        }\r\n        node = doc;\r\n    }\r\n    mirror.add(node, n);\r\n    if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n        !skipChild) {\r\n        for (const childN of n.childNodes) {\r\n            const childNode = buildNodeWithSN(childN, {\r\n                doc,\r\n                mirror,\r\n                skipChild: false,\r\n                hackCss,\r\n                afterAppend,\r\n                cache,\r\n            });\r\n            if (!childNode) {\r\n                console.warn('Failed to rebuild', childN);\r\n                continue;\r\n            }\r\n            if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n                node.shadowRoot.appendChild(childNode);\r\n            }\r\n            else if (n.type === NodeType.Document &&\r\n                childN.type == NodeType.Element) {\r\n                const htmlElement = childNode;\r\n                let body = null;\r\n                htmlElement.childNodes.forEach((child) => {\r\n                    if (child.nodeName === 'BODY')\r\n                        body = child;\r\n                });\r\n                if (body) {\r\n                    htmlElement.removeChild(body);\r\n                    node.appendChild(childNode);\r\n                    htmlElement.appendChild(body);\r\n                }\r\n                else {\r\n                    node.appendChild(childNode);\r\n                }\r\n            }\r\n            else {\r\n                node.appendChild(childNode);\r\n            }\r\n            if (afterAppend) {\r\n                afterAppend(childNode, childN.id);\r\n            }\r\n        }\r\n    }\r\n    return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n    function walk(node) {\r\n        onVisit(node);\r\n    }\r\n    for (const id of mirror.getIds()) {\r\n        if (mirror.has(id)) {\r\n            walk(mirror.getNode(id));\r\n        }\r\n    }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n    const n = mirror.getMeta(node);\r\n    if (n?.type !== NodeType.Element) {\r\n        return;\r\n    }\r\n    const el = node;\r\n    for (const name in n.attributes) {\r\n        if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n            name.startsWith('rr_'))) {\r\n            continue;\r\n        }\r\n        const value = n.attributes[name];\r\n        if (name === 'rr_scrollLeft') {\r\n            el.scrollLeft = value;\r\n        }\r\n        if (name === 'rr_scrollTop') {\r\n            el.scrollTop = value;\r\n        }\r\n    }\r\n}\r\nfunction rebuild(n, options) {\r\n    const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n    const node = buildNodeWithSN(n, {\r\n        doc,\r\n        mirror,\r\n        skipChild: false,\r\n        hackCss,\r\n        afterAppend,\r\n        cache,\r\n    });\r\n    visit(mirror, (visitedNode) => {\r\n        if (onVisit) {\r\n            onVisit(visitedNode);\r\n        }\r\n        handleScroll(visitedNode, mirror);\r\n    });\r\n    return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute };\n","import { distanceToMatch, IGNORED_NODE, isShadowRoot, createMatchPredicate } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n    const options = { capture: true, passive: true };\r\n    target.addEventListener(type, fn, options);\r\n    return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n    '\\r\\n' +\r\n    'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n    '\\r\\n' +\r\n    'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n    map: {},\r\n    getId() {\r\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n        return -1;\r\n    },\r\n    getNode() {\r\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n        return null;\r\n    },\r\n    removeNodeFromMap() {\r\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n    },\r\n    has() {\r\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n        return false;\r\n    },\r\n    reset() {\r\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n    },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n    _mirror = new Proxy(_mirror, {\r\n        get(target, prop, receiver) {\r\n            if (prop === 'map') {\r\n                console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n            }\r\n            return Reflect.get(target, prop, receiver);\r\n        },\r\n    });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n    let timeout = null;\r\n    let previous = 0;\r\n    return function (...args) {\r\n        const now = Date.now();\r\n        if (!previous && options.leading === false) {\r\n            previous = now;\r\n        }\r\n        const remaining = wait - (now - previous);\r\n        const context = this;\r\n        if (remaining <= 0 || remaining > wait) {\r\n            if (timeout) {\r\n                clearTimeout(timeout);\r\n                timeout = null;\r\n            }\r\n            previous = now;\r\n            func.apply(context, args);\r\n        }\r\n        else if (!timeout && options.trailing !== false) {\r\n            timeout = setTimeout(() => {\r\n                previous = options.leading === false ? 0 : Date.now();\r\n                timeout = null;\r\n                func.apply(context, args);\r\n            }, remaining);\r\n        }\r\n    };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n    const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n    win.Object.defineProperty(target, key, isRevoked\r\n        ? d\r\n        : {\r\n            set(value) {\r\n                setTimeout(() => {\r\n                    d.set.call(this, value);\r\n                }, 0);\r\n                if (original && original.set) {\r\n                    original.set.call(this, value);\r\n                }\r\n            },\r\n        });\r\n    return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n    try {\r\n        if (!(name in source)) {\r\n            return () => {\r\n            };\r\n        }\r\n        const original = source[name];\r\n        const wrapped = replacement(original);\r\n        if (typeof wrapped === 'function') {\r\n            wrapped.prototype = wrapped.prototype || {};\r\n            Object.defineProperties(wrapped, {\r\n                __rrweb_original__: {\r\n                    enumerable: false,\r\n                    value: original,\r\n                },\r\n            });\r\n        }\r\n        source[name] = wrapped;\r\n        return () => {\r\n            source[name] = original;\r\n        };\r\n    }\r\n    catch {\r\n        return () => {\r\n        };\r\n    }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n    nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n    const doc = win.document;\r\n    return {\r\n        left: doc.scrollingElement\r\n            ? doc.scrollingElement.scrollLeft\r\n            : win.pageXOffset !== undefined\r\n                ? win.pageXOffset\r\n                : doc?.documentElement.scrollLeft ||\r\n                    doc?.body?.parentElement?.scrollLeft ||\r\n                    doc?.body?.scrollLeft ||\r\n                    0,\r\n        top: doc.scrollingElement\r\n            ? doc.scrollingElement.scrollTop\r\n            : win.pageYOffset !== undefined\r\n                ? win.pageYOffset\r\n                : doc?.documentElement.scrollTop ||\r\n                    doc?.body?.parentElement?.scrollTop ||\r\n                    doc?.body?.scrollTop ||\r\n                    0,\r\n    };\r\n}\r\nfunction getWindowHeight() {\r\n    return (window.innerHeight ||\r\n        (document.documentElement && document.documentElement.clientHeight) ||\r\n        (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n    return (window.innerWidth ||\r\n        (document.documentElement && document.documentElement.clientWidth) ||\r\n        (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n    if (!node) {\r\n        return null;\r\n    }\r\n    const el = node.nodeType === node.ELEMENT_NODE\r\n        ? node\r\n        : node.parentElement;\r\n    return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\r\n    if (!node) {\r\n        return false;\r\n    }\r\n    const el = closestElementOfNode(node);\r\n    if (!el) {\r\n        return false;\r\n    }\r\n    const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\r\n    if (!checkAncestors) {\r\n        const isUnblocked = unblockSelector && el.matches(unblockSelector);\r\n        return blockedPredicate(el) && !isUnblocked;\r\n    }\r\n    const blockDistance = distanceToMatch(el, blockedPredicate);\r\n    let unblockDistance = -1;\r\n    if (blockDistance < 0) {\r\n        return false;\r\n    }\r\n    if (unblockSelector) {\r\n        unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\r\n    }\r\n    if (blockDistance > -1 && unblockDistance < 0) {\r\n        return true;\r\n    }\r\n    return blockDistance < unblockDistance;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n    return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n    return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n    if (isShadowRoot(target)) {\r\n        return false;\r\n    }\r\n    const id = mirror.getId(target);\r\n    if (!mirror.has(id)) {\r\n        return true;\r\n    }\r\n    if (target.parentNode &&\r\n        target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n        return false;\r\n    }\r\n    if (!target.parentNode) {\r\n        return true;\r\n    }\r\n    return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n    return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n    if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n        win.NodeList.prototype.forEach = Array.prototype\r\n            .forEach;\r\n    }\r\n    if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n        win.DOMTokenList.prototype.forEach = Array.prototype\r\n            .forEach;\r\n    }\r\n    if (!Node.prototype.contains) {\r\n        Node.prototype.contains = (...args) => {\r\n            let node = args[0];\r\n            if (!(0 in args)) {\r\n                throw new TypeError('1 argument is required');\r\n            }\r\n            do {\r\n                if (this === node) {\r\n                    return true;\r\n                }\r\n            } while ((node = node && node.parentNode));\r\n            return false;\r\n        };\r\n    }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n    const queueNodeMap = {};\r\n    const putIntoMap = (m, parent) => {\r\n        const nodeInTree = {\r\n            value: m,\r\n            parent,\r\n            children: [],\r\n        };\r\n        queueNodeMap[m.node.id] = nodeInTree;\r\n        return nodeInTree;\r\n    };\r\n    const queueNodeTrees = [];\r\n    for (const mutation of queue) {\r\n        const { nextId, parentId } = mutation;\r\n        if (nextId && nextId in queueNodeMap) {\r\n            const nextInTree = queueNodeMap[nextId];\r\n            if (nextInTree.parent) {\r\n                const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n                nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n            }\r\n            else {\r\n                const idx = queueNodeTrees.indexOf(nextInTree);\r\n                queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n            }\r\n            continue;\r\n        }\r\n        if (parentId in queueNodeMap) {\r\n            const parentInTree = queueNodeMap[parentId];\r\n            parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n            continue;\r\n        }\r\n        queueNodeTrees.push(putIntoMap(mutation, null));\r\n    }\r\n    return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n    cb(tree.value);\r\n    for (let i = tree.children.length - 1; i >= 0; i--) {\r\n        iterateResolveTree(tree.children[i], cb);\r\n    }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n    return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n    return Boolean(n.nodeName === 'LINK' &&\r\n        n.nodeType === n.ELEMENT_NODE &&\r\n        n.getAttribute &&\r\n        n.getAttribute('rel') === 'stylesheet' &&\r\n        mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n    const frameElement = node.ownerDocument?.defaultView?.frameElement;\r\n    if (!frameElement || frameElement === rootIframe) {\r\n        return {\r\n            x: 0,\r\n            y: 0,\r\n            relativeScale: 1,\r\n            absoluteScale: 1,\r\n        };\r\n    }\r\n    const frameDimension = frameElement.getBoundingClientRect();\r\n    const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n    const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n    return {\r\n        x: frameDimension.x * frameBaseDimension.relativeScale +\r\n            frameBaseDimension.x,\r\n        y: frameDimension.y * frameBaseDimension.relativeScale +\r\n            frameBaseDimension.y,\r\n        relativeScale,\r\n        absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n    };\r\n}\r\nfunction hasShadowRoot(n) {\r\n    return Boolean(n?.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n    const rule = rules[position[0]];\r\n    if (position.length === 1) {\r\n        return rule;\r\n    }\r\n    else {\r\n        return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n    }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n    const positions = [...nestedIndex];\r\n    const index = positions.pop();\r\n    return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n    const idSet = new Set();\r\n    const uniqueMutations = [];\r\n    for (let i = mutations.length; i--;) {\r\n        const mutation = mutations[i];\r\n        if (!idSet.has(mutation.id)) {\r\n            uniqueMutations.push(mutation);\r\n            idSet.add(mutation.id);\r\n        }\r\n    }\r\n    return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n    constructor() {\r\n        this.id = 1;\r\n        this.styleIDMap = new WeakMap();\r\n        this.idStyleMap = new Map();\r\n    }\r\n    getId(stylesheet) {\r\n        return this.styleIDMap.get(stylesheet) ?? -1;\r\n    }\r\n    has(stylesheet) {\r\n        return this.styleIDMap.has(stylesheet);\r\n    }\r\n    add(stylesheet, id) {\r\n        if (this.has(stylesheet))\r\n            return this.getId(stylesheet);\r\n        let newId;\r\n        if (id === undefined) {\r\n            newId = this.id++;\r\n        }\r\n        else\r\n            newId = id;\r\n        this.styleIDMap.set(stylesheet, newId);\r\n        this.idStyleMap.set(newId, stylesheet);\r\n        return newId;\r\n    }\r\n    getStyle(id) {\r\n        return this.idStyleMap.get(id) || null;\r\n    }\r\n    reset() {\r\n        this.styleIDMap = new WeakMap();\r\n        this.idStyleMap = new Map();\r\n        this.id = 1;\r\n    }\r\n    generateId() {\r\n        return this.id++;\r\n    }\r\n}\r\nfunction getShadowHost(n) {\r\n    let shadowHost = null;\r\n    if (n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\r\n        n.getRootNode().host)\r\n        shadowHost = n.getRootNode().host;\r\n    return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n    let rootShadowHost = n;\r\n    let shadowHost;\r\n    while ((shadowHost = getShadowHost(rootShadowHost)))\r\n        rootShadowHost = shadowHost;\r\n    return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n    const doc = n.ownerDocument;\r\n    if (!doc)\r\n        return false;\r\n    const shadowHost = getRootShadowHost(n);\r\n    return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n    const doc = n.ownerDocument;\r\n    if (!doc)\r\n        return false;\r\n    return doc.contains(n) || shadowHostInDom(n);\r\n}\r\nconst cachedImplementations = {};\r\nfunction getImplementation(name) {\r\n    const cached = cachedImplementations[name];\r\n    if (cached) {\r\n        return cached;\r\n    }\r\n    const document = window.document;\r\n    let impl = window[name];\r\n    if (document && typeof document.createElement === 'function') {\r\n        try {\r\n            const sandbox = document.createElement('iframe');\r\n            sandbox.hidden = true;\r\n            document.head.appendChild(sandbox);\r\n            const contentWindow = sandbox.contentWindow;\r\n            if (contentWindow && contentWindow[name]) {\r\n                impl =\r\n                    contentWindow[name];\r\n            }\r\n            document.head.removeChild(sandbox);\r\n        }\r\n        catch (e) {\r\n        }\r\n    }\r\n    return (cachedImplementations[name] = impl.bind(window));\r\n}\r\nfunction onRequestAnimationFrame(...rest) {\r\n    return getImplementation('requestAnimationFrame')(...rest);\r\n}\r\nfunction setTimeout(...rest) {\r\n    return getImplementation('setTimeout')(...rest);\r\n}\r\nfunction clearTimeout(...rest) {\r\n    return getImplementation('clearTimeout')(...rest);\r\n}\n\nexport { StyleSheetMirror, _mirror, clearTimeout, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, onRequestAnimationFrame, patch, polyfill, queueToResolveTrees, setTimeout, shadowHostInDom, throttle, uniqueTextMutations };\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n  // by checking for loose equality to `null`, we catch both `null` and `undefined`\n  return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n//   if (lhs != null) {\n//     return lhs;\n//   } else {\n//     return rhsFn();\n//   }\n// }\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n  EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n  EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n  EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n  EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n  EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n  EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n  EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n  return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n  IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n  IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n  IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n  IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n  IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n  IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n  IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n  IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n  IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n  IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n  IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n  IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n  IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n  IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n  IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n  IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n  IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n  return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n  MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n  MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n  MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n  MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n  MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n  MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n  MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n  MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n  MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n  MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n  MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n  return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n  PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n  PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n  PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n  return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n  CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n  CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n  CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n  return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n  ReplayerEvents2[\"Start\"] = \"start\";\n  ReplayerEvents2[\"Pause\"] = \"pause\";\n  ReplayerEvents2[\"Resume\"] = \"resume\";\n  ReplayerEvents2[\"Resize\"] = \"resize\";\n  ReplayerEvents2[\"Finish\"] = \"finish\";\n  ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n  ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n  ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n  ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n  ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n  ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n  ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n  ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n  ReplayerEvents2[\"Flush\"] = \"flush\";\n  ReplayerEvents2[\"StateChange\"] = \"state-change\";\n  ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n  ReplayerEvents2[\"Destroy\"] = \"destroy\";\n  return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n    return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n    constructor() {\r\n        this.length = 0;\r\n        this.head = null;\r\n        this.tail = null;\r\n    }\r\n    get(position) {\r\n        if (position >= this.length) {\r\n            throw new Error('Position outside of list range');\r\n        }\r\n        let current = this.head;\r\n        for (let index = 0; index < position; index++) {\r\n            current = current?.next || null;\r\n        }\r\n        return current;\r\n    }\r\n    addNode(n) {\r\n        const node = {\r\n            value: n,\r\n            previous: null,\r\n            next: null,\r\n        };\r\n        n.__ln = node;\r\n        if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n            const current = n.previousSibling.__ln.next;\r\n            node.next = current;\r\n            node.previous = n.previousSibling.__ln;\r\n            n.previousSibling.__ln.next = node;\r\n            if (current) {\r\n                current.previous = node;\r\n            }\r\n        }\r\n        else if (n.nextSibling &&\r\n            isNodeInLinkedList(n.nextSibling) &&\r\n            n.nextSibling.__ln.previous) {\r\n            const current = n.nextSibling.__ln.previous;\r\n            node.previous = current;\r\n            node.next = n.nextSibling.__ln;\r\n            n.nextSibling.__ln.previous = node;\r\n            if (current) {\r\n                current.next = node;\r\n            }\r\n        }\r\n        else {\r\n            if (this.head) {\r\n                this.head.previous = node;\r\n            }\r\n            node.next = this.head;\r\n            this.head = node;\r\n        }\r\n        if (node.next === null) {\r\n            this.tail = node;\r\n        }\r\n        this.length++;\r\n    }\r\n    removeNode(n) {\r\n        const current = n.__ln;\r\n        if (!this.head) {\r\n            return;\r\n        }\r\n        if (!current.previous) {\r\n            this.head = current.next;\r\n            if (this.head) {\r\n                this.head.previous = null;\r\n            }\r\n            else {\r\n                this.tail = null;\r\n            }\r\n        }\r\n        else {\r\n            current.previous.next = current.next;\r\n            if (current.next) {\r\n                current.next.previous = current.previous;\r\n            }\r\n            else {\r\n                this.tail = current.previous;\r\n            }\r\n        }\r\n        if (n.__ln) {\r\n            delete n.__ln;\r\n        }\r\n        this.length--;\r\n    }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n    constructor() {\r\n        this.frozen = false;\r\n        this.locked = false;\r\n        this.texts = [];\r\n        this.attributes = [];\r\n        this.attributeMap = new WeakMap();\r\n        this.removes = [];\r\n        this.mapRemoves = [];\r\n        this.movedMap = {};\r\n        this.addedSet = new Set();\r\n        this.movedSet = new Set();\r\n        this.droppedSet = new Set();\r\n        this.processMutations = (mutations) => {\r\n            mutations.forEach(this.processMutation);\r\n            this.emit();\r\n        };\r\n        this.emit = () => {\r\n            if (this.frozen || this.locked) {\r\n                return;\r\n            }\r\n            const adds = [];\r\n            const addedIds = new Set();\r\n            const addList = new DoubleLinkedList();\r\n            const getNextId = (n) => {\r\n                let ns = n;\r\n                let nextId = IGNORED_NODE;\r\n                while (nextId === IGNORED_NODE) {\r\n                    ns = ns && ns.nextSibling;\r\n                    nextId = ns && this.mirror.getId(ns);\r\n                }\r\n                return nextId;\r\n            };\r\n            const pushAdd = (n) => {\r\n                if (!n.parentNode || !inDom(n)) {\r\n                    return;\r\n                }\r\n                const parentId = isShadowRoot(n.parentNode)\r\n                    ? this.mirror.getId(getShadowHost(n))\r\n                    : this.mirror.getId(n.parentNode);\r\n                const nextId = getNextId(n);\r\n                if (parentId === -1 || nextId === -1) {\r\n                    return addList.addNode(n);\r\n                }\r\n                const sn = serializeNodeWithId(n, {\r\n                    doc: this.doc,\r\n                    mirror: this.mirror,\r\n                    blockClass: this.blockClass,\r\n                    blockSelector: this.blockSelector,\r\n                    maskAllText: this.maskAllText,\r\n                    unblockSelector: this.unblockSelector,\r\n                    maskTextClass: this.maskTextClass,\r\n                    unmaskTextClass: this.unmaskTextClass,\r\n                    maskTextSelector: this.maskTextSelector,\r\n                    unmaskTextSelector: this.unmaskTextSelector,\r\n                    skipChild: true,\r\n                    newlyAddedElement: true,\r\n                    inlineStylesheet: this.inlineStylesheet,\r\n                    maskInputOptions: this.maskInputOptions,\r\n                    maskAttributeFn: this.maskAttributeFn,\r\n                    maskTextFn: this.maskTextFn,\r\n                    maskInputFn: this.maskInputFn,\r\n                    slimDOMOptions: this.slimDOMOptions,\r\n                    dataURLOptions: this.dataURLOptions,\r\n                    recordCanvas: this.recordCanvas,\r\n                    inlineImages: this.inlineImages,\r\n                    onSerialize: (currentN) => {\r\n                        if (isSerializedIframe(currentN, this.mirror)) {\r\n                            this.iframeManager.addIframe(currentN);\r\n                        }\r\n                        if (isSerializedStylesheet(currentN, this.mirror)) {\r\n                            this.stylesheetManager.trackLinkElement(currentN);\r\n                        }\r\n                        if (hasShadowRoot(n)) {\r\n                            this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n                        }\r\n                    },\r\n                    onIframeLoad: (iframe, childSn) => {\r\n                        this.iframeManager.attachIframe(iframe, childSn);\r\n                        this.shadowDomManager.observeAttachShadow(iframe);\r\n                    },\r\n                    onStylesheetLoad: (link, childSn) => {\r\n                        this.stylesheetManager.attachLinkElement(link, childSn);\r\n                    },\r\n                });\r\n                if (sn) {\r\n                    adds.push({\r\n                        parentId,\r\n                        nextId,\r\n                        node: sn,\r\n                    });\r\n                    addedIds.add(sn.id);\r\n                }\r\n            };\r\n            while (this.mapRemoves.length) {\r\n                this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n            }\r\n            for (const n of this.movedSet) {\r\n                if (isParentRemoved(this.removes, n, this.mirror) &&\r\n                    !this.movedSet.has(n.parentNode)) {\r\n                    continue;\r\n                }\r\n                pushAdd(n);\r\n            }\r\n            for (const n of this.addedSet) {\r\n                if (!isAncestorInSet(this.droppedSet, n) &&\r\n                    !isParentRemoved(this.removes, n, this.mirror)) {\r\n                    pushAdd(n);\r\n                }\r\n                else if (isAncestorInSet(this.movedSet, n)) {\r\n                    pushAdd(n);\r\n                }\r\n                else {\r\n                    this.droppedSet.add(n);\r\n                }\r\n            }\r\n            let candidate = null;\r\n            while (addList.length) {\r\n                let node = null;\r\n                if (candidate) {\r\n                    const parentId = this.mirror.getId(candidate.value.parentNode);\r\n                    const nextId = getNextId(candidate.value);\r\n                    if (parentId !== -1 && nextId !== -1) {\r\n                        node = candidate;\r\n                    }\r\n                }\r\n                if (!node) {\r\n                    let tailNode = addList.tail;\r\n                    while (tailNode) {\r\n                        const _node = tailNode;\r\n                        tailNode = tailNode.previous;\r\n                        if (_node) {\r\n                            const parentId = this.mirror.getId(_node.value.parentNode);\r\n                            const nextId = getNextId(_node.value);\r\n                            if (nextId === -1)\r\n                                continue;\r\n                            else if (parentId !== -1) {\r\n                                node = _node;\r\n                                break;\r\n                            }\r\n                            else {\r\n                                const unhandledNode = _node.value;\r\n                                if (unhandledNode.parentNode &&\r\n                                    unhandledNode.parentNode.nodeType ===\r\n                                        Node.DOCUMENT_FRAGMENT_NODE) {\r\n                                    const shadowHost = unhandledNode.parentNode\r\n                                        .host;\r\n                                    const parentId = this.mirror.getId(shadowHost);\r\n                                    if (parentId !== -1) {\r\n                                        node = _node;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                if (!node) {\r\n                    while (addList.head) {\r\n                        addList.removeNode(addList.head.value);\r\n                    }\r\n                    break;\r\n                }\r\n                candidate = node.previous;\r\n                addList.removeNode(node.value);\r\n                pushAdd(node.value);\r\n            }\r\n            const payload = {\r\n                texts: this.texts\r\n                    .map((text) => ({\r\n                    id: this.mirror.getId(text.node),\r\n                    value: text.value,\r\n                }))\r\n                    .filter((text) => !addedIds.has(text.id))\r\n                    .filter((text) => this.mirror.has(text.id)),\r\n                attributes: this.attributes\r\n                    .map((attribute) => {\r\n                    const { attributes } = attribute;\r\n                    if (typeof attributes.style === 'string') {\r\n                        const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n                        const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n                        if (diffAsStr.length < attributes.style.length) {\r\n                            if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n                                attributes.style.split('var(').length) {\r\n                                attributes.style = attribute.styleDiff;\r\n                            }\r\n                        }\r\n                    }\r\n                    return {\r\n                        id: this.mirror.getId(attribute.node),\r\n                        attributes: attributes,\r\n                    };\r\n                })\r\n                    .filter((attribute) => !addedIds.has(attribute.id))\r\n                    .filter((attribute) => this.mirror.has(attribute.id)),\r\n                removes: this.removes,\r\n                adds,\r\n            };\r\n            if (!payload.texts.length &&\r\n                !payload.attributes.length &&\r\n                !payload.removes.length &&\r\n                !payload.adds.length) {\r\n                return;\r\n            }\r\n            this.texts = [];\r\n            this.attributes = [];\r\n            this.attributeMap = new WeakMap();\r\n            this.removes = [];\r\n            this.addedSet = new Set();\r\n            this.movedSet = new Set();\r\n            this.droppedSet = new Set();\r\n            this.movedMap = {};\r\n            this.mutationCb(payload);\r\n        };\r\n        this.processMutation = (m) => {\r\n            if (isIgnored(m.target, this.mirror)) {\r\n                return;\r\n            }\r\n            switch (m.type) {\r\n                case 'characterData': {\r\n                    const value = m.target.textContent;\r\n                    if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\r\n                        value !== m.oldValue) {\r\n                        this.texts.push({\r\n                            value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\r\n                                ? this.maskTextFn\r\n                                    ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n                                    : value.replace(/[\\S]/g, '*')\r\n                                : value,\r\n                            node: m.target,\r\n                        });\r\n                    }\r\n                    break;\r\n                }\r\n                case 'attributes': {\r\n                    const target = m.target;\r\n                    let attributeName = m.attributeName;\r\n                    let value = m.target.getAttribute(attributeName);\r\n                    if (attributeName === 'value') {\r\n                        const type = getInputType(target);\r\n                        const tagName = target.tagName;\r\n                        value = getInputValue(target, tagName, type);\r\n                        const isInputMasked = shouldMaskInput({\r\n                            maskInputOptions: this.maskInputOptions,\r\n                            tagName,\r\n                            type,\r\n                        });\r\n                        const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\r\n                        value = maskInputValue({\r\n                            isMasked: forceMask,\r\n                            element: target,\r\n                            value,\r\n                            maskInputFn: this.maskInputFn,\r\n                        });\r\n                    }\r\n                    if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n                        value === m.oldValue) {\r\n                        return;\r\n                    }\r\n                    let item = this.attributeMap.get(m.target);\r\n                    if (target.tagName === 'IFRAME' &&\r\n                        attributeName === 'src' &&\r\n                        !this.keepIframeSrcFn(value)) {\r\n                        if (!target.contentDocument) {\r\n                            attributeName = 'rr_src';\r\n                        }\r\n                        else {\r\n                            return;\r\n                        }\r\n                    }\r\n                    if (!item) {\r\n                        item = {\r\n                            node: m.target,\r\n                            attributes: {},\r\n                            styleDiff: {},\r\n                            _unchangedStyles: {},\r\n                        };\r\n                        this.attributes.push(item);\r\n                        this.attributeMap.set(m.target, item);\r\n                    }\r\n                    if (attributeName === 'type' &&\r\n                        target.tagName === 'INPUT' &&\r\n                        (m.oldValue || '').toLowerCase() === 'password') {\r\n                        target.setAttribute('data-rr-is-password', 'true');\r\n                    }\r\n                    if (!ignoreAttribute(target.tagName, attributeName)) {\r\n                        item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\r\n                        if (attributeName === 'style') {\r\n                            if (!this.unattachedDoc) {\r\n                                try {\r\n                                    this.unattachedDoc =\r\n                                        document.implementation.createHTMLDocument();\r\n                                }\r\n                                catch (e) {\r\n                                    this.unattachedDoc = this.doc;\r\n                                }\r\n                            }\r\n                            const old = this.unattachedDoc.createElement('span');\r\n                            if (m.oldValue) {\r\n                                old.setAttribute('style', m.oldValue);\r\n                            }\r\n                            for (const pname of Array.from(target.style)) {\r\n                                const newValue = target.style.getPropertyValue(pname);\r\n                                const newPriority = target.style.getPropertyPriority(pname);\r\n                                if (newValue !== old.style.getPropertyValue(pname) ||\r\n                                    newPriority !== old.style.getPropertyPriority(pname)) {\r\n                                    if (newPriority === '') {\r\n                                        item.styleDiff[pname] = newValue;\r\n                                    }\r\n                                    else {\r\n                                        item.styleDiff[pname] = [newValue, newPriority];\r\n                                    }\r\n                                }\r\n                                else {\r\n                                    item._unchangedStyles[pname] = [newValue, newPriority];\r\n                                }\r\n                            }\r\n                            for (const pname of Array.from(old.style)) {\r\n                                if (target.style.getPropertyValue(pname) === '') {\r\n                                    item.styleDiff[pname] = false;\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    break;\r\n                }\r\n                case 'childList': {\r\n                    if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\r\n                        return;\r\n                    }\r\n                    m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n                    m.removedNodes.forEach((n) => {\r\n                        const nodeId = this.mirror.getId(n);\r\n                        const parentId = isShadowRoot(m.target)\r\n                            ? this.mirror.getId(m.target.host)\r\n                            : this.mirror.getId(m.target);\r\n                        if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n                            isIgnored(n, this.mirror) ||\r\n                            !isSerialized(n, this.mirror)) {\r\n                            return;\r\n                        }\r\n                        if (this.addedSet.has(n)) {\r\n                            deepDelete(this.addedSet, n);\r\n                            this.droppedSet.add(n);\r\n                        }\r\n                        else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n                        else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n                        else if (this.movedSet.has(n) &&\r\n                            this.movedMap[moveKey(nodeId, parentId)]) {\r\n                            deepDelete(this.movedSet, n);\r\n                        }\r\n                        else {\r\n                            this.removes.push({\r\n                                parentId,\r\n                                id: nodeId,\r\n                                isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n                                    ? true\r\n                                    : undefined,\r\n                            });\r\n                        }\r\n                        this.mapRemoves.push(n);\r\n                    });\r\n                    break;\r\n                }\r\n            }\r\n        };\r\n        this.genAdds = (n, target) => {\r\n            if (this.processedNodeManager.inOtherBuffer(n, this))\r\n                return;\r\n            if (this.addedSet.has(n) || this.movedSet.has(n))\r\n                return;\r\n            if (this.mirror.hasNode(n)) {\r\n                if (isIgnored(n, this.mirror)) {\r\n                    return;\r\n                }\r\n                this.movedSet.add(n);\r\n                let targetId = null;\r\n                if (target && this.mirror.hasNode(target)) {\r\n                    targetId = this.mirror.getId(target);\r\n                }\r\n                if (targetId && targetId !== -1) {\r\n                    this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n                }\r\n            }\r\n            else {\r\n                this.addedSet.add(n);\r\n                this.droppedSet.delete(n);\r\n            }\r\n            if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\r\n                n.childNodes.forEach((childN) => this.genAdds(childN));\r\n                if (hasShadowRoot(n)) {\r\n                    n.shadowRoot.childNodes.forEach((childN) => {\r\n                        this.processedNodeManager.add(childN, this);\r\n                        this.genAdds(childN, n);\r\n                    });\r\n                }\r\n            }\r\n        };\r\n    }\r\n    init(options) {\r\n        [\r\n            'mutationCb',\r\n            'blockClass',\r\n            'blockSelector',\r\n            'unblockSelector',\r\n            'maskAllText',\r\n            'maskTextClass',\r\n            'unmaskTextClass',\r\n            'maskTextSelector',\r\n            'unmaskTextSelector',\r\n            'inlineStylesheet',\r\n            'maskInputOptions',\r\n            'maskAttributeFn',\r\n            'maskTextFn',\r\n            'maskInputFn',\r\n            'keepIframeSrcFn',\r\n            'recordCanvas',\r\n            'inlineImages',\r\n            'slimDOMOptions',\r\n            'dataURLOptions',\r\n            'doc',\r\n            'mirror',\r\n            'iframeManager',\r\n            'stylesheetManager',\r\n            'shadowDomManager',\r\n            'canvasManager',\r\n            'processedNodeManager',\r\n        ].forEach((key) => {\r\n            this[key] = options[key];\r\n        });\r\n    }\r\n    freeze() {\r\n        this.frozen = true;\r\n        this.canvasManager.freeze();\r\n    }\r\n    unfreeze() {\r\n        this.frozen = false;\r\n        this.canvasManager.unfreeze();\r\n        this.emit();\r\n    }\r\n    isFrozen() {\r\n        return this.frozen;\r\n    }\r\n    lock() {\r\n        this.locked = true;\r\n        this.canvasManager.lock();\r\n    }\r\n    unlock() {\r\n        this.locked = false;\r\n        this.canvasManager.unlock();\r\n        this.emit();\r\n    }\r\n    reset() {\r\n        this.shadowDomManager.reset();\r\n        this.canvasManager.reset();\r\n    }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n    addsSet.delete(n);\r\n    n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n    if (removes.length === 0)\r\n        return false;\r\n    return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n    const { parentNode } = n;\r\n    if (!parentNode) {\r\n        return false;\r\n    }\r\n    const parentId = mirror.getId(parentNode);\r\n    if (removes.some((r) => r.id === parentId)) {\r\n        return true;\r\n    }\r\n    return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n    if (set.size === 0)\r\n        return false;\r\n    return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n    const { parentNode } = n;\r\n    if (!parentNode) {\r\n        return false;\r\n    }\r\n    if (set.has(parentNode)) {\r\n        return true;\r\n    }\r\n    return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n    errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n    errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n    if (!errorHandler) {\r\n        return cb;\r\n    }\r\n    const rrwebWrapped = ((...rest) => {\r\n        try {\r\n            return cb(...rest);\r\n        }\r\n        catch (error) {\r\n            if (errorHandler && errorHandler(error) === true) {\r\n                return () => {\r\n                };\r\n            }\r\n            throw error;\r\n        }\r\n    });\r\n    return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, toUpperCase, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, hookSetter, patch, setTimeout, legacy_isTouchEvent, nowTimestamp, getWindowHeight, getWindowWidth } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/rrweb-types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n    try {\r\n        if ('composedPath' in event) {\r\n            const path = event.composedPath();\r\n            if (path.length) {\r\n                return path[0];\r\n            }\r\n        }\r\n        else if ('path' in event && event.path.length) {\r\n            return event.path[0];\r\n        }\r\n    }\r\n    catch {\r\n    }\r\n    return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n    const mutationBuffer = new MutationBuffer();\r\n    mutationBuffers.push(mutationBuffer);\r\n    mutationBuffer.init(options);\r\n    let mutationObserverCtor = window.MutationObserver ||\r\n        window.__rrMutationObserver;\r\n    const angularZoneSymbol = window?.Zone?.__symbol__?.('MutationObserver');\r\n    if (angularZoneSymbol &&\r\n        window[angularZoneSymbol]) {\r\n        mutationObserverCtor = window[angularZoneSymbol];\r\n    }\r\n    const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\r\n        if (options.onMutation && options.onMutation(mutations) === false) {\r\n            return;\r\n        }\r\n        mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\r\n    }));\r\n    observer.observe(rootEl, {\r\n        attributes: true,\r\n        attributeOldValue: true,\r\n        characterData: true,\r\n        characterDataOldValue: true,\r\n        childList: true,\r\n        subtree: true,\r\n    });\r\n    return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n    if (sampling.mousemove === false) {\r\n        return () => {\r\n        };\r\n    }\r\n    const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n    const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n        ? sampling.mousemoveCallback\r\n        : 500;\r\n    let positions = [];\r\n    let timeBaseline;\r\n    const wrappedCb = throttle(callbackWrapper((source) => {\r\n        const totalOffset = Date.now() - timeBaseline;\r\n        mousemoveCb(positions.map((p) => {\r\n            p.timeOffset -= totalOffset;\r\n            return p;\r\n        }), source);\r\n        positions = [];\r\n        timeBaseline = null;\r\n    }), callbackThreshold);\r\n    const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n        const target = getEventTarget(evt);\r\n        const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n            ? evt.changedTouches[0]\r\n            : evt;\r\n        if (!timeBaseline) {\r\n            timeBaseline = nowTimestamp();\r\n        }\r\n        positions.push({\r\n            x: clientX,\r\n            y: clientY,\r\n            id: mirror.getId(target),\r\n            timeOffset: nowTimestamp() - timeBaseline,\r\n        });\r\n        wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n            ? IncrementalSource.Drag\r\n            : evt instanceof MouseEvent\r\n                ? IncrementalSource.MouseMove\r\n                : IncrementalSource.TouchMove);\r\n    }), threshold, {\r\n        trailing: false,\r\n    }));\r\n    const handlers = [\r\n        on('mousemove', updatePosition, doc),\r\n        on('touchmove', updatePosition, doc),\r\n        on('drag', updatePosition, doc),\r\n    ];\r\n    return callbackWrapper(() => {\r\n        handlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n    if (sampling.mouseInteraction === false) {\r\n        return () => {\r\n        };\r\n    }\r\n    const disableMap = sampling.mouseInteraction === true ||\r\n        sampling.mouseInteraction === undefined\r\n        ? {}\r\n        : sampling.mouseInteraction;\r\n    const handlers = [];\r\n    let currentPointerType = null;\r\n    const getHandler = (eventKey) => {\r\n        return (event) => {\r\n            const target = getEventTarget(event);\r\n            if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n                return;\r\n            }\r\n            let pointerType = null;\r\n            let thisEventKey = eventKey;\r\n            if ('pointerType' in event) {\r\n                switch (event.pointerType) {\r\n                    case 'mouse':\r\n                        pointerType = PointerTypes.Mouse;\r\n                        break;\r\n                    case 'touch':\r\n                        pointerType = PointerTypes.Touch;\r\n                        break;\r\n                    case 'pen':\r\n                        pointerType = PointerTypes.Pen;\r\n                        break;\r\n                }\r\n                if (pointerType === PointerTypes.Touch) {\r\n                    if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n                        thisEventKey = 'TouchStart';\r\n                    }\r\n                    else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n                        thisEventKey = 'TouchEnd';\r\n                    }\r\n                }\r\n                else if (pointerType === PointerTypes.Pen) ;\r\n            }\r\n            else if (legacy_isTouchEvent(event)) {\r\n                pointerType = PointerTypes.Touch;\r\n            }\r\n            if (pointerType !== null) {\r\n                currentPointerType = pointerType;\r\n                if ((thisEventKey.startsWith('Touch') &&\r\n                    pointerType === PointerTypes.Touch) ||\r\n                    (thisEventKey.startsWith('Mouse') &&\r\n                        pointerType === PointerTypes.Mouse)) {\r\n                    pointerType = null;\r\n                }\r\n            }\r\n            else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n                pointerType = currentPointerType;\r\n                currentPointerType = null;\r\n            }\r\n            const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n            if (!e) {\r\n                return;\r\n            }\r\n            const id = mirror.getId(target);\r\n            const { clientX, clientY } = e;\r\n            callbackWrapper(mouseInteractionCb)({\r\n                type: MouseInteractions[thisEventKey],\r\n                id,\r\n                x: clientX,\r\n                y: clientY,\r\n                ...(pointerType !== null && { pointerType }),\r\n            });\r\n        };\r\n    };\r\n    Object.keys(MouseInteractions)\r\n        .filter((key) => Number.isNaN(Number(key)) &&\r\n        !key.endsWith('_Departed') &&\r\n        disableMap[key] !== false)\r\n        .forEach((eventKey) => {\r\n        let eventName = toLowerCase(eventKey);\r\n        const handler = getHandler(eventKey);\r\n        if (window.PointerEvent) {\r\n            switch (MouseInteractions[eventKey]) {\r\n                case MouseInteractions.MouseDown:\r\n                case MouseInteractions.MouseUp:\r\n                    eventName = eventName.replace('mouse', 'pointer');\r\n                    break;\r\n                case MouseInteractions.TouchStart:\r\n                case MouseInteractions.TouchEnd:\r\n                    return;\r\n            }\r\n        }\r\n        handlers.push(on(eventName, handler, doc));\r\n    });\r\n    return callbackWrapper(() => {\r\n        handlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n    const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n        const target = getEventTarget(evt);\r\n        if (!target ||\r\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n            return;\r\n        }\r\n        const id = mirror.getId(target);\r\n        if (target === doc && doc.defaultView) {\r\n            const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n            scrollCb({\r\n                id,\r\n                x: scrollLeftTop.left,\r\n                y: scrollLeftTop.top,\r\n            });\r\n        }\r\n        else {\r\n            scrollCb({\r\n                id,\r\n                x: target.scrollLeft,\r\n                y: target.scrollTop,\r\n            });\r\n        }\r\n    }), sampling.scroll || 100));\r\n    return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n    let lastH = -1;\r\n    let lastW = -1;\r\n    const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n        const height = getWindowHeight();\r\n        const width = getWindowWidth();\r\n        if (lastH !== height || lastW !== width) {\r\n            viewportResizeCb({\r\n                width: Number(width),\r\n                height: Number(height),\r\n            });\r\n            lastH = height;\r\n            lastW = width;\r\n        }\r\n    }), 200));\r\n    return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\r\n    function eventHandler(event) {\r\n        let target = getEventTarget(event);\r\n        const userTriggered = event.isTrusted;\r\n        const tagName = target && toUpperCase(target.tagName);\r\n        if (tagName === 'OPTION')\r\n            target = target.parentElement;\r\n        if (!target ||\r\n            !tagName ||\r\n            INPUT_TAGS.indexOf(tagName) < 0 ||\r\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n            return;\r\n        }\r\n        const el = target;\r\n        if (el.classList.contains(ignoreClass) ||\r\n            (ignoreSelector && el.matches(ignoreSelector))) {\r\n            return;\r\n        }\r\n        const type = getInputType(target);\r\n        let text = getInputValue(el, tagName, type);\r\n        let isChecked = false;\r\n        const isInputMasked = shouldMaskInput({\r\n            maskInputOptions,\r\n            tagName,\r\n            type,\r\n        });\r\n        const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\r\n        if (type === 'radio' || type === 'checkbox') {\r\n            isChecked = target.checked;\r\n        }\r\n        text = maskInputValue({\r\n            isMasked: forceMask,\r\n            element: target,\r\n            value: text,\r\n            maskInputFn,\r\n        });\r\n        cbWithDedup(target, userTriggeredOnInput\r\n            ? { text, isChecked, userTriggered }\r\n            : { text, isChecked });\r\n        const name = target.name;\r\n        if (type === 'radio' && name && isChecked) {\r\n            doc\r\n                .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n                .forEach((el) => {\r\n                if (el !== target) {\r\n                    const text = maskInputValue({\r\n                        isMasked: forceMask,\r\n                        element: el,\r\n                        value: getInputValue(el, tagName, type),\r\n                        maskInputFn,\r\n                    });\r\n                    cbWithDedup(el, userTriggeredOnInput\r\n                        ? { text, isChecked: !isChecked, userTriggered: false }\r\n                        : { text, isChecked: !isChecked });\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function cbWithDedup(target, v) {\r\n        const lastInputValue = lastInputValueMap.get(target);\r\n        if (!lastInputValue ||\r\n            lastInputValue.text !== v.text ||\r\n            lastInputValue.isChecked !== v.isChecked) {\r\n            lastInputValueMap.set(target, v);\r\n            const id = mirror.getId(target);\r\n            callbackWrapper(inputCb)({\r\n                ...v,\r\n                id,\r\n            });\r\n        }\r\n    }\r\n    const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n    const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n    const currentWindow = doc.defaultView;\r\n    if (!currentWindow) {\r\n        return () => {\r\n            handlers.forEach((h) => h());\r\n        };\r\n    }\r\n    const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n    const hookProperties = [\r\n        [currentWindow.HTMLInputElement.prototype, 'value'],\r\n        [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n        [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n        [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n        [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n        [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n    ];\r\n    if (propertyDescriptor && propertyDescriptor.set) {\r\n        handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n            set() {\r\n                callbackWrapper(eventHandler)({\r\n                    target: this,\r\n                    isTrusted: false,\r\n                });\r\n            },\r\n        }, false, currentWindow)));\r\n    }\r\n    return callbackWrapper(() => {\r\n        handlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n    const positions = [];\r\n    function recurse(childRule, pos) {\r\n        if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n            childRule.parentRule instanceof CSSGroupingRule) ||\r\n            (hasNestedCSSRule('CSSMediaRule') &&\r\n                childRule.parentRule instanceof CSSMediaRule) ||\r\n            (hasNestedCSSRule('CSSSupportsRule') &&\r\n                childRule.parentRule instanceof CSSSupportsRule) ||\r\n            (hasNestedCSSRule('CSSConditionRule') &&\r\n                childRule.parentRule instanceof CSSConditionRule)) {\r\n            const rules = Array.from(childRule.parentRule.cssRules);\r\n            const index = rules.indexOf(childRule);\r\n            pos.unshift(index);\r\n        }\r\n        else if (childRule.parentStyleSheet) {\r\n            const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n            const index = rules.indexOf(childRule);\r\n            pos.unshift(index);\r\n        }\r\n        return pos;\r\n    }\r\n    return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n    let id, styleId;\r\n    if (!sheet)\r\n        return {};\r\n    if (sheet.ownerNode)\r\n        id = mirror.getId(sheet.ownerNode);\r\n    else\r\n        styleId = styleMirror.getId(sheet);\r\n    return {\r\n        styleId,\r\n        id,\r\n    };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n    if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n        return () => {\r\n        };\r\n    }\r\n    const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n    win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n            const [rule, index] = argumentsList;\r\n            const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                styleSheetRuleCb({\r\n                    id,\r\n                    styleId,\r\n                    adds: [{ rule, index }],\r\n                });\r\n            }\r\n            return target.apply(thisArg, argumentsList);\r\n        }),\r\n    });\r\n    const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n    win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n            const [index] = argumentsList;\r\n            const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                styleSheetRuleCb({\r\n                    id,\r\n                    styleId,\r\n                    removes: [{ index }],\r\n                });\r\n            }\r\n            return target.apply(thisArg, argumentsList);\r\n        }),\r\n    });\r\n    let replace;\r\n    if (win.CSSStyleSheet.prototype.replace) {\r\n        replace = win.CSSStyleSheet.prototype.replace;\r\n        win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n                const [text] = argumentsList;\r\n                const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                    styleSheetRuleCb({\r\n                        id,\r\n                        styleId,\r\n                        replace: text,\r\n                    });\r\n                }\r\n                return target.apply(thisArg, argumentsList);\r\n            }),\r\n        });\r\n    }\r\n    let replaceSync;\r\n    if (win.CSSStyleSheet.prototype.replaceSync) {\r\n        replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n        win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n                const [text] = argumentsList;\r\n                const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                    styleSheetRuleCb({\r\n                        id,\r\n                        styleId,\r\n                        replaceSync: text,\r\n                    });\r\n                }\r\n                return target.apply(thisArg, argumentsList);\r\n            }),\r\n        });\r\n    }\r\n    const supportedNestedCSSRuleTypes = {};\r\n    if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n        supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n    }\r\n    else {\r\n        if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n            supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n        }\r\n        if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n            supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n        }\r\n        if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n            supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n        }\r\n    }\r\n    const unmodifiedFunctions = {};\r\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n        unmodifiedFunctions[typeKey] = {\r\n            insertRule: type.prototype.insertRule,\r\n            deleteRule: type.prototype.deleteRule,\r\n        };\r\n        type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n                const [rule, index] = argumentsList;\r\n                const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                    styleSheetRuleCb({\r\n                        id,\r\n                        styleId,\r\n                        adds: [\r\n                            {\r\n                                rule,\r\n                                index: [\r\n                                    ...getNestedCSSRulePositions(thisArg),\r\n                                    index || 0,\r\n                                ],\r\n                            },\r\n                        ],\r\n                    });\r\n                }\r\n                return target.apply(thisArg, argumentsList);\r\n            }),\r\n        });\r\n        type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n            apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n                const [index] = argumentsList;\r\n                const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n                if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                    styleSheetRuleCb({\r\n                        id,\r\n                        styleId,\r\n                        removes: [\r\n                            { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n                        ],\r\n                    });\r\n                }\r\n                return target.apply(thisArg, argumentsList);\r\n            }),\r\n        });\r\n    });\r\n    return callbackWrapper(() => {\r\n        win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n        win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n        replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n        replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n        Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n            type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n            type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n        });\r\n    });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n    let hostId = null;\r\n    if (host.nodeName === '#document')\r\n        hostId = mirror.getId(host);\r\n    else\r\n        hostId = mirror.getId(host.host);\r\n    const patchTarget = host.nodeName === '#document'\r\n        ? host.defaultView?.Document\r\n        : host.ownerDocument?.defaultView?.ShadowRoot;\r\n    const originalPropertyDescriptor = patchTarget?.prototype\r\n        ? Object.getOwnPropertyDescriptor(patchTarget?.prototype, 'adoptedStyleSheets')\r\n        : undefined;\r\n    if (hostId === null ||\r\n        hostId === -1 ||\r\n        !patchTarget ||\r\n        !originalPropertyDescriptor)\r\n        return () => {\r\n        };\r\n    Object.defineProperty(host, 'adoptedStyleSheets', {\r\n        configurable: originalPropertyDescriptor.configurable,\r\n        enumerable: originalPropertyDescriptor.enumerable,\r\n        get() {\r\n            return originalPropertyDescriptor.get?.call(this);\r\n        },\r\n        set(sheets) {\r\n            const result = originalPropertyDescriptor.set?.call(this, sheets);\r\n            if (hostId !== null && hostId !== -1) {\r\n                try {\r\n                    stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n                }\r\n                catch (e) {\r\n                }\r\n            }\r\n            return result;\r\n        },\r\n    });\r\n    return callbackWrapper(() => {\r\n        Object.defineProperty(host, 'adoptedStyleSheets', {\r\n            configurable: originalPropertyDescriptor.configurable,\r\n            enumerable: originalPropertyDescriptor.enumerable,\r\n            get: originalPropertyDescriptor.get,\r\n            set: originalPropertyDescriptor.set,\r\n        });\r\n    });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n    const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n    win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n            const [property, value, priority] = argumentsList;\r\n            if (ignoreCSSAttributes.has(property)) {\r\n                return setProperty.apply(thisArg, [property, value, priority]);\r\n            }\r\n            const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                styleDeclarationCb({\r\n                    id,\r\n                    styleId,\r\n                    set: {\r\n                        property,\r\n                        value,\r\n                        priority,\r\n                    },\r\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\r\n                });\r\n            }\r\n            return target.apply(thisArg, argumentsList);\r\n        }),\r\n    });\r\n    const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n    win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n        apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n            const [property] = argumentsList;\r\n            if (ignoreCSSAttributes.has(property)) {\r\n                return removeProperty.apply(thisArg, [property]);\r\n            }\r\n            const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n                styleDeclarationCb({\r\n                    id,\r\n                    styleId,\r\n                    remove: {\r\n                        property,\r\n                    },\r\n                    index: getNestedCSSRulePositions(thisArg.parentRule),\r\n                });\r\n            }\r\n            return target.apply(thisArg, argumentsList);\r\n        }),\r\n    });\r\n    return callbackWrapper(() => {\r\n        win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n        win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n    });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\r\n    const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n        const target = getEventTarget(event);\r\n        if (!target ||\r\n            isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n            return;\r\n        }\r\n        const { currentTime, volume, muted, playbackRate } = target;\r\n        mediaInteractionCb({\r\n            type,\r\n            id: mirror.getId(target),\r\n            currentTime,\r\n            volume,\r\n            muted,\r\n            playbackRate,\r\n        });\r\n    }), sampling.media || 500));\r\n    const handlers = [\r\n        on('play', handler(0), doc),\r\n        on('pause', handler(1), doc),\r\n        on('seeked', handler(2), doc),\r\n        on('volumechange', handler(3), doc),\r\n        on('ratechange', handler(4), doc),\r\n    ];\r\n    return callbackWrapper(() => {\r\n        handlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n    const win = doc.defaultView;\r\n    if (!win) {\r\n        return () => {\r\n        };\r\n    }\r\n    const handlers = [];\r\n    const fontMap = new WeakMap();\r\n    const originalFontFace = win.FontFace;\r\n    win.FontFace = function FontFace(family, source, descriptors) {\r\n        const fontFace = new originalFontFace(family, source, descriptors);\r\n        fontMap.set(fontFace, {\r\n            family,\r\n            buffer: typeof source !== 'string',\r\n            descriptors,\r\n            fontSource: typeof source === 'string'\r\n                ? source\r\n                : JSON.stringify(Array.from(new Uint8Array(source))),\r\n        });\r\n        return fontFace;\r\n    };\r\n    const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n        return function (fontFace) {\r\n            setTimeout(callbackWrapper(() => {\r\n                const p = fontMap.get(fontFace);\r\n                if (p) {\r\n                    fontCb(p);\r\n                    fontMap.delete(fontFace);\r\n                }\r\n            }), 0);\r\n            return original.apply(this, [fontFace]);\r\n        };\r\n    });\r\n    handlers.push(() => {\r\n        win.FontFace = originalFontFace;\r\n    });\r\n    handlers.push(restoreHandler);\r\n    return callbackWrapper(() => {\r\n        handlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction initSelectionObserver(param) {\r\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\r\n    let collapsed = true;\r\n    const updateSelection = callbackWrapper(() => {\r\n        const selection = doc.getSelection();\r\n        if (!selection || (collapsed && selection?.isCollapsed))\r\n            return;\r\n        collapsed = selection.isCollapsed || false;\r\n        const ranges = [];\r\n        const count = selection.rangeCount || 0;\r\n        for (let i = 0; i < count; i++) {\r\n            const range = selection.getRangeAt(i);\r\n            const { startContainer, startOffset, endContainer, endOffset } = range;\r\n            const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\r\n                isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\r\n            if (blocked)\r\n                continue;\r\n            ranges.push({\r\n                start: mirror.getId(startContainer),\r\n                startOffset,\r\n                end: mirror.getId(endContainer),\r\n                endOffset,\r\n            });\r\n        }\r\n        selectionCb({ ranges });\r\n    });\r\n    updateSelection();\r\n    return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n    const win = doc.defaultView;\r\n    if (!win || !win.customElements)\r\n        return () => { };\r\n    const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n        return function (name, constructor, options) {\r\n            try {\r\n                customElementCb({\r\n                    define: {\r\n                        name,\r\n                    },\r\n                });\r\n            }\r\n            catch (e) {\r\n            }\r\n            return original.apply(this, [name, constructor, options]);\r\n        };\r\n    });\r\n    return restoreHandler;\r\n}\r\nfunction initObservers(o, _hooks = {}) {\r\n    const currentWindow = o.doc.defaultView;\r\n    if (!currentWindow) {\r\n        return () => {\r\n        };\r\n    }\r\n    const mutationObserver = initMutationObserver(o, o.doc);\r\n    const mousemoveHandler = initMoveObserver(o);\r\n    const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n    const scrollHandler = initScrollObserver(o);\r\n    const viewportResizeHandler = initViewportResizeObserver(o, {\r\n        win: currentWindow,\r\n    });\r\n    const inputHandler = initInputObserver(o);\r\n    const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n    const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n    const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n    const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n        win: currentWindow,\r\n    });\r\n    const fontObserver = o.collectFonts\r\n        ? initFontObserver(o)\r\n        : () => {\r\n        };\r\n    const selectionObserver = initSelectionObserver(o);\r\n    const customElementObserver = initCustomElementObserver(o);\r\n    const pluginHandlers = [];\r\n    for (const plugin of o.plugins) {\r\n        pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n    }\r\n    return callbackWrapper(() => {\r\n        mutationBuffers.forEach((b) => b.reset());\r\n        mutationObserver.disconnect();\r\n        mousemoveHandler();\r\n        mouseInteractionHandler();\r\n        scrollHandler();\r\n        viewportResizeHandler();\r\n        inputHandler();\r\n        mediaInteractionHandler();\r\n        styleSheetObserver();\r\n        adoptedStyleSheetObserver();\r\n        styleDeclarationObserver();\r\n        fontObserver();\r\n        selectionObserver();\r\n        customElementObserver();\r\n        pluginHandlers.forEach((h) => h());\r\n    });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n    return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n    return Boolean(typeof window[prop] !== 'undefined' &&\r\n        window[prop].prototype &&\r\n        'insertRule' in window[prop].prototype &&\r\n        'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n    constructor(generateIdFn) {\r\n        this.generateIdFn = generateIdFn;\r\n        this.iframeIdToRemoteIdMap = new WeakMap();\r\n        this.iframeRemoteIdToIdMap = new WeakMap();\r\n    }\r\n    getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n        const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n        const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n        let id = idToRemoteIdMap.get(remoteId);\r\n        if (!id) {\r\n            id = this.generateIdFn();\r\n            idToRemoteIdMap.set(remoteId, id);\r\n            remoteIdToIdMap.set(id, remoteId);\r\n        }\r\n        return id;\r\n    }\r\n    getIds(iframe, remoteId) {\r\n        const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n        const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n        return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n    }\r\n    getRemoteId(iframe, id, map) {\r\n        const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n        if (typeof id !== 'number')\r\n            return id;\r\n        const remoteId = remoteIdToIdMap.get(id);\r\n        if (!remoteId)\r\n            return -1;\r\n        return remoteId;\r\n    }\r\n    getRemoteIds(iframe, ids) {\r\n        const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n        return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n    }\r\n    reset(iframe) {\r\n        if (!iframe) {\r\n            this.iframeIdToRemoteIdMap = new WeakMap();\r\n            this.iframeRemoteIdToIdMap = new WeakMap();\r\n            return;\r\n        }\r\n        this.iframeIdToRemoteIdMap.delete(iframe);\r\n        this.iframeRemoteIdToIdMap.delete(iframe);\r\n    }\r\n    getIdToRemoteIdMap(iframe) {\r\n        let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n        if (!idToRemoteIdMap) {\r\n            idToRemoteIdMap = new Map();\r\n            this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n        }\r\n        return idToRemoteIdMap;\r\n    }\r\n    getRemoteIdToIdMap(iframe) {\r\n        let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n        if (!remoteIdToIdMap) {\r\n            remoteIdToIdMap = new Map();\r\n            this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n        }\r\n        return remoteIdToIdMap;\r\n    }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\n\nclass IframeManagerNoop {\r\n    constructor() {\r\n        this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n        this.crossOriginIframeRootIdMap = new WeakMap();\r\n    }\r\n    addIframe() {\r\n    }\r\n    addLoadListener() {\r\n    }\r\n    attachIframe() {\r\n    }\r\n}\r\nclass IframeManager {\r\n    constructor(options) {\r\n        this.iframes = new WeakMap();\r\n        this.crossOriginIframeMap = new WeakMap();\r\n        this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n        this.crossOriginIframeRootIdMap = new WeakMap();\r\n        this.mutationCb = options.mutationCb;\r\n        this.wrappedEmit = options.wrappedEmit;\r\n        this.stylesheetManager = options.stylesheetManager;\r\n        this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n        this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n        this.mirror = options.mirror;\r\n        if (this.recordCrossOriginIframes) {\r\n            window.addEventListener('message', this.handleMessage.bind(this));\r\n        }\r\n    }\r\n    addIframe(iframeEl) {\r\n        this.iframes.set(iframeEl, true);\r\n        if (iframeEl.contentWindow)\r\n            this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n    }\r\n    addLoadListener(cb) {\r\n        this.loadListener = cb;\r\n    }\r\n    attachIframe(iframeEl, childSn) {\r\n        this.mutationCb({\r\n            adds: [\r\n                {\r\n                    parentId: this.mirror.getId(iframeEl),\r\n                    nextId: null,\r\n                    node: childSn,\r\n                },\r\n            ],\r\n            removes: [],\r\n            texts: [],\r\n            attributes: [],\r\n            isAttachIframe: true,\r\n        });\r\n        this.loadListener?.(iframeEl);\r\n        if (iframeEl.contentDocument &&\r\n            iframeEl.contentDocument.adoptedStyleSheets &&\r\n            iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n            this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n    }\r\n    handleMessage(message) {\r\n        const crossOriginMessageEvent = message;\r\n        if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n            crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n            return;\r\n        const iframeSourceWindow = message.source;\r\n        if (!iframeSourceWindow)\r\n            return;\r\n        const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n        if (!iframeEl)\r\n            return;\r\n        const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n        if (transformedEvent)\r\n            this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n    }\r\n    transformCrossOriginEvent(iframeEl, e) {\r\n        switch (e.type) {\r\n            case EventType.FullSnapshot: {\r\n                this.crossOriginIframeMirror.reset(iframeEl);\r\n                this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n                this.replaceIdOnNode(e.data.node, iframeEl);\r\n                const rootId = e.data.node.id;\r\n                this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n                this.patchRootIdOnNode(e.data.node, rootId);\r\n                return {\r\n                    timestamp: e.timestamp,\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.Mutation,\r\n                        adds: [\r\n                            {\r\n                                parentId: this.mirror.getId(iframeEl),\r\n                                nextId: null,\r\n                                node: e.data.node,\r\n                            },\r\n                        ],\r\n                        removes: [],\r\n                        texts: [],\r\n                        attributes: [],\r\n                        isAttachIframe: true,\r\n                    },\r\n                };\r\n            }\r\n            case EventType.Meta:\r\n            case EventType.Load:\r\n            case EventType.DomContentLoaded: {\r\n                return false;\r\n            }\r\n            case EventType.Plugin: {\r\n                return e;\r\n            }\r\n            case EventType.Custom: {\r\n                this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n                return e;\r\n            }\r\n            case EventType.IncrementalSnapshot: {\r\n                switch (e.data.source) {\r\n                    case IncrementalSource.Mutation: {\r\n                        e.data.adds.forEach((n) => {\r\n                            this.replaceIds(n, iframeEl, [\r\n                                'parentId',\r\n                                'nextId',\r\n                                'previousId',\r\n                            ]);\r\n                            this.replaceIdOnNode(n.node, iframeEl);\r\n                            const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n                            rootId && this.patchRootIdOnNode(n.node, rootId);\r\n                        });\r\n                        e.data.removes.forEach((n) => {\r\n                            this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n                        });\r\n                        e.data.attributes.forEach((n) => {\r\n                            this.replaceIds(n, iframeEl, ['id']);\r\n                        });\r\n                        e.data.texts.forEach((n) => {\r\n                            this.replaceIds(n, iframeEl, ['id']);\r\n                        });\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.Drag:\r\n                    case IncrementalSource.TouchMove:\r\n                    case IncrementalSource.MouseMove: {\r\n                        e.data.positions.forEach((p) => {\r\n                            this.replaceIds(p, iframeEl, ['id']);\r\n                        });\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.ViewportResize: {\r\n                        return false;\r\n                    }\r\n                    case IncrementalSource.MediaInteraction:\r\n                    case IncrementalSource.MouseInteraction:\r\n                    case IncrementalSource.Scroll:\r\n                    case IncrementalSource.CanvasMutation:\r\n                    case IncrementalSource.Input: {\r\n                        this.replaceIds(e.data, iframeEl, ['id']);\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.StyleSheetRule:\r\n                    case IncrementalSource.StyleDeclaration: {\r\n                        this.replaceIds(e.data, iframeEl, ['id']);\r\n                        this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.Font: {\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.Selection: {\r\n                        e.data.ranges.forEach((range) => {\r\n                            this.replaceIds(range, iframeEl, ['start', 'end']);\r\n                        });\r\n                        return e;\r\n                    }\r\n                    case IncrementalSource.AdoptedStyleSheet: {\r\n                        this.replaceIds(e.data, iframeEl, ['id']);\r\n                        this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n                        e.data.styles?.forEach((style) => {\r\n                            this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n                        });\r\n                        return e;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    replace(iframeMirror, obj, iframeEl, keys) {\r\n        for (const key of keys) {\r\n            if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n                continue;\r\n            if (Array.isArray(obj[key])) {\r\n                obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n            }\r\n            else {\r\n                obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n    replaceIds(obj, iframeEl, keys) {\r\n        return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n    }\r\n    replaceStyleIds(obj, iframeEl, keys) {\r\n        return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n    }\r\n    replaceIdOnNode(node, iframeEl) {\r\n        this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n        if ('childNodes' in node) {\r\n            node.childNodes.forEach((child) => {\r\n                this.replaceIdOnNode(child, iframeEl);\r\n            });\r\n        }\r\n    }\r\n    patchRootIdOnNode(node, rootId) {\r\n        if (node.type !== NodeType.Document && !node.rootId)\r\n            node.rootId = rootId;\r\n        if ('childNodes' in node) {\r\n            node.childNodes.forEach((child) => {\r\n                this.patchRootIdOnNode(child, rootId);\r\n            });\r\n        }\r\n    }\r\n}\n\nexport { IframeManager, IframeManagerNoop };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { setTimeout, patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManagerNoop {\r\n    init() {\r\n    }\r\n    addShadowRoot() {\r\n    }\r\n    observeAttachShadow() {\r\n    }\r\n    reset() {\r\n    }\r\n}\r\nclass ShadowDomManager {\r\n    constructor(options) {\r\n        this.shadowDoms = new WeakSet();\r\n        this.restoreHandlers = [];\r\n        this.mutationCb = options.mutationCb;\r\n        this.scrollCb = options.scrollCb;\r\n        this.bypassOptions = options.bypassOptions;\r\n        this.mirror = options.mirror;\r\n        this.init();\r\n    }\r\n    init() {\r\n        this.reset();\r\n        this.patchAttachShadow(Element, document);\r\n    }\r\n    addShadowRoot(shadowRoot, doc) {\r\n        if (!isNativeShadowDom(shadowRoot))\r\n            return;\r\n        if (this.shadowDoms.has(shadowRoot))\r\n            return;\r\n        this.shadowDoms.add(shadowRoot);\r\n        const observer = initMutationObserver({\r\n            ...this.bypassOptions,\r\n            doc,\r\n            mutationCb: this.mutationCb,\r\n            mirror: this.mirror,\r\n            shadowDomManager: this,\r\n        }, shadowRoot);\r\n        this.restoreHandlers.push(() => observer.disconnect());\r\n        this.restoreHandlers.push(initScrollObserver({\r\n            ...this.bypassOptions,\r\n            scrollCb: this.scrollCb,\r\n            doc: shadowRoot,\r\n            mirror: this.mirror,\r\n        }));\r\n        setTimeout(() => {\r\n            if (shadowRoot.adoptedStyleSheets &&\r\n                shadowRoot.adoptedStyleSheets.length > 0)\r\n                this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n            this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n                mirror: this.mirror,\r\n                stylesheetManager: this.bypassOptions.stylesheetManager,\r\n            }, shadowRoot));\r\n        }, 0);\r\n    }\r\n    observeAttachShadow(iframeElement) {\r\n        if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n            return;\r\n        this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n    }\r\n    patchAttachShadow(element, doc) {\r\n        const manager = this;\r\n        this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n            return function (option) {\r\n                const shadowRoot = original.call(this, option);\r\n                if (this.shadowRoot && inDom(this))\r\n                    manager.addShadowRoot(this.shadowRoot, doc);\r\n                return shadowRoot;\r\n            };\r\n        }));\r\n    }\r\n    reset() {\r\n        this.restoreHandlers.forEach((handler) => {\r\n            try {\r\n                handler();\r\n            }\r\n            catch (e) {\r\n            }\r\n        });\r\n        this.restoreHandlers = [];\r\n        this.shadowDoms = new WeakSet();\r\n    }\r\n}\n\nexport { ShadowDomManager, ShadowDomManagerNoop };\n","import { onRequestAnimationFrame, isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport { getImageBitmapDataUrlWorkerURL as t } from '../../../../../rrweb-worker/es/rrweb-worker/index.js';\nimport { callbackWrapper, registerErrorHandler } from '../../error-handler.js';\n\nclass CanvasManagerNoop {\r\n    reset() {\r\n    }\r\n    freeze() {\r\n    }\r\n    unfreeze() {\r\n    }\r\n    lock() {\r\n    }\r\n    unlock() {\r\n    }\r\n    snapshot() {\r\n    }\r\n}\r\nclass CanvasManager {\r\n    reset() {\r\n        this.pendingCanvasMutations.clear();\r\n        this.resetObservers && this.resetObservers();\r\n    }\r\n    freeze() {\r\n        this.frozen = true;\r\n    }\r\n    unfreeze() {\r\n        this.frozen = false;\r\n    }\r\n    lock() {\r\n        this.locked = true;\r\n    }\r\n    unlock() {\r\n        this.locked = false;\r\n    }\r\n    constructor(options) {\r\n        this.pendingCanvasMutations = new Map();\r\n        this.rafStamps = { latestId: 0, invokeId: null };\r\n        this.frozen = false;\r\n        this.locked = false;\r\n        this.processMutation = (target, mutation) => {\r\n            const newFrame = this.rafStamps.invokeId &&\r\n                this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n            if (newFrame || !this.rafStamps.invokeId)\r\n                this.rafStamps.invokeId = this.rafStamps.latestId;\r\n            if (!this.pendingCanvasMutations.has(target)) {\r\n                this.pendingCanvasMutations.set(target, []);\r\n            }\r\n            this.pendingCanvasMutations.get(target).push(mutation);\r\n        };\r\n        const { sampling = 'all', win, blockClass, blockSelector, unblockSelector, maxCanvasSize, recordCanvas, dataURLOptions, errorHandler, } = options;\r\n        this.mutationCb = options.mutationCb;\r\n        this.mirror = options.mirror;\r\n        this.options = options;\r\n        if (errorHandler) {\r\n            registerErrorHandler(errorHandler);\r\n        }\r\n        if (options.enableManualSnapshot) {\r\n            return;\r\n        }\r\n        callbackWrapper(() => {\r\n            if (recordCanvas && sampling === 'all')\r\n                this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\r\n            if (recordCanvas && typeof sampling === 'number')\r\n                this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\r\n                    dataURLOptions,\r\n                });\r\n        })();\r\n    }\r\n    initCanvasFPSObserver(fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\r\n        const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\r\n        const rafId = this.takeSnapshot(false, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\r\n        this.resetObservers = () => {\r\n            canvasContextReset();\r\n            cancelAnimationFrame(rafId);\r\n        };\r\n    }\r\n    initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\r\n        this.startRAFTimestamping();\r\n        this.startPendingCanvasMutationFlusher();\r\n        const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, false);\r\n        const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector);\r\n        const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\r\n        this.resetObservers = () => {\r\n            canvasContextReset();\r\n            canvas2DReset();\r\n            canvasWebGL1and2Reset();\r\n        };\r\n    }\r\n    snapshot(canvasElement) {\r\n        const { options } = this;\r\n        const rafId = this.takeSnapshot(true, options.sampling === 'all' ? 2 : options.sampling || 2, options.win, options.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\r\n        this.resetObservers = () => {\r\n            cancelAnimationFrame(rafId);\r\n        };\r\n    }\r\n    takeSnapshot(isManualSnapshot, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\r\n        const snapshotInProgressMap = new Map();\r\n        const worker = new Worker(t());\r\n        worker.onmessage = (e) => {\r\n            const data = e.data;\r\n            const { id } = data;\r\n            snapshotInProgressMap.set(id, false);\r\n            if (!('base64' in data))\r\n                return;\r\n            const { base64, type, width, height } = data;\r\n            this.mutationCb({\r\n                id,\r\n                type: CanvasContext['2D'],\r\n                commands: [\r\n                    {\r\n                        property: 'clearRect',\r\n                        args: [0, 0, width, height],\r\n                    },\r\n                    {\r\n                        property: 'drawImage',\r\n                        args: [\r\n                            {\r\n                                rr_type: 'ImageBitmap',\r\n                                args: [\r\n                                    {\r\n                                        rr_type: 'Blob',\r\n                                        data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n                                        type,\r\n                                    },\r\n                                ],\r\n                            },\r\n                            0,\r\n                            0,\r\n                            width,\r\n                            height,\r\n                        ],\r\n                    },\r\n                ],\r\n            });\r\n        };\r\n        const timeBetweenSnapshots = 1000 / fps;\r\n        let lastSnapshotTime = 0;\r\n        let rafId;\r\n        const getCanvas = (canvasElement) => {\r\n            if (canvasElement) {\r\n                return [canvasElement];\r\n            }\r\n            const matchedCanvas = [];\r\n            win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n                if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n                    matchedCanvas.push(canvas);\r\n                }\r\n            });\r\n            return matchedCanvas;\r\n        };\r\n        const takeCanvasSnapshots = (timestamp) => {\r\n            if (lastSnapshotTime &&\r\n                timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n                rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n                return;\r\n            }\r\n            lastSnapshotTime = timestamp;\r\n            getCanvas(canvasElement).forEach((canvas) => {\r\n                const id = this.mirror.getId(canvas);\r\n                if (snapshotInProgressMap.get(id))\r\n                    return;\r\n                if (!canvas.width || !canvas.height)\r\n                    return;\r\n                snapshotInProgressMap.set(id, true);\r\n                if (!isManualSnapshot &&\r\n                    ['webgl', 'webgl2'].includes(canvas.__context)) {\r\n                    const context = canvas.getContext(canvas.__context);\r\n                    if (context?.getContextAttributes()?.preserveDrawingBuffer === false) {\r\n                        context.clear(context.COLOR_BUFFER_BIT);\r\n                    }\r\n                }\r\n                createImageBitmap(canvas)\r\n                    .then((bitmap) => {\r\n                    worker.postMessage({\r\n                        id,\r\n                        bitmap,\r\n                        width: canvas.width,\r\n                        height: canvas.height,\r\n                        dataURLOptions,\r\n                        maxCanvasSize,\r\n                    }, [bitmap]);\r\n                })\r\n                    .catch((error) => {\r\n                    callbackWrapper(() => {\r\n                        throw error;\r\n                    })();\r\n                });\r\n            });\r\n            rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n        };\r\n        rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n        return rafId;\r\n    }\r\n    startPendingCanvasMutationFlusher() {\r\n        onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n    }\r\n    startRAFTimestamping() {\r\n        const setLatestRAFTimestamp = (timestamp) => {\r\n            this.rafStamps.latestId = timestamp;\r\n            onRequestAnimationFrame(setLatestRAFTimestamp);\r\n        };\r\n        onRequestAnimationFrame(setLatestRAFTimestamp);\r\n    }\r\n    flushPendingCanvasMutations() {\r\n        this.pendingCanvasMutations.forEach((values, canvas) => {\r\n            const id = this.mirror.getId(canvas);\r\n            this.flushPendingCanvasMutationFor(canvas, id);\r\n        });\r\n        onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n    }\r\n    flushPendingCanvasMutationFor(canvas, id) {\r\n        if (this.frozen || this.locked) {\r\n            return;\r\n        }\r\n        const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n        if (!valuesWithType || id === -1)\r\n            return;\r\n        const values = valuesWithType.map((value) => {\r\n            const { type, ...rest } = value;\r\n            return rest;\r\n        });\r\n        const { type } = valuesWithType[0];\r\n        this.mutationCb({ id, type, commands: values });\r\n        this.pendingCanvasMutations.delete(canvas);\r\n    }\r\n}\n\nexport { CanvasManager, CanvasManagerNoop };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n    constructor(options) {\r\n        this.trackedLinkElements = new WeakSet();\r\n        this.styleMirror = new StyleSheetMirror();\r\n        this.mutationCb = options.mutationCb;\r\n        this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n    }\r\n    attachLinkElement(linkEl, childSn) {\r\n        if ('_cssText' in childSn.attributes)\r\n            this.mutationCb({\r\n                adds: [],\r\n                removes: [],\r\n                texts: [],\r\n                attributes: [\r\n                    {\r\n                        id: childSn.id,\r\n                        attributes: childSn\r\n                            .attributes,\r\n                    },\r\n                ],\r\n            });\r\n        this.trackLinkElement(linkEl);\r\n    }\r\n    trackLinkElement(linkEl) {\r\n        if (this.trackedLinkElements.has(linkEl))\r\n            return;\r\n        this.trackedLinkElements.add(linkEl);\r\n        this.trackStylesheetInLinkElement(linkEl);\r\n    }\r\n    adoptStyleSheets(sheets, hostId) {\r\n        if (sheets.length === 0)\r\n            return;\r\n        const adoptedStyleSheetData = {\r\n            id: hostId,\r\n            styleIds: [],\r\n        };\r\n        const styles = [];\r\n        for (const sheet of sheets) {\r\n            let styleId;\r\n            if (!this.styleMirror.has(sheet)) {\r\n                styleId = this.styleMirror.add(sheet);\r\n                styles.push({\r\n                    styleId,\r\n                    rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n                        rule: stringifyRule(r),\r\n                        index,\r\n                    })),\r\n                });\r\n            }\r\n            else\r\n                styleId = this.styleMirror.getId(sheet);\r\n            adoptedStyleSheetData.styleIds.push(styleId);\r\n        }\r\n        if (styles.length > 0)\r\n            adoptedStyleSheetData.styles = styles;\r\n        this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n    }\r\n    reset() {\r\n        this.styleMirror.reset();\r\n        this.trackedLinkElements = new WeakSet();\r\n    }\r\n    trackStylesheetInLinkElement(linkEl) {\r\n    }\r\n}\n\nexport { StylesheetManager };\n","import { onRequestAnimationFrame } from '../utils.js';\n\nclass ProcessedNodeManager {\r\n    constructor() {\r\n        this.nodeMap = new WeakMap();\r\n        this.loop = true;\r\n        this.periodicallyClear();\r\n    }\r\n    periodicallyClear() {\r\n        onRequestAnimationFrame(() => {\r\n            this.clear();\r\n            if (this.loop)\r\n                this.periodicallyClear();\r\n        });\r\n    }\r\n    inOtherBuffer(node, thisBuffer) {\r\n        const buffers = this.nodeMap.get(node);\r\n        return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n    }\r\n    add(node, buffer) {\r\n        this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n    }\r\n    clear() {\r\n        this.nodeMap = new WeakMap();\r\n    }\r\n    destroy() {\r\n        this.loop = false;\r\n    }\r\n}\n\nexport { ProcessedNodeManager as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, nowTimestamp, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\nimport { IframeManagerNoop, IframeManager } from './iframe-manager.js';\nimport { ShadowDomManagerNoop, ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManagerNoop } from './observers/canvas/canvas-manager.js';\nexport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nlet wrappedEmit;\r\nlet _wrappedEmit;\r\nlet _takeFullSnapshot;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n    const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, maxCanvasSize = null, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n        ? options.recordAfter\r\n        : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\r\n    registerErrorHandler(errorHandler);\r\n    const inEmittingFrame = recordCrossOriginIframes\r\n        ? window.parent === window\r\n        : true;\r\n    let passEmitsToParent = false;\r\n    if (!inEmittingFrame) {\r\n        try {\r\n            if (window.parent.document) {\r\n                passEmitsToParent = false;\r\n            }\r\n        }\r\n        catch (e) {\r\n            passEmitsToParent = true;\r\n        }\r\n    }\r\n    if (inEmittingFrame && !emit) {\r\n        throw new Error('emit function is required');\r\n    }\r\n    if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n        sampling.mousemove = mousemoveWait;\r\n    }\r\n    mirror.reset();\r\n    const maskInputOptions = maskAllInputs === true\r\n        ? {\r\n            color: true,\r\n            date: true,\r\n            'datetime-local': true,\r\n            email: true,\r\n            month: true,\r\n            number: true,\r\n            range: true,\r\n            search: true,\r\n            tel: true,\r\n            text: true,\r\n            time: true,\r\n            url: true,\r\n            week: true,\r\n            textarea: true,\r\n            select: true,\r\n            radio: true,\r\n            checkbox: true,\r\n        }\r\n        : _maskInputOptions !== undefined\r\n            ? _maskInputOptions\r\n            : {};\r\n    const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n        ? {\r\n            script: true,\r\n            comment: true,\r\n            headFavicon: true,\r\n            headWhitespace: true,\r\n            headMetaSocial: true,\r\n            headMetaRobots: true,\r\n            headMetaHttpEquiv: true,\r\n            headMetaVerification: true,\r\n            headMetaAuthorship: _slimDOMOptions === 'all',\r\n            headMetaDescKeywords: _slimDOMOptions === 'all',\r\n        }\r\n        : _slimDOMOptions\r\n            ? _slimDOMOptions\r\n            : {};\r\n    polyfill();\r\n    let lastFullSnapshotEvent;\r\n    let incrementalSnapshotCount = 0;\r\n    const eventProcessor = (e) => {\r\n        for (const plugin of plugins || []) {\r\n            if (plugin.eventProcessor) {\r\n                e = plugin.eventProcessor(e);\r\n            }\r\n        }\r\n        if (packFn &&\r\n            !passEmitsToParent) {\r\n            e = packFn(e);\r\n        }\r\n        return e;\r\n    };\r\n    wrappedEmit = (r, isCheckout) => {\r\n        const e = r;\r\n        e.timestamp = nowTimestamp();\r\n        if (mutationBuffers[0]?.isFrozen() &&\r\n            e.type !== EventType.FullSnapshot &&\r\n            !(e.type === EventType.IncrementalSnapshot &&\r\n                e.data.source === IncrementalSource.Mutation)) {\r\n            mutationBuffers.forEach((buf) => buf.unfreeze());\r\n        }\r\n        if (inEmittingFrame) {\r\n            emit?.(eventProcessor(e), isCheckout);\r\n        }\r\n        else if (passEmitsToParent) {\r\n            const message = {\r\n                type: 'rrweb',\r\n                event: eventProcessor(e),\r\n                origin: window.location.origin,\r\n                isCheckout,\r\n            };\r\n            window.parent.postMessage(message, '*');\r\n        }\r\n        if (e.type === EventType.FullSnapshot) {\r\n            lastFullSnapshotEvent = e;\r\n            incrementalSnapshotCount = 0;\r\n        }\r\n        else if (e.type === EventType.IncrementalSnapshot) {\r\n            if (e.data.source === IncrementalSource.Mutation &&\r\n                e.data.isAttachIframe) {\r\n                return;\r\n            }\r\n            incrementalSnapshotCount++;\r\n            const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n            const exceedTime = checkoutEveryNms &&\r\n                lastFullSnapshotEvent &&\r\n                e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n            if (exceedCount || exceedTime) {\r\n                takeFullSnapshot(true);\r\n            }\r\n        }\r\n    };\r\n    _wrappedEmit = wrappedEmit;\r\n    const wrappedMutationEmit = (m) => {\r\n        wrappedEmit({\r\n            type: EventType.IncrementalSnapshot,\r\n            data: {\r\n                source: IncrementalSource.Mutation,\r\n                ...m,\r\n            },\r\n        });\r\n    };\r\n    const wrappedScrollEmit = (p) => wrappedEmit({\r\n        type: EventType.IncrementalSnapshot,\r\n        data: {\r\n            source: IncrementalSource.Scroll,\r\n            ...p,\r\n        },\r\n    });\r\n    const wrappedCanvasMutationEmit = (p) => wrappedEmit({\r\n        type: EventType.IncrementalSnapshot,\r\n        data: {\r\n            source: IncrementalSource.CanvasMutation,\r\n            ...p,\r\n        },\r\n    });\r\n    const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\r\n        type: EventType.IncrementalSnapshot,\r\n        data: {\r\n            source: IncrementalSource.AdoptedStyleSheet,\r\n            ...a,\r\n        },\r\n    });\r\n    const stylesheetManager = new StylesheetManager({\r\n        mutationCb: wrappedMutationEmit,\r\n        adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n    });\r\n    const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\r\n        ? new IframeManagerNoop()\r\n        : new IframeManager({\r\n            mirror,\r\n            mutationCb: wrappedMutationEmit,\r\n            stylesheetManager: stylesheetManager,\r\n            recordCrossOriginIframes,\r\n            wrappedEmit,\r\n        });\r\n    for (const plugin of plugins || []) {\r\n        if (plugin.getMirror)\r\n            plugin.getMirror({\r\n                nodeMirror: mirror,\r\n                crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n                crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n            });\r\n    }\r\n    const processedNodeManager = new ProcessedNodeManager();\r\n    const canvasManager = _getCanvasManager(getCanvasManager, {\r\n        mirror,\r\n        win: window,\r\n        mutationCb: (p) => wrappedEmit({\r\n            type: EventType.IncrementalSnapshot,\r\n            data: {\r\n                source: IncrementalSource.CanvasMutation,\r\n                ...p,\r\n            },\r\n        }),\r\n        recordCanvas,\r\n        blockClass,\r\n        blockSelector,\r\n        unblockSelector,\r\n        maxCanvasSize,\r\n        sampling: sampling['canvas'],\r\n        dataURLOptions,\r\n        errorHandler,\r\n    });\r\n    const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\r\n        __RRWEB_EXCLUDE_SHADOW_DOM__\r\n        ? new ShadowDomManagerNoop()\r\n        : new ShadowDomManager({\r\n            mutationCb: wrappedMutationEmit,\r\n            scrollCb: wrappedScrollEmit,\r\n            bypassOptions: {\r\n                onMutation,\r\n                blockClass,\r\n                blockSelector,\r\n                unblockSelector,\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n                inlineStylesheet,\r\n                maskInputOptions,\r\n                dataURLOptions,\r\n                maskAttributeFn,\r\n                maskTextFn,\r\n                maskInputFn,\r\n                recordCanvas,\r\n                inlineImages,\r\n                sampling,\r\n                slimDOMOptions,\r\n                iframeManager,\r\n                stylesheetManager,\r\n                canvasManager,\r\n                keepIframeSrcFn,\r\n                processedNodeManager,\r\n            },\r\n            mirror,\r\n        });\r\n    const takeFullSnapshot = (isCheckout = false) => {\r\n        wrappedEmit({\r\n            type: EventType.Meta,\r\n            data: {\r\n                href: window.location.href,\r\n                width: getWindowWidth(),\r\n                height: getWindowHeight(),\r\n            },\r\n        }, isCheckout);\r\n        stylesheetManager.reset();\r\n        shadowDomManager.init();\r\n        mutationBuffers.forEach((buf) => buf.lock());\r\n        const node = snapshot(document, {\r\n            mirror,\r\n            blockClass,\r\n            blockSelector,\r\n            unblockSelector,\r\n            maskAllText,\r\n            maskTextClass,\r\n            unmaskTextClass,\r\n            maskTextSelector,\r\n            unmaskTextSelector,\r\n            inlineStylesheet,\r\n            maskAllInputs: maskInputOptions,\r\n            maskAttributeFn,\r\n            maskInputFn,\r\n            maskTextFn,\r\n            slimDOM: slimDOMOptions,\r\n            dataURLOptions,\r\n            recordCanvas,\r\n            inlineImages,\r\n            onSerialize: (n) => {\r\n                if (isSerializedIframe(n, mirror)) {\r\n                    iframeManager.addIframe(n);\r\n                }\r\n                if (isSerializedStylesheet(n, mirror)) {\r\n                    stylesheetManager.trackLinkElement(n);\r\n                }\r\n                if (hasShadowRoot(n)) {\r\n                    shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n                }\r\n            },\r\n            onIframeLoad: (iframe, childSn) => {\r\n                iframeManager.attachIframe(iframe, childSn);\r\n                shadowDomManager.observeAttachShadow(iframe);\r\n            },\r\n            onStylesheetLoad: (linkEl, childSn) => {\r\n                stylesheetManager.attachLinkElement(linkEl, childSn);\r\n            },\r\n            keepIframeSrcFn,\r\n        });\r\n        if (!node) {\r\n            return console.warn('Failed to snapshot the document');\r\n        }\r\n        wrappedEmit({\r\n            type: EventType.FullSnapshot,\r\n            data: {\r\n                node,\r\n                initialOffset: getWindowScroll(window),\r\n            },\r\n        });\r\n        mutationBuffers.forEach((buf) => buf.unlock());\r\n        if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n            stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n    };\r\n    _takeFullSnapshot = takeFullSnapshot;\r\n    try {\r\n        const handlers = [];\r\n        const observe = (doc) => {\r\n            return callbackWrapper(initObservers)({\r\n                onMutation,\r\n                mutationCb: wrappedMutationEmit,\r\n                mousemoveCb: (positions, source) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source,\r\n                        positions,\r\n                    },\r\n                }),\r\n                mouseInteractionCb: (d) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.MouseInteraction,\r\n                        ...d,\r\n                    },\r\n                }),\r\n                scrollCb: wrappedScrollEmit,\r\n                viewportResizeCb: (d) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.ViewportResize,\r\n                        ...d,\r\n                    },\r\n                }),\r\n                inputCb: (v) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.Input,\r\n                        ...v,\r\n                    },\r\n                }),\r\n                mediaInteractionCb: (p) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.MediaInteraction,\r\n                        ...p,\r\n                    },\r\n                }),\r\n                styleSheetRuleCb: (r) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.StyleSheetRule,\r\n                        ...r,\r\n                    },\r\n                }),\r\n                styleDeclarationCb: (r) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.StyleDeclaration,\r\n                        ...r,\r\n                    },\r\n                }),\r\n                canvasMutationCb: wrappedCanvasMutationEmit,\r\n                fontCb: (p) => wrappedEmit({\r\n                    type: EventType.IncrementalSnapshot,\r\n                    data: {\r\n                        source: IncrementalSource.Font,\r\n                        ...p,\r\n                    },\r\n                }),\r\n                selectionCb: (p) => {\r\n                    wrappedEmit({\r\n                        type: EventType.IncrementalSnapshot,\r\n                        data: {\r\n                            source: IncrementalSource.Selection,\r\n                            ...p,\r\n                        },\r\n                    });\r\n                },\r\n                customElementCb: (c) => {\r\n                    wrappedEmit({\r\n                        type: EventType.IncrementalSnapshot,\r\n                        data: {\r\n                            source: IncrementalSource.CustomElement,\r\n                            ...c,\r\n                        },\r\n                    });\r\n                },\r\n                blockClass,\r\n                ignoreClass,\r\n                ignoreSelector,\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n                maskInputOptions,\r\n                inlineStylesheet,\r\n                sampling,\r\n                recordCanvas,\r\n                inlineImages,\r\n                userTriggeredOnInput,\r\n                collectFonts,\r\n                doc,\r\n                maskAttributeFn,\r\n                maskInputFn,\r\n                maskTextFn,\r\n                keepIframeSrcFn,\r\n                blockSelector,\r\n                unblockSelector,\r\n                slimDOMOptions,\r\n                dataURLOptions,\r\n                mirror,\r\n                iframeManager,\r\n                stylesheetManager,\r\n                shadowDomManager,\r\n                processedNodeManager,\r\n                canvasManager,\r\n                ignoreCSSAttributes,\r\n                plugins: plugins\r\n                    ?.filter((p) => p.observer)\r\n                    ?.map((p) => ({\r\n                    observer: p.observer,\r\n                    options: p.options,\r\n                    callback: (payload) => wrappedEmit({\r\n                        type: EventType.Plugin,\r\n                        data: {\r\n                            plugin: p.name,\r\n                            payload,\r\n                        },\r\n                    }),\r\n                })) || [],\r\n            }, {});\r\n        };\r\n        iframeManager.addLoadListener((iframeEl) => {\r\n            try {\r\n                handlers.push(observe(iframeEl.contentDocument));\r\n            }\r\n            catch (error) {\r\n                console.warn(error);\r\n            }\r\n        });\r\n        const init = () => {\r\n            takeFullSnapshot();\r\n            handlers.push(observe(document));\r\n        };\r\n        if (document.readyState === 'interactive' ||\r\n            document.readyState === 'complete') {\r\n            init();\r\n        }\r\n        else {\r\n            handlers.push(on('DOMContentLoaded', () => {\r\n                wrappedEmit({\r\n                    type: EventType.DomContentLoaded,\r\n                    data: {},\r\n                });\r\n                if (recordAfter === 'DOMContentLoaded')\r\n                    init();\r\n            }));\r\n            handlers.push(on('load', () => {\r\n                wrappedEmit({\r\n                    type: EventType.Load,\r\n                    data: {},\r\n                });\r\n                if (recordAfter === 'load')\r\n                    init();\r\n            }, window));\r\n        }\r\n        return () => {\r\n            handlers.forEach((h) => h());\r\n            processedNodeManager.destroy();\r\n            _takeFullSnapshot = undefined;\r\n            unregisterErrorHandler();\r\n        };\r\n    }\r\n    catch (error) {\r\n        console.warn(error);\r\n    }\r\n}\r\nfunction addCustomEvent(tag, payload) {\r\n    if (!_wrappedEmit) {\r\n        throw new Error('please add custom event after start recording');\r\n    }\r\n    wrappedEmit({\r\n        type: EventType.Custom,\r\n        data: {\r\n            tag,\r\n            payload,\r\n        },\r\n    });\r\n}\r\nfunction freezePage() {\r\n    mutationBuffers.forEach((buf) => buf.freeze());\r\n}\r\nfunction takeFullSnapshot(isCheckout) {\r\n    if (!_takeFullSnapshot) {\r\n        throw new Error('please take full snapshot after start recording');\r\n    }\r\n    _takeFullSnapshot(isCheckout);\r\n}\r\nrecord.mirror = mirror;\r\nrecord.takeFullSnapshot = takeFullSnapshot;\r\nfunction _getCanvasManager(getCanvasManagerFn, options) {\r\n    try {\r\n        return getCanvasManagerFn\r\n            ? getCanvasManagerFn(options)\r\n            : new CanvasManagerNoop();\r\n    }\r\n    catch {\r\n        console.warn('Unable to initialize CanvasManager');\r\n        return new CanvasManagerNoop();\r\n    }\r\n}\n\nexport { addCustomEvent, record as default, freezePage, mirror, takeFullSnapshot };\n","/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nexport function timestampToMs(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nexport function timestampToS(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../../types';\n\n/**\n * Add a breadcrumb event to replay.\n */\nexport function addBreadcrumbEvent(replay: ReplayContainer, breadcrumb: Breadcrumb): void {\n  if (breadcrumb.category === 'sentry.transaction') {\n    return;\n  }\n\n  if (['ui.click', 'ui.input'].includes(breadcrumb.category as string)) {\n    replay.triggerUserActivity();\n  } else {\n    replay.checkAndHandleExpiredSession();\n  }\n\n  replay.addUpdate(() => {\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.throttledAddEvent({\n      type: EventType.Custom,\n      // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n      // but maybe we should just keep them as milliseconds\n      timestamp: (breadcrumb.timestamp || 0) * 1000,\n      data: {\n        tag: 'breadcrumb',\n        // normalize to max. 10 depth and 1_000 properties per object\n        payload: normalize(breadcrumb, 10, 1_000),\n      },\n    });\n\n    // Do not flush after console log messages\n    return breadcrumb.category === 'console';\n  });\n}\n","import type { INode } from '@sentry-internal/rrweb-snapshot';\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nexport function getClosestInteractive(element: Element): Element {\n  const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n  return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in <button><img></button>,\n * The target will be the image, not the button, which we don't want here\n */\nexport function getClickTargetNode(event: Event | MouseEvent | Node): Node | INode | null {\n  const target = getTargetNode(event);\n\n  if (!target || !(target instanceof Element)) {\n    return target;\n  }\n\n  return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nexport function getTargetNode(event: Node | { target: EventTarget | null }): Node | INode | null {\n  if (isEventWithTarget(event)) {\n    return event.target as Node | null;\n  }\n\n  return event;\n}\n\nfunction isEventWithTarget(event: unknown): event is { target: EventTarget | null } {\n  return typeof event === 'object' && !!event && 'target' in event;\n}\n","import { fill } from '@sentry/utils';\n\nimport { WINDOW } from '../../constants';\n\ntype WindowOpenHandler = () => void;\n\nlet handlers: undefined | WindowOpenHandler[];\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nexport function onWindowOpen(cb: WindowOpenHandler): () => void {\n  // Ensure to only register this once\n  if (!handlers) {\n    handlers = [];\n    monkeyPatchWindowOpen();\n  }\n\n  handlers.push(cb);\n\n  return () => {\n    const pos = handlers ? handlers.indexOf(cb) : -1;\n    if (pos > -1) {\n      (handlers as WindowOpenHandler[]).splice(pos, 1);\n    }\n  };\n}\n\nfunction monkeyPatchWindowOpen(): void {\n  fill(WINDOW, 'open', function (originalWindowOpen: () => void): () => void {\n    return function (...args: unknown[]): void {\n      if (handlers) {\n        try {\n          handlers.forEach(handler => handler());\n        } catch (e) {\n          // ignore errors in here\n        }\n      }\n\n      return originalWindowOpen.apply(WINDOW, args);\n    };\n  });\n}\n","import { IncrementalSource, MouseInteractions, record } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\n\nimport { WINDOW } from '../constants';\nimport type {\n  RecordingEvent,\n  ReplayClickDetector,\n  ReplayContainer,\n  ReplayMultiClickFrame,\n  ReplaySlowClickFrame,\n  SlowClickConfig,\n} from '../types';\nimport { ReplayEventTypeIncrementalSnapshot } from '../types';\nimport { timestampToS } from '../util/timestamp';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClosestInteractive } from './util/domUtils';\nimport { onWindowOpen } from './util/onWindowOpen';\n\ntype ClickBreadcrumb = Breadcrumb & {\n  timestamp: number;\n};\n\ninterface Click {\n  timestamp: number;\n  mutationAfter?: number;\n  scrollAfter?: number;\n  clickBreadcrumb: ClickBreadcrumb;\n  clickCount: number;\n  node: HTMLElement;\n}\n\ntype IncrementalRecordingEvent = RecordingEvent & {\n  type: typeof ReplayEventTypeIncrementalSnapshot;\n  data: { source: IncrementalSource };\n};\n\ntype IncrementalMouseInteractionRecordingEvent = IncrementalRecordingEvent & {\n  type: typeof ReplayEventTypeIncrementalSnapshot;\n  data: { type: MouseInteractions; id: number };\n};\n\n/** Handle a click. */\nexport function handleClick(clickDetector: ReplayClickDetector, clickBreadcrumb: Breadcrumb, node: HTMLElement): void {\n  clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nexport class ClickDetector implements ReplayClickDetector {\n  // protected for testing\n  protected _lastMutation: number;\n  protected _lastScroll: number;\n\n  private _clicks: Click[];\n  private _teardown: undefined | (() => void);\n\n  private _threshold: number;\n  private _scollTimeout: number;\n  private _timeout: number;\n  private _ignoreSelector: string;\n\n  private _replay: ReplayContainer;\n  private _checkClickTimeout?: ReturnType<typeof setTimeout>;\n  private _addBreadcrumbEvent: typeof addBreadcrumbEvent;\n\n  public constructor(\n    replay: ReplayContainer,\n    slowClickConfig: SlowClickConfig,\n    // Just for easier testing\n    _addBreadcrumbEvent = addBreadcrumbEvent,\n  ) {\n    this._lastMutation = 0;\n    this._lastScroll = 0;\n    this._clicks = [];\n\n    // We want everything in s, but options are in ms\n    this._timeout = slowClickConfig.timeout / 1000;\n    this._threshold = slowClickConfig.threshold / 1000;\n    this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n    this._replay = replay;\n    this._ignoreSelector = slowClickConfig.ignoreSelector;\n    this._addBreadcrumbEvent = _addBreadcrumbEvent;\n  }\n\n  /** Register click detection handlers on mutation or scroll. */\n  public addListeners(): void {\n    const cleanupWindowOpen = onWindowOpen(() => {\n      // Treat window.open as mutation\n      this._lastMutation = nowInSeconds();\n    });\n\n    this._teardown = () => {\n      cleanupWindowOpen();\n\n      this._clicks = [];\n      this._lastMutation = 0;\n      this._lastScroll = 0;\n    };\n  }\n\n  /** Clean up listeners. */\n  public removeListeners(): void {\n    if (this._teardown) {\n      this._teardown();\n    }\n\n    if (this._checkClickTimeout) {\n      clearTimeout(this._checkClickTimeout);\n    }\n  }\n\n  /** @inheritDoc */\n  public handleClick(breadcrumb: Breadcrumb, node: HTMLElement): void {\n    if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n      return;\n    }\n\n    const newClick: Click = {\n      timestamp: timestampToS(breadcrumb.timestamp),\n      clickBreadcrumb: breadcrumb,\n      // Set this to 0 so we know it originates from the click breadcrumb\n      clickCount: 0,\n      node,\n    };\n\n    // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n    if (\n      this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n    ) {\n      return;\n    }\n\n    this._clicks.push(newClick);\n\n    // If this is the first new click, set a timeout to check for multi clicks\n    if (this._clicks.length === 1) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** @inheritDoc */\n  public registerMutation(timestamp = Date.now()): void {\n    this._lastMutation = timestampToS(timestamp);\n  }\n\n  /** @inheritDoc */\n  public registerScroll(timestamp = Date.now()): void {\n    this._lastScroll = timestampToS(timestamp);\n  }\n\n  /** @inheritDoc */\n  public registerClick(element: HTMLElement): void {\n    const node = getClosestInteractive(element);\n    this._handleMultiClick(node as HTMLElement);\n  }\n\n  /** Count multiple clicks on elements. */\n  private _handleMultiClick(node: HTMLElement): void {\n    this._getClicks(node).forEach(click => {\n      click.clickCount++;\n    });\n  }\n\n  /** Get all pending clicks for a given node. */\n  private _getClicks(node: HTMLElement): Click[] {\n    return this._clicks.filter(click => click.node === node);\n  }\n\n  /** Check the clicks that happened. */\n  private _checkClicks(): void {\n    const timedOutClicks: Click[] = [];\n\n    const now = nowInSeconds();\n\n    this._clicks.forEach(click => {\n      if (!click.mutationAfter && this._lastMutation) {\n        click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n      }\n      if (!click.scrollAfter && this._lastScroll) {\n        click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n      }\n\n      // All of these are in seconds!\n      if (click.timestamp + this._timeout <= now) {\n        timedOutClicks.push(click);\n      }\n    });\n\n    // Remove \"old\" clicks\n    for (const click of timedOutClicks) {\n      const pos = this._clicks.indexOf(click);\n\n      if (pos > -1) {\n        this._generateBreadcrumbs(click);\n        this._clicks.splice(pos, 1);\n      }\n    }\n\n    // Trigger new check, unless no clicks left\n    if (this._clicks.length) {\n      this._scheduleCheckClicks();\n    }\n  }\n\n  /** Generate matching breadcrumb(s) for the click. */\n  private _generateBreadcrumbs(click: Click): void {\n    const replay = this._replay;\n    const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n    const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n    const isSlowClick = !hadScroll && !hadMutation;\n    const { clickCount, clickBreadcrumb } = click;\n\n    // Slow click\n    if (isSlowClick) {\n      // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n      // If not, it means we just timed out without scroll & mutation\n      const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n      const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n      const breadcrumb: ReplaySlowClickFrame = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.slowClickDetected',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          timeAfterClickMs,\n          endReason,\n          // If clickCount === 0, it means multiClick was not correctly captured here\n          // - we still want to send 1 in this case\n          clickCount: clickCount || 1,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n      return;\n    }\n\n    // Multi click\n    if (clickCount > 1) {\n      const breadcrumb: ReplayMultiClickFrame = {\n        type: 'default',\n        message: clickBreadcrumb.message,\n        timestamp: clickBreadcrumb.timestamp,\n        category: 'ui.multiClick',\n        data: {\n          ...clickBreadcrumb.data,\n          url: WINDOW.location.href,\n          route: replay.getCurrentRoute(),\n          clickCount,\n          metric: true,\n        },\n      };\n\n      this._addBreadcrumbEvent(replay, breadcrumb);\n    }\n  }\n\n  /** Schedule to check current clicks. */\n  private _scheduleCheckClicks(): void {\n    if (this._checkClickTimeout) {\n      clearTimeout(this._checkClickTimeout);\n    }\n\n    this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n  }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nexport function ignoreElement(node: HTMLElement, ignoreSelector: string): boolean {\n  if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n    return true;\n  }\n\n  // If <input> tag, we only want to consider input[type='submit'] & input[type='button']\n  if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n    return true;\n  }\n\n  // If <a> tag, detect special variants that may not lead to an action\n  // If target !== _self, we may open the link somewhere else, which would lead to no action\n  // Also, when downloading a file, we may not leave the page, but still not trigger an action\n  if (\n    node.tagName === 'A' &&\n    (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n  ) {\n    return true;\n  }\n\n  if (ignoreSelector && node.matches(ignoreSelector)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is ClickBreadcrumb {\n  return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds(): number {\n  return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nexport function updateClickDetectorForRecordingEvent(clickDetector: ReplayClickDetector, event: RecordingEvent): void {\n  try {\n    // note: We only consider incremental snapshots here\n    // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n    // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n    // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n    // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n    // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n    // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n    if (!isIncrementalEvent(event)) {\n      return;\n    }\n\n    const { source } = event.data;\n    if (source === IncrementalSource.Mutation) {\n      clickDetector.registerMutation(event.timestamp);\n    }\n\n    if (source === IncrementalSource.Scroll) {\n      clickDetector.registerScroll(event.timestamp);\n    }\n\n    if (isIncrementalMouseInteraction(event)) {\n      const { type, id } = event.data;\n      const node = record.mirror.getNode(id);\n\n      if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n        clickDetector.registerClick(node);\n      }\n    }\n  } catch {\n    // ignore errors here, e.g. if accessing something that does not exist\n  }\n}\n\nfunction isIncrementalEvent(event: RecordingEvent): event is IncrementalRecordingEvent {\n  return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n  event: IncrementalRecordingEvent,\n): event is IncrementalMouseInteractionRecordingEvent {\n  return event.data.source === IncrementalSource.MouseInteraction;\n}\n","import type { ReplayBreadcrumbFrame } from '../types/replayFrame';\n\n/**\n * Create a breadcrumb for a replay.\n */\nexport function createBreadcrumb(\n  breadcrumb: Omit<ReplayBreadcrumbFrame, 'timestamp' | 'type'> & Partial<Pick<ReplayBreadcrumbFrame, 'timestamp'>>,\n): ReplayBreadcrumbFrame {\n  return {\n    timestamp: Date.now() / 1000,\n    type: 'default',\n    ...breadcrumb,\n  };\n}\n","var NodeType;\r\n(function (NodeType) {\r\n    NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n    NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n    NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n    NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n    NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n    NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n    return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n    const host = n?.host;\r\n    return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n    return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n    if (cssText.includes(' background-clip: text;') &&\r\n        !cssText.includes(' -webkit-background-clip: text;')) {\r\n        cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n    }\r\n    return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n    const { cssText } = rule;\r\n    if (cssText.split('\"').length < 3)\r\n        return cssText;\r\n    const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n    if (rule.layerName === '') {\r\n        statement.push(`layer`);\r\n    }\r\n    else if (rule.layerName) {\r\n        statement.push(`layer(${rule.layerName})`);\r\n    }\r\n    if (rule.supportsText) {\r\n        statement.push(`supports(${rule.supportsText})`);\r\n    }\r\n    if (rule.media.length) {\r\n        statement.push(rule.media.mediaText);\r\n    }\r\n    return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n    try {\r\n        const rules = s.rules || s.cssRules;\r\n        return rules\r\n            ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n            : null;\r\n    }\r\n    catch (error) {\r\n        return null;\r\n    }\r\n}\r\nfunction stringifyRule(rule) {\r\n    let importStringified;\r\n    if (isCSSImportRule(rule)) {\r\n        try {\r\n            importStringified =\r\n                stringifyStylesheet(rule.styleSheet) ||\r\n                    escapeImportStatement(rule);\r\n        }\r\n        catch (error) {\r\n        }\r\n    }\r\n    else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n        return fixSafariColons(rule.cssText);\r\n    }\r\n    return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n    const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n    return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n    return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n    return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n    constructor() {\r\n        this.idNodeMap = new Map();\r\n        this.nodeMetaMap = new WeakMap();\r\n    }\r\n    getId(n) {\r\n        if (!n)\r\n            return -1;\r\n        const id = this.getMeta(n)?.id;\r\n        return id ?? -1;\r\n    }\r\n    getNode(id) {\r\n        return this.idNodeMap.get(id) || null;\r\n    }\r\n    getIds() {\r\n        return Array.from(this.idNodeMap.keys());\r\n    }\r\n    getMeta(n) {\r\n        return this.nodeMetaMap.get(n) || null;\r\n    }\r\n    removeNodeFromMap(n) {\r\n        const id = this.getId(n);\r\n        this.idNodeMap.delete(id);\r\n        if (n.childNodes) {\r\n            n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n        }\r\n    }\r\n    has(id) {\r\n        return this.idNodeMap.has(id);\r\n    }\r\n    hasNode(node) {\r\n        return this.nodeMetaMap.has(node);\r\n    }\r\n    add(n, meta) {\r\n        const id = meta.id;\r\n        this.idNodeMap.set(id, n);\r\n        this.nodeMetaMap.set(n, meta);\r\n    }\r\n    replace(id, n) {\r\n        const oldNode = this.getNode(id);\r\n        if (oldNode) {\r\n            const meta = this.nodeMetaMap.get(oldNode);\r\n            if (meta)\r\n                this.nodeMetaMap.set(n, meta);\r\n        }\r\n        this.idNodeMap.set(id, n);\r\n    }\r\n    reset() {\r\n        this.idNodeMap = new Map();\r\n        this.nodeMetaMap = new WeakMap();\r\n    }\r\n}\r\nfunction createMirror() {\r\n    return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n    if (tagName === 'OPTION') {\r\n        tagName = 'SELECT';\r\n    }\r\n    return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n        (type && maskInputOptions[type]) ||\r\n        type === 'password' ||\r\n        (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n    let text = value || '';\r\n    if (!isMasked) {\r\n        return text;\r\n    }\r\n    if (maskInputFn) {\r\n        text = maskInputFn(text, element);\r\n    }\r\n    return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n    return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n    return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n    const ctx = canvas.getContext('2d');\r\n    if (!ctx)\r\n        return true;\r\n    const chunkSize = 50;\r\n    for (let x = 0; x < canvas.width; x += chunkSize) {\r\n        for (let y = 0; y < canvas.height; y += chunkSize) {\r\n            const getImageData = ctx.getImageData;\r\n            const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n                ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n                : getImageData;\r\n            const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n            if (pixelBuffer.some((pixel) => pixel !== 0))\r\n                return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n    if (!a || !b || a.type !== b.type)\r\n        return false;\r\n    if (a.type === NodeType.Document)\r\n        return a.compatMode === b.compatMode;\r\n    else if (a.type === NodeType.DocumentType)\r\n        return (a.name === b.name &&\r\n            a.publicId === b.publicId &&\r\n            a.systemId === b.systemId);\r\n    else if (a.type === NodeType.Comment ||\r\n        a.type === NodeType.Text ||\r\n        a.type === NodeType.CDATA)\r\n        return a.textContent === b.textContent;\r\n    else if (a.type === NodeType.Element)\r\n        return (a.tagName === b.tagName &&\r\n            JSON.stringify(a.attributes) ===\r\n                JSON.stringify(b.attributes) &&\r\n            a.isSVG === b.isSVG &&\r\n            a.needBlock === b.needBlock);\r\n    return false;\r\n}\r\nfunction getInputType(element) {\r\n    const type = element.type;\r\n    return element.hasAttribute('data-rr-is-password')\r\n        ? 'password'\r\n        : type\r\n            ?\r\n                toLowerCase(type)\r\n            : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n    if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n        return el.getAttribute('value') || '';\r\n    }\r\n    return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n    return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n    if (element instanceof HTMLFormElement) {\r\n        return 'form';\r\n    }\r\n    const processedTagName = toLowerCase(element.tagName);\r\n    if (tagNameRegex.test(processedTagName)) {\r\n        return 'div';\r\n    }\r\n    return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n    let origin = '';\r\n    if (url.indexOf('//') > -1) {\r\n        origin = url.split('/').slice(0, 3).join('/');\r\n    }\r\n    else {\r\n        origin = url.split('/')[0];\r\n    }\r\n    origin = origin.split('?')[0];\r\n    return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n    return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n        const filePath = path1 || path2 || path3;\r\n        const maybeQuote = quote1 || quote2 || '';\r\n        if (!filePath) {\r\n            return origin;\r\n        }\r\n        if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n        }\r\n        if (DATA_URI.test(filePath)) {\r\n            return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n        }\r\n        if (filePath[0] === '/') {\r\n            return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n        }\r\n        const stack = href.split('/');\r\n        const parts = filePath.split('/');\r\n        stack.pop();\r\n        for (const part of parts) {\r\n            if (part === '.') {\r\n                continue;\r\n            }\r\n            else if (part === '..') {\r\n                stack.pop();\r\n            }\r\n            else {\r\n                stack.push(part);\r\n            }\r\n        }\r\n        return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n    });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n    if (attributeValue.trim() === '') {\r\n        return attributeValue;\r\n    }\r\n    let pos = 0;\r\n    function collectCharacters(regEx) {\r\n        let chars;\r\n        const match = regEx.exec(attributeValue.substring(pos));\r\n        if (match) {\r\n            chars = match[0];\r\n            pos += chars.length;\r\n            return chars;\r\n        }\r\n        return '';\r\n    }\r\n    const output = [];\r\n    while (true) {\r\n        collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n        if (pos >= attributeValue.length) {\r\n            break;\r\n        }\r\n        let url = collectCharacters(SRCSET_NOT_SPACES);\r\n        if (url.slice(-1) === ',') {\r\n            url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n            output.push(url);\r\n        }\r\n        else {\r\n            let descriptorsStr = '';\r\n            url = absoluteToDoc(doc, url);\r\n            let inParens = false;\r\n            while (true) {\r\n                const c = attributeValue.charAt(pos);\r\n                if (c === '') {\r\n                    output.push((url + descriptorsStr).trim());\r\n                    break;\r\n                }\r\n                else if (!inParens) {\r\n                    if (c === ',') {\r\n                        pos += 1;\r\n                        output.push((url + descriptorsStr).trim());\r\n                        break;\r\n                    }\r\n                    else if (c === '(') {\r\n                        inParens = true;\r\n                    }\r\n                }\r\n                else {\r\n                    if (c === ')') {\r\n                        inParens = false;\r\n                    }\r\n                }\r\n                descriptorsStr += c;\r\n                pos += 1;\r\n            }\r\n        }\r\n    }\r\n    return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n    if (!attributeValue || attributeValue.trim() === '') {\r\n        return attributeValue;\r\n    }\r\n    const a = doc.createElement('a');\r\n    a.href = attributeValue;\r\n    return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n    return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n    const a = document.createElement('a');\r\n    a.href = '';\r\n    return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n    if (!value) {\r\n        return value;\r\n    }\r\n    if (name === 'src' ||\r\n        (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'xlink:href' && value[0] !== '#') {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'background' &&\r\n        (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    else if (name === 'srcset') {\r\n        return getAbsoluteSrcsetString(doc, value);\r\n    }\r\n    else if (name === 'style') {\r\n        return absoluteToStylesheet(value, getHref());\r\n    }\r\n    else if (tagName === 'object' && name === 'data') {\r\n        return absoluteToDoc(doc, value);\r\n    }\r\n    if (typeof maskAttributeFn === 'function') {\r\n        return maskAttributeFn(name, value, element);\r\n    }\r\n    return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n    return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n    try {\r\n        if (unblockSelector && element.matches(unblockSelector)) {\r\n            return false;\r\n        }\r\n        if (typeof blockClass === 'string') {\r\n            if (element.classList.contains(blockClass)) {\r\n                return true;\r\n            }\r\n        }\r\n        else {\r\n            for (let eIndex = element.classList.length; eIndex--;) {\r\n                const className = element.classList[eIndex];\r\n                if (blockClass.test(className)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        if (blockSelector) {\r\n            return element.matches(blockSelector);\r\n        }\r\n    }\r\n    catch (e) {\r\n    }\r\n    return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n    for (let eIndex = el.classList.length; eIndex--;) {\r\n        const className = el.classList[eIndex];\r\n        if (regex.test(className)) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n    if (!node)\r\n        return false;\r\n    if (checkAncestors) {\r\n        return (distanceToMatch(node, (node) => elementClassMatchesRegex(node, regex)) >= 0);\r\n    }\r\n    else if (node.nodeType === node.ELEMENT_NODE) {\r\n        return elementClassMatchesRegex(node, regex);\r\n    }\r\n    return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n    if (!node)\r\n        return -1;\r\n    if (node.nodeType !== node.ELEMENT_NODE)\r\n        return -1;\r\n    if (distance > limit)\r\n        return -1;\r\n    if (matchPredicate(node))\r\n        return distance;\r\n    return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n    return (node) => {\r\n        const el = node;\r\n        if (el === null)\r\n            return false;\r\n        try {\r\n            if (className) {\r\n                if (typeof className === 'string') {\r\n                    if (el.matches(`.${className}`))\r\n                        return true;\r\n                }\r\n                else if (elementClassMatchesRegex(el, className)) {\r\n                    return true;\r\n                }\r\n            }\r\n            if (selector && el.matches(selector))\r\n                return true;\r\n            return false;\r\n        }\r\n        catch {\r\n            return false;\r\n        }\r\n    };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n    try {\r\n        const el = node.nodeType === node.ELEMENT_NODE\r\n            ? node\r\n            : node.parentElement;\r\n        if (el === null)\r\n            return false;\r\n        if (el.tagName === 'INPUT') {\r\n            const autocomplete = el.getAttribute('autocomplete');\r\n            const disallowedAutocompleteValues = [\r\n                'current-password',\r\n                'new-password',\r\n                'cc-number',\r\n                'cc-exp',\r\n                'cc-exp-month',\r\n                'cc-exp-year',\r\n                'cc-csc',\r\n            ];\r\n            if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n                return true;\r\n            }\r\n        }\r\n        let maskDistance = -1;\r\n        let unmaskDistance = -1;\r\n        if (maskAllText) {\r\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n            if (unmaskDistance < 0) {\r\n                return true;\r\n            }\r\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n        }\r\n        else {\r\n            maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n            if (maskDistance < 0) {\r\n                return false;\r\n            }\r\n            unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n        }\r\n        return maskDistance >= 0\r\n            ? unmaskDistance >= 0\r\n                ? maskDistance <= unmaskDistance\r\n                : true\r\n            : unmaskDistance >= 0\r\n                ? false\r\n                : !!maskAllText;\r\n    }\r\n    catch (e) {\r\n    }\r\n    return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n    const win = iframeEl.contentWindow;\r\n    if (!win) {\r\n        return;\r\n    }\r\n    let fired = false;\r\n    let readyState;\r\n    try {\r\n        readyState = win.document.readyState;\r\n    }\r\n    catch (error) {\r\n        return;\r\n    }\r\n    if (readyState !== 'complete') {\r\n        const timer = setTimeout(() => {\r\n            if (!fired) {\r\n                listener();\r\n                fired = true;\r\n            }\r\n        }, iframeLoadTimeout);\r\n        iframeEl.addEventListener('load', () => {\r\n            clearTimeout(timer);\r\n            fired = true;\r\n            listener();\r\n        });\r\n        return;\r\n    }\r\n    const blankUrl = 'about:blank';\r\n    if (win.location.href !== blankUrl ||\r\n        iframeEl.src === blankUrl ||\r\n        iframeEl.src === '') {\r\n        setTimeout(listener, 0);\r\n        return iframeEl.addEventListener('load', listener);\r\n    }\r\n    iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n    let fired = false;\r\n    let styleSheetLoaded;\r\n    try {\r\n        styleSheetLoaded = link.sheet;\r\n    }\r\n    catch (error) {\r\n        return;\r\n    }\r\n    if (styleSheetLoaded)\r\n        return;\r\n    const timer = setTimeout(() => {\r\n        if (!fired) {\r\n            listener();\r\n            fired = true;\r\n        }\r\n    }, styleSheetLoadTimeout);\r\n    link.addEventListener('load', () => {\r\n        clearTimeout(timer);\r\n        fired = true;\r\n        listener();\r\n    });\r\n}\r\nfunction serializeNode(n, options) {\r\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n    const rootId = getRootId(doc, mirror);\r\n    switch (n.nodeType) {\r\n        case n.DOCUMENT_NODE:\r\n            if (n.compatMode !== 'CSS1Compat') {\r\n                return {\r\n                    type: NodeType.Document,\r\n                    childNodes: [],\r\n                    compatMode: n.compatMode,\r\n                };\r\n            }\r\n            else {\r\n                return {\r\n                    type: NodeType.Document,\r\n                    childNodes: [],\r\n                };\r\n            }\r\n        case n.DOCUMENT_TYPE_NODE:\r\n            return {\r\n                type: NodeType.DocumentType,\r\n                name: n.name,\r\n                publicId: n.publicId,\r\n                systemId: n.systemId,\r\n                rootId,\r\n            };\r\n        case n.ELEMENT_NODE:\r\n            return serializeElementNode(n, {\r\n                doc,\r\n                blockClass,\r\n                blockSelector,\r\n                unblockSelector,\r\n                inlineStylesheet,\r\n                maskAttributeFn,\r\n                maskInputOptions,\r\n                maskInputFn,\r\n                dataURLOptions,\r\n                inlineImages,\r\n                recordCanvas,\r\n                keepIframeSrcFn,\r\n                newlyAddedElement,\r\n                rootId,\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n            });\r\n        case n.TEXT_NODE:\r\n            return serializeTextNode(n, {\r\n                maskAllText,\r\n                maskTextClass,\r\n                unmaskTextClass,\r\n                maskTextSelector,\r\n                unmaskTextSelector,\r\n                maskTextFn,\r\n                maskInputOptions,\r\n                maskInputFn,\r\n                rootId,\r\n            });\r\n        case n.CDATA_SECTION_NODE:\r\n            return {\r\n                type: NodeType.CDATA,\r\n                textContent: '',\r\n                rootId,\r\n            };\r\n        case n.COMMENT_NODE:\r\n            return {\r\n                type: NodeType.Comment,\r\n                textContent: n.textContent || '',\r\n                rootId,\r\n            };\r\n        default:\r\n            return false;\r\n    }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n    if (!mirror.hasNode(doc))\r\n        return undefined;\r\n    const docId = mirror.getId(doc);\r\n    return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n    const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n    const parentTagName = n.parentNode && n.parentNode.tagName;\r\n    let textContent = n.textContent;\r\n    const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n    const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n    const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n    if (isStyle && textContent) {\r\n        try {\r\n            if (n.nextSibling || n.previousSibling) {\r\n            }\r\n            else if (n.parentNode.sheet?.cssRules) {\r\n                textContent = stringifyStylesheet(n.parentNode.sheet);\r\n            }\r\n        }\r\n        catch (err) {\r\n            console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n        }\r\n        textContent = absoluteToStylesheet(textContent, getHref());\r\n    }\r\n    if (isScript) {\r\n        textContent = 'SCRIPT_PLACEHOLDER';\r\n    }\r\n    const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n    if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n        textContent = maskTextFn\r\n            ? maskTextFn(textContent, n.parentElement)\r\n            : textContent.replace(/[\\S]/g, '*');\r\n    }\r\n    if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n        textContent = maskInputFn\r\n            ? maskInputFn(textContent, n.parentNode)\r\n            : textContent.replace(/[\\S]/g, '*');\r\n    }\r\n    if (parentTagName === 'OPTION' && textContent) {\r\n        const isInputMasked = shouldMaskInput({\r\n            type: null,\r\n            tagName: parentTagName,\r\n            maskInputOptions,\r\n        });\r\n        textContent = maskInputValue({\r\n            isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n            element: n,\r\n            value: textContent,\r\n            maskInputFn,\r\n        });\r\n    }\r\n    return {\r\n        type: NodeType.Text,\r\n        textContent: textContent || '',\r\n        isStyle,\r\n        rootId,\r\n    };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n    const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n    const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n    const tagName = getValidTagName(n);\r\n    let attributes = {};\r\n    const len = n.attributes.length;\r\n    for (let i = 0; i < len; i++) {\r\n        const attr = n.attributes[i];\r\n        if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n            attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n        }\r\n    }\r\n    if (tagName === 'link' && inlineStylesheet) {\r\n        const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n            return s.href === n.href;\r\n        });\r\n        let cssText = null;\r\n        if (stylesheet) {\r\n            cssText = stringifyStylesheet(stylesheet);\r\n        }\r\n        if (cssText) {\r\n            delete attributes.rel;\r\n            delete attributes.href;\r\n            attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n        }\r\n    }\r\n    if (tagName === 'style' &&\r\n        n.sheet &&\r\n        !(n.innerText || n.textContent || '').trim().length) {\r\n        const cssText = stringifyStylesheet(n.sheet);\r\n        if (cssText) {\r\n            attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n        }\r\n    }\r\n    if (tagName === 'input' ||\r\n        tagName === 'textarea' ||\r\n        tagName === 'select' ||\r\n        tagName === 'option') {\r\n        const el = n;\r\n        const type = getInputType(el);\r\n        const value = getInputValue(el, toUpperCase(tagName), type);\r\n        const checked = el.checked;\r\n        if (type !== 'submit' && type !== 'button' && value) {\r\n            const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n                type,\r\n                tagName: toUpperCase(tagName),\r\n                maskInputOptions,\r\n            }));\r\n            attributes.value = maskInputValue({\r\n                isMasked: forceMask,\r\n                element: el,\r\n                value,\r\n                maskInputFn,\r\n            });\r\n        }\r\n        if (checked) {\r\n            attributes.checked = checked;\r\n        }\r\n    }\r\n    if (tagName === 'option') {\r\n        if (n.selected && !maskInputOptions['select']) {\r\n            attributes.selected = true;\r\n        }\r\n        else {\r\n            delete attributes.selected;\r\n        }\r\n    }\r\n    if (tagName === 'canvas' && recordCanvas) {\r\n        if (n.__context === '2d') {\r\n            if (!is2DCanvasBlank(n)) {\r\n                attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            }\r\n        }\r\n        else if (!('__context' in n)) {\r\n            const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            const blankCanvas = document.createElement('canvas');\r\n            blankCanvas.width = n.width;\r\n            blankCanvas.height = n.height;\r\n            const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            if (canvasDataURL !== blankCanvasDataURL) {\r\n                attributes.rr_dataURL = canvasDataURL;\r\n            }\r\n        }\r\n    }\r\n    if (tagName === 'img' && inlineImages) {\r\n        if (!canvasService) {\r\n            canvasService = doc.createElement('canvas');\r\n            canvasCtx = canvasService.getContext('2d');\r\n        }\r\n        const image = n;\r\n        const oldValue = image.crossOrigin;\r\n        image.crossOrigin = 'anonymous';\r\n        const recordInlineImage = () => {\r\n            image.removeEventListener('load', recordInlineImage);\r\n            try {\r\n                canvasService.width = image.naturalWidth;\r\n                canvasService.height = image.naturalHeight;\r\n                canvasCtx.drawImage(image, 0, 0);\r\n                attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n            }\r\n            catch (err) {\r\n                console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n            }\r\n            oldValue\r\n                ? (attributes.crossOrigin = oldValue)\r\n                : image.removeAttribute('crossorigin');\r\n        };\r\n        if (image.complete && image.naturalWidth !== 0)\r\n            recordInlineImage();\r\n        else\r\n            image.addEventListener('load', recordInlineImage);\r\n    }\r\n    if (tagName === 'audio' || tagName === 'video') {\r\n        attributes.rr_mediaState = n.paused\r\n            ? 'paused'\r\n            : 'played';\r\n        attributes.rr_mediaCurrentTime = n.currentTime;\r\n    }\r\n    if (!newlyAddedElement) {\r\n        if (n.scrollLeft) {\r\n            attributes.rr_scrollLeft = n.scrollLeft;\r\n        }\r\n        if (n.scrollTop) {\r\n            attributes.rr_scrollTop = n.scrollTop;\r\n        }\r\n    }\r\n    if (needBlock) {\r\n        const { width, height } = n.getBoundingClientRect();\r\n        attributes = {\r\n            class: attributes.class,\r\n            rr_width: `${width}px`,\r\n            rr_height: `${height}px`,\r\n        };\r\n    }\r\n    if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n        if (!n.contentDocument) {\r\n            attributes.rr_src = attributes.src;\r\n        }\r\n        delete attributes.src;\r\n    }\r\n    let isCustomElement;\r\n    try {\r\n        if (customElements.get(tagName))\r\n            isCustomElement = true;\r\n    }\r\n    catch (e) {\r\n    }\r\n    return {\r\n        type: NodeType.Element,\r\n        tagName,\r\n        attributes,\r\n        childNodes: [],\r\n        isSVG: isSVGElement(n) || undefined,\r\n        needBlock,\r\n        rootId,\r\n        isCustom: isCustomElement,\r\n    };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n    if (maybeAttr === undefined || maybeAttr === null) {\r\n        return '';\r\n    }\r\n    else {\r\n        return maybeAttr.toLowerCase();\r\n    }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n    if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n        return true;\r\n    }\r\n    else if (sn.type === NodeType.Element) {\r\n        if (slimDOMOptions.script &&\r\n            (sn.tagName === 'script' ||\r\n                (sn.tagName === 'link' &&\r\n                    (sn.attributes.rel === 'preload' ||\r\n                        sn.attributes.rel === 'modulepreload') &&\r\n                    sn.attributes.as === 'script') ||\r\n                (sn.tagName === 'link' &&\r\n                    sn.attributes.rel === 'prefetch' &&\r\n                    typeof sn.attributes.href === 'string' &&\r\n                    sn.attributes.href.endsWith('.js')))) {\r\n            return true;\r\n        }\r\n        else if (slimDOMOptions.headFavicon &&\r\n            ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n                (sn.tagName === 'meta' &&\r\n                    (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n                        lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n                        lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n            return true;\r\n        }\r\n        else if (sn.tagName === 'meta') {\r\n            if (slimDOMOptions.headMetaDescKeywords &&\r\n                lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaSocial &&\r\n                (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n                    lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n                    lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaRobots &&\r\n                (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n                    lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n                    lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaHttpEquiv &&\r\n                sn.attributes['http-equiv'] !== undefined) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaAuthorship &&\r\n                (lowerIfExists(sn.attributes.name) === 'author' ||\r\n                    lowerIfExists(sn.attributes.name) === 'generator' ||\r\n                    lowerIfExists(sn.attributes.name) === 'framework' ||\r\n                    lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n                    lowerIfExists(sn.attributes.name) === 'progid' ||\r\n                    lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n                    lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n                return true;\r\n            }\r\n            else if (slimDOMOptions.headMetaVerification &&\r\n                (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n                    lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n                    lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n                    lowerIfExists(sn.attributes.name) === 'verification' ||\r\n                    lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n    const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n    let { preserveWhiteSpace = true } = options;\r\n    const _serializedNode = serializeNode(n, {\r\n        doc,\r\n        mirror,\r\n        blockClass,\r\n        blockSelector,\r\n        maskAllText,\r\n        unblockSelector,\r\n        maskTextClass,\r\n        unmaskTextClass,\r\n        maskTextSelector,\r\n        unmaskTextSelector,\r\n        inlineStylesheet,\r\n        maskInputOptions,\r\n        maskAttributeFn,\r\n        maskTextFn,\r\n        maskInputFn,\r\n        dataURLOptions,\r\n        inlineImages,\r\n        recordCanvas,\r\n        keepIframeSrcFn,\r\n        newlyAddedElement,\r\n    });\r\n    if (!_serializedNode) {\r\n        console.warn(n, 'not serialized');\r\n        return null;\r\n    }\r\n    let id;\r\n    if (mirror.hasNode(n)) {\r\n        id = mirror.getId(n);\r\n    }\r\n    else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n        (!preserveWhiteSpace &&\r\n            _serializedNode.type === NodeType.Text &&\r\n            !_serializedNode.isStyle &&\r\n            !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n        id = IGNORED_NODE;\r\n    }\r\n    else {\r\n        id = genId();\r\n    }\r\n    const serializedNode = Object.assign(_serializedNode, { id });\r\n    mirror.add(n, serializedNode);\r\n    if (id === IGNORED_NODE) {\r\n        return null;\r\n    }\r\n    if (onSerialize) {\r\n        onSerialize(n);\r\n    }\r\n    let recordChild = !skipChild;\r\n    if (serializedNode.type === NodeType.Element) {\r\n        recordChild = recordChild && !serializedNode.needBlock;\r\n        delete serializedNode.needBlock;\r\n        const shadowRoot = n.shadowRoot;\r\n        if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n            serializedNode.isShadowHost = true;\r\n    }\r\n    if ((serializedNode.type === NodeType.Document ||\r\n        serializedNode.type === NodeType.Element) &&\r\n        recordChild) {\r\n        if (slimDOMOptions.headWhitespace &&\r\n            serializedNode.type === NodeType.Element &&\r\n            serializedNode.tagName === 'head') {\r\n            preserveWhiteSpace = false;\r\n        }\r\n        const bypassOptions = {\r\n            doc,\r\n            mirror,\r\n            blockClass,\r\n            blockSelector,\r\n            maskAllText,\r\n            unblockSelector,\r\n            maskTextClass,\r\n            unmaskTextClass,\r\n            maskTextSelector,\r\n            unmaskTextSelector,\r\n            skipChild,\r\n            inlineStylesheet,\r\n            maskInputOptions,\r\n            maskAttributeFn,\r\n            maskTextFn,\r\n            maskInputFn,\r\n            slimDOMOptions,\r\n            dataURLOptions,\r\n            inlineImages,\r\n            recordCanvas,\r\n            preserveWhiteSpace,\r\n            onSerialize,\r\n            onIframeLoad,\r\n            iframeLoadTimeout,\r\n            onStylesheetLoad,\r\n            stylesheetLoadTimeout,\r\n            keepIframeSrcFn,\r\n        };\r\n        for (const childN of Array.from(n.childNodes)) {\r\n            const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n            if (serializedChildNode) {\r\n                serializedNode.childNodes.push(serializedChildNode);\r\n            }\r\n        }\r\n        if (isElement(n) && n.shadowRoot) {\r\n            for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n                const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n                if (serializedChildNode) {\r\n                    isNativeShadowDom(n.shadowRoot) &&\r\n                        (serializedChildNode.isShadow = true);\r\n                    serializedNode.childNodes.push(serializedChildNode);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (n.parentNode &&\r\n        isShadowRoot(n.parentNode) &&\r\n        isNativeShadowDom(n.parentNode)) {\r\n        serializedNode.isShadow = true;\r\n    }\r\n    if (serializedNode.type === NodeType.Element &&\r\n        serializedNode.tagName === 'iframe') {\r\n        onceIframeLoaded(n, () => {\r\n            const iframeDoc = n.contentDocument;\r\n            if (iframeDoc && onIframeLoad) {\r\n                const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n                    doc: iframeDoc,\r\n                    mirror,\r\n                    blockClass,\r\n                    blockSelector,\r\n                    unblockSelector,\r\n                    maskAllText,\r\n                    maskTextClass,\r\n                    unmaskTextClass,\r\n                    maskTextSelector,\r\n                    unmaskTextSelector,\r\n                    skipChild: false,\r\n                    inlineStylesheet,\r\n                    maskInputOptions,\r\n                    maskAttributeFn,\r\n                    maskTextFn,\r\n                    maskInputFn,\r\n                    slimDOMOptions,\r\n                    dataURLOptions,\r\n                    inlineImages,\r\n                    recordCanvas,\r\n                    preserveWhiteSpace,\r\n                    onSerialize,\r\n                    onIframeLoad,\r\n                    iframeLoadTimeout,\r\n                    onStylesheetLoad,\r\n                    stylesheetLoadTimeout,\r\n                    keepIframeSrcFn,\r\n                });\r\n                if (serializedIframeNode) {\r\n                    onIframeLoad(n, serializedIframeNode);\r\n                }\r\n            }\r\n        }, iframeLoadTimeout);\r\n    }\r\n    if (serializedNode.type === NodeType.Element &&\r\n        serializedNode.tagName === 'link' &&\r\n        serializedNode.attributes.rel === 'stylesheet') {\r\n        onceStylesheetLoaded(n, () => {\r\n            if (onStylesheetLoad) {\r\n                const serializedLinkNode = serializeNodeWithId(n, {\r\n                    doc,\r\n                    mirror,\r\n                    blockClass,\r\n                    blockSelector,\r\n                    unblockSelector,\r\n                    maskAllText,\r\n                    maskTextClass,\r\n                    unmaskTextClass,\r\n                    maskTextSelector,\r\n                    unmaskTextSelector,\r\n                    skipChild: false,\r\n                    inlineStylesheet,\r\n                    maskInputOptions,\r\n                    maskAttributeFn,\r\n                    maskTextFn,\r\n                    maskInputFn,\r\n                    slimDOMOptions,\r\n                    dataURLOptions,\r\n                    inlineImages,\r\n                    recordCanvas,\r\n                    preserveWhiteSpace,\r\n                    onSerialize,\r\n                    onIframeLoad,\r\n                    iframeLoadTimeout,\r\n                    onStylesheetLoad,\r\n                    stylesheetLoadTimeout,\r\n                    keepIframeSrcFn,\r\n                });\r\n                if (serializedLinkNode) {\r\n                    onStylesheetLoad(n, serializedLinkNode);\r\n                }\r\n            }\r\n        }, stylesheetLoadTimeout);\r\n    }\r\n    return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n    const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n    const maskInputOptions = maskAllInputs === true\r\n        ? {\r\n            color: true,\r\n            date: true,\r\n            'datetime-local': true,\r\n            email: true,\r\n            month: true,\r\n            number: true,\r\n            range: true,\r\n            search: true,\r\n            tel: true,\r\n            text: true,\r\n            time: true,\r\n            url: true,\r\n            week: true,\r\n            textarea: true,\r\n            select: true,\r\n        }\r\n        : maskAllInputs === false\r\n            ? {}\r\n            : maskAllInputs;\r\n    const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n        ?\r\n            {\r\n                script: true,\r\n                comment: true,\r\n                headFavicon: true,\r\n                headWhitespace: true,\r\n                headMetaDescKeywords: slimDOM === 'all',\r\n                headMetaSocial: true,\r\n                headMetaRobots: true,\r\n                headMetaHttpEquiv: true,\r\n                headMetaAuthorship: true,\r\n                headMetaVerification: true,\r\n            }\r\n        : slimDOM === false\r\n            ? {}\r\n            : slimDOM;\r\n    return serializeNodeWithId(n, {\r\n        doc: n,\r\n        mirror,\r\n        blockClass,\r\n        blockSelector,\r\n        unblockSelector,\r\n        maskAllText,\r\n        maskTextClass,\r\n        unmaskTextClass,\r\n        maskTextSelector,\r\n        unmaskTextSelector,\r\n        skipChild: false,\r\n        inlineStylesheet,\r\n        maskInputOptions,\r\n        maskAttributeFn,\r\n        maskTextFn,\r\n        maskInputFn,\r\n        slimDOMOptions,\r\n        dataURLOptions,\r\n        inlineImages,\r\n        recordCanvas,\r\n        preserveWhiteSpace,\r\n        onSerialize,\r\n        onIframeLoad,\r\n        iframeLoadTimeout,\r\n        onStylesheetLoad,\r\n        stylesheetLoadTimeout,\r\n        keepIframeSrcFn,\r\n        newlyAddedElement: false,\r\n    });\r\n}\r\nfunction visitSnapshot(node, onVisit) {\r\n    function walk(current) {\r\n        onVisit(current);\r\n        if (current.type === NodeType.Document ||\r\n            current.type === NodeType.Element) {\r\n            current.childNodes.forEach(walk);\r\n        }\r\n    }\r\n    walk(node);\r\n}\r\nfunction cleanupSnapshot() {\r\n    _id = 1;\r\n}\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n    let lineno = 1;\r\n    let column = 1;\r\n    function updatePosition(str) {\r\n        const lines = str.match(/\\n/g);\r\n        if (lines) {\r\n            lineno += lines.length;\r\n        }\r\n        const i = str.lastIndexOf('\\n');\r\n        column = i === -1 ? column + str.length : str.length - i;\r\n    }\r\n    function position() {\r\n        const start = { line: lineno, column };\r\n        return (node) => {\r\n            node.position = new Position(start);\r\n            whitespace();\r\n            return node;\r\n        };\r\n    }\r\n    class Position {\r\n        constructor(start) {\r\n            this.start = start;\r\n            this.end = { line: lineno, column };\r\n            this.source = options.source;\r\n        }\r\n    }\r\n    Position.prototype.content = css;\r\n    const errorsList = [];\r\n    function error(msg) {\r\n        const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n        err.reason = msg;\r\n        err.filename = options.source;\r\n        err.line = lineno;\r\n        err.column = column;\r\n        err.source = css;\r\n        if (options.silent) {\r\n            errorsList.push(err);\r\n        }\r\n        else {\r\n            throw err;\r\n        }\r\n    }\r\n    function stylesheet() {\r\n        const rulesList = rules();\r\n        return {\r\n            type: 'stylesheet',\r\n            stylesheet: {\r\n                source: options.source,\r\n                rules: rulesList,\r\n                parsingErrors: errorsList,\r\n            },\r\n        };\r\n    }\r\n    function open() {\r\n        return match(/^{\\s*/);\r\n    }\r\n    function close() {\r\n        return match(/^}/);\r\n    }\r\n    function rules() {\r\n        let node;\r\n        const rules = [];\r\n        whitespace();\r\n        comments(rules);\r\n        while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n            if (node) {\r\n                rules.push(node);\r\n                comments(rules);\r\n            }\r\n        }\r\n        return rules;\r\n    }\r\n    function match(re) {\r\n        const m = re.exec(css);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const str = m[0];\r\n        updatePosition(str);\r\n        css = css.slice(str.length);\r\n        return m;\r\n    }\r\n    function whitespace() {\r\n        match(/^\\s*/);\r\n    }\r\n    function comments(rules = []) {\r\n        let c;\r\n        while ((c = comment())) {\r\n            if (c) {\r\n                rules.push(c);\r\n            }\r\n            c = comment();\r\n        }\r\n        return rules;\r\n    }\r\n    function comment() {\r\n        const pos = position();\r\n        if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n            return;\r\n        }\r\n        let i = 2;\r\n        while ('' !== css.charAt(i) &&\r\n            ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n            ++i;\r\n        }\r\n        i += 2;\r\n        if ('' === css.charAt(i - 1)) {\r\n            return error('End of comment missing');\r\n        }\r\n        const str = css.slice(2, i - 2);\r\n        column += 2;\r\n        updatePosition(str);\r\n        css = css.slice(i);\r\n        column += 2;\r\n        return pos({\r\n            type: 'comment',\r\n            comment: str,\r\n        });\r\n    }\r\n    function selector() {\r\n        whitespace();\r\n        while (css[0] == '}') {\r\n            error('extra closing bracket');\r\n            css = css.slice(1);\r\n            whitespace();\r\n        }\r\n        const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const cleanedInput = m[0]\r\n            .trim()\r\n            .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n            .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n            return m.replace(/,/g, '\\u200C');\r\n        });\r\n        return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n    }\r\n    function customSplit(input) {\r\n        const result = [];\r\n        let currentSegment = '';\r\n        let depthParentheses = 0;\r\n        let depthBrackets = 0;\r\n        let currentStringChar = null;\r\n        for (const char of input) {\r\n            const hasStringEscape = currentSegment.endsWith('\\\\');\r\n            if (currentStringChar) {\r\n                if (currentStringChar === char && !hasStringEscape) {\r\n                    currentStringChar = null;\r\n                }\r\n            }\r\n            else if (char === '(') {\r\n                depthParentheses++;\r\n            }\r\n            else if (char === ')') {\r\n                depthParentheses--;\r\n            }\r\n            else if (char === '[') {\r\n                depthBrackets++;\r\n            }\r\n            else if (char === ']') {\r\n                depthBrackets--;\r\n            }\r\n            else if ('\\'\"'.includes(char)) {\r\n                currentStringChar = char;\r\n            }\r\n            if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n                result.push(currentSegment);\r\n                currentSegment = '';\r\n            }\r\n            else {\r\n                currentSegment += char;\r\n            }\r\n        }\r\n        if (currentSegment) {\r\n            result.push(currentSegment);\r\n        }\r\n        return result;\r\n    }\r\n    function declaration() {\r\n        const pos = position();\r\n        const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n        if (!propMatch) {\r\n            return;\r\n        }\r\n        const prop = trim(propMatch[0]);\r\n        if (!match(/^:\\s*/)) {\r\n            return error(`property missing ':'`);\r\n        }\r\n        const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n        const ret = pos({\r\n            type: 'declaration',\r\n            property: prop.replace(commentre, ''),\r\n            value: val ? trim(val[0]).replace(commentre, '') : '',\r\n        });\r\n        match(/^[;\\s]*/);\r\n        return ret;\r\n    }\r\n    function declarations() {\r\n        const decls = [];\r\n        if (!open()) {\r\n            return error(`missing '{'`);\r\n        }\r\n        comments(decls);\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            if (decl !== false) {\r\n                decls.push(decl);\r\n                comments(decls);\r\n            }\r\n            decl = declaration();\r\n        }\r\n        if (!close()) {\r\n            return error(`missing '}'`);\r\n        }\r\n        return decls;\r\n    }\r\n    function keyframe() {\r\n        let m;\r\n        const vals = [];\r\n        const pos = position();\r\n        while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n            vals.push(m[1]);\r\n            match(/^,\\s*/);\r\n        }\r\n        if (!vals.length) {\r\n            return;\r\n        }\r\n        return pos({\r\n            type: 'keyframe',\r\n            values: vals,\r\n            declarations: declarations(),\r\n        });\r\n    }\r\n    function atkeyframes() {\r\n        const pos = position();\r\n        let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const vendor = m[1];\r\n        m = match(/^([-\\w]+)\\s*/);\r\n        if (!m) {\r\n            return error('@keyframes missing name');\r\n        }\r\n        const name = m[1];\r\n        if (!open()) {\r\n            return error(`@keyframes missing '{'`);\r\n        }\r\n        let frame;\r\n        let frames = comments();\r\n        while ((frame = keyframe())) {\r\n            frames.push(frame);\r\n            frames = frames.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@keyframes missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'keyframes',\r\n            name,\r\n            vendor,\r\n            keyframes: frames,\r\n        });\r\n    }\r\n    function atsupports() {\r\n        const pos = position();\r\n        const m = match(/^@supports *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const supports = trim(m[1]);\r\n        if (!open()) {\r\n            return error(`@supports missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@supports missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'supports',\r\n            supports,\r\n            rules: style,\r\n        });\r\n    }\r\n    function athost() {\r\n        const pos = position();\r\n        const m = match(/^@host\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        if (!open()) {\r\n            return error(`@host missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@host missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'host',\r\n            rules: style,\r\n        });\r\n    }\r\n    function atmedia() {\r\n        const pos = position();\r\n        const m = match(/^@media *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const media = trim(m[1]);\r\n        if (!open()) {\r\n            return error(`@media missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@media missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'media',\r\n            media,\r\n            rules: style,\r\n        });\r\n    }\r\n    function atcustommedia() {\r\n        const pos = position();\r\n        const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        return pos({\r\n            type: 'custom-media',\r\n            name: trim(m[1]),\r\n            media: trim(m[2]),\r\n        });\r\n    }\r\n    function atpage() {\r\n        const pos = position();\r\n        const m = match(/^@page */);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const sel = selector() || [];\r\n        if (!open()) {\r\n            return error(`@page missing '{'`);\r\n        }\r\n        let decls = comments();\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            decls.push(decl);\r\n            decls = decls.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@page missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'page',\r\n            selectors: sel,\r\n            declarations: decls,\r\n        });\r\n    }\r\n    function atdocument() {\r\n        const pos = position();\r\n        const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        const vendor = trim(m[1]);\r\n        const doc = trim(m[2]);\r\n        if (!open()) {\r\n            return error(`@document missing '{'`);\r\n        }\r\n        const style = comments().concat(rules());\r\n        if (!close()) {\r\n            return error(`@document missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'document',\r\n            document: doc,\r\n            vendor,\r\n            rules: style,\r\n        });\r\n    }\r\n    function atfontface() {\r\n        const pos = position();\r\n        const m = match(/^@font-face\\s*/);\r\n        if (!m) {\r\n            return;\r\n        }\r\n        if (!open()) {\r\n            return error(`@font-face missing '{'`);\r\n        }\r\n        let decls = comments();\r\n        let decl;\r\n        while ((decl = declaration())) {\r\n            decls.push(decl);\r\n            decls = decls.concat(comments());\r\n        }\r\n        if (!close()) {\r\n            return error(`@font-face missing '}'`);\r\n        }\r\n        return pos({\r\n            type: 'font-face',\r\n            declarations: decls,\r\n        });\r\n    }\r\n    const atimport = _compileAtrule('import');\r\n    const atcharset = _compileAtrule('charset');\r\n    const atnamespace = _compileAtrule('namespace');\r\n    function _compileAtrule(name) {\r\n        const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n        return () => {\r\n            const pos = position();\r\n            const m = match(re);\r\n            if (!m) {\r\n                return;\r\n            }\r\n            const ret = { type: name };\r\n            ret[name] = m[1].trim();\r\n            return pos(ret);\r\n        };\r\n    }\r\n    function atrule() {\r\n        if (css[0] !== '@') {\r\n            return;\r\n        }\r\n        return (atkeyframes() ||\r\n            atmedia() ||\r\n            atcustommedia() ||\r\n            atsupports() ||\r\n            atimport() ||\r\n            atcharset() ||\r\n            atnamespace() ||\r\n            atdocument() ||\r\n            atpage() ||\r\n            athost() ||\r\n            atfontface());\r\n    }\r\n    function rule() {\r\n        const pos = position();\r\n        const sel = selector();\r\n        if (!sel) {\r\n            return error('selector missing');\r\n        }\r\n        comments();\r\n        return pos({\r\n            type: 'rule',\r\n            selectors: sel,\r\n            declarations: declarations(),\r\n        });\r\n    }\r\n    return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n    return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n    const isNode = obj && typeof obj.type === 'string';\r\n    const childParent = isNode ? obj : parent;\r\n    for (const k of Object.keys(obj)) {\r\n        const value = obj[k];\r\n        if (Array.isArray(value)) {\r\n            value.forEach((v) => {\r\n                addParent(v, childParent);\r\n            });\r\n        }\r\n        else if (value && typeof value === 'object') {\r\n            addParent(value, childParent);\r\n        }\r\n    }\r\n    if (isNode) {\r\n        Object.defineProperty(obj, 'parent', {\r\n            configurable: true,\r\n            writable: true,\r\n            enumerable: false,\r\n            value: parent || null,\r\n        });\r\n    }\r\n    return obj;\r\n}\n\nconst tagMap = {\r\n    script: 'noscript',\r\n    altglyph: 'altGlyph',\r\n    altglyphdef: 'altGlyphDef',\r\n    altglyphitem: 'altGlyphItem',\r\n    animatecolor: 'animateColor',\r\n    animatemotion: 'animateMotion',\r\n    animatetransform: 'animateTransform',\r\n    clippath: 'clipPath',\r\n    feblend: 'feBlend',\r\n    fecolormatrix: 'feColorMatrix',\r\n    fecomponenttransfer: 'feComponentTransfer',\r\n    fecomposite: 'feComposite',\r\n    feconvolvematrix: 'feConvolveMatrix',\r\n    fediffuselighting: 'feDiffuseLighting',\r\n    fedisplacementmap: 'feDisplacementMap',\r\n    fedistantlight: 'feDistantLight',\r\n    fedropshadow: 'feDropShadow',\r\n    feflood: 'feFlood',\r\n    fefunca: 'feFuncA',\r\n    fefuncb: 'feFuncB',\r\n    fefuncg: 'feFuncG',\r\n    fefuncr: 'feFuncR',\r\n    fegaussianblur: 'feGaussianBlur',\r\n    feimage: 'feImage',\r\n    femerge: 'feMerge',\r\n    femergenode: 'feMergeNode',\r\n    femorphology: 'feMorphology',\r\n    feoffset: 'feOffset',\r\n    fepointlight: 'fePointLight',\r\n    fespecularlighting: 'feSpecularLighting',\r\n    fespotlight: 'feSpotLight',\r\n    fetile: 'feTile',\r\n    feturbulence: 'feTurbulence',\r\n    foreignobject: 'foreignObject',\r\n    glyphref: 'glyphRef',\r\n    lineargradient: 'linearGradient',\r\n    radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n    let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n    if (tagName === 'link' && n.attributes._cssText) {\r\n        tagName = 'style';\r\n    }\r\n    return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n    const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n    if (cachedStyle)\r\n        return cachedStyle;\r\n    if (cssText.length >= 1000000) {\r\n        return cssText;\r\n    }\r\n    const ast = parse(cssText, {\r\n        silent: true,\r\n    });\r\n    if (!ast.stylesheet) {\r\n        return cssText;\r\n    }\r\n    const selectors = [];\r\n    ast.stylesheet.rules.forEach((rule) => {\r\n        if ('selectors' in rule) {\r\n            (rule.selectors || []).forEach((selector) => {\r\n                if (HOVER_SELECTOR.test(selector)) {\r\n                    selectors.push(selector);\r\n                }\r\n            });\r\n        }\r\n    });\r\n    if (selectors.length === 0) {\r\n        return cssText;\r\n    }\r\n    const selectorMatcher = new RegExp(selectors\r\n        .filter((selector, index) => selectors.indexOf(selector) === index)\r\n        .sort((a, b) => b.length - a.length)\r\n        .map((selector) => {\r\n        return escapeRegExp(selector);\r\n    })\r\n        .join('|'), 'g');\r\n    const result = cssText.replace(selectorMatcher, (selector) => {\r\n        const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n        return `${selector}, ${newSelector}`;\r\n    });\r\n    cache?.stylesWithHoverClass.set(cssText, result);\r\n    return result;\r\n}\r\nfunction createCache() {\r\n    const stylesWithHoverClass = new Map();\r\n    return {\r\n        stylesWithHoverClass,\r\n    };\r\n}\r\nfunction buildNode(n, options) {\r\n    const { doc, hackCss, cache } = options;\r\n    switch (n.type) {\r\n        case NodeType.Document:\r\n            return doc.implementation.createDocument(null, '', null);\r\n        case NodeType.DocumentType:\r\n            return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n        case NodeType.Element: {\r\n            const tagName = getTagName(n);\r\n            let node;\r\n            if (n.isSVG) {\r\n                node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n            }\r\n            else {\r\n                if (n.isCustom &&\r\n                    doc.defaultView?.customElements &&\r\n                    !doc.defaultView.customElements.get(n.tagName))\r\n                    doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n                    });\r\n                node = doc.createElement(tagName);\r\n            }\r\n            const specialAttributes = {};\r\n            for (const name in n.attributes) {\r\n                if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n                    continue;\r\n                }\r\n                let value = n.attributes[name];\r\n                if (tagName === 'option' &&\r\n                    name === 'selected' &&\r\n                    value === false) {\r\n                    continue;\r\n                }\r\n                if (value === null) {\r\n                    continue;\r\n                }\r\n                if (value === true)\r\n                    value = '';\r\n                if (name.startsWith('rr_')) {\r\n                    specialAttributes[name] = value;\r\n                    continue;\r\n                }\r\n                const isTextarea = tagName === 'textarea' && name === 'value';\r\n                const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n                if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n                    value = addHoverClass(value, cache);\r\n                }\r\n                if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n                    const child = doc.createTextNode(value);\r\n                    for (const c of Array.from(node.childNodes)) {\r\n                        if (c.nodeType === node.TEXT_NODE) {\r\n                            node.removeChild(c);\r\n                        }\r\n                    }\r\n                    node.appendChild(child);\r\n                    continue;\r\n                }\r\n                try {\r\n                    if (n.isSVG && name === 'xlink:href') {\r\n                        node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n                    }\r\n                    else if (name === 'onload' ||\r\n                        name === 'onclick' ||\r\n                        name.substring(0, 7) === 'onmouse') {\r\n                        node.setAttribute('_' + name, value.toString());\r\n                    }\r\n                    else if (tagName === 'meta' &&\r\n                        n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n                        name === 'content') {\r\n                        node.setAttribute('csp-content', value.toString());\r\n                        continue;\r\n                    }\r\n                    else if (tagName === 'link' &&\r\n                        (n.attributes.rel === 'preload' ||\r\n                            n.attributes.rel === 'modulepreload') &&\r\n                        n.attributes.as === 'script') {\r\n                    }\r\n                    else if (tagName === 'link' &&\r\n                        n.attributes.rel === 'prefetch' &&\r\n                        typeof n.attributes.href === 'string' &&\r\n                        n.attributes.href.endsWith('.js')) {\r\n                    }\r\n                    else if (tagName === 'img' &&\r\n                        n.attributes.srcset &&\r\n                        n.attributes.rr_dataURL) {\r\n                        node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n                    }\r\n                    else {\r\n                        node.setAttribute(name, value.toString());\r\n                    }\r\n                }\r\n                catch (error) {\r\n                }\r\n            }\r\n            for (const name in specialAttributes) {\r\n                const value = specialAttributes[name];\r\n                if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n                    const image = document.createElement('img');\r\n                    image.onload = () => {\r\n                        const ctx = node.getContext('2d');\r\n                        if (ctx) {\r\n                            ctx.drawImage(image, 0, 0, image.width, image.height);\r\n                        }\r\n                    };\r\n                    image.src = value.toString();\r\n                    if (node.RRNodeType)\r\n                        node.rr_dataURL = value.toString();\r\n                }\r\n                else if (tagName === 'img' && name === 'rr_dataURL') {\r\n                    const image = node;\r\n                    if (!image.currentSrc.startsWith('data:')) {\r\n                        image.setAttribute('rrweb-original-src', n.attributes.src);\r\n                        image.src = value.toString();\r\n                    }\r\n                }\r\n                if (name === 'rr_width') {\r\n                    node.style.setProperty('width', value.toString());\r\n                }\r\n                else if (name === 'rr_height') {\r\n                    node.style.setProperty('height', value.toString());\r\n                }\r\n                else if (name === 'rr_mediaCurrentTime' &&\r\n                    typeof value === 'number') {\r\n                    node.currentTime = value;\r\n                }\r\n                else if (name === 'rr_mediaState') {\r\n                    switch (value) {\r\n                        case 'played':\r\n                            node\r\n                                .play()\r\n                                .catch((e) => console.warn('media playback error', e));\r\n                            break;\r\n                        case 'paused':\r\n                            node.pause();\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            if (n.isShadowHost) {\r\n                if (!node.shadowRoot) {\r\n                    node.attachShadow({ mode: 'open' });\r\n                }\r\n                else {\r\n                    while (node.shadowRoot.firstChild) {\r\n                        node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n                    }\r\n                }\r\n            }\r\n            return node;\r\n        }\r\n        case NodeType.Text:\r\n            return doc.createTextNode(n.isStyle && hackCss\r\n                ? addHoverClass(n.textContent, cache)\r\n                : n.textContent);\r\n        case NodeType.CDATA:\r\n            return doc.createCDATASection(n.textContent);\r\n        case NodeType.Comment:\r\n            return doc.createComment(n.textContent);\r\n        default:\r\n            return null;\r\n    }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n    const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n    if (mirror.has(n.id)) {\r\n        const nodeInMirror = mirror.getNode(n.id);\r\n        const meta = mirror.getMeta(nodeInMirror);\r\n        if (isNodeMetaEqual(meta, n))\r\n            return mirror.getNode(n.id);\r\n    }\r\n    let node = buildNode(n, { doc, hackCss, cache });\r\n    if (!node) {\r\n        return null;\r\n    }\r\n    if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n        mirror.replace(n.rootId, doc);\r\n    }\r\n    if (n.type === NodeType.Document) {\r\n        doc.close();\r\n        doc.open();\r\n        if (n.compatMode === 'BackCompat' &&\r\n            n.childNodes &&\r\n            n.childNodes[0].type !== NodeType.DocumentType) {\r\n            if (n.childNodes[0].type === NodeType.Element &&\r\n                'xmlns' in n.childNodes[0].attributes &&\r\n                n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n                doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n            }\r\n            else {\r\n                doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n            }\r\n        }\r\n        node = doc;\r\n    }\r\n    mirror.add(node, n);\r\n    if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n        !skipChild) {\r\n        for (const childN of n.childNodes) {\r\n            const childNode = buildNodeWithSN(childN, {\r\n                doc,\r\n                mirror,\r\n                skipChild: false,\r\n                hackCss,\r\n                afterAppend,\r\n                cache,\r\n            });\r\n            if (!childNode) {\r\n                console.warn('Failed to rebuild', childN);\r\n                continue;\r\n            }\r\n            if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n                node.shadowRoot.appendChild(childNode);\r\n            }\r\n            else if (n.type === NodeType.Document &&\r\n                childN.type == NodeType.Element) {\r\n                const htmlElement = childNode;\r\n                let body = null;\r\n                htmlElement.childNodes.forEach((child) => {\r\n                    if (child.nodeName === 'BODY')\r\n                        body = child;\r\n                });\r\n                if (body) {\r\n                    htmlElement.removeChild(body);\r\n                    node.appendChild(childNode);\r\n                    htmlElement.appendChild(body);\r\n                }\r\n                else {\r\n                    node.appendChild(childNode);\r\n                }\r\n            }\r\n            else {\r\n                node.appendChild(childNode);\r\n            }\r\n            if (afterAppend) {\r\n                afterAppend(childNode, childN.id);\r\n            }\r\n        }\r\n    }\r\n    return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n    function walk(node) {\r\n        onVisit(node);\r\n    }\r\n    for (const id of mirror.getIds()) {\r\n        if (mirror.has(id)) {\r\n            walk(mirror.getNode(id));\r\n        }\r\n    }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n    const n = mirror.getMeta(node);\r\n    if (n?.type !== NodeType.Element) {\r\n        return;\r\n    }\r\n    const el = node;\r\n    for (const name in n.attributes) {\r\n        if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n            name.startsWith('rr_'))) {\r\n            continue;\r\n        }\r\n        const value = n.attributes[name];\r\n        if (name === 'rr_scrollLeft') {\r\n            el.scrollLeft = value;\r\n        }\r\n        if (name === 'rr_scrollTop') {\r\n            el.scrollTop = value;\r\n        }\r\n    }\r\n}\r\nfunction rebuild(n, options) {\r\n    const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n    const node = buildNodeWithSN(n, {\r\n        doc,\r\n        mirror,\r\n        skipChild: false,\r\n        hackCss,\r\n        afterAppend,\r\n        cache,\r\n    });\r\n    visit(mirror, (visitedNode) => {\r\n        if (onVisit) {\r\n            onVisit(visitedNode);\r\n        }\r\n        handleScroll(visitedNode, mirror);\r\n    });\r\n    return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, cleanupSnapshot, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute, visitSnapshot };\n","// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n  'id',\n  'class',\n  'aria-label',\n  'role',\n  'name',\n  'alt',\n  'title',\n  'data-test-id',\n  'data-testid',\n  'disabled',\n  'aria-disabled',\n  'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nexport function getAttributesToRecord(attributes: Record<string, unknown>): Record<string, unknown> {\n  const obj: Record<string, unknown> = {};\n  for (const key in attributes) {\n    if (ATTRIBUTES_TO_RECORD.has(key)) {\n      let normalizedKey = key;\n\n      if (key === 'data-testid' || key === 'data-test-id') {\n        normalizedKey = 'testId';\n      }\n\n      obj[normalizedKey] = attributes[key];\n    }\n  }\n\n  return obj;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport type { serializedElementNodeWithId, serializedNodeWithId } from '@sentry-internal/rrweb-snapshot';\nimport { NodeType } from '@sentry-internal/rrweb-snapshot';\nimport type { Breadcrumb, HandlerDataDom } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { handleClick } from './handleClick';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClickTargetNode, getTargetNode } from './util/domUtils';\nimport { getAttributesToRecord } from './util/getAttributesToRecord';\n\nexport const handleDomListener: (replay: ReplayContainer) => (handlerData: HandlerDataDom) => void = (\n  replay: ReplayContainer,\n) => {\n  return (handlerData: HandlerDataDom): void => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleDom(handlerData);\n\n    if (!result) {\n      return;\n    }\n\n    const isClick = handlerData.name === 'click';\n    const event = isClick ? (handlerData.event as PointerEvent) : undefined;\n    // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n    if (\n      isClick &&\n      replay.clickDetector &&\n      event &&\n      event.target &&\n      !event.altKey &&\n      !event.metaKey &&\n      !event.ctrlKey &&\n      !event.shiftKey\n    ) {\n      handleClick(\n        replay.clickDetector,\n        result as Breadcrumb & { timestamp: number; data: { nodeId: number } },\n        getClickTargetNode(handlerData.event as Event) as HTMLElement,\n      );\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n};\n\n/** Get the base DOM breadcrumb. */\nexport function getBaseDomBreadcrumb(target: Node | null, message: string): Breadcrumb {\n  const nodeId = record.mirror.getId(target);\n  const node = nodeId && record.mirror.getNode(nodeId);\n  const meta = node && record.mirror.getMeta(node);\n  const element = meta && isElement(meta) ? meta : null;\n\n  return {\n    message,\n    data: element\n      ? {\n          nodeId,\n          node: {\n            id: nodeId,\n            tagName: element.tagName,\n            textContent: Array.from(element.childNodes)\n              .map((node: serializedNodeWithId) => node.type === NodeType.Text && node.textContent)\n              .filter(Boolean) // filter out empty values\n              .map(text => (text as string).trim())\n              .join(''),\n            attributes: getAttributesToRecord(element.attributes),\n          },\n        }\n      : {},\n  };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nexport function handleDom(handlerData: HandlerDataDom): Breadcrumb | null {\n  const { target, message } = getDomTarget(handlerData);\n\n  return createBreadcrumb({\n    category: `ui.${handlerData.name}`,\n    ...getBaseDomBreadcrumb(target, message),\n  });\n}\n\nfunction getDomTarget(handlerData: HandlerDataDom): { target: Node | null; message: string } {\n  const isClick = handlerData.name === 'click';\n\n  let message: string | undefined;\n  let target: Node | null = null;\n\n  // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n  try {\n    target = isClick ? getClickTargetNode(handlerData.event as Event) : getTargetNode(handlerData.event as Event);\n    message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  } catch (e) {\n    message = '<unknown>';\n  }\n\n  return { target, message };\n}\n\nfunction isElement(node: serializedNodeWithId): node is serializedElementNodeWithId {\n  return node.type === NodeType.Element;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport { browserPerformanceTimeOrigin } from '@sentry/utils';\n\nimport { WINDOW } from '../constants';\nimport type {\n  AllPerformanceEntry,\n  AllPerformanceEntryData,\n  ExperimentalPerformanceResourceTiming,\n  LargestContentfulPaintData,\n  NavigationData,\n  PaintData,\n  ReplayPerformanceEntry,\n  ResourceData,\n} from '../types';\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES: Record<\n  string,\n  (entry: AllPerformanceEntry) => null | ReplayPerformanceEntry<AllPerformanceEntryData>\n> = {\n  // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n  resource: createResourceEntry,\n  paint: createPaintEntry,\n  // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n  navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nexport function createPerformanceEntries(\n  entries: AllPerformanceEntry[],\n): ReplayPerformanceEntry<AllPerformanceEntryData>[] {\n  return entries.map(createPerformanceEntry).filter(Boolean) as ReplayPerformanceEntry<AllPerformanceEntryData>[];\n}\n\nfunction createPerformanceEntry(entry: AllPerformanceEntry): ReplayPerformanceEntry<AllPerformanceEntryData> | null {\n  if (!ENTRY_TYPES[entry.entryType]) {\n    return null;\n  }\n\n  return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time: number): number {\n  // browserPerformanceTimeOrigin can be undefined if `performance` or\n  // `performance.now` doesn't exist, but this is already checked by this integration\n  return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry: PerformancePaintTiming): ReplayPerformanceEntry<PaintData> {\n  const { duration, entryType, name, startTime } = entry;\n\n  const start = getAbsoluteTime(startTime);\n  return {\n    type: entryType,\n    name,\n    start,\n    end: start + duration,\n    data: undefined,\n  };\n}\n\nfunction createNavigationEntry(entry: PerformanceNavigationTiming): ReplayPerformanceEntry<NavigationData> | null {\n  const {\n    entryType,\n    name,\n    decodedBodySize,\n    duration,\n    domComplete,\n    encodedBodySize,\n    domContentLoadedEventStart,\n    domContentLoadedEventEnd,\n    domInteractive,\n    loadEventStart,\n    loadEventEnd,\n    redirectCount,\n    startTime,\n    transferSize,\n    type,\n  } = entry;\n\n  // Ignore entries with no duration, they do not seem to be useful and cause dupes\n  if (duration === 0) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${type}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(domComplete),\n    name,\n    data: {\n      size: transferSize,\n      decodedBodySize,\n      encodedBodySize,\n      duration,\n      domInteractive,\n      domContentLoadedEventStart,\n      domContentLoadedEventEnd,\n      loadEventStart,\n      loadEventEnd,\n      domComplete,\n      redirectCount,\n    },\n  };\n}\n\nfunction createResourceEntry(\n  entry: ExperimentalPerformanceResourceTiming,\n): ReplayPerformanceEntry<ResourceData> | null {\n  const {\n    entryType,\n    initiatorType,\n    name,\n    responseEnd,\n    startTime,\n    decodedBodySize,\n    encodedBodySize,\n    responseStatus,\n    transferSize,\n  } = entry;\n\n  // Core SDK handles these\n  if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n    return null;\n  }\n\n  return {\n    type: `${entryType}.${initiatorType}`,\n    start: getAbsoluteTime(startTime),\n    end: getAbsoluteTime(responseEnd),\n    name,\n    data: {\n      size: transferSize,\n      statusCode: responseStatus,\n      decodedBodySize,\n      encodedBodySize,\n    },\n  };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nexport function getLargestContentfulPaint(metric: {\n  value: number;\n  entries: PerformanceEntry[];\n}): ReplayPerformanceEntry<LargestContentfulPaintData> {\n  const entries = metric.entries;\n  const lastEntry = entries[entries.length - 1] as (PerformanceEntry & { element?: Element }) | undefined;\n  const element = lastEntry ? lastEntry.element : undefined;\n\n  const value = metric.value;\n\n  const end = getAbsoluteTime(value);\n\n  const data: ReplayPerformanceEntry<LargestContentfulPaintData> = {\n    type: 'largest-contentful-paint',\n    name: 'largest-contentful-paint',\n    start: end,\n    end,\n    data: {\n      value,\n      size: value,\n      nodeId: element ? record.mirror.getId(element) : undefined,\n    },\n  };\n\n  return data;\n}\n","import { addBreadcrumb } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nexport function logInfo(message: string, shouldAddBreadcrumb?: boolean): void {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  logger.info(message);\n\n  if (shouldAddBreadcrumb) {\n    addLogBreadcrumb(message);\n  }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nexport function logInfoNextTick(message: string, shouldAddBreadcrumb?: boolean): void {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  logger.info(message);\n\n  if (shouldAddBreadcrumb) {\n    // Wait a tick here to avoid race conditions for some initial logs\n    // which may be added before replay is initialized\n    setTimeout(() => {\n      addLogBreadcrumb(message);\n    }, 0);\n  }\n}\n\nfunction addLogBreadcrumb(message: string): void {\n  addBreadcrumb(\n    {\n      category: 'console',\n      data: {\n        logger: 'replay',\n      },\n      level: 'info',\n      message,\n    },\n    { level: 'info' },\n  );\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nexport class EventBufferSizeExceededError extends Error {\n  public constructor() {\n    super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n  }\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nexport class EventBufferArray implements EventBuffer {\n  /** All the events that are buffered to be sent. */\n  public events: RecordingEvent[];\n\n  /** @inheritdoc */\n  public hasCheckout: boolean;\n\n  private _totalSize: number;\n\n  public constructor() {\n    this.events = [];\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n  public get hasEvents(): boolean {\n    return this.events.length > 0;\n  }\n\n  /** @inheritdoc */\n  public get type(): EventBufferType {\n    return 'sync';\n  }\n\n  /** @inheritdoc */\n  public destroy(): void {\n    this.events = [];\n  }\n\n  /** @inheritdoc */\n  public async addEvent(event: RecordingEvent): Promise<AddEventResult> {\n    const eventSize = JSON.stringify(event).length;\n    this._totalSize += eventSize;\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      throw new EventBufferSizeExceededError();\n    }\n\n    this.events.push(event);\n  }\n\n  /** @inheritdoc */\n  public finish(): Promise<string> {\n    return new Promise<string>(resolve => {\n      // Make a copy of the events array reference and immediately clear the\n      // events member so that we do not lose new events while uploading\n      // attachment.\n      const eventsRet = this.events;\n      this.clear();\n      resolve(JSON.stringify(eventsRet));\n    });\n  }\n\n  /** @inheritdoc */\n  public clear(): void {\n    this.events = [];\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n  public getEarliestTimestamp(): number | null {\n    const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n    if (!timestamp) {\n      return null;\n    }\n\n    return timestampToMs(timestamp);\n  }\n}\n","import { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WorkerRequest, WorkerResponse } from '../types';\nimport { logInfo } from '../util/log';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class WorkerHandler {\n  private _worker: Worker;\n  private _id: number;\n  private _ensureReadyPromise?: Promise<void>;\n\n  public constructor(worker: Worker) {\n    this._worker = worker;\n    this._id = 0;\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n  public ensureReady(): Promise<void> {\n    // Ensure we only check once\n    if (this._ensureReadyPromise) {\n      return this._ensureReadyPromise;\n    }\n\n    this._ensureReadyPromise = new Promise((resolve, reject) => {\n      this._worker.addEventListener(\n        'message',\n        ({ data }: MessageEvent) => {\n          if ((data as WorkerResponse).success) {\n            resolve();\n          } else {\n            reject();\n          }\n        },\n        { once: true },\n      );\n\n      this._worker.addEventListener(\n        'error',\n        error => {\n          reject(error);\n        },\n        { once: true },\n      );\n    });\n\n    return this._ensureReadyPromise;\n  }\n\n  /**\n   * Destroy the worker.\n   */\n  public destroy(): void {\n    logInfo('[Replay] Destroying compression worker');\n    this._worker.terminate();\n  }\n\n  /**\n   * Post message to worker and wait for response before resolving promise.\n   */\n  public postMessage<T>(method: WorkerRequest['method'], arg?: WorkerRequest['arg']): Promise<T> {\n    const id = this._getAndIncrementId();\n\n    return new Promise((resolve, reject) => {\n      const listener = ({ data }: MessageEvent): void => {\n        const response = data as WorkerResponse;\n        if (response.method !== method) {\n          return;\n        }\n\n        // There can be multiple listeners for a single method, the id ensures\n        // that the response matches the caller.\n        if (response.id !== id) {\n          return;\n        }\n\n        // At this point, we'll always want to remove listener regardless of result status\n        this._worker.removeEventListener('message', listener);\n\n        if (!response.success) {\n          // TODO: Do some error handling, not sure what\n          DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n          reject(new Error('Error in compression worker'));\n          return;\n        }\n\n        resolve(response.response as T);\n      };\n\n      // Note: we can't use `once` option because it's possible it needs to\n      // listen to multiple messages\n      this._worker.addEventListener('message', listener);\n      this._worker.postMessage({ id, method, arg });\n    });\n  }\n\n  /** Get the current ID and increment it for the next call. */\n  private _getAndIncrementId(): number {\n    return this._id++;\n  }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\nimport { logger } from '@sentry/utils';\nimport { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { WorkerHandler } from './WorkerHandler';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class EventBufferCompressionWorker implements EventBuffer {\n  /** @inheritdoc */\n  public hasCheckout: boolean;\n\n  private _worker: WorkerHandler;\n  private _earliestTimestamp: number | null;\n  private _totalSize;\n\n  public constructor(worker: Worker) {\n    this._worker = new WorkerHandler(worker);\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n    this.hasCheckout = false;\n  }\n\n  /** @inheritdoc */\n  public get hasEvents(): boolean {\n    return !!this._earliestTimestamp;\n  }\n\n  /** @inheritdoc */\n  public get type(): EventBufferType {\n    return 'worker';\n  }\n\n  /**\n   * Ensure the worker is ready (or not).\n   * This will either resolve when the worker is ready, or reject if an error occured.\n   */\n  public ensureReady(): Promise<void> {\n    return this._worker.ensureReady();\n  }\n\n  /**\n   * Destroy the event buffer.\n   */\n  public destroy(): void {\n    this._worker.destroy();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfuly received and processed by worker.\n   */\n  public addEvent(event: RecordingEvent): Promise<AddEventResult> {\n    const timestamp = timestampToMs(event.timestamp);\n    if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n      this._earliestTimestamp = timestamp;\n    }\n\n    const data = JSON.stringify(event);\n    this._totalSize += data.length;\n\n    if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n      return Promise.reject(new EventBufferSizeExceededError());\n    }\n\n    return this._sendEventToWorker(data);\n  }\n\n  /**\n   * Finish the event buffer and return the compressed data.\n   */\n  public finish(): Promise<ReplayRecordingData> {\n    return this._finishRequest();\n  }\n\n  /** @inheritdoc */\n  public clear(): void {\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n    this.hasCheckout = false;\n\n    // We do not wait on this, as we assume the order of messages is consistent for the worker\n    this._worker.postMessage('clear').then(null, e => {\n      DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n    });\n  }\n\n  /** @inheritdoc */\n  public getEarliestTimestamp(): number | null {\n    return this._earliestTimestamp;\n  }\n\n  /**\n   * Send the event to the worker.\n   */\n  private _sendEventToWorker(data: string): Promise<AddEventResult> {\n    return this._worker.postMessage<void>('addEvent', data);\n  }\n\n  /**\n   * Finish the request and return the compressed data from the worker.\n   */\n  private async _finishRequest(): Promise<Uint8Array> {\n    const response = await this._worker.postMessage<Uint8Array>('finish');\n\n    this._earliestTimestamp = null;\n    this._totalSize = 0;\n\n    return response;\n  }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferCompressionWorker } from './EventBufferCompressionWorker';\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nexport class EventBufferProxy implements EventBuffer {\n  private _fallback: EventBufferArray;\n  private _compression: EventBufferCompressionWorker;\n  private _used: EventBuffer;\n  private _ensureWorkerIsLoadedPromise: Promise<void>;\n\n  public constructor(worker: Worker) {\n    this._fallback = new EventBufferArray();\n    this._compression = new EventBufferCompressionWorker(worker);\n    this._used = this._fallback;\n\n    this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n  }\n\n  /** @inheritdoc */\n  public get type(): EventBufferType {\n    return this._used.type;\n  }\n\n  /** @inheritDoc */\n  public get hasEvents(): boolean {\n    return this._used.hasEvents;\n  }\n\n  /** @inheritdoc */\n  public get hasCheckout(): boolean {\n    return this._used.hasCheckout;\n  }\n  /** @inheritdoc */\n  public set hasCheckout(value: boolean) {\n    this._used.hasCheckout = value;\n  }\n\n  /** @inheritDoc */\n  public destroy(): void {\n    this._fallback.destroy();\n    this._compression.destroy();\n  }\n\n  /** @inheritdoc */\n  public clear(): void {\n    return this._used.clear();\n  }\n\n  /** @inheritdoc */\n  public getEarliestTimestamp(): number | null {\n    return this._used.getEarliestTimestamp();\n  }\n\n  /**\n   * Add an event to the event buffer.\n   *\n   * Returns true if event was successfully added.\n   */\n  public addEvent(event: RecordingEvent): Promise<AddEventResult> {\n    return this._used.addEvent(event);\n  }\n\n  /** @inheritDoc */\n  public async finish(): Promise<ReplayRecordingData> {\n    // Ensure the worker is loaded, so the sent event is compressed\n    await this.ensureWorkerIsLoaded();\n\n    return this._used.finish();\n  }\n\n  /** Ensure the worker has loaded. */\n  public ensureWorkerIsLoaded(): Promise<void> {\n    return this._ensureWorkerIsLoadedPromise;\n  }\n\n  /** Actually check if the worker has been loaded. */\n  private async _ensureWorkerIsLoaded(): Promise<void> {\n    try {\n      await this._compression.ensureReady();\n    } catch (error) {\n      // If the worker fails to load, we fall back to the simple buffer.\n      // Nothing more to do from our side here\n      logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n      return;\n    }\n\n    // Now we need to switch over the array buffer to the compression worker\n    await this._switchToCompressionWorker();\n  }\n\n  /** Switch the used buffer to the compression worker. */\n  private async _switchToCompressionWorker(): Promise<void> {\n    const { events, hasCheckout } = this._fallback;\n\n    const addEventPromises: Promise<void>[] = [];\n    for (const event of events) {\n      addEventPromises.push(this._compression.addEvent(event));\n    }\n\n    this._compression.hasCheckout = hasCheckout;\n\n    // We switch over to the new buffer immediately - any further events will be added\n    // after the previously buffered ones\n    this._used = this._compression;\n\n    // Wait for original events to be re-added before resolving\n    try {\n      await Promise.all(addEventPromises);\n    } catch (error) {\n      DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n    }\n  }\n}\n","import { WINDOW } from '../constants';\n\n/** If sessionStorage is available. */\nexport function hasSessionStorage(): boolean {\n  try {\n    // This can throw, e.g. when being accessed in a sandboxed iframe\n    return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n  } catch {\n    return false;\n  }\n}\n","/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nexport function isSampled(sampleRate?: number): boolean {\n  if (sampleRate === undefined) {\n    return false;\n  }\n\n  // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n  return Math.random() < sampleRate;\n}\n","import { uuid4 } from '@sentry/utils';\n\nimport type { Sampled, Session } from '../types';\n\n/**\n * Get a session with defaults & applied sampling.\n */\nexport function makeSession(session: Partial<Session> & { sampled: Sampled }): Session {\n  const now = Date.now();\n  const id = session.id || uuid4();\n  // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n  const started = session.started || now;\n  const lastActivity = session.lastActivity || now;\n  const segmentId = session.segmentId || 0;\n  const sampled = session.sampled;\n  const previousSessionId = session.previousSessionId;\n\n  return {\n    id,\n    started,\n    lastActivity,\n    segmentId,\n    sampled,\n    previousSessionId,\n  };\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Save a session to session storage.\n */\nexport function saveSession(session: Session): void {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n  } catch {\n    // Ignore potential SecurityError exceptions\n  }\n}\n","import type { Sampled, Session, SessionOptions } from '../types';\nimport { isSampled } from '../util/isSampled';\nimport { makeSession } from './Session';\nimport { saveSession } from './saveSession';\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nexport function getSessionSampleType(sessionSampleRate: number, allowBuffering: boolean): Sampled {\n  return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nexport function createSession(\n  { sessionSampleRate, allowBuffering, stickySession = false }: SessionOptions,\n  { previousSessionId }: { previousSessionId?: string } = {},\n): Session {\n  const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n  const session = makeSession({\n    sampled,\n    previousSessionId,\n  });\n\n  if (stickySession) {\n    saveSession(session);\n  }\n\n  return session;\n}\n","/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nexport function isExpired(\n  initialTime: null | number,\n  expiry: undefined | number,\n  targetTime: number = +new Date(),\n): boolean {\n  // Always expired if < 0\n  if (initialTime === null || expiry === undefined || expiry < 0) {\n    return true;\n  }\n\n  // Never expires if == 0\n  if (expiry === 0) {\n    return false;\n  }\n\n  return initialTime + expiry <= targetTime;\n}\n","import type { Session } from '../types';\nimport { isExpired } from './isExpired';\n\n/**\n * Checks to see if session is expired\n */\nexport function isSessionExpired(\n  session: Session,\n  {\n    maxReplayDuration,\n    sessionIdleExpire,\n    targetTime = Date.now(),\n  }: { maxReplayDuration: number; sessionIdleExpire: number; targetTime?: number },\n): boolean {\n  return (\n    // First, check that maximum session length has not been exceeded\n    isExpired(session.started, maxReplayDuration, targetTime) ||\n    // check that the idle timeout has not been exceeded (i.e. user has\n    // performed an action within the last `sessionIdleExpire` ms)\n    isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n  );\n}\n","import type { Session } from '../types';\nimport { isSessionExpired } from '../util/isSessionExpired';\n\n/** If the session should be refreshed or not. */\nexport function shouldRefreshSession(\n  session: Session,\n  { sessionIdleExpire, maxReplayDuration }: { sessionIdleExpire: number; maxReplayDuration: number },\n): boolean {\n  // If not expired, all good, just keep the session\n  if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n    return false;\n  }\n\n  // If we are buffering & haven't ever flushed yet, always continue\n  if (session.sampled === 'buffer' && session.segmentId === 0) {\n    return false;\n  }\n\n  return true;\n}\n","import type { Session, SessionOptions } from '../types';\nimport { logInfoNextTick } from '../util/log';\nimport { createSession } from './createSession';\nimport { fetchSession } from './fetchSession';\nimport { shouldRefreshSession } from './shouldRefreshSession';\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nexport function loadOrCreateSession(\n  {\n    traceInternals,\n    sessionIdleExpire,\n    maxReplayDuration,\n    previousSessionId,\n  }: {\n    sessionIdleExpire: number;\n    maxReplayDuration: number;\n    traceInternals?: boolean;\n    previousSessionId?: string;\n  },\n  sessionOptions: SessionOptions,\n): Session {\n  const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n  // No session exists yet, just create a new one\n  if (!existingSession) {\n    logInfoNextTick('[Replay] Creating new session', traceInternals);\n    return createSession(sessionOptions, { previousSessionId });\n  }\n\n  if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n    return existingSession;\n  }\n\n  logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n  return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\nimport { logInfoNextTick } from '../util/log';\nimport { makeSession } from './Session';\n\n/**\n * Fetches a session from storage\n */\nexport function fetchSession(traceInternals?: boolean): Session | null {\n  if (!hasSessionStorage()) {\n    return null;\n  }\n\n  try {\n    // This can throw if cookies are disabled\n    const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n    if (!sessionStringFromStorage) {\n      return null;\n    }\n\n    const sessionObj = JSON.parse(sessionStringFromStorage) as Session;\n\n    logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n    return makeSession(sessionObj);\n  } catch {\n    return null;\n  }\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { getClient } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { EventBufferSizeExceededError } from '../eventBuffer/error';\nimport type { AddEventResult, RecordingEvent, ReplayContainer, ReplayFrameEvent, ReplayPluginOptions } from '../types';\nimport { logInfo } from './log';\nimport { timestampToMs } from './timestamp';\n\nfunction isCustomEvent(event: RecordingEvent): event is ReplayFrameEvent {\n  return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEventSync(replay: ReplayContainer, event: RecordingEvent, isCheckout?: boolean): boolean {\n  if (!shouldAddEvent(replay, event)) {\n    return false;\n  }\n\n  // This should never reject\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  _addEvent(replay, event, isCheckout);\n\n  return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEvent(\n  replay: ReplayContainer,\n  event: RecordingEvent,\n  isCheckout?: boolean,\n): Promise<AddEventResult | null> {\n  if (!shouldAddEvent(replay, event)) {\n    return Promise.resolve(null);\n  }\n\n  return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n  replay: ReplayContainer,\n  event: RecordingEvent,\n  isCheckout?: boolean,\n): Promise<AddEventResult | null> {\n  if (!replay.eventBuffer) {\n    return null;\n  }\n\n  try {\n    if (isCheckout && replay.recordingMode === 'buffer') {\n      replay.eventBuffer.clear();\n    }\n\n    if (isCheckout) {\n      replay.eventBuffer.hasCheckout = true;\n    }\n\n    const replayOptions = replay.getOptions();\n\n    const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n    if (!eventAfterPossibleCallback) {\n      return;\n    }\n\n    return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n  } catch (error) {\n    const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n    DEBUG_BUILD && logger.error(error);\n    await replay.stop({ reason });\n\n    const client = getClient();\n\n    if (client) {\n      client.recordDroppedEvent('internal_sdk_error', 'replay');\n    }\n  }\n}\n\n/** Exported only for tests. */\nexport function shouldAddEvent(replay: ReplayContainer, event: RecordingEvent): boolean {\n  if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n    return false;\n  }\n\n  const timestampInMs = timestampToMs(event.timestamp);\n\n  // Throw out events that happen more than 5 minutes ago. This can happen if\n  // page has been left open and idle for a long period of time and user\n  // comes back to trigger a new session. The performance entries rely on\n  // `performance.timeOrigin`, which is when the page first opened.\n  if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n    return false;\n  }\n\n  // Throw out events that are +60min from the initial timestamp\n  if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n    logInfo(\n      `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n      replay.getOptions()._experiments.traceInternals,\n    );\n    return false;\n  }\n\n  return true;\n}\n\nfunction maybeApplyCallback(\n  event: RecordingEvent,\n  callback: ReplayPluginOptions['beforeAddRecordingEvent'],\n): RecordingEvent | null | undefined {\n  try {\n    if (typeof callback === 'function' && isCustomEvent(event)) {\n      return callback(event);\n    }\n  } catch (error) {\n    DEBUG_BUILD &&\n      logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n    return null;\n  }\n\n  return event;\n}\n","import type { ErrorEvent, Event, FeedbackEvent, ReplayEvent, TransactionEvent } from '@sentry/types';\n\n/** If the event is an error event */\nexport function isErrorEvent(event: Event): event is ErrorEvent {\n  return !event.type;\n}\n\n/** If the event is a transaction event */\nexport function isTransactionEvent(event: Event): event is TransactionEvent {\n  return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nexport function isReplayEvent(event: Event): event is ReplayEvent {\n  return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nexport function isFeedbackEvent(event: Event): event is FeedbackEvent {\n  return event.type === 'feedback';\n}\n","import { getClient } from '@sentry/core';\nimport type { ErrorEvent, Event, TransactionEvent, Transport, TransportMakeRequestResponse } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isTransactionEvent } from '../util/eventUtils';\n\ntype AfterSendEventCallback = (event: Event, sendResponse: TransportMakeRequestResponse | void) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleAfterSendEvent(replay: ReplayContainer): AfterSendEventCallback {\n  // Custom transports may still be returning `Promise<void>`, which means we cannot expect the status code to be available there\n  // TODO (v8): remove this check as it will no longer be necessary\n  const enforceStatusCode = isBaseTransportSend();\n\n  return (event: Event, sendResponse: TransportMakeRequestResponse | void) => {\n    if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n      return;\n    }\n\n    const statusCode = sendResponse && sendResponse.statusCode;\n\n    // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n    // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n    // If we do use the base transport, we skip if we encountered an non-OK status code\n    if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n      return;\n    }\n\n    if (isTransactionEvent(event)) {\n      handleTransactionEvent(replay, event);\n      return;\n    }\n\n    handleErrorEvent(replay, event);\n  };\n}\n\nfunction handleTransactionEvent(replay: ReplayContainer, event: TransactionEvent): void {\n  const replayContext = replay.getContext();\n\n  // Collect traceIds in _context regardless of `recordingMode`\n  // In error mode, _context gets cleared on every checkout\n  // We limit to max. 100 transactions linked\n  if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n    replayContext.traceIds.add(event.contexts.trace.trace_id as string);\n  }\n}\n\nfunction handleErrorEvent(replay: ReplayContainer, event: ErrorEvent): void {\n  const replayContext = replay.getContext();\n\n  // Add error to list of errorIds of replay. This is ok to do even if not\n  // sampled because context will get reset at next checkout.\n  // XXX: There is also a race condition where it's possible to capture an\n  // error to Sentry before Replay SDK has loaded, but response returns after\n  // it was loaded, and this gets called.\n  // We limit to max. 100 errors linked\n  if (event.event_id && replayContext.errorIds.size < 100) {\n    replayContext.errorIds.add(event.event_id);\n  }\n\n  // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n  // Need to be very careful that this does not cause an infinite loop\n  if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n    return;\n  }\n\n  const { beforeErrorSampling } = replay.getOptions();\n  if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n    return;\n  }\n\n  setTimeout(() => {\n    // Capture current event buffer as new replay\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.sendBufferedReplayOrFlush();\n  });\n}\n\nfunction isBaseTransportSend(): boolean {\n  const client = getClient();\n  if (!client) {\n    return false;\n  }\n\n  const transport = client.getTransport();\n  if (!transport) {\n    return false;\n  }\n\n  return (\n    (transport.send as Transport['send'] & { __sentry__baseTransport__?: true }).__sentry__baseTransport__ || false\n  );\n}\n","import { EventType } from '@sentry-internal/rrweb';\n\nimport type { AddEventResult, AllEntryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\n\n/**\n * Create a \"span\" for each performance entry.\n */\nexport function createPerformanceSpans(\n  replay: ReplayContainer,\n  entries: ReplayPerformanceEntry<AllEntryData>[],\n): Promise<AddEventResult | null>[] {\n  return entries.map(({ type, start, end, name, data }) => {\n    const response = replay.throttledAddEvent({\n      type: EventType.Custom,\n      timestamp: start,\n      data: {\n        tag: 'performanceSpan',\n        payload: {\n          op: type,\n          description: name,\n          startTimestamp: start,\n          endTimestamp: end,\n          data,\n        },\n      },\n    });\n\n    // If response is a string, it means its either THROTTLED or SKIPPED\n    return typeof response === 'string' ? Promise.resolve(null) : response;\n  });\n}\n","import type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../../types';\nimport { createPerformanceSpans } from '../../util/createPerformanceSpans';\nimport { shouldFilterRequest } from '../../util/shouldFilterRequest';\n\n/** Add a performance entry breadcrumb */\nexport function addNetworkBreadcrumb(\n  replay: ReplayContainer,\n  result: ReplayPerformanceEntry<NetworkRequestData> | null,\n): void {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  if (result === null) {\n    return;\n  }\n\n  if (shouldFilterRequest(replay, result.name)) {\n    return;\n  }\n\n  replay.addUpdate(() => {\n    createPerformanceSpans(replay, [result]);\n    // Returning true will cause `addUpdate` to not flush\n    // We do not want network requests to cause a flush. This will prevent\n    // recurring/polling requests from keeping the replay session alive.\n    return true;\n  });\n}\n","import { getClient, isSentryRequestUrl } from '@sentry/core';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nexport function shouldFilterRequest(replay: ReplayContainer, url: string): boolean {\n  // If we enabled the `traceInternals` experiment, we want to trace everything\n  if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n    return false;\n  }\n\n  return isSentryRequestUrl(url, getClient());\n}\n","import type { TextEncoderInternal } from '@sentry/types';\nimport { dropUndefinedKeys, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { NETWORK_BODY_MAX_SIZE, WINDOW } from '../../constants';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n  NetworkBody,\n  NetworkMetaWarning,\n  NetworkRequestData,\n  ReplayNetworkRequestData,\n  ReplayNetworkRequestOrResponse,\n  ReplayPerformanceEntry,\n} from '../../types';\n\n/** Get the size of a body. */\nexport function getBodySize(\n  body: RequestInit['body'],\n  textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n  if (!body) {\n    return undefined;\n  }\n\n  try {\n    if (typeof body === 'string') {\n      return textEncoder.encode(body).length;\n    }\n\n    if (body instanceof URLSearchParams) {\n      return textEncoder.encode(body.toString()).length;\n    }\n\n    if (body instanceof FormData) {\n      const formDataStr = _serializeFormData(body);\n      return textEncoder.encode(formDataStr).length;\n    }\n\n    if (body instanceof Blob) {\n      return body.size;\n    }\n\n    if (body instanceof ArrayBuffer) {\n      return body.byteLength;\n    }\n\n    // Currently unhandled types: ArrayBufferView, ReadableStream\n  } catch {\n    // just return undefined\n  }\n\n  return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined.  */\nexport function parseContentLengthHeader(header: string | null | undefined): number | undefined {\n  if (!header) {\n    return undefined;\n  }\n\n  const size = parseInt(header, 10);\n  return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nexport function getBodyString(body: unknown): [string | undefined, NetworkMetaWarning?] {\n  try {\n    if (typeof body === 'string') {\n      return [body];\n    }\n\n    if (body instanceof URLSearchParams) {\n      return [body.toString()];\n    }\n\n    if (body instanceof FormData) {\n      return [_serializeFormData(body)];\n    }\n\n    if (!body) {\n      return [undefined];\n    }\n  } catch {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n  return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nexport function mergeWarning(\n  info: ReplayNetworkRequestOrResponse | undefined,\n  warning: NetworkMetaWarning,\n): ReplayNetworkRequestOrResponse {\n  if (!info) {\n    return {\n      headers: {},\n      size: undefined,\n      _meta: {\n        warnings: [warning],\n      },\n    };\n  }\n\n  const newMeta = { ...info._meta };\n  const existingWarnings = newMeta.warnings || [];\n  newMeta.warnings = [...existingWarnings, warning];\n\n  info._meta = newMeta;\n  return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nexport function makeNetworkReplayBreadcrumb(\n  type: string,\n  data: ReplayNetworkRequestData | null,\n): ReplayPerformanceEntry<NetworkRequestData> | null {\n  if (!data) {\n    return null;\n  }\n\n  const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n  const result: ReplayPerformanceEntry<NetworkRequestData> = {\n    type,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: dropUndefinedKeys({\n      method,\n      statusCode,\n      request,\n      response,\n    }),\n  };\n\n  return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nexport function buildSkippedNetworkRequestOrResponse(bodySize: number | undefined): ReplayNetworkRequestOrResponse {\n  return {\n    headers: {},\n    size: bodySize,\n    _meta: {\n      warnings: ['URL_SKIPPED'],\n    },\n  };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nexport function buildNetworkRequestOrResponse(\n  headers: Record<string, string>,\n  bodySize: number | undefined,\n  body: string | undefined,\n): ReplayNetworkRequestOrResponse | undefined {\n  if (!bodySize && Object.keys(headers).length === 0) {\n    return undefined;\n  }\n\n  if (!bodySize) {\n    return {\n      headers,\n    };\n  }\n\n  if (!body) {\n    return {\n      headers,\n      size: bodySize,\n    };\n  }\n\n  const info: ReplayNetworkRequestOrResponse = {\n    headers,\n    size: bodySize,\n  };\n\n  const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n  info.body = normalizedBody;\n  if (warnings && warnings.length > 0) {\n    info._meta = {\n      warnings,\n    };\n  }\n\n  return info;\n}\n\n/** Filter a set of headers */\nexport function getAllowedHeaders(headers: Record<string, string>, allowedHeaders: string[]): Record<string, string> {\n  return Object.keys(headers).reduce((filteredHeaders: Record<string, string>, key: string) => {\n    const normalizedKey = key.toLowerCase();\n    // Avoid putting empty strings into the headers\n    if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n      filteredHeaders[normalizedKey] = headers[key];\n    }\n    return filteredHeaders;\n  }, {});\n}\n\nfunction _serializeFormData(formData: FormData): string {\n  // This is a bit simplified, but gives us a decent estimate\n  // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n  // @ts-expect-error passing FormData to URLSearchParams actually works\n  return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body: string | undefined): {\n  body: NetworkBody | undefined;\n  warnings?: NetworkMetaWarning[];\n} {\n  if (!body || typeof body !== 'string') {\n    return {\n      body,\n    };\n  }\n\n  const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n  const isProbablyJson = _strIsProbablyJson(body);\n\n  if (exceedsSizeLimit) {\n    const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n    if (isProbablyJson) {\n      return {\n        body: truncatedBody,\n        warnings: ['MAYBE_JSON_TRUNCATED'],\n      };\n    }\n\n    return {\n      body: `${truncatedBody}…`,\n      warnings: ['TEXT_TRUNCATED'],\n    };\n  }\n\n  if (isProbablyJson) {\n    try {\n      const jsonBody = JSON.parse(body);\n      return {\n        body: jsonBody,\n      };\n    } catch {\n      // fall back to just send the body as string\n    }\n  }\n\n  return {\n    body,\n  };\n}\n\nfunction _strIsProbablyJson(str: string): boolean {\n  const first = str[0];\n  const last = str[str.length - 1];\n\n  // Simple check: If this does not start & end with {} or [], it's not JSON\n  return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nexport function urlMatches(url: string, urls: (string | RegExp)[]): boolean {\n  const fullUrl = getFullUrl(url);\n\n  return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nexport function getFullUrl(url: string, baseURI = WINDOW.document.baseURI): string {\n  // Short circuit for common cases:\n  if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n    return url;\n  }\n  const fixedUrl = new URL(url, baseURI);\n\n  // If these do not match, we are not dealing with a relative URL, so just return it\n  if (fixedUrl.origin !== new URL(baseURI).origin) {\n    return url;\n  }\n\n  const fullUrl = fixedUrl.href;\n\n  // Remove trailing slashes, if they don't match the original URL\n  if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n    return fullUrl.slice(0, -1);\n  }\n\n  return fullUrl;\n}\n","import type { Breadcrumb, FetchBreadcrumbData, TextEncoderInternal } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n  FetchHint,\n  NetworkMetaWarning,\n  ReplayContainer,\n  ReplayNetworkOptions,\n  ReplayNetworkRequestData,\n  ReplayNetworkRequestOrResponse,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n  buildNetworkRequestOrResponse,\n  buildSkippedNetworkRequestOrResponse,\n  getAllowedHeaders,\n  getBodySize,\n  getBodyString,\n  makeNetworkReplayBreadcrumb,\n  mergeWarning,\n  parseContentLengthHeader,\n  urlMatches,\n} from './networkUtils';\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureFetchBreadcrumbToReplay(\n  breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n  hint: Partial<FetchHint>,\n  options: ReplayNetworkOptions & {\n    textEncoder: TextEncoderInternal;\n    replay: ReplayContainer;\n  },\n): Promise<void> {\n  try {\n    const data = await _prepareFetchData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichFetchBreadcrumb(\n  breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n  hint: Partial<FetchHint>,\n  options: { textEncoder: TextEncoderInternal },\n): void {\n  const { input, response } = hint;\n\n  const body = input ? _getFetchRequestArgBody(input) : undefined;\n  const reqSize = getBodySize(body, options.textEncoder);\n\n  const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nasync function _prepareFetchData(\n  breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n  hint: Partial<FetchHint>,\n  options: ReplayNetworkOptions & {\n    textEncoder: TextEncoderInternal;\n  },\n): Promise<ReplayNetworkRequestData> {\n  const now = Date.now();\n  const { startTimestamp = now, endTimestamp = now } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  const captureDetails =\n    urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n  const request = captureDetails\n    ? _getRequestInfo(options, hint.input, requestBodySize)\n    : buildSkippedNetworkRequestOrResponse(requestBodySize);\n  const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request,\n    response,\n  };\n}\n\nfunction _getRequestInfo(\n  { networkCaptureBodies, networkRequestHeaders }: ReplayNetworkOptions,\n  input: FetchHint['input'] | undefined,\n  requestBodySize?: number,\n): ReplayNetworkRequestOrResponse | undefined {\n  const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n  if (!networkCaptureBodies) {\n    return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n  }\n\n  // We only want to transmit string or string-like bodies\n  const requestBody = _getFetchRequestArgBody(input);\n  const [bodyStr, warning] = getBodyString(requestBody);\n  const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n  if (warning) {\n    return mergeWarning(data, warning);\n  }\n\n  return data;\n}\n\n/** Exported only for tests. */\nexport async function _getResponseInfo(\n  captureDetails: boolean,\n  {\n    networkCaptureBodies,\n    textEncoder,\n    networkResponseHeaders,\n  }: Pick<ReplayNetworkOptions, 'networkCaptureBodies' | 'networkResponseHeaders'> & {\n    textEncoder: TextEncoderInternal;\n  },\n  response: Response | undefined,\n  responseBodySize?: number,\n): Promise<ReplayNetworkRequestOrResponse | undefined> {\n  if (!captureDetails && responseBodySize !== undefined) {\n    return buildSkippedNetworkRequestOrResponse(responseBodySize);\n  }\n\n  const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n  if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n\n  const [bodyText, warning] = await _parseFetchResponseBody(response);\n  const result = getResponseData(bodyText, {\n    networkCaptureBodies,\n    textEncoder,\n    responseBodySize,\n    captureDetails,\n    headers,\n  });\n\n  if (warning) {\n    return mergeWarning(result, warning);\n  }\n\n  return result;\n}\n\nfunction getResponseData(\n  bodyText: string | undefined,\n  {\n    networkCaptureBodies,\n    textEncoder,\n    responseBodySize,\n    captureDetails,\n    headers,\n  }: {\n    captureDetails: boolean;\n    networkCaptureBodies: boolean;\n    responseBodySize: number | undefined;\n    headers: Record<string, string>;\n    textEncoder: TextEncoderInternal;\n  },\n): ReplayNetworkRequestOrResponse | undefined {\n  try {\n    const size =\n      bodyText && bodyText.length && responseBodySize === undefined\n        ? getBodySize(bodyText, textEncoder)\n        : responseBodySize;\n\n    if (!captureDetails) {\n      return buildSkippedNetworkRequestOrResponse(size);\n    }\n\n    if (networkCaptureBodies) {\n      return buildNetworkRequestOrResponse(headers, size, bodyText);\n    }\n\n    return buildNetworkRequestOrResponse(headers, size, undefined);\n  } catch (error) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n    // fallback\n    return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n  }\n}\n\nasync function _parseFetchResponseBody(response: Response): Promise<[string | undefined, NetworkMetaWarning?]> {\n  const res = _tryCloneResponse(response);\n\n  if (!res) {\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  try {\n    const text = await _tryGetResponseText(res);\n    return [text];\n  } catch (error) {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs: unknown[] = []): RequestInit['body'] | undefined {\n  // We only support getting the body from the fetch options\n  if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n    return undefined;\n  }\n\n  return (fetchArgs[1] as RequestInit).body;\n}\n\nfunction getAllHeaders(headers: Headers, allowedHeaders: string[]): Record<string, string> {\n  const allHeaders: Record<string, string> = {};\n\n  allowedHeaders.forEach(header => {\n    if (headers.get(header)) {\n      allHeaders[header] = headers.get(header) as string;\n    }\n  });\n\n  return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs: unknown[], allowedHeaders: string[]): Record<string, string> {\n  if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n    return getHeadersFromOptions(fetchArgs[0] as Request | RequestInit, allowedHeaders);\n  }\n\n  if (fetchArgs.length === 2) {\n    return getHeadersFromOptions(fetchArgs[1] as Request | RequestInit, allowedHeaders);\n  }\n\n  return {};\n}\n\nfunction getHeadersFromOptions(\n  input: Request | RequestInit | undefined,\n  allowedHeaders: string[],\n): Record<string, string> {\n  if (!input) {\n    return {};\n  }\n\n  const headers = input.headers;\n\n  if (!headers) {\n    return {};\n  }\n\n  if (headers instanceof Headers) {\n    return getAllHeaders(headers, allowedHeaders);\n  }\n\n  // We do not support this, as it is not really documented (anymore?)\n  if (Array.isArray(headers)) {\n    return {};\n  }\n\n  return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response: Response): Response | void {\n  try {\n    // We have to clone this, as the body can only be read once\n    return response.clone();\n  } catch (error) {\n    // this can throw if the response was already consumed before\n    DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n  }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response: Response): Promise<string | undefined> {\n  return new Promise((resolve, reject) => {\n    const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n    _getResponseText(response)\n      .then(\n        txt => resolve(txt),\n        reason => reject(reason),\n      )\n      .finally(() => clearTimeout(timeout));\n  });\n\n  return _getResponseText(response);\n}\n\nasync function _getResponseText(response: Response): Promise<string> {\n  // Force this to be a promise, just to be safe\n  // eslint-disable-next-line no-return-await\n  return await response.text();\n}\n","import type { Breadcrumb, Scope } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport { CONSOLE_ARG_MAX_SIZE } from '../constants';\nimport type { ReplayContainer } from '../types';\nimport type { ReplayFrame } from '../types/replayFrame';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\nlet _LAST_BREADCRUMB: null | Breadcrumb = null;\n\ntype BreadcrumbWithCategory = Required<Pick<Breadcrumb, 'category'>>;\n\nfunction isBreadcrumbWithCategory(breadcrumb: Breadcrumb): breadcrumb is BreadcrumbWithCategory {\n  return !!breadcrumb.category;\n}\n\nexport const handleScopeListener: (replay: ReplayContainer) => (scope: Scope) => void =\n  (replay: ReplayContainer) =>\n  (scope: Scope): void => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleScope(scope);\n\n    if (!result) {\n      return;\n    }\n\n    addBreadcrumbEvent(replay, result);\n  };\n\n/**\n * An event handler to handle scope changes.\n */\nexport function handleScope(scope: Scope): Breadcrumb | null {\n  // TODO (v8): Remove this guard. This was put in place because we introduced\n  // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n  // For now, we'll just return null if the method doesn't exist but we should eventually\n  // get rid of this guard.\n  const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n  // Listener can be called when breadcrumbs have not changed, so we store the\n  // reference to the last crumb and only return a crumb if it has changed\n  if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n    return null;\n  }\n\n  _LAST_BREADCRUMB = newBreadcrumb;\n\n  if (\n    !isBreadcrumbWithCategory(newBreadcrumb) ||\n    ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n    newBreadcrumb.category.startsWith('ui.')\n  ) {\n    return null;\n  }\n\n  if (newBreadcrumb.category === 'console') {\n    return normalizeConsoleBreadcrumb(newBreadcrumb);\n  }\n\n  return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nexport function normalizeConsoleBreadcrumb(\n  breadcrumb: Omit<Breadcrumb, 'category'> & BreadcrumbWithCategory,\n): ReplayFrame {\n  const args = breadcrumb.data && breadcrumb.data.arguments;\n\n  if (!Array.isArray(args) || args.length === 0) {\n    return createBreadcrumb(breadcrumb);\n  }\n\n  let isTruncated = false;\n\n  // Avoid giant args captures\n  const normalizedArgs = args.map(arg => {\n    if (!arg) {\n      return arg;\n    }\n    if (typeof arg === 'string') {\n      if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n        isTruncated = true;\n        return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n      }\n\n      return arg;\n    }\n    if (typeof arg === 'object') {\n      try {\n        const normalizedArg = normalize(arg, 7);\n        const stringified = JSON.stringify(normalizedArg);\n        if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n          isTruncated = true;\n          // We use the pretty printed JSON string here as a base\n          return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n        }\n        return normalizedArg;\n      } catch {\n        // fall back to default\n      }\n    }\n\n    return arg;\n  });\n\n  return createBreadcrumb({\n    ...breadcrumb,\n    data: {\n      ...breadcrumb.data,\n      arguments: normalizedArgs,\n      ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n    },\n  });\n}\n","import type { BaseClient } from '@sentry/core';\nimport { getCurrentScope } from '@sentry/core';\nimport { addEventProcessor, getClient } from '@sentry/core';\nimport type { Client, DynamicSamplingContext } from '@sentry/types';\nimport { addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler } from '@sentry/utils';\n\nimport { handleAfterSendEvent } from '../coreHandlers/handleAfterSendEvent';\nimport { handleBeforeSendEvent } from '../coreHandlers/handleBeforeSendEvent';\nimport { handleDomListener } from '../coreHandlers/handleDom';\nimport { handleGlobalEventListener } from '../coreHandlers/handleGlobalEvent';\nimport { handleHistorySpanListener } from '../coreHandlers/handleHistory';\nimport { handleNetworkBreadcrumbs } from '../coreHandlers/handleNetworkBreadcrumbs';\nimport { handleScopeListener } from '../coreHandlers/handleScope';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Add global listeners that cannot be removed.\n */\nexport function addGlobalListeners(replay: ReplayContainer): void {\n  // Listeners from core SDK //\n  const scope = getCurrentScope();\n  const client = getClient();\n\n  scope.addScopeListener(handleScopeListener(replay));\n  addClickKeypressInstrumentationHandler(handleDomListener(replay));\n  addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n  handleNetworkBreadcrumbs(replay);\n\n  // Tag all (non replay) events that get sent to Sentry with the current\n  // replay ID so that we can reference them later in the UI\n  const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n  if (client && client.addEventProcessor) {\n    client.addEventProcessor(eventProcessor);\n  } else {\n    addEventProcessor(eventProcessor);\n  }\n\n  // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n  if (hasHooks(client)) {\n    client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n    client.on('afterSendEvent', handleAfterSendEvent(replay));\n    client.on('createDsc', (dsc: DynamicSamplingContext) => {\n      const replayId = replay.getSessionId();\n      // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n      if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n        // Ensure to check that the session is still active - it could have expired in the meanwhile\n        const isSessionActive = replay.checkAndHandleExpiredSession();\n        if (isSessionActive) {\n          dsc.replay_id = replayId;\n        }\n      }\n    });\n\n    client.on('startTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n\n    // We may be missing the initial startTransaction due to timing issues,\n    // so we capture it on finish again.\n    client.on('finishTransaction', transaction => {\n      replay.lastTransaction = transaction;\n    });\n\n    // We want to flush replay\n    client.on('beforeSendFeedback', (feedbackEvent, options) => {\n      const replayId = replay.getSessionId();\n      if (options && options.includeReplay && replay.isEnabled() && replayId) {\n        // This should never reject\n        if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n          feedbackEvent.contexts.feedback.replay_id = replayId;\n        }\n      }\n    });\n  }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client: Client | undefined): client is BaseClient<any> {\n  return !!(client && client.on);\n}\n","import { WINDOW } from '../constants';\nimport type { AddEventResult, MemoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from './createPerformanceSpans';\n\ntype ReplayMemoryEntry = ReplayPerformanceEntry<MemoryData> & { data: { memory: MemoryInfo } };\n\ninterface MemoryInfo {\n  jsHeapSizeLimit: number;\n  totalJSHeapSize: number;\n  usedJSHeapSize: number;\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nexport async function addMemoryEntry(replay: ReplayContainer): Promise<Array<AddEventResult | null>> {\n  // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n  try {\n    return Promise.all(\n      createPerformanceSpans(replay, [\n        // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n        createMemoryEntry(WINDOW.performance.memory),\n      ]),\n    );\n  } catch (error) {\n    // Do nothing\n    return [];\n  }\n}\n\nfunction createMemoryEntry(memoryEntry: MemoryInfo): ReplayMemoryEntry {\n  const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n  // we don't want to use `getAbsoluteTime` because it adds the event time to the\n  // time origin, so we get the current timestamp instead\n  const time = Date.now() / 1000;\n  return {\n    type: 'memory',\n    name: 'memory',\n    start: time,\n    end: time,\n    data: {\n      memory: {\n        jsHeapSizeLimit,\n        totalJSHeapSize,\n        usedJSHeapSize,\n      },\n    },\n  };\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { logger } from '@sentry/utils';\n\nimport { updateClickDetectorForRecordingEvent } from '../coreHandlers/handleClick';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { saveSession } from '../session/saveSession';\nimport type { RecordingEvent, ReplayContainer, ReplayOptionFrameEvent } from '../types';\nimport { addEventSync } from './addEvent';\nimport { logInfo } from './log';\n\ntype RecordingEmitCallback = (event: RecordingEvent, isCheckout?: boolean) => void;\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nexport function getHandleRecordingEmit(replay: ReplayContainer): RecordingEmitCallback {\n  let hadFirstEvent = false;\n\n  return (event: RecordingEvent, _isCheckout?: boolean) => {\n    // If this is false, it means session is expired, create and a new session and wait for checkout\n    if (!replay.checkAndHandleExpiredSession()) {\n      DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n      return;\n    }\n\n    // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n    // We also want to treat the first event as a checkout, so we handle this specifically here\n    const isCheckout = _isCheckout || !hadFirstEvent;\n    hadFirstEvent = true;\n\n    if (replay.clickDetector) {\n      updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n    }\n\n    // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n    replay.addUpdate(() => {\n      // The session is always started immediately on pageload/init, but for\n      // error-only replays, it should reflect the most recent checkout\n      // when an error occurs. Clear any state that happens before this current\n      // checkout. This needs to happen before `addEvent()` which updates state\n      // dependent on this reset.\n      if (replay.recordingMode === 'buffer' && isCheckout) {\n        replay.setInitialState();\n      }\n\n      // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n      // Skip all further steps\n      if (!addEventSync(replay, event, isCheckout)) {\n        // Return true to skip scheduling a debounced flush\n        return true;\n      }\n\n      // Different behavior for full snapshots (type=2), ignore other event types\n      // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n      if (!isCheckout) {\n        return false;\n      }\n\n      // Additionally, create a meta event that will capture certain SDK settings.\n      // In order to handle buffer mode, this needs to either be done when we\n      // receive checkout events or at flush time.\n      //\n      // `isCheckout` is always true, but want to be explicit that it should\n      // only be added for checkouts\n      addSettingsEvent(replay, isCheckout);\n\n      // If there is a previousSessionId after a full snapshot occurs, then\n      // the replay session was started due to session expiration. The new session\n      // is started before triggering a new checkout and contains the id\n      // of the previous session. Do not immediately flush in this case\n      // to avoid capturing only the checkout and instead the replay will\n      // be captured if they perform any follow-up actions.\n      if (replay.session && replay.session.previousSessionId) {\n        return true;\n      }\n\n      // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n      // this should usually be the timestamp of the checkout event, but to be safe...\n      if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n        const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n        if (earliestEvent) {\n          logInfo(\n            `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n            replay.getOptions()._experiments.traceInternals,\n          );\n\n          replay.session.started = earliestEvent;\n\n          if (replay.getOptions().stickySession) {\n            saveSession(replay.session);\n          }\n        }\n      }\n\n      if (replay.recordingMode === 'session') {\n        // If the full snapshot is due to an initial load, we will not have\n        // a previous session ID. In this case, we want to buffer events\n        // for a set amount of time before flushing. This can help avoid\n        // capturing replays of users that immediately close the window.\n\n        // This should never reject\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        void replay.flush();\n      }\n\n      return true;\n    });\n  };\n}\n\n/**\n * Exported for tests\n */\nexport function createOptionsEvent(replay: ReplayContainer): ReplayOptionFrameEvent {\n  const options = replay.getOptions();\n  return {\n    type: EventType.Custom,\n    timestamp: Date.now(),\n    data: {\n      tag: 'options',\n      payload: {\n        shouldRecordCanvas: replay.isRecordingCanvas(),\n        sessionSampleRate: options.sessionSampleRate,\n        errorSampleRate: options.errorSampleRate,\n        useCompressionOption: options.useCompression,\n        blockAllMedia: options.blockAllMedia,\n        maskAllText: options.maskAllText,\n        maskAllInputs: options.maskAllInputs,\n        useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n        networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n        networkCaptureBodies: options.networkCaptureBodies,\n        networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n        networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n      },\n    },\n  };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay: ReplayContainer, isCheckout?: boolean): void {\n  // Only need to add this event when sending the first segment\n  if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n    return;\n  }\n\n  addEventSync(replay, createOptionsEvent(replay), false);\n}\n","type ClassOption = string | RegExp;\n\n/** Duplicate this from @sentry-internal/rrweb so we can export this as well. */\nexport const ReplayEventTypeDomContentLoaded = 0;\nexport const ReplayEventTypeLoad = 1;\nexport const ReplayEventTypeFullSnapshot = 2;\nexport const ReplayEventTypeIncrementalSnapshot = 3;\nexport const ReplayEventTypeMeta = 4;\nexport const ReplayEventTypeCustom = 5;\nexport const ReplayEventTypePlugin = 6;\n\nexport type ReplayEventType =\n  | typeof ReplayEventTypeDomContentLoaded\n  | typeof ReplayEventTypeLoad\n  | typeof ReplayEventTypeFullSnapshot\n  | typeof ReplayEventTypeIncrementalSnapshot\n  | typeof ReplayEventTypeMeta\n  | typeof ReplayEventTypeCustom\n  | typeof ReplayEventTypePlugin;\n\n/**\n * This is a partial copy of rrweb's eventWithTime type which only contains the properties\n * we specifcally need in the SDK.\n */\nexport type ReplayEventWithTime = {\n  type: ReplayEventType;\n  data: unknown;\n  timestamp: number;\n  delay?: number;\n};\n\n/**\n * This is a partial copy of rrweb's recording options which only contains the properties\n * we specifically us in the SDK. Users can specify additional properties, hence we add the\n * Record<string, unknown> union type.\n */\nexport type RrwebRecordOptions = {\n  maskAllText?: boolean;\n  maskAllInputs?: boolean;\n  blockClass?: ClassOption;\n  ignoreClass?: string;\n  maskTextClass?: ClassOption;\n  maskTextSelector?: string;\n  blockSelector?: string;\n  maskInputOptions?: Record<string, boolean>;\n} & Record<string, unknown>;\n\nexport interface CanvasManagerInterface {\n  reset(): void;\n  freeze(): void;\n  unfreeze(): void;\n  lock(): void;\n  unlock(): void;\n  snapshot(): void;\n}\n\nexport interface CanvasManagerOptions {\n  recordCanvas: boolean;\n  enableManualSnapshot?: boolean;\n  blockClass: string | RegExp;\n  blockSelector: string | null;\n  unblockSelector: string | null;\n  sampling?: 'all' | number;\n  dataURLOptions: Partial<{\n    type: string;\n    quality: number;\n  }>;\n  mutationCb: (p: any) => void;\n  win: typeof globalThis & Window;\n  mirror: any;\n}\n","import { getClient, getCurrentScope } from '@sentry/core';\nimport type { ReplayEvent, TransportMakeRequestResponse } from '@sentry/types';\nimport type { RateLimits } from '@sentry/utils';\nimport { isRateLimited, updateRateLimits } from '@sentry/utils';\n\nimport { REPLAY_EVENT_NAME, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport type { SendReplayData } from '../types';\nimport { createReplayEnvelope } from './createReplayEnvelope';\nimport { logInfo } from './log';\nimport { prepareRecordingData } from './prepareRecordingData';\nimport { prepareReplayEvent } from './prepareReplayEvent';\n\n/**\n * Send replay attachment using `fetch()`\n */\nexport async function sendReplayRequest({\n  recordingData,\n  replayId,\n  segmentId: segment_id,\n  eventContext,\n  timestamp,\n  session,\n}: SendReplayData): Promise<void | TransportMakeRequestResponse> {\n  const preparedRecordingData = prepareRecordingData({\n    recordingData,\n    headers: {\n      segment_id,\n    },\n  });\n\n  const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n  const client = getClient();\n  const scope = getCurrentScope();\n  const transport = client && client.getTransport();\n  const dsn = client && client.getDsn();\n\n  if (!client || !transport || !dsn || !session.sampled) {\n    return;\n  }\n\n  const baseEvent: ReplayEvent = {\n    type: REPLAY_EVENT_NAME,\n    replay_start_timestamp: initialTimestamp / 1000,\n    timestamp: timestamp / 1000,\n    error_ids: errorIds,\n    trace_ids: traceIds,\n    urls,\n    replay_id: replayId,\n    segment_id,\n    replay_type: session.sampled,\n  };\n\n  const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n  if (!replayEvent) {\n    // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n    client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n    logInfo('An event processor returned `null`, will not send event.');\n    return;\n  }\n\n  /*\n  For reference, the fully built event looks something like this:\n  {\n      \"type\": \"replay_event\",\n      \"timestamp\": 1670837008.634,\n      \"error_ids\": [\n          \"errorId\"\n      ],\n      \"trace_ids\": [\n          \"traceId\"\n      ],\n      \"urls\": [\n          \"https://example.com\"\n      ],\n      \"replay_id\": \"eventId\",\n      \"segment_id\": 3,\n      \"replay_type\": \"error\",\n      \"platform\": \"javascript\",\n      \"event_id\": \"eventId\",\n      \"environment\": \"production\",\n      \"sdk\": {\n          \"integrations\": [\n              \"BrowserTracing\",\n              \"Replay\"\n          ],\n          \"name\": \"sentry.javascript.browser\",\n          \"version\": \"7.25.0\"\n      },\n      \"sdkProcessingMetadata\": {},\n      \"contexts\": {\n      },\n  }\n  */\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete replayEvent.sdkProcessingMetadata;\n\n  const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n  let response: void | TransportMakeRequestResponse;\n\n  try {\n    response = await transport.send(envelope);\n  } catch (err) {\n    const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n    try {\n      // In case browsers don't allow this property to be writable\n      // @ts-expect-error This needs lib es2022 and newer\n      error.cause = err;\n    } catch {\n      // nothing to do\n    }\n    throw error;\n  }\n\n  // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n  if (!response) {\n    return response;\n  }\n\n  // If the status code is invalid, we want to immediately stop & not retry\n  if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n    throw new TransportStatusCodeError(response.statusCode);\n  }\n\n  const rateLimits = updateRateLimits({}, response);\n  if (isRateLimited(rateLimits, 'replay')) {\n    throw new RateLimitError(rateLimits);\n  }\n\n  return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nexport class TransportStatusCodeError extends Error {\n  public constructor(statusCode: number) {\n    super(`Transport returned status code ${statusCode}`);\n  }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nexport class RateLimitError extends Error {\n  public rateLimits: RateLimits;\n\n  public constructor(rateLimits: RateLimits) {\n    super('Rate limit hit');\n    this.rateLimits = rateLimits;\n  }\n}\n","import { captureException, setContext } from '@sentry/core';\n\nimport { RETRY_BASE_INTERVAL, RETRY_MAX_COUNT, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SendReplayData } from '../types';\nimport { RateLimitError, TransportStatusCodeError, sendReplayRequest } from './sendReplayRequest';\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nexport async function sendReplay(\n  replayData: SendReplayData,\n  retryConfig = {\n    count: 0,\n    interval: RETRY_BASE_INTERVAL,\n  },\n): Promise<unknown> {\n  const { recordingData, options } = replayData;\n\n  // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n  if (!recordingData.length) {\n    return;\n  }\n\n  try {\n    await sendReplayRequest(replayData);\n    return true;\n  } catch (err) {\n    if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n      throw err;\n    }\n\n    // Capture error for every failed replay\n    setContext('Replays', {\n      _retryCount: retryConfig.count,\n    });\n\n    if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n      captureException(err);\n    }\n\n    // If an error happened here, it's likely that uploading the attachment\n    // failed, we'll can retry with the same events payload\n    if (retryConfig.count >= RETRY_MAX_COUNT) {\n      const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n      try {\n        // In case browsers don't allow this property to be writable\n        // @ts-expect-error This needs lib es2022 and newer\n        error.cause = err;\n      } catch {\n        // nothing to do\n      }\n\n      throw error;\n    }\n\n    // will retry in intervals of 5, 10, 30\n    retryConfig.interval *= ++retryConfig.count;\n\n    return new Promise((resolve, reject) => {\n      setTimeout(async () => {\n        try {\n          await sendReplay(replayData, retryConfig);\n          resolve(true);\n        } catch (err) {\n          reject(err);\n        }\n      }, retryConfig.interval);\n    });\n  }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\n/**\n * Prepare the recording data ready to be sent.\n */\nexport function prepareRecordingData({\n  recordingData,\n  headers,\n}: {\n  recordingData: ReplayRecordingData;\n  headers: Record<string, unknown>;\n}): ReplayRecordingData {\n  let payloadWithSequence;\n\n  // XXX: newline is needed to separate sequence id from events\n  const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n  if (typeof recordingData === 'string') {\n    payloadWithSequence = `${replayHeaders}${recordingData}`;\n  } else {\n    const enc = new TextEncoder();\n    // XXX: newline is needed to separate sequence id from events\n    const sequence = enc.encode(replayHeaders);\n    // Merge the two Uint8Arrays\n    payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n    payloadWithSequence.set(sequence);\n    payloadWithSequence.set(recordingData, sequence.length);\n  }\n\n  return payloadWithSequence;\n}\n","import type { IntegrationIndex, Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, EventHint, ReplayEvent } from '@sentry/types';\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nexport async function prepareReplayEvent({\n  client,\n  scope,\n  replayId: event_id,\n  event,\n}: {\n  client: Client & { _integrations?: IntegrationIndex };\n  scope: Scope;\n  replayId: string;\n  event: ReplayEvent;\n}): Promise<ReplayEvent | null> {\n  const integrations =\n    typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n      ? Object.keys(client._integrations)\n      : undefined;\n\n  const eventHint: EventHint = { event_id, integrations };\n\n  if (client.emit) {\n    client.emit('preprocessEvent', event, eventHint);\n  }\n\n  const preparedEvent = (await prepareEvent(\n    client.getOptions(),\n    event,\n    eventHint,\n    scope,\n    client,\n    getIsolationScope(),\n  )) as ReplayEvent | null;\n\n  // If e.g. a global event processor returned null\n  if (!preparedEvent) {\n    return null;\n  }\n\n  // This normally happens in browser client \"_prepareEvent\"\n  // but since we do not use this private method from the client, but rather the plain import\n  // we need to do this manually.\n  preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n  // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n  const metadata = client.getSdkMetadata && client.getSdkMetadata();\n  const { name, version } = (metadata && metadata.sdk) || {};\n\n  preparedEvent.sdk = {\n    ...preparedEvent.sdk,\n    name: name || 'sentry.javascript.unknown',\n    version: version || '0.0.0',\n  };\n\n  return preparedEvent;\n}\n","import type { DsnComponents, ReplayEnvelope, ReplayEvent, ReplayRecordingData } from '@sentry/types';\nimport { createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader } from '@sentry/utils';\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nexport function createReplayEnvelope(\n  replayEvent: ReplayEvent,\n  recordingData: ReplayRecordingData,\n  dsn: DsnComponents,\n  tunnel?: string,\n): ReplayEnvelope {\n  return createEnvelope<ReplayEnvelope>(\n    createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n    [\n      [{ type: 'replay_event' }, replayEvent],\n      [\n        {\n          type: 'replay_recording',\n          // If string then we need to encode to UTF8, otherwise will have\n          // wrong size. TextEncoder has similar browser support to\n          // MutationObserver, although it does not accept IE11.\n          length:\n            typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n        },\n        recordingData,\n      ],\n    ],\n  );\n}\n","export const THROTTLED = '__THROTTLED';\nexport const SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function throttle<T extends (...rest: any[]) => any>(\n  fn: T,\n  maxCount: number,\n  durationSeconds: number,\n): (...rest: Parameters<T>) => ReturnType<T> | typeof THROTTLED | typeof SKIPPED {\n  const counter = new Map<number, number>();\n\n  const _cleanup = (now: number): void => {\n    const threshold = now - durationSeconds;\n    counter.forEach((_value, key) => {\n      if (key < threshold) {\n        counter.delete(key);\n      }\n    });\n  };\n\n  const _getTotalCount = (): number => {\n    return [...counter.values()].reduce((a, b) => a + b, 0);\n  };\n\n  let isThrottled = false;\n\n  return (...rest: Parameters<T>): ReturnType<T> | typeof THROTTLED | typeof SKIPPED => {\n    // Date in second-precision, which we use as basis for the throttling\n    const now = Math.floor(Date.now() / 1000);\n\n    // First, make sure to delete any old entries\n    _cleanup(now);\n\n    // If already over limit, do nothing\n    if (_getTotalCount() >= maxCount) {\n      const wasThrottled = isThrottled;\n      isThrottled = true;\n      return wasThrottled ? SKIPPED : THROTTLED;\n    }\n\n    isThrottled = false;\n    const count = counter.get(now) || 0;\n    counter.set(now, count + 1);\n\n    return fn(...rest);\n  };\n}\n","/* eslint-disable max-lines */ // TODO: We might want to split this file up\nimport { EventType, record } from '@sentry-internal/rrweb';\nimport {\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  captureException,\n  getClient,\n  getCurrentScope,\n  spanToJSON,\n} from '@sentry/core';\nimport type { ReplayRecordingMode, Transaction } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport {\n  BUFFER_CHECKOUT_TIME,\n  SESSION_IDLE_EXPIRE_DURATION,\n  SESSION_IDLE_PAUSE_DURATION,\n  SLOW_CLICK_SCROLL_TIMEOUT,\n  SLOW_CLICK_THRESHOLD,\n  WINDOW,\n} from './constants';\nimport { ClickDetector } from './coreHandlers/handleClick';\nimport { handleKeyboardEvent } from './coreHandlers/handleKeyboardEvent';\nimport { setupPerformanceObserver } from './coreHandlers/performanceObserver';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventBuffer } from './eventBuffer';\nimport { clearSession } from './session/clearSession';\nimport { loadOrCreateSession } from './session/loadOrCreateSession';\nimport { saveSession } from './session/saveSession';\nimport { shouldRefreshSession } from './session/shouldRefreshSession';\n\nimport type {\n  AddEventResult,\n  AddUpdateCallback,\n  AllPerformanceEntry,\n  AllPerformanceEntryData,\n  EventBuffer,\n  InternalEventContext,\n  PopEventContext,\n  RecordingEvent,\n  RecordingOptions,\n  ReplayBreadcrumbFrame,\n  ReplayCanvasIntegrationOptions,\n  ReplayContainer as ReplayContainerInterface,\n  ReplayPerformanceEntry,\n  ReplayPluginOptions,\n  SendBufferedReplayOptions,\n  Session,\n  SlowClickConfig,\n  Timeouts,\n} from './types';\nimport { ReplayEventTypeCustom } from './types';\nimport { addEvent, addEventSync } from './util/addEvent';\nimport { addGlobalListeners } from './util/addGlobalListeners';\nimport { addMemoryEntry } from './util/addMemoryEntry';\nimport { createBreadcrumb } from './util/createBreadcrumb';\nimport { createPerformanceEntries } from './util/createPerformanceEntries';\nimport { createPerformanceSpans } from './util/createPerformanceSpans';\nimport { debounce } from './util/debounce';\nimport { getHandleRecordingEmit } from './util/handleRecordingEmit';\nimport { isExpired } from './util/isExpired';\nimport { isSessionExpired } from './util/isSessionExpired';\nimport { logInfo, logInfoNextTick } from './util/log';\nimport { sendReplay } from './util/sendReplay';\nimport type { SKIPPED } from './util/throttle';\nimport { THROTTLED, throttle } from './util/throttle';\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nexport class ReplayContainer implements ReplayContainerInterface {\n  public eventBuffer: EventBuffer | null;\n\n  public performanceEntries: AllPerformanceEntry[];\n\n  public replayPerformanceEntries: ReplayPerformanceEntry<AllPerformanceEntryData>[];\n\n  public session: Session | undefined;\n\n  public clickDetector: ClickDetector | undefined;\n\n  /**\n   * Recording can happen in one of three modes:\n   *   - session: Record the whole session, sending it continuously\n   *   - buffer: Always keep the last 60s of recording, requires:\n   *     - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n   *     - or calling `flush()` to send the replay\n   */\n  public recordingMode: ReplayRecordingMode;\n\n  /**\n   * The current or last active transcation.\n   * This is only available when performance is enabled.\n   */\n  public lastTransaction?: Transaction;\n\n  /**\n   * These are here so we can overwrite them in tests etc.\n   * @hidden\n   */\n  public readonly timeouts: Timeouts;\n\n  private _throttledAddEvent: (\n    event: RecordingEvent,\n    isCheckout?: boolean,\n  ) => typeof THROTTLED | typeof SKIPPED | Promise<AddEventResult | null>;\n\n  /**\n   * Options to pass to `rrweb.record()`\n   */\n  private readonly _recordingOptions: RecordingOptions;\n\n  private readonly _options: ReplayPluginOptions;\n\n  private _performanceCleanupCallback?: () => void;\n\n  private _debouncedFlush: ReturnType<typeof debounce>;\n  private _flushLock: Promise<unknown> | undefined;\n\n  /**\n   * Timestamp of the last user activity. This lives across sessions.\n   */\n  private _lastActivity: number;\n\n  /**\n   * Is the integration currently active?\n   */\n  private _isEnabled: boolean;\n\n  /**\n   * Paused is a state where:\n   * - DOM Recording is not listening at all\n   * - Nothing will be added to event buffer (e.g. core SDK events)\n   */\n  private _isPaused: boolean;\n\n  /**\n   * Have we attached listeners to the core SDK?\n   * Note we have to track this as there is no way to remove instrumentation handlers.\n   */\n  private _hasInitializedCoreListeners: boolean;\n\n  /**\n   * Function to stop recording\n   */\n  private _stopRecording: ReturnType<typeof record> | undefined;\n\n  private _context: InternalEventContext;\n\n  /**\n   * Internal use for canvas recording options\n   */\n  private _canvas: ReplayCanvasIntegrationOptions | undefined;\n\n  public constructor({\n    options,\n    recordingOptions,\n  }: {\n    options: ReplayPluginOptions;\n    recordingOptions: RecordingOptions;\n  }) {\n    this.eventBuffer = null;\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n    this.recordingMode = 'session';\n    this.timeouts = {\n      sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n      sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n    } as const;\n    this._lastActivity = Date.now();\n    this._isEnabled = false;\n    this._isPaused = false;\n    this._hasInitializedCoreListeners = false;\n    this._context = {\n      errorIds: new Set(),\n      traceIds: new Set(),\n      urls: [],\n      initialTimestamp: Date.now(),\n      initialUrl: '',\n    };\n\n    this._recordingOptions = recordingOptions;\n    this._options = options;\n\n    this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n      maxWait: this._options.flushMaxDelay,\n    });\n\n    this._throttledAddEvent = throttle(\n      (event: RecordingEvent, isCheckout?: boolean) => addEvent(this, event, isCheckout),\n      // Max 300 events...\n      300,\n      // ... per 5s\n      5,\n    );\n\n    const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n    const slowClickConfig: SlowClickConfig | undefined = slowClickTimeout\n      ? {\n          threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n          timeout: slowClickTimeout,\n          scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n          ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n        }\n      : undefined;\n\n    if (slowClickConfig) {\n      this.clickDetector = new ClickDetector(this, slowClickConfig);\n    }\n  }\n\n  /** Get the event context. */\n  public getContext(): InternalEventContext {\n    return this._context;\n  }\n\n  /** If recording is currently enabled. */\n  public isEnabled(): boolean {\n    return this._isEnabled;\n  }\n\n  /** If recording is currently paused. */\n  public isPaused(): boolean {\n    return this._isPaused;\n  }\n\n  /**\n   * Determine if canvas recording is enabled\n   */\n  public isRecordingCanvas(): boolean {\n    return Boolean(this._canvas);\n  }\n\n  /** Get the replay integration options. */\n  public getOptions(): ReplayPluginOptions {\n    return this._options;\n  }\n\n  /**\n   * Initializes the plugin based on sampling configuration. Should not be\n   * called outside of constructor.\n   */\n  public initializeSampling(previousSessionId?: string): void {\n    const { errorSampleRate, sessionSampleRate } = this._options;\n\n    // If neither sample rate is > 0, then do nothing - user will need to call one of\n    // `start()` or `startBuffering` themselves.\n    if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n      return;\n    }\n\n    // Otherwise if there is _any_ sample rate set, try to load an existing\n    // session, or create a new one.\n    this._initializeSessionForSampling(previousSessionId);\n\n    if (!this.session) {\n      // This should not happen, something wrong has occurred\n      this._handleException(new Error('Unable to initialize and create session'));\n      return;\n    }\n\n    if (this.session.sampled === false) {\n      // This should only occur if `errorSampleRate` is 0 and was unsampled for\n      // session-based replay. In this case there is nothing to do.\n      return;\n    }\n\n    // If segmentId > 0, it means we've previously already captured this session\n    // In this case, we still want to continue in `session` recording mode\n    this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n    logInfoNextTick(\n      `[Replay] Starting replay in ${this.recordingMode} mode`,\n      this._options._experiments.traceInternals,\n    );\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start a replay regardless of sampling rate. Calling this will always\n   * create a new session. Will throw an error if replay is already in progress.\n   *\n   * Creates or loads a session, attaches listeners to varying events (DOM,\n   * _performanceObserver, Recording, Sentry SDK, etc)\n   */\n  public start(): void {\n    if (this._isEnabled && this.recordingMode === 'session') {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    if (this._isEnabled && this.recordingMode === 'buffer') {\n      throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n    }\n\n    logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n    // Required as user activity is initially set in\n    // constructor, so if `start()` is called after\n    // session idle expiration, a replay will not be\n    // created due to an idle timeout.\n    this._updateUserActivity();\n\n    const session = loadOrCreateSession(\n      {\n        maxReplayDuration: this._options.maxReplayDuration,\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        traceInternals: this._options._experiments.traceInternals,\n      },\n      {\n        stickySession: this._options.stickySession,\n        // This is intentional: create a new session-based replay when calling `start()`\n        sessionSampleRate: 1,\n        allowBuffering: false,\n      },\n    );\n\n    this.session = session;\n\n    this._initializeRecording();\n  }\n\n  /**\n   * Start replay buffering. Buffers until `flush()` is called or, if\n   * `replaysOnErrorSampleRate` > 0, an error occurs.\n   */\n  public startBuffering(): void {\n    if (this._isEnabled) {\n      throw new Error('Replay recording is already in progress');\n    }\n\n    logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n    const session = loadOrCreateSession(\n      {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n        traceInternals: this._options._experiments.traceInternals,\n      },\n      {\n        stickySession: this._options.stickySession,\n        sessionSampleRate: 0,\n        allowBuffering: true,\n      },\n    );\n\n    this.session = session;\n\n    this.recordingMode = 'buffer';\n    this._initializeRecording();\n  }\n\n  /**\n   * Start recording.\n   *\n   * Note that this will cause a new DOM checkout\n   */\n  public startRecording(): void {\n    try {\n      const canvasOptions = this._canvas;\n\n      this._stopRecording = record({\n        ...this._recordingOptions,\n        // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n        // Without this, it would record forever, until an error happens, which we don't want\n        // instead, we'll always keep the last 60 seconds of replay before an error happened\n        ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n        emit: getHandleRecordingEmit(this),\n        onMutation: this._onMutationHandler,\n        ...(canvasOptions\n          ? {\n              recordCanvas: canvasOptions.recordCanvas,\n              getCanvasManager: canvasOptions.getCanvasManager,\n              sampling: canvasOptions.sampling,\n              dataURLOptions: canvasOptions.dataURLOptions,\n            }\n          : {}),\n      });\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Stops the recording, if it was running.\n   *\n   * Returns true if it was previously stopped, or is now stopped,\n   * otherwise false.\n   */\n  public stopRecording(): boolean {\n    try {\n      if (this._stopRecording) {\n        this._stopRecording();\n        this._stopRecording = undefined;\n      }\n\n      return true;\n    } catch (err) {\n      this._handleException(err);\n      return false;\n    }\n  }\n\n  /**\n   * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n   * does not support a teardown\n   */\n  public async stop({ forceFlush = false, reason }: { forceFlush?: boolean; reason?: string } = {}): Promise<void> {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n    // enter into an infinite loop when `stop()` is called while flushing.\n    this._isEnabled = false;\n\n    try {\n      logInfo(\n        `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n        this._options._experiments.traceInternals,\n      );\n\n      this._removeListeners();\n      this.stopRecording();\n\n      this._debouncedFlush.cancel();\n      // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n      // `_isEnabled` state of the plugin since it was disabled above.\n      if (forceFlush) {\n        await this._flush({ force: true });\n      }\n\n      // After flush, destroy event buffer\n      this.eventBuffer && this.eventBuffer.destroy();\n      this.eventBuffer = null;\n\n      // Clear session from session storage, note this means if a new session\n      // is started after, it will not have `previousSessionId`\n      clearSession(this);\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Pause some replay functionality. See comments for `_isPaused`.\n   * This differs from stop as this only stops DOM recording, it is\n   * not as thorough of a shutdown as `stop()`.\n   */\n  public pause(): void {\n    if (this._isPaused) {\n      return;\n    }\n\n    this._isPaused = true;\n    this.stopRecording();\n\n    logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n  }\n\n  /**\n   * Resumes recording, see notes for `pause().\n   *\n   * Note that calling `startRecording()` here will cause a\n   * new DOM checkout.`\n   */\n  public resume(): void {\n    if (!this._isPaused || !this._checkSession()) {\n      return;\n    }\n\n    this._isPaused = false;\n    this.startRecording();\n\n    logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n  }\n\n  /**\n   * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n   * Unless `continueRecording` is false, the replay will continue to record and\n   * behave as a \"session\"-based replay.\n   *\n   * Otherwise, queue up a flush.\n   */\n  public async sendBufferedReplayOrFlush({ continueRecording = true }: SendBufferedReplayOptions = {}): Promise<void> {\n    if (this.recordingMode === 'session') {\n      return this.flushImmediate();\n    }\n\n    const activityTime = Date.now();\n\n    logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n    // Allow flush to complete before resuming as a session recording, otherwise\n    // the checkout from `startRecording` may be included in the payload.\n    // Prefer to keep the error replay as a separate (and smaller) segment\n    // than the session replay.\n    await this.flushImmediate();\n\n    const hasStoppedRecording = this.stopRecording();\n\n    if (!continueRecording || !hasStoppedRecording) {\n      return;\n    }\n\n    // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n    if ((this.recordingMode as ReplayRecordingMode) === 'session') {\n      return;\n    }\n\n    // Re-start recording in session-mode\n    this.recordingMode = 'session';\n\n    // Once this session ends, we do not want to refresh it\n    if (this.session) {\n      this._updateUserActivity(activityTime);\n      this._updateSessionActivity(activityTime);\n      this._maybeSaveSession();\n    }\n\n    this.startRecording();\n  }\n\n  /**\n   * We want to batch uploads of replay events. Save events only if\n   * `<flushMinDelay>` milliseconds have elapsed since the last event\n   * *OR* if `<flushMaxDelay>` milliseconds have elapsed.\n   *\n   * Accepts a callback to perform side-effects and returns true to stop batch\n   * processing and hand back control to caller.\n   */\n  public addUpdate(cb: AddUpdateCallback): void {\n    // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n    const cbResult = cb();\n\n    // If this option is turned on then we will only want to call `flush`\n    // explicitly\n    if (this.recordingMode === 'buffer') {\n      return;\n    }\n\n    // If callback is true, we do not want to continue with flushing -- the\n    // caller will need to handle it.\n    if (cbResult === true) {\n      return;\n    }\n\n    // addUpdate is called quite frequently - use _debouncedFlush so that it\n    // respects the flush delays and does not flush immediately\n    this._debouncedFlush();\n  }\n\n  /**\n   * Updates the user activity timestamp and resumes recording. This should be\n   * called in an event handler for a user action that we consider as the user\n   * being \"active\" (e.g. a mouse click).\n   */\n  public triggerUserActivity(): void {\n    this._updateUserActivity();\n\n    // This case means that recording was once stopped due to inactivity.\n    // Ensure that recording is resumed.\n    if (!this._stopRecording) {\n      // Create a new session, otherwise when the user action is flushed, it\n      // will get rejected due to an expired session.\n      if (!this._checkSession()) {\n        return;\n      }\n\n      // Note: This will cause a new DOM checkout\n      this.resume();\n      return;\n    }\n\n    // Otherwise... recording was never suspended, continue as normalish\n    this.checkAndHandleExpiredSession();\n\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Updates the user activity timestamp *without* resuming\n   * recording. Some user events (e.g. keydown) can be create\n   * low-value replays that only contain the keypress as a\n   * breadcrumb. Instead this would require other events to\n   * create a new replay after a session has expired.\n   */\n  public updateUserActivity(): void {\n    this._updateUserActivity();\n    this._updateSessionActivity();\n  }\n\n  /**\n   * Only flush if `this.recordingMode === 'session'`\n   */\n  public conditionalFlush(): Promise<void> {\n    if (this.recordingMode === 'buffer') {\n      return Promise.resolve();\n    }\n\n    return this.flushImmediate();\n  }\n\n  /**\n   * Flush using debounce flush\n   */\n  public flush(): Promise<void> {\n    return this._debouncedFlush() as Promise<void>;\n  }\n\n  /**\n   * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n   * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n   * cases of mulitple flushes happening closely together.\n   */\n  public flushImmediate(): Promise<void> {\n    this._debouncedFlush();\n    // `.flush` is provided by the debounced function, analogously to lodash.debounce\n    return this._debouncedFlush.flush() as Promise<void>;\n  }\n\n  /**\n   * Cancels queued up flushes.\n   */\n  public cancelFlush(): void {\n    this._debouncedFlush.cancel();\n  }\n\n  /** Get the current sesion (=replay) ID */\n  public getSessionId(): string | undefined {\n    return this.session && this.session.id;\n  }\n\n  /**\n   * Checks if recording should be stopped due to user inactivity. Otherwise\n   * check if session is expired and create a new session if so. Triggers a new\n   * full snapshot on new session.\n   *\n   * Returns true if session is not expired, false otherwise.\n   * @hidden\n   */\n  public checkAndHandleExpiredSession(): boolean | void {\n    // Prevent starting a new session if the last user activity is older than\n    // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n    // session+recording. This creates noisy replays that do not have much\n    // content in them.\n    if (\n      this._lastActivity &&\n      isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n      this.session &&\n      this.session.sampled === 'session'\n    ) {\n      // Pause recording only for session-based replays. Otherwise, resuming\n      // will create a new replay and will conflict with users who only choose\n      // to record error-based replays only. (e.g. the resumed replay will not\n      // contain a reference to an error)\n      this.pause();\n      return;\n    }\n\n    // --- There is recent user activity --- //\n    // This will create a new session if expired, based on expiry length\n    if (!this._checkSession()) {\n      // Check session handles the refreshing itself\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Capture some initial state that can change throughout the lifespan of the\n   * replay. This is required because otherwise they would be captured at the\n   * first flush.\n   */\n  public setInitialState(): void {\n    const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n    const url = `${WINDOW.location.origin}${urlPath}`;\n\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n\n    // Reset _context as well\n    this._clearContext();\n\n    this._context.initialUrl = url;\n    this._context.initialTimestamp = Date.now();\n    this._context.urls.push(url);\n  }\n\n  /**\n   * Add a breadcrumb event, that may be throttled.\n   * If it was throttled, we add a custom breadcrumb to indicate that.\n   */\n  public throttledAddEvent(\n    event: RecordingEvent,\n    isCheckout?: boolean,\n  ): typeof THROTTLED | typeof SKIPPED | Promise<AddEventResult | null> {\n    const res = this._throttledAddEvent(event, isCheckout);\n\n    // If this is THROTTLED, it means we have throttled the event for the first time\n    // In this case, we want to add a breadcrumb indicating that something was skipped\n    if (res === THROTTLED) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.throttled',\n      });\n\n      this.addUpdate(() => {\n        // Return `false` if the event _was_ added, as that means we schedule a flush\n        return !addEventSync(this, {\n          type: ReplayEventTypeCustom,\n          timestamp: breadcrumb.timestamp || 0,\n          data: {\n            tag: 'breadcrumb',\n            payload: breadcrumb,\n            metric: true,\n          },\n        });\n      });\n    }\n\n    return res;\n  }\n\n  /**\n   * This will get the parametrized route name of the current page.\n   * This is only available if performance is enabled, and if an instrumented router is used.\n   */\n  public getCurrentRoute(): string | undefined {\n    // eslint-disable-next-line deprecation/deprecation\n    const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n    const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n    const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n    if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n      return undefined;\n    }\n\n    return spanToJSON(lastTransaction).description;\n  }\n\n  /**\n   * Initialize and start all listeners to varying events (DOM,\n   * Performance Observer, Recording, Sentry SDK, etc)\n   */\n  private _initializeRecording(): void {\n    this.setInitialState();\n\n    // this method is generally called on page load or manually - in both cases\n    // we should treat it as an activity\n    this._updateSessionActivity();\n\n    this.eventBuffer = createEventBuffer({\n      useCompression: this._options.useCompression,\n      workerUrl: this._options.workerUrl,\n    });\n\n    this._removeListeners();\n    this._addListeners();\n\n    // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n    this._isEnabled = true;\n    this._isPaused = false;\n\n    this.startRecording();\n  }\n\n  /** A wrapper to conditionally capture exceptions. */\n  private _handleException(error: unknown): void {\n    DEBUG_BUILD && logger.error('[Replay]', error);\n\n    if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n      captureException(error);\n    }\n  }\n\n  /**\n   * Loads (or refreshes) the current session.\n   */\n  private _initializeSessionForSampling(previousSessionId?: string): void {\n    // Whenever there is _any_ error sample rate, we always allow buffering\n    // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n    const allowBuffering = this._options.errorSampleRate > 0;\n\n    const session = loadOrCreateSession(\n      {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n        traceInternals: this._options._experiments.traceInternals,\n        previousSessionId,\n      },\n      {\n        stickySession: this._options.stickySession,\n        sessionSampleRate: this._options.sessionSampleRate,\n        allowBuffering,\n      },\n    );\n\n    this.session = session;\n  }\n\n  /**\n   * Checks and potentially refreshes the current session.\n   * Returns false if session is not recorded.\n   */\n  private _checkSession(): boolean {\n    // If there is no session yet, we do not want to refresh anything\n    // This should generally not happen, but to be safe....\n    if (!this.session) {\n      return false;\n    }\n\n    const currentSession = this.session;\n\n    if (\n      shouldRefreshSession(currentSession, {\n        sessionIdleExpire: this.timeouts.sessionIdleExpire,\n        maxReplayDuration: this._options.maxReplayDuration,\n      })\n    ) {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this._refreshSession(currentSession);\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Refresh a session with a new one.\n   * This stops the current session (without forcing a flush, as that would never work since we are expired),\n   * and then does a new sampling based on the refreshed session.\n   */\n  private async _refreshSession(session: Session): Promise<void> {\n    if (!this._isEnabled) {\n      return;\n    }\n    await this.stop({ reason: 'refresh session' });\n    this.initializeSampling(session.id);\n  }\n\n  /**\n   * Adds listeners to record events for the replay\n   */\n  private _addListeners(): void {\n    try {\n      WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n      WINDOW.addEventListener('blur', this._handleWindowBlur);\n      WINDOW.addEventListener('focus', this._handleWindowFocus);\n      WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.addListeners();\n      }\n\n      // There is no way to remove these listeners, so ensure they are only added once\n      if (!this._hasInitializedCoreListeners) {\n        addGlobalListeners(this);\n\n        this._hasInitializedCoreListeners = true;\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n\n    this._performanceCleanupCallback = setupPerformanceObserver(this);\n  }\n\n  /**\n   * Cleans up listeners that were created in `_addListeners`\n   */\n  private _removeListeners(): void {\n    try {\n      WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n      WINDOW.removeEventListener('blur', this._handleWindowBlur);\n      WINDOW.removeEventListener('focus', this._handleWindowFocus);\n      WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n      if (this.clickDetector) {\n        this.clickDetector.removeListeners();\n      }\n\n      if (this._performanceCleanupCallback) {\n        this._performanceCleanupCallback();\n      }\n    } catch (err) {\n      this._handleException(err);\n    }\n  }\n\n  /**\n   * Handle when visibility of the page content changes. Opening a new tab will\n   * cause the state to change to hidden because of content of current page will\n   * be hidden. Likewise, moving a different window to cover the contents of the\n   * page will also trigger a change to a hidden state.\n   */\n  private _handleVisibilityChange: () => void = () => {\n    if (WINDOW.document.visibilityState === 'visible') {\n      this._doChangeToForegroundTasks();\n    } else {\n      this._doChangeToBackgroundTasks();\n    }\n  };\n\n  /**\n   * Handle when page is blurred\n   */\n  private _handleWindowBlur: () => void = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.blur',\n    });\n\n    // Do not count blur as a user action -- it's part of the process of them\n    // leaving the page\n    this._doChangeToBackgroundTasks(breadcrumb);\n  };\n\n  /**\n   * Handle when page is focused\n   */\n  private _handleWindowFocus: () => void = () => {\n    const breadcrumb = createBreadcrumb({\n      category: 'ui.focus',\n    });\n\n    // Do not count focus as a user action -- instead wait until they focus and\n    // interactive with page\n    this._doChangeToForegroundTasks(breadcrumb);\n  };\n\n  /** Ensure page remains active when a key is pressed. */\n  private _handleKeyboardEvent: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n    handleKeyboardEvent(this, event);\n  };\n\n  /**\n   * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n   */\n  private _doChangeToBackgroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n    if (!this.session) {\n      return;\n    }\n\n    const expired = isSessionExpired(this.session, {\n      maxReplayDuration: this._options.maxReplayDuration,\n      sessionIdleExpire: this.timeouts.sessionIdleExpire,\n    });\n\n    if (expired) {\n      return;\n    }\n\n    if (breadcrumb) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Send replay when the page/tab becomes hidden. There is no reason to send\n    // replay if it becomes visible, since no actions we care about were done\n    // while it was hidden\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    void this.conditionalFlush();\n  }\n\n  /**\n   * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n   */\n  private _doChangeToForegroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n    if (!this.session) {\n      return;\n    }\n\n    const isSessionActive = this.checkAndHandleExpiredSession();\n\n    if (!isSessionActive) {\n      // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n      // ms, we will re-use the existing session, otherwise create a new\n      // session\n      logInfo('[Replay] Document has become active, but session has expired');\n      return;\n    }\n\n    if (breadcrumb) {\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n  }\n\n  /**\n   * Update user activity (across session lifespans)\n   */\n  private _updateUserActivity(_lastActivity: number = Date.now()): void {\n    this._lastActivity = _lastActivity;\n  }\n\n  /**\n   * Updates the session's last activity timestamp\n   */\n  private _updateSessionActivity(_lastActivity: number = Date.now()): void {\n    if (this.session) {\n      this.session.lastActivity = _lastActivity;\n      this._maybeSaveSession();\n    }\n  }\n\n  /**\n   * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n   */\n  private _createCustomBreadcrumb(breadcrumb: ReplayBreadcrumbFrame): void {\n    this.addUpdate(() => {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.throttledAddEvent({\n        type: EventType.Custom,\n        timestamp: breadcrumb.timestamp || 0,\n        data: {\n          tag: 'breadcrumb',\n          payload: breadcrumb,\n        },\n      });\n    });\n  }\n\n  /**\n   * Observed performance events are added to `this.performanceEntries`. These\n   * are included in the replay event before it is finished and sent to Sentry.\n   */\n  private _addPerformanceEntries(): Promise<Array<AddEventResult | null>> {\n    const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n    this.performanceEntries = [];\n    this.replayPerformanceEntries = [];\n\n    return Promise.all(createPerformanceSpans(this, performanceEntries));\n  }\n\n  /**\n   * Clear _context\n   */\n  private _clearContext(): void {\n    // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n    this._context.errorIds.clear();\n    this._context.traceIds.clear();\n    this._context.urls = [];\n  }\n\n  /** Update the initial timestamp based on the buffer content. */\n  private _updateInitialTimestampFromEventBuffer(): void {\n    const { session, eventBuffer } = this;\n    if (!session || !eventBuffer) {\n      return;\n    }\n\n    // we only ever update this on the initial segment\n    if (session.segmentId) {\n      return;\n    }\n\n    const earliestEvent = eventBuffer.getEarliestTimestamp();\n    if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n      this._context.initialTimestamp = earliestEvent;\n    }\n  }\n\n  /**\n   * Return and clear _context\n   */\n  private _popEventContext(): PopEventContext {\n    const _context = {\n      initialTimestamp: this._context.initialTimestamp,\n      initialUrl: this._context.initialUrl,\n      errorIds: Array.from(this._context.errorIds),\n      traceIds: Array.from(this._context.traceIds),\n      urls: this._context.urls,\n    };\n\n    this._clearContext();\n\n    return _context;\n  }\n\n  /**\n   * Flushes replay event buffer to Sentry.\n   *\n   * Performance events are only added right before flushing - this is\n   * due to the buffered performance observer events.\n   *\n   * Should never be called directly, only by `flush`\n   */\n  private async _runFlush(): Promise<void> {\n    const replayId = this.getSessionId();\n\n    if (!this.session || !this.eventBuffer || !replayId) {\n      DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n      return;\n    }\n\n    await this._addPerformanceEntries();\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n      return;\n    }\n\n    // Only attach memory event if eventBuffer is not empty\n    await addMemoryEntry(this);\n\n    // Check eventBuffer again, as it could have been stopped in the meanwhile\n    if (!this.eventBuffer) {\n      return;\n    }\n\n    // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n    if (replayId !== this.getSessionId()) {\n      return;\n    }\n\n    try {\n      // This uses the data from the eventBuffer, so we need to call this before `finish()\n      this._updateInitialTimestampFromEventBuffer();\n\n      const timestamp = Date.now();\n\n      // Check total duration again, to avoid sending outdated stuff\n      // We leave 30s wiggle room to accomodate late flushing etc.\n      // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n      if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30_000) {\n        throw new Error('Session is too long, not sending replay');\n      }\n\n      const eventContext = this._popEventContext();\n      // Always increment segmentId regardless of outcome of sending replay\n      const segmentId = this.session.segmentId++;\n      this._maybeSaveSession();\n\n      // Note this empties the event buffer regardless of outcome of sending replay\n      const recordingData = await this.eventBuffer.finish();\n\n      await sendReplay({\n        replayId,\n        recordingData,\n        segmentId,\n        eventContext,\n        session: this.session,\n        options: this.getOptions(),\n        timestamp,\n      });\n    } catch (err) {\n      this._handleException(err);\n\n      // This means we retried 3 times and all of them failed,\n      // or we ran into a problem we don't want to retry, like rate limiting.\n      // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.stop({ reason: 'sendReplay' });\n\n      const client = getClient();\n\n      if (client) {\n        client.recordDroppedEvent('send_error', 'replay');\n      }\n    }\n  }\n\n  /**\n   * Flush recording data to Sentry. Creates a lock so that only a single flush\n   * can be active at a time. Do not call this directly.\n   */\n  private _flush = async ({\n    force = false,\n  }: {\n    /**\n     * If true, flush while ignoring the `_isEnabled` state of\n     * Replay integration. (By default, flush is noop if integration\n     * is stopped).\n     */\n    force?: boolean;\n  } = {}): Promise<void> => {\n    if (!this._isEnabled && !force) {\n      // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n      return;\n    }\n\n    if (!this.checkAndHandleExpiredSession()) {\n      DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n      return;\n    }\n\n    if (!this.session) {\n      // should never happen, as we would have bailed out before\n      return;\n    }\n\n    const start = this.session.started;\n    const now = Date.now();\n    const duration = now - start;\n\n    // A flush is about to happen, cancel any queued flushes\n    this._debouncedFlush.cancel();\n\n    // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n    // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n    const tooShort = duration < this._options.minReplayDuration;\n    const tooLong = duration > this._options.maxReplayDuration + 5_000;\n    if (tooShort || tooLong) {\n      logInfo(\n        `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n          tooShort ? 'short' : 'long'\n        }, not sending replay.`,\n        this._options._experiments.traceInternals,\n      );\n\n      if (tooShort) {\n        this._debouncedFlush();\n      }\n      return;\n    }\n\n    const eventBuffer = this.eventBuffer;\n    if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n      logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n      // TODO FN: Evaluate if we want to stop here, or remove this again?\n    }\n\n    // this._flushLock acts as a lock so that future calls to `_flush()`\n    // will be blocked until this promise resolves\n    if (!this._flushLock) {\n      this._flushLock = this._runFlush();\n      await this._flushLock;\n      this._flushLock = undefined;\n      return;\n    }\n\n    // Wait for previous flush to finish, then call the debounced `_flush()`.\n    // It's possible there are other flush requests queued and waiting for it\n    // to resolve. We want to reduce all outstanding requests (as well as any\n    // new flush requests that occur within a second of the locked flush\n    // completing) into a single flush.\n\n    try {\n      await this._flushLock;\n    } catch (err) {\n      DEBUG_BUILD && logger.error(err);\n    } finally {\n      this._debouncedFlush();\n    }\n  };\n\n  /** Save the session, if it is sticky */\n  private _maybeSaveSession(): void {\n    if (this.session && this._options.stickySession) {\n      saveSession(this.session);\n    }\n  }\n\n  /** Handler for rrweb.record.onMutation */\n  private _onMutationHandler = (mutations: unknown[]): boolean => {\n    const count = mutations.length;\n\n    const mutationLimit = this._options.mutationLimit;\n    const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n    const overMutationLimit = mutationLimit && count > mutationLimit;\n\n    // Create a breadcrumb if a lot of mutations happen at the same time\n    // We can show this in the UI as an information with potential performance improvements\n    if (count > mutationBreadcrumbLimit || overMutationLimit) {\n      const breadcrumb = createBreadcrumb({\n        category: 'replay.mutations',\n        data: {\n          count,\n          limit: overMutationLimit,\n        },\n      });\n      this._createCustomBreadcrumb(breadcrumb);\n    }\n\n    // Stop replay if over the mutation limit\n    if (overMutationLimit) {\n      // This should never reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n      return false;\n    }\n\n    // `true` means we use the regular mutation handling by rrweb\n    return true;\n  };\n}\n","type DebouncedCallback = {\n  (): void | unknown;\n  flush: () => void | unknown;\n  cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = { maxWait?: number };\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n *          debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n *          was already invoked in the meantime, return @param func's return value.\n *          The debounced function has two additional properties:\n *          - `flush`: Invokes the debounced function immediately and returns its return value\n *          - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n  let callbackReturnValue: unknown;\n\n  let timerId: ReturnType<typeof setTimeout> | undefined;\n  let maxTimerId: ReturnType<typeof setTimeout> | undefined;\n\n  const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n  function invokeFunc(): unknown {\n    cancelTimers();\n    callbackReturnValue = func();\n    return callbackReturnValue;\n  }\n\n  function cancelTimers(): void {\n    timerId !== undefined && clearTimeout(timerId);\n    maxTimerId !== undefined && clearTimeout(maxTimerId);\n    timerId = maxTimerId = undefined;\n  }\n\n  function flush(): unknown {\n    if (timerId !== undefined || maxTimerId !== undefined) {\n      return invokeFunc();\n    }\n    return callbackReturnValue;\n  }\n\n  function debounced(): unknown {\n    if (timerId) {\n      clearTimeout(timerId);\n    }\n    timerId = setTimeout(invokeFunc, wait);\n\n    if (maxWait && maxTimerId === undefined) {\n      maxTimerId = setTimeout(invokeFunc, maxWait);\n    }\n\n    return callbackReturnValue;\n  }\n\n  debounced.cancel = cancelTimers;\n  debounced.flush = flush;\n  return debounced;\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../../src/constants';\nimport type { ReplayContainer } from '../../src/types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nexport function clearSession(replay: ReplayContainer): void {\n  deleteSession();\n  replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession(): void {\n  if (!hasSessionStorage()) {\n    return;\n  }\n\n  try {\n    WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n  } catch {\n    // Ignore potential SecurityError exceptions\n  }\n}\n","import { getWorkerURL } from '@sentry-internal/replay-worker';\n\nimport type { EventBuffer } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferProxy } from './EventBufferProxy';\n\ninterface CreateEventBufferParams {\n  useCompression: boolean;\n  workerUrl?: string;\n}\n\n// Treeshakable guard to remove the code of the included compression worker\ndeclare const __SENTRY_EXCLUDE_REPLAY_WORKER__: boolean;\n\n/**\n * Create an event buffer for replays.\n */\nexport function createEventBuffer({\n  useCompression,\n  workerUrl: customWorkerUrl,\n}: CreateEventBufferParams): EventBuffer {\n  if (\n    useCompression &&\n    // eslint-disable-next-line no-restricted-globals\n    window.Worker\n  ) {\n    const worker = _loadWorker(customWorkerUrl);\n\n    if (worker) {\n      return worker;\n    }\n  }\n\n  logInfo('[Replay] Using simple buffer');\n  return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl?: string): EventBufferProxy | void {\n  try {\n    const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n    if (!workerUrl) {\n      return;\n    }\n\n    logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n    const worker = new Worker(workerUrl);\n    return new EventBufferProxy(worker);\n  } catch (error) {\n    logInfo('[Replay] Failed to create compression worker');\n    // Fall back to use simple event buffer array\n  }\n}\n\nfunction _getWorkerUrl(): string {\n  if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n    return getWorkerURL();\n  }\n\n  return '';\n}\n","import r from\"./worker\";function e(){const e=new Blob([r]);return URL.createObjectURL(e)}export{e as getWorkerURL};\n","export default `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<<t[a-1];var s=new r(i[30]);for(a=1;a<30;++a)for(var o=i[a];o<i[a+1];++o)s[o]=o-i[a]<<5|a;return{b:i,r:s}},o=s(e,2),f=o.b,h=o.r;f[28]=258,h[258]=28;for(var l=s(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a<i;++a)t[a]&&++s[t[a]-1];var o,f=new n(r);for(a=1;a<r;++a)f[a]=f[a-1]+s[a-1]<<1;if(e){o=new n(1<<r);var h=15-r;for(a=0;a<i;++a)if(t[a])for(var l=a<<4|t[a],c=r-t[a],v=f[t[a]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>h]=l}else for(o=new n(i),a=0;a<i;++a)t[a]&&(o[a]=u[f[t[a]-1]++]>>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;a<r.length;++a)r[a]&&i.push({s:a,f:r[a]});var s=i.length,o=i.slice();if(!s)return{t:F,l:0};if(1==s){var f=new t(i[0].s+1);return f[i[0].s]=1,{t:f,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:h.f+l.f,l:h,r:l};c!=s-1;)h=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:h.f+l.f,l:h,r:l};var d=o[0].s;for(a=1;a<s;++a)o[a].s>d&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<<y;for(o.sort((function(t,n){return g[n.s]-g[t.s]||t.f-n.f}));a<s;++a){var b=o[a].s;if(!(g[b]>e))break;p+=m-(1<<w-g[b]),g[b]=e}for(p>>=y;p>0;){var M=o[a].s;g[M]<e?p-=1<<e-g[M]++-1:++a}for(;a>=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a<e;++a)t[i+a+4]=r[a];return 8*(i+4+e)},C=function(t,r,s,o,f,h,l,u,c,v,m){z(r,m++,s),++f[256];for(var b=_(f,15),M=b.t,E=b.l,x=_(h,15),C=x.t,U=x.l,F=D(M),I=F.c,S=F.n,L=D(C),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=_(q,7),H=G.t,J=G.l,K=19;K>4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(C,U,0),R=C;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[a[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B<u;++B){var rt=o[B];if(rt>255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s<o;++s)i+=e+=r[s];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<<o)-1,A=c.p||new n(32768),_=c.h||new n(z+1),x=Math.ceil(o/3),D=2*x,T=function(t){return(a[t]^a[t+1]<<x^a[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=_[H];if(A[J]=K,_[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$<Z&&a[j+$]==a[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-A[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=a[j],++I[a[j]];p=C(a,g,w,F,I,S,O,q,G,j-G,p),w||(c.r=7&p|g[p/8|0]<<3,p-=7,c.h=_,c.p=A,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+w;j+=65535){var st=j+65535;st>=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i<n.length;++i)e[i]=n.charCodeAt(i);return e}if(G)return G.encode(n);var a=n.length,s=new t(n.length+(n.length>>1)),o=0,f=function(t){s[o++]=t};for(i=0;i<a;++i){if(o+5>s.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r<e;r++)n+=t[r].length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n","import type { HandlerDataHistory } from '@sentry/types';\n\nimport type { HistoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from '../util/createPerformanceSpans';\n\nfunction handleHistory(handlerData: HandlerDataHistory): ReplayPerformanceEntry<HistoryData> {\n  const { from, to } = handlerData;\n\n  const now = Date.now() / 1000;\n\n  return {\n    type: 'navigation.push',\n    start: now,\n    end: now,\n    name: to,\n    data: {\n      previous: from,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nexport function handleHistorySpanListener(replay: ReplayContainer): (handlerData: HandlerDataHistory) => void {\n  return (handlerData: HandlerDataHistory) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleHistory(handlerData);\n\n    if (result === null) {\n      return;\n    }\n\n    // Need to collect visited URLs\n    replay.getContext().urls.push(result.name);\n    replay.triggerUserActivity();\n\n    replay.addUpdate(() => {\n      createPerformanceSpans(replay, [result]);\n      // Returning false to flush\n      return false;\n    });\n  };\n}\n","import { getClient } from '@sentry/core';\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  FetchBreadcrumbData,\n  TextEncoderInternal,\n  XhrBreadcrumbData,\n} from '@sentry/types';\nimport { addFetchInstrumentationHandler, addXhrInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { FetchHint, ReplayContainer, ReplayNetworkOptions, XhrHint } from '../types';\nimport { handleFetchSpanListener } from './handleFetch';\nimport { handleXhrSpanListener } from './handleXhr';\nimport { captureFetchBreadcrumbToReplay, enrichFetchBreadcrumb } from './util/fetchUtils';\nimport { captureXhrBreadcrumbToReplay, enrichXhrBreadcrumb } from './util/xhrUtils';\n\ninterface ExtendedNetworkBreadcrumbsOptions extends ReplayNetworkOptions {\n  replay: ReplayContainer;\n  textEncoder: TextEncoderInternal;\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n *   (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nexport function handleNetworkBreadcrumbs(replay: ReplayContainer): void {\n  const client = getClient();\n\n  try {\n    const textEncoder = new TextEncoder();\n\n    const {\n      networkDetailAllowUrls,\n      networkDetailDenyUrls,\n      networkCaptureBodies,\n      networkRequestHeaders,\n      networkResponseHeaders,\n    } = replay.getOptions();\n\n    const options: ExtendedNetworkBreadcrumbsOptions = {\n      replay,\n      textEncoder,\n      networkDetailAllowUrls,\n      networkDetailDenyUrls,\n      networkCaptureBodies,\n      networkRequestHeaders,\n      networkResponseHeaders,\n    };\n\n    if (client && client.on) {\n      client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n    } else {\n      // Fallback behavior\n      addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n      addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n    }\n  } catch {\n    // Do nothing\n  }\n}\n\n/** just exported for tests */\nexport function beforeAddNetworkBreadcrumb(\n  options: ExtendedNetworkBreadcrumbsOptions,\n  breadcrumb: Breadcrumb,\n  hint?: BreadcrumbHint,\n): void {\n  if (!breadcrumb.data) {\n    return;\n  }\n\n  try {\n    if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n      // This call should not reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n\n    if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n      // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n      // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n      // So any async mutations to it will not be reflected in the final breadcrumb\n      enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n      // This call should not reject\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n    }\n  } catch (e) {\n    DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n  }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: XhrBreadcrumbData } {\n  return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: FetchBreadcrumbData } {\n  return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint?: BreadcrumbHint): hint is XhrHint {\n  return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint?: BreadcrumbHint): hint is FetchHint {\n  return hint && hint.response;\n}\n","import type { Breadcrumb, TextEncoderInternal, XhrBreadcrumbData } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n  NetworkMetaWarning,\n  ReplayContainer,\n  ReplayNetworkOptions,\n  ReplayNetworkRequestData,\n  XhrHint,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n  buildNetworkRequestOrResponse,\n  buildSkippedNetworkRequestOrResponse,\n  getAllowedHeaders,\n  getBodySize,\n  getBodyString,\n  makeNetworkReplayBreadcrumb,\n  mergeWarning,\n  parseContentLengthHeader,\n  urlMatches,\n} from './networkUtils';\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureXhrBreadcrumbToReplay(\n  breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n  hint: Partial<XhrHint>,\n  options: ReplayNetworkOptions & { replay: ReplayContainer },\n): Promise<void> {\n  try {\n    const data = _prepareXhrData(breadcrumb, hint, options);\n\n    // Create a replay performance entry from this breadcrumb\n    const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n    addNetworkBreadcrumb(options.replay, result);\n  } catch (error) {\n    DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n  }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichXhrBreadcrumb(\n  breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n  hint: Partial<XhrHint>,\n  options: { textEncoder: TextEncoderInternal },\n): void {\n  const { xhr, input } = hint;\n\n  if (!xhr) {\n    return;\n  }\n\n  const reqSize = getBodySize(input, options.textEncoder);\n  const resSize = xhr.getResponseHeader('content-length')\n    ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n    : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n  if (reqSize !== undefined) {\n    breadcrumb.data.request_body_size = reqSize;\n  }\n  if (resSize !== undefined) {\n    breadcrumb.data.response_body_size = resSize;\n  }\n}\n\nfunction _prepareXhrData(\n  breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n  hint: Partial<XhrHint>,\n  options: ReplayNetworkOptions,\n): ReplayNetworkRequestData | null {\n  const now = Date.now();\n  const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n  const {\n    url,\n    method,\n    status_code: statusCode = 0,\n    request_body_size: requestBodySize,\n    response_body_size: responseBodySize,\n  } = breadcrumb.data;\n\n  if (!url) {\n    return null;\n  }\n\n  if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n    const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n    const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n    return {\n      startTimestamp,\n      endTimestamp,\n      url,\n      method,\n      statusCode,\n      request,\n      response,\n    };\n  }\n\n  const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n  const networkRequestHeaders = xhrInfo\n    ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n    : {};\n  const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n  const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n  const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n  const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n  const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n  return {\n    startTimestamp,\n    endTimestamp,\n    url,\n    method,\n    statusCode,\n    request: requestWarning ? mergeWarning(request, requestWarning) : request,\n    response: responseWarning ? mergeWarning(response, responseWarning) : response,\n  };\n}\n\nfunction getResponseHeaders(xhr: XMLHttpRequest): Record<string, string> {\n  const headers = xhr.getAllResponseHeaders();\n\n  if (!headers) {\n    return {};\n  }\n\n  return headers.split('\\r\\n').reduce((acc: Record<string, string>, line: string) => {\n    const [key, value] = line.split(': ');\n    acc[key.toLowerCase()] = value;\n    return acc;\n  }, {});\n}\n\nfunction _getXhrResponseBody(xhr: XMLHttpRequest): [string | undefined, NetworkMetaWarning?] {\n  // We collect errors that happen, but only log them if we can't get any response body\n  const errors: unknown[] = [];\n\n  try {\n    return [xhr.responseText];\n  } catch (e) {\n    errors.push(e);\n  }\n\n  // Try to manually parse the response body, if responseText fails\n  try {\n    return _parseXhrResponse(xhr.response, xhr.responseType);\n  } catch (e) {\n    errors.push(e);\n  }\n\n  DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n  return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nexport function _parseXhrResponse(\n  body: XMLHttpRequest['response'],\n  responseType: XMLHttpRequest['responseType'],\n): [string | undefined, NetworkMetaWarning?] {\n  try {\n    if (typeof body === 'string') {\n      return [body];\n    }\n\n    if (body instanceof Document) {\n      return [body.body.outerHTML];\n    }\n\n    if (responseType === 'json' && body && typeof body === 'object') {\n      return [JSON.stringify(body)];\n    }\n\n    if (!body) {\n      return [undefined];\n    }\n  } catch {\n    DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n    return [undefined, 'BODY_PARSE_ERROR'];\n  }\n\n  DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n  return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n  body: XMLHttpRequest['response'],\n  responseType: XMLHttpRequest['responseType'],\n  textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n  try {\n    const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n    return getBodySize(bodyStr, textEncoder);\n  } catch {\n    return undefined;\n  }\n}\n","import type { HandlerDataFetch } from '@sentry/types';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleFetch(handlerData: HandlerDataFetch): null | ReplayPerformanceEntry<NetworkRequestData> {\n  const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n  if (!endTimestamp) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url } = fetchData;\n\n  return {\n    type: 'resource.fetch',\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    name: url,\n    data: {\n      method,\n      statusCode: response ? (response as Response).status : undefined,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nexport function handleFetchSpanListener(replay: ReplayContainer): (handlerData: HandlerDataFetch) => void {\n  return (handlerData: HandlerDataFetch) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleFetch(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n","import type { HandlerDataXhr } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY } from '@sentry/utils';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleXhr(handlerData: HandlerDataXhr): ReplayPerformanceEntry<NetworkRequestData> | null {\n  const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n  const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n  if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n    return null;\n  }\n\n  // This is only used as a fallback, so we know the body sizes are never set here\n  const { method, url, status_code: statusCode } = sentryXhrData;\n\n  if (url === undefined) {\n    return null;\n  }\n\n  return {\n    type: 'resource.xhr',\n    name: url,\n    start: startTimestamp / 1000,\n    end: endTimestamp / 1000,\n    data: {\n      method,\n      statusCode,\n    },\n  };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nexport function handleXhrSpanListener(replay: ReplayContainer): (handlerData: HandlerDataXhr) => void {\n  return (handlerData: HandlerDataXhr) => {\n    if (!replay.isEnabled()) {\n      return;\n    }\n\n    const result = handleXhr(handlerData);\n\n    addNetworkBreadcrumb(replay, result);\n  };\n}\n","import type { Event, EventHint } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isFeedbackEvent, isReplayEvent, isTransactionEvent } from '../util/eventUtils';\nimport { isRrwebError } from '../util/isRrwebError';\nimport { handleAfterSendEvent } from './handleAfterSendEvent';\nimport { addFeedbackBreadcrumb } from './util/addFeedbackBreadcrumb';\nimport { shouldSampleForBufferEvent } from './util/shouldSampleForBufferEvent';\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nexport function handleGlobalEventListener(\n  replay: ReplayContainer,\n  includeAfterSendEventHandling = false,\n): (event: Event, hint: EventHint) => Event | null {\n  const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n  return Object.assign(\n    (event: Event, hint: EventHint) => {\n      // Do nothing if replay has been disabled\n      if (!replay.isEnabled()) {\n        return event;\n      }\n\n      if (isReplayEvent(event)) {\n        // Replays have separate set of breadcrumbs, do not include breadcrumbs\n        // from core SDK\n        delete event.breadcrumbs;\n        return event;\n      }\n\n      // We only want to handle errors, transactions, and feedbacks, nothing else\n      if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n        return event;\n      }\n\n      // Ensure we do not add replay_id if the session is expired\n      const isSessionActive = replay.checkAndHandleExpiredSession();\n      if (!isSessionActive) {\n        return event;\n      }\n\n      if (isFeedbackEvent(event)) {\n        // This should never reject\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        replay.flush();\n        event.contexts.feedback.replay_id = replay.getSessionId();\n        // Add a replay breadcrumb for this piece of feedback\n        addFeedbackBreadcrumb(replay, event);\n        return event;\n      }\n\n      // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n      // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n      if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n        DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n        return null;\n      }\n\n      // When in buffer mode, we decide to sample here.\n      // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n      // And convert the buffer session to a full session\n      const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n      // Tag errors if it has been sampled in buffer mode, or if it is session mode\n      // Only tag transactions if in session mode\n      const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n      if (shouldTagReplayId) {\n        event.tags = { ...event.tags, replayId: replay.getSessionId() };\n      }\n\n      // In cases where a custom client is used that does not support the new hooks (yet),\n      // we manually call this hook method here\n      if (afterSendHandler) {\n        // Pretend the error had a 200 response so we always capture it\n        afterSendHandler(event, { statusCode: 200 });\n      }\n\n      return event;\n    },\n    { id: 'Replay' },\n  );\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { FeedbackEvent } from '@sentry/types';\n\nimport type { ReplayBreadcrumbFrameEvent, ReplayContainer } from '../../types';\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nexport function addFeedbackBreadcrumb(replay: ReplayContainer, event: FeedbackEvent): void {\n  replay.triggerUserActivity();\n  replay.addUpdate(() => {\n    if (!event.timestamp) {\n      // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n      // Return true here so that we don't flush\n      return true;\n    }\n\n    // This should never reject\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    replay.throttledAddEvent({\n      type: EventType.Custom,\n      timestamp: event.timestamp * 1000,\n      data: {\n        tag: 'breadcrumb',\n        payload: {\n          timestamp: event.timestamp,\n          type: 'default',\n          category: 'sentry.feedback',\n          data: {\n            feedbackId: event.event_id,\n          },\n        },\n      },\n    } as ReplayBreadcrumbFrameEvent);\n\n    return false;\n  });\n}\n","import type { Event, EventHint } from '@sentry/types';\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nexport function isRrwebError(event: Event, hint: EventHint): boolean {\n  if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n    return false;\n  }\n\n  // @ts-expect-error this may be set by rrweb when it finds errors\n  if (hint.originalException && hint.originalException.__rrweb__) {\n    return true;\n  }\n\n  return false;\n}\n","import type { Event } from '@sentry/types';\n\nimport { UNABLE_TO_SEND_REPLAY } from '../../constants';\nimport type { ReplayContainer } from '../../types';\nimport { isSampled } from '../../util/isSampled';\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nexport function shouldSampleForBufferEvent(replay: ReplayContainer, event: Event): boolean {\n  if (replay.recordingMode !== 'buffer') {\n    return false;\n  }\n\n  // ignore this error because otherwise we could loop indefinitely with\n  // trying to capture replay and failing\n  if (event.message === UNABLE_TO_SEND_REPLAY) {\n    return false;\n  }\n\n  // Require the event to be an error event & to have an exception\n  if (!event.exception || event.type) {\n    return false;\n  }\n\n  return isSampled(replay.getOptions().errorSampleRate);\n}\n","import type { ErrorEvent, Event } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { isErrorEvent } from '../util/eventUtils';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\ntype BeforeSendEventCallback = (event: Event) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleBeforeSendEvent(replay: ReplayContainer): BeforeSendEventCallback {\n  return (event: Event) => {\n    if (!replay.isEnabled() || !isErrorEvent(event)) {\n      return;\n    }\n\n    handleHydrationError(replay, event);\n  };\n}\n\nfunction handleHydrationError(replay: ReplayContainer, event: ErrorEvent): void {\n  const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n  if (typeof exceptionValue !== 'string') {\n    return;\n  }\n\n  if (\n    // Only matches errors in production builds of react-dom\n    // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n    exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n    // Development builds of react-dom\n    // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n    // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n    exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n  ) {\n    const breadcrumb = createBreadcrumb({\n      category: 'replay.hydrate-error',\n    });\n    addBreadcrumbEvent(replay, breadcrumb);\n  }\n}\n","import { addLcpInstrumentationHandler, addPerformanceInstrumentationHandler } from '@sentry-internal/tracing';\n\nimport type { ReplayContainer } from '../types';\nimport { getLargestContentfulPaint } from '../util/createPerformanceEntries';\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nexport function setupPerformanceObserver(replay: ReplayContainer): () => void {\n  function addPerformanceEntry(entry: PerformanceEntry): void {\n    // It is possible for entries to come up multiple times\n    if (!replay.performanceEntries.includes(entry)) {\n      replay.performanceEntries.push(entry);\n    }\n  }\n\n  function onEntries({ entries }: { entries: PerformanceEntry[] }): void {\n    entries.forEach(addPerformanceEntry);\n  }\n\n  const clearCallbacks: (() => void)[] = [];\n\n  (['navigation', 'paint', 'resource'] as const).forEach(type => {\n    clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n  });\n\n  clearCallbacks.push(\n    addLcpInstrumentationHandler(({ metric }) => {\n      replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n    }),\n  );\n\n  // A callback to cleanup all handlers\n  return () => {\n    clearCallbacks.forEach(clearCallback => clearCallback());\n  };\n}\n","import type { Breadcrumb } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { getBaseDomBreadcrumb } from './handleDom';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\n/** Handle keyboard events & create breadcrumbs. */\nexport function handleKeyboardEvent(replay: ReplayContainer, event: KeyboardEvent): void {\n  if (!replay.isEnabled()) {\n    return;\n  }\n\n  // Update user activity, but do not restart recording as it can create\n  // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n  // session with a single \"keydown\" breadcrumb is created)\n  replay.updateUserActivity();\n\n  const breadcrumb = getKeyboardBreadcrumb(event);\n\n  if (!breadcrumb) {\n    return;\n  }\n\n  addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nexport function getKeyboardBreadcrumb(event: KeyboardEvent): Breadcrumb | null {\n  const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n  // never capture for input fields\n  if (!target || isInputElement(target as HTMLElement) || !key) {\n    return null;\n  }\n\n  // Note: We do not consider shift here, as that means \"uppercase\"\n  const hasModifierKey = metaKey || ctrlKey || altKey;\n  const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n  // Do not capture breadcrumb if only a word key is pressed\n  // This could leak e.g. user input\n  if (!hasModifierKey && isCharacterKey) {\n    return null;\n  }\n\n  const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';\n  const baseBreadcrumb = getBaseDomBreadcrumb(target as Node, message);\n\n  return createBreadcrumb({\n    category: 'ui.keyDown',\n    message,\n    data: {\n      ...baseBreadcrumb.data,\n      metaKey,\n      shiftKey,\n      ctrlKey,\n      altKey,\n      key,\n    },\n  });\n}\n\nfunction isInputElement(target: HTMLElement): boolean {\n  return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n","import { consoleSandbox } from '@sentry/utils';\n\nimport type { DeprecatedPrivacyOptions, ReplayIntegrationPrivacyOptions } from '../types';\n\ntype GetPrivacyOptions = Required<Omit<ReplayIntegrationPrivacyOptions, 'maskFn'>> &\n  Omit<DeprecatedPrivacyOptions, 'maskInputOptions'>;\ninterface GetPrivacyReturn {\n  maskTextSelector: string;\n  unmaskTextSelector: string;\n  blockSelector: string;\n  unblockSelector: string;\n  ignoreSelector: string;\n\n  blockClass?: RegExp;\n  maskTextClass?: RegExp;\n}\n\nfunction getOption(\n  selectors: string[],\n  defaultSelectors: string[],\n  deprecatedClassOption?: string | RegExp,\n  deprecatedSelectorOption?: string,\n): string {\n  const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n  const allSelectors = [\n    ...selectors,\n    // @deprecated\n    ...deprecatedSelectors,\n\n    // sentry defaults\n    ...defaultSelectors,\n  ];\n\n  // @deprecated\n  if (typeof deprecatedClassOption !== 'undefined') {\n    // NOTE: No support for RegExp\n    if (typeof deprecatedClassOption === 'string') {\n      allSelectors.push(`.${deprecatedClassOption}`);\n    }\n\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n      );\n    });\n  }\n\n  return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nexport function getPrivacyOptions({\n  mask,\n  unmask,\n  block,\n  unblock,\n  ignore,\n\n  // eslint-disable-next-line deprecation/deprecation\n  blockClass,\n  // eslint-disable-next-line deprecation/deprecation\n  blockSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextClass,\n  // eslint-disable-next-line deprecation/deprecation\n  maskTextSelector,\n  // eslint-disable-next-line deprecation/deprecation\n  ignoreClass,\n}: GetPrivacyOptions): GetPrivacyReturn {\n  const defaultBlockedElements = ['base[href=\"/\"]'];\n\n  const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n  const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n  const options: GetPrivacyReturn = {\n    // We are making the decision to make text and input selectors the same\n    maskTextSelector: maskSelector,\n    unmaskTextSelector: unmaskSelector,\n\n    blockSelector: getOption(\n      block,\n      ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n      blockClass,\n      blockSelector,\n    ),\n    unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n    ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n  };\n\n  if (blockClass instanceof RegExp) {\n    options.blockClass = blockClass;\n  }\n\n  if (maskTextClass instanceof RegExp) {\n    options.maskTextClass = maskTextClass;\n  }\n\n  return options;\n}\n","import type {\n  Client,\n  Event,\n  EventHint,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  IntegrationFnResult,\n  Options,\n} from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { addGlobalEventProcessor } from './eventProcessors';\nimport { getClient } from './exports';\nimport { getCurrentHub } from './hub';\n\ndeclare module '@sentry/types' {\n  interface Integration {\n    isDefaultInstance?: boolean;\n  }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n  [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n  const integrationsByName: { [key: string]: Integration } = {};\n\n  integrations.forEach(currentInstance => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick<Options, 'defaultIntegrations' | 'integrations'>): Integration[] {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach(integration => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations: Integration[];\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    integrations = arrayify(userIntegrations(defaultIntegrations));\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  const finalIntegrations = filterDuplicates(integrations);\n\n  // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n  // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n  // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n  // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n  const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n  if (debugIndex !== -1) {\n    const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n    finalIntegrations.push(debugInstance);\n  }\n\n  return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n  const integrationIndex: IntegrationIndex = {};\n\n  integrations.forEach(integration => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration && integration.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (installedIntegrations.indexOf(integration.name) === -1) {\n    // eslint-disable-next-line deprecation/deprecation\n    integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (client.on && typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n    const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nexport function addIntegration(integration: Integration): void {\n  const client = getClient();\n\n  if (!client || !client.addIntegration) {\n    DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex<T>(arr: T[], callback: (item: T) => boolean): number {\n  for (let i = 0; i < arr.length; i++) {\n    if (callback(arr[i]) === true) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nexport function convertIntegrationFnToClass<Fn extends IntegrationFn>(\n  name: string,\n  fn: Fn,\n): IntegrationClass<Integration> {\n  return Object.assign(\n    function ConvertedIntegration(...args: Parameters<Fn>): Integration {\n      return fn(...args);\n    },\n    { id: name },\n  ) as unknown as IntegrationClass<Integration>;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration<Fn extends IntegrationFn>(fn: Fn): (...args: Parameters<Fn>) => IntegrationFnResult {\n  return fn;\n}\n","import type { getPrivacyOptions } from './getPrivacyOptions';\n\ninterface MaskAttributeParams {\n  maskAttributes: string[];\n  maskAllText: boolean;\n  privacyOptions: ReturnType<typeof getPrivacyOptions>;\n  key: string;\n  value: string;\n  el: HTMLElement;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nexport function maskAttribute({\n  el,\n  key,\n  maskAttributes,\n  maskAllText,\n  privacyOptions,\n  value,\n}: MaskAttributeParams): string {\n  // We only mask attributes if `maskAllText` is true\n  if (!maskAllText) {\n    return value;\n  }\n\n  // unmaskTextSelector takes precendence\n  if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n    return value;\n  }\n\n  if (\n    maskAttributes.includes(key) ||\n    // Need to mask `value` attribute for `<input>` if it's a button-like\n    // type\n    (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n  ) {\n    return value.replace(/[\\S]/g, '*');\n  }\n\n  return value;\n}\n","import { getClient } from '@sentry/core';\nimport type { replayIntegration } from '../integration';\n\n/**\n * This is a small utility to get a type-safe instance of the Replay integration.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getReplay(): ReturnType<typeof replayIntegration> | undefined {\n  const client = getClient();\n  return (\n    client && client.getIntegrationByName && client.getIntegrationByName<ReturnType<typeof replayIntegration>>('Replay')\n  );\n}\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    }\n    else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n    return base64;\n};\nvar decode = function (base64) {\n    var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n    var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n    return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n    let contextMap = canvasVarMap.get(ctx);\r\n    if (!contextMap) {\r\n        contextMap = new Map();\r\n        canvasVarMap.set(ctx, contextMap);\r\n    }\r\n    if (!contextMap.has(ctor)) {\r\n        contextMap.set(ctor, []);\r\n    }\r\n    return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n    if (!value ||\r\n        !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n        return;\r\n    const name = value.constructor.name;\r\n    const list = variableListFor(ctx, name);\r\n    let index = list.indexOf(value);\r\n    if (index === -1) {\r\n        index = list.length;\r\n        list.push(value);\r\n    }\r\n    return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n    if (value instanceof Array) {\r\n        return value.map((arg) => serializeArg(arg, win, ctx));\r\n    }\r\n    else if (value === null) {\r\n        return value;\r\n    }\r\n    else if (value instanceof Float32Array ||\r\n        value instanceof Float64Array ||\r\n        value instanceof Int32Array ||\r\n        value instanceof Uint32Array ||\r\n        value instanceof Uint8Array ||\r\n        value instanceof Uint16Array ||\r\n        value instanceof Int16Array ||\r\n        value instanceof Int8Array ||\r\n        value instanceof Uint8ClampedArray) {\r\n        const name = value.constructor.name;\r\n        return {\r\n            rr_type: name,\r\n            args: [Object.values(value)],\r\n        };\r\n    }\r\n    else if (value instanceof ArrayBuffer) {\r\n        const name = value.constructor.name;\r\n        const base64 = encode(value);\r\n        return {\r\n            rr_type: name,\r\n            base64,\r\n        };\r\n    }\r\n    else if (value instanceof DataView) {\r\n        const name = value.constructor.name;\r\n        return {\r\n            rr_type: name,\r\n            args: [\r\n                serializeArg(value.buffer, win, ctx),\r\n                value.byteOffset,\r\n                value.byteLength,\r\n            ],\r\n        };\r\n    }\r\n    else if (value instanceof HTMLImageElement) {\r\n        const name = value.constructor.name;\r\n        const { src } = value;\r\n        return {\r\n            rr_type: name,\r\n            src,\r\n        };\r\n    }\r\n    else if (value instanceof HTMLCanvasElement) {\r\n        const name = 'HTMLImageElement';\r\n        const src = value.toDataURL();\r\n        return {\r\n            rr_type: name,\r\n            src,\r\n        };\r\n    }\r\n    else if (value instanceof ImageData) {\r\n        const name = value.constructor.name;\r\n        return {\r\n            rr_type: name,\r\n            args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n        };\r\n    }\r\n    else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n        const name = value.constructor.name;\r\n        const index = saveWebGLVar(value, win, ctx);\r\n        return {\r\n            rr_type: name,\r\n            index: index,\r\n        };\r\n    }\r\n    return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n    return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n    const webGLConstructorNames = [\r\n        'WebGLActiveInfo',\r\n        'WebGLBuffer',\r\n        'WebGLFramebuffer',\r\n        'WebGLProgram',\r\n        'WebGLRenderbuffer',\r\n        'WebGLShader',\r\n        'WebGLShaderPrecisionFormat',\r\n        'WebGLTexture',\r\n        'WebGLUniformLocation',\r\n        'WebGLVertexArrayObject',\r\n        'WebGLVertexArrayObjectOES',\r\n    ];\r\n    const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n    return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction getNormalizedContextName(contextType) {\r\n    return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, setPreserveDrawingBufferToTrue) {\r\n    const handlers = [];\r\n    try {\r\n        const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n            return function (contextType, ...args) {\r\n                if (!isBlocked(this, blockClass, blockSelector, unblockSelector, true)) {\r\n                    const ctxName = getNormalizedContextName(contextType);\r\n                    if (!('__context' in this))\r\n                        this.__context = ctxName;\r\n                    if (setPreserveDrawingBufferToTrue &&\r\n                        ['webgl', 'webgl2'].includes(ctxName)) {\r\n                        if (args[0] && typeof args[0] === 'object') {\r\n                            const contextAttributes = args[0];\r\n                            if (!contextAttributes.preserveDrawingBuffer) {\r\n                                contextAttributes.preserveDrawingBuffer = true;\r\n                            }\r\n                        }\r\n                        else {\r\n                            args.splice(0, 1, {\r\n                                preserveDrawingBuffer: true,\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n                return original.apply(this, [contextType, ...args]);\r\n            };\r\n        });\r\n        handlers.push(restoreHandler);\r\n    }\r\n    catch {\r\n        console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n    }\r\n    return () => {\r\n        handlers.forEach((h) => h());\r\n    };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, unblockSelector, mirror, win) {\r\n    const handlers = [];\r\n    const props = Object.getOwnPropertyNames(prototype);\r\n    for (const prop of props) {\r\n        if ([\r\n            'isContextLost',\r\n            'canvas',\r\n            'drawingBufferWidth',\r\n            'drawingBufferHeight',\r\n        ].includes(prop)) {\r\n            continue;\r\n        }\r\n        try {\r\n            if (typeof prototype[prop] !== 'function') {\r\n                continue;\r\n            }\r\n            const restoreHandler = patch(prototype, prop, function (original) {\r\n                return function (...args) {\r\n                    const result = original.apply(this, args);\r\n                    saveWebGLVar(result, win, this);\r\n                    if ('tagName' in this.canvas &&\r\n                        !isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n                        const recordArgs = serializeArgs(args, win, this);\r\n                        const mutation = {\r\n                            type,\r\n                            property: prop,\r\n                            args: recordArgs,\r\n                        };\r\n                        cb(this.canvas, mutation);\r\n                    }\r\n                    return result;\r\n                };\r\n            });\r\n            handlers.push(restoreHandler);\r\n        }\r\n        catch {\r\n            const hookHandler = hookSetter(prototype, prop, {\r\n                set(v) {\r\n                    cb(this.canvas, {\r\n                        type,\r\n                        property: prop,\r\n                        args: [v],\r\n                        setter: true,\r\n                    });\r\n                },\r\n            });\r\n            handlers.push(hookHandler);\r\n        }\r\n    }\r\n    return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\r\n    const handlers = [];\r\n    handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\r\n    if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n        handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\r\n    }\r\n    return () => {\r\n        handlers.forEach((h) => h());\r\n    };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport { patch, isBlocked, setTimeout, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector, unblockSelector) {\r\n    const handlers = [];\r\n    const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n    for (const prop of props2D) {\r\n        try {\r\n            if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n                continue;\r\n            }\r\n            const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n                return function (...args) {\r\n                    if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n                        setTimeout(() => {\r\n                            const recordArgs = serializeArgs(args, win, this);\r\n                            cb(this.canvas, {\r\n                                type: CanvasContext['2D'],\r\n                                property: prop,\r\n                                args: recordArgs,\r\n                            });\r\n                        }, 0);\r\n                    }\r\n                    return original.apply(this, args);\r\n                };\r\n            });\r\n            handlers.push(restoreHandler);\r\n        }\r\n        catch {\r\n            const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n                set(v) {\r\n                    cb(this.canvas, {\r\n                        type: CanvasContext['2D'],\r\n                        property: prop,\r\n                        args: [v],\r\n                        setter: true,\r\n                    });\r\n                },\r\n            });\r\n            handlers.push(hookHandler);\r\n        }\r\n    }\r\n    return () => {\r\n        handlers.forEach((h) => h());\r\n    };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import r from './image-bitmap-data-url-worker.js';\n\nfunction t(){const t=new Blob([r]);return URL.createObjectURL(t)}\n\nexport { t as getImageBitmapDataUrlWorkerURL };\n","var r = `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n\nexport { r as default };\n","import { CanvasManager } from '@sentry-internal/rrweb';\nimport { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { InternalCanvasManagerInterface, InternalCanvasManagerOptions } from '@sentry/replay';\nimport type { Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\ninterface ReplayCanvasOptions {\n  enableManualSnapshot?: boolean;\n  maxCanvasSize?: [width: number, height: number];\n  quality: 'low' | 'medium' | 'high';\n}\n\ntype GetCanvasManager = (options: InternalCanvasManagerOptions) => InternalCanvasManagerInterface;\nexport interface ReplayCanvasIntegrationOptions {\n  enableManualSnapshot?: boolean;\n  maxCanvasSize?: number;\n  recordCanvas: true;\n  getCanvasManager: GetCanvasManager;\n  sampling: {\n    canvas: number;\n  };\n  dataURLOptions: {\n    type: string;\n    quality: number;\n  };\n}\n\nconst CANVAS_QUALITY = {\n  low: {\n    sampling: {\n      canvas: 1,\n    },\n    dataURLOptions: {\n      type: 'image/webp',\n      quality: 0.25,\n    },\n  },\n  medium: {\n    sampling: {\n      canvas: 2,\n    },\n    dataURLOptions: {\n      type: 'image/webp',\n      quality: 0.4,\n    },\n  },\n  high: {\n    sampling: {\n      canvas: 4,\n    },\n    dataURLOptions: {\n      type: 'image/webp',\n      quality: 0.5,\n    },\n  },\n};\n\nconst INTEGRATION_NAME = 'ReplayCanvas';\nconst DEFAULT_MAX_CANVAS_SIZE = 1280;\n\n/** Exported only for type safe tests. */\nexport const _replayCanvasIntegration = ((options: Partial<ReplayCanvasOptions> = {}) => {\n  const [maxCanvasWidth, maxCanvasHeight] = options.maxCanvasSize || [];\n  const _canvasOptions = {\n    quality: options.quality || 'medium',\n    enableManualSnapshot: options.enableManualSnapshot,\n    maxCanvasSize: [\n      maxCanvasWidth ? Math.min(maxCanvasWidth, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n      maxCanvasHeight ? Math.min(maxCanvasHeight, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n    ] as [number, number],\n  };\n\n  let canvasManagerResolve: (value: CanvasManager) => void;\n  const _canvasManager: Promise<CanvasManager> = new Promise(resolve => (canvasManagerResolve = resolve));\n\n  return {\n    name: INTEGRATION_NAME,\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    setupOnce() {},\n    getOptions(): ReplayCanvasIntegrationOptions {\n      const { quality, enableManualSnapshot, maxCanvasSize } = _canvasOptions;\n\n      return {\n        enableManualSnapshot,\n        recordCanvas: true,\n        getCanvasManager: (getCanvasManagerOptions: InternalCanvasManagerOptions) => {\n          const manager = new CanvasManager({\n            ...getCanvasManagerOptions,\n            enableManualSnapshot,\n            maxCanvasSize,\n            errorHandler: (err: unknown) => {\n              try {\n                if (typeof err === 'object') {\n                  (err as Error & { __rrweb__?: boolean }).__rrweb__ = true;\n                }\n              } catch (error) {\n                // ignore errors here\n                // this can happen if the error is frozen or does not allow mutation for other reasons\n              }\n            },\n          });\n          canvasManagerResolve(manager);\n          return manager;\n        },\n        ...(CANVAS_QUALITY[quality || 'medium'] || CANVAS_QUALITY.medium),\n      };\n    },\n    async snapshot(canvasElement?: HTMLCanvasElement) {\n      const canvasManager = await _canvasManager;\n      canvasManager.snapshot(canvasElement);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Add this in addition to `replayIntegration()` to enable canvas recording.\n */\nexport const replayCanvasIntegration = defineIntegration(_replayCanvasIntegration);\n\n/**\n * @deprecated Use `replayCanvasIntegration()` instead\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ReplayCanvas = convertIntegrationFnToClass(INTEGRATION_NAME, replayCanvasIntegration) as IntegrationClass<\n  Integration & {\n    getOptions: () => ReplayCanvasIntegrationOptions;\n  }\n>;\n","import { getLocationHref } from '@sentry/utils';\n\nimport { FEEDBACK_API_SOURCE } from './constants';\nimport type { SendFeedbackOptions } from './types';\nimport { sendFeedbackRequest } from './util/sendFeedbackRequest';\n\ninterface SendFeedbackParams {\n  message: string;\n  name?: string;\n  email?: string;\n  url?: string;\n  source?: string;\n}\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nexport function sendFeedback(\n  { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() }: SendFeedbackParams,\n  options: SendFeedbackOptions = {},\n): ReturnType<typeof sendFeedbackRequest> {\n  if (!message) {\n    throw new Error('Unable to submit feedback with empty message');\n  }\n\n  return sendFeedbackRequest(\n    {\n      feedback: {\n        name,\n        email,\n        message,\n        url,\n        source,\n      },\n    },\n    options,\n  );\n}\n","import { createEventEnvelope, getClient, withScope } from '@sentry/core';\nimport type { FeedbackEvent, TransportMakeRequestResponse } from '@sentry/types';\n\nimport { FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE } from '../constants';\nimport type { SendFeedbackData, SendFeedbackOptions } from '../types';\nimport { prepareFeedbackEvent } from './prepareFeedbackEvent';\n\n/**\n * Send feedback using transport\n */\nexport async function sendFeedbackRequest(\n  { feedback: { message, email, name, source, url } }: SendFeedbackData,\n  { includeReplay = true }: SendFeedbackOptions = {},\n): Promise<void | TransportMakeRequestResponse> {\n  const client = getClient();\n  const transport = client && client.getTransport();\n  const dsn = client && client.getDsn();\n\n  if (!client || !transport || !dsn) {\n    return;\n  }\n\n  const baseEvent: FeedbackEvent = {\n    contexts: {\n      feedback: {\n        contact_email: email,\n        name,\n        message,\n        url,\n        source,\n      },\n    },\n    type: 'feedback',\n  };\n\n  return withScope(async scope => {\n    // No use for breadcrumbs in feedback\n    scope.clearBreadcrumbs();\n\n    if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n      scope.setLevel('info');\n    }\n\n    const feedbackEvent = await prepareFeedbackEvent({\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      scope: scope as any,\n      client,\n      event: baseEvent,\n    });\n\n    if (!feedbackEvent) {\n      return;\n    }\n\n    if (client.emit) {\n      client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n    }\n\n    const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n    let response: void | TransportMakeRequestResponse;\n\n    try {\n      response = await transport.send(envelope);\n    } catch (err) {\n      const error = new Error('Unable to send Feedback');\n\n      try {\n        // In case browsers don't allow this property to be writable\n        // @ts-expect-error This needs lib es2022 and newer\n        error.cause = err;\n      } catch {\n        // nothing to do\n      }\n      throw error;\n    }\n\n    // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n    if (!response) {\n      return;\n    }\n\n    // Require valid status codes, otherwise can assume feedback was not sent successfully\n    if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n      throw new Error('Unable to send Feedback');\n    }\n\n    return response;\n  });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n *     \"type\": \"feedback\",\n *     \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n *     \"timestamp\": 1597977777.6189718,\n *     \"dist\": \"1.12\",\n *     \"platform\": \"javascript\",\n *     \"environment\": \"production\",\n *     \"release\": 42,\n *     \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n *     \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n *     \"user\": {\n *         \"id\": \"123\",\n *         \"username\": \"user\",\n *         \"email\": \"user@site.com\",\n *         \"ip_address\": \"192.168.11.12\",\n *     },\n *     \"request\": {\n *         \"url\": None,\n *         \"headers\": {\n *             \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n *         },\n *     },\n *     \"contexts\": {\n *         \"feedback\": {\n *             \"message\": \"test message\",\n *             \"contact_email\": \"test@example.com\",\n *             \"type\": \"feedback\",\n *         },\n *         \"trace\": {\n *             \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n *             \"span_id\": \"FA90FDEAD5F74052\",\n *             \"type\": \"trace\",\n *         },\n *         \"replay\": {\n *             \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n *         },\n *     },\n *   }\n */\n","import type { Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, FeedbackEvent } from '@sentry/types';\n\ninterface PrepareFeedbackEventParams {\n  client: Client;\n  event: FeedbackEvent;\n  scope: Scope;\n}\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nexport async function prepareFeedbackEvent({\n  client,\n  scope,\n  event,\n}: PrepareFeedbackEventParams): Promise<FeedbackEvent | null> {\n  const eventHint = {};\n  if (client.emit) {\n    client.emit('preprocessEvent', event, eventHint);\n  }\n\n  const preparedEvent = (await prepareEvent(\n    client.getOptions(),\n    event,\n    eventHint,\n    scope,\n    client,\n    getIsolationScope(),\n  )) as FeedbackEvent | null;\n\n  if (preparedEvent === null) {\n    // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n    client.recordDroppedEvent('event_processor', 'feedback', event);\n    return null;\n  }\n\n  // This normally happens in browser client \"_prepareEvent\"\n  // but since we do not use this private method from the client, but rather the plain import\n  // we need to do this manually.\n  preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n  return preparedEvent;\n}\n","import type { FeedbackInternalOptions, OptionalFeedbackConfiguration } from '../types';\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nexport function mergeOptions(\n  defaultOptions: FeedbackInternalOptions,\n  optionOverrides: OptionalFeedbackConfiguration,\n): FeedbackInternalOptions {\n  return {\n    ...defaultOptions,\n    ...optionOverrides,\n    themeDark: {\n      ...defaultOptions.themeDark,\n      ...optionOverrides.themeDark,\n    },\n    themeLight: {\n      ...defaultOptions.themeLight,\n      ...optionOverrides.themeLight,\n    },\n  };\n}\n","import type { FeedbackTheme, FeedbackThemes } from '../types';\n\nfunction getThemedCssVariables(theme: FeedbackTheme): string {\n  return `\n  --background: ${theme.background};\n  --background-hover: ${theme.backgroundHover};\n  --foreground: ${theme.foreground};\n  --error: ${theme.error};\n  --success: ${theme.success};\n  --border: ${theme.border};\n  --border-radius: ${theme.borderRadius};\n  --box-shadow: ${theme.boxShadow};\n\n  --submit-background: ${theme.submitBackground};\n  --submit-background-hover: ${theme.submitBackgroundHover};\n  --submit-border: ${theme.submitBorder};\n  --submit-outline-focus: ${theme.submitOutlineFocus};\n  --submit-foreground: ${theme.submitForeground};\n  --submit-foreground-hover: ${theme.submitForegroundHover};\n\n  --cancel-background: ${theme.cancelBackground};\n  --cancel-background-hover: ${theme.cancelBackgroundHover};\n  --cancel-border: ${theme.cancelBorder};\n  --cancel-outline-focus: ${theme.cancelOutlineFocus};\n  --cancel-foreground: ${theme.cancelForeground};\n  --cancel-foreground-hover: ${theme.cancelForegroundHover};\n\n  --input-background: ${theme.inputBackground};\n  --input-foreground: ${theme.inputForeground};\n  --input-border: ${theme.inputBorder};\n  --input-outline-focus: ${theme.inputOutlineFocus};\n\n  --form-border-radius: ${theme.formBorderRadius};\n  --form-content-border-radius: ${theme.formContentBorderRadius};\n  `;\n}\n\n/**\n * Creates <style> element for widget actor (button that opens the dialog)\n */\nexport function createMainStyles(\n  d: Document,\n  colorScheme: 'system' | 'dark' | 'light',\n  themes: FeedbackThemes,\n): HTMLStyleElement {\n  const style = d.createElement('style');\n  style.textContent = `\n:host {\n  --bottom: 1rem;\n  --right: 1rem;\n  --top: auto;\n  --left: auto;\n  --z-index: 100000;\n  --font-family: ${themes.light.fontFamily};\n  --font-size: ${themes.light.fontSize};\n\n  position: fixed;\n  left: var(--left);\n  right: var(--right);\n  bottom: var(--bottom);\n  top: var(--top);\n  z-index: var(--z-index);\n\n  font-family: var(--font-family);\n  font-size: var(--font-size);\n\n  ${getThemedCssVariables(colorScheme === 'dark' ? themes.dark : themes.light)}\n}\n\n${\n  colorScheme === 'system'\n    ? `\n@media (prefers-color-scheme: dark) {\n  :host {\n    ${getThemedCssVariables(themes.dark)}\n  }\n}`\n    : ''\n}\n}`;\n\n  return style;\n}\n","/**\n * Helper function to set a dict of attributes on element (w/ specified namespace)\n */\nexport function setAttributesNS<T extends SVGElement>(el: T, attributes: Record<string, string>): T {\n  Object.entries(attributes).forEach(([key, val]) => {\n    el.setAttributeNS(null, key, val);\n  });\n  return el;\n}\n","import { WINDOW } from '../../constants';\n\n/**\n * Helper function to create an element. Could be used as a JSX factory\n * (i.e. React-like syntax).\n */\nexport function createElement<K extends keyof HTMLElementTagNameMap>(\n  tagName: K,\n  attributes: { [key: string]: string | boolean | EventListenerOrEventListenerObject } | null,\n  ...children: any\n): HTMLElementTagNameMap[K] {\n  const doc = WINDOW.document;\n  const element = doc.createElement(tagName);\n\n  if (attributes) {\n    Object.entries(attributes).forEach(([attribute, attributeValue]) => {\n      if (attribute === 'className' && typeof attributeValue === 'string') {\n        // JSX does not allow class as a valid name\n        element.setAttribute('class', attributeValue);\n      } else if (typeof attributeValue === 'boolean' && attributeValue) {\n        element.setAttribute(attribute, '');\n      } else if (typeof attributeValue === 'string') {\n        element.setAttribute(attribute, attributeValue);\n      } else if (attribute.startsWith('on') && typeof attributeValue === 'function') {\n        element.addEventListener(attribute.substring(2).toLowerCase(), attributeValue);\n      }\n    });\n  }\n  for (const child of children) {\n    appendChild(element, child);\n  }\n\n  return element;\n}\n\nfunction appendChild(parent: Node, child: any): void {\n  const doc = WINDOW.document;\n  if (typeof child === 'undefined' || child === null) {\n    return;\n  }\n\n  if (Array.isArray(child)) {\n    for (const value of child) {\n      appendChild(parent, value);\n    }\n  } else if (child === false) {\n    // do nothing if child evaluated to false\n  } else if (typeof child === 'string') {\n    parent.appendChild(doc.createTextNode(child));\n  } else if (child instanceof Node) {\n    parent.appendChild(child);\n  } else {\n    parent.appendChild(doc.createTextNode(String(child)));\n  }\n}\n","import type { FeedbackComponent, FeedbackFormData, FeedbackInternalOptions, FeedbackTextConfiguration } from '../types';\nimport { SubmitButton } from './SubmitButton';\nimport { createElement } from './util/createElement';\n\nexport interface FormComponentProps\n  extends Pick<\n    FeedbackInternalOptions,\n    | 'showName'\n    | 'showEmail'\n    | 'isNameRequired'\n    | 'isEmailRequired'\n    | Exclude<keyof FeedbackTextConfiguration, 'buttonLabel' | 'formTitle' | 'successMessageText'>\n  > {\n  /**\n   * A default name value to render the input with. Empty strings are ok.\n   */\n  defaultName: string;\n  /**\n   * A default email value to render the input with. Empty strings are ok.\n   */\n  defaultEmail: string;\n  onCancel?: (e: Event) => void;\n  onSubmit?: (feedback: FeedbackFormData) => void;\n}\n\ninterface FormComponent extends FeedbackComponent<HTMLFormElement> {\n  /**\n   * Shows the error message\n   */\n  showError: (message: string) => void;\n\n  /**\n   * Hides the error message\n   */\n  hideError: () => void;\n}\n\nfunction retrieveStringValue(formData: FormData, key: string): string {\n  const value = formData.get(key);\n  if (typeof value === 'string') {\n    return value.trim();\n  }\n  return '';\n}\n\n/**\n * Creates the form element\n */\nexport function Form({\n  nameLabel,\n  namePlaceholder,\n  emailLabel,\n  emailPlaceholder,\n  messageLabel,\n  messagePlaceholder,\n  isRequiredLabel,\n  cancelButtonLabel,\n  submitButtonLabel,\n\n  showName,\n  showEmail,\n  isNameRequired,\n  isEmailRequired,\n\n  defaultName,\n  defaultEmail,\n  onCancel,\n  onSubmit,\n}: FormComponentProps): FormComponent {\n  const { el: submitEl } = SubmitButton({\n    label: submitButtonLabel,\n  });\n\n  function handleSubmit(e: Event): void {\n    e.preventDefault();\n\n    if (!(e.target instanceof HTMLFormElement)) {\n      return;\n    }\n\n    try {\n      if (onSubmit) {\n        const formData = new FormData(e.target as HTMLFormElement);\n        const feedback = {\n          name: retrieveStringValue(formData, 'name'),\n          email: retrieveStringValue(formData, 'email'),\n          message: retrieveStringValue(formData, 'message'),\n        };\n\n        onSubmit(feedback);\n      }\n    } catch {\n      // pass\n    }\n  }\n\n  const errorEl = createElement('div', {\n    className: 'form__error-container form__error-container--hidden',\n    ['aria-hidden']: 'true',\n  });\n\n  function showError(message: string): void {\n    errorEl.textContent = message;\n    errorEl.classList.remove('form__error-container--hidden');\n    errorEl.setAttribute('aria-hidden', 'false');\n  }\n\n  function hideError(): void {\n    errorEl.textContent = '';\n    errorEl.classList.add('form__error-container--hidden');\n    errorEl.setAttribute('aria-hidden', 'true');\n  }\n\n  const nameEl = createElement('input', {\n    id: 'name',\n    type: showName ? 'text' : 'hidden',\n    ['aria-hidden']: showName ? 'false' : 'true',\n    name: 'name',\n    required: isNameRequired,\n    className: 'form__input',\n    placeholder: namePlaceholder,\n    value: defaultName,\n  });\n\n  const emailEl = createElement('input', {\n    id: 'email',\n    type: showEmail ? 'text' : 'hidden',\n    ['aria-hidden']: showEmail ? 'false' : 'true',\n    name: 'email',\n    required: isEmailRequired,\n    className: 'form__input',\n    placeholder: emailPlaceholder,\n    value: defaultEmail,\n  });\n\n  const messageEl = createElement('textarea', {\n    id: 'message',\n    autoFocus: 'true',\n    rows: '5',\n    name: 'message',\n    required: true,\n    className: 'form__input form__input--textarea',\n    placeholder: messagePlaceholder,\n  });\n\n  const cancelEl = createElement(\n    'button',\n    {\n      type: 'button',\n      className: 'btn btn--default',\n      ['aria-label']: cancelButtonLabel,\n      onClick: (e: Event) => {\n        onCancel && onCancel(e);\n      },\n    },\n    cancelButtonLabel,\n  );\n\n  const formEl = createElement(\n    'form',\n    {\n      className: 'form',\n      onSubmit: handleSubmit,\n    },\n    [\n      errorEl,\n\n      showName &&\n        createElement(\n          'label',\n          {\n            htmlFor: 'name',\n            className: 'form__label',\n          },\n          [\n            createElement(\n              'span',\n              { className: 'form__label__text' },\n              nameLabel,\n              isNameRequired &&\n                createElement('span', { className: 'form__label__text--required' }, ` ${isRequiredLabel}`),\n            ),\n            nameEl,\n          ],\n        ),\n      !showName && nameEl,\n\n      showEmail &&\n        createElement(\n          'label',\n          {\n            htmlFor: 'email',\n            className: 'form__label',\n          },\n          [\n            createElement(\n              'span',\n              { className: 'form__label__text' },\n              emailLabel,\n              isEmailRequired &&\n                createElement('span', { className: 'form__label__text--required' }, ` ${isRequiredLabel}`),\n            ),\n            emailEl,\n          ],\n        ),\n      !showEmail && emailEl,\n\n      createElement(\n        'label',\n        {\n          htmlFor: 'message',\n          className: 'form__label',\n        },\n        [\n          createElement(\n            'span',\n            { className: 'form__label__text' },\n            messageLabel,\n            createElement('span', { className: 'form__label__text--required' }, ` ${isRequiredLabel}`),\n          ),\n          messageEl,\n        ],\n      ),\n\n      createElement(\n        'div',\n        {\n          className: 'btn-group',\n        },\n        [submitEl, cancelEl],\n      ),\n    ],\n  );\n\n  return {\n    get el() {\n      return formEl;\n    },\n    showError,\n    hideError,\n  };\n}\n","import { getClient, getCurrentScope } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport type { FeedbackFormData, FeedbackInternalOptions, FeedbackWidget } from '../types';\nimport { handleFeedbackSubmit } from '../util/handleFeedbackSubmit';\nimport type { ActorComponent } from './Actor';\nimport { Actor } from './Actor';\nimport type { DialogComponent } from './Dialog';\nimport { Dialog } from './Dialog';\nimport { SuccessMessage } from './SuccessMessage';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\ninterface CreateWidgetParams {\n  /**\n   * Shadow DOM to append to\n   */\n  shadow: ShadowRoot;\n\n  /**\n   * Feedback integration options\n   */\n  options: FeedbackInternalOptions & { shouldCreateActor?: boolean };\n\n  /**\n   * An element to attach to, that when clicked, will open a dialog\n   */\n  attachTo?: Element;\n\n  /**\n   * If false, will not create an actor\n   */\n  shouldCreateActor?: boolean;\n}\n\n/**\n * Creates a new widget. Returns public methods that control widget behavior.\n */\nexport function createWidget({\n  shadow,\n  options: { shouldCreateActor = true, ...options },\n  attachTo,\n}: CreateWidgetParams): FeedbackWidget {\n  let actor: ActorComponent | undefined;\n  let dialog: DialogComponent | undefined;\n  let isDialogOpen: boolean = false;\n\n  /**\n   * Show the success message for 5 seconds\n   */\n  function showSuccessMessage(): void {\n    if (!shadow) {\n      return;\n    }\n\n    try {\n      const success = SuccessMessage({\n        message: options.successMessageText,\n        onRemove: () => {\n          if (timeoutId) {\n            clearTimeout(timeoutId);\n          }\n          showActor();\n        },\n      });\n\n      if (!success.el) {\n        throw new Error('Unable to show success message');\n      }\n\n      shadow.appendChild(success.el);\n\n      const timeoutId = setTimeout(() => {\n        if (success) {\n          success.remove();\n        }\n      }, 5000);\n    } catch (err) {\n      // TODO: error handling\n      logger.error(err);\n    }\n  }\n\n  /**\n   * Handler for when the feedback form is completed by the user. This will\n   * create and send the feedback message as an event.\n   */\n  async function _handleFeedbackSubmit(feedback: FeedbackFormData): Promise<void> {\n    if (!dialog) {\n      return;\n    }\n\n    // Simple validation for now, just check for non-empty required fields\n    const emptyField = [];\n    if (options.isNameRequired && !feedback.name) {\n      emptyField.push(options.nameLabel);\n    }\n    if (options.isEmailRequired && !feedback.email) {\n      emptyField.push(options.emailLabel);\n    }\n    if (!feedback.message) {\n      emptyField.push(options.messageLabel);\n    }\n    if (emptyField.length > 0) {\n      dialog.showError(`Please enter in the following required fields: ${emptyField.join(', ')}`);\n      return;\n    }\n\n    const result = await handleFeedbackSubmit(dialog, feedback);\n\n    // Error submitting feedback\n    if (!result) {\n      if (options.onSubmitError) {\n        options.onSubmitError();\n      }\n\n      return;\n    }\n\n    // Success\n    removeDialog();\n    showSuccessMessage();\n\n    if (options.onSubmitSuccess) {\n      options.onSubmitSuccess();\n    }\n  }\n\n  /**\n   * Internal handler when dialog is opened\n   */\n  function handleOpenDialog(): void {\n    // Flush replay if integration exists\n    const client = getClient();\n    const replay =\n      client &&\n      client.getIntegrationByName &&\n      client.getIntegrationByName<{ name: string; flush: () => Promise<void>; setupOnce: () => void }>('Replay');\n    if (!replay) {\n      return;\n    }\n    replay.flush().catch(err => {\n      DEBUG_BUILD && logger.error(err);\n    });\n  }\n\n  /**\n   * Displays the default actor\n   */\n  function showActor(): void {\n    actor && actor.show();\n  }\n\n  /**\n   * Hides the default actor\n   */\n  function hideActor(): void {\n    actor && actor.hide();\n  }\n\n  /**\n   * Removes the default actor element\n   */\n  function removeActor(): void {\n    actor && actor.el && actor.el.remove();\n  }\n\n  /**\n   *\n   */\n  function openDialog(): void {\n    try {\n      if (dialog) {\n        dialog.open();\n        isDialogOpen = true;\n        if (options.onFormOpen) {\n          options.onFormOpen();\n        }\n        handleOpenDialog();\n        return;\n      }\n\n      const userKey = options.useSentryUser;\n      const scope = getCurrentScope();\n      const user = scope && scope.getUser();\n\n      dialog = Dialog({\n        colorScheme: options.colorScheme,\n        showBranding: options.showBranding,\n        showName: options.showName || options.isNameRequired,\n        showEmail: options.showEmail || options.isEmailRequired,\n        isNameRequired: options.isNameRequired,\n        isEmailRequired: options.isEmailRequired,\n        formTitle: options.formTitle,\n        cancelButtonLabel: options.cancelButtonLabel,\n        submitButtonLabel: options.submitButtonLabel,\n        emailLabel: options.emailLabel,\n        emailPlaceholder: options.emailPlaceholder,\n        messageLabel: options.messageLabel,\n        messagePlaceholder: options.messagePlaceholder,\n        nameLabel: options.nameLabel,\n        namePlaceholder: options.namePlaceholder,\n        isRequiredLabel: options.isRequiredLabel,\n        defaultName: (userKey && user && user[userKey.name]) || '',\n        defaultEmail: (userKey && user && user[userKey.email]) || '',\n        onClosed: () => {\n          showActor();\n          isDialogOpen = false;\n\n          if (options.onFormClose) {\n            options.onFormClose();\n          }\n        },\n        onCancel: () => {\n          closeDialog();\n          showActor();\n        },\n        onSubmit: _handleFeedbackSubmit,\n      });\n\n      if (!dialog.el) {\n        throw new Error('Unable to open Feedback dialog');\n      }\n\n      shadow.appendChild(dialog.el);\n\n      // Hides the default actor whenever dialog is opened\n      hideActor();\n\n      if (options.onFormOpen) {\n        options.onFormOpen();\n      }\n      handleOpenDialog();\n    } catch (err) {\n      // TODO: Error handling?\n      logger.error(err);\n    }\n  }\n\n  /**\n   * Closes the dialog\n   */\n  function closeDialog(): void {\n    if (dialog) {\n      dialog.close();\n      isDialogOpen = false;\n\n      if (options.onFormClose) {\n        options.onFormClose();\n      }\n    }\n  }\n\n  /**\n   * Removes the dialog element from DOM\n   */\n  function removeDialog(): void {\n    if (dialog) {\n      closeDialog();\n      const dialogEl = dialog.el;\n      dialogEl && dialogEl.remove();\n      dialog = undefined;\n    }\n  }\n\n  /**\n   *\n   */\n  function handleActorClick(): void {\n    // Open dialog\n    if (!isDialogOpen) {\n      openDialog();\n    }\n\n    // Hide actor button\n    hideActor();\n  }\n\n  if (attachTo) {\n    attachTo.addEventListener('click', handleActorClick);\n  } else if (shouldCreateActor) {\n    actor = Actor({ buttonLabel: options.buttonLabel, onClick: handleActorClick });\n    actor.el && shadow.appendChild(actor.el);\n  }\n\n  return {\n    get actor() {\n      return actor;\n    },\n    get dialog() {\n      return dialog;\n    },\n\n    showActor,\n    hideActor,\n    removeActor,\n\n    openDialog,\n    closeDialog,\n    removeDialog,\n  };\n}\n","import type { TransportMakeRequestResponse } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { FEEDBACK_WIDGET_SOURCE } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { sendFeedback } from '../sendFeedback';\nimport type { FeedbackFormData, SendFeedbackOptions } from '../types';\nimport type { DialogComponent } from '../widget/Dialog';\n\n/**\n * Handles UI behavior of dialog when feedback is submitted, calls\n * `sendFeedback` to send feedback.\n */\nexport async function handleFeedbackSubmit(\n  dialog: DialogComponent | null,\n  feedback: FeedbackFormData,\n  options?: SendFeedbackOptions,\n): Promise<TransportMakeRequestResponse | void> {\n  if (!dialog) {\n    // Not sure when this would happen\n    return;\n  }\n\n  const showFetchError = (): void => {\n    if (!dialog) {\n      return;\n    }\n    dialog.showError('There was a problem submitting feedback, please wait and try again.');\n  };\n\n  dialog.hideError();\n\n  try {\n    const resp = await sendFeedback({ ...feedback, source: FEEDBACK_WIDGET_SOURCE }, options);\n\n    // Success!\n    return resp;\n  } catch (err) {\n    DEBUG_BUILD && logger.error(err);\n    showFetchError();\n  }\n}\n","import type { FeedbackComponent } from '../types';\nimport { SuccessIcon } from './SuccessIcon';\nimport { createElement } from './util/createElement';\n\nexport interface SuccessMessageProps {\n  message: string;\n  onRemove?: () => void;\n}\n\ninterface SuccessMessageComponent extends FeedbackComponent<HTMLDivElement> {\n  /**\n   * Removes the component\n   */\n  remove: () => void;\n}\n\n/**\n * Feedback dialog component that has the form\n */\nexport function SuccessMessage({ message, onRemove }: SuccessMessageProps): SuccessMessageComponent {\n  function remove(): void {\n    if (!el) {\n      return;\n    }\n\n    el.remove();\n    onRemove && onRemove();\n  }\n\n  const el = createElement(\n    'div',\n    {\n      className: 'success-message',\n      onClick: remove,\n    },\n    SuccessIcon().el,\n    message,\n  );\n\n  return {\n    el,\n    remove,\n  };\n}\n","import { WINDOW } from '../constants';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst WIDTH = 16;\nconst HEIGHT = 17;\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n  el: SVGElement;\n}\n\n/**\n * Success Icon (checkmark)\n */\nexport function SuccessIcon(): IconReturn {\n  const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n    WINDOW.document.createElementNS(XMLNS, tagName);\n  const svg = setAttributesNS(createElementNS('svg'), {\n    class: 'success-icon',\n    width: `${WIDTH}`,\n    height: `${HEIGHT}`,\n    viewBox: `0 0 ${WIDTH} ${HEIGHT}`,\n    fill: 'none',\n  });\n\n  const g = setAttributesNS(createElementNS('g'), {\n    clipPath: 'url(#clip0_57_156)',\n  });\n\n  const path2 = setAttributesNS(createElementNS('path'), {\n    ['fill-rule']: 'evenodd',\n    ['clip-rule']: 'evenodd',\n    d: 'M3.55544 15.1518C4.87103 16.0308 6.41775 16.5 8 16.5C10.1217 16.5 12.1566 15.6571 13.6569 14.1569C15.1571 12.6566 16 10.6217 16 8.5C16 6.91775 15.5308 5.37103 14.6518 4.05544C13.7727 2.73985 12.5233 1.71447 11.0615 1.10897C9.59966 0.503466 7.99113 0.34504 6.43928 0.653721C4.88743 0.962403 3.46197 1.72433 2.34315 2.84315C1.22433 3.96197 0.462403 5.38743 0.153721 6.93928C-0.15496 8.49113 0.00346625 10.0997 0.608967 11.5615C1.21447 13.0233 2.23985 14.2727 3.55544 15.1518ZM4.40546 3.1204C5.46945 2.40946 6.72036 2.03 8 2.03C9.71595 2.03 11.3616 2.71166 12.575 3.92502C13.7883 5.13838 14.47 6.78405 14.47 8.5C14.47 9.77965 14.0905 11.0306 13.3796 12.0945C12.6687 13.1585 11.6582 13.9878 10.476 14.4775C9.29373 14.9672 7.99283 15.0953 6.73777 14.8457C5.48271 14.596 4.32987 13.9798 3.42502 13.075C2.52018 12.1701 1.90397 11.0173 1.65432 9.76224C1.40468 8.50718 1.5328 7.20628 2.0225 6.02404C2.5122 4.8418 3.34148 3.83133 4.40546 3.1204Z',\n  });\n  const path = setAttributesNS(createElementNS('path'), {\n    d: 'M6.68775 12.4297C6.78586 12.4745 6.89218 12.4984 7 12.5C7.11275 12.4955 7.22315 12.4664 7.32337 12.4145C7.4236 12.3627 7.51121 12.2894 7.58 12.2L12 5.63999C12.0848 5.47724 12.1071 5.28902 12.0625 5.11098C12.0178 4.93294 11.9095 4.77744 11.7579 4.67392C11.6064 4.57041 11.4221 4.52608 11.24 4.54931C11.0579 4.57254 10.8907 4.66173 10.77 4.79999L6.88 10.57L5.13 8.56999C5.06508 8.49566 4.98613 8.43488 4.89768 8.39111C4.80922 8.34735 4.713 8.32148 4.61453 8.31498C4.51605 8.30847 4.41727 8.32147 4.32382 8.35322C4.23038 8.38497 4.14413 8.43484 4.07 8.49999C3.92511 8.63217 3.83692 8.81523 3.82387 9.01092C3.81083 9.2066 3.87393 9.39976 4 9.54999L6.43 12.24C6.50187 12.3204 6.58964 12.385 6.68775 12.4297Z',\n  });\n\n  svg.appendChild(g).append(path, path2);\n\n  const speakerDefs = createElementNS('defs');\n  const speakerClipPathDef = setAttributesNS(createElementNS('clipPath'), {\n    id: 'clip0_57_156',\n  });\n\n  const speakerRect = setAttributesNS(createElementNS('rect'), {\n    width: `${WIDTH}`,\n    height: `${WIDTH}`,\n    fill: 'white',\n    transform: 'translate(0 0.5)',\n  });\n\n  speakerClipPathDef.appendChild(speakerRect);\n  speakerDefs.appendChild(speakerClipPathDef);\n\n  svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);\n\n  return {\n    get el() {\n      return svg;\n    },\n  };\n}\n","import type { FeedbackComponent, FeedbackInternalOptions } from '../types';\nimport type { FormComponentProps } from './Form';\nimport { Form } from './Form';\nimport { Logo } from './Logo';\nimport { createElement } from './util/createElement';\n\nexport interface DialogProps\n  extends FormComponentProps,\n    Pick<FeedbackInternalOptions, 'formTitle' | 'showBranding' | 'colorScheme'> {\n  onClosed?: () => void;\n}\n\nexport interface DialogComponent extends FeedbackComponent<HTMLDialogElement> {\n  /**\n   * Shows the error message\n   */\n  showError: (message: string) => void;\n\n  /**\n   * Hides the error message\n   */\n  hideError: () => void;\n\n  /**\n   * Opens and shows the dialog and form\n   */\n  open: () => void;\n\n  /**\n   * Closes the dialog and form\n   */\n  close: () => void;\n\n  /**\n   * Check if dialog is currently opened\n   */\n  checkIsOpen: () => boolean;\n}\n\n/**\n * Feedback dialog component that has the form\n */\nexport function Dialog({\n  formTitle,\n  showBranding,\n  showName,\n  showEmail,\n  isNameRequired,\n  isEmailRequired,\n  colorScheme,\n  defaultName,\n  defaultEmail,\n  onClosed,\n  onCancel,\n  onSubmit,\n  ...textLabels\n}: DialogProps): DialogComponent {\n  let el: HTMLDialogElement | null = null;\n\n  /**\n   * Handles when the dialog is clicked. In our case, the dialog is the\n   * semi-transparent bg behind the form. We want clicks outside of the form to\n   * hide the form.\n   */\n  function handleDialogClick(): void {\n    close();\n\n    // Only this should trigger `onClose`, we don't want the `close()` method to\n    // trigger it, otherwise it can cause cycles.\n    onClosed && onClosed();\n  }\n\n  /**\n   * Close the dialog\n   */\n  function close(): void {\n    if (el) {\n      el.open = false;\n    }\n  }\n\n  /**\n   * Opens the dialog\n   */\n  function open(): void {\n    if (el) {\n      el.open = true;\n    }\n  }\n\n  /**\n   * Check if dialog is currently opened\n   */\n  function checkIsOpen(): boolean {\n    return (el && el.open === true) || false;\n  }\n\n  const {\n    el: formEl,\n    showError,\n    hideError,\n  } = Form({\n    showEmail,\n    showName,\n    isEmailRequired,\n    isNameRequired,\n\n    defaultName,\n    defaultEmail,\n    onSubmit,\n    onCancel,\n    ...textLabels,\n  });\n\n  el = createElement(\n    'dialog',\n    {\n      className: 'dialog',\n      open: true,\n      onClick: handleDialogClick,\n    },\n    createElement(\n      'div',\n      {\n        className: 'dialog__content',\n        onClick: e => {\n          // Stop event propagation so clicks on content modal do not propagate to dialog (which will close dialog)\n          e.stopPropagation();\n        },\n      },\n      createElement(\n        'h2',\n        { className: 'dialog__header' },\n        formTitle,\n        showBranding &&\n          createElement(\n            'a',\n            {\n              className: 'brand-link',\n              target: '_blank',\n              href: 'https://sentry.io/welcome/',\n              title: 'Powered by Sentry',\n              rel: 'noopener noreferrer',\n            },\n            Logo({ colorScheme }).el,\n          ),\n      ),\n      formEl,\n    ),\n  );\n\n  return {\n    get el() {\n      return el;\n    },\n    showError,\n    hideError,\n    open,\n    close,\n    checkIsOpen,\n  };\n}\n","import type { FeedbackComponent } from '../types';\nimport { createElement } from './util/createElement';\n\nexport interface SubmitButtonProps {\n  label: string;\n}\n\ntype SubmitButtonComponent = FeedbackComponent<HTMLButtonElement>;\n\n/**\n *\n */\nexport function SubmitButton({ label }: SubmitButtonProps): SubmitButtonComponent {\n  const el = createElement(\n    'button',\n    {\n      type: 'submit',\n      className: 'btn btn--primary',\n      ['aria-label']: label,\n    },\n    label,\n  );\n\n  return {\n    el,\n  };\n}\n","import { WINDOW } from '../constants';\nimport type { FeedbackInternalOptions } from '../types';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n  el: SVGElement;\n}\n\ntype Props = Pick<FeedbackInternalOptions, 'colorScheme'>;\n\n/**\n * Sentry Logo\n */\nexport function Logo({ colorScheme }: Props): IconReturn {\n  const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n    WINDOW.document.createElementNS(XMLNS, tagName);\n  const svg = setAttributesNS(createElementNS('svg'), {\n    class: 'sentry-logo',\n    width: '32',\n    height: '30',\n    viewBox: '0 0 72 66',\n    fill: 'none',\n  });\n\n  const path = setAttributesNS(createElementNS('path'), {\n    transform: 'translate(11, 11)',\n    d: 'M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z',\n  });\n  svg.append(path);\n\n  const defs = createElementNS('defs');\n  const style = createElementNS('style');\n\n  style.textContent = `\n    path {\n      fill: ${colorScheme === 'dark' ? '#fff' : '#362d59'};\n    }`;\n\n  if (colorScheme === 'system') {\n    style.textContent += `\n    @media (prefers-color-scheme: dark) {\n      path: {\n        fill: '#fff';\n      }\n    }\n    `;\n  }\n\n  defs.append(style);\n  svg.append(defs);\n\n  return {\n    get el() {\n      return svg;\n    },\n  };\n}\n","import type { FeedbackComponent, FeedbackInternalOptions } from '../types';\nimport { Icon } from './Icon';\nimport { createElement } from './util/createElement';\n\nexport interface ActorProps extends Pick<FeedbackInternalOptions, 'buttonLabel'> {\n  onClick?: (e: MouseEvent) => void;\n}\n\nexport interface ActorComponent extends FeedbackComponent<HTMLButtonElement> {\n  /**\n   * Shows the actor element\n   */\n  show: () => void;\n  /**\n   * Hides the actor element\n   */\n  hide: () => void;\n}\n\n/**\n *\n */\nexport function Actor({ buttonLabel, onClick }: ActorProps): ActorComponent {\n  function _handleClick(e: MouseEvent): void {\n    onClick && onClick(e);\n  }\n\n  const el = createElement(\n    'button',\n    {\n      type: 'button',\n      className: 'widget__actor',\n      ['aria-label']: buttonLabel,\n      ['aria-hidden']: 'false',\n    },\n    Icon().el,\n    buttonLabel\n      ? createElement(\n          'span',\n          {\n            className: 'widget__actor__text',\n          },\n          buttonLabel,\n        )\n      : null,\n  );\n\n  el.addEventListener('click', _handleClick);\n\n  return {\n    get el() {\n      return el;\n    },\n    show: (): void => {\n      el.classList.remove('widget__actor--hidden');\n      el.setAttribute('aria-hidden', 'false');\n    },\n    hide: (): void => {\n      el.classList.add('widget__actor--hidden');\n      el.setAttribute('aria-hidden', 'true');\n    },\n  };\n}\n","import { WINDOW } from '../constants';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst SIZE = 20;\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n  el: SVGElement;\n}\n\n/**\n * Feedback Icon\n */\nexport function Icon(): IconReturn {\n  const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n    WINDOW.document.createElementNS(XMLNS, tagName);\n  const svg = setAttributesNS(createElementNS('svg'), {\n    class: 'feedback-icon',\n    width: `${SIZE}`,\n    height: `${SIZE}`,\n    viewBox: `0 0 ${SIZE} ${SIZE}`,\n    fill: 'none',\n  });\n\n  const g = setAttributesNS(createElementNS('g'), {\n    clipPath: 'url(#clip0_57_80)',\n  });\n\n  const path = setAttributesNS(createElementNS('path'), {\n    ['fill-rule']: 'evenodd',\n    ['clip-rule']: 'evenodd',\n    d: 'M15.6622 15H12.3997C12.2129 14.9959 12.031 14.9396 11.8747 14.8375L8.04965 12.2H7.49956V19.1C7.4875 19.3348 7.3888 19.5568 7.22256 19.723C7.05632 19.8892 6.83435 19.9879 6.59956 20H2.04956C1.80193 19.9968 1.56535 19.8969 1.39023 19.7218C1.21511 19.5467 1.1153 19.3101 1.11206 19.0625V12.2H0.949652C0.824431 12.2017 0.700142 12.1783 0.584123 12.1311C0.468104 12.084 0.362708 12.014 0.274155 11.9255C0.185602 11.8369 0.115689 11.7315 0.0685419 11.6155C0.0213952 11.4995 -0.00202913 11.3752 -0.00034808 11.25V3.75C-0.00900498 3.62067 0.0092504 3.49095 0.0532651 3.36904C0.0972798 3.24712 0.166097 3.13566 0.255372 3.04168C0.344646 2.94771 0.452437 2.87327 0.571937 2.82307C0.691437 2.77286 0.82005 2.74798 0.949652 2.75H8.04965L11.8747 0.1625C12.031 0.0603649 12.2129 0.00407221 12.3997 0H15.6622C15.9098 0.00323746 16.1464 0.103049 16.3215 0.278167C16.4966 0.453286 16.5964 0.689866 16.5997 0.9375V3.25269C17.3969 3.42959 18.1345 3.83026 18.7211 4.41679C19.5322 5.22788 19.9878 6.32796 19.9878 7.47502C19.9878 8.62209 19.5322 9.72217 18.7211 10.5333C18.1345 11.1198 17.3969 11.5205 16.5997 11.6974V14.0125C16.6047 14.1393 16.5842 14.2659 16.5395 14.3847C16.4948 14.5035 16.4268 14.6121 16.3394 14.7042C16.252 14.7962 16.147 14.8698 16.0307 14.9206C15.9144 14.9714 15.7891 14.9984 15.6622 15ZM1.89695 10.325H1.88715V4.625H8.33715C8.52423 4.62301 8.70666 4.56654 8.86215 4.4625L12.6872 1.875H14.7247V13.125H12.6872L8.86215 10.4875C8.70666 10.3835 8.52423 10.327 8.33715 10.325H2.20217C2.15205 10.3167 2.10102 10.3125 2.04956 10.3125C1.9981 10.3125 1.94708 10.3167 1.89695 10.325ZM2.98706 12.2V18.1625H5.66206V12.2H2.98706ZM16.5997 9.93612V5.01393C16.6536 5.02355 16.7072 5.03495 16.7605 5.04814C17.1202 5.13709 17.4556 5.30487 17.7425 5.53934C18.0293 5.77381 18.2605 6.06912 18.4192 6.40389C18.578 6.73866 18.6603 7.10452 18.6603 7.47502C18.6603 7.84552 18.578 8.21139 18.4192 8.54616C18.2605 8.88093 18.0293 9.17624 17.7425 9.41071C17.4556 9.64518 17.1202 9.81296 16.7605 9.90191C16.7072 9.91509 16.6536 9.9265 16.5997 9.93612Z',\n  });\n  svg.appendChild(g).appendChild(path);\n\n  const speakerDefs = createElementNS('defs');\n  const speakerClipPathDef = setAttributesNS(createElementNS('clipPath'), {\n    id: 'clip0_57_80',\n  });\n\n  const speakerRect = setAttributesNS(createElementNS('rect'), {\n    width: `${SIZE}`,\n    height: `${SIZE}`,\n    fill: 'white',\n  });\n\n  speakerClipPathDef.appendChild(speakerRect);\n  speakerDefs.appendChild(speakerClipPathDef);\n\n  svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);\n\n  return {\n    get el() {\n      return svg;\n    },\n  };\n}\n","/**\n * Creates <style> element for widget actor (button that opens the dialog)\n */\nexport function createActorStyles(d: Document): HTMLStyleElement {\n  const style = d.createElement('style');\n  style.textContent = `\n.widget__actor {\n  position: fixed;\n  left: var(--left);\n  right: var(--right);\n  bottom: var(--bottom);\n  top: var(--top);\n  z-index: var(--z-index);\n\n  line-height: 16px;\n\n  display: flex;\n  align-items: center;\n  gap: 8px;\n\n  border-radius: var(--border-radius);\n  cursor: pointer;\n  font-family: inherit;\n  font-size: var(--font-size);\n  font-weight: 600;\n  padding: 16px;\n  text-decoration: none;\n  z-index: 9000;\n\n  color: var(--foreground);\n  background-color: var(--background);\n  border: var(--border);\n  box-shadow: var(--box-shadow);\n  opacity: 1;\n  transition: opacity 0.1s ease-in-out;\n}\n\n.widget__actor:hover {\n  background-color: var(--background-hover);\n}\n\n.widget__actor svg {\n  width: 16px;\n  height: 16px;\n}\n\n.widget__actor--hidden {\n  opacity: 0;\n  pointer-events: none;\n  visibility: hidden;\n}\n\n.widget__actor__text {\n}\n\n@media (max-width: 600px) {\n  .widget__actor__text {\n    display: none;\n  }\n}\n\n.feedback-icon path {\n  fill: var(--foreground);\n}\n`;\n\n  return style;\n}\n","import { logger } from '@sentry/utils';\n\nimport { WINDOW } from '../constants';\nimport type { FeedbackInternalOptions } from '../types';\nimport { createDialogStyles } from './Dialog.css';\nimport { createMainStyles } from './Main.css';\n\ntype CreateShadowHostParams = Pick<FeedbackInternalOptions, 'id' | 'colorScheme' | 'themeDark' | 'themeLight'>;\n\n/**\n * Creates shadow host\n */\nexport function createShadowHost({ id, colorScheme, themeDark, themeLight }: CreateShadowHostParams): {\n  shadow: ShadowRoot;\n  host: HTMLDivElement;\n} {\n  try {\n    const doc = WINDOW.document;\n\n    // Create the host\n    const host = doc.createElement('div');\n    host.id = id;\n\n    // Create the shadow root\n    const shadow = host.attachShadow({ mode: 'open' });\n\n    shadow.appendChild(createMainStyles(doc, colorScheme, { dark: themeDark, light: themeLight }));\n    shadow.appendChild(createDialogStyles(doc));\n\n    return { shadow, host };\n  } catch {\n    // Shadow DOM probably not supported\n    logger.warn('[Feedback] Browser does not support shadow DOM API');\n    throw new Error('Browser does not support shadow DOM API.');\n  }\n}\n","/**\n * Creates <style> element for widget dialog\n */\nexport function createDialogStyles(d: Document): HTMLStyleElement {\n  const style = d.createElement('style');\n\n  style.textContent = `\n.dialog {\n  line-height: 25px;\n  background-color: rgba(0, 0, 0, 0.05);\n  border: none;\n  position: fixed;\n  inset: 0;\n  z-index: 10000;\n  width: 100vw;\n  height: 100vh;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n}\n\n.dialog:not([open]) {\n  opacity: 0;\n  pointer-events: none;\n  visibility: hidden;\n}\n.dialog:not([open]) .dialog__content {\n  transform: translate(0, -16px) scale(0.98);\n}\n\n.dialog__content {\n  position: fixed;\n  left: var(--left);\n  right: var(--right);\n  bottom: var(--bottom);\n  top: var(--top);\n\n  border: var(--border);\n  border-radius: var(--form-border-radius);\n  background-color: var(--background);\n  color: var(--foreground);\n\n  width: 320px;\n  max-width: 100%;\n  max-height: calc(100% - 2rem);\n  display: flex;\n  flex-direction: column;\n  box-shadow: var(--box-shadow);\n  transition: transform 0.2s ease-in-out;\n  transform: translate(0, 0) scale(1);\n}\n\n.dialog__header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  font-size: 20px;\n  font-weight: 600;\n  padding: 24px 24px 0 24px;\n  margin: 0;\n  margin-bottom: 16px;\n}\n\n.brand-link {\n  display: inline-flex;\n}\n\n.error {\n  color: var(--error);\n  margin-bottom: 16px;\n}\n\n.form {\n  display: grid;\n  overflow: auto;\n  flex-direction: column;\n  gap: 16px;\n  padding: 0 24px 24px;\n}\n\n.form__error-container {\n  color: var(--error);\n}\n\n.form__error-container--hidden {\n  display: none;\n}\n\n.form__label {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  margin: 0px;\n}\n\n.form__label__text {\n  display: grid;\n  gap: 4px;\n  align-items: center;\n  grid-auto-flow: column;\n  grid-auto-columns: max-content;\n}\n\n.form__label__text--required {\n  font-size: 0.85em;\n}\n\n.form__input {\n  line-height: inherit;\n  background-color: var(--input-background);\n  box-sizing: border-box;\n  border: var(--input-border);\n  border-radius: var(--form-content-border-radius);\n  color: var(--input-foreground);\n  font-family: inherit;\n  font-size: var(--font-size);\n  font-weight: 500;\n  padding: 6px 12px;\n}\n\n.form__input::placeholder {\n  color: var(--input-foreground);\n  opacity: 0.65;\n}\n\n.form__input:focus-visible {\n  outline: 1px auto var(--input-outline-focus);\n}\n\n.form__input--textarea {\n  font-family: inherit;\n  resize: vertical;\n}\n\n.btn-group {\n  display: grid;\n  gap: 8px;\n  margin-top: 8px;\n}\n\n.btn {\n  line-height: inherit;\n  border: var(--cancel-border);\n  border-radius: var(--form-content-border-radius);\n  cursor: pointer;\n  font-family: inherit;\n  font-size: var(--font-size);\n  font-weight: 600;\n  padding: 6px 16px;\n}\n.btn[disabled] {\n  opacity: 0.6;\n  pointer-events: none;\n}\n\n.btn--primary {\n  background-color: var(--submit-background);\n  border-color: var(--submit-border);\n  color: var(--submit-foreground);\n}\n.btn--primary:hover {\n  background-color: var(--submit-background-hover);\n  color: var(--submit-foreground-hover);\n}\n.btn--primary:focus-visible {\n  outline: 1px auto var(--submit-outline-focus);\n}\n\n.btn--default {\n  background-color: var(--cancel-background);\n  color: var(--cancel-foreground);\n  font-weight: 500;\n}\n.btn--default:hover {\n  background-color: var(--cancel-background-hover);\n  color: var(--cancel-foreground-hover);\n}\n.btn--default:focus-visible {\n  outline: 1px auto var(--cancel-outline-focus);\n}\n\n.success-message {\n  background-color: var(--background);\n  border: var(--border);\n  border-radius: var(--border-radius);\n  box-shadow: var(--box-shadow);\n  font-weight: 600;\n  color: var(--success);\n  padding: 12px 24px;\n  line-height: 25px;\n  display: grid;\n  align-items: center;\n  grid-auto-flow: column;\n  gap: 6px;\n  cursor: default;\n}\n\n.success-icon path {\n  fill: var(--success);\n}\n`;\n\n  return style;\n}\n","import {\n  captureException,\n  captureMessage,\n  convertIntegrationFnToClass,\n  defineIntegration,\n  getClient,\n  withScope,\n} from '@sentry/core';\nimport type { CaptureContext, Client, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport {\n  CONSOLE_LEVELS,\n  GLOBAL_OBJ,\n  addConsoleInstrumentationHandler,\n  addExceptionMechanism,\n  safeJoin,\n  severityLevelFromString,\n} from '@sentry/utils';\n\ninterface CaptureConsoleOptions {\n  levels?: string[];\n}\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options: CaptureConsoleOptions = {}) => {\n  const levels = options.levels || CONSOLE_LEVELS;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (!('console' in GLOBAL_OBJ)) {\n        return;\n      }\n\n      addConsoleInstrumentationHandler(({ args, level }) => {\n        if (getClient() !== client || !levels.includes(level)) {\n          return;\n        }\n\n        consoleHandler(args, level);\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\n/**\n * Send Console API calls as Sentry Events.\n * @deprecated Use `captureConsoleIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const CaptureConsole = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  captureConsoleIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n  new (options?: { levels?: string[] }): Integration;\n};\n\nfunction consoleHandler(args: unknown[], level: string): void {\n  const captureContext: CaptureContext = {\n    level: severityLevelFromString(level),\n    extra: {\n      arguments: args,\n    },\n  };\n\n  withScope(scope => {\n    scope.addEventProcessor(event => {\n      event.logger = 'console';\n\n      addExceptionMechanism(event, {\n        handled: false,\n        type: 'console',\n      });\n\n      return event;\n    });\n\n    if (level === 'assert' && args[0] === false) {\n      const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n      scope.setExtra('arguments', args.slice(1));\n      captureMessage(message, captureContext);\n      return;\n    }\n\n    const error = args.find(arg => arg instanceof Error);\n    if (level === 'error' && error) {\n      captureException(error, captureContext);\n      return;\n    }\n\n    const message = safeJoin(args, ' ');\n    captureMessage(message, captureContext);\n  });\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { GLOBAL_OBJ, addContextToFrame, stripUrlQueryAndFragment } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nconst DEFAULT_LINES_OF_CONTEXT = 7;\n\nconst INTEGRATION_NAME = 'ContextLines';\n\ninterface ContextLinesOptions {\n  /**\n   * Sets the number of context lines for each frame when loading a file.\n   * Defaults to 7.\n   *\n   * Set to 0 to disable loading and inclusion of source files.\n   **/\n  frameContextLines?: number;\n}\n\nconst _contextLinesIntegration = ((options: ContextLinesOptions = {}) => {\n  const contextLines = options.frameContextLines != null ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event) {\n      return addSourceContext(event, contextLines);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n\n/**\n * Collects source context lines around the lines of stackframes pointing to JS embedded in\n * the current page's HTML.\n *\n * This integration DOES NOT work for stack frames pointing to JS files that are loaded by the browser.\n * For frames pointing to files, context lines are added during ingestion and symbolication\n * by attempting to download the JS files to the Sentry backend.\n *\n * Use this integration if you have inline JS code in HTML pages that can't be accessed\n * by our backend (e.g. due to a login-protected page).\n *\n * @deprecated Use `contextLinesIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ContextLines = convertIntegrationFnToClass(INTEGRATION_NAME, contextLinesIntegration) as IntegrationClass<\n  Integration & { processEvent: (event: Event) => Event }\n> & { new (options?: { frameContextLines?: number }): Integration };\n\n/**\n * Processes an event and adds context lines.\n */\nfunction addSourceContext(event: Event, contextLines: number): Event {\n  const doc = WINDOW.document;\n  const htmlFilename = WINDOW.location && stripUrlQueryAndFragment(WINDOW.location.href);\n  if (!doc || !htmlFilename) {\n    return event;\n  }\n\n  const exceptions = event.exception && event.exception.values;\n  if (!exceptions || !exceptions.length) {\n    return event;\n  }\n\n  const html = doc.documentElement.innerHTML;\n  if (!html) {\n    return event;\n  }\n\n  const htmlLines = ['<!DOCTYPE html>', '<html>', ...html.split('\\n'), '</html>'];\n\n  exceptions.forEach(exception => {\n    const stacktrace = exception.stacktrace;\n    if (stacktrace && stacktrace.frames) {\n      stacktrace.frames = stacktrace.frames.map(frame =>\n        applySourceContextToFrame(frame, htmlLines, htmlFilename, contextLines),\n      );\n    }\n  });\n\n  return event;\n}\n\n/**\n * Only exported for testing\n */\nexport function applySourceContextToFrame(\n  frame: StackFrame,\n  htmlLines: string[],\n  htmlFilename: string,\n  linesOfContext: number,\n): StackFrame {\n  if (frame.filename !== htmlFilename || !frame.lineno || !htmlLines.length) {\n    return frame;\n  }\n\n  addContextToFrame(htmlLines, frame, linesOfContext);\n\n  return frame;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { consoleSandbox } from '@sentry/utils';\n\nconst INTEGRATION_NAME = 'Debug';\n\ninterface DebugOptions {\n  /** Controls whether console output created by this integration should be stringified. Default: `false` */\n  stringify?: boolean;\n  /** Controls whether a debugger should be launched before an event is sent. Default: `false` */\n  debugger?: boolean;\n}\n\nconst _debugIntegration = ((options: DebugOptions = {}) => {\n  const _options = {\n    debugger: false,\n    stringify: false,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (!client.on) {\n        return;\n      }\n\n      client.on('beforeSendEvent', (event: Event, hint?: EventHint) => {\n        if (_options.debugger) {\n          // eslint-disable-next-line no-debugger\n          debugger;\n        }\n\n        /* eslint-disable no-console */\n        consoleSandbox(() => {\n          if (_options.stringify) {\n            console.log(JSON.stringify(event, null, 2));\n            if (hint && Object.keys(hint).length) {\n              console.log(JSON.stringify(hint, null, 2));\n            }\n          } else {\n            console.log(event);\n            if (hint && Object.keys(hint).length) {\n              console.log(hint);\n            }\n          }\n        });\n        /* eslint-enable no-console */\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const debugIntegration = defineIntegration(_debugIntegration);\n\n/**\n * Integration to debug sent Sentry events.\n * This integration should not be used in production.\n *\n * @deprecated Use `debugIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Debug = convertIntegrationFnToClass(INTEGRATION_NAME, debugIntegration) as IntegrationClass<\n  Integration & { setup: (client: Client) => void }\n> & {\n  new (options?: {\n    stringify?: boolean;\n    debugger?: boolean;\n  }): Integration;\n};\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent: Event | undefined;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch (_oO) {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n  Integration & { processEvent: (event: Event) => Event }\n>;\n\n/** only exported for tests. */\nexport function _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFrames = _getFramesFromEvent(currentEvent);\n  let previousFrames = _getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames as StackFrame[];\n  previousFrames = previousFrames as StackFrame[];\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint as string[];\n  previousFingerprint = previousFingerprint as string[];\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n  const exception = event.exception;\n\n  if (exception) {\n    try {\n      // @ts-expect-error Object could be undefined\n      return exception.values[0].stacktrace.frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type {\n  Contexts,\n  Event,\n  EventHint,\n  ExtendedError,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n} from '@sentry/types';\nimport { addNonEnumerableProperty, isError, isPlainObject, logger, normalize } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\ninterface ExtraErrorDataOptions {\n  /**\n   * The object depth up to which to capture data on error objects.\n   */\n  depth: number;\n\n  /**\n   * Whether to capture error causes.\n   *\n   * More information: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n   */\n  captureErrorCause: boolean;\n}\n\nconst _extraErrorDataIntegration = ((options: Partial<ExtraErrorDataOptions> = {}) => {\n  const depth = options.depth || 3;\n\n  // TODO(v8): Flip the default for this option to true\n  const captureErrorCause = options.captureErrorCause || false;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event, hint) {\n      return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\n/**\n * Extract additional data for from original exceptions.\n * @deprecated Use `extraErrorDataIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ExtraErrorData = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  extraErrorDataIntegration,\n) as IntegrationClass<Integration & { processEvent: (event: Event, hint: EventHint) => Event }> & {\n  new (\n    options?: Partial<{\n      depth: number;\n      captureErrorCause: boolean;\n    }>,\n  ): Integration;\n};\n\nfunction _enhanceEventWithErrorData(\n  event: Event,\n  hint: EventHint = {},\n  depth: number,\n  captureErrorCause: boolean,\n): Event {\n  if (!hint.originalException || !isError(hint.originalException)) {\n    return event;\n  }\n  const exceptionName = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n  const errorData = _extractErrorData(hint.originalException as ExtendedError, captureErrorCause);\n\n  if (errorData) {\n    const contexts: Contexts = {\n      ...event.contexts,\n    };\n\n    const normalizedErrorData = normalize(errorData, depth);\n\n    if (isPlainObject(normalizedErrorData)) {\n      // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n      // potentially truncate the data we just already normalized, with a certain depth setting.\n      addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n      contexts[exceptionName] = normalizedErrorData;\n    }\n\n    return {\n      ...event,\n      contexts,\n    };\n  }\n\n  return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(error: ExtendedError, captureErrorCause: boolean): Record<string, unknown> | null {\n  // We are trying to enhance already existing event, so no harm done if it won't succeed\n  try {\n    const nativeKeys = [\n      'name',\n      'message',\n      'stack',\n      'line',\n      'column',\n      'fileName',\n      'lineNumber',\n      'columnNumber',\n      'toJSON',\n    ];\n\n    const extraErrorInfo: Record<string, unknown> = {};\n\n    // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n    for (const key of Object.keys(error)) {\n      if (nativeKeys.indexOf(key) !== -1) {\n        continue;\n      }\n      const value = error[key];\n      extraErrorInfo[key] = isError(value) ? value.toString() : value;\n    }\n\n    // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n    if (captureErrorCause && error.cause !== undefined) {\n      extraErrorInfo.cause = isError(error.cause) ? error.cause.toString() : error.cause;\n    }\n\n    // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n    if (typeof error.toJSON === 'function') {\n      const serializedError = error.toJSON() as Record<string, unknown>;\n\n      for (const key of Object.keys(serializedError)) {\n        const value = serializedError[key];\n        extraErrorInfo[key] = isError(value) ? value.toString() : value;\n      }\n    }\n\n    return extraErrorInfo;\n  } catch (oO) {\n    DEBUG_BUILD && logger.error('Unable to extract extra data from the Error object:', oO);\n  }\n\n  return null;\n}\n","import {\n  captureEvent,\n  convertIntegrationFnToClass,\n  defineIntegration,\n  getClient,\n  isSentryRequestUrl,\n} from '@sentry/core';\nimport type {\n  Client,\n  Event as SentryEvent,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  SentryWrappedXMLHttpRequest,\n} from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  SENTRY_XHR_DATA_KEY,\n  addExceptionMechanism,\n  addFetchInstrumentationHandler,\n  addXhrInstrumentationHandler,\n  logger,\n  supportsNativeFetch,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\nexport type HttpStatusCodeRange = [number, number] | number;\nexport type HttpRequestTarget = string | RegExp;\n\nconst INTEGRATION_NAME = 'HttpClient';\n\ninterface HttpClientOptions {\n  /**\n   * HTTP status codes that should be considered failed.\n   * This array can contain tuples of `[begin, end]` (both inclusive),\n   * single status codes, or a combinations of both\n   *\n   * Example: [[500, 505], 507]\n   * Default: [[500, 599]]\n   */\n  failedRequestStatusCodes: HttpStatusCodeRange[];\n\n  /**\n   * Targets to track for failed requests.\n   * This array can contain strings or regular expressions.\n   *\n   * Example: ['http://localhost', /api\\/.*\\/]\n   * Default: [/.*\\/]\n   */\n  failedRequestTargets: HttpRequestTarget[];\n}\n\nconst _httpClientIntegration = ((options: Partial<HttpClientOptions> = {}) => {\n  const _options: HttpClientOptions = {\n    failedRequestStatusCodes: [[500, 599]],\n    failedRequestTargets: [/.*/],\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client): void {\n      _wrapFetch(client, _options);\n      _wrapXHR(client, _options);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const httpClientIntegration = defineIntegration(_httpClientIntegration);\n\n/**\n * Create events for failed client side HTTP requests.\n * @deprecated Use `httpClientIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpClient = convertIntegrationFnToClass(INTEGRATION_NAME, httpClientIntegration) as IntegrationClass<\n  Integration & { setup: (client: Client) => void }\n> & {\n  new (options?: {\n    failedRequestStatusCodes: HttpStatusCodeRange[];\n    failedRequestTargets: HttpRequestTarget[];\n  }): Integration;\n};\n\n/**\n * Interceptor function for fetch requests\n *\n * @param requestInfo The Fetch API request info\n * @param response The Fetch API response\n * @param requestInit The request init object\n */\nfunction _fetchResponseHandler(\n  options: HttpClientOptions,\n  requestInfo: RequestInfo,\n  response: Response,\n  requestInit?: RequestInit,\n): void {\n  if (_shouldCaptureResponse(options, response.status, response.url)) {\n    const request = _getRequest(requestInfo, requestInit);\n\n    let requestHeaders, responseHeaders, requestCookies, responseCookies;\n\n    if (_shouldSendDefaultPii()) {\n      [{ headers: requestHeaders, cookies: requestCookies }, { headers: responseHeaders, cookies: responseCookies }] = [\n        { cookieHeader: 'Cookie', obj: request },\n        { cookieHeader: 'Set-Cookie', obj: response },\n      ].map(({ cookieHeader, obj }) => {\n        const headers = _extractFetchHeaders(obj.headers);\n        let cookies;\n\n        try {\n          const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;\n\n          if (cookieString) {\n            cookies = _parseCookieString(cookieString);\n          }\n        } catch (e) {\n          DEBUG_BUILD && logger.log(`Could not extract cookies from header ${cookieHeader}`);\n        }\n\n        return {\n          headers,\n          cookies,\n        };\n      });\n    }\n\n    const event = _createEvent({\n      url: request.url,\n      method: request.method,\n      status: response.status,\n      requestHeaders,\n      responseHeaders,\n      requestCookies,\n      responseCookies,\n    });\n\n    captureEvent(event);\n  }\n}\n\n/**\n * Interceptor function for XHR requests\n *\n * @param xhr The XHR request\n * @param method The HTTP method\n * @param headers The HTTP headers\n */\nfunction _xhrResponseHandler(\n  options: HttpClientOptions,\n  xhr: XMLHttpRequest,\n  method: string,\n  headers: Record<string, string>,\n): void {\n  if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) {\n    let requestHeaders, responseCookies, responseHeaders;\n\n    if (_shouldSendDefaultPii()) {\n      try {\n        const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;\n\n        if (cookieString) {\n          responseCookies = _parseCookieString(cookieString);\n        }\n      } catch (e) {\n        DEBUG_BUILD && logger.log('Could not extract cookies from response headers');\n      }\n\n      try {\n        responseHeaders = _getXHRResponseHeaders(xhr);\n      } catch (e) {\n        DEBUG_BUILD && logger.log('Could not extract headers from response');\n      }\n\n      requestHeaders = headers;\n    }\n\n    const event = _createEvent({\n      url: xhr.responseURL,\n      method,\n      status: xhr.status,\n      requestHeaders,\n      // Can't access request cookies from XHR\n      responseHeaders,\n      responseCookies,\n    });\n\n    captureEvent(event);\n  }\n}\n\n/**\n * Extracts response size from `Content-Length` header when possible\n *\n * @param headers\n * @returns The response size in bytes or undefined\n */\nfunction _getResponseSizeFromHeaders(headers?: Record<string, string>): number | undefined {\n  if (headers) {\n    const contentLength = headers['Content-Length'] || headers['content-length'];\n\n    if (contentLength) {\n      return parseInt(contentLength, 10);\n    }\n  }\n\n  return undefined;\n}\n\n/**\n * Creates an object containing cookies from the given cookie string\n *\n * @param cookieString The cookie string to parse\n * @returns The parsed cookies\n */\nfunction _parseCookieString(cookieString: string): Record<string, string> {\n  return cookieString.split('; ').reduce((acc: Record<string, string>, cookie: string) => {\n    const [key, value] = cookie.split('=');\n    acc[key] = value;\n    return acc;\n  }, {});\n}\n\n/**\n * Extracts the headers as an object from the given Fetch API request or response object\n *\n * @param headers The headers to extract\n * @returns The extracted headers as an object\n */\nfunction _extractFetchHeaders(headers: Headers): Record<string, string> {\n  const result: Record<string, string> = {};\n\n  headers.forEach((value, key) => {\n    result[key] = value;\n  });\n\n  return result;\n}\n\n/**\n * Extracts the response headers as an object from the given XHR object\n *\n * @param xhr The XHR object to extract the response headers from\n * @returns The response headers as an object\n */\nfunction _getXHRResponseHeaders(xhr: XMLHttpRequest): Record<string, string> {\n  const headers = xhr.getAllResponseHeaders();\n\n  if (!headers) {\n    return {};\n  }\n\n  return headers.split('\\r\\n').reduce((acc: Record<string, string>, line: string) => {\n    const [key, value] = line.split(': ');\n    acc[key] = value;\n    return acc;\n  }, {});\n}\n\n/**\n * Checks if the given target url is in the given list of targets\n *\n * @param target The target url to check\n * @returns true if the target url is in the given list of targets, false otherwise\n */\nfunction _isInGivenRequestTargets(\n  failedRequestTargets: HttpClientOptions['failedRequestTargets'],\n  target: string,\n): boolean {\n  return failedRequestTargets.some((givenRequestTarget: HttpRequestTarget) => {\n    if (typeof givenRequestTarget === 'string') {\n      return target.includes(givenRequestTarget);\n    }\n\n    return givenRequestTarget.test(target);\n  });\n}\n\n/**\n * Checks if the given status code is in the given range\n *\n * @param status The status code to check\n * @returns true if the status code is in the given range, false otherwise\n */\nfunction _isInGivenStatusRanges(\n  failedRequestStatusCodes: HttpClientOptions['failedRequestStatusCodes'],\n  status: number,\n): boolean {\n  return failedRequestStatusCodes.some((range: HttpStatusCodeRange) => {\n    if (typeof range === 'number') {\n      return range === status;\n    }\n\n    return status >= range[0] && status <= range[1];\n  });\n}\n\n/**\n * Wraps `fetch` function to capture request and response data\n */\nfunction _wrapFetch(client: Client, options: HttpClientOptions): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  addFetchInstrumentationHandler(handlerData => {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { response, args } = handlerData;\n    const [requestInfo, requestInit] = args as [RequestInfo, RequestInit | undefined];\n\n    if (!response) {\n      return;\n    }\n\n    _fetchResponseHandler(options, requestInfo, response as Response, requestInit);\n  });\n}\n\n/**\n * Wraps XMLHttpRequest to capture request and response data\n */\nfunction _wrapXHR(client: Client, options: HttpClientOptions): void {\n  if (!('XMLHttpRequest' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  addXhrInstrumentationHandler(handlerData => {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const xhr = handlerData.xhr as SentryWrappedXMLHttpRequest & XMLHttpRequest;\n\n    const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n    if (!sentryXhrData) {\n      return;\n    }\n\n    const { method, request_headers: headers } = sentryXhrData;\n\n    try {\n      _xhrResponseHandler(options, xhr, method, headers);\n    } catch (e) {\n      DEBUG_BUILD && logger.warn('Error while extracting response event form XHR response', e);\n    }\n  });\n}\n\n/**\n * Checks whether to capture given response as an event\n *\n * @param status response status code\n * @param url response url\n */\nfunction _shouldCaptureResponse(options: HttpClientOptions, status: number, url: string): boolean {\n  return (\n    _isInGivenStatusRanges(options.failedRequestStatusCodes, status) &&\n    _isInGivenRequestTargets(options.failedRequestTargets, url) &&\n    !isSentryRequestUrl(url, getClient())\n  );\n}\n\n/**\n * Creates a synthetic Sentry event from given response data\n *\n * @param data response data\n * @returns event\n */\nfunction _createEvent(data: {\n  url: string;\n  method: string;\n  status: number;\n  responseHeaders?: Record<string, string>;\n  responseCookies?: Record<string, string>;\n  requestHeaders?: Record<string, string>;\n  requestCookies?: Record<string, string>;\n}): SentryEvent {\n  const message = `HTTP Client Error with status code: ${data.status}`;\n\n  const event: SentryEvent = {\n    message,\n    exception: {\n      values: [\n        {\n          type: 'Error',\n          value: message,\n        },\n      ],\n    },\n    request: {\n      url: data.url,\n      method: data.method,\n      headers: data.requestHeaders,\n      cookies: data.requestCookies,\n    },\n    contexts: {\n      response: {\n        status_code: data.status,\n        headers: data.responseHeaders,\n        cookies: data.responseCookies,\n        body_size: _getResponseSizeFromHeaders(data.responseHeaders),\n      },\n    },\n  };\n\n  addExceptionMechanism(event, {\n    type: 'http.client',\n    handled: false,\n  });\n\n  return event;\n}\n\nfunction _getRequest(requestInfo: RequestInfo, requestInit?: RequestInit): Request {\n  if (!requestInit && requestInfo instanceof Request) {\n    return requestInfo;\n  }\n\n  // If both are set, we try to construct a new Request with the given arguments\n  // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed\n  // In this case, as a fallback, we just use the original request - using both is rather an edge case\n  if (requestInfo instanceof Request && requestInfo.bodyUsed) {\n    return requestInfo;\n  }\n\n  return new Request(requestInfo, requestInit);\n}\n\nfunction _shouldSendDefaultPii(): boolean {\n  const client = getClient();\n  return client ? Boolean(client.getOptions().sendDefaultPii) : false;\n}\n","import { captureMessage, convertIntegrationFnToClass, defineIntegration, getClient, withScope } from '@sentry/core';\nimport type { Client, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { GLOBAL_OBJ, supportsReportingObserver } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nconst INTEGRATION_NAME = 'ReportingObserver';\n\ninterface Report {\n  [key: string]: unknown;\n  type: ReportTypes;\n  url: string;\n  body?: ReportBody;\n}\n\ntype ReportTypes = 'crash' | 'deprecation' | 'intervention';\n\ntype ReportBody = CrashReportBody | DeprecationReportBody | InterventionReportBody;\n\ninterface CrashReportBody {\n  [key: string]: unknown;\n  crashId: string;\n  reason?: string;\n}\n\ninterface DeprecationReportBody {\n  [key: string]: unknown;\n  id: string;\n  anticipatedRemoval?: Date;\n  message: string;\n  sourceFile?: string;\n  lineNumber?: number;\n  columnNumber?: number;\n}\n\ninterface InterventionReportBody {\n  [key: string]: unknown;\n  id: string;\n  message: string;\n  sourceFile?: string;\n  lineNumber?: number;\n  columnNumber?: number;\n}\n\ninterface ReportingObserverOptions {\n  types?: ReportTypes[];\n}\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _reportingObserverIntegration = ((options: ReportingObserverOptions = {}) => {\n  const types = options.types || ['crash', 'deprecation', 'intervention'];\n\n  /** Handler for the reporting observer. */\n  function handler(reports: Report[]): void {\n    if (!SETUP_CLIENTS.has(getClient() as Client)) {\n      return;\n    }\n\n    for (const report of reports) {\n      withScope(scope => {\n        scope.setExtra('url', report.url);\n\n        const label = `ReportingObserver [${report.type}]`;\n        let details = 'No details available';\n\n        if (report.body) {\n          // Object.keys doesn't work on ReportBody, as all properties are inheirted\n          const plainBody: {\n            [key: string]: unknown;\n          } = {};\n\n          // eslint-disable-next-line guard-for-in\n          for (const prop in report.body) {\n            plainBody[prop] = report.body[prop];\n          }\n\n          scope.setExtra('body', plainBody);\n\n          if (report.type === 'crash') {\n            const body = report.body as CrashReportBody;\n            // A fancy way to create a message out of crashId OR reason OR both OR fallback\n            details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;\n          } else {\n            const body = report.body as DeprecationReportBody | InterventionReportBody;\n            details = body.message || details;\n          }\n        }\n\n        captureMessage(`${label}: ${details}`);\n      });\n    }\n  }\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      if (!supportsReportingObserver()) {\n        return;\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n      const observer = new (WINDOW as any).ReportingObserver(handler, {\n        buffered: true,\n        types,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      observer.observe();\n    },\n\n    setup(client): void {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const reportingObserverIntegration = defineIntegration(_reportingObserverIntegration);\n\n/**\n * Reporting API integration - https://w3c.github.io/reporting/\n * @deprecated Use `reportingObserverIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ReportingObserver = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  reportingObserverIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n  new (options?: {\n    types?: ReportTypes[];\n  }): Integration;\n};\n","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n  // if the path tries to go above the root, `up` ends up > 0\n  let up = 0;\n  for (let i = parts.length - 1; i >= 0; i--) {\n    const last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n  // Truncate files names greater than 1024 characters to avoid regex dos\n  // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n  const truncated = filename.length > 1024 ? `<truncated>${filename.slice(-1024)}` : filename;\n  const parts = splitPathRe.exec(truncated);\n  return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n  let resolvedPath = '';\n  let resolvedAbsolute = false;\n\n  for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    const path = i >= 0 ? args[i] : '/';\n\n    // Skip empty entries\n    if (!path) {\n      continue;\n    }\n\n    resolvedPath = `${path}/${resolvedPath}`;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(\n    resolvedPath.split('/').filter(p => !!p),\n    !resolvedAbsolute,\n  ).join('/');\n\n  return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n  let start = 0;\n  for (; start < arr.length; start++) {\n    if (arr[start] !== '') {\n      break;\n    }\n  }\n\n  let end = arr.length - 1;\n  for (; end >= 0; end--) {\n    if (arr[end] !== '') {\n      break;\n    }\n  }\n\n  if (start > end) {\n    return [];\n  }\n  return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n  /* eslint-disable no-param-reassign */\n  from = resolve(from).slice(1);\n  to = resolve(to).slice(1);\n  /* eslint-enable no-param-reassign */\n\n  const fromParts = trim(from.split('/'));\n  const toParts = trim(to.split('/'));\n\n  const length = Math.min(fromParts.length, toParts.length);\n  let samePartsLength = length;\n  for (let i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  let outputParts = [];\n  for (let i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n  const isPathAbsolute = isAbsolute(path);\n  const trailingSlash = path.slice(-1) === '/';\n\n  // Normalize the path\n  let normalizedPath = normalizeArray(\n    path.split('/').filter(p => !!p),\n    !isPathAbsolute,\n  ).join('/');\n\n  if (!normalizedPath && !isPathAbsolute) {\n    normalizedPath = '.';\n  }\n  if (normalizedPath && trailingSlash) {\n    normalizedPath += '/';\n  }\n\n  return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n  return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n  return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n  const result = splitPath(path);\n  const root = result[0];\n  let dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.slice(0, dir.length - 1);\n  }\n\n  return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n  let f = splitPath(path)[2];\n  if (ext && f.slice(ext.length * -1) === ext) {\n    f = f.slice(0, f.length - ext.length);\n  }\n  return f;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn, StackFrame, Stacktrace } from '@sentry/types';\nimport { basename, relative } from '@sentry/utils';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\ninterface RewriteFramesOptions {\n  root?: string;\n  prefix?: string;\n  iteratee?: StackFrameIteratee;\n}\n\nconst _rewriteFramesIntegration = ((options: RewriteFramesOptions = {}) => {\n  const root = options.root;\n  const prefix = options.prefix || 'app:///';\n\n  const iteratee: StackFrameIteratee =\n    options.iteratee ||\n    ((frame: StackFrame) => {\n      if (!frame.filename) {\n        return frame;\n      }\n      // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n      const isWindowsFrame =\n        /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n        // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n        (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n      // Check if the frame filename begins with `/`\n      const startsWithSlash = /^\\//.test(frame.filename);\n      if (isWindowsFrame || startsWithSlash) {\n        const filename = isWindowsFrame\n          ? frame.filename\n              .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n              .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n          : frame.filename;\n        const base = root ? relative(root, filename) : basename(filename);\n        frame.filename = `${prefix}${base}`;\n      }\n      return frame;\n    });\n\n  /** Process an exception event. */\n  function _processExceptionsEvent(event: Event): Event {\n    try {\n      return {\n        ...event,\n        exception: {\n          ...event.exception,\n          // The check for this is performed inside `process` call itself, safe to skip here\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          values: event.exception!.values!.map(value => ({\n            ...value,\n            ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n          })),\n        },\n      };\n    } catch (_oO) {\n      return event;\n    }\n  }\n\n  /** Process a stack trace. */\n  function _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n    return {\n      ...stacktrace,\n      frames: stacktrace && stacktrace.frames && stacktrace.frames.map(f => iteratee(f)),\n    };\n  }\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(originalEvent) {\n      let processedEvent = originalEvent;\n\n      if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n        processedEvent = _processExceptionsEvent(processedEvent);\n      }\n\n      return processedEvent;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const rewriteFramesIntegration = defineIntegration(_rewriteFramesIntegration);\n\n/**\n * Rewrite event frames paths.\n * @deprecated Use `rewriteFramesIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const RewriteFrames = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  rewriteFramesIntegration,\n) as IntegrationClass<Integration & { processEvent: (event: Event) => Event }> & {\n  new (options?: { root?: string; prefix?: string; iteratee?: StackFrameIteratee }): Integration;\n};\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nconst INTEGRATION_NAME = 'SessionTiming';\n\nconst _sessionTimingIntegration = (() => {\n  const startTime = Date.now();\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event) {\n      const now = Date.now();\n\n      return {\n        ...event,\n        extra: {\n          ...event.extra,\n          ['session:start']: startTime,\n          ['session:duration']: now - startTime,\n          ['session:end']: now,\n        },\n      };\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const sessionTimingIntegration = defineIntegration(_sessionTimingIntegration);\n\n/**\n * This function adds duration since Sentry was initialized till the time event was sent.\n * @deprecated Use `sessionTimingIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const SessionTiming = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  sessionTimingIntegration,\n) as IntegrationClass<Integration & { processEvent: (event: Event) => Event }>;\n","import type { IdleTransaction, SpanStatusType } from '@sentry/core';\nimport { getActiveTransaction, spanToJSON } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { WINDOW } from './types';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n  if (WINDOW.document) {\n    WINDOW.document.addEventListener('visibilitychange', () => {\n      // eslint-disable-next-line deprecation/deprecation\n      const activeTransaction = getActiveTransaction() as IdleTransaction;\n      if (WINDOW.document!.hidden && activeTransaction) {\n        const statusType: SpanStatusType = 'cancelled';\n\n        const { op, status } = spanToJSON(activeTransaction);\n\n        DEBUG_BUILD &&\n          logger.log(`[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${op}`);\n        // We should not set status if it is already set, this prevent important statuses like\n        // error or data loss from being overwritten on transaction.\n        if (!status) {\n          activeTransaction.setStatus(statusType);\n        }\n        // TODO: Can we rewrite this to an attribute?\n        // eslint-disable-next-line deprecation/deprecation\n        activeTransaction.setTag('visibilitychange', 'document.hidden');\n        activeTransaction.end();\n      }\n    });\n  } else {\n    DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n  }\n}\n","import type { DsnComponents, SpanEnvelope, SpanItem } from '@sentry/types';\nimport type { Span } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Create envelope from Span item.\n */\nexport function createSpanEnvelope(spans: Span[], dsn?: DsnComponents): SpanEnvelope {\n  const headers: SpanEnvelope[0] = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  const items = spans.map(createSpanItem);\n  return createEnvelope<SpanEnvelope>(headers, items);\n}\n\nfunction createSpanItem(span: Span): SpanItem {\n  const spanHeaders: SpanItem[0] = {\n    type: 'span',\n  };\n  return [spanHeaders, span];\n}\n","import type { Transaction } from '@sentry/core';\nimport type { Span, SpanContext } from '@sentry/types';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n  return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n *\n * Note: this will not be possible anymore in v8,\n * unless we do some special handling for browser here...\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n  // eslint-disable-next-line deprecation/deprecation\n  if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.startTimestamp = startTimestamp;\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return transaction.startChild({\n    startTimestamp,\n    ...ctx,\n  });\n}\n","/* eslint-disable max-lines */\nimport type { IdleTransaction, Transaction } from '@sentry/core';\nimport {\n  Span,\n  getActiveTransaction,\n  getClient,\n  hasTracingEnabled,\n  isValidSampleRate,\n  setMeasurement,\n} from '@sentry/core';\nimport type { ClientOptions, Measurements, SpanContext, TransactionContext } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils';\n\nimport { spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport {\n  addClsInstrumentationHandler,\n  addFidInstrumentationHandler,\n  addInpInstrumentationHandler,\n  addLcpInstrumentationHandler,\n  addPerformanceInstrumentationHandler,\n  addTtfbInstrumentationHandler,\n} from '../instrument';\nimport { WINDOW } from '../types';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport type {\n  InteractionRouteNameMapping,\n  NavigatorDeviceMemory,\n  NavigatorNetworkInformation,\n} from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nimport { createSpanEnvelope } from '@sentry/core';\nimport { getNavigationEntry } from '../web-vitals/lib/getNavigationEntry';\n\nconst MAX_INT_AS_BYTES = 2147483647;\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time: number): number {\n  return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n  // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n  return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals.\n * The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured.\n *\n * @returns A function that forces web vitals collection\n */\nexport function startTrackingWebVitals(): () => void {\n  const performance = getBrowserPerformanceAPI();\n  if (performance && browserPerformanceTimeOrigin) {\n    // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n    if (performance.mark) {\n      WINDOW.performance.mark('sentry-tracing-init');\n    }\n    const fidCallback = _trackFID();\n    const clsCallback = _trackCLS();\n    const lcpCallback = _trackLCP();\n    const ttfbCallback = _trackTtfb();\n\n    return (): void => {\n      fidCallback();\n      clsCallback();\n      lcpCallback();\n      ttfbCallback();\n    };\n  }\n\n  return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nexport function startTrackingLongTasks(): void {\n  addPerformanceInstrumentationHandler('longtask', ({ entries }) => {\n    for (const entry of entries) {\n      // eslint-disable-next-line deprecation/deprecation\n      const transaction = getActiveTransaction() as IdleTransaction | undefined;\n      if (!transaction) {\n        return;\n      }\n      const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n      const duration = msToSec(entry.duration);\n\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.startChild({\n        description: 'Main UI thread blocked',\n        op: 'ui.long-task',\n        origin: 'auto.ui.browser.metrics',\n        startTimestamp: startTime,\n        endTimestamp: startTime + duration,\n      });\n    }\n  });\n}\n\n/**\n * Start tracking interaction events.\n */\nexport function startTrackingInteractions(): void {\n  addPerformanceInstrumentationHandler('event', ({ entries }) => {\n    for (const entry of entries) {\n      // eslint-disable-next-line deprecation/deprecation\n      const transaction = getActiveTransaction() as IdleTransaction | undefined;\n      if (!transaction) {\n        return;\n      }\n\n      if (entry.name === 'click') {\n        const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n        const duration = msToSec(entry.duration);\n\n        const span: SpanContext = {\n          description: htmlTreeAsString(entry.target),\n          op: `ui.interaction.${entry.name}`,\n          origin: 'auto.ui.browser.metrics',\n          startTimestamp: startTime,\n          endTimestamp: startTime + duration,\n        };\n\n        const componentName = getComponentName(entry.target);\n        if (componentName) {\n          span.attributes = { 'ui.component_name': componentName };\n        }\n\n        // eslint-disable-next-line deprecation/deprecation\n        transaction.startChild(span);\n      }\n    }\n  });\n}\n\n/**\n * Start tracking INP webvital events.\n */\nexport function startTrackingINP(\n  interactionIdtoRouteNameMapping: InteractionRouteNameMapping,\n  interactionsSampleRate: number,\n): () => void {\n  const performance = getBrowserPerformanceAPI();\n  if (performance && browserPerformanceTimeOrigin) {\n    const inpCallback = _trackINP(interactionIdtoRouteNameMapping, interactionsSampleRate);\n\n    return (): void => {\n      inpCallback();\n    };\n  }\n\n  return () => undefined;\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): () => void {\n  return addClsInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n    _measurements['cls'] = { value: metric.value, unit: '' };\n    _clsEntry = entry as LayoutShift;\n  }, true);\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(): () => void {\n  return addLcpInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n    _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n    _lcpEntry = entry as LargestContentfulPaint;\n  }, true);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): () => void {\n  return addFidInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n\n    const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n    const startTime = msToSec(entry.startTime);\n    DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n    _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n    _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n  });\n}\n\nfunction _trackTtfb(): () => void {\n  return addTtfbInstrumentationHandler(({ metric }) => {\n    const entry = metric.entries[metric.entries.length - 1];\n    if (!entry) {\n      return;\n    }\n\n    DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n    _measurements['ttfb'] = { value: metric.value, unit: 'millisecond' };\n  });\n}\n\nconst INP_ENTRY_MAP: Record<string, 'click' | 'hover' | 'drag' | 'press'> = {\n  click: 'click',\n  pointerdown: 'click',\n  pointerup: 'click',\n  mousedown: 'click',\n  mouseup: 'click',\n  touchstart: 'click',\n  touchend: 'click',\n  mouseover: 'hover',\n  mouseout: 'hover',\n  mouseenter: 'hover',\n  mouseleave: 'hover',\n  pointerover: 'hover',\n  pointerout: 'hover',\n  pointerenter: 'hover',\n  pointerleave: 'hover',\n  dragstart: 'drag',\n  dragend: 'drag',\n  drag: 'drag',\n  dragenter: 'drag',\n  dragleave: 'drag',\n  dragover: 'drag',\n  drop: 'drag',\n  keydown: 'press',\n  keyup: 'press',\n  keypress: 'press',\n  input: 'press',\n};\n\n/** Starts tracking the Interaction to Next Paint on the current page. */\nfunction _trackINP(\n  interactionIdToRouteNameMapping: InteractionRouteNameMapping,\n  interactionsSampleRate: number,\n): () => void {\n  return addInpInstrumentationHandler(({ metric }) => {\n    if (metric.value === undefined) {\n      return;\n    }\n    const entry = metric.entries.find(\n      entry => entry.duration === metric.value && INP_ENTRY_MAP[entry.name] !== undefined,\n    );\n    const client = getClient();\n    if (!entry || !client) {\n      return;\n    }\n    const interactionType = INP_ENTRY_MAP[entry.name];\n    const options = client.getOptions();\n    /** Build the INP span, create an envelope from the span, and then send the envelope */\n    const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n    const duration = msToSec(metric.value);\n    const interaction =\n      entry.interactionId !== undefined ? interactionIdToRouteNameMapping[entry.interactionId] : undefined;\n    if (interaction === undefined) {\n      return;\n    }\n    const { routeName, parentContext, activeTransaction, user, replayId } = interaction;\n    const userDisplay = user !== undefined ? user.email || user.id || user.ip_address : undefined;\n    // eslint-disable-next-line deprecation/deprecation\n    const profileId = activeTransaction !== undefined ? activeTransaction.getProfileId() : undefined;\n    const span = new Span({\n      startTimestamp: startTime,\n      endTimestamp: startTime + duration,\n      op: `ui.interaction.${interactionType}`,\n      name: htmlTreeAsString(entry.target),\n      attributes: {\n        release: options.release,\n        environment: options.environment,\n        transaction: routeName,\n        ...(userDisplay !== undefined && userDisplay !== '' ? { user: userDisplay } : {}),\n        ...(profileId !== undefined ? { profile_id: profileId } : {}),\n        ...(replayId !== undefined ? { replay_id: replayId } : {}),\n      },\n      exclusiveTime: metric.value,\n      measurements: {\n        inp: { value: metric.value, unit: 'millisecond' },\n      },\n    });\n\n    /** Check to see if the span should be sampled */\n    const sampleRate = getSampleRate(parentContext, options, interactionsSampleRate);\n\n    if (!sampleRate) {\n      return;\n    }\n\n    if (Math.random() < (sampleRate as number | boolean)) {\n      const envelope = span ? createSpanEnvelope([span], client.getDsn()) : undefined;\n      const transport = client && client.getTransport();\n      if (transport && envelope) {\n        transport.send(envelope).then(null, reason => {\n          DEBUG_BUILD && logger.error('Error while sending interaction:', reason);\n        });\n      }\n      return;\n    }\n  });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n  const performance = getBrowserPerformanceAPI();\n  if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n    // Gatekeeper if performance API not available\n    return;\n  }\n\n  DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n  const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n  const performanceEntries = performance.getEntries();\n\n  const { op, start_timestamp: transactionStartTime } = spanToJSON(transaction);\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  performanceEntries.slice(_performanceCursor).forEach((entry: Record<string, any>) => {\n    const startTime = msToSec(entry.startTime);\n    const duration = msToSec(entry.duration);\n\n    // eslint-disable-next-line deprecation/deprecation\n    if (transaction.op === 'navigation' && transactionStartTime && timeOrigin + startTime < transactionStartTime) {\n      return;\n    }\n\n    switch (entry.entryType) {\n      case 'navigation': {\n        _addNavigationSpans(transaction, entry, timeOrigin);\n        break;\n      }\n      case 'mark':\n      case 'paint':\n      case 'measure': {\n        _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n        // capture web vitals\n        const firstHidden = getVisibilityWatcher();\n        // Only report if the page wasn't hidden prior to the web vital.\n        const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n        if (entry.name === 'first-paint' && shouldRecord) {\n          DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n          _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n        }\n        if (entry.name === 'first-contentful-paint' && shouldRecord) {\n          DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n          _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n        }\n        break;\n      }\n      case 'resource': {\n        _addResourceSpans(transaction, entry, entry.name as string, startTime, duration, timeOrigin);\n        break;\n      }\n      default:\n      // Ignore other entry types.\n    }\n  });\n\n  _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n  _trackNavigator(transaction);\n\n  // Measurements are only available for pageload transactions\n  if (op === 'pageload') {\n    _addTtfbRequestTimeToMeasurements(_measurements);\n\n    ['fcp', 'fp', 'lcp'].forEach(name => {\n      if (!_measurements[name] || !transactionStartTime || timeOrigin >= transactionStartTime) {\n        return;\n      }\n      // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n      // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n      // to be adjusted to be relative to transaction.startTimestamp.\n      const oldValue = _measurements[name].value;\n      const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n      // normalizedValue should be in milliseconds\n      const normalizedValue = Math.abs((measurementTimestamp - transactionStartTime) * 1000);\n      const delta = normalizedValue - oldValue;\n\n      DEBUG_BUILD && logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n      _measurements[name].value = normalizedValue;\n    });\n\n    const fidMark = _measurements['mark.fid'];\n    if (fidMark && _measurements['fid']) {\n      // create span for FID\n      _startChild(transaction, {\n        description: 'first input delay',\n        endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n        op: 'ui.action',\n        origin: 'auto.ui.browser.metrics',\n        startTimestamp: fidMark.value,\n      });\n\n      // Delete mark.fid as we don't want it to be part of final payload\n      delete _measurements['mark.fid'];\n    }\n\n    // If FCP is not recorded we should not record the cls value\n    // according to the new definition of CLS.\n    if (!('fcp' in _measurements)) {\n      delete _measurements.cls;\n    }\n\n    Object.keys(_measurements).forEach(measurementName => {\n      setMeasurement(measurementName, _measurements[measurementName].value, _measurements[measurementName].unit);\n    });\n\n    _tagMetricInfo(transaction);\n  }\n\n  _lcpEntry = undefined;\n  _clsEntry = undefined;\n  _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n  transaction: Transaction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  entry: Record<string, any>,\n  startTime: number,\n  duration: number,\n  timeOrigin: number,\n): number {\n  const measureStartTimestamp = timeOrigin + startTime;\n  const measureEndTimestamp = measureStartTimestamp + duration;\n\n  _startChild(transaction, {\n    description: entry.name as string,\n    endTimestamp: measureEndTimestamp,\n    op: entry.entryType as string,\n    origin: 'auto.resource.browser.metrics',\n    startTimestamp: measureStartTimestamp,\n  });\n\n  return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record<string, any>, timeOrigin: number): void {\n  ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n    _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n  });\n  _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n  _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n  _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n  _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n  transaction: Transaction,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  entry: Record<string, any>,\n  event: string,\n  timeOrigin: number,\n  description?: string,\n  eventEnd?: string,\n): void {\n  const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n  const start = entry[`${event}Start`] as number | undefined;\n  if (!start || !end) {\n    return;\n  }\n  _startChild(transaction, {\n    op: 'browser',\n    origin: 'auto.browser.browser.metrics',\n    description: description || event,\n    startTimestamp: timeOrigin + msToSec(start),\n    endTimestamp: timeOrigin + msToSec(end),\n  });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record<string, any>, timeOrigin: number): void {\n  if (entry.responseEnd) {\n    // It is possible that we are collecting these metrics when the page hasn't finished loading yet, for example when the HTML slowly streams in.\n    // In this case, ie. when the document request hasn't finished yet, `entry.responseEnd` will be 0.\n    // In order not to produce faulty spans, where the end timestamp is before the start timestamp, we will only collect\n    // these spans when the responseEnd value is available. The backend (Relay) would drop the entire transaction if it contained faulty spans.\n    _startChild(transaction, {\n      op: 'browser',\n      origin: 'auto.browser.browser.metrics',\n      description: 'request',\n      startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n      endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n    });\n\n    _startChild(transaction, {\n      op: 'browser',\n      origin: 'auto.browser.browser.metrics',\n      description: 'response',\n      startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n      endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n    });\n  }\n}\n\nexport interface ResourceEntry extends Record<string, unknown> {\n  initiatorType?: string;\n  transferSize?: number;\n  encodedBodySize?: number;\n  decodedBodySize?: number;\n  renderBlockingStatus?: string;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n  transaction: Transaction,\n  entry: ResourceEntry,\n  resourceUrl: string,\n  startTime: number,\n  duration: number,\n  timeOrigin: number,\n): void {\n  // we already instrument based on fetch and xhr, so we don't need to\n  // duplicate spans here.\n  if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n    return;\n  }\n\n  const parsedUrl = parseUrl(resourceUrl);\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const data: Record<string, any> = {};\n  setResourceEntrySizeData(data, entry, 'transferSize', 'http.response_transfer_size');\n  setResourceEntrySizeData(data, entry, 'encodedBodySize', 'http.response_content_length');\n  setResourceEntrySizeData(data, entry, 'decodedBodySize', 'http.decoded_response_content_length');\n\n  if ('renderBlockingStatus' in entry) {\n    data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n  }\n  if (parsedUrl.protocol) {\n    data['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.\n  }\n\n  if (parsedUrl.host) {\n    data['server.address'] = parsedUrl.host;\n  }\n\n  data['url.same_origin'] = resourceUrl.includes(WINDOW.location.origin);\n\n  const startTimestamp = timeOrigin + startTime;\n  const endTimestamp = startTimestamp + duration;\n\n  _startChild(transaction, {\n    description: resourceUrl.replace(WINDOW.location.origin, ''),\n    endTimestamp,\n    op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n    origin: 'auto.resource.browser.metrics',\n    startTimestamp,\n    data,\n  });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n  const navigator = WINDOW.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n  if (!navigator) {\n    return;\n  }\n\n  // track network connectivity\n  const connection = navigator.connection;\n  if (connection) {\n    if (connection.effectiveType) {\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag('effectiveConnectionType', connection.effectiveType);\n    }\n\n    if (connection.type) {\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag('connectionType', connection.type);\n    }\n\n    if (isMeasurementValue(connection.rtt)) {\n      _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n    }\n  }\n\n  if (isMeasurementValue(navigator.deviceMemory)) {\n    // TODO: Can we rewrite this to an attribute?\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n  }\n\n  if (isMeasurementValue(navigator.hardwareConcurrency)) {\n    // TODO: Can we rewrite this to an attribute?\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n  }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n  if (_lcpEntry) {\n    DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n\n    // Capture Properties of the LCP element that contributes to the LCP.\n\n    if (_lcpEntry.element) {\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n    }\n\n    if (_lcpEntry.id) {\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag('lcp.id', _lcpEntry.id);\n    }\n\n    if (_lcpEntry.url) {\n      // Trim URL to the first 200 characters.\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n    }\n\n    // TODO: Can we rewrite this to an attribute?\n    // eslint-disable-next-line deprecation/deprecation\n    transaction.setTag('lcp.size', _lcpEntry.size);\n  }\n\n  // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n  if (_clsEntry && _clsEntry.sources) {\n    DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n    _clsEntry.sources.forEach((source, index) =>\n      // TODO: Can we rewrite this to an attribute?\n      // eslint-disable-next-line deprecation/deprecation\n      transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n    );\n  }\n}\n\nfunction setResourceEntrySizeData(\n  data: Record<string, unknown>,\n  entry: ResourceEntry,\n  key: keyof Pick<ResourceEntry, 'transferSize' | 'encodedBodySize' | 'decodedBodySize'>,\n  dataKey: 'http.response_transfer_size' | 'http.response_content_length' | 'http.decoded_response_content_length',\n): void {\n  const entryVal = entry[key];\n  if (entryVal != null && entryVal < MAX_INT_AS_BYTES) {\n    data[dataKey] = entryVal;\n  }\n}\n\n/**\n * Add ttfb request time information to measurements.\n *\n * ttfb information is added via vendored web vitals library.\n */\nfunction _addTtfbRequestTimeToMeasurements(_measurements: Measurements): void {\n  const navEntry = getNavigationEntry();\n  if (!navEntry) {\n    return;\n  }\n\n  const { responseStart, requestStart } = navEntry;\n\n  if (requestStart <= responseStart) {\n    DEBUG_BUILD && logger.log('[Measurements] Adding TTFB Request Time');\n    _measurements['ttfb.requestTime'] = {\n      value: responseStart - requestStart,\n      unit: 'millisecond',\n    };\n  }\n}\n\n/** Taken from @sentry/core sampling.ts */\nfunction getSampleRate(\n  transactionContext: TransactionContext | undefined,\n  options: ClientOptions,\n  interactionsSampleRate: number,\n): number | boolean {\n  if (!hasTracingEnabled(options)) {\n    return false;\n  }\n  let sampleRate;\n  if (transactionContext !== undefined && typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler({\n      transactionContext,\n      name: transactionContext.name,\n      parentSampled: transactionContext.parentSampled,\n      attributes: {\n        // eslint-disable-next-line deprecation/deprecation\n        ...transactionContext.data,\n        ...transactionContext.attributes,\n      },\n      location: WINDOW.location,\n    });\n  } else if (transactionContext !== undefined && transactionContext.sampled !== undefined) {\n    sampleRate = transactionContext.sampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n  } else {\n    sampleRate = 1;\n  }\n  if (!isValidSampleRate(sampleRate)) {\n    DEBUG_BUILD && logger.warn('[Tracing] Discarding interaction span because of invalid sample rate.');\n    return false;\n  }\n  if (sampleRate === true) {\n    return interactionsSampleRate;\n  } else if (sampleRate === false) {\n    return 0;\n  }\n  return sampleRate * interactionsSampleRate;\n}\n","/* eslint-disable max-lines */\nimport {\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  getClient,\n  getCurrentScope,\n  getDynamicSamplingContextFromClient,\n  getDynamicSamplingContextFromSpan,\n  getIsolationScope,\n  hasTracingEnabled,\n  setHttpStatus,\n  spanToJSON,\n  spanToTraceHeader,\n  startInactiveSpan,\n} from '@sentry/core';\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, Span } from '@sentry/types';\nimport {\n  BAGGAGE_HEADER_NAME,\n  SENTRY_XHR_DATA_KEY,\n  addFetchInstrumentationHandler,\n  addXhrInstrumentationHandler,\n  browserPerformanceTimeOrigin,\n  dynamicSamplingContextToSentryBaggageHeader,\n  generateSentryTraceHeader,\n  parseUrl,\n  stringMatchesSomePattern,\n} from '@sentry/utils';\n\nimport { instrumentFetchRequest } from '../common/fetch';\nimport { addPerformanceInstrumentationHandler } from './instrument';\nimport { WINDOW } from './types';\n\nexport const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n  /**\n   * @deprecated Will be removed in v8.\n   * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control\n   * trace header attachment.\n   */\n  tracingOrigins: Array<string | RegExp>;\n\n  /**\n   * List of strings and/or regexes used to determine which outgoing requests will have `sentry-trace` and `baggage`\n   * headers attached.\n   *\n   * @deprecated Use the top-level `tracePropagationTargets` option in `Sentry.init` instead.\n   * This option will be removed in v8.\n   *\n   * Default: ['localhost', /^\\//] @see {DEFAULT_TRACE_PROPAGATION_TARGETS}\n   */\n  tracePropagationTargets: Array<string | RegExp>;\n\n  /**\n   * Flag to disable patching all together for fetch requests.\n   *\n   * Default: true\n   */\n  traceFetch: boolean;\n\n  /**\n   * Flag to disable patching all together for xhr requests.\n   *\n   * Default: true\n   */\n  traceXHR: boolean;\n\n  /**\n   * If true, Sentry will capture http timings and add them to the corresponding http spans.\n   *\n   * Default: true\n   */\n  enableHTTPTimings: boolean;\n\n  /**\n   * This function will be called before creating a span for a request with the given url.\n   * Return false if you don't want a span for the given url.\n   *\n   * Default: (url: string) => true\n   */\n  shouldCreateSpanForRequest?(this: void, url: string): boolean;\n}\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n  traceFetch: true,\n  traceXHR: true,\n  enableHTTPTimings: true,\n  // TODO (v8): Remove this property\n  tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n  tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests  */\nexport function instrumentOutgoingRequests(_options?: Partial<RequestInstrumentationOptions>): void {\n  const {\n    traceFetch,\n    traceXHR,\n    // eslint-disable-next-line deprecation/deprecation\n    tracePropagationTargets,\n    // eslint-disable-next-line deprecation/deprecation\n    tracingOrigins,\n    shouldCreateSpanForRequest,\n    enableHTTPTimings,\n  } = {\n    traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n    traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n    ..._options,\n  };\n\n  const shouldCreateSpan =\n    typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_: string) => true;\n\n  // TODO(v8) Remove tracingOrigins here\n  // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n  // and we don't want to break the API. We can remove it in v8.\n  const shouldAttachHeadersWithTargets = (url: string): boolean =>\n    shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n  const spans: Record<string, Span> = {};\n\n  if (traceFetch) {\n    addFetchInstrumentationHandler(handlerData => {\n      const createdSpan = instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n      // We cannot use `window.location` in the generic fetch instrumentation,\n      // but we need it for reliable `server.address` attribute.\n      // so we extend this in here\n      if (createdSpan) {\n        const fullUrl = getFullURL(handlerData.fetchData.url);\n        const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n        createdSpan.setAttributes({\n          'http.url': fullUrl,\n          'server.address': host,\n        });\n      }\n\n      if (enableHTTPTimings && createdSpan) {\n        addHTTPTimings(createdSpan);\n      }\n    });\n  }\n\n  if (traceXHR) {\n    addXhrInstrumentationHandler(handlerData => {\n      const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n      if (enableHTTPTimings && createdSpan) {\n        addHTTPTimings(createdSpan);\n      }\n    });\n  }\n}\n\nfunction isPerformanceResourceTiming(entry: PerformanceEntry): entry is PerformanceResourceTiming {\n  return (\n    entry.entryType === 'resource' &&\n    'initiatorType' in entry &&\n    typeof (entry as PerformanceResourceTiming).nextHopProtocol === 'string' &&\n    (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest')\n  );\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span: Span): void {\n  const { url } = spanToJSON(span).data || {};\n\n  if (!url || typeof url !== 'string') {\n    return;\n  }\n\n  const cleanup = addPerformanceInstrumentationHandler('resource', ({ entries }) => {\n    entries.forEach(entry => {\n      if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n        const spanData = resourceTimingEntryToSpanData(entry);\n        spanData.forEach(data => span.setAttribute(...data));\n        // In the next tick, clean this handler up\n        // We have to wait here because otherwise this cleans itself up before it is fully done\n        setTimeout(cleanup);\n      }\n    });\n  });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nexport function extractNetworkProtocol(nextHopProtocol: string): { name: string; version: string } {\n  let name = 'unknown';\n  let version = 'unknown';\n  let _name = '';\n  for (const char of nextHopProtocol) {\n    // http/1.1 etc.\n    if (char === '/') {\n      [name, version] = nextHopProtocol.split('/');\n      break;\n    }\n    // h2, h3 etc.\n    if (!isNaN(Number(char))) {\n      name = _name === 'h' ? 'http' : _name;\n      version = nextHopProtocol.split(_name)[1];\n      break;\n    }\n    _name += char;\n  }\n  if (_name === nextHopProtocol) {\n    // webrtc, ftp, etc.\n    name = _name;\n  }\n  return { name, version };\n}\n\nfunction getAbsoluteTime(time: number = 0): number {\n  return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming: PerformanceResourceTiming): [string, string | number][] {\n  const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n  const timingSpanData: [string, string | number][] = [];\n\n  timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n  if (!browserPerformanceTimeOrigin) {\n    return timingSpanData;\n  }\n  return [\n    ...timingSpanData,\n    ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n    ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n    ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n    ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n    ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n    ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n    ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n    ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n    ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n    ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n  ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nexport function shouldAttachHeaders(url: string, tracePropagationTargets: (string | RegExp)[] | undefined): boolean {\n  return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nexport function xhrCallback(\n  handlerData: HandlerDataXhr,\n  shouldCreateSpan: (url: string) => boolean,\n  shouldAttachHeaders: (url: string) => boolean,\n  spans: Record<string, Span>,\n): Span | undefined {\n  const xhr = handlerData.xhr;\n  const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n  if (!hasTracingEnabled() || !xhr || xhr.__sentry_own_request__ || !sentryXhrData) {\n    return undefined;\n  }\n\n  const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n  // check first if the request has finished and is tracked by an existing span which should now end\n  if (handlerData.endTimestamp && shouldCreateSpanResult) {\n    const spanId = xhr.__sentry_xhr_span_id__;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span && sentryXhrData.status_code !== undefined) {\n      setHttpStatus(span, sentryXhrData.status_code);\n      span.end();\n\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return undefined;\n  }\n\n  const scope = getCurrentScope();\n  const isolationScope = getIsolationScope();\n\n  const fullUrl = getFullURL(sentryXhrData.url);\n  const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n\n  const span = shouldCreateSpanResult\n    ? startInactiveSpan({\n        name: `${sentryXhrData.method} ${sentryXhrData.url}`,\n        onlyIfParent: true,\n        attributes: {\n          type: 'xhr',\n          'http.method': sentryXhrData.method,\n          'http.url': fullUrl,\n          url: sentryXhrData.url,\n          'server.address': host,\n          [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.browser',\n        },\n        op: 'http.client',\n      })\n    : undefined;\n\n  if (span) {\n    xhr.__sentry_xhr_span_id__ = span.spanContext().spanId;\n    spans[xhr.__sentry_xhr_span_id__] = span;\n  }\n\n  const client = getClient();\n\n  if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url) && client) {\n    const { traceId, spanId, sampled, dsc } = {\n      ...isolationScope.getPropagationContext(),\n      ...scope.getPropagationContext(),\n    };\n\n    const sentryTraceHeader = span ? spanToTraceHeader(span) : generateSentryTraceHeader(traceId, spanId, sampled);\n\n    const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(\n      dsc ||\n        (span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromClient(traceId, client, scope)),\n    );\n\n    setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n  }\n\n  return span;\n}\n\nfunction setHeaderOnXhr(\n  xhr: SentryWrappedXMLHttpRequest,\n  sentryTraceHeader: string,\n  sentryBaggageHeader: string | undefined,\n): void {\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    xhr.setRequestHeader!('sentry-trace', sentryTraceHeader);\n    if (sentryBaggageHeader) {\n      // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n      // We can therefore simply set a baggage header without checking what was there before\n      // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      xhr.setRequestHeader!(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n    }\n  } catch (_) {\n    // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n  }\n}\n\nfunction getFullURL(url: string): string | undefined {\n  try {\n    // By adding a base URL to new URL(), this will also work for relative urls\n    // If `url` is a full URL, the base URL is ignored anyhow\n    const parsed = new URL(url, WINDOW.location.origin);\n    return parsed.href;\n  } catch {\n    return undefined;\n  }\n}\n","import {\n  SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n  getClient,\n  getCurrentScope,\n  getDynamicSamplingContextFromClient,\n  getDynamicSamplingContextFromSpan,\n  getIsolationScope,\n  hasTracingEnabled,\n  setHttpStatus,\n  spanToTraceHeader,\n  startInactiveSpan,\n} from '@sentry/core';\nimport type { Client, HandlerDataFetch, Scope, Span, SpanOrigin } from '@sentry/types';\nimport {\n  BAGGAGE_HEADER_NAME,\n  dynamicSamplingContextToSentryBaggageHeader,\n  generateSentryTraceHeader,\n  isInstanceOf,\n  parseUrl,\n} from '@sentry/utils';\n\ntype PolymorphicRequestHeaders =\n  | Record<string, string | undefined>\n  | Array<[string, string]>\n  // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n  | {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      [key: string]: any;\n      append: (key: string, value: string) => void;\n      get: (key: string) => string | null | undefined;\n    };\n\n/**\n * Create and track fetch request spans for usage in combination with `addInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n  handlerData: HandlerDataFetch,\n  shouldCreateSpan: (url: string) => boolean,\n  shouldAttachHeaders: (url: string) => boolean,\n  spans: Record<string, Span>,\n  spanOrigin: SpanOrigin = 'auto.http.browser',\n): Span | undefined {\n  if (!hasTracingEnabled() || !handlerData.fetchData) {\n    return undefined;\n  }\n\n  const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n  if (handlerData.endTimestamp && shouldCreateSpanResult) {\n    const spanId = handlerData.fetchData.__span;\n    if (!spanId) return;\n\n    const span = spans[spanId];\n    if (span) {\n      endSpan(span, handlerData);\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete spans[spanId];\n    }\n    return undefined;\n  }\n\n  const scope = getCurrentScope();\n  const client = getClient();\n\n  const { method, url } = handlerData.fetchData;\n\n  const fullUrl = getFullURL(url);\n  const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n\n  const span = shouldCreateSpanResult\n    ? startInactiveSpan({\n        name: `${method} ${url}`,\n        onlyIfParent: true,\n        attributes: {\n          url,\n          type: 'fetch',\n          'http.method': method,\n          'http.url': fullUrl,\n          'server.address': host,\n          [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n        },\n        op: 'http.client',\n      })\n    : undefined;\n\n  if (span) {\n    handlerData.fetchData.__span = span.spanContext().spanId;\n    spans[span.spanContext().spanId] = span;\n  }\n\n  if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n    const request: string | Request = handlerData.args[0];\n\n    // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n    handlerData.args[1] = handlerData.args[1] || {};\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const options: { [key: string]: any } = handlerData.args[1];\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n    options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n  }\n\n  return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nexport function addTracingHeadersToFetchRequest(\n  request: string | unknown, // unknown is actually type Request but we can't export DOM types from this package,\n  client: Client,\n  scope: Scope,\n  options: {\n    headers?:\n      | {\n          [key: string]: string[] | string | undefined;\n        }\n      | PolymorphicRequestHeaders;\n  },\n  requestSpan?: Span,\n): PolymorphicRequestHeaders | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  const span = requestSpan || scope.getSpan();\n\n  const isolationScope = getIsolationScope();\n\n  const { traceId, spanId, sampled, dsc } = {\n    ...isolationScope.getPropagationContext(),\n    ...scope.getPropagationContext(),\n  };\n\n  const sentryTraceHeader = span ? spanToTraceHeader(span) : generateSentryTraceHeader(traceId, spanId, sampled);\n\n  const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(\n    dsc ||\n      (span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromClient(traceId, client, scope)),\n  );\n\n  const headers =\n    options.headers ||\n    (typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request as Request).headers : undefined);\n\n  if (!headers) {\n    return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n  } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n    const newHeaders = new Headers(headers as Headers);\n\n    newHeaders.append('sentry-trace', sentryTraceHeader);\n\n    if (sentryBaggageHeader) {\n      // If the same header is appended multiple times the browser will merge the values into a single request header.\n      // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n      newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n    }\n\n    return newHeaders as PolymorphicRequestHeaders;\n  } else if (Array.isArray(headers)) {\n    const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n    if (sentryBaggageHeader) {\n      // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n      // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n      newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n    }\n\n    return newHeaders as PolymorphicRequestHeaders;\n  } else {\n    const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n    const newBaggageHeaders: string[] = [];\n\n    if (Array.isArray(existingBaggageHeader)) {\n      newBaggageHeaders.push(...existingBaggageHeader);\n    } else if (existingBaggageHeader) {\n      newBaggageHeaders.push(existingBaggageHeader);\n    }\n\n    if (sentryBaggageHeader) {\n      newBaggageHeaders.push(sentryBaggageHeader);\n    }\n\n    return {\n      ...(headers as Exclude<typeof headers, Headers>),\n      'sentry-trace': sentryTraceHeader,\n      baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n    };\n  }\n}\n\nfunction getFullURL(url: string): string | undefined {\n  try {\n    const parsed = new URL(url);\n    return parsed.href;\n  } catch {\n    return undefined;\n  }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n  if (handlerData.response) {\n    setHttpStatus(span, handlerData.response.status);\n\n    const contentLength =\n      handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n    if (contentLength) {\n      const contentLengthNum = parseInt(contentLength);\n      if (contentLengthNum > 0) {\n        span.setAttribute('http.response_content_length', contentLengthNum);\n      }\n    }\n  } else if (handlerData.error) {\n    span.setStatus('internal_error');\n  }\n  span.end();\n}\n","/* eslint-disable max-lines */\nimport type { Hub, IdleTransaction } from '@sentry/core';\nimport { getClient, getCurrentScope } from '@sentry/core';\nimport {\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  TRACING_DEFAULTS,\n  addTracingExtensions,\n  getActiveTransaction,\n  startIdleTransaction,\n} from '@sentry/core';\nimport type { EventProcessor, Integration, Transaction, TransactionContext, TransactionSource } from '@sentry/types';\nimport { getDomElement, logger, propagationContextFromHeaders } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceInstrumentationHandler } from './instrument';\nimport {\n  addPerformanceEntries,\n  startTrackingINP,\n  startTrackingInteractions,\n  startTrackingLongTasks,\n  startTrackingWebVitals,\n} from './metrics';\nimport type { RequestInstrumentationOptions } from './request';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nimport { WINDOW } from './types';\nimport type { InteractionRouteNameMapping } from './web-vitals/types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n  /**\n   * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n   * by a moment where there are no in-progress spans.\n   *\n   * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n   * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n   * Time is in ms.\n   *\n   * Default: 1000\n   */\n  idleTimeout: number;\n\n  /**\n   * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n   * will be finished.\n   * Time is in ms.\n   *\n   * Default: 30000\n   */\n  finalTimeout: number;\n\n  /**\n   * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n   * the transaction will be finished.\n   * Time is in ms.\n   *\n   * Default: 5000\n   */\n  heartbeatInterval: number;\n\n  /**\n   * Flag to enable/disable creation of `navigation` transaction on history changes.\n   *\n   * Default: true\n   */\n  startTransactionOnLocationChange: boolean;\n\n  /**\n   * Flag to enable/disable creation of `pageload` transaction on first pageload.\n   *\n   * Default: true\n   */\n  startTransactionOnPageLoad: boolean;\n\n  /**\n   * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n   * not suited towards doing precise measurements of operations. By default, we recommend that this option\n   * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n   *\n   * Default: true\n   */\n  markBackgroundTransactions: boolean;\n\n  /**\n   * If true, Sentry will capture long tasks and add them to the corresponding transaction.\n   *\n   * Default: true\n   */\n  enableLongTask: boolean;\n\n  /**\n   * If true, Sentry will capture INP web vitals as standalone spans .\n   *\n   * Default: false\n   */\n  enableInp: boolean;\n\n  /**\n   * Sample rate to determine interaction span sampling.\n   * interactionsSampleRate is applied on top of the global tracesSampleRate.\n   * ie a tracesSampleRate of 0.1 and interactionsSampleRate of 0.5 will result in a 0.05 sample rate for interactions.\n   *\n   * Default: 1\n   */\n  interactionsSampleRate: number;\n\n  /**\n   * _metricOptions allows the user to send options to change how metrics are collected.\n   *\n   * _metricOptions is currently experimental.\n   *\n   * Default: undefined\n   */\n  _metricOptions?: Partial<{\n    /**\n     * @deprecated This property no longer has any effect and will be removed in v8.\n     */\n    _reportAllChanges: boolean;\n  }>;\n\n  /**\n   * _experiments allows the user to send options to define how this integration works.\n   * Note that the `enableLongTask` options is deprecated in favor of the option at the top level, and will be removed in v8.\n   *\n   * TODO (v8): Remove enableLongTask\n   *\n   * Default: undefined\n   */\n  _experiments: Partial<{\n    enableLongTask: boolean;\n    enableInteractions: boolean;\n    // eslint-disable-next-line deprecation/deprecation\n    onStartRouteTransaction: (t: Transaction | undefined, ctx: TransactionContext, getCurrentHub: () => Hub) => void;\n  }>;\n\n  /**\n   * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n   * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n   *\n   * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n   *\n   * @param context: The context data which will be passed to `startTransaction` by default\n   *\n   * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n   */\n  beforeNavigate?(this: void, context: TransactionContext): TransactionContext | undefined;\n\n  /**\n   * Instrumentation that creates routing change transactions. By default creates\n   * pageload and navigation transactions.\n   */\n  routingInstrumentation<T extends Transaction>(\n    this: void,\n    customStartTransaction: (context: TransactionContext) => T | undefined,\n    startTransactionOnPageLoad?: boolean,\n    startTransactionOnLocationChange?: boolean,\n  ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = {\n  ...TRACING_DEFAULTS,\n  markBackgroundTransactions: true,\n  routingInstrumentation: instrumentRoutingWithDefaults,\n  startTransactionOnLocationChange: true,\n  startTransactionOnPageLoad: true,\n  enableLongTask: true,\n  enableInp: false,\n  interactionsSampleRate: 1,\n  _experiments: {},\n  ...defaultRequestInstrumentationOptions,\n};\n\n/** We store up to 10 interaction candidates max to cap memory usage. This is the same cap as getINP from web-vitals */\nconst MAX_INTERACTIONS = 10;\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n *\n * @deprecated Use `browserTracingIntegration()` instead.\n */\nexport class BrowserTracing implements Integration {\n  // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n  // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n  // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n  // integrations.\n\n  /** Browser Tracing integration options */\n  public options: BrowserTracingOptions;\n\n  /**\n   * @inheritDoc\n   */\n  public name: string;\n\n  // eslint-disable-next-line deprecation/deprecation\n  private _getCurrentHub?: () => Hub;\n\n  private _collectWebVitals: () => void;\n\n  private _hasSetTracePropagationTargets: boolean;\n  private _interactionIdToRouteNameMapping: InteractionRouteNameMapping;\n  private _latestRoute: {\n    name: string | undefined;\n    context: TransactionContext | undefined;\n  };\n\n  public constructor(_options?: Partial<BrowserTracingOptions>) {\n    this.name = BROWSER_TRACING_INTEGRATION_ID;\n    this._hasSetTracePropagationTargets = false;\n\n    addTracingExtensions();\n\n    if (DEBUG_BUILD) {\n      this._hasSetTracePropagationTargets = !!(\n        _options &&\n        // eslint-disable-next-line deprecation/deprecation\n        (_options.tracePropagationTargets || _options.tracingOrigins)\n      );\n    }\n\n    this.options = {\n      ...DEFAULT_BROWSER_TRACING_OPTIONS,\n      ..._options,\n    };\n\n    // Special case: enableLongTask can be set in _experiments\n    // TODO (v8): Remove this in v8\n    if (this.options._experiments.enableLongTask !== undefined) {\n      this.options.enableLongTask = this.options._experiments.enableLongTask;\n    }\n\n    // TODO (v8): remove this block after tracingOrigins is removed\n    // Set tracePropagationTargets to tracingOrigins if specified by the user\n    // In case both are specified, tracePropagationTargets takes precedence\n    // eslint-disable-next-line deprecation/deprecation\n    if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.options.tracePropagationTargets = _options.tracingOrigins;\n    }\n\n    this._collectWebVitals = startTrackingWebVitals();\n    /** Stores a mapping of interactionIds from PerformanceEventTimings to the origin interaction path */\n    this._interactionIdToRouteNameMapping = {};\n\n    if (this.options.enableInp) {\n      startTrackingINP(this._interactionIdToRouteNameMapping, this.options.interactionsSampleRate);\n    }\n    if (this.options.enableLongTask) {\n      startTrackingLongTasks();\n    }\n    if (this.options._experiments.enableInteractions) {\n      startTrackingInteractions();\n    }\n\n    this._latestRoute = {\n      name: undefined,\n      context: undefined,\n    };\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n    this._getCurrentHub = getCurrentHub;\n    const hub = getCurrentHub();\n    // eslint-disable-next-line deprecation/deprecation\n    const client = hub.getClient();\n    const clientOptions = client && client.getOptions();\n\n    const {\n      routingInstrumentation: instrumentRouting,\n      startTransactionOnLocationChange,\n      startTransactionOnPageLoad,\n      markBackgroundTransactions,\n      traceFetch,\n      traceXHR,\n      shouldCreateSpanForRequest,\n      enableHTTPTimings,\n      _experiments,\n    } = this.options;\n\n    const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n    // There are three ways to configure tracePropagationTargets:\n    // 1. via top level client option `tracePropagationTargets`\n    // 2. via BrowserTracing option `tracePropagationTargets`\n    // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n    //\n    // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n    // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n    // This is done as it minimizes bundle size (we don't have to have undefined checks).\n    //\n    // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n    // eslint-disable-next-line deprecation/deprecation\n    const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n    if (DEBUG_BUILD && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n      logger.warn(\n        '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n      );\n    }\n\n    instrumentRouting(\n      (context: TransactionContext) => {\n        const transaction = this._createRouteTransaction(context);\n\n        this.options._experiments.onStartRouteTransaction &&\n          this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n        return transaction;\n      },\n      startTransactionOnPageLoad,\n      startTransactionOnLocationChange,\n    );\n\n    if (markBackgroundTransactions) {\n      registerBackgroundTabDetection();\n    }\n\n    if (_experiments.enableInteractions) {\n      this._registerInteractionListener();\n    }\n\n    if (this.options.enableInp) {\n      this._registerInpInteractionListener();\n    }\n\n    instrumentOutgoingRequests({\n      traceFetch,\n      traceXHR,\n      tracePropagationTargets,\n      shouldCreateSpanForRequest,\n      enableHTTPTimings,\n    });\n  }\n\n  /** Create routing idle transaction. */\n  private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n    if (!this._getCurrentHub) {\n      DEBUG_BUILD &&\n        logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n      return undefined;\n    }\n\n    const hub = this._getCurrentHub();\n\n    const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n    const isPageloadTransaction = context.op === 'pageload';\n\n    let expandedContext: TransactionContext;\n    if (isPageloadTransaction) {\n      const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n      const baggage = isPageloadTransaction ? getMetaContent('baggage') : undefined;\n      const { traceId, dsc, parentSpanId, sampled } = propagationContextFromHeaders(sentryTrace, baggage);\n      expandedContext = {\n        traceId,\n        parentSpanId,\n        parentSampled: sampled,\n        ...context,\n        metadata: {\n          // eslint-disable-next-line deprecation/deprecation\n          ...context.metadata,\n          dynamicSamplingContext: dsc,\n        },\n        trimEnd: true,\n      };\n    } else {\n      expandedContext = {\n        trimEnd: true,\n        ...context,\n      };\n    }\n\n    const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n    // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n    // from being sent to Sentry).\n    const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n    // If `beforeNavigate` set a custom name, record that fact\n    // eslint-disable-next-line deprecation/deprecation\n    finalContext.metadata =\n      finalContext.name !== expandedContext.name\n        ? // eslint-disable-next-line deprecation/deprecation\n          { ...finalContext.metadata, source: 'custom' }\n        : // eslint-disable-next-line deprecation/deprecation\n          finalContext.metadata;\n\n    this._latestRoute.name = finalContext.name;\n    this._latestRoute.context = finalContext;\n\n    // eslint-disable-next-line deprecation/deprecation\n    if (finalContext.sampled === false) {\n      DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n    }\n\n    DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n    const { location } = WINDOW;\n\n    const idleTransaction = startIdleTransaction(\n      hub,\n      finalContext,\n      idleTimeout,\n      finalTimeout,\n      true,\n      { location }, // for use in the tracesSampler\n      heartbeatInterval,\n      isPageloadTransaction, // should wait for finish signal if it's a pageload transaction\n    );\n\n    if (isPageloadTransaction) {\n      if (WINDOW.document) {\n        WINDOW.document.addEventListener('readystatechange', () => {\n          if (['interactive', 'complete'].includes(WINDOW.document!.readyState)) {\n            idleTransaction.sendAutoFinishSignal();\n          }\n        });\n\n        if (['interactive', 'complete'].includes(WINDOW.document.readyState)) {\n          idleTransaction.sendAutoFinishSignal();\n        }\n      }\n    }\n\n    idleTransaction.registerBeforeFinishCallback(transaction => {\n      this._collectWebVitals();\n      addPerformanceEntries(transaction);\n    });\n\n    return idleTransaction as Transaction;\n  }\n\n  /** Start listener for interaction transactions */\n  private _registerInteractionListener(): void {\n    let inflightInteractionTransaction: IdleTransaction | undefined;\n    const registerInteractionTransaction = (): void => {\n      const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n      const op = 'ui.action.click';\n\n      // eslint-disable-next-line deprecation/deprecation\n      const currentTransaction = getActiveTransaction();\n      if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n        DEBUG_BUILD &&\n          logger.warn(\n            `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n          );\n        return undefined;\n      }\n\n      if (inflightInteractionTransaction) {\n        inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n        inflightInteractionTransaction.end();\n        inflightInteractionTransaction = undefined;\n      }\n\n      if (!this._getCurrentHub) {\n        DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n        return undefined;\n      }\n\n      if (!this._latestRoute.name) {\n        DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n        return undefined;\n      }\n\n      const hub = this._getCurrentHub();\n      const { location } = WINDOW;\n\n      const context: TransactionContext = {\n        name: this._latestRoute.name,\n        op,\n        trimEnd: true,\n        data: {\n          [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: this._latestRoute.context\n            ? getSource(this._latestRoute.context)\n            : undefined || 'url',\n        },\n      };\n\n      inflightInteractionTransaction = startIdleTransaction(\n        hub,\n        context,\n        idleTimeout,\n        finalTimeout,\n        true,\n        { location }, // for use in the tracesSampler\n        heartbeatInterval,\n      );\n    };\n\n    ['click'].forEach(type => {\n      if (WINDOW.document) {\n        addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n      }\n    });\n  }\n\n  /** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */\n  private _registerInpInteractionListener(): void {\n    const handleEntries = ({ entries }: { entries: PerformanceEntry[] }): void => {\n      const client = getClient();\n      // We need to get the replay, user, and activeTransaction from the current scope\n      // so that we can associate replay id, profile id, and a user display to the span\n      const replay =\n        client !== undefined && client.getIntegrationByName !== undefined\n          ? (client.getIntegrationByName('Replay') as Integration & { getReplayId: () => string })\n          : undefined;\n      const replayId = replay !== undefined ? replay.getReplayId() : undefined;\n      // eslint-disable-next-line deprecation/deprecation\n      const activeTransaction = getActiveTransaction();\n      const currentScope = getCurrentScope();\n      const user = currentScope !== undefined ? currentScope.getUser() : undefined;\n      entries.forEach(entry => {\n        if (isPerformanceEventTiming(entry)) {\n          const interactionId = entry.interactionId;\n          if (interactionId === undefined) {\n            return;\n          }\n          const existingInteraction = this._interactionIdToRouteNameMapping[interactionId];\n          const duration = entry.duration;\n          const startTime = entry.startTime;\n          const keys = Object.keys(this._interactionIdToRouteNameMapping);\n          const minInteractionId =\n            keys.length > 0\n              ? keys.reduce((a, b) => {\n                  return this._interactionIdToRouteNameMapping[a].duration <\n                    this._interactionIdToRouteNameMapping[b].duration\n                    ? a\n                    : b;\n                })\n              : undefined;\n          // For a first input event to be considered, we must check that an interaction event does not already exist with the same duration and start time.\n          // This is also checked in the web-vitals library.\n          if (entry.entryType === 'first-input') {\n            const matchingEntry = keys\n              .map(key => this._interactionIdToRouteNameMapping[key])\n              .some(interaction => {\n                return interaction.duration === duration && interaction.startTime === startTime;\n              });\n            if (matchingEntry) {\n              return;\n            }\n          }\n          // Interactions with an id of 0 and are not first-input are not valid.\n          if (!interactionId) {\n            return;\n          }\n          // If the interaction already exists, we want to use the duration of the longest entry, since that is what the INP metric uses.\n          if (existingInteraction) {\n            existingInteraction.duration = Math.max(existingInteraction.duration, duration);\n          } else if (\n            keys.length < MAX_INTERACTIONS ||\n            minInteractionId === undefined ||\n            duration > this._interactionIdToRouteNameMapping[minInteractionId].duration\n          ) {\n            // If the interaction does not exist, we want to add it to the mapping if there is space, or if the duration is longer than the shortest entry.\n            const routeName = this._latestRoute.name;\n            const parentContext = this._latestRoute.context;\n            if (routeName && parentContext) {\n              if (minInteractionId && Object.keys(this._interactionIdToRouteNameMapping).length >= MAX_INTERACTIONS) {\n                // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                delete this._interactionIdToRouteNameMapping[minInteractionId];\n              }\n              this._interactionIdToRouteNameMapping[interactionId] = {\n                routeName,\n                duration,\n                parentContext,\n                user,\n                activeTransaction,\n                replayId,\n                startTime,\n              };\n            }\n          }\n        }\n      });\n    };\n    addPerformanceInstrumentationHandler('event', handleEntries);\n    addPerformanceInstrumentationHandler('first-input', handleEntries);\n  }\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | undefined {\n  // Can't specify generic to `getDomElement` because tracing can be used\n  // in a variety of environments, have to disable `no-unsafe-member-access`\n  // as a result.\n  const metaTag = getDomElement(`meta[name=${metaName}]`);\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nfunction getSource(context: TransactionContext): TransactionSource | undefined {\n  const sourceFromAttributes = context.attributes && context.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n  // eslint-disable-next-line deprecation/deprecation\n  const sourceFromData = context.data && context.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n  // eslint-disable-next-line deprecation/deprecation\n  const sourceFromMetadata = context.metadata && context.metadata.source;\n\n  return sourceFromAttributes || sourceFromData || sourceFromMetadata;\n}\n\nfunction isPerformanceEventTiming(entry: PerformanceEntry): entry is PerformanceEventTiming {\n  return 'duration' in entry;\n}\n","import type { Transaction, TransactionContext } from '@sentry/types';\nimport { addHistoryInstrumentationHandler, browserPerformanceTimeOrigin, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { WINDOW } from './types';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults<T extends Transaction>(\n  customStartTransaction: (context: TransactionContext) => T | undefined,\n  startTransactionOnPageLoad: boolean = true,\n  startTransactionOnLocationChange: boolean = true,\n): void {\n  if (!WINDOW || !WINDOW.location) {\n    DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n    return;\n  }\n\n  let startingUrl: string | undefined = WINDOW.location.href;\n\n  let activeTransaction: T | undefined;\n  if (startTransactionOnPageLoad) {\n    activeTransaction = customStartTransaction({\n      name: WINDOW.location.pathname,\n      // pageload should always start at timeOrigin (and needs to be in s, not ms)\n      startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n      op: 'pageload',\n      origin: 'auto.pageload.browser',\n      metadata: { source: 'url' },\n    });\n  }\n\n  if (startTransactionOnLocationChange) {\n    addHistoryInstrumentationHandler(({ to, from }) => {\n      /**\n       * This early return is there to account for some cases where a navigation transaction starts right after\n       * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n       * create an uneccessary navigation transaction.\n       *\n       * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n       * only be caused in certain development environments where the usage of a hot module reloader is causing\n       * errors.\n       */\n      if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n        startingUrl = undefined;\n        return;\n      }\n\n      if (from !== to) {\n        startingUrl = undefined;\n        if (activeTransaction) {\n          DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n          // If there's an open transaction on the scope, we need to finish it before creating an new one.\n          activeTransaction.end();\n        }\n        activeTransaction = customStartTransaction({\n          name: WINDOW.location.pathname,\n          op: 'navigation',\n          origin: 'auto.navigation.browser',\n          metadata: { source: 'url' },\n        });\n      }\n    });\n  }\n}\n","/* eslint-disable max-lines */\nimport type { IdleTransaction } from '@sentry/core';\nimport { getActiveSpan, getClient, getCurrentScope } from '@sentry/core';\nimport { getCurrentHub } from '@sentry/core';\nimport {\n  SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n  TRACING_DEFAULTS,\n  addTracingExtensions,\n  getActiveTransaction,\n  spanToJSON,\n  startIdleTransaction,\n} from '@sentry/core';\nimport type {\n  Client,\n  Integration,\n  IntegrationFn,\n  StartSpanOptions,\n  Transaction,\n  TransactionContext,\n  TransactionSource,\n} from '@sentry/types';\nimport type { Span } from '@sentry/types';\nimport {\n  addHistoryInstrumentationHandler,\n  browserPerformanceTimeOrigin,\n  getDomElement,\n  logger,\n  propagationContextFromHeaders,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceInstrumentationHandler } from './instrument';\nimport {\n  addPerformanceEntries,\n  startTrackingINP,\n  startTrackingInteractions,\n  startTrackingLongTasks,\n  startTrackingWebVitals,\n} from './metrics';\nimport type { RequestInstrumentationOptions } from './request';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request';\nimport { WINDOW } from './types';\nimport type { InteractionRouteNameMapping } from './web-vitals/types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n  /**\n   * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n   * by a moment where there are no in-progress spans.\n   *\n   * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n   * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n   * Time is in ms.\n   *\n   * Default: 1000\n   */\n  idleTimeout: number;\n\n  /**\n   * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n   * will be finished.\n   * Time is in ms.\n   *\n   * Default: 30000\n   */\n  finalTimeout: number;\n\n  /**\n   * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n   * the transaction will be finished.\n   * Time is in ms.\n   *\n   * Default: 5000\n   */\n  heartbeatInterval: number;\n\n  /**\n   * If a span should be created on page load.\n   * If this is set to `false`, this integration will not start the default page load span.\n   * Default: true\n   */\n  instrumentPageLoad: boolean;\n\n  /**\n   * If a span should be created on navigation (history change).\n   * If this is set to `false`, this integration will not start the default navigation spans.\n   * Default: true\n   */\n  instrumentNavigation: boolean;\n\n  /**\n   * Flag spans where tabs moved to background with \"cancelled\". Browser background tab timing is\n   * not suited towards doing precise measurements of operations. By default, we recommend that this option\n   * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n   *\n   * Default: true\n   */\n  markBackgroundSpan: boolean;\n\n  /**\n   * If true, Sentry will capture long tasks and add them to the corresponding transaction.\n   *\n   * Default: true\n   */\n  enableLongTask: boolean;\n\n  /**\n   * If true, Sentry will capture INP web vitals as standalone spans .\n   *\n   * Default: false\n   */\n  enableInp: boolean;\n\n  /**\n   * Sample rate to determine interaction span sampling.\n   * interactionsSampleRate is applied on top of the global tracesSampleRate.\n   * ie a tracesSampleRate of 0.1 and interactionsSampleRate of 0.5 will result in a 0.05 sample rate for interactions.\n   *\n   * Default: 1\n   */\n  interactionsSampleRate: number;\n\n  /**\n   * _metricOptions allows the user to send options to change how metrics are collected.\n   *\n   * _metricOptions is currently experimental.\n   *\n   * Default: undefined\n   */\n  _metricOptions?: Partial<{\n    /**\n     * @deprecated This property no longer has any effect and will be removed in v8.\n     */\n    _reportAllChanges: boolean;\n  }>;\n\n  /**\n   * _experiments allows the user to send options to define how this integration works.\n   * Note that the `enableLongTask` options is deprecated in favor of the option at the top level, and will be removed in v8.\n   *\n   * TODO (v8): Remove enableLongTask\n   *\n   * Default: undefined\n   */\n  _experiments: Partial<{\n    enableInteractions: boolean;\n  }>;\n\n  /**\n   * A callback which is called before a span for a pageload or navigation is started.\n   * It receives the options passed to `startSpan`, and expects to return an updated options object.\n   */\n  beforeStartSpan?: (options: StartSpanOptions) => StartSpanOptions;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = {\n  ...TRACING_DEFAULTS,\n  instrumentNavigation: true,\n  instrumentPageLoad: true,\n  markBackgroundSpan: true,\n  enableLongTask: true,\n  enableInp: false,\n  interactionsSampleRate: 1,\n  _experiments: {},\n  ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n *\n * We explicitly export the proper type here, as this has to be extended in some cases.\n */\nexport const browserTracingIntegration = ((_options: Partial<BrowserTracingOptions> = {}) => {\n  const _hasSetTracePropagationTargets = DEBUG_BUILD\n    ? !!(\n        // eslint-disable-next-line deprecation/deprecation\n        (_options.tracePropagationTargets || _options.tracingOrigins)\n      )\n    : false;\n\n  addTracingExtensions();\n\n  // TODO (v8): remove this block after tracingOrigins is removed\n  // Set tracePropagationTargets to tracingOrigins if specified by the user\n  // In case both are specified, tracePropagationTargets takes precedence\n  // eslint-disable-next-line deprecation/deprecation\n  if (!_options.tracePropagationTargets && _options.tracingOrigins) {\n    // eslint-disable-next-line deprecation/deprecation\n    _options.tracePropagationTargets = _options.tracingOrigins;\n  }\n\n  const options = {\n    ...DEFAULT_BROWSER_TRACING_OPTIONS,\n    ..._options,\n  };\n\n  const _collectWebVitals = startTrackingWebVitals();\n\n  /** Stores a mapping of interactionIds from PerformanceEventTimings to the origin interaction path */\n  const interactionIdToRouteNameMapping: InteractionRouteNameMapping = {};\n  if (options.enableInp) {\n    startTrackingINP(interactionIdToRouteNameMapping, options.interactionsSampleRate);\n  }\n\n  if (options.enableLongTask) {\n    startTrackingLongTasks();\n  }\n  if (options._experiments.enableInteractions) {\n    startTrackingInteractions();\n  }\n\n  const latestRoute: {\n    name: string | undefined;\n    context: TransactionContext | undefined;\n  } = {\n    name: undefined,\n    context: undefined,\n  };\n\n  /** Create routing idle transaction. */\n  function _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n    // eslint-disable-next-line deprecation/deprecation\n    const hub = getCurrentHub();\n\n    const { beforeStartSpan, idleTimeout, finalTimeout, heartbeatInterval } = options;\n\n    const isPageloadTransaction = context.op === 'pageload';\n\n    let expandedContext: TransactionContext;\n    if (isPageloadTransaction) {\n      const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n      const baggage = isPageloadTransaction ? getMetaContent('baggage') : undefined;\n      const { traceId, dsc, parentSpanId, sampled } = propagationContextFromHeaders(sentryTrace, baggage);\n      expandedContext = {\n        traceId,\n        parentSpanId,\n        parentSampled: sampled,\n        ...context,\n        metadata: {\n          // eslint-disable-next-line deprecation/deprecation\n          ...context.metadata,\n          dynamicSamplingContext: dsc,\n        },\n        trimEnd: true,\n      };\n    } else {\n      expandedContext = {\n        trimEnd: true,\n        ...context,\n      };\n    }\n\n    const finalContext = beforeStartSpan ? beforeStartSpan(expandedContext) : expandedContext;\n\n    // If `beforeStartSpan` set a custom name, record that fact\n    // eslint-disable-next-line deprecation/deprecation\n    finalContext.metadata =\n      finalContext.name !== expandedContext.name\n        ? // eslint-disable-next-line deprecation/deprecation\n          { ...finalContext.metadata, source: 'custom' }\n        : // eslint-disable-next-line deprecation/deprecation\n          finalContext.metadata;\n\n    latestRoute.name = finalContext.name;\n    latestRoute.context = finalContext;\n\n    if (finalContext.sampled === false) {\n      DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n    }\n\n    DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n    const { location } = WINDOW;\n\n    const idleTransaction = startIdleTransaction(\n      hub,\n      finalContext,\n      idleTimeout,\n      finalTimeout,\n      true,\n      { location }, // for use in the tracesSampler\n      heartbeatInterval,\n      isPageloadTransaction, // should wait for finish signal if it's a pageload transaction\n    );\n\n    if (isPageloadTransaction && WINDOW.document) {\n      WINDOW.document.addEventListener('readystatechange', () => {\n        if (['interactive', 'complete'].includes(WINDOW.document!.readyState)) {\n          idleTransaction.sendAutoFinishSignal();\n        }\n      });\n\n      if (['interactive', 'complete'].includes(WINDOW.document.readyState)) {\n        idleTransaction.sendAutoFinishSignal();\n      }\n    }\n\n    idleTransaction.registerBeforeFinishCallback(transaction => {\n      _collectWebVitals();\n      addPerformanceEntries(transaction);\n    });\n\n    return idleTransaction as Transaction;\n  }\n\n  return {\n    name: BROWSER_TRACING_INTEGRATION_ID,\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    setupOnce: () => {},\n    afterAllSetup(client) {\n      const clientOptions = client.getOptions();\n\n      const { markBackgroundSpan, traceFetch, traceXHR, shouldCreateSpanForRequest, enableHTTPTimings, _experiments } =\n        options;\n\n      const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n      // There are three ways to configure tracePropagationTargets:\n      // 1. via top level client option `tracePropagationTargets`\n      // 2. via BrowserTracing option `tracePropagationTargets`\n      // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n      //\n      // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n      // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n      // This is done as it minimizes bundle size (we don't have to have undefined checks).\n      //\n      // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n      // eslint-disable-next-line deprecation/deprecation\n      const tracePropagationTargets = clientOptionsTracePropagationTargets || options.tracePropagationTargets;\n      if (DEBUG_BUILD && _hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n        logger.warn(\n          '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n        );\n      }\n\n      let activeSpan: Span | undefined;\n      let startingUrl: string | undefined = WINDOW.location && WINDOW.location.href;\n\n      if (client.on) {\n        client.on('startNavigationSpan', (context: StartSpanOptions) => {\n          if (activeSpan) {\n            DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${spanToJSON(activeSpan).op}`);\n            // If there's an open transaction on the scope, we need to finish it before creating an new one.\n            activeSpan.end();\n          }\n          activeSpan = _createRouteTransaction({\n            op: 'navigation',\n            ...context,\n          });\n        });\n\n        client.on('startPageLoadSpan', (context: StartSpanOptions) => {\n          if (activeSpan) {\n            DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${spanToJSON(activeSpan).op}`);\n            // If there's an open transaction on the scope, we need to finish it before creating an new one.\n            activeSpan.end();\n          }\n          activeSpan = _createRouteTransaction({\n            op: 'pageload',\n            ...context,\n          });\n        });\n      }\n\n      if (options.instrumentPageLoad && client.emit && WINDOW.location) {\n        const context: StartSpanOptions = {\n          name: WINDOW.location.pathname,\n          // pageload should always start at timeOrigin (and needs to be in s, not ms)\n          startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n          origin: 'auto.pageload.browser',\n          attributes: {\n            [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n          },\n        };\n        startBrowserTracingPageLoadSpan(client, context);\n      }\n\n      if (options.instrumentNavigation && client.emit && WINDOW.location) {\n        addHistoryInstrumentationHandler(({ to, from }) => {\n          /**\n           * This early return is there to account for some cases where a navigation transaction starts right after\n           * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n           * create an uneccessary navigation transaction.\n           *\n           * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n           * only be caused in certain development environments where the usage of a hot module reloader is causing\n           * errors.\n           */\n          if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n            startingUrl = undefined;\n            return;\n          }\n\n          if (from !== to) {\n            startingUrl = undefined;\n            const context: StartSpanOptions = {\n              name: WINDOW.location.pathname,\n              origin: 'auto.navigation.browser',\n              attributes: {\n                [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n              },\n            };\n\n            startBrowserTracingNavigationSpan(client, context);\n          }\n        });\n      }\n\n      if (markBackgroundSpan) {\n        registerBackgroundTabDetection();\n      }\n\n      if (_experiments.enableInteractions) {\n        registerInteractionListener(options, latestRoute);\n      }\n\n      if (options.enableInp) {\n        registerInpInteractionListener(interactionIdToRouteNameMapping, latestRoute);\n      }\n\n      instrumentOutgoingRequests({\n        traceFetch,\n        traceXHR,\n        tracePropagationTargets,\n        shouldCreateSpanForRequest,\n        enableHTTPTimings,\n      });\n    },\n    // TODO v8: Remove this again\n    // This is private API that we use to fix converted BrowserTracing integrations in Next.js & SvelteKit\n    options,\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Manually start a page load span.\n * This will only do something if the BrowserTracing integration has been setup.\n */\nexport function startBrowserTracingPageLoadSpan(client: Client, spanOptions: StartSpanOptions): Span | undefined {\n  if (!client.emit) {\n    return;\n  }\n\n  client.emit('startPageLoadSpan', spanOptions);\n\n  const span = getActiveSpan();\n  const op = span && spanToJSON(span).op;\n  return op === 'pageload' ? span : undefined;\n}\n\n/**\n * Manually start a navigation span.\n * This will only do something if the BrowserTracing integration has been setup.\n */\nexport function startBrowserTracingNavigationSpan(client: Client, spanOptions: StartSpanOptions): Span | undefined {\n  if (!client.emit) {\n    return;\n  }\n\n  client.emit('startNavigationSpan', spanOptions);\n\n  const span = getActiveSpan();\n  const op = span && spanToJSON(span).op;\n  return op === 'navigation' ? span : undefined;\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | undefined {\n  // Can't specify generic to `getDomElement` because tracing can be used\n  // in a variety of environments, have to disable `no-unsafe-member-access`\n  // as a result.\n  const metaTag = getDomElement(`meta[name=${metaName}]`);\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\n/** Start listener for interaction transactions */\nfunction registerInteractionListener(\n  options: BrowserTracingOptions,\n  latestRoute: {\n    name: string | undefined;\n    context: TransactionContext | undefined;\n  },\n): void {\n  let inflightInteractionTransaction: IdleTransaction | undefined;\n  const registerInteractionTransaction = (): void => {\n    const { idleTimeout, finalTimeout, heartbeatInterval } = options;\n    const op = 'ui.action.click';\n\n    // eslint-disable-next-line deprecation/deprecation\n    const currentTransaction = getActiveTransaction();\n    if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n        );\n      return undefined;\n    }\n\n    if (inflightInteractionTransaction) {\n      inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n      inflightInteractionTransaction.end();\n      inflightInteractionTransaction = undefined;\n    }\n\n    if (!latestRoute.name) {\n      DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n      return undefined;\n    }\n\n    const { location } = WINDOW;\n\n    const context: TransactionContext = {\n      name: latestRoute.name,\n      op,\n      trimEnd: true,\n      data: {\n        [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.context ? getSource(latestRoute.context) : undefined || 'url',\n      },\n    };\n\n    inflightInteractionTransaction = startIdleTransaction(\n      // eslint-disable-next-line deprecation/deprecation\n      getCurrentHub(),\n      context,\n      idleTimeout,\n      finalTimeout,\n      true,\n      { location }, // for use in the tracesSampler\n      heartbeatInterval,\n    );\n  };\n\n  ['click'].forEach(type => {\n    if (WINDOW.document) {\n      addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n    }\n  });\n}\n\nfunction isPerformanceEventTiming(entry: PerformanceEntry): entry is PerformanceEventTiming {\n  return 'duration' in entry;\n}\n\n/** We store up to 10 interaction candidates max to cap memory usage. This is the same cap as getINP from web-vitals */\nconst MAX_INTERACTIONS = 10;\n\n/** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */\nfunction registerInpInteractionListener(\n  interactionIdToRouteNameMapping: InteractionRouteNameMapping,\n  latestRoute: {\n    name: string | undefined;\n    context: TransactionContext | undefined;\n  },\n): void {\n  const handleEntries = ({ entries }: { entries: PerformanceEntry[] }): void => {\n    const client = getClient();\n    // We need to get the replay, user, and activeTransaction from the current scope\n    // so that we can associate replay id, profile id, and a user display to the span\n    const replay =\n      client !== undefined && client.getIntegrationByName !== undefined\n        ? (client.getIntegrationByName('Replay') as Integration & { getReplayId: () => string })\n        : undefined;\n    const replayId = replay !== undefined ? replay.getReplayId() : undefined;\n    // eslint-disable-next-line deprecation/deprecation\n    const activeTransaction = getActiveTransaction();\n    const currentScope = getCurrentScope();\n    const user = currentScope !== undefined ? currentScope.getUser() : undefined;\n    entries.forEach(entry => {\n      if (isPerformanceEventTiming(entry)) {\n        const interactionId = entry.interactionId;\n        if (interactionId === undefined) {\n          return;\n        }\n        const existingInteraction = interactionIdToRouteNameMapping[interactionId];\n        const duration = entry.duration;\n        const startTime = entry.startTime;\n        const keys = Object.keys(interactionIdToRouteNameMapping);\n        const minInteractionId =\n          keys.length > 0\n            ? keys.reduce((a, b) => {\n                return interactionIdToRouteNameMapping[a].duration < interactionIdToRouteNameMapping[b].duration\n                  ? a\n                  : b;\n              })\n            : undefined;\n        // For a first input event to be considered, we must check that an interaction event does not already exist with the same duration and start time.\n        // This is also checked in the web-vitals library.\n        if (entry.entryType === 'first-input') {\n          const matchingEntry = keys\n            .map(key => interactionIdToRouteNameMapping[key])\n            .some(interaction => {\n              return interaction.duration === duration && interaction.startTime === startTime;\n            });\n          if (matchingEntry) {\n            return;\n          }\n        }\n        // Interactions with an id of 0 and are not first-input are not valid.\n        if (!interactionId) {\n          return;\n        }\n        // If the interaction already exists, we want to use the duration of the longest entry, since that is what the INP metric uses.\n        if (existingInteraction) {\n          existingInteraction.duration = Math.max(existingInteraction.duration, duration);\n        } else if (\n          keys.length < MAX_INTERACTIONS ||\n          minInteractionId === undefined ||\n          duration > interactionIdToRouteNameMapping[minInteractionId].duration\n        ) {\n          // If the interaction does not exist, we want to add it to the mapping if there is space, or if the duration is longer than the shortest entry.\n          const routeName = latestRoute.name;\n          const parentContext = latestRoute.context;\n          if (routeName && parentContext) {\n            if (minInteractionId && Object.keys(interactionIdToRouteNameMapping).length >= MAX_INTERACTIONS) {\n              // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n              delete interactionIdToRouteNameMapping[minInteractionId];\n            }\n            interactionIdToRouteNameMapping[interactionId] = {\n              routeName,\n              duration,\n              parentContext,\n              user,\n              activeTransaction,\n              replayId,\n              startTime,\n            };\n          }\n        }\n      }\n    });\n  };\n  addPerformanceInstrumentationHandler('event', handleEntries);\n  addPerformanceInstrumentationHandler('first-input', handleEntries);\n}\n\nfunction getSource(context: TransactionContext): TransactionSource | undefined {\n  const sourceFromAttributes = context.attributes && context.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n  // eslint-disable-next-line deprecation/deprecation\n  const sourceFromData = context.data && context.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n  // eslint-disable-next-line deprecation/deprecation\n  const sourceFromMetadata = context.metadata && context.metadata.source;\n\n  return sourceFromAttributes || sourceFromData || sourceFromMetadata;\n}\n","import type { OfflineStore, OfflineTransportOptions } from '@sentry/core';\nimport { makeOfflineTransport } from '@sentry/core';\nimport type { Envelope, InternalBaseTransportOptions, Transport } from '@sentry/types';\nimport type { TextDecoderInternal } from '@sentry/utils';\nimport { parseEnvelope, serializeEnvelope } from '@sentry/utils';\n\n// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being\n// modified and simplified: https://github.com/jakearchibald/idb-keyval\n//\n// At commit: 0420a704fd6cbb4225429c536b1f61112d012fca\n// Original licence:\n\n// Copyright 2016, Jake Archibald\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\ntype Store = <T>(callback: (store: IDBObjectStore) => T | PromiseLike<T>) => Promise<T>;\n\nfunction promisifyRequest<T = undefined>(request: IDBRequest<T> | IDBTransaction): Promise<T> {\n  return new Promise<T>((resolve, reject) => {\n    // @ts-expect-error - file size hacks\n    request.oncomplete = request.onsuccess = () => resolve(request.result);\n    // @ts-expect-error - file size hacks\n    request.onabort = request.onerror = () => reject(request.error);\n  });\n}\n\n/** Create or open an IndexedDb store */\nexport function createStore(dbName: string, storeName: string): Store {\n  const request = indexedDB.open(dbName);\n  request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n  const dbp = promisifyRequest(request);\n\n  return callback => dbp.then(db => callback(db.transaction(storeName, 'readwrite').objectStore(storeName)));\n}\n\nfunction keys(store: IDBObjectStore): Promise<number[]> {\n  return promisifyRequest(store.getAllKeys() as IDBRequest<number[]>);\n}\n\n/** Insert into the store */\nexport function insert(store: Store, value: Uint8Array | string, maxQueueSize: number): Promise<void> {\n  return store(store => {\n    return keys(store).then(keys => {\n      if (keys.length >= maxQueueSize) {\n        return;\n      }\n\n      // We insert with an incremented key so that the entries are popped in order\n      store.put(value, Math.max(...keys, 0) + 1);\n      return promisifyRequest(store.transaction);\n    });\n  });\n}\n\n/** Pop the oldest value from the store */\nexport function pop(store: Store): Promise<Uint8Array | string | undefined> {\n  return store(store => {\n    return keys(store).then(keys => {\n      if (keys.length === 0) {\n        return undefined;\n      }\n\n      return promisifyRequest(store.get(keys[0])).then(value => {\n        store.delete(keys[0]);\n        return promisifyRequest(store.transaction).then(() => value);\n      });\n    });\n  });\n}\n\nexport interface BrowserOfflineTransportOptions extends OfflineTransportOptions {\n  /**\n   * Name of indexedDb database to store envelopes in\n   * Default: 'sentry-offline'\n   */\n  dbName?: string;\n  /**\n   * Name of indexedDb object store to store envelopes in\n   * Default: 'queue'\n   */\n  storeName?: string;\n  /**\n   * Maximum number of envelopes to store\n   * Default: 30\n   */\n  maxQueueSize?: number;\n  /**\n   * Only required for testing on node.js\n   * @ignore\n   */\n  textDecoder?: TextDecoderInternal;\n}\n\nfunction createIndexedDbStore(options: BrowserOfflineTransportOptions): OfflineStore {\n  let store: Store | undefined;\n\n  // Lazily create the store only when it's needed\n  function getStore(): Store {\n    if (store == undefined) {\n      store = createStore(options.dbName || 'sentry-offline', options.storeName || 'queue');\n    }\n\n    return store;\n  }\n\n  return {\n    insert: async (env: Envelope) => {\n      try {\n        const serialized = await serializeEnvelope(env, options.textEncoder);\n        await insert(getStore(), serialized, options.maxQueueSize || 30);\n      } catch (_) {\n        //\n      }\n    },\n    pop: async () => {\n      try {\n        const deserialized = await pop(getStore());\n        if (deserialized) {\n          return parseEnvelope(\n            deserialized,\n            options.textEncoder || new TextEncoder(),\n            options.textDecoder || new TextDecoder(),\n          );\n        }\n      } catch (_) {\n        //\n      }\n\n      return undefined;\n    },\n  };\n}\n\nfunction makeIndexedDbOfflineTransport<T>(\n  createTransport: (options: T) => Transport,\n): (options: T & BrowserOfflineTransportOptions) => Transport {\n  return options => createTransport({ ...options, createStore: createIndexedDbStore });\n}\n\n/**\n * Creates a transport that uses IndexedDb to store events when offline.\n */\nexport function makeBrowserOfflineTransport<T extends InternalBaseTransportOptions>(\n  createTransport: (options: T) => Transport,\n): (options: T & BrowserOfflineTransportOptions) => Transport {\n  return makeIndexedDbOfflineTransport<T>(makeOfflineTransport(createTransport));\n}\n","/* eslint-disable max-lines */\n\nimport { DEFAULT_ENVIRONMENT, getClient } from '@sentry/core';\nimport type { DebugImage, Envelope, Event, EventEnvelope, StackFrame, StackParser, Transaction } from '@sentry/types';\nimport type { Profile, ThreadCpuProfile } from '@sentry/types/src/profiling';\nimport { GLOBAL_OBJ, browserPerformanceTimeOrigin, forEachEnvelopeItem, logger, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\nimport type { JSSelfProfile, JSSelfProfileStack, JSSelfProfiler, JSSelfProfilerConstructor } from './jsSelfProfiling';\n\nconst MS_TO_NS = 1e6;\n// Use 0 as main thread id which is identical to threadId in node:worker_threads\n// where main logs 0 and workers seem to log in increments of 1\nconst THREAD_ID_STRING = String(0);\nconst THREAD_NAME = 'main';\n\n// Machine properties (eval only once)\nlet OS_PLATFORM = '';\nlet OS_PLATFORM_VERSION = '';\nlet OS_ARCH = '';\nlet OS_BROWSER = (WINDOW.navigator && WINDOW.navigator.userAgent) || '';\nlet OS_MODEL = '';\nconst OS_LOCALE =\n  (WINDOW.navigator && WINDOW.navigator.language) ||\n  (WINDOW.navigator && WINDOW.navigator.languages && WINDOW.navigator.languages[0]) ||\n  '';\n\ntype UAData = {\n  platform?: string;\n  architecture?: string;\n  model?: string;\n  platformVersion?: string;\n  fullVersionList?: {\n    brand: string;\n    version: string;\n  }[];\n};\n\ninterface UserAgentData {\n  getHighEntropyValues: (keys: string[]) => Promise<UAData>;\n}\n\nfunction isUserAgentData(data: unknown): data is UserAgentData {\n  return typeof data === 'object' && data !== null && 'getHighEntropyValues' in data;\n}\n\n// @ts-expect-error userAgentData is not part of the navigator interface yet\nconst userAgentData = WINDOW.navigator && WINDOW.navigator.userAgentData;\n\nif (isUserAgentData(userAgentData)) {\n  userAgentData\n    .getHighEntropyValues(['architecture', 'model', 'platform', 'platformVersion', 'fullVersionList'])\n    .then((ua: UAData) => {\n      OS_PLATFORM = ua.platform || '';\n      OS_ARCH = ua.architecture || '';\n      OS_MODEL = ua.model || '';\n      OS_PLATFORM_VERSION = ua.platformVersion || '';\n\n      if (ua.fullVersionList && ua.fullVersionList.length > 0) {\n        const firstUa = ua.fullVersionList[ua.fullVersionList.length - 1];\n        OS_BROWSER = `${firstUa.brand} ${firstUa.version}`;\n      }\n    })\n    .catch(e => void e);\n}\n\nfunction isProcessedJSSelfProfile(profile: ThreadCpuProfile | JSSelfProfile): profile is JSSelfProfile {\n  return !('thread_metadata' in profile);\n}\n\n// Enriches the profile with threadId of the current thread.\n// This is done in node as we seem to not be able to get the info from C native code.\n/**\n *\n */\nexport function enrichWithThreadInformation(profile: ThreadCpuProfile | JSSelfProfile): ThreadCpuProfile {\n  if (!isProcessedJSSelfProfile(profile)) {\n    return profile;\n  }\n\n  return convertJSSelfProfileToSampledFormat(profile);\n}\n\n// Profile is marked as optional because it is deleted from the metadata\n// by the integration before the event is processed by other integrations.\nexport interface ProfiledEvent extends Event {\n  sdkProcessingMetadata: {\n    profile?: JSSelfProfile;\n  };\n}\n\nfunction getTraceId(event: Event): string {\n  const traceId: unknown = event && event.contexts && event.contexts['trace'] && event.contexts['trace']['trace_id'];\n  // Log a warning if the profile has an invalid traceId (should be uuidv4).\n  // All profiles and transactions are rejected if this is the case and we want to\n  // warn users that this is happening if they enable debug flag\n  if (typeof traceId === 'string' && traceId.length !== 32) {\n    if (DEBUG_BUILD) {\n      logger.log(`[Profiling] Invalid traceId: ${traceId} on profiled event`);\n    }\n  }\n  if (typeof traceId !== 'string') {\n    return '';\n  }\n\n  return traceId;\n}\n/**\n * Creates a profiling event envelope from a Sentry event. If profile does not pass\n * validation, returns null.\n * @param event\n * @param dsn\n * @param metadata\n * @param tunnel\n * @returns {EventEnvelope | null}\n */\n\n/**\n * Creates a profiling event envelope from a Sentry event.\n */\nexport function createProfilePayload(\n  profile_id: string,\n  start_timestamp: number | undefined,\n  processed_profile: JSSelfProfile,\n  event: ProfiledEvent,\n): Profile {\n  if (event.type !== 'transaction') {\n    // createProfilingEventEnvelope should only be called for transactions,\n    // we type guard this behavior with isProfiledTransactionEvent.\n    throw new TypeError('Profiling events may only be attached to transactions, this should never occur.');\n  }\n\n  if (processed_profile === undefined || processed_profile === null) {\n    throw new TypeError(\n      `Cannot construct profiling event envelope without a valid profile. Got ${processed_profile} instead.`,\n    );\n  }\n\n  const traceId = getTraceId(event);\n  const enrichedThreadProfile = enrichWithThreadInformation(processed_profile);\n  const transactionStartMs = start_timestamp\n    ? start_timestamp\n    : typeof event.start_timestamp === 'number'\n      ? event.start_timestamp * 1000\n      : Date.now();\n  const transactionEndMs = typeof event.timestamp === 'number' ? event.timestamp * 1000 : Date.now();\n\n  const profile: Profile = {\n    event_id: profile_id,\n    timestamp: new Date(transactionStartMs).toISOString(),\n    platform: 'javascript',\n    version: '1',\n    release: event.release || '',\n    environment: event.environment || DEFAULT_ENVIRONMENT,\n    runtime: {\n      name: 'javascript',\n      version: WINDOW.navigator.userAgent,\n    },\n    os: {\n      name: OS_PLATFORM,\n      version: OS_PLATFORM_VERSION,\n      build_number: OS_BROWSER,\n    },\n    device: {\n      locale: OS_LOCALE,\n      model: OS_MODEL,\n      manufacturer: OS_BROWSER,\n      architecture: OS_ARCH,\n      is_emulator: false,\n    },\n    debug_meta: {\n      images: applyDebugMetadata(processed_profile.resources),\n    },\n    profile: enrichedThreadProfile,\n    transactions: [\n      {\n        name: event.transaction || '',\n        id: event.event_id || uuid4(),\n        trace_id: traceId,\n        active_thread_id: THREAD_ID_STRING,\n        relative_start_ns: '0',\n        relative_end_ns: ((transactionEndMs - transactionStartMs) * 1e6).toFixed(0),\n      },\n    ],\n  };\n\n  return profile;\n}\n\n/**\n *\n */\nexport function isProfiledTransactionEvent(event: Event): event is ProfiledEvent {\n  return !!(event.sdkProcessingMetadata && event.sdkProcessingMetadata['profile']);\n}\n\n/*\n  See packages/tracing-internal/src/browser/router.ts\n*/\n/**\n *\n */\nexport function isAutomatedPageLoadTransaction(transaction: Transaction): boolean {\n  return transaction.op === 'pageload';\n}\n\n/**\n * Converts a JSSelfProfile to a our sampled format.\n * Does not currently perform stack indexing.\n */\nexport function convertJSSelfProfileToSampledFormat(input: JSSelfProfile): Profile['profile'] {\n  let EMPTY_STACK_ID: undefined | number = undefined;\n  let STACK_ID = 0;\n\n  // Initialize the profile that we will fill with data\n  const profile: Profile['profile'] = {\n    samples: [],\n    stacks: [],\n    frames: [],\n    thread_metadata: {\n      [THREAD_ID_STRING]: { name: THREAD_NAME },\n    },\n  };\n\n  if (!input.samples.length) {\n    return profile;\n  }\n\n  // We assert samples.length > 0 above and timestamp should always be present\n  const start = input.samples[0].timestamp;\n  // The JS SDK might change it's time origin based on some heuristic (see See packages/utils/src/time.ts)\n  // when that happens, we need to ensure we are correcting the profile timings so the two timelines stay in sync.\n  // Since JS self profiling time origin is always initialized to performance.timeOrigin, we need to adjust for\n  // the drift between the SDK selected value and our profile time origin.\n  const origin =\n    typeof performance.timeOrigin === 'number' ? performance.timeOrigin : browserPerformanceTimeOrigin || 0;\n  const adjustForOriginChange = origin - (browserPerformanceTimeOrigin || origin);\n\n  for (let i = 0; i < input.samples.length; i++) {\n    const jsSample = input.samples[i];\n\n    // If sample has no stack, add an empty sample\n    if (jsSample.stackId === undefined) {\n      if (EMPTY_STACK_ID === undefined) {\n        EMPTY_STACK_ID = STACK_ID;\n        profile.stacks[EMPTY_STACK_ID] = [];\n        STACK_ID++;\n      }\n\n      profile['samples'][i] = {\n        // convert ms timestamp to ns\n        elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n        stack_id: EMPTY_STACK_ID,\n        thread_id: THREAD_ID_STRING,\n      };\n      continue;\n    }\n\n    let stackTop: JSSelfProfileStack | undefined = input.stacks[jsSample.stackId];\n\n    // Functions in top->down order (root is last)\n    // We follow the stackTop.parentId trail and collect each visited frameId\n    const stack: number[] = [];\n\n    while (stackTop) {\n      stack.push(stackTop.frameId);\n\n      const frame = input.frames[stackTop.frameId];\n\n      // If our frame has not been indexed yet, index it\n      if (profile.frames[stackTop.frameId] === undefined) {\n        profile.frames[stackTop.frameId] = {\n          function: frame.name,\n          abs_path: typeof frame.resourceId === 'number' ? input.resources[frame.resourceId] : undefined,\n          lineno: frame.line,\n          colno: frame.column,\n        };\n      }\n\n      stackTop = stackTop.parentId === undefined ? undefined : input.stacks[stackTop.parentId];\n    }\n\n    const sample: Profile['profile']['samples'][0] = {\n      // convert ms timestamp to ns\n      elapsed_since_start_ns: ((jsSample.timestamp + adjustForOriginChange - start) * MS_TO_NS).toFixed(0),\n      stack_id: STACK_ID,\n      thread_id: THREAD_ID_STRING,\n    };\n\n    profile['stacks'][STACK_ID] = stack;\n    profile['samples'][i] = sample;\n    STACK_ID++;\n  }\n\n  return profile;\n}\n\n/**\n * Adds items to envelope if they are not already present - mutates the envelope.\n * @param envelope\n */\nexport function addProfilesToEnvelope(envelope: EventEnvelope, profiles: Profile[]): Envelope {\n  if (!profiles.length) {\n    return envelope;\n  }\n\n  for (const profile of profiles) {\n    envelope[1].push([{ type: 'profile' }, profile]);\n  }\n  return envelope;\n}\n\n/**\n * Finds transactions with profile_id context in the envelope\n * @param envelope\n * @returns\n */\nexport function findProfiledTransactionsFromEnvelope(envelope: Envelope): Event[] {\n  const events: Event[] = [];\n\n  forEachEnvelopeItem(envelope, (item, type) => {\n    if (type !== 'transaction') {\n      return;\n    }\n\n    for (let j = 1; j < item.length; j++) {\n      const event = item[j] as Event;\n\n      if (event && event.contexts && event.contexts['profile'] && event.contexts['profile']['profile_id']) {\n        events.push(item[j] as Event);\n      }\n    }\n  });\n\n  return events;\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n/**\n * Applies debug meta data to an event from a list of paths to resources (sourcemaps)\n */\nexport function applyDebugMetadata(resource_paths: ReadonlyArray<string>): DebugImage[] {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return [];\n  }\n\n  const client = getClient();\n  const options = client && client.getOptions();\n  const stackParser = options && options.stackParser;\n\n  if (!stackParser) {\n    return [];\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n    let parsedStack: StackFrame[];\n\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      const file = stackFrame && stackFrame.filename;\n\n      if (stackFrame && file) {\n        acc[file] = debugIdMap[debugIdStackTrace] as string;\n        break;\n      }\n    }\n    return acc;\n  }, {});\n\n  const images: DebugImage[] = [];\n  for (const path of resource_paths) {\n    if (path && filenameDebugIdMap[path]) {\n      images.push({\n        type: 'sourcemap',\n        code_file: path,\n        debug_id: filenameDebugIdMap[path] as string,\n      });\n    }\n  }\n\n  return images;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n  // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n  if ((typeof rate !== 'number' && typeof rate !== 'boolean') || (typeof rate === 'number' && isNaN(rate))) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          rate,\n        )} of type ${JSON.stringify(typeof rate)}.`,\n      );\n    return false;\n  }\n\n  // Boolean sample rates are always valid\n  if (rate === true || rate === false) {\n    return true;\n  }\n\n  // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n  if (rate < 0 || rate > 1) {\n    DEBUG_BUILD && logger.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${rate}.`);\n    return false;\n  }\n  return true;\n}\n\nfunction isValidProfile(profile: JSSelfProfile): profile is JSSelfProfile & { profile_id: string } {\n  if (profile.samples.length < 2) {\n    if (DEBUG_BUILD) {\n      // Log a warning if the profile has less than 2 samples so users can know why\n      // they are not seeing any profiling data and we cant avoid the back and forth\n      // of asking them to provide us with a dump of the profile data.\n      logger.log('[Profiling] Discarding profile because it contains less than 2 samples');\n    }\n    return false;\n  }\n\n  if (!profile.frames.length) {\n    if (DEBUG_BUILD) {\n      logger.log('[Profiling] Discarding profile because it contains no frames');\n    }\n    return false;\n  }\n\n  return true;\n}\n\n// Keep a flag value to avoid re-initializing the profiler constructor. If it fails\n// once, it will always fail and this allows us to early return.\nlet PROFILING_CONSTRUCTOR_FAILED: boolean = false;\nexport const MAX_PROFILE_DURATION_MS = 30_000;\n\n/**\n * Check if profiler constructor is available.\n * @param maybeProfiler\n */\nfunction isJSProfilerSupported(maybeProfiler: unknown): maybeProfiler is typeof JSSelfProfilerConstructor {\n  return typeof maybeProfiler === 'function';\n}\n\n/**\n * Starts the profiler and returns the profiler instance.\n */\nexport function startJSSelfProfile(): JSSelfProfiler | undefined {\n  // Feature support check first\n  const JSProfilerConstructor = WINDOW.Profiler;\n\n  if (!isJSProfilerSupported(JSProfilerConstructor)) {\n    if (DEBUG_BUILD) {\n      logger.log(\n        '[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object.',\n      );\n    }\n    return;\n  }\n\n  // From initial testing, it seems that the minimum value for sampleInterval is 10ms.\n  const samplingIntervalMS = 10;\n  // Start the profiler\n  const maxSamples = Math.floor(MAX_PROFILE_DURATION_MS / samplingIntervalMS);\n\n  // Attempt to initialize the profiler constructor, if it fails, we disable profiling for the current user session.\n  // This is likely due to a missing 'Document-Policy': 'js-profiling' header. We do not want to throw an error if this happens\n  // as we risk breaking the user's application, so just disable profiling and log an error.\n  try {\n    return new JSProfilerConstructor({ sampleInterval: samplingIntervalMS, maxBufferSize: maxSamples });\n  } catch (e) {\n    if (DEBUG_BUILD) {\n      logger.log(\n        \"[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header.\",\n      );\n      logger.log('[Profiling] Disabling profiling for current user session.');\n    }\n    PROFILING_CONSTRUCTOR_FAILED = true;\n  }\n\n  return;\n}\n\n/**\n * Determine if a profile should be profiled.\n */\nexport function shouldProfileTransaction(transaction: Transaction): boolean {\n  // If constructor failed once, it will always fail, so we can early return.\n  if (PROFILING_CONSTRUCTOR_FAILED) {\n    if (DEBUG_BUILD) {\n      logger.log('[Profiling] Profiling has been disabled for the duration of the current user session.');\n    }\n    return false;\n  }\n\n  if (!transaction.isRecording()) {\n    if (DEBUG_BUILD) {\n      logger.log('[Profiling] Discarding profile because transaction was not sampled.');\n    }\n    return false;\n  }\n\n  const client = getClient();\n  const options = client && client.getOptions();\n  if (!options) {\n    DEBUG_BUILD && logger.log('[Profiling] Profiling disabled, no options found.');\n    return false;\n  }\n\n  // @ts-expect-error profilesSampleRate is not part of the browser options yet\n  const profilesSampleRate: number | boolean | undefined = options.profilesSampleRate;\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n  // only valid values are booleans or numbers between 0 and 1.)\n  if (!isValidSampleRate(profilesSampleRate)) {\n    DEBUG_BUILD && logger.warn('[Profiling] Discarding profile because of invalid sample rate.');\n    return false;\n  }\n\n  // if the function returned 0 (or false), or if `profileSampleRate` is 0, it's a sign the profile should be dropped\n  if (!profilesSampleRate) {\n    DEBUG_BUILD &&\n      logger.log(\n        '[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0',\n      );\n    return false;\n  }\n\n  // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n  // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n  const sampled = profilesSampleRate === true ? true : Math.random() < profilesSampleRate;\n  // Check if we should sample this profile\n  if (!sampled) {\n    DEBUG_BUILD &&\n      logger.log(\n        `[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(\n          profilesSampleRate,\n        )})`,\n      );\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a profiling envelope item, if the profile does not pass validation, returns null.\n * @param event\n * @returns {Profile | null}\n */\nexport function createProfilingEvent(\n  profile_id: string,\n  start_timestamp: number | undefined,\n  profile: JSSelfProfile,\n  event: ProfiledEvent,\n): Profile | null {\n  if (!isValidProfile(profile)) {\n    return null;\n  }\n\n  return createProfilePayload(profile_id, start_timestamp, profile, event);\n}\n\n// TODO (v8): We need to obtain profile ids in @sentry-internal/tracing,\n// but we don't have access to this map because importing this map would\n// cause a circular dependancy. We need to resolve this in v8.\nconst PROFILE_MAP: Map<string, JSSelfProfile> = new Map();\n/**\n *\n */\nexport function getActiveProfilesCount(): number {\n  return PROFILE_MAP.size;\n}\n\n/**\n * Retrieves profile from global cache and removes it.\n */\nexport function takeProfileFromGlobalCache(profile_id: string): JSSelfProfile | undefined {\n  const profile = PROFILE_MAP.get(profile_id);\n  if (profile) {\n    PROFILE_MAP.delete(profile_id);\n  }\n  return profile;\n}\n/**\n * Adds profile to global cache and evicts the oldest profile if the cache is full.\n */\nexport function addProfileToGlobalCache(profile_id: string, profile: JSSelfProfile): void {\n  PROFILE_MAP.set(profile_id, profile);\n\n  if (PROFILE_MAP.size > 30) {\n    const last: string = PROFILE_MAP.keys().next().value;\n    PROFILE_MAP.delete(last);\n  }\n}\n","/* eslint-disable complexity */\nimport { spanToJSON } from '@sentry/core';\nimport type { Transaction } from '@sentry/types';\nimport { logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\nimport type { JSSelfProfile } from './jsSelfProfiling';\nimport {\n  MAX_PROFILE_DURATION_MS,\n  addProfileToGlobalCache,\n  isAutomatedPageLoadTransaction,\n  shouldProfileTransaction,\n  startJSSelfProfile,\n} from './utils';\n\n/**\n * Safety wrapper for startTransaction for the unlikely case that transaction starts before tracing is imported -\n * if that happens we want to avoid throwing an error from profiling code.\n * see https://github.com/getsentry/sentry-javascript/issues/4731.\n *\n * @experimental\n */\nexport function onProfilingStartRouteTransaction(transaction: Transaction | undefined): Transaction | undefined {\n  if (!transaction) {\n    if (DEBUG_BUILD) {\n      logger.log('[Profiling] Transaction is undefined, skipping profiling');\n    }\n    return transaction;\n  }\n\n  if (shouldProfileTransaction(transaction)) {\n    return startProfileForTransaction(transaction);\n  }\n\n  return transaction;\n}\n\n/**\n * Wraps startTransaction and stopTransaction with profiling related logic.\n * startProfileForTransaction is called after the call to startTransaction in order to avoid our own code from\n * being profiled. Because of that same reason, stopProfiling is called before the call to stopTransaction.\n */\nexport function startProfileForTransaction(transaction: Transaction): Transaction {\n  // Start the profiler and get the profiler instance.\n  let startTimestamp: number | undefined;\n  if (isAutomatedPageLoadTransaction(transaction)) {\n    startTimestamp = timestampInSeconds() * 1000;\n  }\n\n  const profiler = startJSSelfProfile();\n\n  // We failed to construct the profiler, fallback to original transaction.\n  // No need to log anything as this has already been logged in startProfile.\n  if (!profiler) {\n    return transaction;\n  }\n\n  if (DEBUG_BUILD) {\n    logger.log(`[Profiling] started profiling transaction: ${spanToJSON(transaction).description}`);\n  }\n\n  // We create \"unique\" transaction names to avoid concurrent transactions with same names\n  // from being ignored by the profiler. From here on, only this transaction name should be used when\n  // calling the profiler methods. Note: we log the original name to the user to avoid confusion.\n  const profileId = uuid4();\n\n  // A couple of important things to note here:\n  // `CpuProfilerBindings.stopProfiling` will be scheduled to run in 30seconds in order to exceed max profile duration.\n  // Whichever of the two (transaction.finish/timeout) is first to run, the profiling will be stopped and the gathered profile\n  // will be processed when the original transaction is finished. Since onProfileHandler can be invoked multiple times in the\n  // event of an error or user mistake (calling transaction.finish multiple times), it is important that the behavior of onProfileHandler\n  // is idempotent as we do not want any timings or profiles to be overriden by the last call to onProfileHandler.\n  // After the original finish method is called, the event will be reported through the integration and delegated to transport.\n  const processedProfile: JSSelfProfile | null = null;\n\n  /**\n   * Idempotent handler for profile stop\n   */\n  async function onProfileHandler(): Promise<null> {\n    // Check if the profile exists and return it the behavior has to be idempotent as users may call transaction.finish multiple times.\n    if (!transaction) {\n      return null;\n    }\n    // Satisfy the type checker, but profiler will always be defined here.\n    if (!profiler) {\n      return null;\n    }\n    if (processedProfile) {\n      if (DEBUG_BUILD) {\n        logger.log('[Profiling] profile for:', spanToJSON(transaction).description, 'already exists, returning early');\n      }\n      return null;\n    }\n\n    return profiler\n      .stop()\n      .then((profile: JSSelfProfile): null => {\n        if (maxDurationTimeoutID) {\n          WINDOW.clearTimeout(maxDurationTimeoutID);\n          maxDurationTimeoutID = undefined;\n        }\n\n        if (DEBUG_BUILD) {\n          logger.log(`[Profiling] stopped profiling of transaction: ${spanToJSON(transaction).description}`);\n        }\n\n        // In case of an overlapping transaction, stopProfiling may return null and silently ignore the overlapping profile.\n        if (!profile) {\n          if (DEBUG_BUILD) {\n            logger.log(\n              `[Profiling] profiler returned null profile for: ${spanToJSON(transaction).description}`,\n              'this may indicate an overlapping transaction or a call to stopProfiling with a profile title that was never started',\n            );\n          }\n          return null;\n        }\n\n        addProfileToGlobalCache(profileId, profile);\n        return null;\n      })\n      .catch(error => {\n        if (DEBUG_BUILD) {\n          logger.log('[Profiling] error while stopping profiler:', error);\n        }\n        return null;\n      });\n  }\n\n  // Enqueue a timeout to prevent profiles from running over max duration.\n  let maxDurationTimeoutID: number | undefined = WINDOW.setTimeout(() => {\n    if (DEBUG_BUILD) {\n      logger.log(\n        '[Profiling] max profile duration elapsed, stopping profiling for:',\n        spanToJSON(transaction).description,\n      );\n    }\n    // If the timeout exceeds, we want to stop profiling, but not finish the transaction\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    onProfileHandler();\n  }, MAX_PROFILE_DURATION_MS);\n\n  // We need to reference the original end call to avoid creating an infinite loop\n  const originalEnd = transaction.end.bind(transaction);\n\n  /**\n   * Wraps startTransaction and stopTransaction with profiling related logic.\n   * startProfiling is called after the call to startTransaction in order to avoid our own code from\n   * being profiled. Because of that same reason, stopProfiling is called before the call to stopTransaction.\n   */\n  function profilingWrappedTransactionEnd(): Transaction {\n    if (!transaction) {\n      return originalEnd();\n    }\n    // onProfileHandler should always return the same profile even if this is called multiple times.\n    // Always call onProfileHandler to ensure stopProfiling is called and the timeout is cleared.\n    void onProfileHandler().then(\n      () => {\n        // TODO: Can we rewrite this to use attributes?\n        // eslint-disable-next-line deprecation/deprecation\n        transaction.setContext('profile', { profile_id: profileId, start_timestamp: startTimestamp });\n        originalEnd();\n      },\n      () => {\n        // If onProfileHandler fails, we still want to call the original finish method.\n        originalEnd();\n      },\n    );\n\n    return transaction;\n  }\n\n  transaction.end = profilingWrappedTransactionEnd;\n  return transaction;\n}\n","import { convertIntegrationFnToClass, defineIntegration, getCurrentScope } from '@sentry/core';\nimport type { Client, EventEnvelope, Integration, IntegrationClass, IntegrationFn, Transaction } from '@sentry/types';\nimport type { Profile } from '@sentry/types/src/profiling';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { startProfileForTransaction } from './hubextensions';\nimport type { ProfiledEvent } from './utils';\nimport {\n  addProfilesToEnvelope,\n  createProfilingEvent,\n  findProfiledTransactionsFromEnvelope,\n  getActiveProfilesCount,\n  isAutomatedPageLoadTransaction,\n  shouldProfileTransaction,\n  takeProfileFromGlobalCache,\n} from './utils';\n\nconst INTEGRATION_NAME = 'BrowserProfiling';\n\nconst _browserProfilingIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      const scope = getCurrentScope();\n\n      // eslint-disable-next-line deprecation/deprecation\n      const transaction = scope.getTransaction();\n\n      if (transaction && isAutomatedPageLoadTransaction(transaction)) {\n        if (shouldProfileTransaction(transaction)) {\n          startProfileForTransaction(transaction);\n        }\n      }\n\n      if (typeof client.on !== 'function') {\n        logger.warn('[Profiling] Client does not support hooks, profiling will be disabled');\n        return;\n      }\n\n      client.on('startTransaction', (transaction: Transaction) => {\n        if (shouldProfileTransaction(transaction)) {\n          startProfileForTransaction(transaction);\n        }\n      });\n\n      client.on('beforeEnvelope', (envelope): void => {\n        // if not profiles are in queue, there is nothing to add to the envelope.\n        if (!getActiveProfilesCount()) {\n          return;\n        }\n\n        const profiledTransactionEvents = findProfiledTransactionsFromEnvelope(envelope);\n        if (!profiledTransactionEvents.length) {\n          return;\n        }\n\n        const profilesToAddToEnvelope: Profile[] = [];\n\n        for (const profiledTransaction of profiledTransactionEvents) {\n          const context = profiledTransaction && profiledTransaction.contexts;\n          const profile_id = context && context['profile'] && context['profile']['profile_id'];\n          const start_timestamp = context && context['profile'] && context['profile']['start_timestamp'];\n\n          if (typeof profile_id !== 'string') {\n            DEBUG_BUILD && logger.log('[Profiling] cannot find profile for a transaction without a profile context');\n            continue;\n          }\n\n          if (!profile_id) {\n            DEBUG_BUILD && logger.log('[Profiling] cannot find profile for a transaction without a profile context');\n            continue;\n          }\n\n          // Remove the profile from the transaction context before sending, relay will take care of the rest.\n          if (context && context['profile']) {\n            delete context.profile;\n          }\n\n          const profile = takeProfileFromGlobalCache(profile_id);\n          if (!profile) {\n            DEBUG_BUILD && logger.log(`[Profiling] Could not retrieve profile for transaction: ${profile_id}`);\n            continue;\n          }\n\n          const profileEvent = createProfilingEvent(\n            profile_id,\n            start_timestamp as number | undefined,\n            profile,\n            profiledTransaction as ProfiledEvent,\n          );\n          if (profileEvent) {\n            profilesToAddToEnvelope.push(profileEvent);\n          }\n        }\n\n        addProfilesToEnvelope(envelope as EventEnvelope, profilesToAddToEnvelope);\n      });\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const browserProfilingIntegration = defineIntegration(_browserProfilingIntegration);\n\n/**\n * Browser profiling integration. Stores any event that has contexts[\"profile\"][\"profile_id\"]\n * This exists because we do not want to await async profiler.stop calls as transaction.finish is called\n * in a synchronous context. Instead, we handle sending the profile async from the promise callback and\n * rely on being able to pull the event from the cache when we need to construct the envelope. This makes the\n * integration less reliable as we might be dropping profiles when the cache is full.\n *\n * @experimental\n * @deprecated Use `browserProfilingIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const BrowserProfilingIntegration = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  browserProfilingIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type BrowserProfilingIntegration = typeof BrowserProfilingIntegration;\n","/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event as SentryEvent,\n  HandlerDataConsole,\n  HandlerDataDom,\n  HandlerDataFetch,\n  HandlerDataHistory,\n  HandlerDataXhr,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n} from '@sentry/types';\nimport type {\n  Breadcrumb,\n  FetchBreadcrumbData,\n  FetchBreadcrumbHint,\n  XhrBreadcrumbData,\n  XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n  SENTRY_XHR_DATA_KEY,\n  addClickKeypressInstrumentationHandler,\n  addConsoleInstrumentationHandler,\n  addFetchInstrumentationHandler,\n  addHistoryInstrumentationHandler,\n  addXhrInstrumentationHandler,\n  getComponentName,\n  getEventDescription,\n  htmlTreeAsString,\n  logger,\n  parseUrl,\n  safeJoin,\n  severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n  console: boolean;\n  dom:\n    | boolean\n    | {\n        serializeAttribute?: string | string[];\n        maxStringLength?: number;\n      };\n  fetch: boolean;\n  history: boolean;\n  sentry: boolean;\n  xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial<BreadcrumbsOptions> = {}) => {\n  const _options = {\n    console: true,\n    dom: true,\n    fetch: true,\n    history: true,\n    sentry: true,\n    xhr: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    setup(client) {\n      if (_options.console) {\n        addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n      }\n      if (_options.dom) {\n        addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n      }\n      if (_options.xhr) {\n        addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n      }\n      if (_options.fetch) {\n        addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n      }\n      if (_options.history) {\n        addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n      }\n      if (_options.sentry && client.on) {\n        client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n  Integration & { setup: (client: Client) => void }\n> & {\n  new (\n    options?: Partial<{\n      console: boolean;\n      dom:\n        | boolean\n        | {\n            serializeAttribute?: string | string[];\n            maxStringLength?: number;\n          };\n      fetch: boolean;\n      history: boolean;\n      sentry: boolean;\n      xhr: boolean;\n    }>,\n  ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n  return function addSentryBreadcrumb(event: SentryEvent): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    addBreadcrumb(\n      {\n        category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n        event_id: event.event_id,\n        level: event.level,\n        message: getEventDescription(event),\n      },\n      {\n        event,\n      },\n    );\n  };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n  client: Client,\n  dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n  return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let target;\n    let componentName;\n    let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n    let maxStringLength =\n      typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n    if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n        );\n      maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n    }\n\n    if (typeof keyAttrs === 'string') {\n      keyAttrs = [keyAttrs];\n    }\n\n    // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n    try {\n      const event = handlerData.event as Event | Node;\n      const element = _isEvent(event) ? event.target : event;\n\n      target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n      componentName = getComponentName(element);\n    } catch (e) {\n      target = '<unknown>';\n    }\n\n    if (target.length === 0) {\n      return;\n    }\n\n    const breadcrumb: Breadcrumb = {\n      category: `ui.${handlerData.name}`,\n      message: target,\n    };\n\n    if (componentName) {\n      breadcrumb.data = { 'ui.component_name': componentName };\n    }\n\n    addBreadcrumb(breadcrumb, {\n      event: handlerData.event,\n      name: handlerData.name,\n      global: handlerData.global,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n  return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const breadcrumb = {\n      category: 'console',\n      data: {\n        arguments: handlerData.args,\n        logger: 'console',\n      },\n      level: severityLevelFromString(handlerData.level),\n      message: safeJoin(handlerData.args, ' '),\n    };\n\n    if (handlerData.level === 'assert') {\n      if (handlerData.args[0] === false) {\n        breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n        breadcrumb.data.arguments = handlerData.args.slice(1);\n      } else {\n        // Don't capture a breadcrumb for passed assertions\n        return;\n      }\n    }\n\n    addBreadcrumb(breadcrumb, {\n      input: handlerData.args,\n      level: handlerData.level,\n    });\n  };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n  return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n    // We only capture complete, non-sentry requests\n    if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n      return;\n    }\n\n    const { method, url, status_code, body } = sentryXhrData;\n\n    const data: XhrBreadcrumbData = {\n      method,\n      url,\n      status_code,\n    };\n\n    const hint: XhrBreadcrumbHint = {\n      xhr: handlerData.xhr,\n      input: body,\n      startTimestamp,\n      endTimestamp,\n    };\n\n    addBreadcrumb(\n      {\n        category: 'xhr',\n        data,\n        type: 'http',\n      },\n      hint,\n    );\n  };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n  return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    const { startTimestamp, endTimestamp } = handlerData;\n\n    // We only capture complete fetch requests\n    if (!endTimestamp) {\n      return;\n    }\n\n    if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n      // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n      return;\n    }\n\n    if (handlerData.error) {\n      const data: FetchBreadcrumbData = handlerData.fetchData;\n      const hint: FetchBreadcrumbHint = {\n        data: handlerData.error,\n        input: handlerData.args,\n        startTimestamp,\n        endTimestamp,\n      };\n\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          level: 'error',\n          type: 'http',\n        },\n        hint,\n      );\n    } else {\n      const response = handlerData.response as Response | undefined;\n      const data: FetchBreadcrumbData = {\n        ...handlerData.fetchData,\n        status_code: response && response.status,\n      };\n      const hint: FetchBreadcrumbHint = {\n        input: handlerData.args,\n        response,\n        startTimestamp,\n        endTimestamp,\n      };\n      addBreadcrumb(\n        {\n          category: 'fetch',\n          data,\n          type: 'http',\n        },\n        hint,\n      );\n    }\n  };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n  return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n    if (getClient() !== client) {\n      return;\n    }\n\n    let from: string | undefined = handlerData.from;\n    let to: string | undefined = handlerData.to;\n    const parsedLoc = parseUrl(WINDOW.location.href);\n    let parsedFrom = from ? parseUrl(from) : undefined;\n    const parsedTo = parseUrl(to);\n\n    // Initial pushState doesn't provide `from` information\n    if (!parsedFrom || !parsedFrom.path) {\n      parsedFrom = parsedLoc;\n    }\n\n    // Use only the path component of the URL if the URL matches the current\n    // document (almost all the time when using pushState)\n    if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n      to = parsedTo.relative;\n    }\n    if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n      from = parsedFrom.relative;\n    }\n\n    addBreadcrumb({\n      category: 'navigation',\n      data: {\n        from,\n        to,\n      },\n    });\n  };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n  return !!event && !!(event as Record<string, unknown>).target;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n  let previousEvent: Event | undefined;\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(currentEvent) {\n      // We want to ignore any non-error type events, e.g. transactions or replays\n      // These should never be deduped, and also not be compared against as _previousEvent.\n      if (currentEvent.type) {\n        return currentEvent;\n      }\n\n      // Juuust in case something goes wrong\n      try {\n        if (_shouldDropEvent(currentEvent, previousEvent)) {\n          DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n          return null;\n        }\n      } catch (_oO) {} // eslint-disable-line no-empty\n\n      return (previousEvent = currentEvent);\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n  Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n  if (!previousEvent) {\n    return false;\n  }\n\n  if (_isSameMessageEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const currentMessage = currentEvent.message;\n  const previousMessage = previousEvent.message;\n\n  // If neither event has a message property, they were both exceptions, so bail out\n  if (!currentMessage && !previousMessage) {\n    return false;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n    return false;\n  }\n\n  if (currentMessage !== previousMessage) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n  const previousException = _getExceptionFromEvent(previousEvent);\n  const currentException = _getExceptionFromEvent(currentEvent);\n\n  if (!previousException || !currentException) {\n    return false;\n  }\n\n  if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n    return false;\n  }\n\n  if (!_isSameFingerprint(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  if (!_isSameStacktrace(currentEvent, previousEvent)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFrames = _getFramesFromEvent(currentEvent);\n  let previousFrames = _getFramesFromEvent(previousEvent);\n\n  // If neither event has a stacktrace, they are assumed to be the same\n  if (!currentFrames && !previousFrames) {\n    return true;\n  }\n\n  // If only one event has a stacktrace, but not the other one, they are not the same\n  if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n    return false;\n  }\n\n  currentFrames = currentFrames as StackFrame[];\n  previousFrames = previousFrames as StackFrame[];\n\n  // If number of frames differ, they are not the same\n  if (previousFrames.length !== currentFrames.length) {\n    return false;\n  }\n\n  // Otherwise, compare the two\n  for (let i = 0; i < previousFrames.length; i++) {\n    const frameA = previousFrames[i];\n    const frameB = currentFrames[i];\n\n    if (\n      frameA.filename !== frameB.filename ||\n      frameA.lineno !== frameB.lineno ||\n      frameA.colno !== frameB.colno ||\n      frameA.function !== frameB.function\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n  let currentFingerprint = currentEvent.fingerprint;\n  let previousFingerprint = previousEvent.fingerprint;\n\n  // If neither event has a fingerprint, they are assumed to be the same\n  if (!currentFingerprint && !previousFingerprint) {\n    return true;\n  }\n\n  // If only one event has a fingerprint, but not the other one, they are not the same\n  if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n    return false;\n  }\n\n  currentFingerprint = currentFingerprint as string[];\n  previousFingerprint = previousFingerprint as string[];\n\n  // Otherwise, compare the two\n  try {\n    return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n  } catch (_oO) {\n    return false;\n  }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n  return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n  const exception = event.exception;\n\n  if (exception) {\n    try {\n      // @ts-expect-error Object could be undefined\n      return exception.values[0].stacktrace.frames;\n    } catch (_oO) {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n  Client,\n  Event,\n  Integration,\n  IntegrationClass,\n  IntegrationFn,\n  Primitive,\n  StackParser,\n} from '@sentry/types';\nimport {\n  addGlobalErrorInstrumentationHandler,\n  addGlobalUnhandledRejectionInstrumentationHandler,\n  getLocationHref,\n  isErrorEvent,\n  isPrimitive,\n  isString,\n  logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record<GlobalHandlersIntegrationsOptionKeys, boolean>;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial<GlobalHandlersIntegrations> = {}) => {\n  const _options = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      Error.stackTraceLimit = 50;\n    },\n    setup(client) {\n      if (_options.onerror) {\n        _installGlobalOnErrorHandler(client);\n        globalHandlerLog('onerror');\n      }\n      if (_options.onunhandledrejection) {\n        _installGlobalOnUnhandledRejectionHandler(client);\n        globalHandlerLog('onunhandledrejection');\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  globalHandlersIntegration,\n) as IntegrationClass<Integration & { setup: (client: Client) => void }> & {\n  new (options?: Partial<GlobalHandlersIntegrations>): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n  addGlobalErrorInstrumentationHandler(data => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const { msg, url, line, column, error } = data;\n\n    const event =\n      error === undefined && isString(msg)\n        ? _eventFromIncompleteOnError(msg, url, line, column)\n        : _enhanceEventWithInitialFrame(\n            eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n            url,\n            line,\n            column,\n          );\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onerror',\n      },\n    });\n  });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n  addGlobalUnhandledRejectionInstrumentationHandler(e => {\n    const { stackParser, attachStacktrace } = getOptions();\n\n    if (getClient() !== client || shouldIgnoreOnError()) {\n      return;\n    }\n\n    const error = _getUnhandledRejectionError(e as unknown);\n\n    const event = isPrimitive(error)\n      ? _eventFromRejectionWithPrimitive(error)\n      : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n    event.level = 'error';\n\n    captureEvent(event, {\n      originalException: error,\n      mechanism: {\n        handled: false,\n        type: 'onunhandledrejection',\n      },\n    });\n  });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n  if (isPrimitive(error)) {\n    return error;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const e = error as any;\n\n  // dig the object of the rejection out of known event types\n  try {\n    // PromiseRejectionEvents store the object of the rejection under 'reason'\n    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n    if ('reason' in e) {\n      return e.reason;\n    }\n\n    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n    // https://github.com/getsentry/sentry-javascript/issues/2380\n    else if ('detail' in e && 'reason' in e.detail) {\n      return e.detail.reason;\n    }\n  } catch {} // eslint-disable-line no-empty\n\n  return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n  return {\n    exception: {\n      values: [\n        {\n          type: 'UnhandledRejection',\n          // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n          value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n        },\n      ],\n    },\n  };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n  const ERROR_TYPES_RE =\n    /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n  // If 'message' is ErrorEvent, get real message from inside\n  let message = isErrorEvent(msg) ? msg.message : msg;\n  let name = 'Error';\n\n  const groups = message.match(ERROR_TYPES_RE);\n  if (groups) {\n    name = groups[1];\n    message = groups[2];\n  }\n\n  const event = {\n    exception: {\n      values: [\n        {\n          type: name,\n          value: message,\n        },\n      ],\n    },\n  };\n\n  return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n  // event.exception\n  const e = (event.exception = event.exception || {});\n  // event.exception.values\n  const ev = (e.values = e.values || []);\n  // event.exception.values[0]\n  const ev0 = (ev[0] = ev[0] || {});\n  // event.exception.values[0].stacktrace\n  const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n  // event.exception.values[0].stacktrace.frames\n  const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n  const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n  const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n  const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n  // event.exception.values[0].stacktrace.frames\n  if (ev0sf.length === 0) {\n    ev0sf.push({\n      colno,\n      filename,\n      function: '?',\n      in_app: true,\n      lineno,\n    });\n  }\n\n  return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n  DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n  const client = getClient<BrowserClient>();\n  const options = (client && client.getOptions()) || {\n    stackParser: () => [],\n    attachStacktrace: false,\n  };\n  return options;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    preprocessEvent(event) {\n      // if none of the information we want exists, don't bother\n      if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n        return;\n      }\n\n      // grab as much info as exists and add it to the event\n      const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n      const { referrer } = WINDOW.document || {};\n      const { userAgent } = WINDOW.navigator || {};\n\n      const headers = {\n        ...(event.request && event.request.headers),\n        ...(referrer && { Referer: referrer }),\n        ...(userAgent && { 'User-Agent': userAgent }),\n      };\n      const request = { ...event.request, ...(url && { url }), headers };\n\n      event.request = request;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n  Integration & { preprocessEvent: (event: Event) => void }\n>;\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n  'EventTarget',\n  'Window',\n  'Node',\n  'ApplicationCache',\n  'AudioTrackList',\n  'BroadcastChannel',\n  'ChannelMergerNode',\n  'CryptoOperation',\n  'EventSource',\n  'FileReader',\n  'HTMLUnknownElement',\n  'IDBDatabase',\n  'IDBRequest',\n  'IDBTransaction',\n  'KeyOperation',\n  'MediaController',\n  'MessagePort',\n  'ModalWindow',\n  'Notification',\n  'SVGElementInstance',\n  'Screen',\n  'SharedWorker',\n  'TextTrack',\n  'TextTrackCue',\n  'TextTrackList',\n  'WebSocket',\n  'WebSocketWorker',\n  'Worker',\n  'XMLHttpRequest',\n  'XMLHttpRequestEventTarget',\n  'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n  setTimeout: boolean;\n  setInterval: boolean;\n  requestAnimationFrame: boolean;\n  XMLHttpRequest: boolean;\n  eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial<TryCatchOptions> = {}) => {\n  const _options = {\n    XMLHttpRequest: true,\n    eventTarget: true,\n    requestAnimationFrame: true,\n    setInterval: true,\n    setTimeout: true,\n    ...options,\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    // TODO: This currently only works for the first client this is setup\n    // We may want to adjust this to check for client etc.\n    setupOnce() {\n      if (_options.setTimeout) {\n        fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n      }\n\n      if (_options.setInterval) {\n        fill(WINDOW, 'setInterval', _wrapTimeFunction);\n      }\n\n      if (_options.requestAnimationFrame) {\n        fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n      }\n\n      if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n        fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n      }\n\n      const eventTargetOption = _options.eventTarget;\n      if (eventTargetOption) {\n        const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n        eventTarget.forEach(_wrapEventTarget);\n      }\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  browserApiErrorsIntegration,\n) as IntegrationClass<Integration> & {\n  new (options?: {\n    setTimeout: boolean;\n    setInterval: boolean;\n    requestAnimationFrame: boolean;\n    XMLHttpRequest: boolean;\n    eventTarget: boolean | string[];\n  }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, ...args: any[]): number {\n    const originalCallback = args[0];\n    args[0] = wrap(originalCallback, {\n      mechanism: {\n        data: { function: getFunctionName(original) },\n        handled: false,\n        type: 'instrument',\n      },\n    });\n    return original.apply(this, args);\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, callback: () => void): () => void {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return original.apply(this, [\n      wrap(callback, {\n        mechanism: {\n          data: {\n            function: 'requestAnimationFrame',\n            handler: getFunctionName(original),\n          },\n          handled: false,\n          type: 'instrument',\n        },\n      }),\n    ]);\n  };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: XMLHttpRequest, ...args: any[]): void {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const xhr = this;\n    const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n    xmlHttpRequestProps.forEach(prop => {\n      if (prop in xhr && typeof xhr[prop] === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        fill(xhr, prop, function (original: WrappedFunction): () => any {\n          const wrapOptions = {\n            mechanism: {\n              data: {\n                function: prop,\n                handler: getFunctionName(original),\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          };\n\n          // If Instrument integration has been called before TryCatch, get the name of original function\n          const originalFunction = getOriginalFunction(original);\n          if (originalFunction) {\n            wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n          }\n\n          // Otherwise wrap directly\n          return wrap(original, wrapOptions);\n        });\n      }\n    });\n\n    return originalSend.apply(this, args);\n  };\n}\n\nfunction _wrapEventTarget(target: string): void {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const globalObject = WINDOW as { [key: string]: any };\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  const proto = globalObject[target] && globalObject[target].prototype;\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n  if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n    return;\n  }\n\n  fill(proto, 'addEventListener', function (original: VoidFunction,): (\n    eventName: string,\n    fn: EventListenerObject,\n    options?: boolean | AddEventListenerOptions,\n  ) => void {\n    return function (\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this: any,\n      eventName: string,\n      fn: EventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n      try {\n        if (typeof fn.handleEvent === 'function') {\n          // ESlint disable explanation:\n          //  First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n          //  introduce a bug here, because bind returns a new function that doesn't have our\n          //  flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n          //  Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          fn.handleEvent = wrap(fn.handleEvent, {\n            mechanism: {\n              data: {\n                function: 'handleEvent',\n                handler: getFunctionName(fn),\n                target,\n              },\n              handled: false,\n              type: 'instrument',\n            },\n          });\n        }\n      } catch (err) {\n        // can sometimes get 'Permission denied to access property \"handle Event'\n      }\n\n      return original.apply(this, [\n        eventName,\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        wrap(fn as any as WrappedFunction, {\n          mechanism: {\n            data: {\n              function: 'addEventListener',\n              handler: getFunctionName(fn),\n              target,\n            },\n            handled: false,\n            type: 'instrument',\n          },\n        }),\n        options,\n      ]);\n    };\n  });\n\n  fill(\n    proto,\n    'removeEventListener',\n    function (\n      originalRemoveEventListener: () => void,\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n      return function (\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this: any,\n        eventName: string,\n        fn: EventListenerObject,\n        options?: boolean | EventListenerOptions,\n      ): () => void {\n        /**\n         * There are 2 possible scenarios here:\n         *\n         * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n         * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n         * as a pass-through, and call original `removeEventListener` with it.\n         *\n         * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n         * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n         * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n         * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n         * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n         *\n         * When someone adds a handler prior to initialization, and then do it again, but after,\n         * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n         * to get rid of the initial handler and it'd stick there forever.\n         */\n        const wrappedEventHandler = fn as unknown as WrappedFunction;\n        try {\n          const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n          if (originalEventHandler) {\n            originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n          }\n        } catch (e) {\n          // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n        }\n        return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n      };\n    },\n  );\n}\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { getCurrentScope } from './exports';\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass<F extends Client, O extends ClientOptions> = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind<F extends Client, O extends ClientOptions>(\n  clientClass: ClientClass<F, O>,\n  options: O,\n): void {\n  if (options.debug === true) {\n    if (DEBUG_BUILD) {\n      logger.enable();\n    } else {\n      // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n      consoleSandbox(() => {\n        // eslint-disable-next-line no-console\n        console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n      });\n    }\n  }\n  const scope = getCurrentScope();\n  scope.update(options.initialScope);\n\n  const client = new clientClass(options);\n  setCurrentClient(client);\n  initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n  // eslint-disable-next-line deprecation/deprecation\n  const top = hub.getStackTop();\n  top.client = client;\n  top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client: Client): void {\n  if (client.init) {\n    client.init();\n    // TODO v8: Remove this fallback\n    // eslint-disable-next-line deprecation/deprecation\n  } else if (client.setupIntegrations) {\n    // eslint-disable-next-line deprecation/deprecation\n    client.setupIntegrations();\n  }\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n  const frame: StackFrame = {\n    filename,\n    function: func,\n    in_app: true, // All browser frames are considered in_app\n  };\n\n  if (lineno !== undefined) {\n    frame.lineno = lineno;\n  }\n\n  if (colno !== undefined) {\n    frame.colno = colno;\n  }\n\n  return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n  /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n  const parts = chromeRegex.exec(line);\n\n  if (parts) {\n    const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n    if (isEval) {\n      const subMatch = chromeEvalRegex.exec(parts[2]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line/column number\n        parts[2] = subMatch[1]; // url\n        parts[3] = subMatch[2]; // line\n        parts[4] = subMatch[3]; // column\n      }\n    }\n\n    // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n    // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n    const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n    return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n  }\n\n  return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n  const parts = geckoREgex.exec(line);\n\n  if (parts) {\n    const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n    if (isEval) {\n      const subMatch = geckoEvalRegex.exec(parts[3]);\n\n      if (subMatch) {\n        // throw out eval line/column and use top-most line number\n        parts[1] = parts[1] || 'eval';\n        parts[3] = subMatch[1];\n        parts[4] = subMatch[2];\n        parts[5] = ''; // no column when eval\n      }\n    }\n\n    let filename = parts[3];\n    let func = parts[1] || UNKNOWN_FUNCTION;\n    [func, filename] = extractSafariExtensionDetails(func, filename);\n\n    return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n  }\n\n  return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n  const parts = winjsRegex.exec(line);\n\n  return parts\n    ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n    : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n  const parts = opera10Regex.exec(line);\n  return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n  / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n  const parts = opera11Regex.exec(line);\n  return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n *   at function@url:row:col\n *   at function@url:row:col\n *   at function@url:row:col\n *\n * it produces something like:\n *\n *   function@url:row:col\n *   function@url:row:col\n *   function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n  const isSafariExtension = func.indexOf('safari-extension') !== -1;\n  const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n  return isSafariExtension || isSafariWebExtension\n    ? [\n        func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n        isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n      ]\n    : [func, filename];\n};\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n *   const p = f.apply(this, arguments);\n *\n *   p.then(function() {\n *     console.log('hi.');\n *   });\n *\n *   return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome:  Failed to fetch\n * Edge:    Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari:  resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n  if (cachedFetchImpl) {\n    return cachedFetchImpl;\n  }\n\n  /* eslint-disable @typescript-eslint/unbound-method */\n\n  // Fast path to avoid DOM I/O\n  if (isNativeFetch(WINDOW.fetch)) {\n    return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n  }\n\n  const document = WINDOW.document;\n  let fetchImpl = WINDOW.fetch;\n  // eslint-disable-next-line deprecation/deprecation\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow.fetch) {\n        fetchImpl = contentWindow.fetch;\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n    }\n  }\n\n  return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n  /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n  cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n  options: BrowserTransportOptions,\n  nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n  let pendingBodySize = 0;\n  let pendingCount = 0;\n\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    const requestSize = request.body.length;\n    pendingBodySize += requestSize;\n    pendingCount++;\n\n    const requestOptions: RequestInit = {\n      body: request.body,\n      method: 'POST',\n      referrerPolicy: 'origin',\n      headers: options.headers,\n      // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n      // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n      // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n      // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n      // Gotchas:\n      // - `keepalive` isn't supported by Firefox\n      // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n      //   If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n      //   We will therefore only activate the flag when we're below that limit.\n      // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n      // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n      keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n      ...options.fetchOptions,\n    };\n\n    try {\n      return nativeFetch(options.url, requestOptions).then(response => {\n        pendingBodySize -= requestSize;\n        pendingCount--;\n        return {\n          statusCode: response.status,\n          headers: {\n            'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n            'retry-after': response.headers.get('Retry-After'),\n          },\n        };\n      });\n    } catch (e) {\n      clearCachedFetchImplementation();\n      pendingBodySize -= requestSize;\n      pendingCount--;\n      return rejectedSyncPromise(e);\n    }\n  }\n\n  return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n  function makeRequest(request: TransportRequest): PromiseLike<TransportMakeRequestResponse> {\n    return new SyncPromise((resolve, reject) => {\n      const xhr = new XMLHttpRequest();\n\n      xhr.onerror = reject;\n\n      xhr.onreadystatechange = (): void => {\n        if (xhr.readyState === XHR_READYSTATE_DONE) {\n          resolve({\n            statusCode: xhr.status,\n            headers: {\n              'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n              'retry-after': xhr.getResponseHeader('Retry-After'),\n            },\n          });\n        }\n      };\n\n      xhr.open('POST', options.url);\n\n      for (const header in options.headers) {\n        if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n          xhr.setRequestHeader(header, options.headers[header]);\n        }\n      }\n\n      xhr.send(request.body);\n    });\n  }\n\n  return createTransport(options, makeRequest);\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n  feedback: UserFeedback,\n  {\n    metadata,\n    tunnel,\n    dsn,\n  }: {\n    metadata: SdkMetadata | undefined;\n    tunnel: string | undefined;\n    dsn: DsnComponents | undefined;\n  },\n): EventEnvelope {\n  const headers: EventEnvelope[0] = {\n    event_id: feedback.event_id,\n    sent_at: new Date().toISOString(),\n    ...(metadata &&\n      metadata.sdk && {\n        sdk: {\n          name: metadata.sdk.name,\n          version: metadata.sdk.version,\n        },\n      }),\n    ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n  };\n  const item = createUserFeedbackEnvelopeItem(feedback);\n\n  return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n  const feedbackHeaders: UserFeedbackItem[0] = {\n    type: 'user_report',\n  };\n  return [feedbackHeaders, feedback];\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n  return urlEncode({\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    sentry_key: dsn.publicKey,\n    sentry_version: SENTRY_API_VERSION,\n    ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n  });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n  dsn: DsnComponents,\n  // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n  // options: ClientOptions = {} as ClientOptions,\n  tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n  // TODO (v8): Use this code instead\n  // const { tunnel, _metadata = {} } = options;\n  // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n  const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n  const sdkInfo =\n    typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n  dsnLike: DsnLike,\n  dialogOptions: {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    [key: string]: any;\n    user?: { name?: string; email?: string };\n  },\n): string {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n","/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  ClientOptions,\n  DataCategory,\n  DsnComponents,\n  DynamicSamplingContext,\n  Envelope,\n  ErrorEvent,\n  Event,\n  EventDropReason,\n  EventHint,\n  EventProcessor,\n  FeedbackEvent,\n  Integration,\n  IntegrationClass,\n  MetricBucketItem,\n  MetricsAggregator,\n  Outcome,\n  ParameterizedString,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  Severity,\n  SeverityLevel,\n  StartSpanOptions,\n  Transaction,\n  TransactionEvent,\n  Transport,\n  TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n  SentryError,\n  SyncPromise,\n  addItemToEnvelope,\n  checkOrSetAlreadyCaught,\n  createAttachmentEnvelopeItem,\n  isParameterizedString,\n  isPlainObject,\n  isPrimitive,\n  isThenable,\n  logger,\n  makeDsn,\n  rejectedSyncPromise,\n  resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeOptions> {\n *   public constructor(options: NodeOptions) {\n *     super(options);\n *   }\n *\n *   // ...\n * }\n */\nexport abstract class BaseClient<O extends ClientOptions> implements Client<O> {\n  /**\n   * A reference to a metrics aggregator\n   *\n   * @experimental Note this is alpha API. It may experience breaking changes in the future.\n   */\n  public metricsAggregator?: MetricsAggregator;\n\n  /** Options passed to the SDK. */\n  protected readonly _options: O;\n\n  /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n  protected readonly _dsn?: DsnComponents;\n\n  protected readonly _transport?: Transport;\n\n  /** Array of set up integrations. */\n  protected _integrations: IntegrationIndex;\n\n  /** Indicates whether this client's integrations have been set up. */\n  protected _integrationsInitialized: boolean;\n\n  /** Number of calls being processed */\n  protected _numProcessing: number;\n\n  protected _eventProcessors: EventProcessor[];\n\n  /** Holds flushable  */\n  private _outcomes: { [key: string]: number };\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private _hooks: Record<string, Function[]>;\n\n  /**\n   * Initializes this client instance.\n   *\n   * @param options Options for the client.\n   */\n  protected constructor(options: O) {\n    this._options = options;\n    this._integrations = {};\n    this._integrationsInitialized = false;\n    this._numProcessing = 0;\n    this._outcomes = {};\n    this._hooks = {};\n    this._eventProcessors = [];\n\n    if (options.dsn) {\n      this._dsn = makeDsn(options.dsn);\n    } else {\n      DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n    }\n\n    if (this._dsn) {\n      const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n      this._transport = options.transport({\n        tunnel: this._options.tunnel,\n        recordDroppedEvent: this.recordDroppedEvent.bind(this),\n        ...options.transportOptions,\n        url,\n      });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (checkOrSetAlreadyCaught(exception)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    this._process(\n      this.eventFromException(exception, hint)\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureMessage(\n    message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    level?: Severity | SeverityLevel,\n    hint?: EventHint,\n    scope?: Scope,\n  ): string | undefined {\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const eventMessage = isParameterizedString(message) ? message : String(message);\n\n    const promisedEvent = isPrimitive(message)\n      ? this.eventFromMessage(eventMessage, level, hint)\n      : this.eventFromException(message, hint);\n\n    this._process(\n      promisedEvent\n        .then(event => this._captureEvent(event, hint, scope))\n        .then(result => {\n          eventId = result;\n        }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n    // ensure we haven't captured this very object before\n    if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n      DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n      return;\n    }\n\n    let eventId: string | undefined = hint && hint.event_id;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n    this._process(\n      this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n        eventId = result;\n      }),\n    );\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureSession(session: Session): void {\n    if (!(typeof session.release === 'string')) {\n      DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n    } else {\n      this.sendSession(session);\n      // After sending, we set init false to indicate it's not the first occurrence\n      updateSession(session, { init: false });\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getDsn(): DsnComponents | undefined {\n    return this._dsn;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getOptions(): O {\n    return this._options;\n  }\n\n  /**\n   * @see SdkMetadata in @sentry/types\n   *\n   * @return The metadata of the SDK\n   */\n  public getSdkMetadata(): SdkMetadata | undefined {\n    return this._options._metadata;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getTransport(): Transport | undefined {\n    return this._transport;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public flush(timeout?: number): PromiseLike<boolean> {\n    const transport = this._transport;\n    if (transport) {\n      if (this.metricsAggregator) {\n        this.metricsAggregator.flush();\n      }\n      return this._isClientDoneProcessing(timeout).then(clientFinished => {\n        return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n      });\n    } else {\n      return resolvedSyncPromise(true);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public close(timeout?: number): PromiseLike<boolean> {\n    return this.flush(timeout).then(result => {\n      this.getOptions().enabled = false;\n      if (this.metricsAggregator) {\n        this.metricsAggregator.close();\n      }\n      return result;\n    });\n  }\n\n  /** Get all installed event processors. */\n  public getEventProcessors(): EventProcessor[] {\n    return this._eventProcessors;\n  }\n\n  /** @inheritDoc */\n  public addEventProcessor(eventProcessor: EventProcessor): void {\n    this._eventProcessors.push(eventProcessor);\n  }\n\n  /**\n   * This is an internal function to setup all integrations that should run on the client.\n   * @deprecated Use `client.init()` instead.\n   */\n  public setupIntegrations(forceInitialize?: boolean): void {\n    if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n      this._setupIntegrations();\n    }\n  }\n\n  /** @inheritdoc */\n  public init(): void {\n    if (this._isEnabled()) {\n      this._setupIntegrations();\n    }\n  }\n\n  /**\n   * Gets an installed integration by its `id`.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegrationById(integrationId: string): Integration | undefined {\n    return this.getIntegrationByName(integrationId);\n  }\n\n  /**\n   * Gets an installed integration by its name.\n   *\n   * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n   */\n  public getIntegrationByName<T extends Integration = Integration>(integrationName: string): T | undefined {\n    return this._integrations[integrationName] as T | undefined;\n  }\n\n  /**\n   * Returns the client's instance of the given integration class, it any.\n   * @deprecated Use `getIntegrationByName()` instead.\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    try {\n      return (this._integrations[integration.id] as T) || null;\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n      return null;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addIntegration(integration: Integration): void {\n    const isAlreadyInstalled = this._integrations[integration.name];\n\n    // This hook takes care of only installing if not already installed\n    setupIntegration(this, integration, this._integrations);\n    // Here we need to check manually to make sure to not run this multiple times\n    if (!isAlreadyInstalled) {\n      afterSetupIntegrations(this, [integration]);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendEvent(event: Event, hint: EventHint = {}): void {\n    this.emit('beforeSendEvent', event, hint);\n\n    let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n    for (const attachment of hint.attachments || []) {\n      env = addItemToEnvelope(\n        env,\n        createAttachmentEnvelopeItem(\n          attachment,\n          this._options.transportOptions && this._options.transportOptions.textEncoder,\n        ),\n      );\n    }\n\n    const promise = this._sendEnvelope(env);\n    if (promise) {\n      promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public sendSession(session: Session | SessionAggregates): void {\n    const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(env);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public recordDroppedEvent(reason: EventDropReason, category: DataCategory, eventOrCount?: Event | number): void {\n    if (this._options.sendClientReports) {\n      // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n      // If event is passed as third argument, we assume this is a count of 1\n      const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n      // We want to track each category (error, transaction, session, replay_event) separately\n      // but still keep the distinction between different type of outcomes.\n      // We could use nested maps, but it's much easier to read and type this way.\n      // A correct type for map-based implementation if we want to go that route\n      // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n      // With typescript 4.1 we could even use template literal types\n      const key = `${reason}:${category}`;\n      DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n      this._outcomes[key] = (this._outcomes[key] || 0) + count;\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public captureAggregateMetrics(metricBucketItems: Array<MetricBucketItem>): void {\n    DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n    const metricsEnvelope = createMetricEnvelope(\n      metricBucketItems,\n      this._dsn,\n      this._options._metadata,\n      this._options.tunnel,\n    );\n\n    // _sendEnvelope should not throw\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    this._sendEnvelope(metricsEnvelope);\n  }\n\n  // Keep on() & emit() signatures in sync with types' client.ts interface\n  /* eslint-disable @typescript-eslint/unified-signatures */\n\n  /** @inheritdoc */\n  public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'afterSendEvent',\n    callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n  /** @inheritdoc */\n  public on(\n    hook: 'beforeSendFeedback',\n    callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n  ): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n  /** @inheritdoc */\n  public on(hook: string, callback: unknown): void {\n    if (!this._hooks[hook]) {\n      this._hooks[hook] = [];\n    }\n\n    // @ts-expect-error We assue the types are correct\n    this._hooks[hook].push(callback);\n  }\n\n  /** @inheritdoc */\n  public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n  /** @inheritdoc */\n  public emit(hook: string, ...rest: unknown[]): void {\n    if (this._hooks[hook]) {\n      this._hooks[hook].forEach(callback => callback(...rest));\n    }\n  }\n\n  /* eslint-enable @typescript-eslint/unified-signatures */\n\n  /** Setup integrations for this client. */\n  protected _setupIntegrations(): void {\n    const { integrations } = this._options;\n    this._integrations = setupIntegrations(this, integrations);\n    afterSetupIntegrations(this, integrations);\n\n    // TODO v8: We don't need this flag anymore\n    this._integrationsInitialized = true;\n  }\n\n  /** Updates existing session based on the provided event */\n  protected _updateSessionFromEvent(session: Session, event: Event): void {\n    let crashed = false;\n    let errored = false;\n    const exceptions = event.exception && event.exception.values;\n\n    if (exceptions) {\n      errored = true;\n\n      for (const ex of exceptions) {\n        const mechanism = ex.mechanism;\n        if (mechanism && mechanism.handled === false) {\n          crashed = true;\n          break;\n        }\n      }\n    }\n\n    // A session is updated and that session update is sent in only one of the two following scenarios:\n    // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n    // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n    const sessionNonTerminal = session.status === 'ok';\n    const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n    if (shouldUpdateAndSend) {\n      updateSession(session, {\n        ...(crashed && { status: 'crashed' }),\n        errors: session.errors || Number(errored || crashed),\n      });\n      this.captureSession(session);\n    }\n  }\n\n  /**\n   * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n   * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n   * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n   * `false` otherwise\n   */\n  protected _isClientDoneProcessing(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise(resolve => {\n      let ticked: number = 0;\n      const tick: number = 1;\n\n      const interval = setInterval(() => {\n        if (this._numProcessing == 0) {\n          clearInterval(interval);\n          resolve(true);\n        } else {\n          ticked += tick;\n          if (timeout && ticked >= timeout) {\n            clearInterval(interval);\n            resolve(false);\n          }\n        }\n      }, tick);\n    });\n  }\n\n  /** Determines whether this SDK is enabled and a transport is present. */\n  protected _isEnabled(): boolean {\n    return this.getOptions().enabled !== false && this._transport !== undefined;\n  }\n\n  /**\n   * Adds common information to events.\n   *\n   * The information includes release and environment from `options`,\n   * breadcrumbs and context (extra, tags and user) from the scope.\n   *\n   * Information that is already present in the event is never overwritten. For\n   * nested objects, such as the context, keys are merged.\n   *\n   * @param event The original event.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A new event with more information.\n   */\n  protected _prepareEvent(\n    event: Event,\n    hint: EventHint,\n    scope?: Scope,\n    isolationScope = getIsolationScope(),\n  ): PromiseLike<Event | null> {\n    const options = this.getOptions();\n    const integrations = Object.keys(this._integrations);\n    if (!hint.integrations && integrations.length > 0) {\n      hint.integrations = integrations;\n    }\n\n    this.emit('preprocessEvent', event, hint);\n\n    return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n      if (evt === null) {\n        return evt;\n      }\n\n      const propagationContext = {\n        ...isolationScope.getPropagationContext(),\n        ...(scope ? scope.getPropagationContext() : undefined),\n      };\n\n      const trace = evt.contexts && evt.contexts.trace;\n      if (!trace && propagationContext) {\n        const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n        evt.contexts = {\n          trace: {\n            trace_id,\n            span_id: spanId,\n            parent_span_id: parentSpanId,\n          },\n          ...evt.contexts,\n        };\n\n        const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n        evt.sdkProcessingMetadata = {\n          dynamicSamplingContext,\n          ...evt.sdkProcessingMetadata,\n        };\n      }\n      return evt;\n    });\n  }\n\n  /**\n   * Processes the event and logs an error in case of rejection\n   * @param event\n   * @param hint\n   * @param scope\n   */\n  protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike<string | undefined> {\n    return this._processEvent(event, hint, scope).then(\n      finalEvent => {\n        return finalEvent.event_id;\n      },\n      reason => {\n        if (DEBUG_BUILD) {\n          // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n          // control flow, log just the message (no stack) as a log-level log.\n          const sentryError = reason as SentryError;\n          if (sentryError.logLevel === 'log') {\n            logger.log(sentryError.message);\n          } else {\n            logger.warn(sentryError);\n          }\n        }\n        return undefined;\n      },\n    );\n  }\n\n  /**\n   * Processes an event (either error or message) and sends it to Sentry.\n   *\n   * This also adds breadcrumbs and context information to the event. However,\n   * platform specific meta data (such as the User's IP address) must be added\n   * by the SDK implementor.\n   *\n   *\n   * @param event The event to send to Sentry.\n   * @param hint May contain additional information about the original exception.\n   * @param scope A scope containing event metadata.\n   * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n   */\n  protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike<Event> {\n    const options = this.getOptions();\n    const { sampleRate } = options;\n\n    const isTransaction = isTransactionEvent(event);\n    const isError = isErrorEvent(event);\n    const eventType = event.type || 'error';\n    const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n    // 1.0 === 100% events are sent\n    // 0.0 === 0% events are sent\n    // Sampling for transaction happens somewhere else\n    if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n      this.recordDroppedEvent('sample_rate', 'error', event);\n      return rejectedSyncPromise(\n        new SentryError(\n          `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n          'log',\n        ),\n      );\n    }\n\n    const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n    const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n    const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n    return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n      .then(prepared => {\n        if (prepared === null) {\n          this.recordDroppedEvent('event_processor', dataCategory, event);\n          throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n        }\n\n        const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n        if (isInternalException) {\n          return prepared;\n        }\n\n        const result = processBeforeSend(options, prepared, hint);\n        return _validateBeforeSendResult(result, beforeSendLabel);\n      })\n      .then(processedEvent => {\n        if (processedEvent === null) {\n          this.recordDroppedEvent('before_send', dataCategory, event);\n          if (isTransaction) {\n            const spans = event.spans || [];\n            // the transaction itself counts as one span, plus all the child spans that are added\n            const spanCount = 1 + spans.length;\n            this.recordDroppedEvent('before_send', 'span', spanCount);\n          }\n          throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n        }\n\n        const session = scope && scope.getSession();\n        if (!isTransaction && session) {\n          this._updateSessionFromEvent(session, processedEvent);\n        }\n\n        if (isTransaction) {\n          const spanCountBefore =\n            (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n            0;\n          const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n          const droppedSpanCount = spanCountBefore - spanCountAfter;\n          if (droppedSpanCount > 0) {\n            this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n          }\n        }\n\n        // None of the Sentry built event processor will update transaction name,\n        // so if the transaction name has been changed by an event processor, we know\n        // it has to come from custom event processor added by a user\n        const transactionInfo = processedEvent.transaction_info;\n        if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n          const source = 'custom';\n          processedEvent.transaction_info = {\n            ...transactionInfo,\n            source,\n          };\n        }\n\n        this.sendEvent(processedEvent, hint);\n        return processedEvent;\n      })\n      .then(null, reason => {\n        if (reason instanceof SentryError) {\n          throw reason;\n        }\n\n        this.captureException(reason, {\n          data: {\n            __sentry__: true,\n          },\n          originalException: reason,\n        });\n        throw new SentryError(\n          `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n        );\n      });\n  }\n\n  /**\n   * Occupies the client with processing and event\n   */\n  protected _process<T>(promise: PromiseLike<T>): void {\n    this._numProcessing++;\n    void promise.then(\n      value => {\n        this._numProcessing--;\n        return value;\n      },\n      reason => {\n        this._numProcessing--;\n        return reason;\n      },\n    );\n  }\n\n  /**\n   * @inheritdoc\n   */\n  protected _sendEnvelope(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> | void {\n    this.emit('beforeEnvelope', envelope);\n\n    if (this._isEnabled() && this._transport) {\n      return this._transport.send(envelope).then(null, reason => {\n        DEBUG_BUILD && logger.error('Error while sending event:', reason);\n      });\n    } else {\n      DEBUG_BUILD && logger.error('Transport disabled');\n    }\n  }\n\n  /**\n   * Clears outcomes on this client and returns them.\n   */\n  protected _clearOutcomes(): Outcome[] {\n    const outcomes = this._outcomes;\n    this._outcomes = {};\n    return Object.keys(outcomes).map(key => {\n      const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n      return {\n        reason,\n        category,\n        quantity: outcomes[key],\n      };\n    });\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n  public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike<Event>;\n\n  /**\n   * @inheritDoc\n   */\n  public abstract eventFromMessage(\n    _message: ParameterizedString,\n    // eslint-disable-next-line deprecation/deprecation\n    _level?: Severity | SeverityLevel,\n    _hint?: EventHint,\n  ): PromiseLike<Event>;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n  beforeSendResult: PromiseLike<Event | null> | Event | null,\n  beforeSendLabel: string,\n): PromiseLike<Event | null> | Event | null {\n  const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n  if (isThenable(beforeSendResult)) {\n    return beforeSendResult.then(\n      event => {\n        if (!isPlainObject(event) && event !== null) {\n          throw new SentryError(invalidValueError);\n        }\n        return event;\n      },\n      e => {\n        throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n      },\n    );\n  } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n    throw new SentryError(invalidValueError);\n  }\n  return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n): PromiseLike<Event | null> | Event | null {\n  const { beforeSend, beforeSendTransaction } = options;\n\n  if (isErrorEvent(event) && beforeSend) {\n    return beforeSend(event, hint);\n  }\n\n  if (isTransactionEvent(event) && beforeSendTransaction) {\n    if (event.spans) {\n      // We store the # of spans before processing in SDK metadata,\n      // so we can compare it afterwards to determine how many spans were dropped\n      const spanCountBefore = event.spans.length;\n      event.sdkProcessingMetadata = {\n        ...event.sdkProcessingMetadata,\n        spanCountBeforeProcessing: spanCountBefore,\n      };\n    }\n    return beforeSendTransaction(event, hint);\n  }\n\n  return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n  return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n  return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n  const client = getClient();\n\n  if (!client || !client.addEventProcessor) {\n    return;\n  }\n\n  client.addEventProcessor(callback);\n}\n","import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n  metricBucketItems: Array<MetricBucketItem>,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): StatsdEnvelope {\n  const headers: StatsdEnvelope[0] = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (metadata && metadata.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  const item = createMetricEnvelopeItem(metricBucketItems);\n  return createEnvelope<StatsdEnvelope>(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n  const payload = serializeMetricBuckets(metricBucketItems);\n  const metricHeaders: StatsdItem[0] = {\n    type: 'statsd',\n    length: payload.length,\n  };\n  return [metricHeaders, payload];\n}\n","import type {\n  DsnComponents,\n  Event,\n  EventEnvelope,\n  EventItem,\n  SdkInfo,\n  SdkMetadata,\n  Session,\n  SessionAggregates,\n  SessionEnvelope,\n  SessionItem,\n} from '@sentry/types';\nimport {\n  createEnvelope,\n  createEventEnvelopeHeaders,\n  dsnToString,\n  getSdkMetadataForEnvelopeHeader,\n} from '@sentry/utils';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n  if (!sdkInfo) {\n    return event;\n  }\n  event.sdk = event.sdk || {};\n  event.sdk.name = event.sdk.name || sdkInfo.name;\n  event.sdk.version = event.sdk.version || sdkInfo.version;\n  event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n  event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n  return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n  session: Session | SessionAggregates,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): SessionEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem: SessionItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope<SessionEnvelope>(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n  event: Event,\n  dsn?: DsnComponents,\n  metadata?: SdkMetadata,\n  tunnel?: string,\n): EventEnvelope {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjut a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem: EventItem = [{ type: eventType }, event];\n  return createEnvelope<EventEnvelope>(envelopeHeaders, [eventItem]);\n}\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n  return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n  // eslint-disable-next-line deprecation/deprecation\n  getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n  processors: EventProcessor[],\n  event: Event | null,\n  hint: EventHint,\n  index: number = 0,\n): PromiseLike<Event | null> {\n  return new SyncPromise<Event | null>((resolve, reject) => {\n    const processor = processors[index];\n    if (event === null || typeof processor !== 'function') {\n      resolve(event);\n    } else {\n      const result = processor({ ...event }, hint) as Event | null;\n\n      DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n      if (isThenable(result)) {\n        void result\n          .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n          .then(null, reject);\n      } else {\n        void notifyEventProcessors(processors, result, hint, index + 1)\n          .then(resolve)\n          .then(null, reject);\n      }\n    }\n  });\n}\n","import type {\n  Breadcrumb,\n  BreadcrumbHint,\n  CaptureContext,\n  CheckIn,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  FinishedCheckIn,\n  MonitorConfig,\n  Primitive,\n  Scope as ScopeInterface,\n  Session,\n  SessionContext,\n  Severity,\n  SeverityLevel,\n  Span,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  exception: any,\n  hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n  message: string,\n  // eslint-disable-next-line deprecation/deprecation\n  captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType<Hub['configureScope']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType<Hub['addBreadcrumb']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType<Hub['setContext']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType<Hub['setExtras']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType<Hub['setExtra']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType<Hub['setTags']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType<Hub['setTag']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType<Hub['setUser']> {\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n *     pushScope();\n *     callback();\n *     popScope();\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n  ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n  // eslint-disable-next-line deprecation/deprecation\n  const hub = getCurrentHub();\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n    if (!scope) {\n      // eslint-disable-next-line deprecation/deprecation\n      return hub.withScope(callback);\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    return hub.withScope(() => {\n      // eslint-disable-next-line deprecation/deprecation\n      hub.getStackTop().scope = scope as Scope;\n      return callback(scope as Scope);\n    });\n  }\n\n  // eslint-disable-next-line deprecation/deprecation\n  return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T {\n  return runWithAsyncContext(() => {\n    return callback(getIsolationScope());\n  });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span, callback: (scope: Scope) => T): T {\n  return withScope(scope => {\n    // eslint-disable-next-line deprecation/deprecation\n    scope.setSpan(span);\n    return callback(scope);\n  });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n  context: TransactionContext,\n  customSamplingContext?: CustomSamplingContext,\n  // eslint-disable-next-line deprecation/deprecation\n): ReturnType<Hub['startTransaction']> {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n  monitorSlug: CheckIn['monitorSlug'],\n  callback: () => T,\n  upsertMonitorConfig?: MonitorConfig,\n): T {\n  const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n  const now = timestampInSeconds();\n\n  function finishCheckIn(status: FinishedCheckIn['status']): void {\n    captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n  }\n\n  let maybePromiseResult: T;\n  try {\n    maybePromiseResult = callback();\n  } catch (e) {\n    finishCheckIn('error');\n    throw e;\n  }\n\n  if (isThenable(maybePromiseResult)) {\n    Promise.resolve(maybePromiseResult).then(\n      () => {\n        finishCheckIn('ok');\n      },\n      () => {\n        finishCheckIn('error');\n      },\n    );\n  } else {\n    finishCheckIn('ok');\n  }\n\n  return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getClient<C>();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n  return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n  const client = getClient();\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    release,\n    environment,\n    user: currentScope.getUser() || isolationScope.getUser(),\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession && currentSession.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n\n  // TODO (v8): Remove this and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n  const client = getClient();\n  // TODO (v8): Remove currentScope and only use the isolation scope(?).\n  // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session && client && client.captureSession) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n","/* eslint-disable max-lines */\nimport type {\n  Breadcrumb,\n  BreadcrumbHint,\n  Client,\n  CustomSamplingContext,\n  Event,\n  EventHint,\n  Extra,\n  Extras,\n  Hub as HubInterface,\n  Integration,\n  IntegrationClass,\n  Primitive,\n  Session,\n  SessionContext,\n  Severity,\n  SeverityLevel,\n  Transaction,\n  TransactionContext,\n  User,\n} from '@sentry/types';\nimport {\n  GLOBAL_OBJ,\n  consoleSandbox,\n  dateTimestampInSeconds,\n  getGlobalSingleton,\n  isThenable,\n  logger,\n  uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n  /** Whether to reuse an existing async context if one exists. Defaults to false. */\n  reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n  /**\n   * Gets the current async context. Returns undefined if there is no current async context.\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  getCurrentHub: () => Hub | undefined;\n  /**\n   * Runs the supplied callback in its own async context.\n   */\n  runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n  client?: Client;\n  scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n  __SENTRY__?: {\n    // eslint-disable-next-line deprecation/deprecation\n    hub?: Hub;\n    acs?: AsyncContextStrategy;\n    /**\n     * Extra Hub properties injected by various SDKs\n     */\n    integrations?: Integration[];\n    extensions?: {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n  /** Is a {@link Layer}[] containing the client and scope */\n  private readonly _stack: Layer[];\n\n  /** Contains the last event id of a captured event.  */\n  private _lastEventId?: string;\n\n  private _isolationScope: Scope;\n\n  /**\n   * Creates a new instance of the hub, will push one {@link Layer} into the\n   * internal stack on creation.\n   *\n   * @param client bound to the hub.\n   * @param scope bound to the hub.\n   * @param version number, higher number means higher priority.\n   *\n   * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n   *\n   * If you are currently using the Hub for multi-client use like so:\n   *\n   * ```\n   * // OLD\n   * const hub = new Hub();\n   * hub.bindClient(client);\n   * makeMain(hub)\n   * ```\n   *\n   * instead initialize the client as follows:\n   *\n   * ```\n   * // NEW\n   * Sentry.withIsolationScope(() => {\n   *    Sentry.setCurrentClient(client);\n   *    client.init();\n   * });\n   * ```\n   *\n   * If you are using the Hub to capture events like so:\n   *\n   * ```\n   * // OLD\n   * const client = new Client();\n   * const hub = new Hub(client);\n   * hub.captureException()\n   * ```\n   *\n   * instead capture isolated events as follows:\n   *\n   * ```\n   * // NEW\n   * const client = new Client();\n   * const scope = new Scope();\n   * scope.setClient(client);\n   * scope.captureException();\n   * ```\n   */\n  public constructor(\n    client?: Client,\n    scope?: Scope,\n    isolationScope?: Scope,\n    private readonly _version: number = API_VERSION,\n  ) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n      assignedScope.setClient(client);\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n      assignedIsolationScope.setClient(client);\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    this._stack = [{ scope: assignedScope }];\n\n    if (client) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.bindClient(client);\n    }\n\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Checks if this hub's version is older than the given version.\n   *\n   * @param version A version number to compare to.\n   * @return True if the given version is newer; otherwise false.\n   *\n   * @deprecated This will be removed in v8.\n   */\n  public isOlderThan(version: number): boolean {\n    return this._version < version;\n  }\n\n  /**\n   * This binds the given client to the current scope.\n   * @param client An SDK client (client) instance.\n   *\n   * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n   */\n  public bindClient(client?: Client): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const top = this.getStackTop();\n    top.client = client;\n    top.scope.setClient(client);\n    // eslint-disable-next-line deprecation/deprecation\n    if (client && client.setupIntegrations) {\n      // eslint-disable-next-line deprecation/deprecation\n      client.setupIntegrations();\n    }\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n  public pushScope(): Scope {\n    // We want to clone the content of prev scope\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.getScope().clone();\n    // eslint-disable-next-line deprecation/deprecation\n    this.getStack().push({\n      // eslint-disable-next-line deprecation/deprecation\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `withScope` instead.\n   */\n  public popScope(): boolean {\n    // eslint-disable-next-line deprecation/deprecation\n    if (this.getStack().length <= 1) return false;\n    // eslint-disable-next-line deprecation/deprecation\n    return !!this.getStack().pop();\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.withScope()` instead.\n   */\n  public withScope<T>(callback: (scope: Scope) => T): T {\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = this.pushScope();\n\n    let maybePromiseResult: T;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      // eslint-disable-next-line deprecation/deprecation\n      this.popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      // @ts-expect-error - isThenable returns the wrong type\n      return maybePromiseResult.then(\n        res => {\n          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          return res;\n        },\n        e => {\n          // eslint-disable-next-line deprecation/deprecation\n          this.popScope();\n          throw e;\n        },\n      );\n    }\n\n    // eslint-disable-next-line deprecation/deprecation\n    this.popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.getClient()` instead.\n   */\n  public getClient<C extends Client>(): C | undefined {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().client as C;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   *\n   * @deprecated Use `Sentry.getCurrentScope()` instead.\n   */\n  public getScope(): Scope {\n    // eslint-disable-next-line deprecation/deprecation\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * @deprecated Use `Sentry.getIsolationScope()` instead.\n   */\n  public getIsolationScope(): Scope {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the scope stack for domains or the process.\n   * @deprecated This will be removed in v8.\n   */\n  public getStack(): Layer[] {\n    return this._stack;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   * @deprecated This will be removed in v8.\n   */\n  public getStackTop(): Layer {\n    return this._stack[this._stack.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureException()` instead.\n   */\n  public captureException(exception: unknown, hint?: EventHint): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error('Sentry syntheticException');\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureException(exception, {\n      originalException: exception,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use  `Sentry.captureMessage()` instead.\n   */\n  public captureMessage(\n    message: string,\n    // eslint-disable-next-line deprecation/deprecation\n    level?: Severity | SeverityLevel,\n    hint?: EventHint,\n  ): string {\n    const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n    const syntheticException = new Error(message);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureMessage(message, level, {\n      originalException: message,\n      syntheticException,\n      ...hint,\n      event_id: eventId,\n    });\n\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.captureEvent()` instead.\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n    if (!event.type) {\n      this._lastEventId = eventId;\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n    return eventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated This will be removed in v8.\n   */\n  public lastEventId(): string | undefined {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `Sentry.addBreadcrumb()` instead.\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    if (!client) return;\n\n    const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n      (client.getOptions && client.getOptions()) || {};\n\n    if (maxBreadcrumbs <= 0) return;\n\n    const timestamp = dateTimestampInSeconds();\n    const mergedBreadcrumb = { timestamp, ...breadcrumb };\n    const finalBreadcrumb = beforeBreadcrumb\n      ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n      : mergedBreadcrumb;\n\n    if (finalBreadcrumb === null) return;\n\n    if (client.emit) {\n      client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n    }\n\n    // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n    // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n    // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n    // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n    // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n    // the event processing pipeline.\n    // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n    scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setUser()` instead.\n   */\n  public setUser(user: User | null): void {\n    // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setUser(user);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setUser(user);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTags()` instead.\n   */\n  public setTags(tags: { [key: string]: Primitive }): void {\n    // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTags(tags);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTags(tags);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtras()` instead.\n   */\n  public setExtras(extras: Extras): void {\n    // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtras(extras);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtras(extras);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setTag()` instead.\n   */\n  public setTag(key: string, value: Primitive): void {\n    // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setTag(key, value);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setTag(key, value);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setExtra()` instead.\n   */\n  public setExtra(key: string, extra: Extra): void {\n    // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setExtra(key, extra);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setExtra(key, extra);\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.setContext()` instead.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public setContext(name: string, context: { [key: string]: any } | null): void {\n    // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n    // eslint-disable-next-line deprecation/deprecation\n    this.getScope().setContext(name, context);\n    // eslint-disable-next-line deprecation/deprecation\n    this.getIsolationScope().setContext(name, context);\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use `getScope()` directly.\n   */\n  public configureScope(callback: (scope: Scope) => void): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n    if (client) {\n      callback(scope);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   */\n  // eslint-disable-next-line deprecation/deprecation\n  public run(callback: (hub: Hub) => void): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const oldHub = makeMain(this);\n    try {\n      callback(this);\n    } finally {\n      // eslint-disable-next-line deprecation/deprecation\n      makeMain(oldHub);\n    }\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n   */\n  public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    if (!client) return null;\n    try {\n      // eslint-disable-next-line deprecation/deprecation\n      return client.getIntegration(integration);\n    } catch (_oO) {\n      DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n      return null;\n    }\n  }\n\n  /**\n   * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n   *\n   * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n   * new child span within the transaction or any span, call the respective `.startChild()` method.\n   *\n   * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n   *\n   * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n   * finished child spans will be sent to Sentry.\n   *\n   * @param context Properties of the new `Transaction`.\n   * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n   * default values). See {@link Options.tracesSampler}.\n   *\n   * @returns The transaction which was just started\n   *\n   * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n   */\n  public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n    const result = this._callExtensionMethod<Transaction>('startTransaction', context, customSamplingContext);\n\n    if (DEBUG_BUILD && !result) {\n      // eslint-disable-next-line deprecation/deprecation\n      const client = this.getClient();\n      if (!client) {\n        logger.warn(\n          \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n        );\n      } else {\n        logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `spanToTraceHeader()` instead.\n   */\n  public traceHeaders(): { [key: string]: string } {\n    return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n  }\n\n  /**\n   * @inheritDoc\n   *\n   * @deprecated Use top level `captureSession` instead.\n   */\n  public captureSession(endSession: boolean = false): void {\n    // both send the update and pull the session from the scope\n    if (endSession) {\n      // eslint-disable-next-line deprecation/deprecation\n      return this.endSession();\n    }\n\n    // only send the update\n    this._sendSessionUpdate();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `endSession` instead.\n   */\n  public endSession(): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const layer = this.getStackTop();\n    const scope = layer.scope;\n    const session = scope.getSession();\n    if (session) {\n      closeSession(session);\n    }\n    this._sendSessionUpdate();\n\n    // the session is over; take it off of the scope\n    scope.setSession();\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use top level `startSession` instead.\n   */\n  public startSession(context?: SessionContext): Session {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n    const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n    // Will fetch userAgent if called from browser sdk\n    const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n    const session = makeSession({\n      release,\n      environment,\n      user: scope.getUser(),\n      ...(userAgent && { userAgent }),\n      ...context,\n    });\n\n    // End existing session if there's one\n    const currentSession = scope.getSession && scope.getSession();\n    if (currentSession && currentSession.status === 'ok') {\n      updateSession(currentSession, { status: 'exited' });\n    }\n    // eslint-disable-next-line deprecation/deprecation\n    this.endSession();\n\n    // Afterwards we set the new session on the scope\n    scope.setSession(session);\n\n    return session;\n  }\n\n  /**\n   * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n   * when Tracing is used.\n   *\n   * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n   * only unnecessarily increased API surface but only wrapped accessing the option.\n   */\n  public shouldSendDefaultPii(): boolean {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = this.getClient();\n    const options = client && client.getOptions();\n    return Boolean(options && options.sendDefaultPii);\n  }\n\n  /**\n   * Sends the current Session on the scope\n   */\n  private _sendSessionUpdate(): void {\n    // eslint-disable-next-line deprecation/deprecation\n    const { scope, client } = this.getStackTop();\n\n    const session = scope.getSession();\n    if (session && client && client.captureSession) {\n      client.captureSession(session);\n    }\n  }\n\n  /**\n   * Calls global extension method and binding current instance to the function call\n   */\n  // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n    const carrier = getMainCarrier();\n    const sentry = carrier.__SENTRY__;\n    if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n      return sentry.extensions[method].apply(this, args);\n    }\n    DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n  }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n  GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n    extensions: {},\n    hub: undefined,\n  };\n  return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n  const registry = getMainCarrier();\n  const oldHub = getHubFromCarrier(registry);\n  setHubOnCarrier(registry, hub);\n  return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n    if (hub) {\n      return hub;\n    }\n  }\n\n  // Return hub that lives on a global object\n  return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n  // eslint-disable-next-line deprecation/deprecation\n  return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n  // If there's no hub, or its an old API, assign a new one\n\n  if (\n    !hasHubOnCarrier(registry) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(registry).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(registry, new Hub());\n  }\n\n  // Return hub that lives on a global object\n  return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n  // If there's no hub on current domain, or it's an old API, assign a new one\n  if (\n    !hasHubOnCarrier(carrier) ||\n    // eslint-disable-next-line deprecation/deprecation\n    getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n  ) {\n    // eslint-disable-next-line deprecation/deprecation\n    const client = parent.getClient();\n    // eslint-disable-next-line deprecation/deprecation\n    const scope = parent.getScope();\n    // eslint-disable-next-line deprecation/deprecation\n    const isolationScope = parent.getIsolationScope();\n    // eslint-disable-next-line deprecation/deprecation\n    setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n  }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  registry.__SENTRY__ = registry.__SENTRY__ || {};\n  registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n  const registry = getMainCarrier();\n\n  if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n    return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n  }\n\n  // if there was no strategy, fallback to just calling the callback\n  return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n  return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n  // eslint-disable-next-line deprecation/deprecation\n  return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n  if (!carrier) return false;\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n  __SENTRY__.hub = hub;\n  return true;\n}\n","import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap<Client, boolean>();\n\nconst _functionToStringIntegration = (() => {\n  return {\n    name: INTEGRATION_NAME,\n    setupOnce() {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      originalFunctionToString = Function.prototype.toString;\n\n      // intrinsics (like Function.prototype) might be immutable in some environments\n      // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n          const originalFunction = getOriginalFunction(this);\n          const context =\n            SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n          return originalFunctionToString.apply(context, args);\n        };\n      } catch {\n        // ignore errors here, just don't patch this\n      }\n    },\n    setup(client) {\n      SETUP_CLIENTS.set(client, true);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n *   integrations: [\n *     functionToStringIntegration(),\n *   ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  functionToStringIntegration,\n) as IntegrationClass<Integration & { setupOnce: () => void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n  /^Script error\\.?$/,\n  /^Javascript error: Script error\\.? on line 0$/,\n  /^ResizeObserver loop completed with undelivered notifications.$/,\n  /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n  /^.*\\/healthcheck$/,\n  /^.*\\/healthy$/,\n  /^.*\\/live$/,\n  /^.*\\/ready$/,\n  /^.*\\/heartbeat$/,\n  /^.*\\/health$/,\n  /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n  allowUrls: Array<string | RegExp>;\n  denyUrls: Array<string | RegExp>;\n  ignoreErrors: Array<string | RegExp>;\n  ignoreTransactions: Array<string | RegExp>;\n  ignoreInternal: boolean;\n  disableErrorDefaults: boolean;\n  disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial<InboundFiltersOptions> = {}) => {\n  return {\n    name: INTEGRATION_NAME,\n    // TODO v8: Remove this\n    setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n    processEvent(event, _hint, client) {\n      const clientOptions = client.getOptions();\n      const mergedOptions = _mergeOptions(options, clientOptions);\n      return _shouldDropEvent(event, mergedOptions) ? null : event;\n    },\n  };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n  INTEGRATION_NAME,\n  inboundFiltersIntegration,\n) as IntegrationClass<Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }> & {\n  new (\n    options?: Partial<{\n      allowUrls: Array<string | RegExp>;\n      denyUrls: Array<string | RegExp>;\n      ignoreErrors: Array<string | RegExp>;\n      ignoreTransactions: Array<string | RegExp>;\n      ignoreInternal: boolean;\n      disableErrorDefaults: boolean;\n      disableTransactionDefaults: boolean;\n    }>,\n  ): Integration;\n};\n\nfunction _mergeOptions(\n  internalOptions: Partial<InboundFiltersOptions> = {},\n  clientOptions: Partial<InboundFiltersOptions> = {},\n): Partial<InboundFiltersOptions> {\n  return {\n    allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n    denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n    ignoreErrors: [\n      ...(internalOptions.ignoreErrors || []),\n      ...(clientOptions.ignoreErrors || []),\n      ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n    ],\n    ignoreTransactions: [\n      ...(internalOptions.ignoreTransactions || []),\n      ...(clientOptions.ignoreTransactions || []),\n      ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n    ],\n    ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n  };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial<InboundFiltersOptions>): boolean {\n  if (options.ignoreInternal && _isSentryError(event)) {\n    DEBUG_BUILD &&\n      logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n    return true;\n  }\n  if (_isIgnoredError(event, options.ignoreErrors)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n      );\n    return true;\n  }\n  if (_isDeniedUrl(event, options.denyUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  if (!_isAllowedUrl(event, options.allowUrls)) {\n    DEBUG_BUILD &&\n      logger.warn(\n        `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n          event,\n        )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n      );\n    return true;\n  }\n  return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array<string | RegExp>): boolean {\n  // If event.type, this is not an error\n  if (event.type || !ignoreErrors || !ignoreErrors.length) {\n    return false;\n  }\n\n  return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array<string | RegExp>): boolean {\n  if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n    return false;\n  }\n\n  const name = event.transaction;\n  return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!denyUrls || !denyUrls.length) {\n    return false;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array<string | RegExp>): boolean {\n  // TODO: Use Glob instead?\n  if (!allowUrls || !allowUrls.length) {\n    return true;\n  }\n  const url = _getEventFilterUrl(event);\n  return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n  const possibleMessages: string[] = [];\n\n  if (event.message) {\n    possibleMessages.push(event.message);\n  }\n\n  let lastException;\n  try {\n    // @ts-expect-error Try catching to save bundle size\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    lastException = event.exception.values[event.exception.values.length - 1];\n  } catch (e) {\n    // try catching to save bundle size checking existence of variables\n  }\n\n  if (lastException) {\n    if (lastException.value) {\n      possibleMessages.push(lastException.value);\n      if (lastException.type) {\n        possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n      }\n    }\n  }\n\n  if (DEBUG_BUILD && possibleMessages.length === 0) {\n    logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n  }\n\n  return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n  try {\n    // @ts-expect-error can't be a sentry error if undefined\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    return event.exception.values[0].type === 'SentryError';\n  } catch (e) {\n    // ignore\n  }\n  return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n  for (let i = frames.length - 1; i >= 0; i--) {\n    const frame = frames[i];\n\n    if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n      return frame.filename || null;\n    }\n  }\n\n  return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n  try {\n    let frames;\n    try {\n      // @ts-expect-error we only care about frames if the whole thing here is defined\n      frames = event.exception.values[0].stacktrace.frames;\n    } catch (e) {\n      // ignore\n    }\n    return frames ? _getLastValidUrl(frames) : null;\n  } catch (oO) {\n    DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n    return null;\n  }\n}\n","import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n  metricType: MetricType,\n  name: string,\n  unit: MeasurementUnit,\n  tags: Record<string, string>,\n): string {\n  const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n  return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n  let rv = 0;\n  for (let i = 0; i < s.length; i++) {\n    const c = s.charCodeAt(i);\n    rv = (rv << 5) - rv + c;\n    rv &= rv;\n  }\n  return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n  let out = '';\n  for (const item of metricBucketItems) {\n    const tagEntries = Object.entries(item.tags);\n    const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n    out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n  }\n  return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n  return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n  return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n  return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n  ['\\n', '\\\\n'],\n  ['\\r', '\\\\r'],\n  ['\\t', '\\\\t'],\n  ['\\\\', '\\\\\\\\'],\n  ['|', '\\\\u{7c}'],\n  [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n  for (const [search, replacement] of tagValueReplacements) {\n    if (input === search) {\n      return replacement;\n    }\n  }\n\n  return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n  return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record<string, Primitive>): Record<string, string> {\n  const tags: Record<string, string> = {};\n  for (const key in unsanitizedTags) {\n    if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n      const sanitizedKey = sanitizeTagKey(key);\n      tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n    }\n  }\n  return tags;\n}\n","/* eslint-disable max-lines */\nimport type {\n  Attachment,\n  Breadcrumb,\n  CaptureContext,\n  Client,\n  Context,\n  Contexts,\n  Event,\n  EventHint,\n  EventProcessor,\n  Extra,\n  Extras,\n  Primitive,\n  PropagationContext,\n  RequestSession,\n  Scope as ScopeInterface,\n  ScopeContext,\n  ScopeData,\n  Session,\n  Severity,\n  SeverityLevel,\n  Span,\n  Transaction,\n  User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n  /** Flag if notifying is happening. */\n  protected _notifyingListeners: boolean;\n\n  /** Callback for client to receive scope changes. */\n  protected _scopeListeners: Array<(scope: Scope) => void>;\n\n  /** Callback list that will be called after {@link applyToEvent}. */\n  protected _eventProcessors: EventProcessor[];\n\n  /** Array of breadcrumbs. */\n  protected _breadcrumbs: Breadcrumb[];\n\n  /** User */\n  protected _user: User;\n\n  /** Tags */\n  protected _tags: { [key: string]: Primitive };\n\n  /** Extra */\n  protected _extra: Extras;\n\n  /** Contexts */\n  protected _contexts: Contexts;\n\n  /** Attachments */\n  protected _attachments: Attachment[];\n\n  /** Propagation Context for distributed tracing */\n  protected _propagationContext: PropagationContext;\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n  protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n  /** Fingerprint */\n  protected _fingerprint?: string[];\n\n  /** Severity */\n  // eslint-disable-next-line deprecation/deprecation\n  protected _level?: Severity | SeverityLevel;\n\n  /**\n   * Transaction Name\n   */\n  protected _transactionName?: string;\n\n  /** Span */\n  protected _span?: Span;\n\n  /** Session */\n  protected _session?: Session;\n\n  /** Request Mode Session Status */\n  protected _requestSession?: RequestSession;\n\n  /** The client on this scope */\n  protected _client?: Client;\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n  public constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = generatePropagationContext();\n  }\n\n  /**\n   * Inherit values from the parent scope.\n   * @deprecated Use `scope.clone()` and `new Scope()` instead.\n   */\n  public static clone(scope?: Scope): Scope {\n    return scope ? scope.clone() : new Scope();\n  }\n\n  /**\n   * Clone this scope instance.\n   */\n  public clone(): Scope {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._span = this._span;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._requestSession = this._requestSession;\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n\n    return newScope;\n  }\n\n  /** Update the client on the scope. */\n  public setClient(client: Client | undefined): void {\n    this._client = client;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   *\n   * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n   */\n  public getClient(): Client | undefined {\n    return this._client;\n  }\n\n  /**\n   * Add internal on change listener. Used for sub SDKs that need to store the scope.\n   * @hidden\n   */\n  public addScopeListener(callback: (scope: Scope) => void): void {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addEventProcessor(callback: EventProcessor): this {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setUser(user: User | null): this {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      segment: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getUser(): User | undefined {\n    return this._user;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getRequestSession(): RequestSession | undefined {\n    return this._requestSession;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setRequestSession(requestSession?: RequestSession): this {\n    this._requestSession = requestSession;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTags(tags: { [key: string]: Primitive }): this {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setTag(key: string, value: Primitive): this {\n    this._tags = { ...this._tags, [key]: value };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtras(extras: Extras): this {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setExtra(key: string, extra: Extra): this {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setFingerprint(fingerprint: string[]): this {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setLevel(\n    // eslint-disable-next-line deprecation/deprecation\n    level: Severity | SeverityLevel,\n  ): this {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope for future events.\n   */\n  public setTransactionName(name?: string): this {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setContext(key: string, context: Context | null): this {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the Span on the scope.\n   * @param span Span\n   * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n   */\n  public setSpan(span?: Span): this {\n    this._span = span;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Returns the `Span` if there is one.\n   * @deprecated Use `getActiveSpan()` instead.\n   */\n  public getSpan(): Span | undefined {\n    return this._span;\n  }\n\n  /**\n   * Returns the `Transaction` attached to the scope (if there is one).\n   * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n   */\n  public getTransaction(): Transaction | undefined {\n    // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n    // have a pointer to the currently-active transaction.\n    const span = this._span;\n    // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n    // Also, this method will be removed anyway.\n    // eslint-disable-next-line deprecation/deprecation\n    return span && span.transaction;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setSession(session?: Session): this {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getSession(): Session | undefined {\n    return this._session;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public update(captureContext?: CaptureContext): this {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    if (scopeToMerge instanceof Scope) {\n      const scopeData = scopeToMerge.getScopeData();\n\n      this._tags = { ...this._tags, ...scopeData.tags };\n      this._extra = { ...this._extra, ...scopeData.extra };\n      this._contexts = { ...this._contexts, ...scopeData.contexts };\n      if (scopeData.user && Object.keys(scopeData.user).length) {\n        this._user = scopeData.user;\n      }\n      if (scopeData.level) {\n        this._level = scopeData.level;\n      }\n      if (scopeData.fingerprint.length) {\n        this._fingerprint = scopeData.fingerprint;\n      }\n      if (scopeToMerge.getRequestSession()) {\n        this._requestSession = scopeToMerge.getRequestSession();\n      }\n      if (scopeData.propagationContext) {\n        this._propagationContext = scopeData.propagationContext;\n      }\n    } else if (isPlainObject(scopeToMerge)) {\n      const scopeContext = captureContext as ScopeContext;\n      this._tags = { ...this._tags, ...scopeContext.tags };\n      this._extra = { ...this._extra, ...scopeContext.extra };\n      this._contexts = { ...this._contexts, ...scopeContext.contexts };\n      if (scopeContext.user) {\n        this._user = scopeContext.user;\n      }\n      if (scopeContext.level) {\n        this._level = scopeContext.level;\n      }\n      if (scopeContext.fingerprint) {\n        this._fingerprint = scopeContext.fingerprint;\n      }\n      if (scopeContext.requestSession) {\n        this._requestSession = scopeContext.requestSession;\n      }\n      if (scopeContext.propagationContext) {\n        this._propagationContext = scopeContext.propagationContext;\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clear(): this {\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._requestSession = undefined;\n    this._span = undefined;\n    this._session = undefined;\n    this._notifyScopeListeners();\n    this._attachments = [];\n    this._propagationContext = generatePropagationContext();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n    };\n\n    const breadcrumbs = this._breadcrumbs;\n    breadcrumbs.push(mergedBreadcrumb);\n    this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getLastBreadcrumb(): Breadcrumb | undefined {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearBreadcrumbs(): this {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public addAttachment(attachment: Attachment): this {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   * @deprecated Use `getScopeData()` instead.\n   */\n  public getAttachments(): Attachment[] {\n    const data = this.getScopeData();\n\n    return data.attachments;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public clearAttachments(): this {\n    this._attachments = [];\n    return this;\n  }\n\n  /** @inheritDoc */\n  public getScopeData(): ScopeData {\n    const {\n      _breadcrumbs,\n      _attachments,\n      _contexts,\n      _tags,\n      _extra,\n      _user,\n      _level,\n      _fingerprint,\n      _eventProcessors,\n      _propagationContext,\n      _sdkProcessingMetadata,\n      _transactionName,\n      _span,\n    } = this;\n\n    return {\n      breadcrumbs: _breadcrumbs,\n      attachments: _attachments,\n      contexts: _contexts,\n      tags: _tags,\n      extra: _extra,\n      user: _user,\n      level: _level,\n      fingerprint: _fingerprint || [],\n      eventProcessors: _eventProcessors,\n      propagationContext: _propagationContext,\n      sdkProcessingMetadata: _sdkProcessingMetadata,\n      transactionName: _transactionName,\n      span: _span,\n    };\n  }\n\n  /**\n   * Applies data from the scope to the event and runs all event processors on it.\n   *\n   * @param event Event\n   * @param hint Object containing additional information about the original exception, for use by the event processors.\n   * @hidden\n   * @deprecated Use `applyScopeDataToEvent()` directly\n   */\n  public applyToEvent(\n    event: Event,\n    hint: EventHint = {},\n    additionalEventProcessors: EventProcessor[] = [],\n  ): PromiseLike<Event | null> {\n    applyScopeDataToEvent(event, this.getScopeData());\n\n    // TODO (v8): Update this order to be: Global > Client > Scope\n    const eventProcessors: EventProcessor[] = [\n      ...additionalEventProcessors,\n      // eslint-disable-next-line deprecation/deprecation\n      ...getGlobalEventProcessors(),\n      ...this._eventProcessors,\n    ];\n\n    return notifyEventProcessors(eventProcessors, event, hint);\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry\n   */\n  public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n    this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setPropagationContext(context: PropagationContext): this {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public getPropagationContext(): PropagationContext {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @param exception The exception to capture.\n   * @param hint Optinal additional data to attach to the Sentry event.\n   * @returns the id of the captured Sentry event.\n   */\n  public captureException(exception: unknown, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a message for this scope.\n   *\n   * @param message The message to capture.\n   * @param level An optional severity level to report the message with.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured message.\n   */\n  public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Captures a manually created event for this scope and sends it to Sentry.\n   *\n   * @param exception The event to capture.\n   * @param hint Optional additional data to attach to the Sentry event.\n   * @returns the id of the captured event.\n   */\n  public captureEvent(event: Event, hint?: EventHint): string {\n    const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n    if (!this._client) {\n      logger.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n  protected _notifyScopeListeners(): void {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n  if (!globalScope) {\n    globalScope = new Scope();\n  }\n\n  return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n  globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n  return {\n    traceId: uuid4(),\n    spanId: uuid4().substring(16),\n  };\n}\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit<SessionContext, 'started' | 'status'>): Session {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session: Session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude<SessionStatus, 'ok'>): void {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n  return dropUndefinedKeys({\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  });\n}\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n  trace_id: string,\n  client: Client,\n  scope?: Scope,\n): DynamicSamplingContext {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n  // TODO(v8): Remove segment from User\n  // eslint-disable-next-line deprecation/deprecation\n  const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n  const dsc = dropUndefinedKeys({\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    user_segment,\n    public_key,\n    trace_id,\n  }) as DynamicSamplingContext;\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  // passing emit=false here to only emit later once the DSC is actually populated\n  const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n  if (!txn) {\n    return dsc;\n  }\n\n  // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n  // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n  // @see Transaction class constructor\n  const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n  if (v7FrozenDsc) {\n    return v7FrozenDsc;\n  }\n\n  // TODO (v8): Replace txn.metadata with txn.attributes[]\n  // We can't do this yet because attributes aren't always set yet.\n  // eslint-disable-next-line deprecation/deprecation\n  const { sampleRate: maybeSampleRate, source } = txn.metadata;\n  if (maybeSampleRate != null) {\n    dsc.sample_rate = `${maybeSampleRate}`;\n  }\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const jsonSpan = spanToJSON(txn);\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  if (source && source !== 'url') {\n    dsc.transaction = jsonSpan.description;\n  }\n\n  dsc.sampled = String(spanIsSampled(txn));\n\n  client.emit && client.emit('createDsc', dsc);\n\n  return dsc;\n}\n","import type {\n  Envelope,\n  EnvelopeItem,\n  EnvelopeItemType,\n  Event,\n  EventDropReason,\n  EventItem,\n  InternalBaseTransportOptions,\n  Transport,\n  TransportMakeRequestResponse,\n  TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n  SentryError,\n  createEnvelope,\n  envelopeItemTypeToDataCategory,\n  forEachEnvelopeItem,\n  isRateLimited,\n  logger,\n  makePromiseBuffer,\n  resolvedSyncPromise,\n  serializeEnvelope,\n  updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n  options: InternalBaseTransportOptions,\n  makeRequest: TransportRequestExecutor,\n  buffer: PromiseBuffer<void | TransportMakeRequestResponse> = makePromiseBuffer(\n    options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n  ),\n): Transport {\n  let rateLimits: RateLimits = {};\n  const flush = (timeout?: number): PromiseLike<boolean> => buffer.drain(timeout);\n\n  function send(envelope: Envelope): PromiseLike<void | TransportMakeRequestResponse> {\n    const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n    // Drop rate limited items from envelope\n    forEachEnvelopeItem(envelope, (item, type) => {\n      const dataCategory = envelopeItemTypeToDataCategory(type);\n      if (isRateLimited(rateLimits, dataCategory)) {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n      } else {\n        filteredEnvelopeItems.push(item);\n      }\n    });\n\n    // Skip sending if envelope is empty after filtering out rate limited events\n    if (filteredEnvelopeItems.length === 0) {\n      return resolvedSyncPromise();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n    // Creates client report for each item in an envelope\n    const recordEnvelopeLoss = (reason: EventDropReason): void => {\n      forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n        const event: Event | undefined = getEventForEnvelopeItem(item, type);\n        options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n      });\n    };\n\n    const requestTask = (): PromiseLike<void | TransportMakeRequestResponse> =>\n      makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n        response => {\n          // We don't want to throw on NOK responses, but we want to at least log them\n          if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n            DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n          }\n\n          rateLimits = updateRateLimits(rateLimits, response);\n          return response;\n        },\n        error => {\n          recordEnvelopeLoss('network_error');\n          throw error;\n        },\n      );\n\n    return buffer.add(requestTask).then(\n      result => result,\n      error => {\n        if (error instanceof SentryError) {\n          DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n          recordEnvelopeLoss('queue_overflow');\n          return resolvedSyncPromise();\n        } else {\n          throw error;\n        }\n      },\n    );\n  }\n\n  // We use this to identifify if the transport is the base transport\n  // TODO (v8): Remove this again as we'll no longer need it\n  send.__sentry__baseTransport__ = true;\n\n  return {\n    send,\n    flush,\n  };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n  if (type !== 'event' && type !== 'transaction') {\n    return undefined;\n  }\n\n  return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer<T> {\n  // exposes the internal array so tests can assert on the state of it.\n  // XXX: this really should not be public api.\n  $: Array<PromiseLike<T>>;\n  add(taskProducer: () => PromiseLike<T>): PromiseLike<T>;\n  drain(timeout?: number): PromiseLike<boolean>;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer<T>(limit?: number): PromiseBuffer<T> {\n  const buffer: Array<PromiseLike<T>> = [];\n\n  function isReady(): boolean {\n    return limit === undefined || buffer.length < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike<T>\n   * @returns Removed promise.\n   */\n  function remove(task: PromiseLike<T>): PromiseLike<T> {\n    return buffer.splice(buffer.indexOf(task), 1)[0];\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n   *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer: () => PromiseLike<T>): PromiseLike<T> {\n    if (!isReady()) {\n      return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    if (buffer.indexOf(task) === -1) {\n      buffer.push(task);\n    }\n    void task\n      .then(() => remove(task))\n      // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n      // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n      // have promises, so TS has to polyfill when down-compiling.)\n      .then(null, () =>\n        remove(task).then(null, () => {\n          // We have to add another catch here because `remove()` starts a new promise chain.\n        }),\n      );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout?: number): PromiseLike<boolean> {\n    return new SyncPromise<boolean>((resolve, reject) => {\n      let counter = buffer.length;\n\n      if (!counter) {\n        return resolve(true);\n      }\n\n      // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n      const capturedSetTimeout = setTimeout(() => {\n        if (timeout && timeout > 0) {\n          resolve(false);\n        }\n      }, timeout);\n\n      // if all promises resolve in time, cancel the timer and resolve to `true`\n      buffer.forEach(item => {\n        void resolvedSyncPromise(item).then(() => {\n          if (!--counter) {\n            clearTimeout(capturedSetTimeout);\n            resolve(true);\n          }\n        }, reject);\n      });\n    });\n  }\n\n  return {\n    $: buffer,\n    add,\n    drain,\n  };\n}\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n  mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    // eslint-disable-next-line deprecation/deprecation\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n  Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n  Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n  if (mergeVal && Object.keys(mergeVal).length) {\n    // Clone object\n    data[prop] = { ...data[prop] };\n    for (const key in mergeVal) {\n      if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n        data[prop][key] = mergeVal[key];\n      }\n    }\n  }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n  event: Event,\n  prop: Prop,\n  mergeVal: ScopeData[Prop],\n): void {\n  const prevVal = event[prop];\n  // If we are not merging any new values,\n  // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n  if (!mergeVal.length && (!prevVal || prevVal.length)) {\n    return;\n  }\n\n  const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n  event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    // eslint-disable-next-line deprecation/deprecation\n    transactionName,\n  } = data;\n\n  const cleanedExtra = dropUndefinedKeys(extra);\n  if (cleanedExtra && Object.keys(cleanedExtra).length) {\n    event.extra = { ...cleanedExtra, ...event.extra };\n  }\n\n  const cleanedTags = dropUndefinedKeys(tags);\n  if (cleanedTags && Object.keys(cleanedTags).length) {\n    event.tags = { ...cleanedTags, ...event.tags };\n  }\n\n  const cleanedUser = dropUndefinedKeys(user);\n  if (cleanedUser && Object.keys(cleanedUser).length) {\n    event.user = { ...cleanedUser, ...event.user };\n  }\n\n  const cleanedContexts = dropUndefinedKeys(contexts);\n  if (cleanedContexts && Object.keys(cleanedContexts).length) {\n    event.contexts = { ...cleanedContexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  if (transactionName) {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n  event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n  const rootSpan = getRootSpan(span);\n  if (rootSpan) {\n    event.sdkProcessingMetadata = {\n      dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n      ...event.sdkProcessingMetadata,\n    };\n    const transactionName = spanToJSON(rootSpan).description;\n    if (transactionName) {\n      event.tags = { transaction: transactionName, ...event.tags };\n    }\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (event.fingerprint && !event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n  // TODO (v8): Remove this check and just return span\n  // eslint-disable-next-line deprecation/deprecation\n  return span.transaction;\n}\n","import type {\n  CaptureContext,\n  Client,\n  ClientOptions,\n  Event,\n  EventHint,\n  Scope as ScopeInterface,\n  ScopeContext,\n  StackFrame,\n  StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n  | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n  | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n  scope?: Scope,\n  client?: Client,\n  isolationScope?: Scope,\n): PromiseLike<Event | null> {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n  const prepared: Event = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getGlobalScope().getScopeData();\n\n  if (isolationScope) {\n    const isolationData = isolationScope.getScopeData();\n    mergeScopeData(data, isolationData);\n  }\n\n  if (finalScope) {\n    const finalScopeData = finalScope.getScopeData();\n    mergeScopeData(data, finalScopeData);\n  }\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  // TODO (v8): Update this order to be: Global > Client > Scope\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // eslint-disable-next-line deprecation/deprecation\n    ...getGlobalEventProcessors(),\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n *  Enhances event using the client configuration.\n *  It takes care of all \"static\" values like environment, release and `dist`,\n *  as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\n    event.dist = dist;\n  }\n\n  if (event.message) {\n    event.message = truncate(event.message, maxValueLength);\n  }\n\n  const exception = event.exception && event.exception.values && event.exception.values[0];\n  if (exception && exception.value) {\n    exception.value = truncate(exception.value, maxValueLength);\n  }\n\n  const request = event.request;\n  if (request && request.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n    let parsedStack: StackFrame[];\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      if (stackFrame.filename) {\n        acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n        break;\n      }\n    }\n    return acc;\n  }, {});\n\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event!.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.filename) {\n          frame.debug_id = filenameDebugIdMap[frame.filename];\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap: Record<string, string> = {};\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.debug_id) {\n          if (frame.abs_path) {\n            filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n          } else if (frame.filename) {\n            filenameDebugIdMap[frame.filename] = frame.debug_id;\n          }\n          delete frame.debug_id;\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.keys(filenameDebugIdMap).forEach(filename => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id: filenameDebugIdMap[filename],\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n  if (!event) {\n    return null;\n  }\n\n  const normalized: Event = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts && event.contexts.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      const data = spanToJSON(span).data;\n\n      if (data) {\n        // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n        // eslint-disable-next-line deprecation/deprecation\n        span.data = normalize(data, depth, maxBreadth);\n      }\n\n      return span;\n    });\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n  hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(\n  hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'requestSession',\n  'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n  return dropUndefinedKeys({\n    data,\n    op,\n    parent_span_id,\n    span_id,\n    status,\n    tags,\n    trace_id,\n    origin,\n  });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n  if (spanIsSpanClass(span)) {\n    return span.getSpanJSON();\n  }\n\n  // Fallback: We also check for `.toJSON()` here...\n  // eslint-disable-next-line deprecation/deprecation\n  if (typeof span.toJSON === 'function') {\n    // eslint-disable-next-line deprecation/deprecation\n    return span.toJSON();\n  }\n\n  return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n  return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  // eslint-disable-next-line no-bitwise\n  return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","export const SDK_VERSION = '7.120.3';\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  maxValueLimit: number = 250,\n  key: string,\n  limit: number,\n  event: Event,\n  hint?: EventHint,\n): void {\n  if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException: Exception | undefined =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = truncateAggregateExceptions(\n      aggregateExceptionsFromError(\n        exceptionFromErrorImplementation,\n        parser,\n        limit,\n        hint.originalException as ExtendedError,\n        key,\n        event.exception.values,\n        originalException,\n        0,\n      ),\n      maxValueLimit,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  limit: number,\n  error: ExtendedError,\n  key: string,\n  prevExceptions: Exception[],\n  exception: Exception,\n  exceptionId: number,\n): Exception[] {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception: Exception,\n  source: string,\n  exceptionId: number,\n  parentId: number | undefined,\n): void {\n  // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n  exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n  exception.mechanism = {\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n  return exceptions.map(exception => {\n    if (exception.value) {\n      exception.value = truncate(exception.value, maxValueLength);\n    }\n    return exception;\n  });\n}\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial<DynamicSamplingContext> | undefined {\n  if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n    return undefined;\n  }\n\n  // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n  // It is later used to read Sentry-DSC-values from.\n  let baggageObject: Readonly<Record<string, string>> = {};\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    baggageObject = baggageHeader.reduce<Record<string, string>>((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      for (const key of Object.keys(currBaggageObject)) {\n        acc[key] = currBaggageObject[key];\n      }\n      return acc;\n    }, {});\n  } else {\n    // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n    // this is how we choose to handle it)\n    if (!baggageHeader) {\n      return undefined;\n    }\n\n    baggageObject = baggageHeaderToObject(baggageHeader);\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce<Record<string, string>>((acc, [key, value]) => {\n    if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext as Partial<DynamicSamplingContext>;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext?: Partial<DynamicSamplingContext>,\n): string | undefined {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce<Record<string, string>>(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record<string, string> {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n    .reduce<Record<string, string>>((acc, [key, value]) => {\n      acc[key] = value;\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record<string, string>): string | undefined {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        logger.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n  parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n  elem: unknown,\n  options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n  if (!elem) {\n    return '<unknown>';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem as SimpleNode;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n  const elem = el as {\n    tagName?: string;\n    id?: string;\n    className?: string;\n    getAttribute(key: string): string;\n  };\n\n  const out = [];\n  let className;\n  let classes;\n  let key;\n  let attr;\n  let i;\n\n  if (!elem || !elem.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n      return elem.dataset['sentryComponent'];\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs =\n    keyAttrs && keyAttrs.length\n      ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n      : null;\n\n  if (keyAttrPairs && keyAttrPairs.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    // eslint-disable-next-line prefer-const\n    className = elem.className;\n    if (className && isString(className)) {\n      classes = className.split(/\\s+/);\n      for (i = 0; i < classes.length; i++) {\n        out.push(`.${classes[i]}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (i = 0; i < allowedAttrs.length; i++) {\n    key = allowedAttrs[i];\n    attr = elem.getAttribute(key);\n    if (attr) {\n      out.push(`[${key}=\"${attr}\"]`);\n    }\n  }\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n  try {\n    return WINDOW.document.location.href;\n  } catch (oO) {\n    return '';\n  }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n  if (WINDOW.document && WINDOW.document.querySelector) {\n    return WINDOW.document.querySelector(selector) as unknown as E;\n  }\n  return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem as SimpleNode;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n      return currentElem.dataset['sentryComponent'];\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() as string;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents: ReadonlyArray<keyof DsnComponents> = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      logger.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser.  We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n  return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n  // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n  return __SENTRY_SDK_SOURCE__;\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n  /** Display name of this error instance. */\n  public name: string;\n\n  public logLevel: ConsoleLevel;\n\n  public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n    super(message);\n\n    this.name = new.target.prototype.constructor.name;\n    // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n    // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n    // instances of `SentryError` fail `obj instanceof SentryError` checks.\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.logLevel = logLevel;\n  }\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n  handlers[type] = handlers[type] || [];\n  (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n  Object.keys(handlers).forEach(key => {\n    handlers[key as InstrumentHandlerType] = undefined;\n  });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n  if (!instrumented[type]) {\n    instrumentFn();\n    instrumented[type] = true;\n  }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n  const typeHandlers = type && handlers[type];\n  if (!typeHandlers) {\n    return;\n  }\n\n  for (const handler of typeHandlers) {\n    try {\n      handler(data);\n    } catch (e) {\n      DEBUG_BUILD &&\n        logger.error(\n          `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n          e,\n        );\n    }\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n  const type = 'console';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n  if (!('console' in GLOBAL_OBJ)) {\n    return;\n  }\n\n  CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n    if (!(level in GLOBAL_OBJ.console)) {\n      return;\n    }\n\n    fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n      originalConsoleMethods[level] = originalConsoleMethod;\n\n      return function (...args: any[]): void {\n        const handlerData: HandlerDataConsole = { args, level };\n        triggerHandlers('console', handlerData);\n\n        const log = originalConsoleMethods[level];\n        log && log.apply(GLOBAL_OBJ.console, args);\n      };\n    });\n  });\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n  __sentry_instrumentation_handlers__?: {\n    [key in 'click' | 'keypress']?: {\n      handler?: Function;\n      /** The number of custom listeners attached to this element */\n      refCount: number;\n    };\n  };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n  const type = 'dom';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n  if (!WINDOW.document) {\n    return;\n  }\n\n  // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n  // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n  // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n  const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n  const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n  WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n  WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n  // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n  // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n  // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n  // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n  // guaranteed to fire at least once.)\n  ['EventTarget', 'Node'].forEach((target: string) => {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n    if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n      return;\n    }\n\n    fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n      return function (\n        this: Element,\n        type: string,\n        listener: EventListenerOrEventListenerObject,\n        options?: boolean | AddEventListenerOptions,\n      ): AddEventListener {\n        if (type === 'click' || type == 'keypress') {\n          try {\n            const el = this as InstrumentedElement;\n            const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n            const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n            if (!handlerForType.handler) {\n              const handler = makeDOMEventHandler(triggerDOMHandler);\n              handlerForType.handler = handler;\n              originalAddEventListener.call(this, type, handler, options);\n            }\n\n            handlerForType.refCount++;\n          } catch (e) {\n            // Accessing dom properties is always fragile.\n            // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n          }\n        }\n\n        return originalAddEventListener.call(this, type, listener, options);\n      };\n    });\n\n    fill(\n      proto,\n      'removeEventListener',\n      function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n        return function (\n          this: Element,\n          type: string,\n          listener: EventListenerOrEventListenerObject,\n          options?: boolean | EventListenerOptions,\n        ): () => void {\n          if (type === 'click' || type == 'keypress') {\n            try {\n              const el = this as InstrumentedElement;\n              const handlers = el.__sentry_instrumentation_handlers__ || {};\n              const handlerForType = handlers[type];\n\n              if (handlerForType) {\n                handlerForType.refCount--;\n                // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n                if (handlerForType.refCount <= 0) {\n                  originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n                  handlerForType.handler = undefined;\n                  delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n                }\n\n                // If there are no longer any custom handlers of any type on this element, cleanup everything.\n                if (Object.keys(handlers).length === 0) {\n                  delete el.__sentry_instrumentation_handlers__;\n                }\n              }\n            } catch (e) {\n              // Accessing dom properties is always fragile.\n              // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n            }\n          }\n\n          return originalRemoveEventListener.call(this, type, listener, options);\n        };\n      },\n    );\n  });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n  // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n  if (event.type !== lastCapturedEventType) {\n    return false;\n  }\n\n  try {\n    // If both events have the same type, it's still possible that actions were performed on different targets.\n    // e.g. 2 clicks on different buttons.\n    if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n      return false;\n    }\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n  }\n\n  // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n  // to which an event listener was attached), we treat them as the same action, as we want to capture\n  // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n  return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n  // We are only interested in filtering `keypress` events for now.\n  if (eventType !== 'keypress') {\n    return false;\n  }\n\n  if (!target || !target.tagName) {\n    return true;\n  }\n\n  // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n  // e.g.tabbing through elements, hotkeys, etc.\n  if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n  handler: (data: HandlerDataDom) => void,\n  globalListener: boolean = false,\n): (event: Event) => void {\n  return (event: Event & { _sentryCaptured?: true }): void => {\n    // It's possible this handler might trigger multiple times for the same\n    // event (e.g. event propagation through node ancestors).\n    // Ignore if we've already captured that event.\n    if (!event || event['_sentryCaptured']) {\n      return;\n    }\n\n    const target = getEventTarget(event);\n\n    // We always want to skip _some_ events.\n    if (shouldSkipDOMEvent(event.type, target)) {\n      return;\n    }\n\n    // Mark event as \"seen\"\n    addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n    if (target && !target._sentryId) {\n      // Add UUID to event target so we can identify if\n      addNonEnumerableProperty(target, '_sentryId', uuid4());\n    }\n\n    const name = event.type === 'keypress' ? 'input' : event.type;\n\n    // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n    // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n    // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n    if (!isSimilarToLastCapturedEvent(event)) {\n      const handlerData: HandlerDataDom = { event, name, global: globalListener };\n      handler(handlerData);\n      lastCapturedEventType = event.type;\n      lastCapturedEventTargetId = target ? target._sentryId : undefined;\n    }\n\n    // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n    clearTimeout(debounceTimerID);\n    debounceTimerID = WINDOW.setTimeout(() => {\n      lastCapturedEventTargetId = undefined;\n      lastCapturedEventType = undefined;\n    }, DEBOUNCE_DURATION);\n  };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n  try {\n    return event.target as SentryWrappedTarget | null;\n  } catch (e) {\n    // just accessing `target` property can throw an exception in some rare circumstances\n    // see: https://github.com/getsentry/sentry-javascript/issues/838\n    return null;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n  const type = 'fetch';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentFetch);\n}\n\nfunction instrumentFetch(): void {\n  if (!supportsNativeFetch()) {\n    return;\n  }\n\n  fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n    return function (...args: any[]): void {\n      const { method, url } = parseFetchArgs(args);\n\n      const handlerData: HandlerDataFetch = {\n        args,\n        fetchData: {\n          method,\n          url,\n        },\n        startTimestamp: Date.now(),\n      };\n\n      triggerHandlers('fetch', {\n        ...handlerData,\n      });\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      return originalFetch.apply(GLOBAL_OBJ, args).then(\n        (response: Response) => {\n          const finishedHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            response,\n          };\n\n          triggerHandlers('fetch', finishedHandlerData);\n          return response;\n        },\n        (error: Error) => {\n          const erroredHandlerData: HandlerDataFetch = {\n            ...handlerData,\n            endTimestamp: Date.now(),\n            error,\n          };\n\n          triggerHandlers('fetch', erroredHandlerData);\n          // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n          //       it means the sentry.javascript SDK caught an error invoking your application code.\n          //       This is expected behavior and NOT indicative of a bug with sentry.javascript.\n          throw error;\n        },\n      );\n    };\n  });\n}\n\nfunction hasProp<T extends string>(obj: unknown, prop: T): obj is Record<string, string> {\n  return !!obj && typeof obj === 'object' && !!(obj as Record<string, string>)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n  if (typeof resource === 'string') {\n    return resource;\n  }\n\n  if (!resource) {\n    return '';\n  }\n\n  if (hasProp(resource, 'url')) {\n    return resource.url;\n  }\n\n  if (resource.toString) {\n    return resource.toString();\n  }\n\n  return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n  if (fetchArgs.length === 0) {\n    return { method: 'GET', url: '' };\n  }\n\n  if (fetchArgs.length === 2) {\n    const [url, options] = fetchArgs as [FetchResource, object];\n\n    return {\n      url: getUrlFromResource(url),\n      method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n    };\n  }\n\n  const arg = fetchArgs[0];\n  return {\n    url: getUrlFromResource(arg as FetchResource),\n    method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n  };\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n  const type = 'error';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n  _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n  GLOBAL_OBJ.onerror = function (\n    msg: string | object,\n    url?: string,\n    line?: number,\n    column?: number,\n    error?: Error,\n  ): boolean {\n    const handlerData: HandlerDataError = {\n      column,\n      error,\n      line,\n      msg,\n      url,\n    };\n    triggerHandlers('error', handlerData);\n\n    if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnErrorHandler.apply(this, arguments);\n    }\n\n    return false;\n  };\n\n  GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n  handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n  const type = 'unhandledrejection';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n  _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n  GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n    const handlerData: HandlerDataUnhandledRejection = e;\n    triggerHandlers('unhandledrejection', handlerData);\n\n    if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n      // eslint-disable-next-line prefer-rest-params\n      return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n    }\n\n    return true;\n  };\n\n  GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n  // NOTE: in Chrome App environment, touching history.pushState, *even inside\n  //       a try/catch block*, will cause Chrome to output an error to console.error\n  // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n  /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const chromeVar = (WINDOW as any).chrome;\n  const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n  /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n  const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n  return !isChromePackagedApp && hasHistoryApi;\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n  const type = 'history';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n  if (!supportsHistory()) {\n    return;\n  }\n\n  const oldOnPopState = WINDOW.onpopstate;\n  WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n    const to = WINDOW.location.href;\n    // keep track of the current URL state, as we always receive only the updated state\n    const from = lastHref;\n    lastHref = to;\n    const handlerData: HandlerDataHistory = { from, to };\n    triggerHandlers('history', handlerData);\n    if (oldOnPopState) {\n      // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n      // https://github.com/getsentry/sentry-javascript/issues/3344\n      // https://github.com/bugsnag/bugsnag-js/issues/469\n      try {\n        return oldOnPopState.apply(this, args);\n      } catch (_oO) {\n        // no-empty\n      }\n    }\n  };\n\n  function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n    return function (this: History, ...args: any[]): void {\n      const url = args.length > 2 ? args[2] : undefined;\n      if (url) {\n        // coerce to string (this is what pushState does)\n        const from = lastHref;\n        const to = String(url);\n        // keep track of the current URL state, as we always receive only the updated state\n        lastHref = to;\n        const handlerData: HandlerDataHistory = { from, to };\n        triggerHandlers('history', handlerData);\n      }\n      return originalHistoryFunction.apply(this, args);\n    };\n  }\n\n  fill(WINDOW.history, 'pushState', historyReplacementFunction);\n  fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, WrappedFunction } from '@sentry/types';\n\nimport { isString } from '../is';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n  const type = 'xhr';\n  addHandler(type, handler);\n  maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!(WINDOW as any).XMLHttpRequest) {\n    return;\n  }\n\n  const xhrproto = XMLHttpRequest.prototype;\n\n  fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const startTimestamp = Date.now();\n\n      // open() should always be called with two or more arguments\n      // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n      const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n      const url = parseUrl(args[1]);\n\n      if (!method || !url) {\n        return originalOpen.apply(this, args);\n      }\n\n      this[SENTRY_XHR_DATA_KEY] = {\n        method,\n        url,\n        request_headers: {},\n      };\n\n      // if Sentry key appears in URL, don't capture it as a request\n      if (method === 'POST' && url.match(/sentry_key/)) {\n        this.__sentry_own_request__ = true;\n      }\n\n      const onreadystatechangeHandler: () => void = () => {\n        // For whatever reason, this is not the same instance here as from the outer method\n        const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n        if (!xhrInfo) {\n          return;\n        }\n\n        if (this.readyState === 4) {\n          try {\n            // touching statusCode in some platforms throws\n            // an exception\n            xhrInfo.status_code = this.status;\n          } catch (e) {\n            /* do nothing */\n          }\n\n          const handlerData: HandlerDataXhr = {\n            args: [method, url],\n            endTimestamp: Date.now(),\n            startTimestamp,\n            xhr: this,\n          };\n          triggerHandlers('xhr', handlerData);\n        }\n      };\n\n      if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n        fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n          return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n            onreadystatechangeHandler();\n            return original.apply(this, readyStateArgs);\n          };\n        });\n      } else {\n        this.addEventListener('readystatechange', onreadystatechangeHandler);\n      }\n\n      // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n      // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n      // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n      fill(this, 'setRequestHeader', function (original: WrappedFunction): Function {\n        return function (this: SentryWrappedXMLHttpRequest, ...setRequestHeaderArgs: unknown[]): void {\n          const [header, value] = setRequestHeaderArgs;\n\n          const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n          if (xhrInfo && isString(header) && isString(value)) {\n            xhrInfo.request_headers[header.toLowerCase()] = value;\n          }\n\n          return original.apply(this, setRequestHeaderArgs);\n        };\n      });\n\n      return originalOpen.apply(this, args);\n    };\n  });\n\n  fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n    return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n      const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n      if (!sentryXhrData) {\n        return originalSend.apply(this, args);\n      }\n\n      if (args[0] !== undefined) {\n        sentryXhrData.body = args[0];\n      }\n\n      const handlerData: HandlerDataXhr = {\n        args: [sentryXhrData.method, sentryXhrData.url],\n        startTimestamp: Date.now(),\n        xhr: this,\n      };\n      triggerHandlers('xhr', handlerData);\n\n      return originalSend.apply(this, args);\n    };\n  });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n  if (isString(url)) {\n    return url;\n  }\n\n  try {\n    // url can be a string or URL\n    // but since URL is not available in IE11, we do not check for it,\n    // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n    // If that fails, we just return undefined\n    return (url as URL).toString();\n  } catch {} // eslint-disable-line no-empty\n\n  return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n  return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n  try {\n    return wat instanceof base;\n  } catch (_e) {\n    return false;\n  }\n}\n\ninterface VueViewModel {\n  // Vue3\n  __isVue?: boolean;\n  // Vue2\n  _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<ConsoleLevel, LoggerMethod>;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n  disable(): void;\n  enable(): void;\n  isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console as Console;\n  const wrappedFuncs: Partial<LoggerConsoleMethods> = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n    wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n    console[level] = originalConsoleMethod;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] as LoggerMethod;\n    });\n  }\n}\n\nfunction makeLogger(): Logger {\n  let enabled = false;\n  const logger: Partial<Logger> = {\n    enable: () => {\n      enabled = true;\n    },\n    disable: () => {\n      enabled = false;\n    },\n    isEnabled: () => enabled,\n  };\n\n  if (DEBUG_BUILD) {\n    CONSOLE_LEVELS.forEach(name => {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      logger[name] = (...args: any[]) => {\n        if (enabled) {\n          consoleSandbox(() => {\n            GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n          });\n        }\n      };\n    });\n  } else {\n    CONSOLE_LEVELS.forEach(name => {\n      logger[name] = () => undefined;\n    });\n  }\n\n  return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n  getRandomValues(array: Uint8Array): Uint8Array;\n  randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n  msCrypto?: CryptoInternal;\n  crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n  const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n  const crypto = gbl.crypto || gbl.msCrypto;\n\n  let getRandomByte = (): number => Math.random() * 16;\n  try {\n    if (crypto && crypto.randomUUID) {\n      return crypto.randomUUID().replace(/-/g, '');\n    }\n    if (crypto && crypto.getRandomValues) {\n      getRandomByte = () => {\n        // crypto.getRandomValues might return undefined instead of the typed array\n        // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n        // However, `typedArray` is still filled in-place.\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n        const typedArray = new Uint8Array(1);\n        crypto.getRandomValues(typedArray);\n        return typedArray[0];\n      };\n    }\n  } catch (_) {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\n\n  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n  // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n  return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n  return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '<unknown>';\n  }\n  return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n  major?: number;\n  minor?: number;\n  patch?: number;\n  prerelease?: string;\n  buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = parseInt(match[1], 10);\n  const minor = parseInt(match[2], 10);\n  const patch = parseInt(match[3], 10);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line: string) => snipLine(line, 0));\n\n  frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (exception && (exception as any).__sentry_captured__) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n  } catch (err) {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n  return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n  // explicitly check for browser bundles as those can be optimized statically\n  // by terser/rollup.\n  return (\n    !isBrowserBundle() &&\n    Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n  );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule<T>(moduleName: string): T | undefined {\n  let mod: T | undefined;\n\n  try {\n    mod = dynamicRequire(module, moduleName);\n  } catch (e) {\n    // no-empty\n  }\n\n  try {\n    const { cwd } = dynamicRequire(module, 'process');\n    mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n  } catch (e) {\n    // no-empty\n  }\n\n  return mod;\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: { [key: string]: any },\n  // Default Node.js REPL depth\n  depth: number = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize: number = 100 * 1024,\n): T {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key: string,\n  value: unknown,\n  depth: number = +Infinity,\n  maxProperties: number = +Infinity,\n  memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n  ) {\n    return value as Primitive;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n    return value as ObjOrArray<unknown>;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch (err) {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key: unknown,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value: Exclude<unknown, string | number | boolean | null>,\n): string {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return '[VueViewModel]';\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && value !== value) {\n      return '[NaN]';\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n  const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n  return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch (_Oo) {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n  // memoize\n  (obj: any) => boolean,\n  // unmemoize\n  (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n  const hasWeakSet = typeof WeakSet === 'function';\n  const inner: any = hasWeakSet ? new WeakSet() : [];\n  function memoize(obj: any): boolean {\n    if (hasWeakSet) {\n      if (inner.has(obj)) {\n        return true;\n      }\n      inner.add(obj);\n      return false;\n    }\n    // eslint-disable-next-line @typescript-eslint/prefer-for-of\n    for (let i = 0; i < inner.length; i++) {\n      const value = inner[i];\n      if (value === obj) {\n        return true;\n      }\n    }\n    inner.push(obj);\n    return false;\n  }\n\n  function unmemoize(obj: any): void {\n    if (hasWeakSet) {\n      inner.delete(obj);\n    } else {\n      for (let i = 0; i < inner.length; i++) {\n        if (inner[i] === obj) {\n          inner.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n  return [memoize, unmemoize];\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n  if (!(name in source)) {\n    return;\n  }\n\n  const original = source[name] as () => any;\n  const wrapped = replacementFactory(original) as WrappedFunction;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    markFunctionWrapped(wrapped, original);\n  }\n\n  source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value: value,\n      writable: true,\n      configurable: true,\n    });\n  } catch (o_O) {\n    DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n  }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n  return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n *  an Error.\n */\nexport function convertToPlainObject<V>(\n  value: V,\n):\n  | {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    }\n  | {\n      [ownProps: string]: unknown;\n      message: string;\n      name: string;\n      stack?: string;\n    }\n  | V {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value),\n    };\n  } else if (isEvent(value)) {\n    const newObj: {\n      [ownProps: string]: unknown;\n      type: string;\n      target: string;\n      currentTarget: string;\n      detail?: unknown;\n    } = {\n      type: value.type,\n      target: serializeEventTarget(value.target),\n      currentTarget: serializeEventTarget(value.currentTarget),\n      ...getOwnProperties(value),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = value.detail;\n    }\n\n    return newObj;\n  } else {\n    return value;\n  }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch (_oO) {\n    return '<unknown>';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n  if (typeof obj === 'object' && obj !== null) {\n    const extractedProps: { [key: string]: unknown } = {};\n    for (const property in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, property)) {\n        extractedProps[property] = (obj as Record<string, unknown>)[property];\n      }\n    }\n    return extractedProps;\n  } else {\n    return {};\n  }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength: number = 40): string {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  if (!keys.length) {\n    return '[object has no keys]';\n  }\n\n  if (keys[0].length >= maxLength) {\n    return truncate(keys[0], maxLength);\n  }\n\n  for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n    const serialized = keys.slice(0, includedKeys).join(', ');\n    if (serialized.length > maxLength) {\n      continue;\n    }\n    if (includedKeys === keys.length) {\n      return serialized;\n    }\n    return truncate(serialized, maxLength);\n  }\n\n  return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n  // This map keeps track of what already visited nodes map to.\n  // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n  // references as the input object.\n  const memoizationMap = new Map<unknown, unknown>();\n\n  // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n  if (isPojo(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: { [key: string]: any } = {};\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    for (const key of Object.keys(inputValue)) {\n      if (typeof inputValue[key] !== 'undefined') {\n        returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n      }\n    }\n\n    return returnValue as T;\n  }\n\n  if (Array.isArray(inputValue)) {\n    // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n    const memoVal = memoizationMap.get(inputValue);\n    if (memoVal !== undefined) {\n      return memoVal as T;\n    }\n\n    const returnValue: unknown[] = [];\n    // Store the mapping of this value in case we visit it again, in case of circular data\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach((item: unknown) => {\n      returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n    });\n\n    return returnValue as unknown as T;\n  }\n\n  return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n  if (!isPlainObject(input)) {\n    return false;\n  }\n\n  try {\n    const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n    return !name || name === 'Object';\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n  let objectified;\n  switch (true) {\n    case wat === undefined || wat === null:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat as any).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record<string, number>;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n  limits: RateLimits,\n  { statusCode, headers }: TransportMakeRequestResponse,\n  now: number = Date.now(),\n): RateLimits {\n  const updatedRateLimits: RateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n  const retryAfterHeader = headers && headers['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     <header>,<header>,..\n     * where each <header> is of the form\n     *     <retry_after>: <categories>: <scope>: <reason_code>: <namespaces>\n     * where\n     *     <retry_after> is a delay in seconds\n     *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n     *         <category>;<category>;...\n     *     <scope> is what's being limited (org, project, or key) - ignored by SDK\n     *     <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n     *     <namespaces> Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n     *         Only present if rate limit applies to the metric_bucket data category.\n     */\n    for (const limit of rateLimitHeader.trim().split(',')) {\n      const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n      const headerDelay = parseInt(retryAfter, 10);\n      const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n      if (!categories) {\n        updatedRateLimits.all = now + delay;\n      } else {\n        for (const category of categories.split(';')) {\n          if (category === 'metric_bucket') {\n            // namespaces will be present when category === 'metric_bucket'\n            if (!namespaces || namespaces.split(';').includes('custom')) {\n              updatedRateLimits[category] = now + delay;\n            }\n          } else {\n            updatedRateLimits[category] = now + delay;\n          }\n        }\n      }\n    }\n  } else if (retryAfterHeader) {\n    updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n  } else if (statusCode === 429) {\n    updatedRateLimits.all = now + 60 * 1000;\n  }\n\n  return updatedRateLimits;\n}\n","/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n  return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n  return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack: string, skipFirst: number = 0): StackFrame[] => {\n    const frames: StackFrame[] = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirst; i < lines.length; i++) {\n      const line = lines[i];\n      // Ignore lines over 1kb as they are unlikely to be stack frames.\n      // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n      // input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        continue;\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n\n      if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames);\n  };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the hub itself, making it:\n    //\n    //   Sentry.captureException()\n    //   getCurrentHub().captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || localStack[localStack.length - 1].filename,\n    function: frame.function || '?',\n  }));\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch (e) {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n  return [90, node(getModule)];\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line @typescript-eslint/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n      // console warnings. This happens when a Vue template is rendered with\n      // an undeclared variable, which we try to stringify, ultimately causing\n      // Vue to issue another warning which repeats indefinitely.\n      // see: https://github.com/getsentry/sentry-javascript/pull/8981\n      if (isVueViewModel(value)) {\n        output.push('[VueViewModel]');\n      } else {\n        output.push(String(value));\n      }\n    } catch (e) {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n  value: string,\n  pattern: RegExp | string,\n  requireExactStringMatch: boolean = false,\n): boolean {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n  testString: string,\n  patterns: Array<string | RegExp> = [],\n  requireExactStringMatch: boolean = false,\n): boolean {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n  try {\n    new ErrorEvent('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n  try {\n    // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n    // 1 argument required, but only 0 present.\n    // @ts-expect-error It really needs 1 argument, not 0.\n    new DOMError('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n  try {\n    new DOMException('');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n  if (!('fetch' in WINDOW)) {\n    return false;\n  }\n\n  try {\n    new Headers();\n    new Request('http://www.example.com');\n    new Response();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n  return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n  if (typeof EdgeRuntime === 'string') {\n    return true;\n  }\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  // Fast path to avoid DOM I/O\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  if (isNativeFetch(WINDOW.fetch)) {\n    return true;\n  }\n\n  // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n  // so create a \"pure\" iframe to see if that has native fetch\n  let result = false;\n  const doc = WINDOW.document;\n  // eslint-disable-next-line deprecation/deprecation\n  if (doc && typeof (doc.createElement as unknown) === 'function') {\n    try {\n      const sandbox = doc.createElement('iframe');\n      sandbox.hidden = true;\n      doc.head.appendChild(sandbox);\n      if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n        // eslint-disable-next-line @typescript-eslint/unbound-method\n        result = isNativeFetch(sandbox.contentWindow.fetch);\n      }\n      doc.head.removeChild(sandbox);\n    } catch (err) {\n      DEBUG_BUILD &&\n        logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n    }\n  }\n\n  return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n  return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n  // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n  // (see https://caniuse.com/#feat=referrer-policy),\n  // it doesn't. And it throws an exception instead of ignoring this parameter...\n  // REF: https://github.com/getsentry/raven-js/issues/1233\n\n  if (!supportsFetch()) {\n    return false;\n  }\n\n  try {\n    new Request('_', {\n      referrerPolicy: 'origin' as ReferrerPolicy,\n    });\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n  /** Pending */\n  PENDING = 0,\n  /** Resolved / OK */\n  RESOLVED = 1,\n  /** Rejected / Error */\n  REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n  private _state: States;\n  private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n  private _value: any;\n\n  public constructor(\n    executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n  ) {\n    this._state = States.PENDING;\n    this._handlers = [];\n\n    try {\n      executor(this._resolve, this._reject);\n    } catch (e) {\n      this._reject(e);\n    }\n  }\n\n  /** JSDoc */\n  public then<TResult1 = T, TResult2 = never>(\n    onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n  ): PromiseLike<TResult1 | TResult2> {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result as any);\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** JSDoc */\n  public catch<TResult = never>(\n    onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n  ): PromiseLike<T | TResult> {\n    return this.then(val => val, onrejected);\n  }\n\n  /** JSDoc */\n  public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n    return new SyncPromise<TResult>((resolve, reject) => {\n      let val: TResult | any;\n      let isRejected: boolean;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val as unknown as any);\n      });\n    });\n  }\n\n  /** JSDoc */\n  private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n    this._setResult(States.RESOLVED, value);\n  };\n\n  /** JSDoc */\n  private readonly _reject = (reason?: any) => {\n    this._setResult(States.REJECTED, reason);\n  };\n\n  /** JSDoc */\n  private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n    if (this._state !== States.PENDING) {\n      return;\n    }\n\n    if (isThenable(value)) {\n      void (value as PromiseLike<T>).then(this._resolve, this._reject);\n      return;\n    }\n\n    this._state = state;\n    this._value = value;\n\n    this._executeHandlers();\n  };\n\n  /** JSDoc */\n  private readonly _executeHandlers = () => {\n    if (this._state === States.PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === States.RESOLVED) {\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        handler[1](this._value as unknown as any);\n      }\n\n      if (this._state === States.REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  };\n}\n\nexport { SyncPromise };\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n  /**\n   * The millisecond timestamp at which measurement began, measured in Unix time.\n   */\n  timeOrigin: number;\n  /**\n   * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n   */\n  now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n  return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n  if (!performance || !performance.now) {\n    return dateTimestampInSeconds;\n  }\n\n  // Some browser and environments don't have a timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  const approxStartingTimeOrigin = Date.now() - performance.now();\n  const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n  };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n  // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n  // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n  // data as reliable if they are within a reasonable threshold of the current time.\n\n  const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n  if (!performance || !performance.now) {\n    _browserPerformanceTimeOriginMode = 'none';\n    return undefined;\n  }\n\n  const threshold = 3600 * 1000;\n  const performanceNow = performance.now();\n  const dateNow = Date.now();\n\n  // if timeOrigin isn't available set delta to threshold so it isn't used\n  const timeOriginDelta = performance.timeOrigin\n    ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n    : threshold;\n  const timeOriginIsReliable = timeOriginDelta < threshold;\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing && performance.timing.navigationStart;\n  const hasNavigationStart = typeof navigationStart === 'number';\n  // if navigationStart isn't available set delta to threshold so it isn't used\n  const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n  const navigationStartIsReliable = navigationStartDelta < threshold;\n\n  if (timeOriginIsReliable || navigationStartIsReliable) {\n    // Use the more reliable time origin\n    if (timeOriginDelta <= navigationStartDelta) {\n      _browserPerformanceTimeOriginMode = 'timeOrigin';\n      return performance.timeOrigin;\n    } else {\n      _browserPerformanceTimeOriginMode = 'navigationStart';\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n  _browserPerformanceTimeOriginMode = 'dateNow';\n  return dateNow;\n})();\n","import type { PropagationContext, TraceparentData } from '@sentry/types';\n\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { uuid4 } from './misc';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n  if (!traceparent) {\n    return undefined;\n  }\n\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n  if (!matches) {\n    return undefined;\n  }\n\n  let parentSampled: boolean | undefined;\n  if (matches[3] === '1') {\n    parentSampled = true;\n  } else if (matches[3] === '0') {\n    parentSampled = false;\n  }\n\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2],\n  };\n}\n\n/**\n * Create tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nexport function tracingContextFromHeaders(\n  sentryTrace: Parameters<typeof extractTraceparentData>[0],\n  baggage: Parameters<typeof baggageHeaderToDynamicSamplingContext>[0],\n): {\n  traceparentData: ReturnType<typeof extractTraceparentData>;\n  dynamicSamplingContext: ReturnType<typeof baggageHeaderToDynamicSamplingContext>;\n  propagationContext: PropagationContext;\n} {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n  if (!traceparentData) {\n    return {\n      traceparentData,\n      dynamicSamplingContext: undefined,\n      propagationContext: {\n        traceId: traceId || uuid4(),\n        spanId: uuid4().substring(16),\n      },\n    };\n  } else {\n    return {\n      traceparentData,\n      dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n      propagationContext: {\n        traceId: traceId || uuid4(),\n        parentSpanId: parentSpanId || uuid4().substring(16),\n        spanId: uuid4().substring(16),\n        sampled: parentSampled,\n        dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n      },\n    };\n  }\n}\n\n/**\n * Create a propagation context from incoming headers.\n */\nexport function propagationContextFromHeaders(\n  sentryTrace: string | undefined,\n  baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n  if (!traceparentData) {\n    return {\n      traceId: traceId || uuid4(),\n      spanId: uuid4().substring(16),\n    };\n  } else {\n    return {\n      traceId: traceId || uuid4(),\n      parentSpanId: parentSpanId || uuid4().substring(16),\n      spanId: uuid4().substring(16),\n      sampled: parentSampled,\n      dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n    };\n  }\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n  traceId: string = uuid4(),\n  spanId: string = uuid4().substring(16),\n  sampled?: boolean,\n): string {\n  let sampledString = '';\n  if (sampled !== undefined) {\n    sampledString = sampled ? '-1' : '-0';\n  }\n  return `${traceId}-${spanId}${sampledString}`;\n}\n","type PartialURL = {\n  host?: string;\n  path?: string;\n  protocol?: string;\n  relative?: string;\n  search?: string;\n  hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n  if (!url) {\n    return {};\n  }\n\n  const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n  if (!match) {\n    return {};\n  }\n\n  // coerce to undefined values to empty string so we don't get 'undefined'\n  const query = match[6] || '';\n  const fragment = match[8] || '';\n  return {\n    host: match[4],\n    path: match[5],\n    protocol: match[2],\n    search: query,\n    hash: fragment,\n    relative: match[5] + query + fragment, // everything minus origin\n  };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n  // eslint-disable-next-line no-useless-escape\n  return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n  // split at '/' or at '\\/' to split regex urls correctly\n  return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n  const { protocol, host, path } = url;\n\n  const filteredHost =\n    (host &&\n      host\n        // Always filter out authority\n        .replace(/^.*@/, '[filtered]:[filtered]@')\n        // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n        // TODO: Use new URL global if it exists\n        .replace(/(:80)$/, '')\n        .replace(/(:443)$/, '')) ||\n    '';\n\n  return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions  */\nexport interface InternalGlobal {\n  navigator?: { userAgent?: string };\n  console: Console;\n  Sentry?: {\n    Integrations?: Integration[];\n  };\n  onerror?: {\n    (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  onunhandledrejection?: {\n    (event: unknown): boolean;\n    __SENTRY_INSTRUMENTED__?: true;\n    __SENTRY_LOADER__?: true;\n  };\n  SENTRY_ENVIRONMENT?: string;\n  SENTRY_DSN?: string;\n  SENTRY_RELEASE?: {\n    id?: string;\n  };\n  SENTRY_SDK_SOURCE?: SdkSource;\n  /**\n   * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n   * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n   * file.\n   */\n  _sentryDebugIds?: Record<string, string>;\n  __SENTRY__: {\n    globalEventProcessors: any;\n    hub: any;\n    logger: any;\n    extensions?: {\n      /** Extension methods for the hub, which are bound to the current Hub instance */\n      // eslint-disable-next-line @typescript-eslint/ban-types\n      [key: string]: Function;\n    };\n  };\n  /**\n   * Raw module metadata that is injected by bundler plugins.\n   *\n   * Keys are `error.stack` strings, values are the metadata.\n   */\n  _sentryModuleMetadata?: Record<string, any>;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n  return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n  (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n  // eslint-disable-next-line no-restricted-globals\n  (typeof window == 'object' && isGlobalObj(window)) ||\n  (typeof self == 'object' && isGlobalObj(self)) ||\n  (typeof global == 'object' && isGlobalObj(global)) ||\n  (function (this: any) {\n    return this;\n  })() ||\n  {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n  return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n  const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n  const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n  const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n  return singleton;\n}\n","import rpc from '@square/web-rpc-client/rpc';\nexport default function emberRpc(input = {}) {\n    function alwaysWait() {\n        return false;\n    }\n    function beforeRequest() {\n        if (typeof Ember !== 'undefined') {\n            Ember.Test &&\n                Ember.Test.registerWaiter &&\n                Ember.Test.registerWaiter(alwaysWait);\n        }\n    }\n    function afterResponse() {\n        if (typeof Ember !== 'undefined') {\n            Ember.Test &&\n                Ember.Test.unregisterWaiter &&\n                Ember.Test.unregisterWaiter(alwaysWait);\n        }\n    }\n    return rpc(input.urlForMethod, input.loggerFactory, input.errorDeserializer, input.additionalHeaders, input.responseParser, input.sendSpeleoTraceId, beforeRequest, afterResponse, input.signal);\n}\n","function Ae(e, t) {\n  return function() {\n    return e.apply(t, arguments);\n  };\n}\nconst { toString: We } = Object.prototype, { getPrototypeOf: ie } = Object, V = /* @__PURE__ */ ((e) => (t) => {\n  const n = We.call(t);\n  return e[n] || (e[n] = n.slice(8, -1).toLowerCase());\n})(/* @__PURE__ */ Object.create(null)), _ = (e) => (e = e.toLowerCase(), (t) => V(t) === e), z = (e) => (t) => typeof t === e, { isArray: I } = Array, U = z(\"undefined\");\nfunction $e(e) {\n  return e !== null && !U(e) && e.constructor !== null && !U(e.constructor) && A(e.constructor.isBuffer) && e.constructor.isBuffer(e);\n}\nconst Ne = _(\"ArrayBuffer\");\nfunction Ye(e) {\n  let t;\n  return typeof ArrayBuffer < \"u\" && ArrayBuffer.isView ? t = ArrayBuffer.isView(e) : t = e && e.buffer && Ne(e.buffer), t;\n}\nconst Xe = z(\"string\"), A = z(\"function\"), Te = z(\"number\"), K = (e) => e !== null && typeof e == \"object\", Qe = (e) => e === !0 || e === !1, M = (e) => {\n  if (V(e) !== \"object\")\n    return !1;\n  const t = ie(e);\n  return (t === null || t === Object.prototype || Object.getPrototypeOf(t) === null) && !(Symbol.toStringTag in e) && !(Symbol.iterator in e);\n}, Ze = _(\"Date\"), et = _(\"File\"), tt = _(\"Blob\"), nt = _(\"FileList\"), rt = (e) => K(e) && A(e.pipe), st = (e) => {\n  let t;\n  return e && (typeof FormData == \"function\" && e instanceof FormData || A(e.append) && ((t = V(e)) === \"formdata\" || // detect form-data instance\n  t === \"object\" && A(e.toString) && e.toString() === \"[object FormData]\"));\n}, ot = _(\"URLSearchParams\"), it = (e) => e.trim ? e.trim() : e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\nfunction P(e, t, { allOwnKeys: n = !1 } = {}) {\n  if (e === null || typeof e > \"u\")\n    return;\n  let r, s;\n  if (typeof e != \"object\" && (e = [e]), I(e))\n    for (r = 0, s = e.length; r < s; r++)\n      t.call(null, e[r], r, e);\n  else {\n    const i = n ? Object.getOwnPropertyNames(e) : Object.keys(e), o = i.length;\n    let c;\n    for (r = 0; r < o; r++)\n      c = i[r], t.call(null, e[c], c, e);\n  }\n}\nfunction _e(e, t) {\n  t = t.toLowerCase();\n  const n = Object.keys(e);\n  let r = n.length, s;\n  for (; r-- > 0; )\n    if (s = n[r], t === s.toLowerCase())\n      return s;\n  return null;\n}\nconst Ce = typeof globalThis < \"u\" ? globalThis : typeof self < \"u\" ? self : typeof window < \"u\" ? window : global, Fe = (e) => !U(e) && e !== Ce;\nfunction ee() {\n  const { caseless: e } = Fe(this) && this || {}, t = {}, n = (r, s) => {\n    const i = e && _e(t, s) || s;\n    M(t[i]) && M(r) ? t[i] = ee(t[i], r) : M(r) ? t[i] = ee({}, r) : I(r) ? t[i] = r.slice() : t[i] = r;\n  };\n  for (let r = 0, s = arguments.length; r < s; r++)\n    arguments[r] && P(arguments[r], n);\n  return t;\n}\nconst at = (e, t, n, { allOwnKeys: r } = {}) => (P(t, (s, i) => {\n  n && A(s) ? e[i] = Ae(s, n) : e[i] = s;\n}, { allOwnKeys: r }), e), ct = (e) => (e.charCodeAt(0) === 65279 && (e = e.slice(1)), e), ut = (e, t, n, r) => {\n  e.prototype = Object.create(t.prototype, r), e.prototype.constructor = e, Object.defineProperty(e, \"super\", {\n    value: t.prototype\n  }), n && Object.assign(e.prototype, n);\n}, lt = (e, t, n, r) => {\n  let s, i, o;\n  const c = {};\n  if (t = t || {}, e == null)\n    return t;\n  do {\n    for (s = Object.getOwnPropertyNames(e), i = s.length; i-- > 0; )\n      o = s[i], (!r || r(o, e, t)) && !c[o] && (t[o] = e[o], c[o] = !0);\n    e = n !== !1 && ie(e);\n  } while (e && (!n || n(e, t)) && e !== Object.prototype);\n  return t;\n}, ft = (e, t, n) => {\n  e = String(e), (n === void 0 || n > e.length) && (n = e.length), n -= t.length;\n  const r = e.indexOf(t, n);\n  return r !== -1 && r === n;\n}, dt = (e) => {\n  if (!e)\n    return null;\n  if (I(e))\n    return e;\n  let t = e.length;\n  if (!Te(t))\n    return null;\n  const n = new Array(t);\n  for (; t-- > 0; )\n    n[t] = e[t];\n  return n;\n}, pt = /* @__PURE__ */ ((e) => (t) => e && t instanceof e)(typeof Uint8Array < \"u\" && ie(Uint8Array)), ht = (e, t) => {\n  const r = (e && e[Symbol.iterator]).call(e);\n  let s;\n  for (; (s = r.next()) && !s.done; ) {\n    const i = s.value;\n    t.call(e, i[0], i[1]);\n  }\n}, mt = (e, t) => {\n  let n;\n  const r = [];\n  for (; (n = e.exec(t)) !== null; )\n    r.push(n);\n  return r;\n}, Et = _(\"HTMLFormElement\"), yt = (e) => e.toLowerCase().replace(\n  /[-_\\s]([a-z\\d])(\\w*)/g,\n  function(n, r, s) {\n    return r.toUpperCase() + s;\n  }\n), de = (({ hasOwnProperty: e }) => (t, n) => e.call(t, n))(Object.prototype), gt = _(\"RegExp\"), De = (e, t) => {\n  const n = Object.getOwnPropertyDescriptors(e), r = {};\n  P(n, (s, i) => {\n    let o;\n    (o = t(s, i, e)) !== !1 && (r[i] = o || s);\n  }), Object.defineProperties(e, r);\n}, Rt = (e) => {\n  De(e, (t, n) => {\n    if (A(e) && [\"arguments\", \"caller\", \"callee\"].indexOf(n) !== -1)\n      return !1;\n    const r = e[n];\n    if (A(r)) {\n      if (t.enumerable = !1, \"writable\" in t) {\n        t.writable = !1;\n        return;\n      }\n      t.set || (t.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + n + \"'\");\n      });\n    }\n  });\n}, St = (e, t) => {\n  const n = {}, r = (s) => {\n    s.forEach((i) => {\n      n[i] = !0;\n    });\n  };\n  return I(e) ? r(e) : r(String(e).split(t)), n;\n}, wt = () => {\n}, Ot = (e, t) => (e = +e, Number.isFinite(e) ? e : t), Y = \"abcdefghijklmnopqrstuvwxyz\", pe = \"0123456789\", xe = {\n  DIGIT: pe,\n  ALPHA: Y,\n  ALPHA_DIGIT: Y + Y.toUpperCase() + pe\n}, bt = (e = 16, t = xe.ALPHA_DIGIT) => {\n  let n = \"\";\n  const { length: r } = t;\n  for (; e--; )\n    n += t[Math.random() * r | 0];\n  return n;\n};\nfunction At(e) {\n  return !!(e && A(e.append) && e[Symbol.toStringTag] === \"FormData\" && e[Symbol.iterator]);\n}\nconst Nt = (e) => {\n  const t = new Array(10), n = (r, s) => {\n    if (K(r)) {\n      if (t.indexOf(r) >= 0)\n        return;\n      if (!(\"toJSON\" in r)) {\n        t[s] = r;\n        const i = I(r) ? [] : {};\n        return P(r, (o, c) => {\n          const f = n(o, s + 1);\n          !U(f) && (i[c] = f);\n        }), t[s] = void 0, i;\n      }\n    }\n    return r;\n  };\n  return n(e, 0);\n}, Tt = _(\"AsyncFunction\"), _t = (e) => e && (K(e) || A(e)) && A(e.then) && A(e.catch), a = {\n  isArray: I,\n  isArrayBuffer: Ne,\n  isBuffer: $e,\n  isFormData: st,\n  isArrayBufferView: Ye,\n  isString: Xe,\n  isNumber: Te,\n  isBoolean: Qe,\n  isObject: K,\n  isPlainObject: M,\n  isUndefined: U,\n  isDate: Ze,\n  isFile: et,\n  isBlob: tt,\n  isRegExp: gt,\n  isFunction: A,\n  isStream: rt,\n  isURLSearchParams: ot,\n  isTypedArray: pt,\n  isFileList: nt,\n  forEach: P,\n  merge: ee,\n  extend: at,\n  trim: it,\n  stripBOM: ct,\n  inherits: ut,\n  toFlatObject: lt,\n  kindOf: V,\n  kindOfTest: _,\n  endsWith: ft,\n  toArray: dt,\n  forEachEntry: ht,\n  matchAll: mt,\n  isHTMLForm: Et,\n  hasOwnProperty: de,\n  hasOwnProp: de,\n  // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors: De,\n  freezeMethods: Rt,\n  toObjectSet: St,\n  toCamelCase: yt,\n  noop: wt,\n  toFiniteNumber: Ot,\n  findKey: _e,\n  global: Ce,\n  isContextDefined: Fe,\n  ALPHABET: xe,\n  generateString: bt,\n  isSpecCompliantForm: At,\n  toJSONObject: Nt,\n  isAsyncFn: Tt,\n  isThenable: _t\n};\nfunction m(e, t, n, r, s) {\n  Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = e, this.name = \"AxiosError\", t && (this.code = t), n && (this.config = n), r && (this.request = r), s && (this.response = s);\n}\na.inherits(m, Error, {\n  toJSON: function() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: a.toJSONObject(this.config),\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\nconst Ie = m.prototype, Le = {};\n[\n  \"ERR_BAD_OPTION_VALUE\",\n  \"ERR_BAD_OPTION\",\n  \"ECONNABORTED\",\n  \"ETIMEDOUT\",\n  \"ERR_NETWORK\",\n  \"ERR_FR_TOO_MANY_REDIRECTS\",\n  \"ERR_DEPRECATED\",\n  \"ERR_BAD_RESPONSE\",\n  \"ERR_BAD_REQUEST\",\n  \"ERR_CANCELED\",\n  \"ERR_NOT_SUPPORT\",\n  \"ERR_INVALID_URL\"\n  // eslint-disable-next-line func-names\n].forEach((e) => {\n  Le[e] = { value: e };\n});\nObject.defineProperties(m, Le);\nObject.defineProperty(Ie, \"isAxiosError\", { value: !0 });\nm.from = (e, t, n, r, s, i) => {\n  const o = Object.create(Ie);\n  return a.toFlatObject(e, o, function(f) {\n    return f !== Error.prototype;\n  }, (c) => c !== \"isAxiosError\"), m.call(o, e.message, t, n, r, s), o.cause = e, o.name = e.name, i && Object.assign(o, i), o;\n};\nconst Ct = null;\nfunction te(e) {\n  return a.isPlainObject(e) || a.isArray(e);\n}\nfunction Ue(e) {\n  return a.endsWith(e, \"[]\") ? e.slice(0, -2) : e;\n}\nfunction he(e, t, n) {\n  return e ? e.concat(t).map(function(s, i) {\n    return s = Ue(s), !n && i ? \"[\" + s + \"]\" : s;\n  }).join(n ? \".\" : \"\") : t;\n}\nfunction Ft(e) {\n  return a.isArray(e) && !e.some(te);\n}\nconst Dt = a.toFlatObject(a, {}, null, function(t) {\n  return /^is[A-Z]/.test(t);\n});\nfunction G(e, t, n) {\n  if (!a.isObject(e))\n    throw new TypeError(\"target must be an object\");\n  t = t || new FormData(), n = a.toFlatObject(n, {\n    metaTokens: !0,\n    dots: !1,\n    indexes: !1\n  }, !1, function(h, R) {\n    return !a.isUndefined(R[h]);\n  });\n  const r = n.metaTokens, s = n.visitor || l, i = n.dots, o = n.indexes, f = (n.Blob || typeof Blob < \"u\" && Blob) && a.isSpecCompliantForm(t);\n  if (!a.isFunction(s))\n    throw new TypeError(\"visitor must be a function\");\n  function p(d) {\n    if (d === null)\n      return \"\";\n    if (a.isDate(d))\n      return d.toISOString();\n    if (!f && a.isBlob(d))\n      throw new m(\"Blob is not supported. Use a Buffer instead.\");\n    return a.isArrayBuffer(d) || a.isTypedArray(d) ? f && typeof Blob == \"function\" ? new Blob([d]) : Buffer.from(d) : d;\n  }\n  function l(d, h, R) {\n    let S = d;\n    if (d && !R && typeof d == \"object\") {\n      if (a.endsWith(h, \"{}\"))\n        h = r ? h : h.slice(0, -2), d = JSON.stringify(d);\n      else if (a.isArray(d) && Ft(d) || (a.isFileList(d) || a.endsWith(h, \"[]\")) && (S = a.toArray(d)))\n        return h = Ue(h), S.forEach(function(O, b) {\n          !(a.isUndefined(O) || O === null) && t.append(\n            // eslint-disable-next-line no-nested-ternary\n            o === !0 ? he([h], b, i) : o === null ? h : h + \"[]\",\n            p(O)\n          );\n        }), !1;\n    }\n    return te(d) ? !0 : (t.append(he(R, h, i), p(d)), !1);\n  }\n  const u = [], E = Object.assign(Dt, {\n    defaultVisitor: l,\n    convertValue: p,\n    isVisitable: te\n  });\n  function w(d, h) {\n    if (!a.isUndefined(d)) {\n      if (u.indexOf(d) !== -1)\n        throw Error(\"Circular reference detected in \" + h.join(\".\"));\n      u.push(d), a.forEach(d, function(S, y) {\n        (!(a.isUndefined(S) || S === null) && s.call(\n          t,\n          S,\n          a.isString(y) ? y.trim() : y,\n          h,\n          E\n        )) === !0 && w(S, h ? h.concat(y) : [y]);\n      }), u.pop();\n    }\n  }\n  if (!a.isObject(e))\n    throw new TypeError(\"data must be an object\");\n  return w(e), t;\n}\nfunction me(e) {\n  const t = {\n    \"!\": \"%21\",\n    \"'\": \"%27\",\n    \"(\": \"%28\",\n    \")\": \"%29\",\n    \"~\": \"%7E\",\n    \"%20\": \"+\",\n    \"%00\": \"\\0\"\n  };\n  return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g, function(r) {\n    return t[r];\n  });\n}\nfunction ae(e, t) {\n  this._pairs = [], e && G(e, this, t);\n}\nconst Pe = ae.prototype;\nPe.append = function(t, n) {\n  this._pairs.push([t, n]);\n};\nPe.toString = function(t) {\n  const n = t ? function(r) {\n    return t.call(this, r, me);\n  } : me;\n  return this._pairs.map(function(s) {\n    return n(s[0]) + \"=\" + n(s[1]);\n  }, \"\").join(\"&\");\n};\nfunction xt(e) {\n  return encodeURIComponent(e).replace(/%3A/gi, \":\").replace(/%24/g, \"$\").replace(/%2C/gi, \",\").replace(/%20/g, \"+\").replace(/%5B/gi, \"[\").replace(/%5D/gi, \"]\");\n}\nfunction Be(e, t, n) {\n  if (!t)\n    return e;\n  const r = n && n.encode || xt, s = n && n.serialize;\n  let i;\n  if (s ? i = s(t, n) : i = a.isURLSearchParams(t) ? t.toString() : new ae(t, n).toString(r), i) {\n    const o = e.indexOf(\"#\");\n    o !== -1 && (e = e.slice(0, o)), e += (e.indexOf(\"?\") === -1 ? \"?\" : \"&\") + i;\n  }\n  return e;\n}\nclass Ee {\n  constructor() {\n    this.handlers = [];\n  }\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(t, n, r) {\n    return this.handlers.push({\n      fulfilled: t,\n      rejected: n,\n      synchronous: r ? r.synchronous : !1,\n      runWhen: r ? r.runWhen : null\n    }), this.handlers.length - 1;\n  }\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(t) {\n    this.handlers[t] && (this.handlers[t] = null);\n  }\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    this.handlers && (this.handlers = []);\n  }\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(t) {\n    a.forEach(this.handlers, function(r) {\n      r !== null && t(r);\n    });\n  }\n}\nconst ke = {\n  silentJSONParsing: !0,\n  forcedJSONParsing: !0,\n  clarifyTimeoutError: !1\n}, It = typeof URLSearchParams < \"u\" ? URLSearchParams : ae, Lt = typeof FormData < \"u\" ? FormData : null, Ut = typeof Blob < \"u\" ? Blob : null, Pt = {\n  isBrowser: !0,\n  classes: {\n    URLSearchParams: It,\n    FormData: Lt,\n    Blob: Ut\n  },\n  protocols: [\"http\", \"https\", \"file\", \"blob\", \"url\", \"data\"]\n}, ve = typeof window < \"u\" && typeof document < \"u\", Bt = ((e) => ve && [\"ReactNative\", \"NativeScript\", \"NS\"].indexOf(e) < 0)(typeof navigator < \"u\" && navigator.product), kt = typeof WorkerGlobalScope < \"u\" && // eslint-disable-next-line no-undef\nself instanceof WorkerGlobalScope && typeof self.importScripts == \"function\", vt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  hasBrowserEnv: ve,\n  hasStandardBrowserEnv: Bt,\n  hasStandardBrowserWebWorkerEnv: kt\n}, Symbol.toStringTag, { value: \"Module\" })), T = {\n  ...vt,\n  ...Pt\n};\nfunction jt(e, t) {\n  return G(e, new T.classes.URLSearchParams(), Object.assign({\n    visitor: function(n, r, s, i) {\n      return T.isNode && a.isBuffer(n) ? (this.append(r, n.toString(\"base64\")), !1) : i.defaultVisitor.apply(this, arguments);\n    }\n  }, t));\n}\nfunction Mt(e) {\n  return a.matchAll(/\\w+|\\[(\\w*)]/g, e).map((t) => t[0] === \"[]\" ? \"\" : t[1] || t[0]);\n}\nfunction Ht(e) {\n  const t = {}, n = Object.keys(e);\n  let r;\n  const s = n.length;\n  let i;\n  for (r = 0; r < s; r++)\n    i = n[r], t[i] = e[i];\n  return t;\n}\nfunction je(e) {\n  function t(n, r, s, i) {\n    let o = n[i++];\n    if (o === \"__proto__\")\n      return !0;\n    const c = Number.isFinite(+o), f = i >= n.length;\n    return o = !o && a.isArray(s) ? s.length : o, f ? (a.hasOwnProp(s, o) ? s[o] = [s[o], r] : s[o] = r, !c) : ((!s[o] || !a.isObject(s[o])) && (s[o] = []), t(n, r, s[o], i) && a.isArray(s[o]) && (s[o] = Ht(s[o])), !c);\n  }\n  if (a.isFormData(e) && a.isFunction(e.entries)) {\n    const n = {};\n    return a.forEachEntry(e, (r, s) => {\n      t(Mt(r), s, n, 0);\n    }), n;\n  }\n  return null;\n}\nfunction qt(e, t, n) {\n  if (a.isString(e))\n    try {\n      return (t || JSON.parse)(e), a.trim(e);\n    } catch (r) {\n      if (r.name !== \"SyntaxError\")\n        throw r;\n    }\n  return (n || JSON.stringify)(e);\n}\nconst ce = {\n  transitional: ke,\n  adapter: [\"xhr\", \"http\"],\n  transformRequest: [function(t, n) {\n    const r = n.getContentType() || \"\", s = r.indexOf(\"application/json\") > -1, i = a.isObject(t);\n    if (i && a.isHTMLForm(t) && (t = new FormData(t)), a.isFormData(t))\n      return s ? JSON.stringify(je(t)) : t;\n    if (a.isArrayBuffer(t) || a.isBuffer(t) || a.isStream(t) || a.isFile(t) || a.isBlob(t))\n      return t;\n    if (a.isArrayBufferView(t))\n      return t.buffer;\n    if (a.isURLSearchParams(t))\n      return n.setContentType(\"application/x-www-form-urlencoded;charset=utf-8\", !1), t.toString();\n    let c;\n    if (i) {\n      if (r.indexOf(\"application/x-www-form-urlencoded\") > -1)\n        return jt(t, this.formSerializer).toString();\n      if ((c = a.isFileList(t)) || r.indexOf(\"multipart/form-data\") > -1) {\n        const f = this.env && this.env.FormData;\n        return G(\n          c ? { \"files[]\": t } : t,\n          f && new f(),\n          this.formSerializer\n        );\n      }\n    }\n    return i || s ? (n.setContentType(\"application/json\", !1), qt(t)) : t;\n  }],\n  transformResponse: [function(t) {\n    const n = this.transitional || ce.transitional, r = n && n.forcedJSONParsing, s = this.responseType === \"json\";\n    if (t && a.isString(t) && (r && !this.responseType || s)) {\n      const o = !(n && n.silentJSONParsing) && s;\n      try {\n        return JSON.parse(t);\n      } catch (c) {\n        if (o)\n          throw c.name === \"SyntaxError\" ? m.from(c, m.ERR_BAD_RESPONSE, this, null, this.response) : c;\n      }\n    }\n    return t;\n  }],\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n  xsrfCookieName: \"XSRF-TOKEN\",\n  xsrfHeaderName: \"X-XSRF-TOKEN\",\n  maxContentLength: -1,\n  maxBodyLength: -1,\n  env: {\n    FormData: T.classes.FormData,\n    Blob: T.classes.Blob\n  },\n  validateStatus: function(t) {\n    return t >= 200 && t < 300;\n  },\n  headers: {\n    common: {\n      Accept: \"application/json, text/plain, */*\",\n      \"Content-Type\": void 0\n    }\n  }\n};\na.forEach([\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\"], (e) => {\n  ce.headers[e] = {};\n});\nconst ue = ce, Jt = a.toObjectSet([\n  \"age\",\n  \"authorization\",\n  \"content-length\",\n  \"content-type\",\n  \"etag\",\n  \"expires\",\n  \"from\",\n  \"host\",\n  \"if-modified-since\",\n  \"if-unmodified-since\",\n  \"last-modified\",\n  \"location\",\n  \"max-forwards\",\n  \"proxy-authorization\",\n  \"referer\",\n  \"retry-after\",\n  \"user-agent\"\n]), Vt = (e) => {\n  const t = {};\n  let n, r, s;\n  return e && e.split(`\n`).forEach(function(o) {\n    s = o.indexOf(\":\"), n = o.substring(0, s).trim().toLowerCase(), r = o.substring(s + 1).trim(), !(!n || t[n] && Jt[n]) && (n === \"set-cookie\" ? t[n] ? t[n].push(r) : t[n] = [r] : t[n] = t[n] ? t[n] + \", \" + r : r);\n  }), t;\n}, ye = Symbol(\"internals\");\nfunction L(e) {\n  return e && String(e).trim().toLowerCase();\n}\nfunction H(e) {\n  return e === !1 || e == null ? e : a.isArray(e) ? e.map(H) : String(e);\n}\nfunction zt(e) {\n  const t = /* @__PURE__ */ Object.create(null), n = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let r;\n  for (; r = n.exec(e); )\n    t[r[1]] = r[2];\n  return t;\n}\nconst Kt = (e) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());\nfunction X(e, t, n, r, s) {\n  if (a.isFunction(r))\n    return r.call(this, t, n);\n  if (s && (t = n), !!a.isString(t)) {\n    if (a.isString(r))\n      return t.indexOf(r) !== -1;\n    if (a.isRegExp(r))\n      return r.test(t);\n  }\n}\nfunction Gt(e) {\n  return e.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g, (t, n, r) => n.toUpperCase() + r);\n}\nfunction Wt(e, t) {\n  const n = a.toCamelCase(\" \" + t);\n  [\"get\", \"set\", \"has\"].forEach((r) => {\n    Object.defineProperty(e, r + n, {\n      value: function(s, i, o) {\n        return this[r].call(this, t, s, i, o);\n      },\n      configurable: !0\n    });\n  });\n}\nclass W {\n  constructor(t) {\n    t && this.set(t);\n  }\n  set(t, n, r) {\n    const s = this;\n    function i(c, f, p) {\n      const l = L(f);\n      if (!l)\n        throw new Error(\"header name must be a non-empty string\");\n      const u = a.findKey(s, l);\n      (!u || s[u] === void 0 || p === !0 || p === void 0 && s[u] !== !1) && (s[u || f] = H(c));\n    }\n    const o = (c, f) => a.forEach(c, (p, l) => i(p, l, f));\n    return a.isPlainObject(t) || t instanceof this.constructor ? o(t, n) : a.isString(t) && (t = t.trim()) && !Kt(t) ? o(Vt(t), n) : t != null && i(n, t, r), this;\n  }\n  get(t, n) {\n    if (t = L(t), t) {\n      const r = a.findKey(this, t);\n      if (r) {\n        const s = this[r];\n        if (!n)\n          return s;\n        if (n === !0)\n          return zt(s);\n        if (a.isFunction(n))\n          return n.call(this, s, r);\n        if (a.isRegExp(n))\n          return n.exec(s);\n        throw new TypeError(\"parser must be boolean|regexp|function\");\n      }\n    }\n  }\n  has(t, n) {\n    if (t = L(t), t) {\n      const r = a.findKey(this, t);\n      return !!(r && this[r] !== void 0 && (!n || X(this, this[r], r, n)));\n    }\n    return !1;\n  }\n  delete(t, n) {\n    const r = this;\n    let s = !1;\n    function i(o) {\n      if (o = L(o), o) {\n        const c = a.findKey(r, o);\n        c && (!n || X(r, r[c], c, n)) && (delete r[c], s = !0);\n      }\n    }\n    return a.isArray(t) ? t.forEach(i) : i(t), s;\n  }\n  clear(t) {\n    const n = Object.keys(this);\n    let r = n.length, s = !1;\n    for (; r--; ) {\n      const i = n[r];\n      (!t || X(this, this[i], i, t, !0)) && (delete this[i], s = !0);\n    }\n    return s;\n  }\n  normalize(t) {\n    const n = this, r = {};\n    return a.forEach(this, (s, i) => {\n      const o = a.findKey(r, i);\n      if (o) {\n        n[o] = H(s), delete n[i];\n        return;\n      }\n      const c = t ? Gt(i) : String(i).trim();\n      c !== i && delete n[i], n[c] = H(s), r[c] = !0;\n    }), this;\n  }\n  concat(...t) {\n    return this.constructor.concat(this, ...t);\n  }\n  toJSON(t) {\n    const n = /* @__PURE__ */ Object.create(null);\n    return a.forEach(this, (r, s) => {\n      r != null && r !== !1 && (n[s] = t && a.isArray(r) ? r.join(\", \") : r);\n    }), n;\n  }\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n  toString() {\n    return Object.entries(this.toJSON()).map(([t, n]) => t + \": \" + n).join(`\n`);\n  }\n  get [Symbol.toStringTag]() {\n    return \"AxiosHeaders\";\n  }\n  static from(t) {\n    return t instanceof this ? t : new this(t);\n  }\n  static concat(t, ...n) {\n    const r = new this(t);\n    return n.forEach((s) => r.set(s)), r;\n  }\n  static accessor(t) {\n    const r = (this[ye] = this[ye] = {\n      accessors: {}\n    }).accessors, s = this.prototype;\n    function i(o) {\n      const c = L(o);\n      r[c] || (Wt(s, o), r[c] = !0);\n    }\n    return a.isArray(t) ? t.forEach(i) : i(t), this;\n  }\n}\nW.accessor([\"Content-Type\", \"Content-Length\", \"Accept\", \"Accept-Encoding\", \"User-Agent\", \"Authorization\"]);\na.reduceDescriptors(W.prototype, ({ value: e }, t) => {\n  let n = t[0].toUpperCase() + t.slice(1);\n  return {\n    get: () => e,\n    set(r) {\n      this[n] = r;\n    }\n  };\n});\na.freezeMethods(W);\nconst C = W;\nfunction Q(e, t) {\n  const n = this || ue, r = t || n, s = C.from(r.headers);\n  let i = r.data;\n  return a.forEach(e, function(c) {\n    i = c.call(n, i, s.normalize(), t ? t.status : void 0);\n  }), s.normalize(), i;\n}\nfunction Me(e) {\n  return !!(e && e.__CANCEL__);\n}\nfunction B(e, t, n) {\n  m.call(this, e ?? \"canceled\", m.ERR_CANCELED, t, n), this.name = \"CanceledError\";\n}\na.inherits(B, m, {\n  __CANCEL__: !0\n});\nfunction $t(e, t, n) {\n  const r = n.config.validateStatus;\n  !n.status || !r || r(n.status) ? e(n) : t(new m(\n    \"Request failed with status code \" + n.status,\n    [m.ERR_BAD_REQUEST, m.ERR_BAD_RESPONSE][Math.floor(n.status / 100) - 4],\n    n.config,\n    n.request,\n    n\n  ));\n}\nconst Yt = T.hasStandardBrowserEnv ? (\n  // Standard browser envs support document.cookie\n  {\n    write(e, t, n, r, s, i) {\n      const o = [e + \"=\" + encodeURIComponent(t)];\n      a.isNumber(n) && o.push(\"expires=\" + new Date(n).toGMTString()), a.isString(r) && o.push(\"path=\" + r), a.isString(s) && o.push(\"domain=\" + s), i === !0 && o.push(\"secure\"), document.cookie = o.join(\"; \");\n    },\n    read(e) {\n      const t = document.cookie.match(new RegExp(\"(^|;\\\\s*)(\" + e + \")=([^;]*)\"));\n      return t ? decodeURIComponent(t[3]) : null;\n    },\n    remove(e) {\n      this.write(e, \"\", Date.now() - 864e5);\n    }\n  }\n) : (\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {\n    },\n    read() {\n      return null;\n    },\n    remove() {\n    }\n  }\n);\nfunction Xt(e) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(e);\n}\nfunction Qt(e, t) {\n  return t ? e.replace(/\\/?\\/$/, \"\") + \"/\" + t.replace(/^\\/+/, \"\") : e;\n}\nfunction He(e, t) {\n  return e && !Xt(t) ? Qt(e, t) : t;\n}\nconst Zt = T.hasStandardBrowserEnv ? (\n  // Standard browser envs have full support of the APIs needed to test\n  // whether the request URL is of the same origin as current location.\n  function() {\n    const t = /(msie|trident)/i.test(navigator.userAgent), n = document.createElement(\"a\");\n    let r;\n    function s(i) {\n      let o = i;\n      return t && (n.setAttribute(\"href\", o), o = n.href), n.setAttribute(\"href\", o), {\n        href: n.href,\n        protocol: n.protocol ? n.protocol.replace(/:$/, \"\") : \"\",\n        host: n.host,\n        search: n.search ? n.search.replace(/^\\?/, \"\") : \"\",\n        hash: n.hash ? n.hash.replace(/^#/, \"\") : \"\",\n        hostname: n.hostname,\n        port: n.port,\n        pathname: n.pathname.charAt(0) === \"/\" ? n.pathname : \"/\" + n.pathname\n      };\n    }\n    return r = s(window.location.href), function(o) {\n      const c = a.isString(o) ? s(o) : o;\n      return c.protocol === r.protocol && c.host === r.host;\n    };\n  }()\n) : (\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  /* @__PURE__ */ function() {\n    return function() {\n      return !0;\n    };\n  }()\n);\nfunction en(e) {\n  const t = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(e);\n  return t && t[1] || \"\";\n}\nfunction tn(e, t) {\n  e = e || 10;\n  const n = new Array(e), r = new Array(e);\n  let s = 0, i = 0, o;\n  return t = t !== void 0 ? t : 1e3, function(f) {\n    const p = Date.now(), l = r[i];\n    o || (o = p), n[s] = f, r[s] = p;\n    let u = i, E = 0;\n    for (; u !== s; )\n      E += n[u++], u = u % e;\n    if (s = (s + 1) % e, s === i && (i = (i + 1) % e), p - o < t)\n      return;\n    const w = l && p - l;\n    return w ? Math.round(E * 1e3 / w) : void 0;\n  };\n}\nfunction ge(e, t) {\n  let n = 0;\n  const r = tn(50, 250);\n  return (s) => {\n    const i = s.loaded, o = s.lengthComputable ? s.total : void 0, c = i - n, f = r(c), p = i <= o;\n    n = i;\n    const l = {\n      loaded: i,\n      total: o,\n      progress: o ? i / o : void 0,\n      bytes: c,\n      rate: f || void 0,\n      estimated: f && o && p ? (o - i) / f : void 0,\n      event: s\n    };\n    l[t ? \"download\" : \"upload\"] = !0, e(l);\n  };\n}\nconst nn = typeof XMLHttpRequest < \"u\", rn = nn && function(e) {\n  return new Promise(function(n, r) {\n    let s = e.data;\n    const i = C.from(e.headers).normalize();\n    let { responseType: o, withXSRFToken: c } = e, f;\n    function p() {\n      e.cancelToken && e.cancelToken.unsubscribe(f), e.signal && e.signal.removeEventListener(\"abort\", f);\n    }\n    let l;\n    if (a.isFormData(s)) {\n      if (T.hasStandardBrowserEnv || T.hasStandardBrowserWebWorkerEnv)\n        i.setContentType(!1);\n      else if ((l = i.getContentType()) !== !1) {\n        const [h, ...R] = l ? l.split(\";\").map((S) => S.trim()).filter(Boolean) : [];\n        i.setContentType([h || \"multipart/form-data\", ...R].join(\"; \"));\n      }\n    }\n    let u = new XMLHttpRequest();\n    if (e.auth) {\n      const h = e.auth.username || \"\", R = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \"\";\n      i.set(\"Authorization\", \"Basic \" + btoa(h + \":\" + R));\n    }\n    const E = He(e.baseURL, e.url);\n    u.open(e.method.toUpperCase(), Be(E, e.params, e.paramsSerializer), !0), u.timeout = e.timeout;\n    function w() {\n      if (!u)\n        return;\n      const h = C.from(\n        \"getAllResponseHeaders\" in u && u.getAllResponseHeaders()\n      ), S = {\n        data: !o || o === \"text\" || o === \"json\" ? u.responseText : u.response,\n        status: u.status,\n        statusText: u.statusText,\n        headers: h,\n        config: e,\n        request: u\n      };\n      $t(function(O) {\n        n(O), p();\n      }, function(O) {\n        r(O), p();\n      }, S), u = null;\n    }\n    if (\"onloadend\" in u ? u.onloadend = w : u.onreadystatechange = function() {\n      !u || u.readyState !== 4 || u.status === 0 && !(u.responseURL && u.responseURL.indexOf(\"file:\") === 0) || setTimeout(w);\n    }, u.onabort = function() {\n      u && (r(new m(\"Request aborted\", m.ECONNABORTED, e, u)), u = null);\n    }, u.onerror = function() {\n      r(new m(\"Network Error\", m.ERR_NETWORK, e, u)), u = null;\n    }, u.ontimeout = function() {\n      let R = e.timeout ? \"timeout of \" + e.timeout + \"ms exceeded\" : \"timeout exceeded\";\n      const S = e.transitional || ke;\n      e.timeoutErrorMessage && (R = e.timeoutErrorMessage), r(new m(\n        R,\n        S.clarifyTimeoutError ? m.ETIMEDOUT : m.ECONNABORTED,\n        e,\n        u\n      )), u = null;\n    }, T.hasStandardBrowserEnv && (c && a.isFunction(c) && (c = c(e)), c || c !== !1 && Zt(E))) {\n      const h = e.xsrfHeaderName && e.xsrfCookieName && Yt.read(e.xsrfCookieName);\n      h && i.set(e.xsrfHeaderName, h);\n    }\n    s === void 0 && i.setContentType(null), \"setRequestHeader\" in u && a.forEach(i.toJSON(), function(R, S) {\n      u.setRequestHeader(S, R);\n    }), a.isUndefined(e.withCredentials) || (u.withCredentials = !!e.withCredentials), o && o !== \"json\" && (u.responseType = e.responseType), typeof e.onDownloadProgress == \"function\" && u.addEventListener(\"progress\", ge(e.onDownloadProgress, !0)), typeof e.onUploadProgress == \"function\" && u.upload && u.upload.addEventListener(\"progress\", ge(e.onUploadProgress)), (e.cancelToken || e.signal) && (f = (h) => {\n      u && (r(!h || h.type ? new B(null, e, u) : h), u.abort(), u = null);\n    }, e.cancelToken && e.cancelToken.subscribe(f), e.signal && (e.signal.aborted ? f() : e.signal.addEventListener(\"abort\", f)));\n    const d = en(E);\n    if (d && T.protocols.indexOf(d) === -1) {\n      r(new m(\"Unsupported protocol \" + d + \":\", m.ERR_BAD_REQUEST, e));\n      return;\n    }\n    u.send(s || null);\n  });\n}, ne = {\n  http: Ct,\n  xhr: rn\n};\na.forEach(ne, (e, t) => {\n  if (e) {\n    try {\n      Object.defineProperty(e, \"name\", { value: t });\n    } catch {\n    }\n    Object.defineProperty(e, \"adapterName\", { value: t });\n  }\n});\nconst Re = (e) => `- ${e}`, sn = (e) => a.isFunction(e) || e === null || e === !1, qe = {\n  getAdapter: (e) => {\n    e = a.isArray(e) ? e : [e];\n    const { length: t } = e;\n    let n, r;\n    const s = {};\n    for (let i = 0; i < t; i++) {\n      n = e[i];\n      let o;\n      if (r = n, !sn(n) && (r = ne[(o = String(n)).toLowerCase()], r === void 0))\n        throw new m(`Unknown adapter '${o}'`);\n      if (r)\n        break;\n      s[o || \"#\" + i] = r;\n    }\n    if (!r) {\n      const i = Object.entries(s).map(\n        ([c, f]) => `adapter ${c} ` + (f === !1 ? \"is not supported by the environment\" : \"is not available in the build\")\n      );\n      let o = t ? i.length > 1 ? `since :\n` + i.map(Re).join(`\n`) : \" \" + Re(i[0]) : \"as no adapter specified\";\n      throw new m(\n        \"There is no suitable adapter to dispatch the request \" + o,\n        \"ERR_NOT_SUPPORT\"\n      );\n    }\n    return r;\n  },\n  adapters: ne\n};\nfunction Z(e) {\n  if (e.cancelToken && e.cancelToken.throwIfRequested(), e.signal && e.signal.aborted)\n    throw new B(null, e);\n}\nfunction Se(e) {\n  return Z(e), e.headers = C.from(e.headers), e.data = Q.call(\n    e,\n    e.transformRequest\n  ), [\"post\", \"put\", \"patch\"].indexOf(e.method) !== -1 && e.headers.setContentType(\"application/x-www-form-urlencoded\", !1), qe.getAdapter(e.adapter || ue.adapter)(e).then(function(r) {\n    return Z(e), r.data = Q.call(\n      e,\n      e.transformResponse,\n      r\n    ), r.headers = C.from(r.headers), r;\n  }, function(r) {\n    return Me(r) || (Z(e), r && r.response && (r.response.data = Q.call(\n      e,\n      e.transformResponse,\n      r.response\n    ), r.response.headers = C.from(r.response.headers))), Promise.reject(r);\n  });\n}\nconst we = (e) => e instanceof C ? e.toJSON() : e;\nfunction x(e, t) {\n  t = t || {};\n  const n = {};\n  function r(p, l, u) {\n    return a.isPlainObject(p) && a.isPlainObject(l) ? a.merge.call({ caseless: u }, p, l) : a.isPlainObject(l) ? a.merge({}, l) : a.isArray(l) ? l.slice() : l;\n  }\n  function s(p, l, u) {\n    if (a.isUndefined(l)) {\n      if (!a.isUndefined(p))\n        return r(void 0, p, u);\n    } else\n      return r(p, l, u);\n  }\n  function i(p, l) {\n    if (!a.isUndefined(l))\n      return r(void 0, l);\n  }\n  function o(p, l) {\n    if (a.isUndefined(l)) {\n      if (!a.isUndefined(p))\n        return r(void 0, p);\n    } else\n      return r(void 0, l);\n  }\n  function c(p, l, u) {\n    if (u in t)\n      return r(p, l);\n    if (u in e)\n      return r(void 0, p);\n  }\n  const f = {\n    url: i,\n    method: i,\n    data: i,\n    baseURL: o,\n    transformRequest: o,\n    transformResponse: o,\n    paramsSerializer: o,\n    timeout: o,\n    timeoutMessage: o,\n    withCredentials: o,\n    withXSRFToken: o,\n    adapter: o,\n    responseType: o,\n    xsrfCookieName: o,\n    xsrfHeaderName: o,\n    onUploadProgress: o,\n    onDownloadProgress: o,\n    decompress: o,\n    maxContentLength: o,\n    maxBodyLength: o,\n    beforeRedirect: o,\n    transport: o,\n    httpAgent: o,\n    httpsAgent: o,\n    cancelToken: o,\n    socketPath: o,\n    responseEncoding: o,\n    validateStatus: c,\n    headers: (p, l) => s(we(p), we(l), !0)\n  };\n  return a.forEach(Object.keys(Object.assign({}, e, t)), function(l) {\n    const u = f[l] || s, E = u(e[l], t[l], l);\n    a.isUndefined(E) && u !== c || (n[l] = E);\n  }), n;\n}\nconst Je = \"1.6.7\", le = {};\n[\"object\", \"boolean\", \"number\", \"function\", \"string\", \"symbol\"].forEach((e, t) => {\n  le[e] = function(r) {\n    return typeof r === e || \"a\" + (t < 1 ? \"n \" : \" \") + e;\n  };\n});\nconst Oe = {};\nle.transitional = function(t, n, r) {\n  function s(i, o) {\n    return \"[Axios v\" + Je + \"] Transitional option '\" + i + \"'\" + o + (r ? \". \" + r : \"\");\n  }\n  return (i, o, c) => {\n    if (t === !1)\n      throw new m(\n        s(o, \" has been removed\" + (n ? \" in \" + n : \"\")),\n        m.ERR_DEPRECATED\n      );\n    return n && !Oe[o] && (Oe[o] = !0, console.warn(\n      s(\n        o,\n        \" has been deprecated since v\" + n + \" and will be removed in the near future\"\n      )\n    )), t ? t(i, o, c) : !0;\n  };\n};\nfunction on(e, t, n) {\n  if (typeof e != \"object\")\n    throw new m(\"options must be an object\", m.ERR_BAD_OPTION_VALUE);\n  const r = Object.keys(e);\n  let s = r.length;\n  for (; s-- > 0; ) {\n    const i = r[s], o = t[i];\n    if (o) {\n      const c = e[i], f = c === void 0 || o(c, i, e);\n      if (f !== !0)\n        throw new m(\"option \" + i + \" must be \" + f, m.ERR_BAD_OPTION_VALUE);\n      continue;\n    }\n    if (n !== !0)\n      throw new m(\"Unknown option \" + i, m.ERR_BAD_OPTION);\n  }\n}\nconst re = {\n  assertOptions: on,\n  validators: le\n}, F = re.validators;\nclass J {\n  constructor(t) {\n    this.defaults = t, this.interceptors = {\n      request: new Ee(),\n      response: new Ee()\n    };\n  }\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(t, n) {\n    try {\n      return await this._request(t, n);\n    } catch (r) {\n      if (r instanceof Error) {\n        let s;\n        Error.captureStackTrace ? Error.captureStackTrace(s = {}) : s = new Error();\n        const i = s.stack ? s.stack.replace(/^.+\\n/, \"\") : \"\";\n        r.stack ? i && !String(r.stack).endsWith(i.replace(/^.+\\n.+\\n/, \"\")) && (r.stack += `\n` + i) : r.stack = i;\n      }\n      throw r;\n    }\n  }\n  _request(t, n) {\n    typeof t == \"string\" ? (n = n || {}, n.url = t) : n = t || {}, n = x(this.defaults, n);\n    const { transitional: r, paramsSerializer: s, headers: i } = n;\n    r !== void 0 && re.assertOptions(r, {\n      silentJSONParsing: F.transitional(F.boolean),\n      forcedJSONParsing: F.transitional(F.boolean),\n      clarifyTimeoutError: F.transitional(F.boolean)\n    }, !1), s != null && (a.isFunction(s) ? n.paramsSerializer = {\n      serialize: s\n    } : re.assertOptions(s, {\n      encode: F.function,\n      serialize: F.function\n    }, !0)), n.method = (n.method || this.defaults.method || \"get\").toLowerCase();\n    let o = i && a.merge(\n      i.common,\n      i[n.method]\n    );\n    i && a.forEach(\n      [\"delete\", \"get\", \"head\", \"post\", \"put\", \"patch\", \"common\"],\n      (d) => {\n        delete i[d];\n      }\n    ), n.headers = C.concat(o, i);\n    const c = [];\n    let f = !0;\n    this.interceptors.request.forEach(function(h) {\n      typeof h.runWhen == \"function\" && h.runWhen(n) === !1 || (f = f && h.synchronous, c.unshift(h.fulfilled, h.rejected));\n    });\n    const p = [];\n    this.interceptors.response.forEach(function(h) {\n      p.push(h.fulfilled, h.rejected);\n    });\n    let l, u = 0, E;\n    if (!f) {\n      const d = [Se.bind(this), void 0];\n      for (d.unshift.apply(d, c), d.push.apply(d, p), E = d.length, l = Promise.resolve(n); u < E; )\n        l = l.then(d[u++], d[u++]);\n      return l;\n    }\n    E = c.length;\n    let w = n;\n    for (u = 0; u < E; ) {\n      const d = c[u++], h = c[u++];\n      try {\n        w = d(w);\n      } catch (R) {\n        h.call(this, R);\n        break;\n      }\n    }\n    try {\n      l = Se.call(this, w);\n    } catch (d) {\n      return Promise.reject(d);\n    }\n    for (u = 0, E = p.length; u < E; )\n      l = l.then(p[u++], p[u++]);\n    return l;\n  }\n  getUri(t) {\n    t = x(this.defaults, t);\n    const n = He(t.baseURL, t.url);\n    return Be(n, t.params, t.paramsSerializer);\n  }\n}\na.forEach([\"delete\", \"get\", \"head\", \"options\"], function(t) {\n  J.prototype[t] = function(n, r) {\n    return this.request(x(r || {}, {\n      method: t,\n      url: n,\n      data: (r || {}).data\n    }));\n  };\n});\na.forEach([\"post\", \"put\", \"patch\"], function(t) {\n  function n(r) {\n    return function(i, o, c) {\n      return this.request(x(c || {}, {\n        method: t,\n        headers: r ? {\n          \"Content-Type\": \"multipart/form-data\"\n        } : {},\n        url: i,\n        data: o\n      }));\n    };\n  }\n  J.prototype[t] = n(), J.prototype[t + \"Form\"] = n(!0);\n});\nconst q = J;\nclass fe {\n  constructor(t) {\n    if (typeof t != \"function\")\n      throw new TypeError(\"executor must be a function.\");\n    let n;\n    this.promise = new Promise(function(i) {\n      n = i;\n    });\n    const r = this;\n    this.promise.then((s) => {\n      if (!r._listeners)\n        return;\n      let i = r._listeners.length;\n      for (; i-- > 0; )\n        r._listeners[i](s);\n      r._listeners = null;\n    }), this.promise.then = (s) => {\n      let i;\n      const o = new Promise((c) => {\n        r.subscribe(c), i = c;\n      }).then(s);\n      return o.cancel = function() {\n        r.unsubscribe(i);\n      }, o;\n    }, t(function(i, o, c) {\n      r.reason || (r.reason = new B(i, o, c), n(r.reason));\n    });\n  }\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason)\n      throw this.reason;\n  }\n  /**\n   * Subscribe to the cancel signal\n   */\n  subscribe(t) {\n    if (this.reason) {\n      t(this.reason);\n      return;\n    }\n    this._listeners ? this._listeners.push(t) : this._listeners = [t];\n  }\n  /**\n   * Unsubscribe from the cancel signal\n   */\n  unsubscribe(t) {\n    if (!this._listeners)\n      return;\n    const n = this._listeners.indexOf(t);\n    n !== -1 && this._listeners.splice(n, 1);\n  }\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let t;\n    return {\n      token: new fe(function(s) {\n        t = s;\n      }),\n      cancel: t\n    };\n  }\n}\nconst an = fe;\nfunction cn(e) {\n  return function(n) {\n    return e.apply(null, n);\n  };\n}\nfunction un(e) {\n  return a.isObject(e) && e.isAxiosError === !0;\n}\nconst se = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511\n};\nObject.entries(se).forEach(([e, t]) => {\n  se[t] = e;\n});\nconst ln = se;\nfunction Ve(e) {\n  const t = new q(e), n = Ae(q.prototype.request, t);\n  return a.extend(n, q.prototype, t, { allOwnKeys: !0 }), a.extend(n, t, null, { allOwnKeys: !0 }), n.create = function(s) {\n    return Ve(x(e, s));\n  }, n;\n}\nconst g = Ve(ue);\ng.Axios = q;\ng.CanceledError = B;\ng.CancelToken = an;\ng.isCancel = Me;\ng.VERSION = Je;\ng.toFormData = G;\ng.AxiosError = m;\ng.Cancel = g.CanceledError;\ng.all = function(t) {\n  return Promise.all(t);\n};\ng.spread = cn;\ng.isAxiosError = un;\ng.mergeConfig = x;\ng.AxiosHeaders = C;\ng.formToJSON = (e) => je(a.isHTMLForm(e) ? new FormData(e) : e);\ng.getAdapter = qe.getAdapter;\ng.HttpStatusCode = ln;\ng.default = g;\nvar N = /* @__PURE__ */ ((e) => (e.BOOLEAN = \"BOOLEAN\", e.INTEGER = \"INTEGER\", e.DOUBLE = \"DOUBLE\", e.STRING = \"STRING\", e.JSON = \"JSON\", e))(N || {}), $ = /* @__PURE__ */ ((e) => (e.UNKNOWN = \"UNKNOWN\", e.SUCCESS = \"SUCCESS\", e.SDK_ERROR = \"SDK_ERROR\", e.INVALID_REQUEST = \"INVALID_REQUEST\", e.NOT_FOUND = \"NOT_FOUND\", e.WRONG_TYPE = \"WRONG_TYPE\", e.SERVICE_NOT_READY = \"SERVICE_NOT_READY\", e))($ || {}), fn = /* @__PURE__ */ ((e) => (e.UNIT = \"UNIT\", e.MERCHANT = \"MERCHANT\", e.DEVICE_ID = \"DEVICE_ID\", e.ANONYMOUS_VISITOR = \"ANONYMOUS_VISITOR\", e.PERSON = \"PERSON\", e))(fn || {}), ze = /* @__PURE__ */ ((e) => (e.NOT_SUPPLIED = \"NOT_SUPPLIED\", e.PIE = \"PIE\", e.CAPITAL = \"CAPITAL\", e.SQUARE_CONSOLE = \"SQUARE_CONSOLE\", e.TIDAL = \"TIDAL\", e.SHOP = \"SHOP\", e))(ze || {}), dn = /* @__PURE__ */ ((e) => (e.UNKNOWN = \"unknown\", e.SQUARE = \"square\", e.REGISTER = \"register\", e.DASHBOARD = \"dashboard\", e.RETAIL = \"retail\", e.RESTAURANT = \"restaurant\", e.INVOICES = \"invoices\", e.APPOINTMENTS = \"appointments\", e.READERSDK = \"readersdk\", e.KDS = \"kds\", e.SIGNIN = \"signin\", e.SINGLE_BINARY = \"single_binary\", e.TERMINALAPI = \"terminalapi\", e.WEEBLY = \"weebly\", e.TERMINAL = \"terminal\", e.TERMINAL_API = \"terminal_api\", e.KDS_EXPO = \"kds_expo\", e.PAYROLL = \"payroll\", e.CARDCASE = \"cardcase\", e.RESTAURANT_MOBILE = \"restaurant_mobile\", e.BALANCE = \"balance\", e.FNBKIOSK = \"fnbkiosk\", e.GO = \"go\", e))(dn || {});\nconst pn = \"application/json\", hn = \"https://squareupsandbox.com\", mn = \"/1.0/features/get-flags\", En = \"/1.0/features/get-flags-sandbox\", Ke = ze.PIE;\nfunction yn(e = \"\") {\n  const t = e.endsWith(\"/\") ? e.slice(0, -1) : e, n = e.includes(hn) ? En : mn;\n  return `${t}${n}`;\n}\n/*! js-cookie v3.0.5 | MIT */\nfunction j(e) {\n  for (var t = 1; t < arguments.length; t++) {\n    var n = arguments[t];\n    for (var r in n)\n      e[r] = n[r];\n  }\n  return e;\n}\nvar gn = {\n  read: function(e) {\n    return e[0] === '\"' && (e = e.slice(1, -1)), e.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\n  },\n  write: function(e) {\n    return encodeURIComponent(e).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    );\n  }\n};\nfunction oe(e, t) {\n  function n(s, i, o) {\n    if (!(typeof document > \"u\")) {\n      o = j({}, t, o), typeof o.expires == \"number\" && (o.expires = new Date(Date.now() + o.expires * 864e5)), o.expires && (o.expires = o.expires.toUTCString()), s = encodeURIComponent(s).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);\n      var c = \"\";\n      for (var f in o)\n        o[f] && (c += \"; \" + f, o[f] !== !0 && (c += \"=\" + o[f].split(\";\")[0]));\n      return document.cookie = s + \"=\" + e.write(i, s) + c;\n    }\n  }\n  function r(s) {\n    if (!(typeof document > \"u\" || arguments.length && !s)) {\n      for (var i = document.cookie ? document.cookie.split(\"; \") : [], o = {}, c = 0; c < i.length; c++) {\n        var f = i[c].split(\"=\"), p = f.slice(1).join(\"=\");\n        try {\n          var l = decodeURIComponent(f[0]);\n          if (o[l] = e.read(p, l), s === l)\n            break;\n        } catch {\n        }\n      }\n      return s ? o[s] : o;\n    }\n  }\n  return Object.create(\n    {\n      set: n,\n      get: r,\n      remove: function(s, i) {\n        n(\n          s,\n          \"\",\n          j({}, i, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function(s) {\n        return oe(this.converter, j({}, this.attributes, s));\n      },\n      withConverter: function(s) {\n        return oe(j({}, this.converter, s), this.attributes);\n      }\n    },\n    {\n      attributes: { value: Object.freeze(t) },\n      converter: { value: Object.freeze(e) }\n    }\n  );\n}\nvar Rn = oe(gn, { path: \"/\" });\nasync function Sn({\n  flagRequests: e,\n  userToken: t,\n  origin: n,\n  headers: r,\n  withCredentials: s,\n  project: i = Ke,\n  userAttributes: o\n}) {\n  const c = {\n    project: i,\n    flag_requests: e,\n    user_token: t,\n    user_attributes: {\n      user_attributes: On(o)\n    }\n  }, f = yn(n), { data: p } = await g.post(f, c, {\n    withCredentials: s,\n    headers: {\n      Accept: pn,\n      ...wn(),\n      ...r\n    }\n  });\n  if (p.status !== $.SUCCESS)\n    throw new Error(\n      `Request to retrieve feature flags failed with status ${p.status}`\n    );\n  return p.flag_responses ?? [];\n}\nfunction wn() {\n  const e = Rn.get(\"_js_csrf\");\n  return e !== void 0 ? { \"x-csrf-token\": e } : null;\n}\nfunction On(e = []) {\n  const t = [...e];\n  return e.some((n) => n.name === \"platform\") || t.push({ name: \"platform\", string_value: \"web\" }), t;\n}\nfunction bn(e) {\n  return e.flag_type === N.BOOLEAN && typeof e.flag_name == \"string\";\n}\nfunction An(e) {\n  return e.flag_type === N.DOUBLE && typeof e.flag_name == \"string\";\n}\nfunction Nn(e) {\n  return e.flag_type === N.INTEGER && typeof e.flag_name == \"string\";\n}\nfunction Tn(e) {\n  return e.flag_type === N.JSON && typeof e.flag_name == \"string\";\n}\nfunction _n(e) {\n  return e.flag_type === N.STRING && typeof e.flag_name == \"string\";\n}\nfunction Ge(e, t) {\n  if (e.status === $.SUCCESS) {\n    if (bn(e))\n      return e.bool_value;\n    if (Nn(e))\n      return e.int_value;\n    if (An(e))\n      return e.double_value;\n    if (_n(e))\n      return e.string_value;\n    if (Tn(e)) {\n      if (!e.string_value)\n        return;\n      try {\n        return JSON.parse(e.string_value);\n      } catch {\n        typeof t == \"function\" && t({\n          flagKey: e.flag_name,\n          stringifiedValue: e.string_value\n        });\n        return;\n      }\n    }\n  }\n}\nfunction Cn(e) {\n  const t = /* @__PURE__ */ new Map();\n  for (const n of Object.values(e)) {\n    const r = {\n      value: void 0,\n      config: n\n    };\n    t.set(n.key, r);\n  }\n  return t;\n}\nfunction Fn(e) {\n  const { key: t, flagType: n } = e;\n  return {\n    flag_name: t,\n    flag_type: n\n  };\n}\nfunction Dn({\n  flagConfig: e,\n  flagResponse: t,\n  onIncorrectFlagType: n,\n  onMalformedJsonFlagValue: r\n}) {\n  return t.status === $.WRONG_TYPE ? (typeof n == \"function\" && n({\n    flagKey: e.key,\n    expectedType: e.flagType\n  }), e.defaultValue) : Ge(t, r);\n}\nfunction be(e, t) {\n  if (typeof t == \"function\")\n    for (const [n, { config: r, value: s }] of e)\n      s === void 0 && t({\n        flagKey: n,\n        flagType: r.flagType\n      });\n}\nfunction In({\n  project: e = Ke,\n  flagConfigs: t,\n  origin: n,\n  headers: r,\n  withCredentials: s,\n  userAttributes: i,\n  userToken: o,\n  offlineMode: c,\n  onIncorrectFlagType: f,\n  onMalformedJsonFlagValue: p,\n  onMissingFlagValue: l,\n  onUnexpectedFlagValue: u\n}) {\n  const E = Cn(t);\n  let w = !1, d = !1;\n  function h(y) {\n    var O;\n    if (w = !0, d)\n      throw new Error(\n        \"Bootstrapping flags after `loadFlags` has been invoked is not supported. Instantiate a different client instance if both bootstrapped and client-loaded feature flags are required.\"\n      );\n    for (const b in y) {\n      const D = ((O = t[b]) == null ? void 0 : O.key) ?? \"\", v = E.get(D);\n      if (v === void 0) {\n        typeof u == \"function\" && u({\n          flagKey: b,\n          value: y[b]\n        });\n        continue;\n      }\n      E.set(D, {\n        config: v.config,\n        value: y[b]\n      });\n    }\n    be(E, l);\n  }\n  async function R() {\n    if (d = !0, w)\n      throw new Error(\n        \"Loading flags after `boostrapFlags` has been invoked is not supported. Instantiate a different client instance if both bootstrapped and client-loaded feature flags are required.\"\n      );\n    if (o === void 0)\n      throw new TypeError(\n        \"Clients require a `userToken` to retrieve flags from the Feature Relay service via `loadFlags`. Be sure to invoke `createFeatureRelayClient` with a valid `userToken` instance.\"\n      );\n    if (c)\n      return;\n    const y = Object.values(t).map(Fn), O = await Sn({\n      project: e,\n      flagRequests: y,\n      origin: n,\n      headers: r,\n      withCredentials: s,\n      userAttributes: i,\n      userToken: o\n    });\n    for (const b of O) {\n      const D = E.get(b.flag_name);\n      if (!D) {\n        typeof u == \"function\" && u({\n          dataType: b.flag_type,\n          flagKey: b.flag_name,\n          value: Ge(b)\n        });\n        continue;\n      }\n      const v = Dn({\n        flagConfig: D.config,\n        flagResponse: b,\n        onIncorrectFlagType: f,\n        onMalformedJsonFlagValue: p\n      });\n      E.set(D.config.key, { ...D, value: v });\n    }\n    be(E, l);\n  }\n  function S(y) {\n    const O = E.get(y.key);\n    if (!O)\n      throw new Error(\n        `Attempted to read a flag (${y.key}) that has not been configured. Make sure you're using the correct client instance, or that you've included this flag when instantiating the client.`\n      );\n    if (!w && !d)\n      throw new Error(\n        \"You have not yet fetched values for your flags. Retrieve flag values with the `loadFlags` method, or bootstrap values with the `bootstrapFlags` method.\"\n      );\n    const b = y.getMock();\n    return b.isSet ? b.value : c ? y.defaultValue : O.value ?? y.defaultValue;\n  }\n  return {\n    bootstrapFlags: h,\n    getFlagValue: S,\n    loadFlags: R\n  };\n}\nfunction xn(e) {\n  let t = { isSet: !1, value: void 0 };\n  return {\n    ...e,\n    getMock() {\n      return t;\n    },\n    setMockValue(n) {\n      if (t.isSet) {\n        const r = \"A mock value has been re-set with out being cleared. This may be an indication of state leaking between tests. Clear mock values with `.clearMockValue()` before re-setting.\";\n        throw new Error(r);\n      }\n      t = { value: n, isSet: !0 };\n    },\n    clearMockValue() {\n      t = { value: void 0, isSet: !1 };\n    }\n  };\n}\nfunction k({\n  key: e,\n  defaultValue: t,\n  flagType: n\n}) {\n  if (e.length === 0)\n    throw new Error(\n      \"Feature flag configuration instances require non-empty key\"\n    );\n  return xn({\n    key: e,\n    defaultValue: t,\n    flagType: n\n  });\n}\nfunction Ln({\n  key: e,\n  defaultValue: t\n}) {\n  return k({\n    key: e,\n    defaultValue: t,\n    flagType: N.BOOLEAN\n  });\n}\nfunction Un({\n  key: e,\n  defaultValue: t\n}) {\n  if (!Number.isInteger(t))\n    throw new TypeError(\n      `You supplied a non-integer default value to the ${e} flag.To create a flag with support for decimal values, use createDoubleFlag.`\n    );\n  return k({\n    key: e,\n    defaultValue: t,\n    flagType: N.INTEGER\n  });\n}\nfunction Pn({\n  key: e,\n  defaultValue: t\n}) {\n  return k({\n    key: e,\n    defaultValue: t,\n    flagType: N.DOUBLE\n  });\n}\nfunction Bn({\n  key: e,\n  defaultValue: t\n}) {\n  return k({\n    key: e,\n    defaultValue: t,\n    flagType: N.STRING\n  });\n}\nfunction kn({\n  key: e,\n  defaultValue: t\n}) {\n  return k({\n    key: e,\n    defaultValue: t,\n    flagType: N.JSON\n  });\n}\nexport {\n  N as DataType,\n  dn as Product,\n  ze as Project,\n  $ as Status,\n  fn as TokenType,\n  Ln as createBooleanFlag,\n  Pn as createDoubleFlag,\n  In as createFeatureRelayClient,\n  Un as createIntegerFlag,\n  kn as createJSONFlag,\n  Bn as createStringFlag,\n  Sn as getFlags,\n  Ge as readFlagValueFromResponse\n};\n","type ValuesOf<T extends Record<string, unknown>> = T[keyof T];\n\n// Envoy Constants\nexport const X_ALLOW_COOKIES = 'X-Allow-Cookies';\nexport const X_BLOCK_COOKIES = 'X-Block-Cookies';\nexport const X_BLOCK_COOKIES_DEFAULT_VALUE = 'true';\n\n// One Trust Constants\nexport const CONSENT_COOKIE_KEY = 'OptanonConsent';\nexport const ALERT_BOX_CLOSED_COOKIE_KEY = 'OptanonAlertBoxClosed';\nexport const CDN_GEOLOCATION_COOKIE_KEY = 'squareGeo';\n/**\n * Categories defined by OneTrust that represent types of storage\n * or other functionality allowed on a user's device.\n */\nexport const COOKIE_GROUP_KEYS = {\n  /**\n   * Data or functionality required for an app to function or\n   * provide necessary product features\n   */\n  strictlyNecessary: 'C0001',\n  /**\n   * Data or services like EventStream, Sentry, Firebase, etc that\n   * helps us track crashes or performance\n   */\n  performanceAndAnalytics: 'C0002',\n  /**\n   * Data or services that support non-critical product features.\n   */\n  functionality: 'C0003',\n  /**\n   * Data or services used for marketing-related purposes.\n   */\n  retargetingOrAdvertising: 'C0004',\n} as const;\n/**\n * Cookie group identifiers used by OneTrust.\n * Available as constants on the {@link COOKIE_GROUP_KEYS} object.\n */\nexport type CookieGroupKeyValue = ValuesOf<typeof COOKIE_GROUP_KEYS>;\nexport const CONSENT_GROUP_COOKIE_SUBSTRING = 'groups=';\nexport const PREFERENCES_CHANGED_EVENT_KEY = 'oneTrustPreferencesChangedEvent';\n// These countries are derived from One Trust's reference here:\n// https://community.cookiepro.com/s/article/UUID-97c0d8a2-cf62-82b6-48e2-2c2bb4ef9c67?topicId=0TO1Q000000ssK9WAI\n// and can also be found in their source file: https://cdn.cookielaw.org/scripttemplates/otSDKStub.js\nexport const EU_COUNTRIES: ReadonlyArray<string> = [\n  'BE',\n  'BG',\n  'CZ',\n  'DK',\n  'DE',\n  'EE',\n  'IE',\n  'GR',\n  'ES',\n  'FR',\n  'IT',\n  'CY',\n  'LV',\n  'LT',\n  'LU',\n  'HU',\n  'MT',\n  'NL',\n  'AT',\n  'PL',\n  'PT',\n  'RO',\n  'SI',\n  'SK',\n  'FI',\n  'SE',\n  'GB',\n  'HR',\n  'LI',\n  'NO',\n  'IS',\n];\n\nconst ALTERNATIVE_COMPLIANCE_LAWS: ReadonlyMap<\n  string,\n  Array<string>\n> = new Map([['US', ['CA']]]);\n\nexport const DEFAULT_OPT_IN_REGIONS: ReadonlyArray<string> = ['US', 'CA'];\n\nexport const DEFAULT_OPT_OUT_REGIONS = EU_COUNTRIES;\n\n// Interface definitions\ninterface OneTrust {\n  getGeolocationData: () => {\n    country?: string;\n    state?: string;\n    province?: string;\n  };\n}\ndeclare global {\n  /* eslint-disable no-var */\n  var OneTrust: OneTrust;\n  var OnetrustActiveGroups: string;\n  /* eslint-enable no-var */\n}\n\ninterface LocationHash {\n  country?: string;\n  state?: string;\n}\n\nexport default class SqOneTrust {\n  public oneTrustPreferencesSet = false;\n  public strictlyNecessaryCookiesBlocked = false;\n  public performanceAndAnalyticsCookiesBlocked = false;\n  public functionalityCookiesBlocked = false;\n  public retargetingOrAdvertisingCookiesBlocked = false;\n  public locationDataHash: LocationHash = {};\n  public userLocatedInEU = false;\n  public allCookiesAllowed = false;\n\n  public optanonConsentCookieString = '';\n  public optanonAlertBoxClosedCookieString = '';\n  public squareGeoCookieString = '';\n  public squareGeoCookieCountry = '';\n  public squareGeoCookieRegion = '';\n  public squareGeoLocationHash: LocationHash = {};\n  public squareGeoInEu: boolean | undefined = undefined;\n  public artificialIntelligenceFunctionalityBlocked:\n    | boolean\n    | undefined = undefined;\n  public groupConsentHash: Record<string, unknown> = {};\n  public defaultConsentRequired = true;\n  public accessToDataPrivacyPreferencesRequired = true;\n  private _passSquareGeoToOneTrust = false;\n\n  constructor({ passSquareGeoToOneTrust = false } = {}) {\n    this._init(passSquareGeoToOneTrust);\n  }\n\n  _init(passSquareGeoToOneTrust: boolean): void {\n    this._setVars(passSquareGeoToOneTrust);\n    this._setGeolocationData();\n    this._onUpdatedCookiePreferences();\n    this._setAIData();\n  }\n\n  // Only setting the variables that can be defined without a network call\n  _setVars(passSquareGeoToOneTrust: boolean): void {\n    this.optanonConsentCookieString = this._getCookieValue(CONSENT_COOKIE_KEY);\n    this.optanonAlertBoxClosedCookieString = this._getCookieValue(\n      ALERT_BOX_CLOSED_COOKIE_KEY\n    );\n    this.squareGeoCookieString = this._getCookieValue(\n      CDN_GEOLOCATION_COOKIE_KEY\n    );\n    this._passSquareGeoToOneTrust = passSquareGeoToOneTrust;\n  }\n\n  // Getters\n\n  get isUserLocatedInEU(): boolean {\n    if (this.locationDataHash) {\n      return this.checkIfUserLocatedInEU(this.locationDataHash.country);\n    } else {\n      return false;\n    }\n  }\n\n  get isSquareGeoInEu(): boolean | undefined {\n    if (this.squareGeoCookieCountry) {\n      return this.checkIfUserLocatedInEU(this.squareGeoCookieCountry);\n    }\n\n    return undefined;\n  }\n\n  get isartificialIntelligenceFunctionalityBlocked(): boolean {\n    const complianceStates: string[] =\n      ALTERNATIVE_COMPLIANCE_LAWS.get(this.squareGeoCookieCountry) || [];\n    const isCoveredByComplianceLaw = complianceStates.includes(\n      this.squareGeoCookieRegion\n    );\n    return (\n      this.isSquareGeoInEu ||\n      isCoveredByComplianceLaw ||\n      this.retargetingOrAdvertisingCookiesBlocked\n    );\n  }\n\n  get isAccessToDataPrivacyPreferencesRequired(): boolean {\n    const country = this._getCountryInLocationDataHash();\n    if (country) {\n      return (\n        DEFAULT_OPT_IN_REGIONS.includes(country) ||\n        DEFAULT_OPT_OUT_REGIONS.includes(country)\n      );\n    }\n    // if no country, default is false\n    return false;\n  }\n\n  get isDefaultConsentRequired(): boolean {\n    const country = this._getCountryInLocationDataHash();\n    if (country) {\n      return DEFAULT_OPT_OUT_REGIONS.includes(country);\n    }\n    // if no country, default is true\n    return true;\n  }\n\n  _getCountryInLocationDataHash(): string | undefined {\n    return 'country' in this.locationDataHash\n      ? this.locationDataHash.country\n      : '';\n  }\n  // Event Behavior\n\n  _dispatchUpdateEvent(): void {\n    const updateEvent = new CustomEvent(\n      PREFERENCES_CHANGED_EVENT_KEY,\n      this.groupConsentHash\n    );\n    document.dispatchEvent(updateEvent);\n  }\n\n  _onUpdatedCookiePreferences(): void {\n    // One Trust sets data to the cookie on every page load. In the majority of\n    // cases this is just going to be a timestamp for when the user set their\n    // preferences, and the code in this module is only concerned with changes\n    // to the preferences of the tracking groups.\n    if (this._oneTrustGroupChoicesSet()) {\n      this._buildHashOfGroupConsentChoices();\n    } else {\n      // If the cookie containing the group choices does not exist,\n      // use the values existing in OnetrustActiveGroups.\n      // There is a race condition for non EU users who are auto-consented.\n      // In this state, the cookie will not yet have the consent choices,\n      // but the Application layer will. This uses those known values if a cookie is not available.\n      this._buildHashOfGroupConsentFromActiveGroups();\n    }\n\n    if (Object.keys(this.groupConsentHash).length > 0) {\n      // TODO: figure out if we're ok with having the event fire on every\n      // page load (which is going to happen because of the changed timestamp)\n      // or if we want to add a second cookie for an initial state so that\n      // we can compare group preferences against it.\n      this._setConsentChoices();\n      this._dispatchUpdateEvent();\n    }\n  }\n\n  // Geolocation behavior\n\n  checkIfUserLocatedInEU(country?: string): boolean {\n    const currentCountry = country || '';\n    return EU_COUNTRIES.includes(currentCountry);\n  }\n\n  _setGeolocationData(): void {\n    // squareGeo cookie is either 2 chars long (if no region, e.g. US) or 6 if\n    // there is an encoded region (e.g US-CA for United States, California)\n    // subdivision country code is up to three chars long https://en.wikipedia.org/wiki/ISO_3166-2\n    const validSquareGeoCookieExists =\n      this.squareGeoCookieString.length >= 2 &&\n      this.squareGeoCookieString.length <= 6;\n\n    if (validSquareGeoCookieExists) {\n      this._parseSquareGeoCookieForLocationData();\n      this.squareGeoInEu = this.isSquareGeoInEu;\n      this.locationDataHash = this.squareGeoLocationHash;\n      this.userLocatedInEU = this.squareGeoInEu as boolean;\n      this.accessToDataPrivacyPreferencesRequired = this.isAccessToDataPrivacyPreferencesRequired;\n      this.defaultConsentRequired = this.isDefaultConsentRequired;\n      if (this._passSquareGeoToOneTrust && this.squareGeoCookieCountry) {\n        globalThis.OneTrust = globalThis.OneTrust || {\n          geolocationResponse: {\n            stateCode: this.squareGeoCookieRegion,\n            countryCode: this.squareGeoCookieCountry,\n          },\n        };\n      }\n    } else if (globalThis.OneTrust) {\n      this.locationDataHash = OneTrust.getGeolocationData?.() || {};\n      this.userLocatedInEU = this.isUserLocatedInEU;\n      this.accessToDataPrivacyPreferencesRequired = this.isAccessToDataPrivacyPreferencesRequired;\n      this.defaultConsentRequired = this.isDefaultConsentRequired;\n    }\n  }\n\n  // Restrict access to AI tools\n  _setAIData(): void {\n    this.artificialIntelligenceFunctionalityBlocked = this.isartificialIntelligenceFunctionalityBlocked;\n  }\n\n  // Cookie and Preference behavior\n\n  _setConsentChoices(): void {\n    if (this.optanonAlertBoxClosedCookieString.length > 0) {\n      this.oneTrustPreferencesSet = true;\n    }\n    // TODO: figure out if there are any complexities involved with preference\n    // changes here or if we can early return after this.\n    if (Object.values(this.groupConsentHash).includes('0')) {\n      this.allCookiesAllowed = false;\n    } else if (\n      Object.values(this.groupConsentHash).every((value) => value === '1') &&\n      Object.keys(this.groupConsentHash).length ===\n        Object.keys(COOKIE_GROUP_KEYS).length\n    ) {\n      // The second condition ensures this.allCookiesAllowed is false when this.groupConsentHash = {'C0001': '1'}\n      // this happens when this.groupConsentHash is build from OnetrustActiveGroups datalayer\n      this.allCookiesAllowed = true;\n    }\n\n    // Strictly necessary\n    if (this.groupConsentHash[COOKIE_GROUP_KEYS.strictlyNecessary] !== '1') {\n      this.strictlyNecessaryCookiesBlocked = true;\n    }\n\n    // Performance and Analytics\n    if (\n      this.groupConsentHash[COOKIE_GROUP_KEYS.performanceAndAnalytics] !== '1'\n    ) {\n      this.performanceAndAnalyticsCookiesBlocked = true;\n    }\n\n    // Functionality\n    if (this.groupConsentHash[COOKIE_GROUP_KEYS.functionality] !== '1') {\n      this.functionalityCookiesBlocked = true;\n    }\n\n    // Retargeting or Advertising\n    if (\n      this.groupConsentHash[COOKIE_GROUP_KEYS.retargetingOrAdvertising] !== '1'\n    ) {\n      this.retargetingOrAdvertisingCookiesBlocked = true;\n    }\n  }\n\n  // Parses the One Trust Cookie to derive the user's actual preferences\n  // for sharing certain cookies.\n  _buildHashOfGroupConsentChoices(): Record<string, unknown> {\n    const cookieDataAsArray = this.optanonConsentCookieString.split('&'); // Data delimited by ampersands\n    const groupCookieDataString = cookieDataAsArray.find((dataString) => {\n      return dataString.includes(CONSENT_GROUP_COOKIE_SUBSTRING);\n    });\n    if (!groupCookieDataString) {\n      throw new Error('No group cookie data string');\n    }\n    const groupPreferencesStringAsArray = groupCookieDataString\n      .split('=')[1]\n      .split(',');\n    return (this.groupConsentHash = groupPreferencesStringAsArray.reduce(\n      (consentHashObject, groupString) => {\n        const splitString = groupString.split(':');\n        consentHashObject[splitString[0]] = splitString[1];\n        return consentHashObject;\n      },\n      this.groupConsentHash\n    ));\n  }\n\n  // Parses the application layer active groups object to find the user's consent choices\n  // Will be used if the user is outside of the EU and has not yet auto-consented.\n  _buildHashOfGroupConsentFromActiveGroups(): void {\n    const activeGroupsString = globalThis.OnetrustActiveGroups || '';\n    const activeGroups = activeGroupsString.split(',');\n\n    activeGroups.forEach((consentChoice: string) => {\n      if (consentChoice !== '') {\n        this.groupConsentHash[consentChoice] = '1';\n      }\n    });\n  }\n\n  // Gets cookie value by iterating through different cookie keys in document.cookie\n  _getCookieValue(cookieKey: string): string {\n    if (typeof document === 'undefined') {\n      return '';\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    const cookies = document.cookie ? document.cookie.split('; ') : [];\n    for (const cooky of cookies) {\n      const parts = cooky.split('=');\n      let value = parts.slice(1).join('=');\n\n      if (value[0] === '\"') {\n        value = value.slice(1, -1);\n      }\n\n      try {\n        const foundKey = parts[0];\n        if (foundKey === cookieKey) {\n          return decodeURIComponent(value);\n        }\n      } catch (e) {\n        console.log(e);\n      }\n    }\n\n    return '';\n  }\n\n  _parseSquareGeoCookieForLocationData(): void {\n    const cookieParts = this.squareGeoCookieString.split('-');\n\n    this.squareGeoCookieCountry = cookieParts[0] || '';\n    this.squareGeoCookieRegion = cookieParts[1] || '';\n    // We're using the cookieparts directly here because we actually want an\n    // undefined value for these properties if they don't exist to keep parity\n    // with the way One Trust handles the data.\n    this.squareGeoLocationHash = {\n      country: cookieParts[0],\n      state: cookieParts[1],\n    };\n  }\n\n  _oneTrustGroupChoicesSet(): boolean {\n    return this.optanonConsentCookieString.includes(\n      CONSENT_GROUP_COOKIE_SUBSTRING\n    );\n  }\n}\n","module.exports = {\n  ...require('./lib/market-qrcode'),\n  ...require('./lib/qrcode'),\n  ...require('./lib/square-qrcode'),\n};\n","const { Matrix } = require('./qrcode');\nconst { SquareQRCodeEncoder } = require('./square-qrcode');\n\nconst JEWEL_VALUE = Object.freeze({\n  AVAILABLE: 'AVAILABLE',\n  FALSE: 'FALSE',\n  TRUE: 'TRUE',\n  UNDECIDED: 'UNDECIDED',\n});\n\n/**\n * CLASS MarketQRCodeEncoder\n * This is used to generate an SVG for a QR code with a Square logo embedded in the center.\n * Contact #qrcode-design for design specifics\n * The following options can be specified:\n *   border          boolean (default false) whether to add a 6-pixel quiet zone\n *   invert          boolean (default false) light data on dark background when on\n *   monochrome      boolean (default false) whether to make it all black and white\n *                   This is useful for things like thermal printers that only print black\n *   styleBackground string to override style inserted in SVG background rectangle\n *   styleForeground string to override style inserted in SVG foreground data and patterns\n *   styleLogo       string to override style inserted in SVG for Square jewel\n */\nclass MarketQRCodeEncoder extends SquareQRCodeEncoder {\n  static getJewel() {\n    if (this.jewel !== undefined) return this.jewel;\n    const jewel = Matrix.withAll(9, 9, JEWEL_VALUE.UNDECIDED);\n    // corners are available\n    jewel.put(0, 0, JEWEL_VALUE.AVAILABLE);\n    jewel.put(0, 8, JEWEL_VALUE.AVAILABLE);\n    jewel.put(8, 0, JEWEL_VALUE.AVAILABLE);\n    jewel.put(8, 8, JEWEL_VALUE.AVAILABLE);\n    // forced false\n    for (let offset = 0; offset < 7; offset++) {\n      jewel.put(offset + 1, 0, JEWEL_VALUE.FALSE);\n      jewel.put(offset + 1, 8, JEWEL_VALUE.FALSE);\n      jewel.put(0, offset + 1, JEWEL_VALUE.FALSE);\n      jewel.put(8, offset + 1, JEWEL_VALUE.FALSE);\n    }\n    jewel.put(3, 3, JEWEL_VALUE.FALSE);\n    jewel.put(3, 5, JEWEL_VALUE.FALSE);\n    jewel.put(5, 3, JEWEL_VALUE.FALSE);\n    jewel.put(5, 5, JEWEL_VALUE.FALSE);\n    // forced true\n    for (let offset = 0; offset < 6; offset++) {\n      jewel.put(1 + offset, 1, JEWEL_VALUE.TRUE);\n      jewel.put(2 + offset, 7, JEWEL_VALUE.TRUE);\n      jewel.put(7, 1 + offset, JEWEL_VALUE.TRUE);\n      jewel.put(1, 2 + offset, JEWEL_VALUE.TRUE);\n    }\n    jewel.put(4, 4, JEWEL_VALUE.TRUE);\n    this.jewel = jewel;\n    return jewel;\n  }\n\n  initializeSvg() {\n    // generate the SVG\n    const offset = this.svgOffset;\n    const dimension = this.svgDimension;\n    const foregroundStyle = this.svgForegroundStyle;\n    const logoStyle = this.svgLogoStyle;\n    const source = [];\n    source.push(this.svgTag(dimension));\n    source.push('<defs>');\n    source.push(this.svgFinderPattern(foregroundStyle));\n    source.push(this.svgLogo(logoStyle));\n    source.push('</defs>');\n    source.push(this.svgBackground(this.svgBackgroundStyle, dimension, offset === 0 ? undefined : 16));\n    this.svgFinderPatterns(source, offset);\n    this.svgTurtle(source, foregroundStyle, offset);\n    // Square logo\n    const logoPosition = (this.code.dimension - 7) * 4 + offset;\n    source.push(`<use xlink:href=\"#s\" x=\"${logoPosition}\" y=\"${logoPosition}\" />`);\n    // finish\n    source.push('</svg>');\n    this.svg = source.join('');\n  }\n\n  initializeTurtleData() {\n    super.initializeTurtleData();\n    // clear out middle for Square logo\n    const start = (this.code.dimension - 9) / 2;\n    this.turtleData.fill(start, start + 1, 9, 7, false);\n    this.turtleData.fill(start + 1, start, 7, 1, false);\n    this.turtleData.fill(start + 1, start + 8, 7, 1, false);\n  }\n\n  get isMonochrome() {\n    const isMonochrome = this.code.options.monochrome;\n    if (isMonochrome === undefined) return false;\n    return isMonochrome;\n  }\n\n  get minimumVersion() {\n    // if the code version is 1, then the jewel would cut out the timing patterns\n    return 2;\n  }\n\n  penaltyForMatrix(matrix) {\n    const errorCorrectionCapacity = this.map.errorCorrectionCapacity;\n    const messedUpBytes = errorCorrectionCapacity.map(() => new Set());\n    // figure out the messed up bytes based on putting the jewel in the center\n    const jewel = this.constructor.getJewel();\n    const start = (matrix.content.length - 9) / 2;\n    for (let y = 0; y < 9; y++) {\n      const yData = y + start;\n      for (let x = 0; x < 9; x++) {\n        const xData = x + start;\n        const pixel = this.map.at(xData, yData);\n        if (this.map.isDataPixel(pixel)) {\n          switch (jewel.at(x, y)) {\n            case JEWEL_VALUE.FALSE:\n              if (matrix.at(xData, yData) !== false) messedUpBytes[pixel.chunk].add(pixel.byte);\n              break;\n            case JEWEL_VALUE.TRUE:\n              if (matrix.at(xData, yData) !== true) messedUpBytes[pixel.chunk].add(pixel.byte);\n              break;\n            case JEWEL_VALUE.UNDECIDED:\n              messedUpBytes[pixel.chunk].add(pixel.byte);\n              break;\n            default:\n          }\n        }\n      }\n    }\n    // calculate penalty based on how many messed up bytes\n    let penalty = 0;\n    errorCorrectionCapacity.forEach((capacity, index) => {\n      const leftoverCapacity = capacity - messedUpBytes[index].size * 2;\n      if (leftoverCapacity < 0) {\n        penalty += this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY;\n      } else if (leftoverCapacity < this.constructor.PENALTY_FOR_LEFTOVER_CAPACITY.length) {\n        penalty += this.constructor.PENALTY_FOR_LEFTOVER_CAPACITY[leftoverCapacity];\n      }\n    });\n    // add additional penalties on trying to have the corners be filled\n    if (!matrix.at(start, start)) penalty++;\n    if (!matrix.at(start, start + 8)) penalty++;\n    if (!matrix.at(start + 8, start)) penalty++;\n    if (!matrix.at(start + 8, start + 8)) penalty++;\n    return penalty;\n  }\n\n  get svgForegroundStyle() {\n    const fromOptions = this.code.options.styleForeground;\n    if (fromOptions !== undefined) return fromOptions;\n    if (this.inverted) {\n      return this.isMonochrome ? 'fill=\"white\"' : 'fill=\"white\" fill-opacity=\"0.95\"';\n    } else {\n      return this.isMonochrome ? 'fill=\"black\"' : 'fill=\"black\" fill-opacity=\"0.9\"';\n    }\n  }\n\n  get svgLogoStyle() {\n    if (this.isMonochrome) return this.svgForegroundStyle;\n    const fromOptions = this.code.options.styleLogo;\n    if (fromOptions !== undefined) return fromOptions;\n    return 'fill=\"#006AFF\"';\n  }\n\n  svgLogo(style) {\n    return `<path id=\"s\" ${style} fill-rule=\"evenodd\" d=\"M 0 9.8 C 0 3.92 3.92 0 9.8 0 L 46.2 0 C 52.08 0 56 3.92 56 9.8 L 56 46.2 C 56 52.08 52.08 56 46.2 56 L 9.8 56 C 3.92 56 0 52.08 0 46.2 Z M 11.2 14 C 11.2 12.32 12.32 11.2 14 11.2 L 42 11.2 C 43.68 11.2 44.8 12.32 44.8 14 L 44.8 42 C 44.8 43.68 43.68 44.8 42 44.8 L 14 44.8 C 12.32 44.8 11.2 43.68 11.2 42 Z M 21 22.4 C 21 21.7 21.7 21 22.4 21 L 33.6 21 C 34.3 21 35 21.7 35 22.4 L 35 33.6 C 35 34.3 34.3 35 33.6 35 L 22.4 35 C 21.7 35 21 34.3 21 33.6 Z\" />`;\n  }\n\n  get svgOffset() {\n    return this.hasBorder ? 48 : 0;\n  }\n}\n\nmodule.exports = { MarketQRCodeEncoder, JEWEL_VALUE };\n","const ALIGNMENT_PATTERN_LOCATIONS = Object.freeze([\n  [],\n  [4, 16],\n  [4, 20],\n  [4, 24],\n  [4, 28],\n  [4, 32],\n  [4, 20, 36],\n  [4, 22, 40],\n  [4, 24, 44],\n  [4, 26, 48],\n  [4, 28, 52],\n  [4, 30, 56],\n  [4, 32, 60],\n  [4, 24, 44, 64],\n  [4, 24, 46, 68],\n  [4, 24, 48, 72],\n  [4, 28, 52, 76],\n  [4, 28, 54, 80],\n  [4, 28, 56, 84],\n  [4, 32, 60, 88],\n  [4, 26, 48, 70, 92],\n  [4, 24, 48, 72, 96],\n  [4, 28, 52, 76, 100],\n  [4, 26, 52, 78, 104],\n  [4, 30, 56, 82, 108],\n  [4, 28, 56, 84, 112],\n  [4, 32, 60, 88, 116],\n  [4, 24, 48, 72, 96, 120],\n  [4, 28, 52, 76, 100, 124],\n  [4, 24, 50, 76, 102, 128],\n  [4, 28, 54, 80, 106, 132],\n  [4, 32, 58, 84, 110, 136],\n  [4, 28, 56, 84, 112, 140],\n  [4, 32, 60, 88, 116, 144],\n  [4, 28, 52, 76, 100, 124, 148],\n  [4, 22, 48, 74, 100, 126, 152],\n  [4, 26, 52, 78, 104, 130, 156],\n  [4, 30, 56, 82, 108, 134, 160],\n  [4, 24, 52, 80, 108, 136, 164],\n  [4, 28, 56, 84, 112, 140, 168],\n]);\nconst DATA_CAPACITY = Object.freeze({\n  LOW: [\n    19, 34, 55, 80, 108, 136, 156, 194, 232, 274, 324, 370, 428, 461, 523, 589, 647, 721, 795, 861, 932, 1006, 1094,\n    1174, 1276, 1370, 1468, 1531, 1631, 1735, 1843, 1955, 2071, 2191, 2306, 2434, 2566, 2702, 2812, 2956,\n  ],\n  MEDIUM: [\n    16, 28, 44, 64, 86, 108, 124, 154, 182, 216, 254, 290, 334, 365, 415, 453, 507, 563, 627, 669, 714, 782, 860, 914,\n    1000, 1062, 1128, 1193, 1267, 1373, 1455, 1541, 1631, 1725, 1812, 1914, 1992, 2102, 2216, 2334,\n  ],\n  QUARTER: [\n    13, 22, 34, 48, 62, 76, 88, 110, 132, 154, 180, 206, 244, 261, 295, 325, 367, 397, 445, 485, 512, 568, 614, 664,\n    718, 754, 808, 871, 911, 985, 1033, 1115, 1171, 1231, 1286, 1354, 1426, 1502, 1582, 1666,\n  ],\n  HIGH: [\n    9, 16, 26, 36, 46, 60, 66, 86, 100, 122, 140, 158, 180, 197, 223, 253, 283, 313, 341, 385, 406, 442, 464, 514, 538,\n    596, 628, 661, 701, 745, 793, 845, 901, 961, 986, 1054, 1096, 1142, 1222, 1276,\n  ],\n});\nconst ENCODING = Object.freeze({\n  NUMERIC: 'NUMERIC',\n  ALPHANUMERIC: 'ALPHANUMERIC',\n  KANJI: 'KANJI',\n  BYTE: 'BYTE',\n});\nconst ERROR_CORRECTION = Object.freeze({\n  LOW: 'LOW',\n  MEDIUM: 'MEDIUM',\n  QUARTER: 'QUARTER',\n  HIGH: 'HIGH',\n});\n\n/**\n * CLASS BitWriter\n * A internal class for writing bits to an Uint8Array for QRCode encoding.\n */\nclass BitWriter {\n  constructor(length) {\n    this.length = length;\n    this.content = new Uint8Array(length);\n    this.byte = 0;\n    this.bit = 0;\n  }\n\n  get bitsLeft() {\n    return (this.length - this.byte) * 8 - this.bit;\n  }\n\n  get bytesLeft() {\n    return this.bit === 0 ? this.length - this.byte : this.length - this.byte - 1;\n  }\n\n  codeForAlphaNUMERICal(char) {\n    const lookIn = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\n    for (let index = 0; index < lookIn.length; index++) {\n      if (lookIn[index] === char) return index;\n    }\n  }\n\n  completeByte() {\n    if (this.bit === 0) return;\n    this.bit = 0;\n    this.byte++;\n  }\n\n  nextPutAlphaNUMERIC(string) {\n    // Two ALPHANUMERICal characters at a time.\n    for (let last = 1; last < string.length; last += 2) {\n      this.nextPutBits(\n        this.codeForAlphaNUMERICal(string[last - 1]) * 45 + this.codeForAlphaNUMERICal(string[last]),\n        11\n      );\n    }\n    if (string.length % 2 === 1) {\n      this.nextPutBits(this.codeForAlphaNUMERICal(string[string.length - 1]), 6);\n    }\n  }\n\n  nextPutBits(int, bits) {\n    if (bits === 0) return;\n    let amount = this.bit + bits;\n    if (amount < 8) {\n      this.content[this.byte] = this.content[this.byte] | (int << (8 - amount));\n      this.bit += bits;\n    } else if (amount === 8) {\n      this.content[this.byte] = this.content[this.byte] | int;\n      this.byte++;\n      this.bit = 0;\n    } else {\n      amount -= 8;\n      let shift = int >> amount;\n      this.content[this.byte] = this.content[this.byte] | shift;\n      shift = int - (shift << amount);\n      this.byte++;\n      this.bit = 0;\n      this.nextPutBits(shift, amount);\n    }\n  }\n\n  nextPutByte(byteArray) {\n    byteArray.forEach((byte) => {\n      this.nextPutBits(byte, 8);\n    });\n  }\n\n  nextPutCompleteByte(byte) {\n    this.completeByte();\n    this.content[this.byte] = byte;\n    this.byte++;\n  }\n\n  nextPutKanji(string) {\n    for (let index = 0; index < string.length; index++) {\n      let charCode = string.charCodeAt(index);\n      if (charCode <= 0x9ffc) {\n        // in the range 0x8140 to 0x9FFC\n        charCode -= 0x8140;\n      } else {\n        // in the range 0xE040 to 0xEBBF\n        charCode -= 0xc140;\n      }\n      let lByte = charCode % 256;\n      let bByte = (charCode - lByte) / 256;\n      this.nextPutBits(bByte * 0xc0 + lByte, 13);\n    }\n  }\n\n  nextPutNumeric(string) {\n    const asNumbers = [];\n    for (let index = 0; index < string.length; index++) {\n      asNumbers.push(string.charCodeAt(index) - 48);\n    }\n    // Three NUMERICal characters at a time.\n    for (let last = 2; last < string.length; last += 3) {\n      this.nextPutBits(asNumbers[last - 2] * 100 + asNumbers[last - 1] * 10 + asNumbers[last], 10);\n    }\n    switch (string.length % 3) {\n      case 0:\n        break;\n      case 1:\n        this.nextPutBits(asNumbers[string.length - 1], 4);\n        break;\n      case 2:\n        this.nextPutBits(asNumbers[string.length - 2] * 10 + asNumbers[string.length - 1], 7);\n        break;\n    }\n  }\n}\n\n/**\n * CLASS Matrix\n * A class for manipulating a 2D array.\n */\nclass Matrix {\n  static withAll(width, height, fill) {\n    const content = [];\n    if (fill === undefined) {\n      for (let row = 0; row < height; row++) {\n        content.push(new Array(width));\n      }\n    } else {\n      for (let row = 0; row < height; row++) {\n        content.push(new Array(width).fill(fill));\n      }\n    }\n    return new this(content);\n  }\n\n  constructor(content) {\n    this.content = content;\n  }\n\n  at(x, y) {\n    return this.content[y][x];\n  }\n\n  copy() {\n    return new this.constructor(this.content.map((row) => row.slice()));\n  }\n\n  fill(x, y, width, height, value) {\n    for (let top = y; top < y + height; top++) {\n      let row = this.content[top];\n      for (let col = x; col < x + width; col++) {\n        row[col] = value;\n      }\n    }\n  }\n\n  get height() {\n    return this.content.length;\n  }\n\n  put(x, y, value) {\n    return (this.content[y][x] = value);\n  }\n\n  get width() {\n    return this.content[0].length;\n  }\n}\n\n/**\n * CLASS BooleanMatrix\n * A class for keeping and manipulating 2D boolean data.\n */\nclass BooleanMatrix extends Matrix {\n  static forIntegerArray(width, height, array) {\n    const content = [];\n    for (let y = 0; y < height; y++) {\n      let rowInteger = array[y];\n      const row = [];\n      for (let x = width - 1; x >= 0; x--) {\n        if (rowInteger % 2 === 1) {\n          row.unshift(true);\n          rowInteger--;\n        } else {\n          row.unshift(false);\n        }\n        rowInteger = rowInteger / 2;\n      }\n      content.push(row);\n    }\n    return new this(content);\n  }\n\n  asIntegerArray() {\n    return this.content.map((row) => {\n      let integer = 0;\n      row.forEach((bool) => {\n        integer *= 2;\n        if (bool === true) integer++;\n      });\n      return integer;\n    });\n  }\n\n  bitAt(x, y) {\n    return this.at(x, y) ? 1 : 0;\n  }\n\n  fillAlignmentPatternAt(x, y) {\n    for (let size = 0; size < 4; size++) {\n      this.content[y][x + size] = true;\n      this.content[y + 4][x + size + 1] = true;\n      this.content[y + 1 + size][x] = true;\n      this.content[y + size][x + 4] = true;\n    }\n    this.content[y + 2][x + 2] = true;\n  }\n\n  fillFinderPatternAt(x, y) {\n    for (let size = 0; size < 6; size++) {\n      this.content[y][x + size] = true;\n      this.content[y + 6][x + size + 1] = true;\n      this.content[y + 1 + size][x] = true;\n      this.content[y + size][x + 6] = true;\n    }\n    this.fill(x + 2, y + 2, 3, 3, true);\n  }\n}\n\n/**\n * CLASS QRCodeMap\n * An instance holds the mapping for a QR code at a version and level of error correction.\n * The instances are cached so they can be reused. The map has the responsibility for adding\n * error correction to the codewords, positioning those codewords as data into a boolean\n * matrix, and masking that matrix. Instances are cached so this can be used as a service.\n */\nclass QRCodeMap extends Matrix {\n  // CHUNKING\n  static chunkingAt(errorCorrection, version) {\n    return {\n      LOW: [\n        [[1, 26, 19]],\n        [[1, 44, 34]],\n        [[1, 70, 55]],\n        [[1, 100, 80]],\n        [[1, 134, 108]],\n        [[2, 86, 68]],\n        [[2, 98, 78]],\n        [[2, 121, 97]],\n        [[2, 146, 116]],\n        [\n          [2, 86, 68],\n          [2, 87, 69],\n        ],\n        [[4, 101, 81]],\n        [\n          [2, 116, 92],\n          [2, 117, 93],\n        ],\n        [[4, 133, 107]],\n        [\n          [3, 145, 115],\n          [1, 146, 116],\n        ],\n        [\n          [5, 109, 87],\n          [1, 110, 88],\n        ],\n        [\n          [5, 122, 98],\n          [1, 123, 99],\n        ],\n        [\n          [1, 135, 107],\n          [5, 136, 108],\n        ],\n        [\n          [5, 150, 120],\n          [1, 151, 121],\n        ],\n        [\n          [3, 141, 113],\n          [4, 142, 114],\n        ],\n        [\n          [3, 135, 107],\n          [5, 136, 108],\n        ],\n        [\n          [4, 144, 116],\n          [4, 145, 117],\n        ],\n        [\n          [2, 139, 111],\n          [7, 140, 112],\n        ],\n        [\n          [4, 151, 121],\n          [5, 152, 122],\n        ],\n        [\n          [6, 147, 117],\n          [4, 148, 118],\n        ],\n        [\n          [8, 132, 106],\n          [4, 133, 107],\n        ],\n        [\n          [10, 142, 114],\n          [2, 143, 115],\n        ],\n        [\n          [8, 152, 122],\n          [4, 153, 123],\n        ],\n        [\n          [3, 147, 117],\n          [10, 148, 118],\n        ],\n        [\n          [7, 146, 116],\n          [7, 147, 117],\n        ],\n        [\n          [5, 145, 115],\n          [10, 146, 116],\n        ],\n        [\n          [13, 145, 115],\n          [3, 146, 116],\n        ],\n        [[17, 145, 115]],\n        [\n          [17, 145, 115],\n          [1, 146, 116],\n        ],\n        [\n          [13, 145, 115],\n          [6, 146, 116],\n        ],\n        [\n          [12, 151, 121],\n          [7, 152, 122],\n        ],\n        [\n          [6, 151, 121],\n          [14, 152, 122],\n        ],\n        [\n          [17, 152, 122],\n          [4, 153, 123],\n        ],\n        [\n          [4, 152, 122],\n          [18, 153, 123],\n        ],\n        [\n          [20, 147, 117],\n          [4, 148, 118],\n        ],\n        [\n          [19, 148, 118],\n          [6, 149, 119],\n        ],\n      ],\n      HIGH: [\n        [[1, 26, 9]],\n        [[1, 44, 16]],\n        [[2, 35, 13]],\n        [[4, 25, 9]],\n        [\n          [2, 33, 11],\n          [2, 34, 12],\n        ],\n        [[4, 43, 15]],\n        [\n          [4, 39, 13],\n          [1, 40, 14],\n        ],\n        [\n          [4, 40, 14],\n          [2, 41, 15],\n        ],\n        [\n          [4, 36, 12],\n          [4, 37, 13],\n        ],\n        [\n          [6, 43, 15],\n          [2, 44, 16],\n        ],\n        [\n          [3, 36, 12],\n          [8, 37, 13],\n        ],\n        [\n          [7, 42, 14],\n          [4, 43, 15],\n        ],\n        [\n          [12, 33, 11],\n          [4, 34, 12],\n        ],\n        [\n          [11, 36, 12],\n          [5, 37, 13],\n        ],\n        [\n          [11, 36, 12],\n          [7, 37, 13],\n        ],\n        [\n          [3, 45, 15],\n          [13, 46, 16],\n        ],\n        [\n          [2, 42, 14],\n          [17, 43, 15],\n        ],\n        [\n          [2, 42, 14],\n          [19, 43, 15],\n        ],\n        [\n          [9, 39, 13],\n          [16, 40, 14],\n        ],\n        [\n          [15, 43, 15],\n          [10, 44, 16],\n        ],\n        [\n          [19, 46, 16],\n          [6, 47, 17],\n        ],\n        [[34, 37, 13]],\n        [\n          [16, 45, 15],\n          [14, 46, 16],\n        ],\n        [\n          [30, 46, 16],\n          [2, 47, 17],\n        ],\n        [\n          [22, 45, 15],\n          [13, 46, 16],\n        ],\n        [\n          [33, 46, 16],\n          [4, 47, 17],\n        ],\n        [\n          [12, 45, 15],\n          [28, 46, 16],\n        ],\n        [\n          [11, 45, 15],\n          [31, 46, 16],\n        ],\n        [\n          [19, 45, 15],\n          [26, 46, 16],\n        ],\n        [\n          [23, 45, 15],\n          [25, 46, 16],\n        ],\n        [\n          [23, 45, 15],\n          [28, 46, 16],\n        ],\n        [\n          [19, 45, 15],\n          [35, 46, 16],\n        ],\n        [\n          [11, 45, 15],\n          [46, 46, 16],\n        ],\n        [\n          [59, 46, 16],\n          [1, 47, 17],\n        ],\n        [\n          [22, 45, 15],\n          [41, 46, 16],\n        ],\n        [\n          [2, 45, 15],\n          [64, 46, 16],\n        ],\n        [\n          [24, 45, 15],\n          [46, 46, 16],\n        ],\n        [\n          [42, 45, 15],\n          [32, 46, 16],\n        ],\n        [\n          [10, 45, 15],\n          [67, 46, 16],\n        ],\n        [\n          [20, 45, 15],\n          [61, 46, 16],\n        ],\n      ],\n      MEDIUM: [\n        [[1, 26, 16]],\n        [[1, 44, 28]],\n        [[1, 70, 44]],\n        [[2, 50, 32]],\n        [[2, 67, 43]],\n        [[4, 43, 27]],\n        [[4, 49, 31]],\n        [\n          [2, 60, 38],\n          [2, 61, 39],\n        ],\n        [\n          [3, 58, 36],\n          [2, 59, 37],\n        ],\n        [\n          [4, 69, 43],\n          [1, 70, 44],\n        ],\n        [\n          [1, 80, 50],\n          [4, 81, 51],\n        ],\n        [\n          [6, 58, 36],\n          [2, 59, 37],\n        ],\n        [\n          [8, 59, 37],\n          [1, 60, 38],\n        ],\n        [\n          [4, 64, 40],\n          [5, 65, 41],\n        ],\n        [\n          [5, 65, 41],\n          [5, 66, 42],\n        ],\n        [\n          [7, 73, 45],\n          [3, 74, 46],\n        ],\n        [\n          [10, 74, 46],\n          [1, 75, 47],\n        ],\n        [\n          [9, 69, 43],\n          [4, 70, 44],\n        ],\n        [\n          [3, 70, 44],\n          [11, 71, 45],\n        ],\n        [\n          [3, 67, 41],\n          [13, 68, 42],\n        ],\n        [[17, 68, 42]],\n        [[17, 74, 46]],\n        [\n          [4, 75, 47],\n          [14, 76, 48],\n        ],\n        [\n          [6, 73, 45],\n          [14, 74, 46],\n        ],\n        [\n          [8, 75, 47],\n          [13, 76, 48],\n        ],\n        [\n          [19, 74, 46],\n          [4, 75, 47],\n        ],\n        [\n          [22, 73, 45],\n          [3, 74, 46],\n        ],\n        [\n          [3, 73, 45],\n          [23, 74, 46],\n        ],\n        [\n          [21, 73, 45],\n          [7, 74, 46],\n        ],\n        [\n          [19, 75, 47],\n          [10, 76, 48],\n        ],\n        [\n          [2, 74, 46],\n          [29, 75, 47],\n        ],\n        [\n          [10, 74, 46],\n          [23, 75, 47],\n        ],\n        [\n          [14, 74, 46],\n          [21, 75, 47],\n        ],\n        [\n          [14, 74, 46],\n          [23, 75, 47],\n        ],\n        [\n          [12, 75, 47],\n          [26, 76, 48],\n        ],\n        [\n          [6, 75, 47],\n          [34, 76, 48],\n        ],\n        [\n          [29, 74, 46],\n          [14, 75, 47],\n        ],\n        [\n          [13, 74, 46],\n          [32, 75, 47],\n        ],\n        [\n          [40, 75, 47],\n          [7, 76, 48],\n        ],\n        [\n          [18, 75, 47],\n          [31, 76, 48],\n        ],\n      ],\n      QUARTER: [\n        [[1, 26, 13]],\n        [[1, 44, 22]],\n        [[2, 35, 17]],\n        [[2, 50, 24]],\n        [\n          [2, 33, 15],\n          [2, 34, 16],\n        ],\n        [[4, 43, 19]],\n        [\n          [2, 32, 14],\n          [4, 33, 15],\n        ],\n        [\n          [4, 40, 18],\n          [2, 41, 19],\n        ],\n        [\n          [4, 36, 16],\n          [4, 37, 17],\n        ],\n        [\n          [6, 43, 19],\n          [2, 44, 20],\n        ],\n        [\n          [4, 50, 22],\n          [4, 51, 23],\n        ],\n        [\n          [4, 46, 20],\n          [6, 47, 21],\n        ],\n        [\n          [8, 44, 20],\n          [4, 45, 21],\n        ],\n        [\n          [11, 36, 16],\n          [5, 37, 17],\n        ],\n        [\n          [5, 54, 24],\n          [7, 55, 25],\n        ],\n        [\n          [15, 43, 19],\n          [2, 44, 20],\n        ],\n        [\n          [1, 50, 22],\n          [15, 51, 23],\n        ],\n        [\n          [17, 50, 22],\n          [1, 51, 23],\n        ],\n        [\n          [17, 47, 21],\n          [4, 48, 22],\n        ],\n        [\n          [15, 54, 24],\n          [5, 55, 25],\n        ],\n        [\n          [17, 50, 22],\n          [6, 51, 23],\n        ],\n        [\n          [7, 54, 24],\n          [16, 55, 25],\n        ],\n        [\n          [11, 54, 24],\n          [14, 55, 25],\n        ],\n        [\n          [11, 54, 24],\n          [16, 55, 25],\n        ],\n        [\n          [7, 54, 24],\n          [22, 55, 25],\n        ],\n        [\n          [28, 50, 22],\n          [6, 51, 23],\n        ],\n        [\n          [8, 53, 23],\n          [26, 54, 24],\n        ],\n        [\n          [4, 54, 24],\n          [31, 55, 25],\n        ],\n        [\n          [1, 53, 23],\n          [37, 54, 24],\n        ],\n        [\n          [15, 54, 24],\n          [25, 55, 25],\n        ],\n        [\n          [42, 54, 24],\n          [1, 55, 25],\n        ],\n        [\n          [10, 54, 24],\n          [35, 55, 25],\n        ],\n        [\n          [29, 54, 24],\n          [19, 55, 25],\n        ],\n        [\n          [44, 54, 24],\n          [7, 55, 25],\n        ],\n        [\n          [39, 54, 24],\n          [14, 55, 25],\n        ],\n        [\n          [46, 54, 24],\n          [10, 55, 25],\n        ],\n        [\n          [49, 54, 24],\n          [10, 55, 25],\n        ],\n        [\n          [48, 54, 24],\n          [14, 55, 25],\n        ],\n        [\n          [43, 54, 24],\n          [22, 55, 25],\n        ],\n        [\n          [34, 54, 24],\n          [34, 55, 25],\n        ],\n      ],\n    }[errorCorrection][version - 1];\n  }\n\n  // GALOIS FIELD POLYNOMIALS\n  static fromGF256Alpha(index) {\n    return [\n      1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38, 76, 152, 45, 90, 180, 117, 234, 201, 143, 3, 6,\n      12, 24, 48, 96, 192, 157, 39, 78, 156, 37, 74, 148, 53, 106, 212, 181, 119, 238, 193, 159, 35, 70, 140, 5, 10, 20,\n      40, 80, 160, 93, 186, 105, 210, 185, 111, 222, 161, 95, 190, 97, 194, 153, 47, 94, 188, 101, 202, 137, 15, 30, 60,\n      120, 240, 253, 231, 211, 187, 107, 214, 177, 127, 254, 225, 223, 163, 91, 182, 113, 226, 217, 175, 67, 134, 17,\n      34, 68, 136, 13, 26, 52, 104, 208, 189, 103, 206, 129, 31, 62, 124, 248, 237, 199, 147, 59, 118, 236, 197, 151,\n      51, 102, 204, 133, 23, 46, 92, 184, 109, 218, 169, 79, 158, 33, 66, 132, 21, 42, 84, 168, 77, 154, 41, 82, 164,\n      85, 170, 73, 146, 57, 114, 228, 213, 183, 115, 230, 209, 191, 99, 198, 145, 63, 126, 252, 229, 215, 179, 123, 246,\n      241, 255, 227, 219, 171, 75, 150, 49, 98, 196, 149, 55, 110, 220, 165, 87, 174, 65, 130, 25, 50, 100, 200, 141, 7,\n      14, 28, 56, 112, 224, 221, 167, 83, 166, 81, 162, 89, 178, 121, 242, 249, 239, 195, 155, 43, 86, 172, 69, 138, 9,\n      18, 36, 72, 144, 61, 122, 244, 245, 247, 243, 251, 235, 203, 139, 11, 22, 44, 88, 176, 125, 250, 233, 207, 131,\n      27, 54, 108, 216, 173, 71, 142,\n    ][index];\n  }\n\n  static polynomial(size) {\n    // cache the polynomials\n    if (this.polynomials.length >= size) {\n      return this.polynomials[size - 1];\n    }\n    let polynomial = this.polynomials[this.polynomials.length - 1];\n    for (let multiplier = this.polynomials.length; multiplier < size; multiplier++) {\n      let factor = new Uint8Array(2);\n      factor[1] = multiplier;\n      polynomial = this.product(polynomial, factor);\n      this.polynomials.push(polynomial);\n    }\n    return polynomial;\n  }\n\n  static product(first, second) {\n    let product = new Uint8Array(first.length + second.length - 1);\n    first.forEach((firstValue, firstIndex) => {\n      second.forEach((secondValue, secondIndex) => {\n        let productIndex = firstIndex + secondIndex;\n        product[productIndex] = this.fromGF256Alpha((firstValue + secondValue) % 255) ^ product[productIndex];\n      });\n    });\n    return product.map((entry) => this.toGF256Alpha(entry));\n  }\n\n  static quotient(dividend, divisor) {\n    let quotient = new Uint8Array(dividend.length + divisor.length - 1);\n    for (let index = 0; index < dividend.length; index++) quotient[index] = dividend[index];\n    for (let dividendIndex = 0; dividendIndex < dividend.length; dividendIndex++) {\n      let startEntry = quotient[dividendIndex];\n      if (startEntry !== 0) {\n        startEntry = this.toGF256Alpha(startEntry);\n        divisor.forEach((alpha, divisorIndex) => {\n          let quotientIndex = dividendIndex + divisorIndex;\n          quotient[quotientIndex] = this.fromGF256Alpha((startEntry + alpha) % 255) ^ quotient[quotientIndex];\n        });\n      }\n    }\n    return quotient.slice(quotient.length - divisor.length + 1);\n  }\n\n  static toGF256Alpha(index) {\n    return [\n      0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141, 239, 129, 28, 193, 105,\n      248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, 18, 130, 69, 29, 181, 194, 125,\n      106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166, 6, 191, 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16,\n      145, 34, 136, 54, 208, 148, 206, 143, 150, 219, 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72,\n      126, 110, 107, 58, 40, 84, 250, 133, 186, 61, 202, 94, 155, 159, 10, 21, 121, 43, 78, 212, 229, 172, 115, 243,\n      167, 87, 7, 112, 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197, 254, 24, 227, 165, 153, 119, 38, 184,\n      180, 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63, 209, 91, 149, 188, 207, 205, 144, 135, 151, 178, 220, 252,\n      190, 97, 242, 86, 211, 171, 20, 42, 93, 158, 132, 60, 57, 83, 71, 109, 65, 162, 31, 45, 67, 216, 183, 123, 164,\n      118, 196, 23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, 170, 251, 96, 134, 177, 187, 204, 62, 90,\n      203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, 122, 117, 44, 215, 79, 174, 213, 233, 230, 231, 173, 232,\n      116, 214, 244, 234, 168, 80, 88, 175,\n    ][index];\n  }\n\n  // MASKS\n  static get masks() {\n    if (this.maskArray.length === 0) {\n      [\n        (x, y) => (x + y) % 2 === 0,\n        (x, y) => y % 2 === 0,\n        (x) => x % 3 === 0,\n        (x, y) => (x + y) % 3 === 0,\n        (x, y) => ((y - (y % 2)) / 2 + (x - (x % 3)) / 3) % 2 === 0,\n        (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,\n        (x, y) => (x * y + ((x * y) % 3)) % 2 === 0,\n        (x, y) => (((x * y) % 3) + x + y) % 2 === 0,\n      ].forEach((generator) => {\n        const content = [];\n        for (let y = 0; y < 12; y++) {\n          const row = [];\n          for (let x = 0; x < 12; x++) {\n            row.push(generator(x, y));\n          }\n          content.push(row);\n        }\n        this.maskArray.push(new BooleanMatrix(content));\n      });\n    }\n    return this.maskArray;\n  }\n\n  // INSTANCE CREATION\n  static for(errorCorrection, version) {\n    // cache the instances\n    let instance = this.instances[errorCorrection + version];\n    if (instance === undefined) {\n      const dimension = version * 4 + 17;\n      const content = [];\n      for (let row = 0; row < dimension; row++) {\n        content.push(new Array(dimension).fill(this.AVAILABLE));\n      }\n      instance = new this(content, errorCorrection, version);\n      this.instances[errorCorrection + version] = instance;\n    }\n    return instance;\n  }\n\n  // INSTANCE\n  // chunking\n  // chunkingOffsets          where each chunk can be found in the data\n  // errorCorrection\n  // errorCorrectionCapacity  the number of codewords that can be messed up\n  //                          (1x for erasure, 2x for miscoding) per chunk\n  // version\n  constructor(content, errorCorrection, version) {\n    super(content);\n    this.errorCorrection = errorCorrection;\n    this.version = version;\n    this.initialize();\n  }\n\n  initialize() {\n    // calculate misdecodeProtectionCodewords\n    let misdecodeProtectionCodewords = 0;\n    if (this.errorCorrection === ERROR_CORRECTION.LOW) {\n      if (this.version === 1) {\n        misdecodeProtectionCodewords = 3;\n      } else if (this.version === 2) {\n        misdecodeProtectionCodewords = 2;\n      } else if (this.version === 3) {\n        misdecodeProtectionCodewords = 1;\n      }\n    } else if (this.version === 1) {\n      if (this.errorCorrection === ERROR_CORRECTION.MEDIUM) {\n        misdecodeProtectionCodewords = 2;\n      } else {\n        misdecodeProtectionCodewords = 1;\n      }\n    }\n    // get data and errorCorrection\n    this.chunking = this.constructor.chunkingAt(this.errorCorrection, this.version);\n    const data = [];\n    const errorCorrection = [];\n    let dataWidth = 0;\n    let errorCorrectionWidth = 0;\n    const errorCorrectionCapacity = [];\n    const chunkingOffsets = [];\n    let chunkingOffset = 0;\n    let chunk = 0;\n    this.chunking.forEach((arr) => {\n      for (let i = 0; i < arr[0]; i++) {\n        let byte = 0;\n        chunkingOffsets.push(chunkingOffset * 8);\n        chunkingOffset += arr[1];\n        const dataI = [];\n        const numberOfDataCodewords = arr[2];\n        for (let j = 0; j < numberOfDataCodewords; j++) {\n          dataI.push({ chunk, byte });\n          byte++;\n        }\n        data.push(dataI);\n        dataWidth = Math.max(dataWidth, dataI.length);\n        const errorCorrectionI = [];\n        const numberOfErrorCorrectionCodewords = arr[1] - numberOfDataCodewords;\n        for (let j = 0; j < numberOfErrorCorrectionCodewords; j++) {\n          errorCorrectionI.push({ chunk, byte });\n          byte++;\n        }\n        errorCorrection.push(errorCorrectionI);\n        errorCorrectionWidth = Math.max(errorCorrectionWidth, errorCorrectionI.length);\n        errorCorrectionCapacity.push(numberOfErrorCorrectionCodewords - misdecodeProtectionCodewords);\n        chunk++;\n      }\n    });\n    this.chunkingOffsets = chunkingOffsets;\n    this.errorCorrectionCapacity = errorCorrectionCapacity;\n    // combine the data and errorCorrection\n    const combined = [];\n    for (let column = 0; column < dataWidth; column++) {\n      data.forEach((row) => {\n        if (row.length > column) combined.push(row[column]);\n      });\n    }\n    for (let column = 0; column < errorCorrectionWidth; column++) {\n      errorCorrection.forEach((row) => {\n        if (row.length > column) combined.push(row[column]);\n      });\n    }\n    // create the pixels\n    const pixels = [];\n    combined.forEach((byteAndChunk) => {\n      const byte = byteAndChunk.byte;\n      const chunk = byteAndChunk.chunk;\n      for (let bit = 0; bit < 8; bit++) {\n        pixels.push({ chunk, byte, bit });\n      }\n    });\n    // finder patterns & format information\n    const dimension = this.width;\n    this.fill(0, 0, 9, 9, this.constructor.AVOID);\n    this.fill(dimension - 8, 0, 8, 9, this.constructor.AVOID);\n    this.fill(0, dimension - 8, 9, 8, this.constructor.AVOID);\n    // version information\n    if (this.version > 6) {\n      this.fill(dimension - 11, 0, 3, 6, this.constructor.AVOID);\n      this.fill(0, dimension - 11, 6, 3, this.constructor.AVOID);\n    }\n    // timing patterns\n    this.fill(9, 6, dimension - 17, 1, this.constructor.AVOID);\n    this.fill(6, 9, 1, dimension - 17, this.constructor.AVOID);\n    // alignment patterns\n    for (const position of QRCode.alignmentPatternPositions(this.version)) {\n      this.fill(position.x, position.y, 5, 5, this.constructor.AVOID);\n    }\n    // fill the pixels\n    let x = dimension - 2;\n    let y = dimension;\n    pixels.forEach((pixel) => {\n      // get next position\n      do {\n        let shift;\n        let halfOdd = ((x - (x % 2)) / 2) % 2 === 1;\n        if (x === 6) {\n          shift = false;\n          x = 5;\n        } else if (x < 6) {\n          shift = x % 2 === 1;\n        } else {\n          shift = x % 2 === 0;\n        }\n        if (shift) {\n          x--;\n        } else if (halfOdd) {\n          if (y === 0) {\n            x--;\n          } else {\n            x++;\n            y--;\n          }\n        } else {\n          if (y + 1 === dimension) {\n            x--;\n          } else {\n            x++;\n            y++;\n          }\n        }\n      } while (this.at(x, y) === this.constructor.AVOID && x > -1);\n      // place the bit\n      this.put(x, y, pixel);\n    });\n  }\n\n  codewordsFor(codewords) {\n    let bytePosition = 0;\n    const withErrorCorrection = [];\n    this.chunking.forEach((arr) => {\n      for (let i = 0; i < arr[0]; i++) {\n        const data = codewords.slice(bytePosition, bytePosition + arr[2]);\n        bytePosition += arr[2];\n        const errorCorrection = this.constructor.quotient(data, this.constructor.polynomial(arr[1] - arr[2]));\n        withErrorCorrection.push(...data);\n        withErrorCorrection.push(...errorCorrection);\n      }\n    });\n    return withErrorCorrection;\n  }\n\n  dataFor(codewords) {\n    // convert to bits\n    const bits = [];\n    codewords.forEach((byte) => {\n      let remainder = byte;\n      [128, 64, 32, 16, 8, 4, 2, 1].forEach((subtract) => {\n        if (remainder >= subtract) {\n          bits.push(true);\n          remainder -= subtract;\n        } else {\n          bits.push(false);\n        }\n      });\n    });\n    this.bits = bits;\n    // place bits in matrix\n    const dimension = this.content.length;\n    const encodedData = BooleanMatrix.withAll(dimension, dimension, false);\n    for (let y = 0; y < dimension; y++) {\n      for (let x = 0; x < dimension; x++) {\n        const pixel = this.at(x, y);\n        if (this.isDataPixel(pixel)) {\n          encodedData.put(x, y, bits[this.chunkingOffsets[pixel.chunk] + pixel.byte * 8 + pixel.bit]);\n        }\n      }\n    }\n    return encodedData;\n  }\n\n  isDataPixel(pixel) {\n    return pixel !== this.constructor.AVOID && pixel !== this.constructor.AVAILABLE;\n  }\n\n  maskedDataFor(data) {\n    const dimension = data.height;\n    return this.constructor.masks.map((mask) => {\n      const masked = BooleanMatrix.withAll(dimension, dimension);\n      for (let x = 0; x < dimension; x++) {\n        for (let y = 0; y < dimension; y++) {\n          let value = data.at(x, y);\n          if (this.at(x, y) !== QRCodeMap.AVOID) {\n            if (mask.at(x % 12, y % 12)) value = !value;\n          }\n          masked.put(x, y, value);\n        }\n      }\n      return masked;\n    });\n  }\n\n  // TESTING\n  asIntegerArray() {\n    return this.content.map((row) => {\n      let integer = 0;\n      row.forEach((pixel) => {\n        integer *= 2;\n        if (this.isDataPixel(pixel)) integer++;\n      });\n      return integer;\n    });\n  }\n}\n// static variables\nQRCodeMap.AVAILABLE = 'available';\nQRCodeMap.AVOID = 'avoid';\nQRCodeMap.GENERATOR_FUNCTIONS = [\n  (x, y) => (x + y) % 2 === 0,\n  (x, y) => y % 2 === 0,\n  (x) => x % 3 === 0,\n  (x, y) => (x + y) % 3 === 0,\n  (x, y) => ((y - (y % 2)) / 2 + (x - (x % 3)) / 3) % 2 === 0,\n  (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,\n  (x, y) => (x * y + ((x * y) % 3)) % 2 === 0,\n  (x, y) => (((x * y) % 3) + x + y) % 2 === 0,\n];\nQRCodeMap.instances = {};\nQRCodeMap.maskArray = [];\nQRCodeMap.polynomials = [new Uint8Array(2)];\n\n/**\n * CLASS QRCode\n * This represents an encoded QRCode based on the following:\n *   content         the string to encode\n *   options         an object with the options, such as the ECI integer and errorCorrection\n * An encoder generates the following:\n *   data            the BooleanMatrix of mapped data, along with the format and version information\n *   eci             (see above)\n *   encoding        'NUMERIC' | 'ALPHANUMERIC' | 'KANJI' | BYTE\n *   errorCorrection (see above)\n *   version         the QRCode version from 1 to 40.\n * It also provides pattern positions and derivative information.\n */\nclass QRCode {\n  static alignmentPatternPositions(version) {\n    let locations = ALIGNMENT_PATTERN_LOCATIONS[version - 1];\n    if (locations.length === 0) return [];\n    const positions = [];\n    // top and left\n    const first = locations[0];\n    locations.slice(1, locations.length - 1).forEach((location) => {\n      positions.push({\n        x: first,\n        y: location,\n      });\n      positions.push({\n        x: location,\n        y: first,\n      });\n    });\n    // others\n    locations = locations.slice(1);\n    locations.forEach((y) => {\n      locations.forEach((x) => {\n        positions.push({ x, y });\n      });\n    });\n    return positions;\n  }\n\n  static finderPatternPositions(version) {\n    const far = 4 * version + 10;\n    return [\n      { x: 0, y: 0 },\n      { x: 0, y: far },\n      { x: far, y: 0 },\n    ];\n  }\n\n  static timingPatternPositions(version) {\n    const positions = [];\n    const far = 4 * version + 9;\n    for (let position = 8; position < far; position += 2) {\n      positions.push({ x: position, y: 6 });\n      positions.push({ x: 6, y: position });\n    }\n    return positions;\n  }\n\n  constructor(content, options) {\n    if (content === undefined || content.length === 0) throw 'no content to encode';\n    this.content = content;\n    this.options = options || {};\n    if ('eci' in this.options) this.eci = this.options.eci;\n    if ('errorCorrection' in this.options) this.errorCorrection = this.options.errorCorrection;\n  }\n\n  get alignmentPatternPositions() {\n    return this.constructor.alignmentPatternPositions(this.version);\n  }\n\n  get dimension() {\n    return this.version * 4 + 17;\n  }\n\n  get encoding() {\n    return this._encoding;\n  }\n\n  set encoding(string) {\n    this._encoding = string;\n  }\n\n  get finderPatternPositions() {\n    return this.constructor.finderPatternPositions(this.version);\n  }\n\n  get hasEci() {\n    return this.eci !== undefined && this.eci !== 3;\n  }\n\n  get hasAlignmentPattern() {\n    return this.version > 1;\n  }\n\n  get timingPatternPositions() {\n    return this.constructor.timingPatternPositions(this.version);\n  }\n}\n// static variables\nQRCode.MAX_VERSION = 40;\n\n/**\n * CLASS QRCodeEncoder\n * This class does the encoding work for the QRCode class, hiding the algorithmic details and\n * intermediate step data. It populates the QRCode with encoding, version, errorCorrection, and data.\n * It is only exported to be used in tests.\n */\nclass QRCodeEncoder {\n  constructor(contents, options) {\n    this.code = new QRCode(contents, options);\n    this.encode();\n  }\n\n  encode() {\n    this.initializeEncoding();\n    this.initializeVersion();\n    this.initializeCodewords();\n    this.initializeMapping();\n    this.initializeMasking();\n  }\n\n  initializeCodewords() {\n    const writer = new BitWriter(DATA_CAPACITY[this.code.errorCorrection][this.code.version - 1]);\n    switch (this.code.encoding) {\n      case ENCODING.NUMERIC:\n        // mode\n        writer.nextPutBits(1, 4);\n        // number of bits\n        if (this.code.version < 10) {\n          writer.nextPutBits(this.length, 10);\n        } else if (this.code.version < 27) {\n          writer.nextPutBits(this.length, 12);\n        } else {\n          writer.nextPutBits(this.length, 14);\n        }\n        // content\n        writer.nextPutNumeric(this.code.content);\n        break;\n      case ENCODING.ALPHANUMERIC:\n        // mode\n        writer.nextPutBits(2, 4);\n        // number of bits\n        if (this.code.version < 10) {\n          writer.nextPutBits(this.length, 9);\n        } else if (this.code.version < 27) {\n          writer.nextPutBits(this.length, 11);\n        } else {\n          writer.nextPutBits(this.length, 13);\n        }\n        // content\n        writer.nextPutAlphaNUMERIC(this.code.content);\n        break;\n      case ENCODING.KANJI:\n        // mode\n        writer.nextPutBits(8, 8);\n        // number of bits\n        if (this.code.version < 10) {\n          writer.nextPutBits(this.length, 8);\n        } else if (this.code.version < 27) {\n          writer.nextPutBits(this.length, 10);\n        } else {\n          writer.nextPutBits(this.length, 12);\n        }\n        // content\n        writer.nextPutKanji(this.code.content);\n        break;\n      case ENCODING.BYTE:\n        if (this.code.hasEci) {\n          // specife ECI mode\n          writer.nextPutBits(7, 4);\n          // Add the ECI assignment number\n          if (this.code.eci < 128) {\n            writer.nextPutBits(0, 1);\n            writer.nextPutBits(this.code.eci, 7);\n          } else if (this.code.eci < 16384) {\n            writer.nextPutBits(2, 2);\n            writer.nextPutBits(this.code.eci, 14);\n          } else {\n            writer.nextPutBits(6, 3);\n            writer.nextPutBits(this.code.eci, 21);\n          }\n        }\n        // mode\n        writer.nextPutBits(4, 4);\n        // number of bits\n        if (this.code.version < 10) {\n          writer.nextPutBits(this.length, 8);\n        } else {\n          writer.nextPutBits(this.length, 16);\n        }\n        // content\n        writer.nextPutByte(this.bytes);\n        break;\n    }\n    // Terminate the sequence / Skip to next byte for error correction\n    if (writer.bitsLeft > 3) writer.nextPutBits(0, 4);\n    // Add error correction sequence, alternating between 11101100 and 00010001\n    const bytesLeft = writer.bytesLeft;\n    for (let index = 0; index < bytesLeft; index++) {\n      writer.nextPutCompleteByte(index % 2 === 0 ? 236 : 17);\n    }\n    this.codewords = writer.content;\n  }\n\n  initializeEncoding() {\n    if (this.code.hasEci) {\n      this.code.encoding = ENCODING.BYTE;\n      if (this.code.eci === 3) {\n        // jis\n        this.length = this.code.content.length;\n        this.bytes = [];\n        for (let i = 0; i < length; i++) {\n          this.bytes.push(this.code.content.charCodeAt(i) % 128);\n        }\n      } else if (this.code.eci === 25) {\n        // utf-16be\n        this.bytes = this.toUtf16Bytes(this.code.content);\n        this.length = this.bytes.length;\n      } else if (this.code.eci === 26) {\n        // utf-8\n        this.bytes = this.toUtf8Bytes(this.code.content);\n        this.length = this.bytes.length;\n      } else {\n        this.length = this.code.content.length;\n        this.bytes = [];\n        for (let i = 0; i < length; i++) {\n          this.bytes.push(this.code.content.charCodeAt(i) % 256);\n        }\n      }\n    } else if (/^\\d*$/.test(this.code.content)) {\n      this.code.encoding = ENCODING.NUMERIC;\n      this.length = this.code.content.length;\n    } else if (/^[A-Z\\d\\dA-Z $%*+-./:]+$/.test(this.code.content)) {\n      this.code.encoding = ENCODING.ALPHANUMERIC;\n      this.length = this.code.content.length;\n    } else if (/^[\\u8140-\\u9ffc\\ue040-\\uebbf]+$/.test(this.code.content)) {\n      this.code.encoding = ENCODING.KANJI;\n      this.length = this.code.content.length;\n    } else {\n      this.code.encoding = ENCODING.BYTE;\n      this.bytes = this.toUtf8Bytes(this.code.content);\n      this.length = this.bytes.length;\n      // use utf-8 encoding if it is needed, jis if that is sufficient\n      this.code.eci = this.length === this.code.content.length ? 3 : 26;\n    }\n  }\n\n  initializeMapping() {\n    this.map = QRCodeMap.for(this.code.errorCorrection, this.code.version);\n    this.mapCodewords = this.map.codewordsFor(this.codewords);\n    this.mapData = this.map.dataFor(this.mapCodewords);\n  }\n\n  initializeMasking() {\n    // Get the masked choices\n    const choices = this.map.maskedDataFor(this.mapData);\n    // Find the one with the lowest penalty\n    let data;\n    let dataIndex;\n    let lowestPenalty = 1000000;\n    choices.forEach((matrix, index) => {\n      const penalty = this.penaltyForMatrix(matrix);\n      if (penalty < lowestPenalty) {\n        lowestPenalty = penalty;\n        data = matrix;\n        dataIndex = index;\n      }\n    });\n    this.lowestPenalty = lowestPenalty;\n    // Generate the format information\n    let format = [1, 0, 3, 2][this.errorCorrections.indexOf(this.code.errorCorrection)];\n    format = (8 * format + dataIndex) * 1024;\n    let errorCorrection = format;\n    for (let i = 14; i >= 10; i--) {\n      if (errorCorrection >= Math.pow(2, i)) {\n        errorCorrection = (Math.pow(2, i - 10) * 1335) ^ errorCorrection;\n      }\n    }\n    format = (format + errorCorrection) ^ 21522;\n    // Place the format information\n    const dimension = this.code.dimension;\n    [\n      [8, 0, dimension - 1, 8],\n      [8, 1, dimension - 2, 8],\n      [8, 2, dimension - 3, 8],\n      [8, 3, dimension - 4, 8],\n      [8, 4, dimension - 5, 8],\n      [8, 5, dimension - 6, 8],\n      [8, 7, dimension - 7, 8],\n      [8, 8, dimension - 8, 8],\n      [7, 8, 8, dimension - 7],\n      [5, 8, 8, dimension - 6],\n      [4, 8, 8, dimension - 5],\n      [3, 8, 8, dimension - 4],\n      [2, 8, 8, dimension - 3],\n      [1, 8, 8, dimension - 2],\n      [0, 8, 8, dimension - 1],\n    ].forEach((arr, index) => {\n      if ((Math.pow(2, index) & format) > 0) {\n        data.put(arr[0], arr[1], true);\n        data.put(arr[2], arr[3], true);\n      }\n    });\n    // Add dark module\n    data.put(8, dimension - 8, true);\n    // Version information\n    if (this.code.version > 6) {\n      // Generate the bitVersion information\n      let bitVersion = this.code.version * 4096;\n      errorCorrection = bitVersion;\n      for (let i = 17; i >= 12; i--) {\n        if (errorCorrection >= Math.pow(2, i)) {\n          errorCorrection = (Math.pow(2, i - 12) * 7973) ^ errorCorrection;\n        }\n      }\n      bitVersion += errorCorrection;\n      // Place the bitVersion information\n      let count = 0;\n      for (let x = 0; x < 6; x++) {\n        for (let y = dimension - 11; y <= dimension - 9; y++) {\n          if ((Math.pow(2, count) & bitVersion) > 0) {\n            data.put(x, y, true);\n            data.put(y, x, true);\n          }\n          count++;\n        }\n      }\n    }\n    // finalize loading of QRCode\n    this.code.data = data;\n  }\n\n  initializeVersion() {\n    if (this.errorCorrections.includes(this.code.errorCorrection)) {\n      // Error correction has already been specified\n      let version = this.versionForLength(this.length, this.code.errorCorrection);\n      if (version > QRCode.MAX_VERSION)\n        throw 'This content is too long to be encoded for the specified error correction.';\n      this.code.version = version;\n    } else {\n      // Choose the error correction that gets the smallest size but the highest error correction\n      let versions = this.errorCorrections.map((errorCorrection) =>\n        this.versionForLength(this.length, errorCorrection)\n      );\n      let version = versions[0];\n      if (version > QRCode.MAX_VERSION) throw 'This string is too long to be encoded.';\n      this.code.version = version;\n      for (let index = 3; index >= 0; index--) {\n        if (versions[index] === version) {\n          this.code.errorCorrection = this.errorCorrections[index];\n          return;\n        }\n      }\n    }\n  }\n\n  capacity(encoding, errorCorrection) {\n    return {\n      NUMERIC: {\n        LOW: [\n          41, 77, 127, 187, 255, 322, 370, 461, 552, 652, 772, 883, 1022, 1101, 1250, 1408, 1548, 1725, 1903, 2061,\n          2232, 2409, 2620, 2812, 3057, 3283, 3517, 3669, 3909, 4158, 4417, 4686, 4965, 5253, 5529, 5836, 6153, 6479,\n          6743, 7089,\n        ],\n        MEDIUM: [\n          34, 63, 101, 149, 202, 255, 293, 365, 432, 513, 604, 691, 796, 871, 991, 1082, 1212, 1346, 1500, 1600, 1708,\n          1872, 2059, 2188, 2395, 2544, 2701, 2857, 3035, 3289, 3486, 3693, 3909, 4134, 4343, 4588, 4775, 5039, 5313,\n          5596,\n        ],\n        QUARTER: [\n          27, 48, 77, 111, 144, 178, 207, 259, 312, 364, 427, 489, 580, 621, 703, 775, 876, 948, 1063, 1159, 1224, 1358,\n          1468, 1588, 1718, 1804, 1933, 2085, 2181, 2358, 2473, 2670, 2805, 2949, 3081, 3244, 3417, 3599, 3791, 3993,\n        ],\n        HIGH: [\n          17, 34, 58, 82, 106, 139, 154, 202, 235, 288, 331, 374, 427, 468, 530, 602, 674, 746, 813, 919, 969, 1056,\n          1108, 1228, 1286, 1425, 1501, 1581, 1677, 1782, 1897, 2022, 2157, 2301, 2361, 2524, 2625, 2735, 2927, 3057,\n        ],\n      },\n      ALPHANUMERIC: {\n        LOW: [\n          25, 47, 77, 114, 154, 195, 224, 279, 335, 395, 468, 535, 619, 667, 758, 854, 938, 1046, 1153, 1249, 1352,\n          1460, 1588, 1704, 1853, 1990, 2132, 2223, 2369, 2520, 2677, 2840, 3009, 3183, 3351, 3537, 3729, 3927, 4087,\n          4296,\n        ],\n        MEDIUM: [\n          20, 38, 61, 90, 122, 154, 178, 221, 262, 311, 366, 419, 483, 528, 600, 656, 734, 816, 909, 970, 1035, 1134,\n          1248, 1326, 1451, 1542, 1637, 1732, 1839, 1994, 2113, 2238, 2369, 2506, 2632, 2780, 2894, 3054, 3220, 3391,\n        ],\n        QUARTER: [\n          16, 29, 47, 67, 87, 108, 125, 157, 189, 221, 259, 296, 352, 376, 426, 470, 531, 574, 644, 702, 742, 823, 890,\n          963, 1041, 1094, 1172, 1263, 1322, 1429, 1499, 1618, 1700, 1787, 1867, 1966, 2071, 2181, 2298, 2420,\n        ],\n        HIGH: [\n          10, 20, 35, 50, 64, 84, 93, 122, 143, 174, 200, 227, 259, 283, 321, 365, 408, 452, 493, 557, 587, 640, 672,\n          744, 779, 864, 910, 958, 1016, 1080, 1150, 1226, 1307, 1394, 1431, 1530, 1591, 1658, 1774, 1852,\n        ],\n      },\n      KANJI: {\n        LOW: [\n          10, 20, 32, 48, 65, 82, 95, 118, 141, 167, 198, 226, 262, 282, 320, 361, 397, 442, 488, 528, 572, 618, 672,\n          721, 784, 842, 902, 940, 1002, 1066, 1132, 1201, 1273, 1347, 1417, 1496, 1577, 1661, 1729, 1817,\n        ],\n        MEDIUM: [\n          8, 16, 26, 38, 52, 65, 75, 93, 111, 131, 155, 177, 204, 223, 254, 277, 310, 345, 384, 410, 438, 480, 528, 561,\n          614, 652, 692, 732, 778, 843, 894, 947, 1002, 1060, 1113, 1176, 1224, 1292, 1362, 1435,\n        ],\n        QUARTER: [\n          7, 12, 20, 28, 37, 45, 53, 66, 80, 93, 109, 125, 149, 159, 180, 198, 224, 243, 272, 297, 314, 348, 376, 407,\n          440, 462, 496, 534, 559, 604, 634, 684, 719, 756, 790, 832, 876, 923, 972, 1024,\n        ],\n        HIGH: [\n          4, 8, 15, 21, 27, 36, 39, 52, 60, 74, 85, 96, 109, 120, 136, 154, 173, 191, 208, 235, 248, 270, 284, 315, 330,\n          365, 385, 405, 430, 457, 486, 518, 553, 590, 605, 647, 673, 701, 750, 784,\n        ],\n      },\n      BYTE: {\n        LOW: [\n          17, 32, 53, 78, 106, 134, 154, 192, 230, 271, 321, 367, 425, 458, 520, 586, 644, 718, 792, 858, 929, 1003,\n          1091, 1171, 1273, 1367, 1465, 1528, 1628, 1732, 1840, 1952, 2068, 2188, 2303, 2431, 2563, 2699, 2809, 2953,\n        ],\n        MEDIUM: [\n          14, 26, 42, 62, 84, 106, 122, 152, 180, 213, 251, 287, 331, 362, 412, 450, 504, 560, 624, 666, 711, 779, 857,\n          911, 997, 1059, 1125, 1190, 1264, 1370, 1452, 1538, 1628, 1722, 1809, 1911, 1989, 2099, 2213, 2331,\n        ],\n        QUARTER: [\n          11, 20, 32, 46, 60, 74, 86, 108, 130, 151, 177, 203, 241, 258, 292, 322, 364, 394, 442, 482, 509, 565, 611,\n          661, 715, 751, 805, 868, 908, 982, 1030, 1112, 1168, 1228, 1283, 1351, 1423, 1499, 1579, 1663,\n        ],\n        HIGH: [\n          7, 14, 24, 34, 44, 58, 64, 84, 98, 119, 137, 155, 177, 194, 220, 250, 280, 310, 338, 382, 403, 439, 461, 511,\n          535, 593, 625, 658, 698, 742, 790, 842, 898, 958, 983, 1051, 1093, 1139, 1219, 1273,\n        ],\n      },\n    }[encoding][errorCorrection];\n  }\n\n  get errorCorrections() {\n    return [ERROR_CORRECTION.LOW, ERROR_CORRECTION.MEDIUM, ERROR_CORRECTION.QUARTER, ERROR_CORRECTION.HIGH];\n  }\n\n  penaltyForMatrix(matrix) {\n    /*\n      Return the penalty score for the symbol, according to the following criteria:\n      Penalty 1: A penalty (n-2) for each group of five or more same-colored modules in a row (or column)\n      Penalty 2: A penalty (3) for each 2x2 area of same-colored modules\n      Penalty 3: A penalty (40) if there are patterns that look similar to the finder patterns\n      Penalty 4: A penalty based on the percentage of tiles that are black / white\n    */\n    let penalty = 0;\n    const dimension = matrix.content.length;\n    let current, last, run, runTest, finderPattern;\n    for (let y = 0; y < dimension - 1; y++) {\n      current = matrix.bitAt(0, y);\n      last = current;\n      run = 1;\n      runTest = current;\n      finderPattern = current;\n      for (let x = 1; x < 10; x++) {\n        current = matrix.bitAt(x, y);\n        if (last === current) {\n          if (matrix.bitAt(x, y + 1) === last && matrix.bitAt(x - 1, y + 1) === last) penalty += 3;\n        } else {\n          last = current;\n        }\n        if (runTest === current) {\n          run++;\n        } else {\n          if (run > 4) penalty += run - 2;\n          run = 1;\n          runTest = current;\n        }\n        finderPattern = finderPattern * 2 + current;\n      }\n      for (let x = 10; x < dimension; x++) {\n        current = matrix.bitAt(x, y);\n        if (last === current) {\n          if (matrix.bitAt(x, y + 1) === last && matrix.bitAt(x - 1, y + 1) === last) penalty += 3;\n        } else {\n          last = current;\n        }\n        if (runTest === current) {\n          run++;\n        } else {\n          if (run > 4) penalty += run - 2;\n          run = 1;\n          runTest = current;\n        }\n        finderPattern = (finderPattern * 2 + current) % 2048;\n        if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n      }\n      if (run > 4) penalty += run - 2;\n    }\n    // Process the last row without Penalty 2\n    let lastY = dimension - 1;\n    current = matrix.bitAt(0, lastY);\n    run = 1;\n    runTest = current;\n    finderPattern = current;\n    for (let x = 1; x < 10; x++) {\n      current = matrix.bitAt(x, lastY);\n      if (runTest === current) {\n        run++;\n      } else {\n        if (run > 4) penalty += run - 2;\n        run = 1;\n        runTest = current;\n      }\n      finderPattern = finderPattern * 2 + current;\n    }\n    for (let x = 10; x < dimension; x++) {\n      current = matrix.bitAt(x, lastY);\n      if (runTest === current) {\n        run++;\n      } else {\n        if (run > 4) penalty += run - 2;\n        run = 1;\n        runTest = current;\n      }\n      finderPattern = (finderPattern * 2 + current) % 2048;\n      if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n    }\n    if (run > 4) penalty += run - 2;\n    // Penalty 4\n    let count = 0;\n    for (let x = 0; x < dimension; x++) {\n      current = matrix.bitAt(x, 0);\n      count += current;\n      run = 1;\n      runTest = current;\n      finderPattern = current;\n      for (let y = 1; y < 10; y++) {\n        current = matrix.bitAt(x, y);\n        count += current;\n        if (runTest === current) {\n          run++;\n        } else {\n          if (run > 4) penalty += run - 2;\n          run = 1;\n          runTest = current;\n        }\n        finderPattern = finderPattern * 2 + current;\n      }\n      for (let y = 10; y < dimension; y++) {\n        current = matrix.bitAt(x, y);\n        count += current;\n        if (runTest === current) {\n          run++;\n        } else {\n          if (run > 4) penalty += run - 2;\n          run = 1;\n          runTest = current;\n        }\n        finderPattern = (finderPattern * 2 + current) % 2048;\n        if (finderPattern === 1488 || finderPattern === 93) penalty += 40;\n      }\n      if (run > 4) penalty += run - 2;\n    }\n    penalty += Math.floor(Math.abs(count / (dimension * dimension) - 0.5) * 10);\n    return penalty;\n  }\n\n  toUtf16Bytes(string) {\n    const bytes = [];\n    for (let i = 0; i < string.length; i++) {\n      let code = string.charCodeAt(i);\n      let remainder = code % 256;\n      let quotient = (code - remainder) / 256;\n      bytes.push(quotient);\n      bytes.push(remainder);\n    }\n    return bytes;\n  }\n\n  toUtf8Bytes(string) {\n    const bytes = [];\n    let position = 0;\n    for (let i = 0; i < string.length; i++) {\n      let code = string.charCodeAt(i);\n      if (code < 128) {\n        bytes[position++] = code;\n      } else if (code < 2048) {\n        bytes[position++] = (code >> 6) | 192;\n        bytes[position++] = (code & 63) | 128;\n      } else if ((code & 0xfc00) == 0xd800 && i + 1 < string.length && (string.charCodeAt(i + 1) & 0xfc00) == 0xdc00) {\n        // Surrogate Pair\n        code = 0x10000 + ((code & 0x03ff) << 10) + (string.charCodeAt(++i) & 0x03ff);\n        bytes[position++] = (code >> 18) | 240;\n        bytes[position++] = ((code >> 12) & 63) | 128;\n        bytes[position++] = ((code >> 6) & 63) | 128;\n        bytes[position++] = (code & 63) | 128;\n      } else {\n        bytes[position++] = (code >> 12) | 224;\n        bytes[position++] = ((code >> 6) & 63) | 128;\n        bytes[position++] = (code & 63) | 128;\n      }\n    }\n    return bytes;\n  }\n\n  versionForLength(length, errorCorrection) {\n    let capacity;\n    if (this.code.hasEci) {\n      let actualLength = length + 3;\n      if (this.code.eci >= 128) actualLength++;\n      if (this.code.eci >= 16384) actualLength++;\n      capacity = DATA_CAPACITY[errorCorrection];\n      if (actualLength > capacity[8]) {\n        // add a bit for versions 10+\n        actualLength++;\n      }\n    } else {\n      capacity = this.capacity(this.code.encoding, errorCorrection);\n    }\n    let index = capacity.findIndex((allows) => allows >= length);\n    if (index === -1) return 100;\n    return index + 1;\n  }\n}\n\nmodule.exports = {\n  ENCODING,\n  ERROR_CORRECTION,\n  BitWriter,\n  Matrix,\n  BooleanMatrix,\n  QRCodeMap,\n  QRCode,\n  QRCodeEncoder,\n};\n","const { QRCode, QRCodeEncoder } = require('./qrcode');\n\n/**\n * CLASS SquareQRCodeEncoder\n * While it can render an SVG, it mainly provides a base encoder for MarketQRCodeEncoder and EmbedQRCodeEncoder.\n * It adds these features to QRCodeEncoder:\n *   - svg rendering using the Turtle to edge trace data\n *   - hooks for adjusting the data for turtle rendering\n *   - using lowestPenalty calculation to make sure the code can be read\n *   - some base methods for SVG rendering\n * The following options can be specified:\n *   border          boolean (default false) whether to add a 4-pixel quiet zone\n *   invert          boolean (default false) light data on dark background when on\n *   styleBackground string to override style inserted in SVG background rectangle\n *   styleForeground string to override style inserted in SVG foreground data and patterns\n */\nclass SquareQRCodeEncoder extends QRCodeEncoder {\n  encode() {\n    this.initializeEncoding();\n    for (const errorCorrection of this.errorCorrections) {\n      this.code.errorCorrection = errorCorrection;\n      this.initializeVersion();\n      if (this.code.version < this.minimumVersion) continue;\n      this.initializeCodewords();\n      this.initializeMapping();\n      this.initializeMasking();\n      if (this.lowestPenalty < this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY) {\n        this.initializeTurtleData();\n        this.initializeSvg();\n        return;\n      }\n    }\n    // go up in version, keep H errorCorrection\n    const start = Math.max(this.minimumVersion, this.code.version + 1);\n    for (let version = start; version <= QRCode.MAX_VERSION; version++) {\n      this.code.version = version;\n      this.initializeCodewords();\n      this.initializeMapping();\n      this.initializeMasking();\n      if (this.lowestPenalty < this.constructor.PENALTY_FOR_NEGATIVE_CAPACITY) {\n        this.initializeTurtleData();\n        this.initializeSvg();\n        return;\n      }\n    }\n  }\n\n  initializeSvg() {\n    const offset = this.svgOffset;\n    const dimension = this.svgDimension;\n    const foregroundStyle = this.svgForegroundStyle;\n    const backgroundStyle = this.svgBackgroundStyle;\n    const source = [];\n    source.push(this.svgTag(dimension));\n    source.push('<defs>');\n    source.push(this.svgFinderPattern(foregroundStyle));\n    source.push('</defs>');\n    source.push(this.svgBackground(backgroundStyle, dimension, offset === 0 ? undefined : offset / 2));\n    this.svgFinderPatterns(source, offset);\n    this.svgTurtle(source, foregroundStyle, offset);\n    source.push('</svg>');\n    this.svg = source.join('');\n  }\n\n  initializeTurtleData() {\n    // add timing and alignment patterns as data\n    const data = this.code.data.copy();\n    for (const point of this.code.timingPatternPositions) {\n      data.put(point.x, point.y, true);\n    }\n    for (const point of this.code.alignmentPatternPositions) {\n      data.fillAlignmentPatternAt(point.x, point.y);\n    }\n    this.turtleData = data;\n  }\n\n  get inverted() {\n    const inverted = this.code.options.invert;\n    if (inverted === undefined) return false;\n    return inverted;\n  }\n\n  get hasBorder() {\n    const hasBorder = this.code.options.border;\n    if (hasBorder === undefined) return false;\n    return hasBorder;\n  }\n\n  get minimumVersion() {\n    return 1;\n  }\n\n  async png() {\n    if (this._png !== undefined) return this._png;\n    if (this.svg === undefined) throw 'no SVG to convert to PNG';\n    const image = new Image();\n    const imageBlob = new Blob([this.svg], { type: 'image/svg+xml;charset=utf-8' });\n    image.src = URL.createObjectURL(imageBlob);\n    await image.decode();\n    const dimension = this.svgDimension;\n    const canvas = document.createElement('canvas');\n    canvas.width = dimension;\n    canvas.height = dimension;\n    canvas.getContext('2d').drawImage(image, 0, 0, dimension, dimension);\n    this._png = canvas.toDataURL();\n    return this._png;\n  }\n\n  svgBackground(style, dimension, cornerRadius) {\n    if (style === '') return '';\n    return cornerRadius === undefined\n      ? `<rect ${style} x=\"0\" y=\"0\" width=\"${dimension}\" height=\"${dimension}\" />`\n      : `<rect ${style} x=\"0\" y=\"0\" width=\"${dimension}\" height=\"${dimension}\" rx=\"${cornerRadius}\" ry=\"${cornerRadius}\" />`;\n  }\n\n  get svgBackgroundStyle() {\n    const fromOptions = this.code.options.styleBackground;\n    if (fromOptions !== undefined) return fromOptions;\n    return this.inverted ? 'fill=\"black\"' : 'fill=\"white\"';\n  }\n\n  get svgDimension() {\n    return 2 * this.svgOffset + 8 * this.code.dimension;\n  }\n\n  svgFinderPattern(style) {\n    return `<path id=\"f\" ${style} fill-rule=\"evenodd\" d=\"M 0 10 a10,10 0 0 1 10,-10 h36 a10,10 0 0 1 10,10 v36 a10,10 0 0 1 -10,10 h-36 a10,10 0 0 1 -10,-10 Z M 8 10 a2,2 0 0 1 2,-2 h36 a2,2 0 0 1 2,2 v36 a2,2 0 0 1 -2,2 h-36 a2,2 0 0 1 -2,-2 Z M 16 18 a2,2 0 0 1 2,-2 h20 a2,2 0 0 1 2,2 v20 a2,2 0 0 1 -2,2 h-20 a2,2 0 0 1 -2,-2 Z\" />`;\n  }\n\n  svgFinderPatterns(source, offset) {\n    for (const point of this.code.finderPatternPositions) {\n      source.push(`<use xlink:href=\"#f\" x=\"${point.x * 8 + offset}\" y=\"${point.y * 8 + offset}\" />`);\n    }\n  }\n\n  get svgForegroundStyle() {\n    const fromOptions = this.code.options.styleForeground;\n    if (fromOptions !== undefined) return fromOptions;\n    return this.inverted ? 'fill=\"white\"' : 'fill=\"black\"';\n  }\n\n  get svgOffset() {\n    return this.hasBorder ? 32 : 0;\n  }\n\n  svgTag(dimension) {\n    return `<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${dimension}\" height=\"${dimension}\" viewBox=\"0 0 ${dimension} ${dimension}\">`;\n  }\n\n  svgTurtle(source, style, offset) {\n    const dimension = this.code.dimension;\n    for (let y = 0; y < dimension; y++) {\n      for (let x = 0; x < dimension; x++) {\n        if (this.turtleData.at(x, y)) {\n          source.push(new Turtle(this.turtleData, style, offset, x, y).element);\n        }\n      }\n    }\n  }\n}\n// static variables\nSquareQRCodeEncoder.PENALTY_FOR_LEFTOVER_CAPACITY = [32, 16, 8, 4, 2, 1];\nSquareQRCodeEncoder.PENALTY_FOR_NEGATIVE_CAPACITY = 10000;\n\n/**\n * CLASS Turtle\n * This is used to draw a path at a point, drawing both the outline and any cutouts.\n *   data            the BooleanMatrix of encoded data, along with the format and version information\n *   style           injected into the SVG element\n *   offset          how many SVG pixels to offset the topleft corner\n *   x               the x coordinate of the pixel to start from\n *   y               the y coordinate of the pixel to start from\n * It is only exported to be used in tests.\n */\nclass Turtle {\n  constructor(data, style, offset, x, y) {\n    this.data = data;\n    this.dimension = data.width;\n    this.style = style || '';\n    this.offset = offset || 0;\n    this.start = { x, y };\n    this.visitedLocations = new Set();\n    this.generateElement();\n    this.clearVisited();\n  }\n\n  clearVisited() {\n    this.visitedLocations.forEach((location) => {\n      const point = this.fromLocation(location);\n      this.data.put(point.x, point.y, false);\n    });\n  }\n\n  get element() {\n    return this._element;\n  }\n\n  fromLocation(location) {\n    const x = location % this.dimension;\n    const y = (location - x) / this.dimension;\n    return { x, y };\n  }\n\n  generateElement() {\n    // build outside edges\n    const startX = this.start.x;\n    const startY = this.start.y;\n    const startEdge = 'left';\n    let x = startX;\n    let y = startY;\n    const outsideEdges = [];\n    outsideEdges.push(startEdge);\n    let edge = 'top';\n    const tops = new Set();\n    const rights = new Set();\n    const bottoms = new Set();\n    const lefts = new Set();\n    lefts.add(this.toLocation(x, y));\n    while (!(x === startX && y === startY && edge === startEdge)) {\n      outsideEdges.push(edge);\n      const location = this.toLocation(x, y);\n      this.visitLocation(location);\n      switch (edge) {\n        case 'top':\n          tops.add(location);\n          if (!this.hasPixelAtCoordinate(x + 1, y)) {\n            edge = 'right';\n          } else if (this.hasPixelAtCoordinate(x + 1, y - 1)) {\n            x += 1;\n            y -= 1;\n            edge = 'left';\n          } else {\n            x += 1;\n          }\n          break;\n        case 'right':\n          rights.add(location);\n          if (!this.hasPixelAtCoordinate(x, y + 1)) {\n            edge = 'bottom';\n          } else if (this.hasPixelAtCoordinate(x + 1, y + 1)) {\n            x += 1;\n            y += 1;\n            edge = 'top';\n          } else {\n            y += 1;\n          }\n          break;\n        case 'bottom':\n          bottoms.add(location);\n          if (!this.hasPixelAtCoordinate(x - 1, y)) {\n            edge = 'left';\n          } else if (this.hasPixelAtCoordinate(x - 1, y + 1)) {\n            x -= 1;\n            y += 1;\n            edge = 'right';\n          } else {\n            x -= 1;\n          }\n          break;\n        case 'left':\n          lefts.add(location);\n          if (!this.hasPixelAtCoordinate(x, y - 1)) {\n            edge = 'top';\n          } else if (this.hasPixelAtCoordinate(x - 1, y - 1)) {\n            x -= 1;\n            y -= 1;\n            edge = 'bottom';\n          } else {\n            y -= 1;\n          }\n          break;\n      }\n    }\n    // render outside edges\n    if (outsideEdges.length === 4) {\n      // if it only a single pixel, just make it a rectangle\n      this._element = `<rect ${this.style} x=\"${startX * 8 + this.offset}\" y=\"${\n        startY * 8 + this.offset\n      }\" width=\"8\" height=\"8\" rx=\"2\" ry=\"2\" />`;\n      return;\n    }\n    let d = [];\n    d.push(`M${startX * 8 + this.offset + 1} ${startY * 8 + this.offset + 4}`);\n    let next = outsideEdges[0];\n    outsideEdges.push(next);\n    let now;\n    let length = 0;\n    for (let i = 1; i < outsideEdges.length; i++) {\n      now = next;\n      next = outsideEdges[i];\n      if (now === next) {\n        length += 8;\n      } else if (now === 'top' && next === 'right') {\n        if (length !== 0) {\n          d.push(`h${length}`);\n          length = 0;\n        }\n        d.push('a3,3 0 0 1 3,3');\n      } else if (now === 'right' && next === 'bottom') {\n        if (length !== 0) {\n          d.push(`v${length}`);\n          length = 0;\n        }\n        d.push('a3,3 0 0 1 -3,3');\n      } else if (now === 'bottom' && next === 'left') {\n        if (length !== 0) {\n          d.push(`h-${length}`);\n          length = 0;\n        }\n        d.push('a3,3 0 0 1 -3,-3');\n      } else if (now === 'left' && next === 'top') {\n        if (length !== 0) {\n          d.push(`v-${length}`);\n          length = 0;\n        }\n        d.push('a3,3 0 0 1 3,-3');\n      } else if (now === 'top' && next === 'left') {\n        d.push(`h${length + 5}`);\n        length = 5;\n      } else if (now === 'right' && next === 'top') {\n        d.push(`v${length + 5}`);\n        length = 5;\n      } else if (now === 'bottom' && next === 'right') {\n        d.push(`h-${length + 5}`);\n        length = 5;\n      } else if (now === 'left' && next === 'bottom') {\n        d.push(`v-${length + 5}`);\n        length = 5;\n      }\n    }\n    if (length > 0) d.push(`v-${length}`);\n    d.push('z');\n    // determine the interior pixels\n    let interior = new Set();\n    let process = new Set();\n    this.visitedLocations.forEach((location) => {\n      if (!tops.has(location)) process.add(location - this.dimension);\n      if (!lefts.has(location)) process.add(location - 1);\n      if (!bottoms.has(location)) process.add(location + this.dimension);\n      if (!rights.has(location)) process.add(location + 1);\n    });\n    process = [...process].filter((location) => !this.hasVisitedLocation(location));\n    while (process.length > 0) {\n      let fanOutFrom = [];\n      process.forEach((location) => {\n        if (this.hasPixelAtLocation(location)) {\n          this.visitLocation(location);\n          fanOutFrom.push(location);\n        } else {\n          interior.add(location);\n        }\n      });\n      process = new Set();\n      fanOutFrom.forEach((location) => {\n        process.add(location - this.dimension);\n        process.add(location + this.dimension);\n        process.add(location + 1);\n        process.add(location - 1);\n      });\n      process = [...process].filter((location) => !this.hasVisitedLocation(location));\n    }\n    while (interior.size > 0) {\n      // determine and move to the top right\n      let topRight, topRightX, topRightY;\n      interior.forEach((location) => {\n        x = location % this.dimension;\n        y = (location - x) / this.dimension;\n        if (topRight === undefined || y < topRightY || (y === topRightY && x > topRightX)) {\n          topRight = location;\n          topRightX = x;\n          topRightY = y;\n        }\n      });\n      d.push(`M${topRightX * 8 + this.offset + 9} ${topRightY * 8 + this.offset - 1}`);\n      // move counterclockwise to remove interior\n      x = topRightX;\n      y = topRightY;\n      edge = 'top';\n      let distance = 5;\n      while (!(x === topRightX && y === topRightY && edge === 'right')) {\n        const location = this.toLocation(x, y);\n        interior.delete(location);\n        switch (edge) {\n          case 'top':\n            if (!this.hasPixelAtCoordinate(x - 1, y - 1)) {\n              if (distance > 0) d.push(`h-${distance}`);\n              d.push('a3,3 0 0 1 -3,-3');\n              distance = 0;\n              edge = 'right';\n              x--;\n              y--;\n            } else if (!this.hasPixelAtCoordinate(x - 1, y)) {\n              distance += 8;\n              x--;\n            } else {\n              d.push(`h-${distance + 5}`);\n              distance = 5;\n              edge = 'left';\n            }\n            break;\n          case 'left':\n            if (!this.hasPixelAtCoordinate(x - 1, y + 1)) {\n              if (distance > 0) d.push(`v${distance}`);\n              d.push('a3,3 0 0 1 -3,3');\n              distance = 0;\n              edge = 'top';\n              x--;\n              y++;\n            } else if (!this.hasPixelAtCoordinate(x, y + 1)) {\n              distance += 8;\n              y++;\n            } else {\n              d.push(`v${distance + 5}`);\n              distance = 5;\n              edge = 'bottom';\n            }\n            break;\n          case 'bottom':\n            if (!this.hasPixelAtCoordinate(x + 1, y + 1)) {\n              if (distance > 0) d.push(`h${distance}`);\n              d.push('a3,3 0 0 1 3,3');\n              distance = 0;\n              edge = 'left';\n              x++;\n              y++;\n            } else if (!this.hasPixelAtCoordinate(x + 1, y)) {\n              distance += 8;\n              x++;\n            } else {\n              d.push(`h${distance + 5}`);\n              distance = 5;\n              edge = 'right';\n            }\n            break;\n          case 'right':\n            if (!this.hasPixelAtCoordinate(x + 1, y - 1)) {\n              if (distance > 0) d.push(`v-${distance}`);\n              d.push('a3,3 0 0 1 3,-3');\n              distance = 0;\n              edge = 'bottom';\n              x++;\n              y--;\n            } else if (!this.hasPixelAtCoordinate(x, y - 1)) {\n              distance += 8;\n              y--;\n            } else {\n              d.push(`v-${distance + 5}`);\n              distance = 5;\n              edge = 'top';\n            }\n            break;\n        }\n      }\n      d.push(`v-${distance + 5}`);\n      d.push('z');\n    }\n    this._element = `<path ${this.style} d=\"${d.join('')}\" />`;\n  }\n\n  hasPixelAtCoordinate(x, y) {\n    if (x >= this.dimension || x < 0 || y >= this.dimension || y < 0) return false;\n    return this.data.at(x, y);\n  }\n\n  hasPixelAtLocation(location) {\n    const x = location % this.dimension;\n    const y = (location - x) / this.dimension;\n    return this.data.at(x, y);\n  }\n\n  hasVisitedCoordinate(x, y) {\n    return this.hasVisitedLocation(this.toLocation(x, y));\n  }\n\n  hasVisitedLocation(location) {\n    return this.visitedLocations.has(location);\n  }\n\n  toLocation(x, y) {\n    return this.dimension * y + x;\n  }\n\n  visitCoordinate(x, y) {\n    this.visitLocation(this.toLocation(x, y));\n  }\n\n  visitLocation(location) {\n    this.visitedLocations.add(location);\n  }\n}\n\nmodule.exports = { SquareQRCodeEncoder, Turtle };\n","export class RpcLoggerFactory {\n    constructor(requestLoggerClass) {\n        this._nextId = 0;\n        this._requestLoggerClass = requestLoggerClass;\n    }\n    build() {\n        return new this._requestLoggerClass(this._nextId++);\n    }\n}\n// https://material.io/guidelines/style/color.html#color-color-palette\nconst COLORS = [\n    '#F44336',\n    '#E91E63',\n    '#9C27B0',\n    '#673AB7',\n    '#3F51B5',\n    '#2196F3',\n    '#03A9F4',\n    '#00BCD4',\n    '#009688',\n    '#4CAF50',\n    '#8BC34A',\n    '#CDDC39',\n    '#FFEB3B',\n    '#FFC107',\n    '#FF9800',\n    '#FF5722',\n    '#795548',\n    '#9E9E9E',\n    '#607D8B', // blue grey\n];\nexport class ConsoleRequestLogger {\n    constructor(id, colors, console = window.console) {\n        this.id = id;\n        this.colors = colors || COLORS;\n        this.console = console;\n    }\n    getColor() {\n        return this.colors[this.id % this.colors.length];\n    }\n    logRequest(method, url, requestData) {\n        const { resolvedRequestType } = method.resolve();\n        this.console.groupCollapsed(`%cRPC#${this.id} ↑ %c${url}`, 'color:blue', `color:${this.getColor()}`);\n        this.console.log(resolvedRequestType.decode(requestData));\n        this.console.groupEnd();\n    }\n    logResponse(method, url, responseData) {\n        const { resolvedResponseType } = method.resolve();\n        this.console.groupCollapsed(`%cRPC#${this.id} ↓ %c${url}`, 'color:green', `color:${this.getColor()}`);\n        this.console.log(resolvedResponseType.decode(responseData));\n        this.console.groupEnd();\n    }\n    logError(_method, url, error) {\n        this.console.groupCollapsed(`%cRPC#${this.id} ↓ %c${url}`, 'color:red', `color:${this.getColor()}`);\n        this.console.log(error);\n        this.console.groupEnd();\n    }\n}\nexport class SilentRequestLogger {\n    constructor(id) {\n        this.id = id;\n    }\n    logRequest() {\n        // Does nothing\n    }\n    logResponse() {\n        // Does nothing\n    }\n    logError() {\n        // Does nothing\n    }\n}\nexport class ConsoleLoggerFactory extends RpcLoggerFactory {\n    constructor(enabled) {\n        super(enabled ? ConsoleRequestLogger : SilentRequestLogger);\n    }\n}\n","export default function parseResponse(response) {\n    return response\n        .arrayBuffer()\n        .then((arrayBuffer) => new Uint8Array(arrayBuffer));\n}\n","const characters = 'ABCDEFGHJKMNPQRSTVWXYZabcdefghjk';\nexport function generateSpeleoId() {\n    return [\n        ...Array.from({ length: 13 }, () => {\n            return characters[Math.floor(Math.random() * characters.length)];\n        }),\n    ].join('');\n}\n","import { generateSpeleoId, getRpcPath, parseResponse, RpcLoggerFactory, SilentRequestLogger, } from '../utils';\nfunction identityPromise(a) {\n    return new Promise((resolve) => resolve(a));\n}\nfunction defaultUrlForMethod(_method, derivedUrl) {\n    return derivedUrl;\n}\nexport default function rpc(urlForMethod = defaultUrlForMethod, loggerFactory = new RpcLoggerFactory(SilentRequestLogger), errorDeserializer = identityPromise, additionalHeaders = () => new Map(), responseParser = parseResponse, sendSpeleoTraceId = false, beforeRequest, afterResponse, signal) {\n    async function rpcImpl(method, requestData, callback) {\n        const logger = loggerFactory.build();\n        const url = urlForMethod(method, getRpcPath(method));\n        const headers = {};\n        headers['Accept'] = 'application/x-protobuf';\n        headers['Content-Type'] = 'application/x-protobuf';\n        for (const [key, value] of (additionalHeaders instanceof Function\n            ? additionalHeaders()\n            : additionalHeaders).entries()) {\n            headers[key] = value;\n        }\n        if (sendSpeleoTraceId && !('X-SPELEO-TRACE-ID' in headers)) {\n            headers['X-SPELEO-TRACE-ID'] = generateSpeleoId();\n        }\n        const fetchOptions = {\n            method: 'POST',\n            credentials: 'include',\n            headers,\n            body: requestData,\n            signal,\n        };\n        if (beforeRequest) {\n            await beforeRequest(requestData);\n        }\n        logger.logRequest(method, url, requestData);\n        let responseData = null;\n        let responseError = null;\n        try {\n            const response = await fetch(url, fetchOptions);\n            const deserializedResponse = await errorDeserializer(response, method);\n            responseData = await responseParser(deserializedResponse, method);\n            logger.logResponse(method, url, responseData);\n            callback(null, responseData);\n        }\n        catch (e) {\n            const error = e;\n            logger.logError(method, url, error);\n            responseError = new Error(`${error.message} \\n Proto: ${method.name} \\n URL: ${url}`, \n            // TODO: remove \\`@ts-expect-error` once jest supports ES2022\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            { cause: error });\n            callback(responseError, null);\n        }\n        finally {\n            if (afterResponse) {\n                await afterResponse(responseData, responseError);\n            }\n        }\n    }\n    return rpcImpl;\n}\n","import rpc from './rpc';\nexport * from './rpc-types';\nexport default rpc;\n","export default function (method) {\n    return `/services/${method.parent.fullName.slice(1)}/${method.name}`;\n}\n","\"use strict\";\n// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v1.181.2\n//   protoc               v3.17.3\n// source: squareup/unifiedeventing/messages/context.proto\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScreenOrientation = exports.OperatingSystemName = exports.NetworkType = exports.Environment = exports.BuildType = exports.protobufPackage = void 0;\n/* eslint-disable */\nexports.protobufPackage = \"squareup.unifiedeventing.messages\";\nvar BuildType;\n(function (BuildType) {\n    BuildType[BuildType[\"UNKNOWN_BUILD_TYPE\"] = 0] = \"UNKNOWN_BUILD_TYPE\";\n    BuildType[BuildType[\"APP_STORE\"] = 1] = \"APP_STORE\";\n    BuildType[BuildType[\"BETA\"] = 2] = \"BETA\";\n    BuildType[BuildType[\"DEVELOPMENT\"] = 3] = \"DEVELOPMENT\";\n    BuildType[BuildType[\"DEMO_APP\"] = 4] = \"DEMO_APP\";\n    BuildType[BuildType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(BuildType || (exports.BuildType = BuildType = {}));\nvar Environment;\n(function (Environment) {\n    Environment[Environment[\"UNKNOWN_ENVIRONMENT\"] = 0] = \"UNKNOWN_ENVIRONMENT\";\n    Environment[Environment[\"PRODUCTION\"] = 1] = \"PRODUCTION\";\n    Environment[Environment[\"TEST_PRODUCTION\"] = 2] = \"TEST_PRODUCTION\";\n    Environment[Environment[\"STAGING\"] = 3] = \"STAGING\";\n    Environment[Environment[\"TEST_STAGING\"] = 4] = \"TEST_STAGING\";\n    Environment[Environment[\"OTHER\"] = 5] = \"OTHER\";\n    Environment[Environment[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(Environment || (exports.Environment = Environment = {}));\nvar NetworkType;\n(function (NetworkType) {\n    NetworkType[NetworkType[\"UNKNOWN_NETWORK\"] = 0] = \"UNKNOWN_NETWORK\";\n    NetworkType[NetworkType[\"BLUETOOTH\"] = 1] = \"BLUETOOTH\";\n    NetworkType[NetworkType[\"WIFI\"] = 2] = \"WIFI\";\n    NetworkType[NetworkType[\"CELLULAR\"] = 3] = \"CELLULAR\";\n    NetworkType[NetworkType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(NetworkType || (exports.NetworkType = NetworkType = {}));\nvar OperatingSystemName;\n(function (OperatingSystemName) {\n    OperatingSystemName[OperatingSystemName[\"UNKNOWN_OS\"] = 0] = \"UNKNOWN_OS\";\n    OperatingSystemName[OperatingSystemName[\"IOS\"] = 1] = \"IOS\";\n    OperatingSystemName[OperatingSystemName[\"ANDROID\"] = 2] = \"ANDROID\";\n    OperatingSystemName[OperatingSystemName[\"WEB\"] = 3] = \"WEB\";\n    OperatingSystemName[OperatingSystemName[\"WINDOWS\"] = 4] = \"WINDOWS\";\n    OperatingSystemName[OperatingSystemName[\"MAC_OS\"] = 5] = \"MAC_OS\";\n    OperatingSystemName[OperatingSystemName[\"LINUX\"] = 6] = \"LINUX\";\n    OperatingSystemName[OperatingSystemName[\"IOS_WEB\"] = 7] = \"IOS_WEB\";\n    OperatingSystemName[OperatingSystemName[\"ANDROID_WEB\"] = 8] = \"ANDROID_WEB\";\n    OperatingSystemName[OperatingSystemName[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(OperatingSystemName || (exports.OperatingSystemName = OperatingSystemName = {}));\nvar ScreenOrientation;\n(function (ScreenOrientation) {\n    ScreenOrientation[ScreenOrientation[\"UNKNOWN_SCREEN_ORIENTATION\"] = 0] = \"UNKNOWN_SCREEN_ORIENTATION\";\n    ScreenOrientation[ScreenOrientation[\"PORTRAIT\"] = 1] = \"PORTRAIT\";\n    ScreenOrientation[ScreenOrientation[\"LANDSCAPE\"] = 2] = \"LANDSCAPE\";\n    ScreenOrientation[ScreenOrientation[\"SQUARE\"] = 3] = \"SQUARE\";\n    ScreenOrientation[ScreenOrientation[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(ScreenOrientation || (exports.ScreenOrientation = ScreenOrientation = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.gclidKeySet = exports.cookiePrefixMap = exports.falseyValues = exports.entities = exports.LIBRARY_VERSION = exports.LIBRARY_NAME = void 0;\n/**\n * Library version is updated automatically during the\n * release process, do not update this manually.\n */\nexports.LIBRARY_NAME = '@squareup/cdp';\nexports.LIBRARY_VERSION = '1.4.2';\nexports.entities = [\n    'merchant',\n    'employee',\n    'anonymous_visitor',\n    'capital_customer',\n    'developer',\n    'person',\n    'unit',\n    'weebly_user',\n    'square_employee',\n    'buyer',\n];\nexports.falseyValues = [\n    '',\n    null,\n    undefined,\n];\nexports.cookiePrefixMap = {\n    aud: ['audience'],\n    c: ['campaignChannel'],\n    cmtp: ['campaigntype'],\n    cn: ['campaignname'],\n    crcopy: ['creativecopy'],\n    crcta: ['creativecta'],\n    crim: ['creativeimage'],\n    crtype: ['creativetype'],\n    d: ['detailChannel', 'channel'],\n    dt: ['deviceChannel', 'devicetype'],\n    exp: ['experiment'],\n    f: ['forecastChannel'],\n    l: ['locationChannel', 'locationcountry'],\n    lang: ['language'],\n    meta1: ['meta1'],\n    meta2: ['meta2'],\n    o: ['offerChannel', 'offer'],\n    p: ['partnerChannel', 'partner'],\n    pr: ['productChannel', 'initiative'],\n    route: ['destinationurl'],\n    sq: ['marinTag'],\n    subch: ['subchannel'],\n    subcmtp: ['subcampaigntype'],\n    subp: ['subpartner'],\n    tar: ['targetingtype'],\n    tarpr: ['targetproduct'],\n    u: ['urlChannel'],\n};\nexports.gclidKeySet = new Set([\n    'gclid',\n    'pub',\n    'kw',\n    'kwid',\n    'matchtype',\n    'device',\n]);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.campaignDefaults = campaignDefaults;\nconst utils_1 = require(\"../utils\");\nconst constants_1 = require(\"../constants\");\nconst enums_1 = require(\"../enums\");\nfunction campaignDefaults() {\n    const queryParams = getQuery();\n    return Object.assign(Object.assign({}, getTrackCookieData()), { utmCampaign: queryParams.utm_campaign, utmContent: queryParams.utm_content, utmMedium: queryParams.utm_medium, utmSource: queryParams.utm_source, utmTerm: queryParams.utm_term, trackCookieBase64: getTrackCookiesBase64() });\n}\nfunction getQuery() {\n    if (window.location.search.length === 0)\n        return {};\n    const obj = {};\n    const query = window.location.search.slice(1);\n    const pairs = query.split('&');\n    for (const pair of pairs) {\n        const [key, value] = pair.split('=');\n        const decodedKey = decodeURIComponent(key);\n        const decodedVal = decodeURIComponent(value);\n        obj[decodedKey] = decodedVal;\n    }\n    return obj;\n}\nfunction getTrackCookieData() {\n    const trackCookieArray = getTrackCookieDataArray();\n    const trackCookieObject = {};\n    if (trackCookieArray.length > 0) {\n        trackCookieArray.forEach((keyValStr) => {\n            const paramKey = keyValStr.split(/[=_-]/)[0];\n            if (paramKey in constants_1.cookiePrefixMap) {\n                // parse and set marketing param data\n                const readableParamName = constants_1.cookiePrefixMap[paramKey];\n                readableParamName.forEach((param) => {\n                    trackCookieObject[param] = keyValStr;\n                });\n            }\n            else {\n                // parse and set gclid related data\n                if (keyValStr.includes('gclid=')) {\n                    const kvs = keyValStr.split('|');\n                    kvs.forEach((kv) => {\n                        const [key, val] = kv.split('=').slice(0, 2);\n                        if (key && val && constants_1.gclidKeySet.has(key)) {\n                            trackCookieObject[key] = val;\n                        }\n                    });\n                }\n            }\n        });\n    }\n    return trackCookieObject;\n}\nfunction getTrackCookieDataArray() {\n    const trackCookieVal = getTrackCookiesBase64();\n    if (trackCookieVal) {\n        try {\n            return window.JSON.parse(window.atob(trackCookieVal));\n        }\n        catch (_a) {\n            return [];\n        }\n    }\n    return [];\n}\n// gets decoded 'track_cookie' which is an array\n// This cookie is a list of marketing fields to collect.\n// Where this cookie is set: https://github.com/squareup/xms/blob/main/app/controllers/marketing_tracking_controller.rb#L11C5-L29\n// Business context for this cookie: https://docs.google.com/document/d/1PMNf8K9aV7EmaVFXMTzzJQmBFqeKEhuW5rqxj-h6R_Q/edit\nfunction getTrackCookiesBase64() {\n    const value = utils_1.cookies.get(enums_1.CookieNames.trackCookie);\n    if (value) {\n        try {\n            return decodeURIComponent(value.split('--')[0]);\n        }\n        catch (_a) {\n            return '';\n        }\n    }\n    return '';\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cookeNamesToExclude = void 0;\nexports.getFilteredCookies = getFilteredCookies;\nconst enums_1 = require(\"../enums\");\nconst utils_1 = require(\"../utils\");\nexports.cookeNamesToExclude = (() => {\n    const names = [];\n    [enums_1.StoreNames, enums_1.CookieNames, enums_1.LegacyStoreNames].forEach((obj) => {\n        for (const cookieKey in obj) {\n            const cookieName = obj[cookieKey];\n            names.push(cookieName);\n        }\n    });\n    return names;\n})();\n// get all cookies filtering out cookies related to our library\nfunction getFilteredCookies() {\n    return Object.fromEntries(Object.entries(utils_1.cookies.get()).filter(([key]) => key === '_ga'));\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./campaign\"), exports);\n__exportStar(require(\"./location\"), exports);\n__exportStar(require(\"./make-context-obj\"), exports);\n__exportStar(require(\"./referrer\"), exports);\n__exportStar(require(\"./subject\"), exports);\n","\"use strict\";\n// These helper functions are pulled\n// from Segment's open source code\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.canonicalUrl = canonicalUrl;\nexports.canonicalPath = canonicalPath;\nexports.canonical = canonical;\nfunction canonicalUrl(search) {\n    const canon = canonical();\n    if (canon)\n        return canon.includes('?') ? canon : canon + (search !== null && search !== void 0 ? search : '');\n    const url = window.location.href;\n    const i = url.indexOf('#');\n    return i === -1 ? url : url.slice(0, i);\n}\n// finds the part of the string after the domain\n// from the canonicalPath e.g. \"/us/en/\"\nfunction canonicalPath() {\n    const canon = canonical();\n    if (!canon)\n        return window.location.pathname;\n    const parts = canon.split('.');\n    const lastPartOfString = String(parts.at(-1));\n    const i = lastPartOfString.indexOf('/');\n    return lastPartOfString.slice(i);\n}\nfunction canonical() {\n    const tags = document.getElementsByTagName('link');\n    for (let i = 0, tag; (tag = tags[i]); i++) {\n        if (tag.getAttribute('rel') === 'canonical') {\n            return tag.getAttribute('href');\n        }\n    }\n    return null;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeContextObj = makeContextObj;\nconst constants_1 = require(\"../constants\");\nconst cookies_1 = require(\"./cookies\");\nconst campaign_1 = require(\"./campaign\");\nconst referrer_1 = require(\"./referrer\");\nconst location_1 = require(\"./location\");\nconst network_1 = require(\"./network\");\nconst session_1 = require(\"./session\");\nconst ua_parser_js_1 = __importDefault(require(\"ua-parser-js\"));\nconst truncate_object_1 = require(\"../utils/truncate-object\");\nlet metrics = null;\nfunction makeContextObj() {\n    if (metrics === null) {\n        metrics = (0, ua_parser_js_1.default)(window.navigator.userAgent);\n    }\n    const contextObj = {\n        application: this.application,\n        browser: {\n            name: metrics.browser.name,\n            version: metrics.browser.version,\n            height: window.innerHeight,\n            width: window.innerWidth,\n        },\n        campaign: (0, campaign_1.campaignDefaults)(),\n        cookies: (0, cookies_1.getFilteredCookies)(),\n        library: {\n            name: constants_1.LIBRARY_NAME,\n            version: constants_1.LIBRARY_VERSION,\n        },\n        locale: {\n            countryCode: window.navigator.language.split('-')[1],\n            language: window.navigator.language,\n        },\n        network: (0, network_1.getNetworkInfo)(),\n        os: {\n            name: metrics.os.name,\n            version: metrics.os.version,\n        },\n        page: Object.assign({ path: (0, location_1.canonicalPath)(), referrer: document.referrer, search: location.search, title: document.title, url: (0, location_1.canonicalUrl)(location.search), realPath: window.location.pathname, realUrl: window.location.href }, this.options.page),\n        referrer: (0, referrer_1.pageDefaults)(),\n        session: (0, session_1.getSessionInfo)(this.options),\n        subject: this.makeContextSubject(),\n        traits: this.user.entityTraits,\n        userAgent: window.navigator.userAgent,\n    };\n    (0, truncate_object_1.truncateObject)(contextObj);\n    return contextObj;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertContext = convertContext;\nexports.getEnvironment = getEnvironment;\nexports.getOsName = getOsName;\nconst context_1 = require(\"../../../protos/squareup/unifiedeventing/messages/context\");\nconst enums_1 = require(\"../enums\");\nfunction convertContext(context, environment) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n    return {\n        device: {\n            screen_orientation: context_1.ScreenOrientation.UNKNOWN_SCREEN_ORIENTATION,\n            is_tablet: false,\n        },\n        network: {\n            type: context.network.type,\n            ip_address: context.network.ipAddress,\n        },\n        library: context.library,\n        geo: {\n            country_code: context.locale.countryCode,\n            language: context.locale.language,\n            latitude: 0, // CDPINFRA-3741\n            longitude: 0, // CDPINFRA-3741\n        },\n        os: {\n            name: getOsName(context.os.name),\n            public_version: (_a = context.os.version) !== null && _a !== void 0 ? _a : '',\n            build_id: '',\n            incremental_version: '',\n            security_version: '',\n        },\n        app: {\n            registry_name: (_c = (_b = context.application) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : '',\n            public_version: (_e = (_d = context.application) === null || _d === void 0 ? void 0 : _d.version) !== null && _e !== void 0 ? _e : '',\n            build_type: context_1.BuildType.UNKNOWN_BUILD_TYPE,\n            browser_name: (_f = context.browser.name) !== null && _f !== void 0 ? _f : '',\n            browser_version: (_g = context.browser.version) !== null && _g !== void 0 ? _g : '',\n            height_px: context.browser.height,\n            width_px: context.browser.width,\n            environment: getEnvironment(environment),\n            is_super_pos: false,\n            user_agent: context.userAgent,\n        },\n        subject: {\n            person_token: (_h = context.subject.personToken) !== null && _h !== void 0 ? _h : '',\n            merchant_token: (_j = context.subject.merchantToken) !== null && _j !== void 0 ? _j : '',\n            anonymous_token: (_k = context.subject.anonymousToken) !== null && _k !== void 0 ? _k : '',\n            unit_token: (_l = context.subject.unitToken) !== null && _l !== void 0 ? _l : '',\n            employment_token: (_m = context.subject.employmentToken) !== null && _m !== void 0 ? _m : '',\n            credential_token: (_o = context.subject.credentialToken) !== null && _o !== void 0 ? _o : '',\n        },\n        session: {\n            token: context.session.token,\n            start_time_millis: context.session.startTimeMillis,\n        },\n        page: {\n            path: context.page.path,\n            referrer: context.page.referrer,\n            search: context.page.search,\n            title: context.page.title,\n            url: context.page.url,\n        },\n    };\n}\nfunction getEnvironment(env) {\n    switch (env) {\n        case enums_1.Environments.stage: {\n            return context_1.Environment.STAGING;\n        }\n        case enums_1.Environments.production: {\n            return context_1.Environment.PRODUCTION;\n        }\n        default: {\n            return context_1.Environment.OTHER;\n        }\n    }\n}\nfunction getOsName(osName) {\n    switch (osName) {\n        case 'Android': {\n            return context_1.OperatingSystemName.ANDROID_WEB;\n        }\n        case 'iOS': {\n            return context_1.OperatingSystemName.IOS_WEB;\n        }\n        case 'Windows': {\n            return context_1.OperatingSystemName.WINDOWS;\n        }\n        case 'Mac OS': {\n            return context_1.OperatingSystemName.MAC_OS;\n        }\n        case 'Linux':\n        case 'Ubuntu':\n        case 'Fedora':\n        case 'Arch':\n        case 'Debian':\n        case 'CentOS':\n        case 'Mint':\n        case 'RedHat':\n        case 'VectorLinux': {\n            return context_1.OperatingSystemName.LINUX;\n        }\n        default: {\n            return context_1.OperatingSystemName.UNKNOWN_OS;\n        }\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNetworkInfo = getNetworkInfo;\nconst context_1 = require(\"../../../protos/squareup/unifiedeventing/messages/context\");\nfunction getNetworkInfo() {\n    // Currently only Chrome OS provides a means of determining the exact type of connection\n    // Navigator.connection.effectiveType only (roughly) communicates speed and rtt\n    // https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/effectiveType\n    // cdp-ingest will fill in ip address if the client doesn't provide it\n    return {\n        type: context_1.NetworkType.UNKNOWN_NETWORK,\n        ipAddress: '',\n    };\n}\n","\"use strict\";\n// These helper functions are pulled\n// from Segment's open source code\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pageDefaults = pageDefaults;\nfunction pageDefaults() {\n    const referrer = document.referrer;\n    // try catch ensures that the string is a valid URL\n    try {\n        const refUrl = new URL(referrer);\n        return {\n            referrer,\n            referrerHost: refUrl.host,\n            referrerPath: refUrl.pathname,\n            referrerSearch: refUrl.search,\n        };\n    }\n    catch (_a) {\n        return { referrer };\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSessionInfo = getSessionInfo;\nfunction getSessionInfo(messageOptions) {\n    var _a, _b, _c, _d;\n    const pageSessionToken = (_b = (_a = messageOptions.page) === null || _a === void 0 ? void 0 : _a.session_token) !== null && _b !== void 0 ? _b : '';\n    const normalizedPageSessionToken = typeof pageSessionToken === 'string'\n        ? pageSessionToken\n        : JSON.stringify(pageSessionToken);\n    const pageStartTimeMillis = (_d = (_c = messageOptions.page) === null || _c === void 0 ? void 0 : _c.startTimeMillis) !== null && _d !== void 0 ? _d : 0;\n    const normalizedPageStartTimeMillis = typeof pageStartTimeMillis === 'number' ? pageStartTimeMillis : 0;\n    return {\n        token: normalizedPageSessionToken,\n        startTimeMillis: normalizedPageStartTimeMillis,\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeContextSubject = makeContextSubject;\nexports.entityMatch = entityMatch;\nexports.getProp = getProp;\nconst validate_identity_1 = require(\"../user/validate-identity\");\nconst enums_1 = require(\"../enums\");\nfunction makeContextSubject() {\n    return {\n        userToken: this.user.entityId,\n        // cookie based token value\n        anonymousToken: (0, validate_identity_1.getAndSetAvtSafe)(),\n        // entity based token values check for matching entityType\n        // before falling back user traits or message props\n        employmentToken: this.entityMatch(enums_1.EntityTypes.employee)\n            ? this.user.entityId\n            : this.getProp('employmentToken'),\n        merchantToken: this.entityMatch(enums_1.EntityTypes.merchant)\n            ? this.user.entityId\n            : this.getProp('merchantToken'),\n        personToken: this.entityMatch(enums_1.EntityTypes.person)\n            ? this.user.entityId\n            : this.getProp('personToken'),\n        unitToken: this.entityMatch(enums_1.EntityTypes.unit)\n            ? this.user.entityId\n            : this.getProp('unitToken'),\n        /*\n        these fields are only pulled from user traits or message props\n        long term, it is best for these to be gotten via enrichment\n        See discussion: https://docs.google.com/document/d/1OqpYJGFqU30leYRBjXtau4xV-03m5hZ-OonNrXvQqDA/edit?disco=AAAAkvBE_VY\n    \n        Note that we don't persist these values to localStorage in the\n        the case that different users may share the same device.\n        e.g. an employee with employmentCanAccessMobileRegister permission\n        will log in and out of a device at the workplace. Then a different\n        employee may log in and not have that permission\n        */\n        legalEntityToken: this.getProp('legalEntityToken'),\n        credentialToken: this.getProp('credentialToken'),\n        deviceCredentialToken: this.getProp('deviceCredentialToken'),\n        employmentCanAccessMobileRegister: this.getProp('employmentCanAccessMobileRegister'),\n        employmentCanAccessSharedRegister: this.getProp('employmentCanAccessSharedRegister'),\n        employmentIsOwner: this.getProp('employmentIsOwner'),\n        accountCountryCode: this.getProp('accountCountryCode'),\n        registeredCountryCode: this.getProp('registeredCountryCode'),\n    };\n}\nfunction entityMatch(entityTypeKey) {\n    return this.user.entityType === entityTypeKey;\n}\n// This function will fail if any of these properties are false,\n// but the properties it pulls are typically truthy string values\nfunction getProp(propName) {\n    return this.user.entityTraits[propName] || this.properties[propName] || null;\n    // TODO when we add group, user.traits and context.traits\n    // will not be the same so we need to check in both places\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CdpVersion = exports.EmittedEvents = exports.Regex = exports.LogEventsToConsole = exports.Environments = exports.LsKeysV1 = exports.LegacyLSNames = exports.LegacyStoreNames = exports.LSNames = exports.CookieNames = exports.StoreNames = exports.EntityTypes = void 0;\nvar EntityTypes;\n(function (EntityTypes) {\n    EntityTypes[\"merchant\"] = \"merchant\";\n    EntityTypes[\"employee\"] = \"employee\";\n    EntityTypes[\"anonVisitor\"] = \"anonymous_visitor\";\n    EntityTypes[\"capitalCustomer\"] = \"capital_customer\";\n    EntityTypes[\"developer\"] = \"developer\";\n    EntityTypes[\"person\"] = \"person\";\n    EntityTypes[\"unit\"] = \"unit\";\n    EntityTypes[\"weeblyUser\"] = \"weebly_user\";\n    EntityTypes[\"squareEmployee\"] = \"square_employee\";\n    EntityTypes[\"buyer\"] = \"buyer\";\n})(EntityTypes || (exports.EntityTypes = EntityTypes = {}));\n// for use on cookies or localStorage\nvar StoreNames;\n(function (StoreNames) {\n    StoreNames[\"userEntityType\"] = \"cdpUserEntityType\";\n    StoreNames[\"userEntityId\"] = \"cdpUserEntityId\";\n})(StoreNames || (exports.StoreNames = StoreNames = {}));\n// same as store names but only to be used on cookies\nvar CookieNames;\n(function (CookieNames) {\n    CookieNames[\"avt\"] = \"_savt\";\n    CookieNames[\"enabled\"] = \"cdpCookiesEnabled\";\n    CookieNames[\"trackCookie\"] = \"track_cookie\";\n})(CookieNames || (exports.CookieNames = CookieNames = {}));\n// same as store names but only to be used on localStorage\nvar LSNames;\n(function (LSNames) {\n    LSNames[\"userEntityTraits\"] = \"cdpUserEntityTraits\";\n    LSNames[\"groupProps\"] = \"cdpGroupProps\";\n    /*\n    user traits and group props are potentially\n    massive amounts of data, even after encoding.\n    We may hit the size limit of the cookie (4kb)\n    */\n})(LSNames || (exports.LSNames = LSNames = {}));\n// for use on cookies or localStorage in old library\nvar LegacyStoreNames;\n(function (LegacyStoreNames) {\n    LegacyStoreNames[\"userEntityId\"] = \"dajs_user_id\";\n    LegacyStoreNames[\"userEntityType\"] = \"da_js_user_type\";\n    LegacyStoreNames[\"anonId\"] = \"dajs_anonymous_id\";\n    LegacyStoreNames[\"groupId\"] = \"dajs_group_id\";\n})(LegacyStoreNames || (exports.LegacyStoreNames = LegacyStoreNames = {}));\n// localStorage only keys in old library\nvar LegacyLSNames;\n(function (LegacyLSNames) {\n    LegacyLSNames[\"groupProps\"] = \"dajs_group_properties\";\n    LegacyLSNames[\"userEntityTraits\"] = \"dajs_user_traits\";\n})(LegacyLSNames || (exports.LegacyLSNames = LegacyLSNames = {}));\n// Used to keep track of temporarily cached dispatch queue items\nvar LsKeysV1;\n(function (LsKeysV1) {\n    LsKeysV1[\"items\"] = \"persisted-queue:v1:items\";\n    LsKeysV1[\"seen\"] = \"persisted-queue:v1:seen\";\n    LsKeysV1[\"lockKey\"] = \"persisted-queue:v1:lock\";\n})(LsKeysV1 || (exports.LsKeysV1 = LsKeysV1 = {}));\nvar Environments;\n(function (Environments) {\n    Environments[\"production\"] = \"production\";\n    Environments[\"stage\"] = \"staging\";\n    Environments[\"development\"] = \"development\";\n    Environments[\"localDev\"] = \"localDev\";\n})(Environments || (exports.Environments = Environments = {}));\nvar LogEventsToConsole;\n(function (LogEventsToConsole) {\n    LogEventsToConsole[\"on\"] = \"on\";\n    LogEventsToConsole[\"off\"] = \"off\";\n    LogEventsToConsole[\"default\"] = \"default\";\n})(LogEventsToConsole || (exports.LogEventsToConsole = LogEventsToConsole = {}));\n// regex is not a valid enum type, so using a class instead\nclass Regex {\n}\nexports.Regex = Regex;\nRegex.uuid = /^[\\dA-Fa-f]{8}(?:\\b-[\\dA-Fa-f]{4}){3}\\b-[\\dA-Fa-f]{12}$/;\n/* Seller Profile tokens: https://java-docs.square.com/roster/tokens\n * We have no guarantee these token formats will stay the same in the future, see link below\n * https://square.slack.com/archives/C03EH7224/p1670872738450729?thread_ts=1670861733.529879&cid=C03EH7224\n */\nRegex.merchantToken = /^(merchant:)?[\\dA-Z]{13,14}$/;\nRegex.unitToken = /^(unit:)?[\\dA-Z]{13,14}$/;\n// setting min length of 5 as that seems good enough\nRegex.employmentToken = /^(employment:)?[\\w-]{5,20}$/;\n// Events that will be dispatched to the window object\n// during parts of the message sending process\nvar EmittedEvents;\n(function (EmittedEvents) {\n    EmittedEvents[\"BatchCompleted\"] = \"cdp-batch-completed\";\n    EmittedEvents[\"BatchFailed\"] = \"cdp-batch-failed\";\n    EmittedEvents[\"BatchSent\"] = \"cdp-batch-sent\";\n    EmittedEvents[\"DeliveryFailure\"] = \"cdp-delivery-failure\";\n    EmittedEvents[\"DeliverySuccess\"] = \"cdp-delivery-success\";\n    EmittedEvents[\"DoNotRetry\"] = \"cdp-do-not-retry\";\n    EmittedEvents[\"ExcessiveColumns\"] = \"cdp-excessive-columns\";\n    EmittedEvents[\"Invoke\"] = \"cdp-invoke\";\n})(EmittedEvents || (exports.EmittedEvents = EmittedEvents = {}));\nvar CdpVersion;\n(function (CdpVersion) {\n    CdpVersion[\"V1\"] = \"v1\";\n    CdpVersion[\"V2\"] = \"v2\";\n})(CdpVersion || (exports.CdpVersion = CdpVersion = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Environments = exports.EmittedEvents = exports.LsKeysV1 = exports.LogEventsToConsole = exports.LegacyLSNames = exports.LegacyStoreNames = exports.LSNames = exports.CookieNames = exports.StoreNames = exports.EntityTypes = exports.CdpVersion = exports.getAndSetAvtSafe = exports.getAvt = exports.isOptions = exports.isMerchantToken = exports.isUUID = exports.isTraits = exports.isEntity = exports.CDP = void 0;\nconst constants_1 = require(\"./constants\");\nconst user_1 = require(\"./user\");\nconst dispatch_queue_1 = require(\"./queue/dispatch-queue\");\nconst track_message_1 = __importDefault(require(\"./messages/track-message\"));\nconst track_schema_message_1 = __importDefault(require(\"./messages/track-schema-message\"));\nconst identify_message_1 = __importDefault(require(\"./messages/identify-message\"));\nconst page_message_1 = __importDefault(require(\"./messages/page-message\"));\nconst group_message_1 = __importDefault(require(\"./messages/group-message\"));\nconst enums_1 = require(\"./enums\");\nconst utils_1 = require(\"./utils\");\nclass CDP {\n    constructor({ apiKey, application, environment, batchSize, maxRetryAttempts, maxTimeBetweenFlushes, logEventsToConsole = enums_1.LogEventsToConsole.default, useSameOrigin = false, }) {\n        this.key = apiKey;\n        this.version = constants_1.LIBRARY_VERSION;\n        this.name = constants_1.LIBRARY_NAME;\n        this.user = new user_1.User({ key: apiKey !== null && apiKey !== void 0 ? apiKey : application.name });\n        this.application = application;\n        (0, utils_1.assignReadOnly)(this, 'key', this.key);\n        (0, utils_1.assignReadOnly)(this, 'version', this.version);\n        (0, utils_1.assignReadOnly)(this, 'name', this.name);\n        (0, utils_1.assignReadOnly)(this, 'user', this.user);\n        (0, utils_1.assignReadOnly)(this, 'application', this.application);\n        let url;\n        switch (environment) {\n            case enums_1.Environments.production: {\n                url = { v1: \"https://api.squareup.com/v1/cdp/batch\" /* CDP_URL.production */, v2: \"https://api.squareup.com/1.0/unifiedevents/batch\" /* CDP_V2_URL.production */ };\n                this.environment = enums_1.Environments.production;\n                (0, utils_1.assignReadOnly)(this, 'environment', enums_1.Environments.production);\n                break;\n            }\n            case enums_1.Environments.localDev: {\n                url = { v1: \"http://localhost:3000/v1/cdp/batch\" /* CDP_URL.development */, v2: \"http://localhost:3000/1.0/unifiedevents/batch\" /* CDP_V2_URL.development */ };\n                this.environment = enums_1.Environments.localDev;\n                (0, utils_1.assignReadOnly)(this, 'environment', enums_1.Environments.development);\n                break;\n            }\n            default: {\n                url = { v1: \"https://api.squarestagingexternal.com/v1/cdp/batch\" /* CDP_URL.stage */, v2: \"https://api.squareupstaging.com/1.0/unifiedevents/batch\" /* CDP_V2_URL.stage */ };\n                this.environment = enums_1.Environments.stage;\n                (0, utils_1.assignReadOnly)(this, 'environment', enums_1.Environments.stage);\n                break;\n            }\n        }\n        if (useSameOrigin) {\n            this.url = {\n                v1: `${window.location.origin}/v1/cdp/batch`,\n                v2: `${window.location.origin}/1.0/unifiedevents/batch`,\n            };\n            (0, utils_1.assignReadOnly)(this.url, 'v1', `${window.location.origin}/v1/cdp/batch`);\n            (0, utils_1.assignReadOnly)(this.url, 'v2', `${window.location.origin}/1.0/unifiedevents/batch`);\n        }\n        else {\n            this.url = url;\n            (0, utils_1.assignReadOnly)(this.url, 'v1', url.v1);\n            (0, utils_1.assignReadOnly)(this.url, 'v2', url.v2);\n        }\n        this.queue = new dispatch_queue_1.DispatchQueue({\n            url: this.url,\n            environment: this.environment,\n            batchSize,\n            maxRetryAttempts,\n            maxTimeBetweenFlushes,\n            key: apiKey !== null && apiKey !== void 0 ? apiKey : application.name,\n        });\n        (0, utils_1.assignReadOnly)(this, 'queue', this.queue);\n        this.setConfig('logEventsToConsole', logEventsToConsole);\n    }\n    setConfig(setting, value) {\n        if (setting === undefined || value === undefined) {\n            (0, utils_1.throwError)(`No value passed for \"${setting}\"`);\n        }\n        switch (setting) {\n            case 'maxRetryAttempts':\n            case 'batchSize':\n            case 'maxTimeBetweenFlushes': {\n                if (!Number.isNaN(Number(value))) {\n                    this.queue[setting] = Number(value);\n                    return;\n                }\n                break;\n            }\n            case 'logEventsToConsole': {\n                if (Object.values(enums_1.LogEventsToConsole).includes(value)) {\n                    this.queue[setting] = (0, utils_1.shouldLogEventsToConsole)(value, this.environment);\n                    return;\n                }\n                break;\n            }\n            default: {\n                (0, utils_1.throwError)(`\"${setting}\" is not a valid setting`);\n            }\n        }\n        (0, utils_1.throwError)(`Invalid value passed for \"${setting}\"`);\n    }\n    getConfig(setting) {\n        switch (setting) {\n            case 'maxRetryAttempts':\n            case 'batchSize':\n            case 'maxTimeBetweenFlushes': {\n                return this.queue[setting];\n            }\n            case 'name':\n            case 'version':\n            case 'environment': {\n                return this[setting];\n            }\n            case 'logEventsToConsole': {\n                return this.queue.logEventsToConsole;\n            }\n            default:\n        }\n        return undefined;\n    }\n    /**\n     * Backwards compatible track function.\n     * Use the trackStrict method if writing new API calls.\n     */\n    track(eventName, properties, options, callbackFn) {\n        // check that event name is a valid non-empty string\n        if (!(0, utils_1.isString)(eventName) || !eventName.trim()) {\n            (0, utils_1.throwError)('\"eventName\" argument is required.');\n        }\n        // Argument reshuffling code copied from data-api.js\n        /* eslint-disable no-param-reassign */\n        if ((0, utils_1.isFunction)(options)) {\n            callbackFn = options;\n            options = undefined;\n        }\n        if ((0, utils_1.isFunction)(properties)) {\n            callbackFn = properties;\n            options = undefined;\n            properties = {};\n        }\n        /* eslint-enable no-param-reassign */\n        if (properties && !(0, utils_1.isRecord)(properties)) {\n            (0, utils_1.warn)('Argument \"properties\" is not an object. Use the trackStrict method which has consistent method arguments.');\n        }\n        this.trackStrict({\n            eventName,\n            eventProps: (0, utils_1.isRecord)(properties) ? properties : {},\n            options: options !== null && options !== void 0 ? options : {},\n        });\n        (0, utils_1.timeout)(callbackFn);\n        return this;\n    }\n    /**\n     * Type safe track function\n     */\n    trackStrict(trackArgs) {\n        const { eventName, eventProps, options } = trackArgs;\n        if (this.key === undefined) {\n            (0, utils_1.throwError)('API key is required for track events');\n        }\n        new track_message_1.default({\n            queue: this.queue,\n            user: this.user,\n            application: this.application,\n            apiKey: this.key,\n        }).fire({\n            apiKey: this.key,\n            eventName,\n            properties: eventProps !== null && eventProps !== void 0 ? eventProps : {},\n            options,\n        });\n    }\n    trackWithSchema(event, options) {\n        new track_schema_message_1.default({\n            queue: this.queue,\n            user: this.user,\n            application: this.application,\n        }).fire({ event, options });\n    }\n    /**\n     * Backwards compatible identify function.\n     * Use the identifyStrict method if writing new API calls.\n     */\n    identify(\n    // no validation for entity Id or Type as this will default\n    // to anonymous with AVT if values here are incorrect\n    entityId, entityType, traits, options, callbackFn) {\n        // Argument reshuffling code copied from data-api.js\n        /* eslint-disable no-param-reassign */\n        if ((0, utils_1.isFunction)(options)) {\n            callbackFn = options;\n            options = null;\n        }\n        if ((0, utils_1.isFunction)(traits)) {\n            callbackFn = traits;\n            options = null;\n            traits = null;\n        }\n        /* eslint-enable no-param-reassign */\n        if (traits && !(0, utils_1.isTraits)(traits)) {\n            (0, utils_1.warn)('Argument \"traits\" is not an object. Use the identifyStrict method which has consistent method arguments.');\n        }\n        this.identifyStrict({\n            entityId,\n            entityType,\n            traits: (0, utils_1.isTraits)(traits) ? traits : {},\n            options: options !== null && options !== void 0 ? options : {},\n        });\n        (0, utils_1.timeout)(callbackFn);\n        return this;\n    }\n    /**\n     * Type safe track function\n     */\n    identifyStrict(identifyArgs) {\n        if (this.key === undefined) {\n            (0, utils_1.throwError)('API key is required for identify events');\n        }\n        const { entityId, entityType, traits, options } = identifyArgs;\n        this.user._identify(entityId, entityType, traits);\n        new identify_message_1.default({\n            queue: this.queue,\n            user: this.user,\n            application: this.application,\n            apiKey: this.key,\n        }).fire({ apiKey: this.key, traits: this.user.entityTraits, options });\n    }\n    /**\n     * Backwards compatible page function.\n     * Use the pageStrict method if writing new API calls.\n     */\n    page(pageCategory, pageName, properties, options, callbackFn) {\n        // Argument reshuffling code copied from data-api.js\n        /* eslint-disable no-param-reassign */\n        if ((0, utils_1.isFunction)(options)) {\n            callbackFn = options;\n            options = null;\n        }\n        if ((0, utils_1.isFunction)(properties)) {\n            callbackFn = properties;\n            options = properties = null;\n        }\n        if ((0, utils_1.isFunction)(pageName)) {\n            callbackFn = pageName;\n            options = properties = pageName = undefined;\n        }\n        if ((0, utils_1.isObject)(pageCategory)) {\n            options = pageName;\n            properties = pageCategory;\n            pageName = pageCategory = undefined;\n        }\n        if ((0, utils_1.isObject)(pageName)) {\n            options = properties;\n            properties = pageName;\n            pageName = undefined;\n        }\n        if ((0, utils_1.isString)(pageCategory) && !(0, utils_1.isString)(pageName)) {\n            pageName = pageCategory;\n            pageCategory = undefined;\n        }\n        /* eslint-enable no-param-reassign */\n        if (pageCategory && !(0, utils_1.isString)(pageCategory)) {\n            (0, utils_1.warn)('Argument \"pageCategory\" is not a string. Use the pageStrict method which has consistent method arguments.');\n        }\n        if (pageName && !(0, utils_1.isString)(pageName)) {\n            (0, utils_1.warn)('Argument \"pageName\" is not a string. Use the pageStrict method which has consistent method arguments.');\n        }\n        if (properties && !(0, utils_1.isRecord)(properties)) {\n            (0, utils_1.warn)('Argument \"properties\" is not an object. Use the pageStrict method which has consistent method arguments.');\n        }\n        if (options && !(0, utils_1.isRecord)(options)) {\n            (0, utils_1.warn)('Argument \"options\" is not an object. Use the pageStrict method which has consistent method arguments.');\n        }\n        this.pageStrict({\n            pageCategory: (0, utils_1.isString)(pageCategory) ? pageCategory : undefined,\n            pageName: (0, utils_1.isString)(pageName) ? pageName : undefined,\n            eventProps: (0, utils_1.isRecord)(properties) ? properties : undefined,\n            options: (0, utils_1.isRecord)(options) ? options : undefined,\n        });\n        (0, utils_1.timeout)(callbackFn);\n        return this;\n    }\n    /**\n     * Type safe page function\n     */\n    pageStrict(pageArgs) {\n        const { pageCategory, pageName, eventProps, options } = pageArgs;\n        if (this.key === undefined) {\n            (0, utils_1.throwError)('API key is required for page events');\n        }\n        new page_message_1.default({\n            queue: this.queue,\n            user: this.user,\n            application: this.application,\n            apiKey: this.key,\n        }).fire({\n            apiKey: this.key,\n            pageCategory,\n            pageName,\n            properties: eventProps !== null && eventProps !== void 0 ? eventProps : {},\n            options,\n        });\n    }\n    /**\n     * Unsupported group function. Reach out to #proj-cdp-js\n     * if you intend to use this function.\n     */\n    group(groupId, traits, options) {\n        this.groupStrict({ groupId, traits, options });\n        return this;\n    }\n    groupStrict(groupArgs) {\n        if (this.key === undefined) {\n            (0, utils_1.throwError)('API key is required for group events');\n        }\n        const { groupId, traits, options } = groupArgs;\n        new group_message_1.default({\n            queue: this.queue,\n            user: this.user,\n            application: this.application,\n            apiKey: this.key,\n        }).fire({ apiKey: this.key, groupId, traits, options });\n    }\n}\nexports.CDP = CDP;\n// Type guards\nvar type_guards_1 = require(\"./utils/type-guards\");\nObject.defineProperty(exports, \"isEntity\", { enumerable: true, get: function () { return type_guards_1.isEntity; } });\nObject.defineProperty(exports, \"isTraits\", { enumerable: true, get: function () { return type_guards_1.isTraits; } });\nObject.defineProperty(exports, \"isUUID\", { enumerable: true, get: function () { return type_guards_1.isUUID; } });\nObject.defineProperty(exports, \"isMerchantToken\", { enumerable: true, get: function () { return type_guards_1.isMerchantToken; } });\nObject.defineProperty(exports, \"isOptions\", { enumerable: true, get: function () { return type_guards_1.isOptions; } });\n// User identity\nvar validate_identity_1 = require(\"./user/validate-identity\");\nObject.defineProperty(exports, \"getAvt\", { enumerable: true, get: function () { return validate_identity_1.getAvt; } });\nObject.defineProperty(exports, \"getAndSetAvtSafe\", { enumerable: true, get: function () { return validate_identity_1.getAndSetAvtSafe; } });\n// Enums\nvar enums_2 = require(\"./enums\");\nObject.defineProperty(exports, \"CdpVersion\", { enumerable: true, get: function () { return enums_2.CdpVersion; } });\nObject.defineProperty(exports, \"EntityTypes\", { enumerable: true, get: function () { return enums_2.EntityTypes; } });\nObject.defineProperty(exports, \"StoreNames\", { enumerable: true, get: function () { return enums_2.StoreNames; } });\nObject.defineProperty(exports, \"CookieNames\", { enumerable: true, get: function () { return enums_2.CookieNames; } });\nObject.defineProperty(exports, \"LSNames\", { enumerable: true, get: function () { return enums_2.LSNames; } });\nObject.defineProperty(exports, \"LegacyStoreNames\", { enumerable: true, get: function () { return enums_2.LegacyStoreNames; } });\nObject.defineProperty(exports, \"LegacyLSNames\", { enumerable: true, get: function () { return enums_2.LegacyLSNames; } });\nObject.defineProperty(exports, \"LogEventsToConsole\", { enumerable: true, get: function () { return enums_2.LogEventsToConsole; } });\nObject.defineProperty(exports, \"LsKeysV1\", { enumerable: true, get: function () { return enums_2.LsKeysV1; } });\nObject.defineProperty(exports, \"EmittedEvents\", { enumerable: true, get: function () { return enums_2.EmittedEvents; } });\nObject.defineProperty(exports, \"Environments\", { enumerable: true, get: function () { return enums_2.Environments; } });\nexports.default = CDP;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = __importDefault(require(\"./message\"));\nclass GroupMessage extends message_1.default {\n    fire({ apiKey, groupId, traits = {}, options = {}, }) {\n        this.call({\n            apiKey,\n            groupId,\n            traits,\n            apiMethod: 'group',\n        }, options);\n    }\n}\nexports.default = GroupMessage;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = __importDefault(require(\"./message\"));\nclass IdentifyMessage extends message_1.default {\n    fire({ apiKey, traits = {}, options = {}, }) {\n        this.call({\n            apiKey,\n            traits,\n            apiMethod: 'identify',\n        }, options);\n    }\n}\nexports.default = IdentifyMessage;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMessageVersion = getMessageVersion;\nconst enums_1 = require(\"../enums\");\nfunction getMessageVersion(message) {\n    if (message.apiMethod === 'trackWithSchema') {\n        return enums_1.CdpVersion.V2;\n    }\n    return enums_1.CdpVersion.V1;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_version_1 = require(\"./message-version\");\nconst uuid_1 = require(\"uuid\");\nconst validate_identity_1 = require(\"../user/validate-identity\");\nconst context_1 = require(\"../context\");\nconst utils_1 = require(\"../utils\");\nconst clean_1 = __importDefault(require(\"../utils/clean\"));\nconst merge_1 = __importDefault(require(\"../utils/merge\"));\nconst enums_1 = require(\"../enums\");\nconst assign_not_found_1 = require(\"../utils/assign-not-found\");\nclass Message {\n    constructor({ queue, user, application, apiKey, }) {\n        this.queue = queue;\n        this.user = user;\n        this.apiKey = apiKey;\n        this.properties = {};\n        this.options = {};\n        this.integrations = {};\n        this.application = application;\n        // these functions need reference to this context\n        this.entityMatch = context_1.entityMatch.bind(this);\n        this.makeContextObj = context_1.makeContextObj.bind(this);\n        this.makeContextSubject = context_1.makeContextSubject.bind(this);\n        this.getProp = context_1.getProp.bind(this);\n    }\n    call(msg, options) {\n        var _a;\n        if (((0, utils_1.isTrack)(msg) || (0, utils_1.isPage)(msg)) && msg.properties) {\n            this.properties = msg.properties;\n        }\n        this.integrations = (_a = options.integrations) !== null && _a !== void 0 ? _a : {};\n        this.options = options;\n        const message = (0, clean_1.default)(this.makePayload(msg, options.overrides));\n        window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.Invoke, {\n            detail: { message, cdpVersion: (0, message_version_1.getMessageVersion)(message) },\n        }));\n        this.queue.push(message);\n    }\n    /**\n     * Payload Documentation\n     * {@link  https://zeroheight.com/55c402603/v/latest/p/61d3c0-data-api-reference/b/37f1b1}\n     */\n    makePayload(msg, overrides) {\n        const context = this.makeContextObj();\n        if ((0, utils_1.isIdentify)(msg)) {\n            // if identify, remove traits from context object\n            delete context.traits;\n        }\n        // if page, copy context.page to properties\n        if ((0, utils_1.isPage)(msg) && msg.properties) {\n            /* eslint-disable no-param-reassign */\n            msg.properties.name = msg.name;\n            msg.properties.category = msg.category;\n            /* eslint-enable no-param-reassign */\n            (0, assign_not_found_1.assignNotFoundValues)(msg.properties, context.page);\n        }\n        if (!(0, utils_1.isTrackWithSchema)(msg)) {\n            // eslint-disable-next-line no-param-reassign\n            msg.apiKey = this.apiKey;\n        }\n        const payload = Object.assign(Object.assign({}, msg), { anonymousId: (0, validate_identity_1.getAndSetAvtSafe)(), entityType: this.user.entityType, entityId: this.user.entityType === enums_1.EntityTypes.anonVisitor\n                ? '' // CDP does not expect an entity ID if type is anonVisitor\n                : this.user.entityId, context, integrations: this.integrations, messageId: (0, uuid_1.v4)(), originalTimestamp: new Date().toISOString(), sentAt: null, timestamp: new Date().toISOString() });\n        return (0, merge_1.default)(payload, overrides !== null && overrides !== void 0 ? overrides : {});\n    }\n}\nexports.default = Message;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = __importDefault(require(\"./message\"));\nclass PageMessage extends message_1.default {\n    fire({ apiKey, pageCategory, pageName, properties = {}, options = {}, }) {\n        this.call({\n            apiKey,\n            properties,\n            apiMethod: 'page',\n            name: pageName,\n            category: pageCategory,\n        }, options);\n    }\n}\nexports.default = PageMessage;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = __importDefault(require(\"./message\"));\nclass TrackMessage extends message_1.default {\n    fire({ apiKey, eventName, properties = {}, options = {}, }) {\n        this.call({\n            apiKey,\n            properties,\n            eventName,\n            apiMethod: 'track',\n        }, options);\n    }\n}\nexports.default = TrackMessage;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst message_1 = __importDefault(require(\"./message\"));\nclass TrackSchemaMessage extends message_1.default {\n    fire({ event, options = {}, }) {\n        this.call({\n            event,\n            apiMethod: 'trackWithSchema',\n        }, options);\n    }\n}\nexports.default = TrackSchemaMessage;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DispatchQueue = void 0;\nconst uuid_1 = require(\"uuid\");\nconst on_page_visibility_change_1 = require(\"./on-page-visibility-change\");\nconst enums_1 = require(\"../enums\");\nconst signature_1 = __importDefault(require(\"../signature\"));\nconst utils_1 = require(\"../utils\");\nconst utils_2 = require(\"./utils\");\nconst make_context_schema_1 = require(\"../context/make-context-schema\");\nconst message_version_1 = require(\"../messages/message-version\");\nclass DispatchQueue {\n    constructor({ url, environment, batchSize = utils_2.DEFAULT_BATCH_SIZE, maxTimeBetweenFlushes = utils_2.DEFAULT_MAX_TIME_BETWEEN_FLUSHES, logEventsToConsole = false, maxRetryAttempts = utils_2.DEFAULT_MAX_RETRY_ATTEMPTS, key, }) {\n        this.maxRetryAttempts = maxRetryAttempts;\n        this.url = url;\n        this.environment = environment;\n        this.logEventsToConsole = logEventsToConsole;\n        this.pageUnloaded = false;\n        this.batchSize = batchSize;\n        this.maxTimeBetweenFlushes = maxTimeBetweenFlushes;\n        this.queue = [];\n        this.eventsAttempts = {};\n        this.key = key;\n        // recover pending events and events attempt data from localstorage\n        (0, utils_2.mutex)({\n            onUnlock: () => {\n                let saved = [];\n                let lastSeen = {};\n                try {\n                    saved = (0, utils_2.getPersistedQueue)(this.key);\n                    lastSeen = (0, utils_2.getEventsAttempts)(this.key);\n                    (0, utils_2.remove)(`${enums_1.LsKeysV1.items}_${this.key}`);\n                    (0, utils_2.remove)(`${enums_1.LsKeysV1.seen}_${this.key}`);\n                    this.queue = [...saved, ...this.queue];\n                    this.eventsAttempts = Object.assign(Object.assign({}, lastSeen), this.eventsAttempts);\n                }\n                catch (err) {\n                    (0, utils_1.error)(err);\n                }\n            },\n            key: this.key,\n        });\n        // add onPageLeave event listener, to flush queue\n        // onPageLeave will trigger on: tab away, close tab, switch to other app (mobile)\n        (0, on_page_visibility_change_1.onVisibilityChange)((visibilityState) => {\n            if (visibilityState === 'hidden') {\n                this.pageUnloaded = true;\n                // keepalive requests have a limit of 64kb requst size\n                // https://javascript.info/fetch-api#:~:text=We%20can't%20send%20megabytes,for%20keepalive%20requests%20is%2064KB.\n                if (this.length > 0) {\n                    this.flushUpTo64kb();\n                }\n            }\n            else {\n                this.pageUnloaded = false;\n            }\n        });\n        window.addEventListener('pagehide', () => {\n            // we deliberately want to use the less powerful 'pagehide' API to only persist on events\n            // where the cdp.js instance gets destroyed upon closing tab or page refresh, and not on tab away.\n            if (this.length > 0) {\n                const items = [...this.queue];\n                (0, utils_2.mutex)({\n                    onUnlock: () => {\n                        (0, utils_2.persistEventsToStorage)({ items, key: this.key });\n                        (0, utils_2.persistEventsAttempts)({\n                            memory: this.eventsAttempts,\n                            key: this.key,\n                        });\n                    },\n                    key: this.key,\n                });\n            }\n        });\n    }\n    scheduleFlush() {\n        if (this.schedule) {\n            return;\n        }\n        this.schedule = setTimeout(() => {\n            this.schedule = undefined;\n            this.flush();\n        }, this.maxTimeBetweenFlushes);\n    }\n    push(...events) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const filteredEvents = events.filter((event) => {\n                const attempts = this.updateRetryAttempt(event);\n                const keepMessage = attempts <= this.maxRetryAttempts && !this.includesMessage(event);\n                if (!keepMessage) {\n                    window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.DoNotRetry, {\n                        detail: {\n                            message: event,\n                            attempts,\n                            cdpVersion: (0, message_version_1.getMessageVersion)(event),\n                        },\n                    }));\n                }\n                return keepMessage;\n            });\n            this.queue.push(...filteredEvents);\n            this.queue = this.queue.sort((a, b) => this.getRetryAttempt(a) - this.getRetryAttempt(b));\n            const batchSizeLimitReached = this.length >= this.batchSize;\n            yield (batchSizeLimitReached || this.pageUnloaded\n                ? this.flush()\n                : this.scheduleFlush());\n        });\n    }\n    getRetryAttempt(event) {\n        var _a;\n        return (_a = this.eventsAttempts[event.messageId]) !== null && _a !== void 0 ? _a : 0;\n    }\n    updateRetryAttempt(event) {\n        this.eventsAttempts[event.messageId] = this.getRetryAttempt(event) + 1;\n        return this.getRetryAttempt(event);\n    }\n    includesMessage(event) {\n        return (this.queue.includes(event) ||\n            Boolean(this.queue.some((i) => i.messageId === event.messageId)));\n    }\n    get length() {\n        return this.queue.length;\n    }\n    backToQueue(batch) {\n        batch.forEach((event) => {\n            // eslint-disable-next-line no-param-reassign\n            event.sentAt = null;\n        });\n        this.push(...batch);\n    }\n    createUnifiedEventingMessage(message) {\n        return {\n            context: (0, make_context_schema_1.convertContext)(message.context, this.environment),\n            message_id: message.messageId,\n            entity_type: message.entityType,\n            entity_id: message.entityId,\n            timestamp: new Date(message.timestamp).getTime(),\n            track: {\n                event_name: message.event.name,\n                properties: (0, utils_2.stringifyEvent)(message.event),\n            },\n        };\n    }\n    sendBatch(batch) {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (batch.length === 0) {\n                return;\n            }\n            const cdpMessages = [];\n            const ueMessages = [];\n            for (const message of batch) {\n                if (message.apiMethod === 'trackWithSchema') {\n                    ueMessages.push({\n                        apiMessage: message,\n                        unifiedEventingMessage: this.createUnifiedEventingMessage(message),\n                    });\n                }\n                else {\n                    cdpMessages.push(message);\n                }\n            }\n            yield Promise.all([\n                this.sendCdpMessages(cdpMessages),\n                this.sendUeMessages(ueMessages),\n            ].filter(Boolean));\n        });\n    }\n    sendCdpMessages(apiMessageBatch) {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (apiMessageBatch.length === 0) {\n                return;\n            }\n            const batch = [];\n            apiMessageBatch.forEach((message) => {\n                if (!(0, utils_1.isTrackWithSchema)(message)) {\n                    batch.push(message);\n                }\n            });\n            if (batch.length !== apiMessageBatch.length) {\n                (0, utils_1.throwError)('there are Unified Eventing Messages in the batch');\n            }\n            const payloadStr = JSON.stringify({ batch });\n            const apiKey = batch[0].apiKey;\n            const requestSignature = (0, signature_1.default)(payloadStr, apiKey);\n            const authKey = window.btoa(`${apiKey}:`);\n            const markMessageId = batch[0].messageId;\n            (0, utils_2.startBatchTracking)(markMessageId);\n            const batchId = (0, uuid_1.v4)();\n            (0, utils_2.emitBatchSent)({\n                batchId,\n                batchSize: batch.length,\n                cdpVersion: enums_1.CdpVersion.V1,\n            });\n            yield fetch(this.url.v1, {\n                keepalive: this.pageUnloaded,\n                headers: {\n                    'Content-Type': 'application/json',\n                    'X-CDP-Batch-ID': requestSignature,\n                    authorization: `Basic ${authKey}`,\n                },\n                method: 'post',\n                body: payloadStr,\n            })\n                .then((resp) => {\n                const requestLatency = (0, utils_2.endBatchTrackingAndGetLatency)(markMessageId);\n                (0, utils_2.emitBatchCompleted)({\n                    batchId,\n                    batchSize: batch.length,\n                    requestLatency,\n                    httpStatus: resp.status,\n                    cdpVersion: enums_1.CdpVersion.V1,\n                });\n                this.handleResponse(resp, batch);\n            })\n                .catch((e) => {\n                const requestLatency = (0, utils_2.endBatchTrackingAndGetLatency)(markMessageId);\n                (0, utils_2.emitBatchFailed)({\n                    batchId,\n                    batchSize: batch.length,\n                    requestLatency,\n                    cdpVersion: enums_1.CdpVersion.V1,\n                });\n                (0, utils_1.warn)(e);\n                this.backToQueue(batch);\n            });\n        });\n    }\n    sendUeMessages(messages) {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (messages.length === 0) {\n                return;\n            }\n            const request = {\n                ue_messages: messages.map((m) => m.unifiedEventingMessage),\n                sent_at: Date.now(),\n            };\n            const batch = messages.map((m) => m.apiMessage);\n            const batchId = (0, uuid_1.v4)();\n            (0, utils_2.emitBatchSent)({\n                batchId,\n                batchSize: batch.length,\n                cdpVersion: enums_1.CdpVersion.V2,\n            });\n            const markMessageId = messages[0].unifiedEventingMessage.message_id;\n            (0, utils_2.startBatchTracking)(markMessageId);\n            const url = this.url.v2;\n            yield fetch(url, {\n                keepalive: this.pageUnloaded,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n                method: 'post',\n                body: JSON.stringify(request),\n            })\n                .then((resp) => __awaiter(this, void 0, void 0, function* () {\n                const requestLatency = (0, utils_2.endBatchTrackingAndGetLatency)(markMessageId);\n                let rejectedMessages = [];\n                if (resp.ok) {\n                    const data = yield resp.json();\n                    if ('errors' in data) {\n                        rejectedMessages = data.errors.map((_a) => {\n                            var { message_id } = _a, args = __rest(_a, [\"message_id\"]);\n                            return (Object.assign({ messageId: message_id }, args));\n                        });\n                    }\n                }\n                (0, utils_2.emitBatchCompleted)({\n                    batchId,\n                    batchSize: messages.length,\n                    requestLatency,\n                    rejectedMessages,\n                    httpStatus: resp.status,\n                    cdpVersion: enums_1.CdpVersion.V2,\n                });\n                this.handleResponse(resp, batch, rejectedMessages);\n                (0, utils_1.logRejectedMessages)(rejectedMessages);\n            }))\n                .catch((e) => {\n                const requestLatency = (0, utils_2.endBatchTrackingAndGetLatency)(markMessageId);\n                (0, utils_2.emitBatchFailed)({\n                    batchId,\n                    batchSize: messages.length,\n                    requestLatency,\n                    cdpVersion: enums_1.CdpVersion.V2,\n                });\n                (0, utils_1.warn)(e);\n                this.backToQueue(batch);\n            });\n        });\n    }\n    handleResponse(resp, batch, rejectedMessages = []) {\n        // we don't want to retry if we get i.e 401 which indicates an invalid signature\n        if (resp.status === 429 || resp.status >= 500) {\n            this.backToQueue(batch);\n        }\n        else {\n            batch.forEach((message) => {\n                let convertedContext = undefined;\n                if (message.apiMethod === 'trackWithSchema') {\n                    convertedContext = (0, make_context_schema_1.convertContext)(message.context, this.environment);\n                }\n                const rejectedMessage = rejectedMessages\n                    .filter(({ messageId }) => messageId === message.messageId)\n                    .pop();\n                const isMessageSuccessful = resp.status < 400 && !rejectedMessage;\n                const schemaError = rejectedMessage\n                    ? { reason: rejectedMessage.reason, type: rejectedMessage.type }\n                    : {};\n                const eventType = isMessageSuccessful\n                    ? enums_1.EmittedEvents.DeliverySuccess\n                    : enums_1.EmittedEvents.DeliveryFailure;\n                const eventOptions = {\n                    detail: Object.assign({ cdpVersion: (0, message_version_1.getMessageVersion)(message), message: Object.assign(Object.assign({}, message), { context: convertedContext !== null && convertedContext !== void 0 ? convertedContext : message.context }), status: resp.status }, schemaError),\n                };\n                // Emit event to allow listeners to react to success/failure\n                window.dispatchEvent(new CustomEvent(eventType, eventOptions));\n                // Log successful events to console if enabled\n                if (resp.status < 400 && this.logEventsToConsole) {\n                    if (message.apiMethod === 'trackWithSchema') {\n                        (0, utils_1.logEvent)(message, convertedContext);\n                    }\n                    else {\n                        (0, utils_1.logEvent)(message);\n                    }\n                    if (message.apiMethod === 'track') {\n                        (0, utils_1.warnAboutExcessiveColumns)(message);\n                    }\n                }\n            });\n        }\n    }\n    flushUpTo64kb() {\n        return __awaiter(this, void 0, void 0, function* () {\n            const batchedEvents = [];\n            let currPayloadSize = 0;\n            const sentAt = new Date().toISOString();\n            while (this.queue.length > 0) {\n                const eventWithSentAt = Object.assign(Object.assign({}, this.queue[0]), { sentAt });\n                const currEventSize = (0, utils_2.kilobytes)(eventWithSentAt);\n                // set limit to 45 to give room for the rest of the request i.e headers\n                if (currPayloadSize + currEventSize > 45) {\n                    break;\n                }\n                this.queue.shift();\n                batchedEvents.push(eventWithSentAt);\n                currPayloadSize += currEventSize;\n            }\n            yield this.sendBatch(batchedEvents);\n        });\n    }\n    flush() {\n        return __awaiter(this, void 0, void 0, function* () {\n            if (this.queue.length > 0) {\n                const events = this.queue;\n                this.queue = [];\n                yield Promise.all((0, utils_2.batch)(events).map((batchedEvents) => this.sendBatch(batchedEvents)));\n            }\n        });\n    }\n}\nexports.DispatchQueue = DispatchQueue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onVisibilityChange = onVisibilityChange;\nfunction onVisibilityChange(callback) {\n    let unloaded = false; // prevents double firing if both are supported\n    window.addEventListener('pagehide', () => {\n        if (unloaded)\n            return;\n        unloaded = true;\n        callback('hidden');\n    });\n    document.addEventListener('visibilitychange', () => {\n        if (document.visibilityState === 'hidden') {\n            if (unloaded)\n                return;\n            unloaded = true;\n            callback('hidden');\n        }\n        else {\n            unloaded = false;\n            callback('visible');\n        }\n    });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_MAX_TIME_BETWEEN_FLUSHES = exports.DEFAULT_MAX_RETRY_ATTEMPTS = exports.DEFAULT_BATCH_SIZE = void 0;\nexports.kilobytes = kilobytes;\nexports.getPersistedQueue = getPersistedQueue;\nexports.persistEventsToStorage = persistEventsToStorage;\nexports.getEventsAttempts = getEventsAttempts;\nexports.persistEventsAttempts = persistEventsAttempts;\nexports.batch = batch;\nexports.remove = remove;\nexports.mutex = mutex;\nexports.stringifyEvent = stringifyEvent;\nexports.startBatchTracking = startBatchTracking;\nexports.endBatchTrackingAndGetLatency = endBatchTrackingAndGetLatency;\nexports.emitBatchSent = emitBatchSent;\nexports.emitBatchCompleted = emitBatchCompleted;\nexports.emitBatchFailed = emitBatchFailed;\nconst utils_1 = require(\"../utils\");\nconst enums_1 = require(\"../enums\");\nexports.DEFAULT_BATCH_SIZE = 1;\nexports.DEFAULT_MAX_RETRY_ATTEMPTS = 3;\nexports.DEFAULT_MAX_TIME_BETWEEN_FLUSHES = 3000;\nfunction kilobytes(buffer) {\n    // const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1;\n    const size = encodeURI(JSON.stringify(buffer)).length - 1;\n    return size / 1024;\n}\nfunction getPersistedQueue(key) {\n    const items = utils_1.ls.get(`${enums_1.LsKeysV1.items}_${key}`);\n    return (0, utils_1.isArray)(items) ? items : [];\n}\nfunction persistEventsToStorage({ items, key, }) {\n    const existing = getPersistedQueue(key);\n    const all = [...items, ...existing];\n    utils_1.ls.set(`${enums_1.LsKeysV1.items}_${key}`, JSON.stringify(all));\n}\nfunction getEventsAttempts(key) {\n    const stored = utils_1.ls.get(`${enums_1.LsKeysV1.seen}_${key}`);\n    return (0, utils_1.isObject)(stored) ? stored : {};\n}\nfunction persistEventsAttempts({ memory, key, }) {\n    const stored = getEventsAttempts(key);\n    utils_1.ls.set(`${enums_1.LsKeysV1.seen}_${key}`, JSON.stringify(Object.assign(Object.assign({}, stored), memory)));\n}\n// input = [e1, e2, e3, e4, e5], output = [[e1,e2], [e3,e4], [e5]]\nfunction batch(events) {\n    const result = [];\n    let index = 0;\n    const sentAt = new Date().toISOString();\n    events.forEach((event) => {\n        const eventWithSentAt = Object.assign(Object.assign({}, event), { sentAt });\n        const size = (result[index] ? kilobytes(result[index]) : 0) +\n            kilobytes(eventWithSentAt);\n        if (size >= 1000) {\n            index++;\n        }\n        if (result[index]) {\n            result[index].push(eventWithSentAt);\n        }\n        else {\n            result[index] = [eventWithSentAt];\n        }\n    });\n    return result;\n}\nfunction remove(key) {\n    utils_1.ls.remove(key);\n}\nfunction expired(lockExpirationTime) {\n    return Date.now() >= lockExpirationTime;\n}\n// a lock to prevent multiple instances of the event-queue to access localstorage\nfunction mutex({ onUnlock, attempt = 0, key, }) {\n    const lockTimeout = 50;\n    const rawLock = utils_1.ls.get(`${enums_1.LsKeysV1.lockKey}_${key}`);\n    const lock = rawLock ? rawLock : null;\n    const allowed = lock === null || expired(lock);\n    if (allowed) {\n        utils_1.ls.set(`${enums_1.LsKeysV1.lockKey}_${key}`, JSON.stringify(Date.now() + lockTimeout));\n        onUnlock();\n        utils_1.ls.remove(`${enums_1.LsKeysV1.lockKey}_${key}`);\n        return;\n    }\n    if (!allowed && attempt < 3) {\n        setTimeout(() => {\n            mutex({ onUnlock, key, attempt: attempt + 1 });\n        }, lockTimeout);\n    }\n    else {\n        (0, utils_1.error)('Unable to retrieve lock');\n    }\n}\nfunction stringifyEvent(event) {\n    const { parameters } = Object.assign({}, event);\n    delete parameters.cdf_entity;\n    delete parameters.cdf_action;\n    const stringVal = JSON.stringify(parameters);\n    return stringVal;\n}\nfunction startBatchTracking(markMessageId) {\n    window.performance.mark(`cdp-${markMessageId}-started`);\n}\nfunction endBatchTrackingAndGetLatency(markMessageId) {\n    window.performance.mark(`cdp-${markMessageId}-ended`);\n    const measureRequest = window.performance.measure(`cdp-${markMessageId}-measure`, `cdp-${markMessageId}-started`, `cdp-${markMessageId}-ended`);\n    window.performance.clearMarks(`cdp-${markMessageId}-started`);\n    window.performance.clearMarks(`cdp-${markMessageId}-ended`);\n    window.performance.clearMeasures(`cdp-${markMessageId}-measure`);\n    return measureRequest.duration;\n}\nfunction emitBatchSent({ batchId, batchSize, cdpVersion, }) {\n    window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.BatchSent, {\n        detail: {\n            batchId,\n            batchSize,\n            cdpVersion,\n        },\n    }));\n}\nfunction emitBatchCompleted({ batchId, batchSize, rejectedMessages = [], requestLatency, httpStatus, cdpVersion, }) {\n    window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.BatchCompleted, {\n        detail: {\n            batchId,\n            batchSize,\n            requestLatency,\n            rejectedMessages,\n            httpStatus,\n            cdpVersion,\n        },\n    }));\n}\nfunction emitBatchFailed({ batchId, batchSize, requestLatency, cdpVersion, }) {\n    window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.BatchFailed, {\n        detail: { batchId, batchSize, requestLatency, cdpVersion },\n    }));\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = signature;\nconst hmac_sha256_1 = __importDefault(require(\"crypto-js/hmac-sha256\"));\nconst enc_base64_1 = __importDefault(require(\"crypto-js/enc-base64\"));\nfunction signature(payloadStr, apiKey) {\n    const key = apiKey.replaceAll('-', '');\n    const hash = (0, hmac_sha256_1.default)(payloadStr, key);\n    return `v1:${enc_base64_1.default.stringify(hash)}`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.User = void 0;\nconst utils_1 = require(\"../utils\");\nconst validate_identity_1 = require(\"./validate-identity\");\nconst enums_1 = require(\"../enums\");\n// an abstraction for getting/setting user attributes to cookies or localStorage\nconst persistant_store_1 = require(\"./persistant-store\");\n/**\n * The only reason we're not using a private property is because of the size\n * that would add to the bundle when compiled. It really doesn't matter, though,\n * if this is shared between instances of `User` because it's just a wrapper\n * around cookies and localStorage.\n */\nlet store;\nclass User {\n    // set default entity, id, and traits\n    constructor({ key }) {\n        // Reinitializing in the constructor is easier\n        // to write tests with a fresh store instance.\n        // This makes no difference to the functionality\n        // of the persistentStore in actual use\n        store = new persistant_store_1.PersistentStore({ key });\n        // try to find entityType and id from storage\n        const id = store.getEntityId();\n        const entityType = store.getEntityType();\n        const traits = store.getEntityTraits();\n        this._identify(id, entityType, traits);\n    }\n    _setEntityId(passedId) {\n        (0, utils_1.assignReadOnly)(this, 'entityId', passedId);\n        store.setEntityId(passedId, this.entityType);\n    }\n    _setEntityType(passedEntity) {\n        (0, utils_1.assignReadOnly)(this, 'entityType', passedEntity);\n        store.setEntity(passedEntity);\n    }\n    _setEntityTraits(passedTraits) {\n        const newTraits = Object.assign(Object.assign({}, this.entityTraits), passedTraits);\n        (0, utils_1.assignReadOnly)(this, 'entityTraits', newTraits);\n        store.setEntityTraits(newTraits);\n    }\n    /**\n     * Set user identity without making a network call.\n     * Useful for testing.\n     */\n    _identify(id, type, traits) {\n        if ((0, validate_identity_1.entityIdAndTypeMatch)(id, type)) {\n            // entity needs to be set before id as setId require to know entity\n            this._setEntityType(type);\n            if (type === enums_1.EntityTypes.anonVisitor) {\n                // _savt is always the source of truth for anonymous_visitor\n                this._setEntityId((0, validate_identity_1.getAndSetAvtSafe)(id));\n            }\n            else {\n                this._setEntityId(id);\n            }\n            // if entity and type are mismatched and identify\n            // was not previously called (hence entity and id\n            // being falsey), default to anonymous and AVT. Rely\n            // on a new identify call in application logic to fix.\n        }\n        else if (!this.entityType || !this.entityId) {\n            this._setEntityType(enums_1.EntityTypes.anonVisitor);\n            this._setEntityId((0, validate_identity_1.getAndSetAvtSafe)());\n        }\n        // even if user identity is a mismatch,\n        // we should still set traits\n        if (!traits)\n            return;\n        if ((0, utils_1.isTraits)(traits)) {\n            this._setEntityTraits(traits);\n        }\n        else {\n            (0, utils_1.warn)(\"The third argument traits is not of type 'object'. Traits were not set.\");\n        }\n    }\n}\nexports.User = User;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersistentStore = void 0;\nconst utils_1 = require(\"../utils\");\nconst validate_identity_1 = require(\"./validate-identity\");\nconst enums_1 = require(\"../enums\");\n/**\n * An abstraction for getting/setting user attributes to cookies\n * if cookies are disabled, use localStore instead\n * We prefer cookies because they persist across Square subdomains\n * localStorage will only persist on the same domain\n * {@link https://stackoverflow.com/questions/53892989/do-subdomains-share-local-storage}\n */\nclass PersistentStore {\n    constructor({ key }) {\n        this.key = key;\n        (0, utils_1.assignReadOnly)(this, 'key', key);\n        utils_1.cookies.set(enums_1.CookieNames.enabled, 'allowed');\n        if (utils_1.cookies.get(enums_1.CookieNames.enabled) === 'allowed') {\n            utils_1.cookies.remove(enums_1.CookieNames.enabled);\n            this.store = utils_1.cookies;\n        }\n        else {\n            this.store = utils_1.ls;\n        }\n    }\n    get(key) {\n        return this.store.get(`${key}_${this.key}`);\n    }\n    set(key, val) {\n        this.store.set(`${key}_${this.key}`, val);\n    }\n    remove(key) {\n        this.store.remove(`${key}_${this.key}`);\n    }\n    getEntityType() {\n        // Looks for entity type from store WITH API key suffix\n        const entityFromCurrentStore = this.get(enums_1.StoreNames.userEntityType);\n        // Looks for entity type from legacy store\n        const entityFromLegacyStore = this.store.get(enums_1.LegacyStoreNames.userEntityType);\n        let entityType;\n        if ((0, utils_1.isEntity)(entityFromCurrentStore)) {\n            entityType = entityFromCurrentStore;\n        }\n        else if ((0, utils_1.isEntity)(entityFromLegacyStore)) {\n            entityType = entityFromLegacyStore;\n        }\n        else {\n            entityType = enums_1.EntityTypes.anonVisitor;\n        }\n        return entityType;\n    }\n    getEntityId() {\n        // Generate AVT if user ends up being an anonymous visitor\n        const avt = (0, validate_identity_1.getAndSetAvtSafe)();\n        // Get entity ID from store WITH API key suffix\n        const idFromCurrentStore = this.get(enums_1.StoreNames.userEntityId);\n        // Get entity ID from legacy store\n        const idFromLegacyStore = this.store.get(enums_1.LegacyStoreNames.userEntityId);\n        let id;\n        if ((0, utils_1.isEntityId)(idFromCurrentStore)) {\n            id = idFromCurrentStore;\n        }\n        else if ((0, utils_1.isEntityId)(idFromLegacyStore)) {\n            id = idFromLegacyStore;\n        }\n        else {\n            id = avt;\n        }\n        return id;\n    }\n    getEntityTraits() {\n        // Get traits from legacy store\n        const traitsFromLegacyStore = utils_1.ls.get(enums_1.LegacyLSNames.userEntityTraits);\n        // Get traits from store WITH API key suffix\n        const traitsFromCurrentStore = utils_1.ls.get(`${enums_1.LSNames.userEntityTraits}_${this.key}`);\n        const legacyTraits = (0, utils_1.isTraits)(traitsFromLegacyStore)\n            ? traitsFromLegacyStore\n            : {};\n        const currentStoreTraits = (0, utils_1.isTraits)(traitsFromCurrentStore)\n            ? traitsFromCurrentStore\n            : {};\n        // new store should overwrite legacy store\n        const traits = Object.assign(Object.assign({}, legacyTraits), currentStoreTraits);\n        return traits;\n    }\n    setEntityId(passedId, type) {\n        // persist id in new store keys\n        this.set(enums_1.StoreNames.userEntityId, passedId);\n        // persist id in legacy store keys\n        this.store.set(enums_1.LegacyStoreNames.userEntityId, passedId);\n        if (type === enums_1.EntityTypes.anonVisitor && (0, utils_1.isUUID)(passedId)) {\n            this.store.set(enums_1.LegacyStoreNames.anonId, passedId);\n        }\n    }\n    setEntity(passedEntity) {\n        this.set(enums_1.StoreNames.userEntityType, passedEntity);\n        this.store.set(enums_1.LegacyStoreNames.userEntityType, passedEntity);\n    }\n    setEntityTraits(traits) {\n        // only set new keys in localStorage\n        // old traits shouldn't be used by application logic\n        utils_1.ls.set(`${enums_1.LSNames.userEntityTraits}_${this.key}`, traits);\n    }\n}\nexports.PersistentStore = PersistentStore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAndSetAvtSafe = getAndSetAvtSafe;\nexports.getAvt = getAvt;\nexports.setAvt = setAvt;\nexports.entityIdAndTypeMatch = entityIdAndTypeMatch;\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"../utils\");\nconst enums_1 = require(\"../enums\");\n// returns AVT, also sets AVT if it does not exist\nfunction getAndSetAvtSafe(passedId) {\n    if ((0, utils_1.isUUID)(passedId)) {\n        // AVT can and should be overwritten by application logic\n        setAvt(passedId);\n        return passedId;\n    }\n    else {\n        // if AVT is valid in cookies, return\n        const avt = getAvt();\n        if (avt)\n            return avt;\n    }\n    // create and set AVT if it doesn't exist\n    const uuid = (0, uuid_1.v4)();\n    setAvt(uuid);\n    return uuid;\n}\nfunction getAvt() {\n    const avt = utils_1.cookies.get(enums_1.CookieNames.avt);\n    return (0, utils_1.isUUID)(avt) ? avt : null;\n}\nfunction setAvt(id) {\n    utils_1.cookies.set(enums_1.CookieNames.avt, id);\n    utils_1.cookies.set(enums_1.LegacyStoreNames.anonId, id);\n}\nfunction entityIdAndTypeMatch(id, type) {\n    if (!(0, utils_1.isEntity)(type)) {\n        (0, utils_1.warn)(`The second argument is not a valid entity type. Instead received \"${type}\". The identity will default to \"${enums_1.EntityTypes.anonVisitor}\". Refer to https://go/cdpentities for a list of entity types.`);\n        return false;\n    }\n    if (type === enums_1.EntityTypes.merchant) {\n        if ((0, utils_1.isMerchantToken)(id))\n            return true;\n        (0, utils_1.warn)(`The second argument entity type was specified as \"${type}\". The first argument should be a ${type} token. Instead received \"${id}\". The identity will default to \"${enums_1.EntityTypes.anonVisitor}\".`);\n        return false;\n    }\n    if (type === enums_1.EntityTypes.anonVisitor) {\n        if ((0, utils_1.isUUID)(id))\n            return true;\n        (0, utils_1.warn)(`The second argument entity type was specified as \"${type}\". The first argument should be a anonymous visitor token. Instead received \"${id}\". The user will be identified as an \"${type}\" but the entity id will be set to the AVT: \"${getAndSetAvtSafe()}\".`);\n        return false;\n    }\n    return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignNotFoundValues = assignNotFoundValues;\n/**\n * Takes properties from second object and assigns them to first if not found in the first.\n * Mutates first object, returns nothing\n */\nfunction assignNotFoundValues(obj1, obj2) {\n    const keys = Object.keys(obj2);\n    for (const key of keys) {\n        if (obj1[key] === undefined) {\n            // eslint-disable-next-line no-param-reassign\n            obj1[key] = obj2[key];\n        }\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignReadOnly = assignReadOnly;\nfunction assignReadOnly(context, field, value) {\n    Object.defineProperty(context, field, {\n        value,\n        writable: false,\n        configurable: true,\n    });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = clean;\nconst type_guards_1 = require(\"./type-guards\");\nfunction isEmpty(arg) {\n    return ((0, type_guards_1.isUndefined)(arg) ||\n        (0, type_guards_1.isNull)(arg) ||\n        ((0, type_guards_1.isString)(arg) && arg.length === 0) ||\n        ((0, type_guards_1.isArray)(arg) && arg.length === 0) ||\n        ((0, type_guards_1.isObject)(arg) && Object.keys(arg).length === 0));\n}\nfunction getKeys(o) {\n    return Object.keys(o);\n}\nfunction recursiveClean(obj) {\n    // If 'obj' is an array, check its elements for objects to clean up.\n    if ((0, type_guards_1.isArray)(obj)) {\n        obj.forEach(recursiveClean);\n        // Remove empty objects from the array\n        for (let i = 0; i < obj.length; i++) {\n            if (isEmpty(obj[i]))\n                obj.splice(i, 1);\n        }\n    }\n    else if ((0, type_guards_1.isObject)(obj)) {\n        getKeys(obj).forEach((key) => {\n            if (isEmpty(obj[key])) {\n                // eslint-disable-next-line no-param-reassign\n                delete obj[key];\n            }\n            else {\n                recursiveClean(obj[key]);\n                // eslint-disable-next-line no-param-reassign\n                if (isEmpty(obj[key]))\n                    delete obj[key];\n            }\n        });\n    }\n}\nfunction clean(obj) {\n    const mutatedObj = JSON.parse(JSON.stringify(obj));\n    recursiveClean(mutatedObj);\n    return mutatedObj;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.methodColors = void 0;\nexports.warn = warn;\nexports.error = error;\nexports.throwError = throwError;\nexports.shouldLogEventsToConsole = shouldLogEventsToConsole;\nexports.logRejectedMessages = logRejectedMessages;\nexports.getEventName = getEventName;\nexports.getProperties = getProperties;\nexports.getTraits = getTraits;\nexports.getContext = getContext;\nexports.logEvent = logEvent;\nconst constants_1 = require(\"../constants\");\nconst enums_1 = require(\"../enums\");\nconst clean_1 = __importDefault(require(\"./clean\"));\nconst type_guards_1 = require(\"./type-guards\");\nfunction warn(message) {\n    console.warn(`${constants_1.LIBRARY_NAME}: ${message}`);\n}\nfunction error(message) {\n    console.error(`${constants_1.LIBRARY_NAME}: ${message}`);\n}\nfunction throwError(message) {\n    throw new Error(`${constants_1.LIBRARY_NAME}: ${message}`);\n}\nfunction shouldLogEventsToConsole(value, environment) {\n    switch (value) {\n        case 'on': {\n            return true;\n        }\n        case 'off': {\n            return false;\n        }\n        default: {\n            return environment !== enums_1.Environments.production;\n        }\n    }\n}\n// https://material.io/guidelines/style/color.html#color-color-palette\nexports.methodColors = new Map([\n    ['identify', '#FF5722'], //  deep orange\n    ['page', '#4CAF50'], // green\n    ['track', '#2196F3'], // blue\n    ['trackWithSchema', '#009688'], // teal\n    ['group', '#009688'], // teal\n]);\nfunction logRejectedMessages(errors) {\n    if (errors.length === 0) {\n        return;\n    }\n    console.group(`${constants_1.LIBRARY_NAME}: error - The following messages were rejected by the server:`);\n    errors.forEach(({ message_id, type, reason }) => console.error(`${message_id} - ${type} - ${reason}`));\n    console.groupEnd();\n}\nfunction getEventName(event) {\n    // Page name\n    if ('name' in event) {\n        return event.name;\n    }\n    // Track event name\n    if ('eventName' in event) {\n        return event.eventName;\n    }\n    // Schematized event name\n    if ('event' in event) {\n        const eventName = event.event.name;\n        return (eventName.charAt(0).toUpperCase() +\n            eventName\n                .slice(1)\n                .replaceAll(/_([a-z])/g, ([_, match]) => match.toUpperCase()));\n    }\n    return undefined;\n}\nfunction getProperties(event) {\n    // Track/page event properties\n    if ('properties' in event && event.properties) {\n        return { properties: event.properties };\n    }\n    // Schematized event properties\n    if ('event' in event && event.event.parameters) {\n        return { properties: event.event.parameters };\n    }\n    return {};\n}\nfunction getTraits(event) {\n    if ('traits' in event && event.traits) {\n        return { traits: event.traits };\n    }\n    return {};\n}\nfunction getContext(event, schemaContext) {\n    if (event.apiMethod === 'trackWithSchema') {\n        return { context: (0, clean_1.default)(schemaContext) };\n    }\n    return { context: event.context };\n}\nfunction logEvent(event, schemaContext) {\n    var _a, _b;\n    const eventName = getEventName(event);\n    let apiKey = '';\n    const appRegistryName = ((_b = (_a = event.context) === null || _a === void 0 ? void 0 : _a.application) === null || _b === void 0 ? void 0 : _b.name) || '';\n    if (!(0, type_guards_1.isTrackWithSchema)(event)) {\n        apiKey = event.apiKey;\n    }\n    const { apiMethod, entityId, entityType, messageId, originalTimestamp, sentAt, timestamp, } = event;\n    const { groupCollapsed, log, groupEnd } = console;\n    groupCollapsed(`%c${constants_1.LIBRARY_NAME}: ${messageId} → ${apiMethod} ${eventName ? ` - \"${eventName}\"` : ''}`, `color:${exports.methodColors.get(apiMethod)}`);\n    log(Object.assign(Object.assign(Object.assign({ apiKey,\n        appRegistryName,\n        messageId,\n        entityId,\n        entityType,\n        sentAt,\n        originalTimestamp,\n        timestamp }, getProperties(event)), getTraits(event)), getContext(event, schemaContext)));\n    groupEnd();\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cookies = void 0;\nexports.parseDomain = parseDomain;\nconst js_cookie_1 = __importDefault(require(\"js-cookie\"));\nconst enums_1 = require(\"../enums\");\n/*\n * Some cookies are stored in a double encoded form e.g. `\"foo\"`. While we only want to parse the true value,\n *  `foo`, we need to read/write to the double encoded version still so that we don't break compatibility.\n */\nfunction parseDomain(host) {\n    // https://github.com/squareup/public-web-styles/blob/master/app/assets/javascripts/public-web-styles/modules/tracking.js.es6#L97-L108\n    const domain_match = /[^.]*\\.([^.]*|..\\...|...\\...)$/.exec(host);\n    const ip_match = /^[\\d.]+$/.exec(host);\n    if (!ip_match && domain_match) {\n        return `.${domain_match[0]}`;\n    }\n    else {\n        return undefined;\n    }\n}\nconst cookieOptions = {\n    expires: 365 * 3, // default to three years\n    path: '/',\n};\nfunction get(name) {\n    if (name === undefined)\n        return js_cookie_1.default.get();\n    let store = js_cookie_1.default.get(name);\n    if (Object.values(enums_1.LegacyStoreNames).includes(name) && store) {\n        store = store.slice(1, -1);\n    }\n    return store;\n}\nfunction set(name, value) {\n    let store = value;\n    if (Object.values(enums_1.LegacyStoreNames).includes(name)) {\n        store = window.JSON.stringify(store);\n    }\n    if (!cookieOptions.domain) {\n        cookieOptions.domain = parseDomain(window.location.hostname);\n    }\n    return js_cookie_1.default.set(name, store, cookieOptions);\n}\nexports.cookies = {\n    remove: js_cookie_1.default.remove,\n    set,\n    get,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MAX_ACCEPTABLE_COLUMNS = void 0;\nexports.numberOfColumns = numberOfColumns;\nexports.warnAboutExcessiveColumns = warnAboutExcessiveColumns;\nconst console_wrapper_1 = require(\"./console-wrapper\");\nconst type_guards_1 = require(\"./type-guards\");\nconst enums_1 = require(\"../enums\");\n/**\n * For original slack discussion on this limit\n * @see {@link https://square.slack.com/archives/C05V7E1EGKD/p1697651922236619 }\n */\nexports.MAX_ACCEPTABLE_COLUMNS = 30;\nfunction numberOfColumns(eventProps) {\n    let columns = 1;\n    if ((0, type_guards_1.isObject)(eventProps)) {\n        for (const value of Object.values(eventProps)) {\n            columns += numberOfColumns(value);\n        }\n    }\n    return columns;\n}\n/**\n * Some upstream data sources flatten nested objects from event properties, creating\n * many individual columns in database tables, to make the data easier to query.\n * When large numbers of unique keys are included in an event's payload, this can lead\n * to hundreds or thousands of columns being created, exhausting the database's capacity.\n *\n * This has resulted in a SEV:\n * @see {@link https://docs.google.com/document/d/1AxmMPTWYGEo8I5iKpjnW5_HqkgiMwcX0haTlrtpBte8/edit?usp=sharing }\n *\n * The only events being captured here are V1 track events.\n */\nfunction warnAboutExcessiveColumns(message) {\n    const columns = numberOfColumns(message.properties) - 1;\n    if (columns > exports.MAX_ACCEPTABLE_COLUMNS) {\n        (0, console_wrapper_1.warn)(`event \"${message.eventName}\" will create ${columns} columns in some upstream database tables`);\n        window.dispatchEvent(new CustomEvent(enums_1.EmittedEvents.ExcessiveColumns, {\n            detail: { message, columns, cdpVersion: enums_1.CdpVersion.V1 },\n        }));\n    }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./local-storage\"), exports);\n__exportStar(require(\"./type-guards\"), exports);\n__exportStar(require(\"./cookies\"), exports);\n__exportStar(require(\"./console-wrapper\"), exports);\n__exportStar(require(\"./deep-nesting\"), exports);\n__exportStar(require(\"./assign-read-only\"), exports);\n__exportStar(require(\"./timeout\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ls = exports.LocalStorageUtil = void 0;\nconst type_guards_1 = require(\"./type-guards\");\nclass LocalStorageUtil {\n    set(key, value) {\n        try {\n            if ((0, type_guards_1.isString)(value)) {\n                window.localStorage.setItem(key, value);\n            }\n            else {\n                window.localStorage.setItem(key, JSON.stringify(value));\n            }\n        }\n        catch (err) {\n            if (err instanceof Error && err.name === 'QuotaExceededError') {\n                throw new Error('Browser localStorage is full or disabled.');\n            }\n        }\n    }\n    get(key) {\n        let result = null;\n        try {\n            result = window.localStorage.getItem(key);\n            if (result) {\n                return JSON.parse(result);\n            }\n            return result;\n        }\n        catch (_a) {\n            return result;\n        }\n    }\n    remove(key) {\n        try {\n            window.localStorage.removeItem(key);\n        }\n        catch (_a) {\n            // do nothing\n        }\n    }\n}\nexports.LocalStorageUtil = LocalStorageUtil;\nexports.ls = new LocalStorageUtil();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign */\n// This is based on https://github.com/voodoocreation/ts-deepmerge/blob/master/src/index.ts but embedded directly\n// for more control and smaller install footprint.\nconst type_guards_1 = require(\"./type-guards\");\nfunction merge(...objects) {\n    return objects.reduce((result, current) => {\n        if (Array.isArray(current)) {\n            throw new TypeError('Arguments provided to ts-deepmerge must be objects, not arrays.');\n        }\n        Object.keys(current).forEach((key) => {\n            if (['__proto__', 'constructor', 'prototype'].includes(key)) {\n                return;\n            }\n            if (Array.isArray(result[key]) && Array.isArray(current[key])) {\n                result[key] = merge.options.mergeArrays\n                    ? // eslint-disable-next-line unicorn/prefer-spread\n                        Array.from(new Set(result[key].concat(current[key])))\n                    : current[key];\n            }\n            else if ((0, type_guards_1.isObject)(result[key]) && (0, type_guards_1.isObject)(current[key])) {\n                result[key] = merge(result[key], current[key]);\n            }\n            else {\n                result[key] = current[key];\n            }\n        });\n        return result;\n    }, {});\n}\nconst defaultOptions = {\n    mergeArrays: true,\n};\nmerge.options = defaultOptions;\nmerge.withOptions = (options, ...objects) => {\n    merge.options = Object.assign({ mergeArrays: true }, options);\n    const result = merge(...objects);\n    merge.options = defaultOptions;\n    return result;\n};\nexports.default = merge;\n/* eslint-enable @typescript-eslint/no-explicit-any,no-param-reassign */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeout = timeout;\nconst type_guards_1 = require(\"./type-guards\");\n// timeout function for backwards compatibility\nfunction timeout(fn) {\n    if ((0, type_guards_1.isFunction)(fn)) {\n        // 300 is default value in data-api.js\n        setTimeout(fn, 300);\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MAX_STR_LENGTH = void 0;\nexports.truncateObject = truncateObject;\nexports.MAX_STR_LENGTH = 2097152;\nfunction truncateObject(object) {\n    for (const k in object) {\n        const key = k;\n        if (typeof object[key] === 'object' && object[key] !== null) {\n            truncateObject(object[key]);\n        }\n        else {\n            if (typeof object[key] === 'string') {\n                const value = object[key];\n                if (value.length > exports.MAX_STR_LENGTH) {\n                    const truncatedValue = value.slice(0, exports.MAX_STR_LENGTH);\n                    Object.defineProperty(object, key, {\n                        value: truncatedValue,\n                        writable: true,\n                        configurable: true,\n                        enumerable: true,\n                    });\n                }\n            }\n        }\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = isArray;\nexports.isNull = isNull;\nexports.isUndefined = isUndefined;\nexports.isNothing = isNothing;\nexports.isSomething = isSomething;\nexports.isObject = isObject;\nexports.isRecord = isRecord;\nexports.isStructuralType = isStructuralType;\nexports.isString = isString;\nexports.isFunction = isFunction;\nexports.isEntity = isEntity;\nexports.isEntityId = isEntityId;\nexports.isTraits = isTraits;\nexports.isUUID = isUUID;\nexports.isMerchantToken = isMerchantToken;\nexports.isTrack = isTrack;\nexports.isTrackWithSchema = isTrackWithSchema;\nexports.isPage = isPage;\nexports.isIdentify = isIdentify;\nexports.isOptions = isOptions;\nconst constants_1 = require(\"../constants\");\nconst enums_1 = require(\"../enums\");\nfunction isArray(arg) {\n    return Array.isArray(arg);\n}\nfunction isNull(arg) {\n    return arg === null;\n}\nfunction isUndefined(arg) {\n    return arg === undefined;\n}\nfunction isNothing(arg) {\n    return arg === null || arg === undefined;\n}\nfunction isSomething(arg) {\n    return !isNothing(arg);\n}\nfunction isObject(arg) {\n    if (typeof arg === 'object' && arg !== null) {\n        const prototype = Object.getPrototypeOf(arg);\n        return prototype === Object.prototype || prototype === null;\n    }\n    return false;\n}\nfunction isRecord(value) {\n    return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction isStructuralType(arg) {\n    return isObject(arg) || isArray(arg);\n}\nfunction isString(arg) {\n    return typeof arg === 'string';\n}\nfunction isFunction(arg) {\n    return typeof arg === 'function';\n}\nfunction isEntity(entity) {\n    if (!isString(entity))\n        return false;\n    return constants_1.entities.includes(entity);\n}\n// TODO check for all types of IDs\nfunction isEntityId(entity) {\n    return isString(entity);\n}\nfunction isTraits(obj) {\n    return isObject(obj);\n}\nfunction isUUID(id) {\n    if (!isString(id))\n        return false;\n    return enums_1.Regex.uuid.test(id);\n}\nfunction isMerchantToken(id) {\n    if (!isString(id))\n        return false;\n    return enums_1.Regex.merchantToken.test(id);\n}\nfunction isTrack(msg) {\n    return msg.apiMethod === 'track';\n}\nfunction isTrackWithSchema(msg) {\n    return msg.apiMethod === 'trackWithSchema';\n}\nfunction isPage(msg) {\n    return msg.apiMethod === 'page';\n}\nfunction isIdentify(msg) {\n    return msg.apiMethod === 'identify';\n}\nfunction isOptions(arg) {\n    if (!isObject(arg))\n        return false;\n    return 'integrations' in arg || 'page' in arg;\n}\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              var bitsCombined = bits1 | bits2;\n\t              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var Base = C_lib.Base;\n\t    var C_enc = C.enc;\n\t    var Utf8 = C_enc.Utf8;\n\t    var C_algo = C.algo;\n\n\t    /**\n\t     * HMAC algorithm.\n\t     */\n\t    var HMAC = C_algo.HMAC = Base.extend({\n\t        /**\n\t         * Initializes a newly created HMAC.\n\t         *\n\t         * @param {Hasher} hasher The hash algorithm to use.\n\t         * @param {WordArray|string} key The secret key.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t         */\n\t        init: function (hasher, key) {\n\t            // Init hasher\n\t            hasher = this._hasher = new hasher.init();\n\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof key == 'string') {\n\t                key = Utf8.parse(key);\n\t            }\n\n\t            // Shortcuts\n\t            var hasherBlockSize = hasher.blockSize;\n\t            var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t            // Allow arbitrary length keys\n\t            if (key.sigBytes > hasherBlockSizeBytes) {\n\t                key = hasher.finalize(key);\n\t            }\n\n\t            // Clamp excess bits\n\t            key.clamp();\n\n\t            // Clone key for inner and outer pads\n\t            var oKey = this._oKey = key.clone();\n\t            var iKey = this._iKey = key.clone();\n\n\t            // Shortcuts\n\t            var oKeyWords = oKey.words;\n\t            var iKeyWords = iKey.words;\n\n\t            // XOR keys with pad constants\n\t            for (var i = 0; i < hasherBlockSize; i++) {\n\t                oKeyWords[i] ^= 0x5c5c5c5c;\n\t                iKeyWords[i] ^= 0x36363636;\n\t            }\n\t            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this HMAC to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Reset\n\t            hasher.reset();\n\t            hasher.update(this._iKey);\n\t        },\n\n\t        /**\n\t         * Updates this HMAC with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {HMAC} This HMAC instance.\n\t         *\n\t         * @example\n\t         *\n\t         *     hmacHasher.update('message');\n\t         *     hmacHasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            this._hasher.update(messageUpdate);\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the HMAC computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The HMAC.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hmac = hmacHasher.finalize();\n\t         *     var hmac = hmacHasher.finalize('message');\n\t         *     var hmac = hmacHasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Shortcut\n\t            var hasher = this._hasher;\n\n\t            // Compute HMAC\n\t            var innerHash = hasher.finalize(messageUpdate);\n\t            hasher.reset();\n\t            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t            return hmac;\n\t        }\n\t    });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n  enumerable: true,\n  get: function get() {\n    return _nil.default;\n  }\n});\nObject.defineProperty(exports, \"parse\", {\n  enumerable: true,\n  get: function get() {\n    return _parse.default;\n  }\n});\nObject.defineProperty(exports, \"stringify\", {\n  enumerable: true,\n  get: function get() {\n    return _stringify.default;\n  }\n});\nObject.defineProperty(exports, \"v1\", {\n  enumerable: true,\n  get: function get() {\n    return _v.default;\n  }\n});\nObject.defineProperty(exports, \"v3\", {\n  enumerable: true,\n  get: function get() {\n    return _v2.default;\n  }\n});\nObject.defineProperty(exports, \"v4\", {\n  enumerable: true,\n  get: function get() {\n    return _v3.default;\n  }\n});\nObject.defineProperty(exports, \"v5\", {\n  enumerable: true,\n  get: function get() {\n    return _v4.default;\n  }\n});\nObject.defineProperty(exports, \"validate\", {\n  enumerable: true,\n  get: function get() {\n    return _validate.default;\n  }\n});\nObject.defineProperty(exports, \"version\", {\n  enumerable: true,\n  get: function get() {\n    return _version.default;\n  }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = new Uint8Array(msg.length);\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes[i] = msg.charCodeAt(i);\n    }\n  }\n\n  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n  const output = [];\n  const length32 = input.length * 32;\n  const hexTab = '0123456789abcdef';\n\n  for (let i = 0; i < length32; i += 8) {\n    const x = input[i >> 5] >>> i % 32 & 0xff;\n    const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n    output.push(hex);\n  }\n\n  return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n  /* append padding */\n  x[len >> 5] |= 0x80 << len % 32;\n  x[getOutputLength(len) - 1] = len;\n  let a = 1732584193;\n  let b = -271733879;\n  let c = -1732584194;\n  let d = 271733878;\n\n  for (let i = 0; i < x.length; i += 16) {\n    const olda = a;\n    const oldb = b;\n    const oldc = c;\n    const oldd = d;\n    a = md5ff(a, b, c, d, x[i], 7, -680876936);\n    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n    b = md5gg(b, c, d, a, x[i], 20, -373897302);\n    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n    d = md5hh(d, a, b, c, x[i], 11, -358537222);\n    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n    a = md5ii(a, b, c, d, x[i], 6, -198630844);\n    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n    a = safeAdd(a, olda);\n    b = safeAdd(b, oldb);\n    c = safeAdd(c, oldc);\n    d = safeAdd(d, oldd);\n  }\n\n  return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n  if (input.length === 0) {\n    return [];\n  }\n\n  const length8 = input.length * 8;\n  const output = new Uint32Array(getOutputLength(length8));\n\n  for (let i = 0; i < length8; i += 8) {\n    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n  }\n\n  return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n  const lsw = (x & 0xffff) + (y & 0xffff);\n  const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n  return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n  return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n  return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n  return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n  return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n  return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n  randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n  switch (s) {\n    case 0:\n      return x & y ^ ~x & z;\n\n    case 1:\n      return x ^ y ^ z;\n\n    case 2:\n      return x & y ^ x & z ^ y & z;\n\n    case 3:\n      return x ^ y ^ z;\n  }\n}\n\nfunction ROTL(x, n) {\n  return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n  if (typeof bytes === 'string') {\n    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n    bytes = [];\n\n    for (let i = 0; i < msg.length; ++i) {\n      bytes.push(msg.charCodeAt(i));\n    }\n  } else if (!Array.isArray(bytes)) {\n    // Convert Array-like to Array\n    bytes = Array.prototype.slice.call(bytes);\n  }\n\n  bytes.push(0x80);\n  const l = bytes.length / 4 + 2;\n  const N = Math.ceil(l / 16);\n  const M = new Array(N);\n\n  for (let i = 0; i < N; ++i) {\n    const arr = new Uint32Array(16);\n\n    for (let j = 0; j < 16; ++j) {\n      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n    }\n\n    M[i] = arr;\n  }\n\n  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n  M[N - 1][14] = Math.floor(M[N - 1][14]);\n  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n  for (let i = 0; i < N; ++i) {\n    const W = new Uint32Array(80);\n\n    for (let t = 0; t < 16; ++t) {\n      W[t] = M[i][t];\n    }\n\n    for (let t = 16; t < 80; ++t) {\n      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n    }\n\n    let a = H[0];\n    let b = H[1];\n    let c = H[2];\n    let d = H[3];\n    let e = H[4];\n\n    for (let t = 0; t < 80; ++t) {\n      const s = Math.floor(t / 20);\n      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n      e = d;\n      d = c;\n      c = ROTL(b, 30) >>> 0;\n      b = a;\n      a = T;\n    }\n\n    H[0] = H[0] + a >>> 0;\n    H[1] = H[1] + b >>> 0;\n    H[2] = H[2] + c >>> 0;\n    H[3] = H[3] + d >>> 0;\n    H[4] = H[4] + e >>> 0;\n  }\n\n  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n  let i = buf && offset || 0;\n  const b = buf || new Array(16);\n  options = options || {};\n  let node = options.node || _nodeId;\n  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n\n  if (node == null || clockseq == null) {\n    const seedBytes = options.random || (options.rng || _rng.default)();\n\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n    }\n\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n\n  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n\n\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n  if (nsecs >= 10000) {\n    throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n  msecs += 12219292800000; // `time_low`\n\n  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff; // `time_mid`\n\n  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff; // `time_high_and_version`\n\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n  b[i++] = clockseq & 0xff; // `node`\n\n  for (let n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    var _namespace;\n\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = (0, _parse.default)(namespace);\n    }\n\n    if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return (0, _stringify.unsafeStringify)(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n  if (_native.default.randomUUID && !buf && !options) {\n    return _native.default.randomUUID();\n  }\n\n  options = options || {};\n\n  const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n  if (!(0, _validate.default)(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Initialization and round constants tables\n\t    var H = [];\n\t    var K = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        function isPrime(n) {\n\t            var sqrtN = Math.sqrt(n);\n\t            for (var factor = 2; factor <= sqrtN; factor++) {\n\t                if (!(n % factor)) {\n\t                    return false;\n\t                }\n\t            }\n\n\t            return true;\n\t        }\n\n\t        function getFractionalBits(n) {\n\t            return ((n - (n | 0)) * 0x100000000) | 0;\n\t        }\n\n\t        var n = 2;\n\t        var nPrime = 0;\n\t        while (nPrime < 64) {\n\t            if (isPrime(n)) {\n\t                if (nPrime < 8) {\n\t                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t                }\n\t                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t                nPrime++;\n\t            }\n\n\t            n++;\n\t        }\n\t    }());\n\n\t    // Reusable object\n\t    var W = [];\n\n\t    /**\n\t     * SHA-256 hash algorithm.\n\t     */\n\t    var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init(H.slice(0));\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Shortcut\n\t            var H = this._hash.words;\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\t            var e = H[4];\n\t            var f = H[5];\n\t            var g = H[6];\n\t            var h = H[7];\n\n\t            // Computation\n\t            for (var i = 0; i < 64; i++) {\n\t                if (i < 16) {\n\t                    W[i] = M[offset + i] | 0;\n\t                } else {\n\t                    var gamma0x = W[i - 15];\n\t                    var gamma0  = ((gamma0x << 25) | (gamma0x >>> 7))  ^\n\t                                  ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t                                   (gamma0x >>> 3);\n\n\t                    var gamma1x = W[i - 2];\n\t                    var gamma1  = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t                                  ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t                                   (gamma1x >>> 10);\n\n\t                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t                }\n\n\t                var ch  = (e & f) ^ (~e & g);\n\t                var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t                var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t                var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7)  | (e >>> 25));\n\n\t                var t1 = h + sigma1 + ch + K[i] + W[i];\n\t                var t2 = sigma0 + maj;\n\n\t                h = g;\n\t                g = f;\n\t                f = e;\n\t                e = (d + t1) | 0;\n\t                d = c;\n\t                c = b;\n\t                b = a;\n\t                a = (t1 + t2) | 0;\n\t            }\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t            H[4] = (H[4] + e) | 0;\n\t            H[5] = (H[5] + f) | 0;\n\t            H[6] = (H[6] + g) | 0;\n\t            H[7] = (H[7] + h) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t            data.sigBytes = dataWords.length * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Return final computed hash\n\t            return this._hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.SHA256('message');\n\t     *     var hash = CryptoJS.SHA256(wordArray);\n\t     */\n\t    C.SHA256 = Hasher._createHelper(SHA256);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacSHA256(message, key);\n\t     */\n\t    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import UAParser from 'ua-parser-js';\nimport * as QueryString from 'query-string';\n\n// Helper function to merge multiple objects\n// Note that objects with higher indices will overwrite!\nexport function mergeObjects(arr) {\n  const obj = {};\n  for (let i = 0; i < arr.length; i++) {\n    for (const prop in arr[i]) {\n      obj[prop] = arr[i][prop];\n    }\n  }\n  return obj;\n}\n\n/**\n * Helper function to filter out potential PII info\n *\n * Example params: ?a=b&c=d&email=abc@example.com\n * Returns: ?a=b&c=d&email=[REDACTED]\n */\nexport function filterUrl(url) {\n  let path = '';\n  let params = '';\n  // to capture when PII is the first parameter\n  // https://example.com/hello?password=abc&k=v\n  if (url.indexOf('?') !== -1) {\n    const values = url.split('?');\n    path = values[0];\n    params = values[1];\n  } else {\n    params = url;\n  }\n\n  // these are the common keys for PII\n  const filteredParams = ['email', 'email_confirmation', 'password'];\n  let queryArray = params.split('&');\n  queryArray = queryArray.map(function(element) {\n    const key_value = element.split('=');\n    const key = key_value[0];\n    if (filteredParams.indexOf(key) !== -1) {\n      key_value[1] = '[REDACTED]';\n    } else if (key_value[1] !== undefined) {\n      regexEmail(key_value[1]);\n    }\n    return key_value.join('=');\n  });\n\n  if (path !== '') {\n    return regexEmail(`${path}?${queryArray.join('&')}`);\n  }\n\n  return regexEmail(queryArray.join('&'));\n}\n\nfunction regexEmail(str) {\n  const filter = /[a-zA-Z0-9._\\-+]+(@|%40)[a-zA-Z0-9]+\\.[a-zA-Z0-9]+/g;\n  return str.replace(filter, '[REDACTED]');\n}\n\n/**\n * Fields relevant to a page view\n *\n * @return {Object}\n *\n * Example: {\"path\":\"/dashboard\",\"referrer\":\"https://squareup.com/login\",\"title\":\"Square Dashboard\",\"search\":\"\"}\n */\nexport function getPageMetrics() {\n  return {\n    path: window.document.location.pathname,\n    referrer: filterUrl(window.document.referrer),\n    title: window.document.title,\n    search: filterUrl(window.document.location.search),\n    full_url: filterUrl(window.document.location.href),\n    // note that we don't want window.location.hostname because that removes protocol (http/s) and port (if present), which are useful\n    base_url: window.document.location.origin\n  };\n}\n\n/**\n * Fields that represent screen size\n *\n * @return {Object}\n */\nexport function getScreenMetrics() {\n  return {\n    device_screen_height: window.screen.height,\n    device_screen_width: window.screen.width,\n    screen_height: window.screen.height,\n    screen_width: window.screen.width\n  };\n}\n\n/**\n * Fields that represent browser and screen size for V2\n *\n * @return {Object}\n */\nexport function getScreenMetricsV2() {\n  return {\n    device_screen_height: window.screen.height,\n    device_screen_width: window.screen.width,\n    browser_height: window.innerHeight,\n    browser_width: window.innerWidth\n  };\n}\n\n/**\n * Return browser name, versions, and operating system\n *\n * @return {Object}\n */\nexport function getBrowserAndOSMetrics() {\n  const metrics = UAParser(window.navigator.userAgent);\n  return {\n    browser_name: metrics.browser.name,\n    browser_version: metrics.browser.version,\n    browser_major_version: metrics.browser.major,\n    os_name: metrics.os.name,\n    os_version: metrics.os.version\n  };\n}\n\n/**\n * Return utm_source, utm_medium, utm_campaign, utm_term, utm_content\n *\n * @return {Object}\n */\nexport function getUtmCampaignData() {\n  const queryParams = QueryString.parse(window.document.location.search);\n  const utmCampaignData = {};\n  // Only add to utmCampaignData if exists\n  if (queryParams.utm_source)\n    utmCampaignData['utm_source'] = queryParams.utm_source;\n  if (queryParams.utm_medium)\n    utmCampaignData['utm_medium'] = queryParams.utm_medium;\n  if (queryParams.utm_campaign)\n    utmCampaignData['utm_campaign'] = queryParams.utm_campaign;\n  if (queryParams.utm_term) utmCampaignData['utm_term'] = queryParams.utm_term;\n  if (queryParams.utm_content)\n    utmCampaignData['utm_content'] = queryParams.utm_content;\n\n  return utmCampaignData;\n}\n\n/**\n * Get all metrics\n *\n * @return {Object}\n */\nexport function getMetrics() {\n  return mergeObjects([\n    getScreenMetrics(),\n    getPageMetrics(),\n    getBrowserAndOSMetrics(),\n    getUtmCampaignData()\n  ]);\n}\n\n/**\n * Simple cross-browser event listening\n *\n * @return {Boolean} success\n */\nexport function addEvent(object, type, listener, useCapture) {\n  // W3C\n  if (object.addEventListener) {\n    object.addEventListener(type, listener, useCapture);\n    return true;\n  } else if (object.attachEvent) {\n    // Microsoft\n    return object.attachEvent(`on${type}`, listener);\n  }\n\n  // Traditional (warning: overwrites previous listener!)\n  object[`on${type}`] = listener;\n  return true;\n}\n","import * as utils from './utils';\n\nfunction assert(value, message) {\n  if (!value) {\n    throw new Error(message);\n  }\n}\n\n/**\n * Delegates constructor and returns new object\n */\nexport default class EventstreamClient {\n  constructor(...args) {\n    this.initialize(...args);\n\n    // Constants\n    this.EVENTSTREAM_ENDPOINT = '/1.0/log/pixel_tracking';\n    this.EVENTSTREAM_V2_ENDPOINT = '/2.0/log/pixel_tracking';\n    this.ANONYMOUS_VISITOR_TOKEN_COOKIE = '_savt';\n    this.TRACK_COOKIE = 'track_cookie';\n    this.OPTIMIZELY_END_USER_ID_COOKIE = 'optimizelyEndUserId';\n    this.IDENTIFIED_VISITOR_TOKEN_PARAM = 'ivt';\n    this.ANONYMOUS_VISITOR_TOKEN_PARAM = 'avt';\n    this.MERCHANT_TOKEN_PARAM = 'mct';\n    this.SESSION_TOKEN_PARAM = 'st';\n    this.UNIT_TOKEN_PARAM = 'unt';\n    this.PERSON_TOKEN_PARAM = 'prt';\n    this.EMPLOYMENT_TOKEN_PARAM = 'emt';\n    this.PAYMENT_TOKEN_PARAM = 'pmt';\n    this.LIBRARY_NAME = 'js/eventstream';\n    this.LIBRARY_VERSION = '__VERSION__';\n    this.ES2_COOKIE_PREFIX_MAP = {\n      f: 'track_cookie_forecast_channel',\n      d: 'track_cookie_detail_channel',\n      p: 'track_cookie_partner_channel',\n      c: 'track_cookie_campaign_channel',\n      o: 'track_cookie_offer_channel',\n      u: 'track_cookie_url_channel',\n      l: 'track_cookie_location_channel',\n      dt: 'track_cookie_device_channel',\n      pr: 'track_cookie_product_channel',\n      sq: 'track_cookie_marin_tag'\n    };\n\n    // Used for cachebusting. See _urlFor* methods.\n    this.callCount = 0;\n  }\n\n  /**\n   * Set up object with local state and configuration\n   *\n   * @param {Object} options\n   */\n  initialize(options) {\n    assert(\n      options.applicationName,\n      'EventstreamClient.initialize: applicationName is required'\n    );\n    assert(\n      options.environment,\n      'EventstreamClient.initialize: environment is required'\n    );\n    this.applicationName = options.applicationName;\n    this.environment = options.environment;\n    this.anonymousId = options.anonymousId;\n    this.userId = options.userId;\n    this.merchantId = options.merchantId;\n    this.unitId = options.unitId;\n    this.personId = options.personId;\n    this.employmentId = options.employmentId;\n    this.paymentId = options.paymentId;\n    this.defaultFields = options.defaultFields;\n    this.sessionId = options.sessionId;\n    this.utmCampaignData = options.utmCampaignData || {};\n  }\n\n  /**\n   * Tracks a page view. Schema defined here: https://schema-manager.stage.sqprod.co/schema-manager/staging/catalog/page_view\n   * If no params trackV2WithDefaults will do its best to fill all the fields.\n   * TODO: figure out how to track the device catalog (perhaps server-side)\n   */\n  trackV2PageView(params = {}) {\n    this.trackV2WithDefaults(\n      utils.mergeObjects([{ catalog_name: 'page_view' }, params])\n    );\n  }\n\n  /*\n* Tracks a page click.\n* Schema: https://schema-manager.stage.sqprod.co/schema-manager/staging/catalog/page_click\n* TODO: figure out how to track the device catalog (perhaps server-side)\n*/\n  trackV2PageClick(client_params) {\n    const params = {\n      catalog_name: 'page_click',\n      page_click_action: client_params.action,\n      page_click_description: client_params.description\n    };\n\n    if (client_params.detail) {\n      params.page_click_detail = client_params.detail;\n    }\n\n    this.trackV2WithDefaults(params);\n  }\n\n  /**\n   * Tracks an event and tries to fill in all webpage, screen and browser params.\n   * Must pass in catalog_name in the params. Passed in params will overwrite\n   * any that this function gathers.\n   */\n  trackV2WithDefaults(params = {}) {\n    let toTrack = {};\n    const webpageData = utils.getPageMetrics();\n    for (const webpageProp in webpageData) {\n      toTrack[`webpage_${webpageProp}`] = webpageData[webpageProp];\n    }\n\n    /**\n     * The order of precedence for the umtData that gets passed to trackV2 from low to high is:\n     *  1. initialized values (values passed to the method initialize)\n     *  2. queryParams (retrieved via getUtmCampaignData)\n     *  3. trackV2WithDefaults params\n     * Initialized values have the lowest precedence as they are the least dynamic. They should be\n     * set only on initialization. queryParams can possibly change as the user navigates around.\n     * trackV2WithDefaults params have the highest priority as they have to be set intentionally\n     * each time.\n     */\n    const utmData = Object.assign(\n      {},\n      this.utmCampaignData,\n      utils.getUtmCampaignData()\n    );\n\n    for (const utmProp in utmData) {\n      toTrack[`webpage_${utmProp}`] = utmData[utmProp];\n    }\n\n    toTrack = utils.mergeObjects([\n      toTrack,\n      utils.getBrowserAndOSMetrics(),\n      utils.getScreenMetricsV2(),\n      // params will overwrite anything set in toTrack\n      params\n    ]);\n\n    this.trackV2(toTrack);\n  }\n\n  /**\n   * Track a new event with data\n   * Page views are usually logged with eventName = 'PageView' and eventValue = <url>\n   *\n   * @param {String} eventName (required)\n   * @param {String} eventValue (required)\n   * @param {Object} rawData (optional)\n   */\n  track(params) {\n    assert(params.eventName, 'EventstreamClient.track: eventName is required');\n    assert(\n      params.eventValue,\n      'EventstreamClient.track: eventValue is required'\n    );\n\n    const eventName = utils.filterUrl(params.eventName);\n    const eventValue = utils.filterUrl(params.eventValue);\n    let rawData = this._applyDefaults(params.rawData || {});\n    const anonymousId =\n      params.anonymousId ||\n      this.anonymousId ||\n      this._getCookieValue(this.ANONYMOUS_VISITOR_TOKEN_COOKIE);\n    const trackCookie = this._getEncodedCookieValue(this.TRACK_COOKIE);\n    const optimizelyEndUserIdCookie = this._getCookieValue(\n      this.OPTIMIZELY_END_USER_ID_COOKIE\n    );\n    const userId = params.userId || this.userId;\n\n    const merchantId = params.merchantId || this.merchantId;\n    const unitId = params.unitId || this.unitId;\n    const personId = params.personId || this.personId;\n    const employmentId = params.employmentId || this.employmentId;\n    const paymentId = params.paymentId || this.paymentId;\n    const sessionId = params.sessionId || this.sessionId;\n\n    const callback = params.callback || null;\n\n    if (this._getApiHost() === null) {\n      return;\n    }\n\n    const rawDataArray = [utils.getMetrics(), rawData];\n    // add the track cookie to raw data if it's set\n    if (trackCookie) {\n      rawDataArray.push({ track_cookie: trackCookie });\n    }\n    // add the optimizely end user id cookie to raw data if it's set\n    if (optimizelyEndUserIdCookie) {\n      rawDataArray.push({\n        optimizely_end_user_id_cookie: optimizelyEndUserIdCookie\n      });\n    }\n    rawData = utils.mergeObjects(rawDataArray);\n\n    const image = new Image();\n\n    if (typeof callback === 'function') {\n      utils.addEvent(image, 'load', callback, true);\n    }\n\n    image.src = this._urlFor(\n      eventName,\n      eventValue,\n      rawData,\n      anonymousId,\n      userId,\n      merchantId,\n      unitId,\n      personId,\n      employmentId,\n      paymentId,\n      sessionId\n    );\n  }\n\n  /**\n   * Tracks an ES2 event.\n   *\n   * @Param {String} catalog_name (required)\n   * All other fields are dynamic depending on the catalog_name.\n   * Schemas for this object must be pre-registered at go/schema-manager.\n   * Track cookie data is included in this method.\n   */\n  trackV2(params) {\n    assert(\n      params.catalog_name,\n      'EventstreamClient.trackV2: catalog_name is required'\n    );\n    if (this._getApiHost() === null) {\n      return;\n    }\n\n    const data = {\n      app_name: this.applicationName,\n      u_library_name: this.LIBRARY_NAME,\n      u_library_version: this.LIBRARY_VERSION\n    };\n\n    // First we get all the tokens, set them appropriately and then clear them.\n    const anonymousId =\n      params.anonymousId ||\n      this.anonymousId ||\n      this._getCookieValue(this.ANONYMOUS_VISITOR_TOKEN_COOKIE);\n    params['subject_anonymous_token'] = anonymousId;\n    params.anonymousId = undefined;\n\n    const userId = params.userId || this.userId;\n    params['subject_user_token'] = userId;\n    params.userId = undefined;\n\n    const merchantId = params.merchantId || this.merchantId;\n    params['subject_merchant_token'] = merchantId;\n    params.merchantId = undefined;\n\n    const unitId = params.unitId || this.unitId;\n    params['subject_unit_token'] = unitId;\n    params.unitId = undefined;\n\n    const personId = params.personId || this.personId;\n    params['subject_person_token'] = personId;\n    params.personId = undefined;\n\n    const employmentId = params.employmentId || this.employmentId;\n    params['subject_employment_token'] = employmentId;\n    params.employmentId = undefined;\n\n    const paymentId = params.paymentId || this.paymentId;\n    params['subject_payment_token'] = paymentId;\n    params.paymentId = undefined;\n\n    const sessionId = params.sessionId || this.sessionId;\n    params['session_token'] = sessionId;\n    params.sessionId = undefined;\n\n    // pull out callback so we don't try to stuff it in our URL\n    const callback = params.callback || null;\n    params.callback = undefined;\n\n    // Then we get all the data for the event.\n    const paramKeys = Object.keys(params);\n    let key;\n    let value;\n    for (let i = 0; i < paramKeys.length; i++) {\n      key = paramKeys[i];\n      value = params[key];\n      if (value !== undefined && value !== null) {\n        data[key] = value;\n      }\n    }\n\n    // Then we add track cookie data\n    this._addTrackCookiesToData(data);\n\n    const image = new Image();\n\n    if (typeof callback === 'function') {\n      utils.addEvent(image, 'load', callback, true);\n    }\n\n    image.src = this._es2UrlFor(data);\n  }\n\n  /**\n   * [Private] Helper for making tracking data into URL params for ES2\n   *\n   * Because we expect a simple KV map, no need for special keys like in _urlFor.\n   */\n  _es2UrlFor(data) {\n    const queryString = [];\n\n    const keys = Object.keys(data);\n    let key;\n    for (let i = 0; i < keys.length; i++) {\n      key = keys[i];\n      queryString.push(\n        `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`\n      );\n    }\n\n    // Make sure the browser doesn't cache this request\n    this.callCount += 1;\n    queryString.push(String(`nocache=${Date.now()}`) + this.callCount);\n\n    return `${this._getApiHost() +\n      this.EVENTSTREAM_V2_ENDPOINT}?${queryString.join('&')}`;\n  }\n\n  /**\n   * [Private] Helper for applying previously-set default fields to rawData\n   *\n   * @param {Object} rawData (required)\n   * @return {Object} defaults + rawData\n   */\n  _applyDefaults(rawData) {\n    if (!this.defaultFields) {\n      return rawData;\n    }\n    return utils.mergeObjects([this.defaultFields, rawData]);\n  }\n\n  /**\n   * [Private] Create logging url for a given event\n   *\n   * @param {Array(eventName, eventValue, eventData)} event (required)\n   * @return {string}\n   */\n  _urlFor(\n    eventName,\n    eventValue,\n    rawData,\n    anonymousId,\n    userId,\n    merchantId,\n    unitId,\n    personId,\n    employmentId,\n    paymentId,\n    sessionId\n  ) {\n    const queryString = [];\n\n    // Attach anonymous visitor token (if present)\n    if (anonymousId) {\n      queryString.push(\n        `${this.ANONYMOUS_VISITOR_TOKEN_PARAM}=${encodeURIComponent(\n          anonymousId\n        )}`\n      );\n    }\n\n    // Attach identified visitor token (if present)\n    if (userId) {\n      queryString.push(\n        `${this.IDENTIFIED_VISITOR_TOKEN_PARAM}=${encodeURIComponent(userId)}`\n      );\n    }\n\n    // Attach ELDM (merchant/unit/person/employment/payment) tokens (if present)\n    if (merchantId) {\n      queryString.push(\n        `${this.MERCHANT_TOKEN_PARAM}=${encodeURIComponent(merchantId)}`\n      );\n    }\n    if (unitId) {\n      queryString.push(\n        `${this.UNIT_TOKEN_PARAM}=${encodeURIComponent(unitId)}`\n      );\n    }\n    if (personId) {\n      queryString.push(\n        `${this.PERSON_TOKEN_PARAM}=${encodeURIComponent(personId)}`\n      );\n    }\n    if (employmentId) {\n      queryString.push(\n        `${this.EMPLOYMENT_TOKEN_PARAM}=${encodeURIComponent(employmentId)}`\n      );\n    }\n    if (paymentId) {\n      queryString.push(\n        `${this.PAYMENT_TOKEN_PARAM}=${encodeURIComponent(paymentId)}`\n      );\n    }\n    if (sessionId) {\n      queryString.push(\n        `${this.SESSION_TOKEN_PARAM}=${encodeURIComponent(sessionId)}`\n      );\n    }\n\n    // Attach required parameters\n    queryString.push(`app_name=${encodeURIComponent(this.applicationName)}`);\n    queryString.push(`n=${encodeURIComponent(eventName)}`);\n    queryString.push(`v=${encodeURIComponent(eventValue)}`);\n    queryString.push(`m=${encodeURIComponent(JSON.stringify(rawData))}`);\n    queryString.push(`ln=${encodeURIComponent(this.LIBRARY_NAME)}`);\n    queryString.push(`lv=${encodeURIComponent(this.LIBRARY_VERSION)}`);\n\n    // Make sure the browser doesn't cache this request\n    this.callCount += 1;\n    queryString.push(String(`nocache=${Date.now()}`) + this.callCount);\n\n    return `${this._getApiHost() +\n      this.EVENTSTREAM_ENDPOINT}?${queryString.join('&')}`;\n  }\n\n  /**\n   * [Private] Get EventstreamClient API host name based on environment parameter\n   *\n   * @return {string}\n   */\n  _getApiHost() {\n    if (this.environment === 'production') {\n      return 'https://api.squareup.com';\n    }\n    if (this.environment === 'sandbox') {\n      return 'https://api.squareupsandbox.com';\n    }\n    if (this.environment === 'staging') {\n      return 'https://api.squareupstaging.com';\n    }\n    if (this.environment === 'development') {\n      return 'https://api.squareupstaging.com';\n    }\n    if (this.environment === 'test-eventstream') {\n      return 'https://eventstream.example.com';\n    }\n    return null;\n  }\n\n  /**\n   * [Private] Get cookie value given a cookie name\n   *\n   * @param {String} cookieName (required)\n   * @return {string}\n   */\n  _getCookieValue(cookieName) {\n    const cookies = document.cookie.split(';');\n    for (let i = 0; i < cookies.length; i++) {\n      const cookieData = cookies[i].split('=');\n      const name = cookieData[0].replace(/^\\s+|\\s+$/g, '');\n      if (name === cookieName) {\n        return decodeURIComponent(cookieData[1]);\n      }\n    }\n    return null;\n  }\n\n  /**\n   * [Private] Get encoded cookie value given a cookie name\n   *\n   * @param {String} cookieName (required)\n   * @return {string}\n   */\n  _getEncodedCookieValue(cookieName) {\n    const value = this._getCookieValue(cookieName);\n    return value ? atob(value.split('--')[0]) : null;\n  }\n\n  /**\n   * [Private] Get tracking cookie values in a map for ES2\n   *\n   * @param {Object} data (required): the data object to track\n   */\n  _addTrackCookiesToData(data) {\n    let trackCookieArray;\n    try {\n      trackCookieArray = JSON.parse(\n        this._getEncodedCookieValue(this.TRACK_COOKIE)\n      );\n    } catch (e) {\n      return;\n    }\n    if (trackCookieArray) {\n      let fullCookie;\n      let trackCookieKey;\n      let underscoreSplitCookie;\n      let dashSplitCookie;\n      for (let i = 0; i < trackCookieArray.length; i++) {\n        fullCookie = trackCookieArray[i];\n        underscoreSplitCookie = fullCookie.split('_')[0];\n        trackCookieKey = this.ES2_COOKIE_PREFIX_MAP[underscoreSplitCookie];\n        if (trackCookieKey === undefined || trackCookieKey === null) {\n          dashSplitCookie = fullCookie.split('-')[0];\n          trackCookieKey = this.ES2_COOKIE_PREFIX_MAP[dashSplitCookie];\n        }\n        if (trackCookieKey !== undefined || trackCookieKey !== null) {\n          data[trackCookieKey] = fullCookie;\n        }\n      }\n    }\n  }\n}\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n   Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n   MIT License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://faisalman.github.io/ua-parser-js\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '0.7.31',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded',\n        UA_MAX_LENGTH = 255;\n\n    var AMAZON  = 'Amazon',\n        APPLE   = 'Apple',\n        ASUS    = 'ASUS',\n        BLACKBERRY = 'BlackBerry',\n        BROWSER = 'Browser',\n        CHROME  = 'Chrome',\n        EDGE    = 'Edge',\n        FIREFOX = 'Firefox',\n        GOOGLE  = 'Google',\n        HUAWEI  = 'Huawei',\n        LG      = 'LG',\n        MICROSOFT = 'Microsoft',\n        MOTOROLA  = 'Motorola',\n        OPERA   = 'Opera',\n        SAMSUNG = 'Samsung',\n        SONY    = 'Sony',\n        XIAOMI  = 'Xiaomi',\n        ZEBRA   = 'Zebra',\n        FACEBOOK   = 'Facebook';\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        lowerize = function (str) {\n            return str.toLowerCase();\n        },\n        majorize = function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n        },\n        trim = function (str, len) {\n            if (typeof(str) === STR_TYPE) {\n                str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n                return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    // Safari < 3.0\n    var oldSafariMap = {\n            '1.0'   : '/8',\n            '1.2'   : '/1',\n            '1.3'   : '/3',\n            '2.0'   : '/412',\n            '2.0.2' : '/416',\n            '2.0.3' : '/417',\n            '2.0.4' : '/419',\n            '?'     : '/'\n        },\n        windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var regexes = {\n\n        browser : [[\n\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,      // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n            // Trident based\n            /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i,               // Avant/IEMobile/SlimBrowser\n            /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i,                                  // Baidu Browser\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Webkit/KHTML based                                               // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n            /(weibo)__([\\d\\.]+)/i                                               // Weibo\n            ], [NAME, VERSION], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UC'+BROWSER]], [\n            /\\bqbcore\\/([\\w\\.]+)/i                                              // WeChat Desktop for Windows Built-in Browser\n            ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /yabrowser\\/([\\w\\.]+)/i                                             // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n            /fxios\\/([-\\w\\.]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, FIREFOX]], [\n            /\\bqihu|(qi?ho?o?|360)browser/i                                     // 360\n            ], [[NAME, '360 '+BROWSER]], [\n            /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [                      // Oculus/Samsung/Sailfish Browser\n            /(comodo_dragon)\\/([\\w\\.]+)/i                                       // Comodo Dragon\n            ], [[NAME, /_/g, ' '], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i            // QQBrowser/Baidu App/2345 Browser\n            ], [NAME, VERSION], [\n            /(metasr)[\\/ ]?([\\w\\.]+)/i,                                         // SouGouBrowser\n            /(lbbrowser)/i                                                      // LieBao Browser\n            ], [NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION], [\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i                              // Chromium/Instagram\n            ], [NAME, VERSION], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA']], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i                        // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n            /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i                     // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n            /(links) \\(([\\w\\.]+)/i                                              // Links\n            ], [NAME, VERSION]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i                     // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i                                 // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i                                   // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows (ce|mobile); ppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i                            // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            // Ordered by popularity\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n            /samsung[- ]([-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /\\((ip(?:hone|od)[\\w ]*);/i                                         // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n            // Huawei\n            /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /\\b(poco[\\w ]+)(?: bui|\\))/i,                                       // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n            /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i                        // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n            // Vivo\n            /vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+)/i,\n            /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n            // Nokia\n            /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n            /nokia[-_ ]?([-\\w\\.]*)/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n            // Google\n            /(pixel c)\\b/i                                                      // Google Pixel C\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi)( bui|\\))/i,                                         // Kindle Fire without Silk\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(asus)-?(\\w+)/i,                                                   // Asus\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w]+)/i,                                          // Lenovo\n            /(jolla)/i,                                                         // Jolla\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(archos) (gamepad2?)/i,                                            // Archos\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(nook)[\\w ]+build\\/(\\w+)/i,                                        // Nook\n            /(dell) (strea[kpr\\d ]*[\\dko])/i,                                   // Dell Streak\n            /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,                                  // Le Pan Tablets\n            /(trinity)[- ]*(t\\d{3}) bui/i,                                      // Trinity Tablets\n            /(gigaset)[- ]+(q\\w{1,9}) bui/i,                                    // Gigaset Tablets\n            /(vodafone) ([\\w ]+)(?:\\)| bui)/i                                   // Vodafone\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /(u304aa)/i                                                         // AT&T\n            ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n            /\\bsie-(\\w*)/i                                                      // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n            /\\b(rct\\w+) b/i                                                     // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n            /\\b(venue[\\d ]{2,7}) b/i                                            // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n            /\\b(q(?:mv|ta)\\w+) b/i                                              // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n            /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i                       // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n            /\\b(tm\\d{3}\\w+) b/i\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n            /\\b(k88) b/i                                                        // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n            /\\b(nx\\d{3}j) b/i                                                   // ZTE Nubia\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n            /\\b(gen\\d{3}) b.+49h/i                                              // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n            /\\b(zur\\d{3}) b/i                                                   // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n            /\\b((zeki)?tb.*\\b) b/i                                              // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n            /\\b([yr]\\d{2}) b/i,\n            /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i                                // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n            /\\b(ns-?\\w{0,9}) b/i                                                // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n            /\\b((nxa|next)-?\\w{0,9}) b/i                                        // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n            /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i                  // Voice Xtreme Phones\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n            /\\b(lvtel\\-)?(v1[12]) b/i                                           // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n            /\\b(ph-1) /i                                                        // Essential PH-1\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n            /\\b(v(100md|700na|7011|917g).*\\b) b/i                               // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n            /\\b(trio[-\\w\\. ]+) b/i                                              // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n            /\\btu_(1491) b/i                                                    // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n            /(shield[\\w ]+) b/i                                                 // Nvidia Shield Tablets\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i             // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) ([wids3utch]+)/i                                        // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield) bui/i                                            // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n            /(playstation [345portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i        // LG SmartTV\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w)( bui|\\))/i                                          // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i                                              // Sharp\n            ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i               // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i                   // SmartTV from Unidentified Vendors\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /((pebble))app/i                                                    // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n            /(quest( 2)?)/i                                                     // Oculus Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i           // Android Phones from Unidentified Vendors\n            ], [MODEL, [TYPE, MOBILE]], [\n            /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i       // Android Tablets from Unidentified Vendors\n            ], [MODEL, [TYPE, TABLET]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i              // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /(android[-\\w\\. ]{0,9});.+buil/i                                    // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i                                       // iCab\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows) nt 6\\.2; (arm)/i,                                        // Windows RT\n            /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i,            // Windows Phone\n            /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n            // iOS/macOS\n            /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,              // iOS\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i                              // Android-x86\n            ], [VERSION, NAME], [                                               // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n            /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n            /(blackberry)\\w*\\/([\\w\\.]*)/i,                                      // Blackberry\n            /(tizen|kaios)[\\/ ]([\\w\\.]+)/i,                                     // Tizen/KaiOS\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i         // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n\n            // Google Chromecast\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast\n            ], [VERSION, [NAME, CHROME+'cast']], [\n            /(cros) [\\w]+ ([\\w\\.]+\\w)/i                                         // Chromium OS\n            ], [[NAME, 'Chromium OS'], VERSION],[\n\n            // Console\n            /(nintendo|playstation) ([wids345portablevuch]+)/i,                 // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux) ?([\\w\\.]*)/i,                                         // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,            // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    var UAParser = function (ua, extensions) {\n\n        if (typeof ua === OBJ_TYPE) {\n            extensions = ua;\n            ua = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions).getResult();\n        }\n\n        var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n        var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n        this.getBrowser = function () {\n            var _browser = {};\n            _browser[NAME] = undefined;\n            _browser[VERSION] = undefined;\n            rgxMapper.call(_browser, _ua, _rgxmap.browser);\n            _browser.major = majorize(_browser.version);\n            return _browser;\n        };\n        this.getCPU = function () {\n            var _cpu = {};\n            _cpu[ARCHITECTURE] = undefined;\n            rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n            return _cpu;\n        };\n        this.getDevice = function () {\n            var _device = {};\n            _device[VENDOR] = undefined;\n            _device[MODEL] = undefined;\n            _device[TYPE] = undefined;\n            rgxMapper.call(_device, _ua, _rgxmap.device);\n            return _device;\n        };\n        this.getEngine = function () {\n            var _engine = {};\n            _engine[NAME] = undefined;\n            _engine[VERSION] = undefined;\n            rgxMapper.call(_engine, _ua, _rgxmap.engine);\n            return _engine;\n        };\n        this.getOS = function () {\n            var _os = {};\n            _os[NAME] = undefined;\n            _os[VERSION] = undefined;\n            rgxMapper.call(_os, _ua, _rgxmap.os);\n            return _os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return _ua;\n        };\n        this.setUA = function (ua) {\n            _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n            return this;\n        };\n        this.setUA(_ua);\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    ///////////\n    // Export\n    //////////\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === FUNC_TYPE && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (typeof window !== UNDEF_TYPE) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (ua) {\n            parser.setUA(ua);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","//\n// Main\n//\n\nfunction memoize (fn, options) {\n  var cache = options && options.cache\n    ? options.cache\n    : cacheDefault\n\n  var serializer = options && options.serializer\n    ? options.serializer\n    : serializerDefault\n\n  var strategy = options && options.strategy\n    ? options.strategy\n    : strategyDefault\n\n  return strategy(fn, {\n    cache: cache,\n    serializer: serializer\n  })\n}\n\n//\n// Strategy\n//\n\nfunction isPrimitive (value) {\n  return value == null || typeof value === 'number' || typeof value === 'boolean' // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\n\nfunction monadic (fn, cache, serializer, arg) {\n  var cacheKey = isPrimitive(arg) ? arg : serializer(arg)\n\n  var computedValue = cache.get(cacheKey)\n  if (typeof computedValue === 'undefined') {\n    computedValue = fn.call(this, arg)\n    cache.set(cacheKey, computedValue)\n  }\n\n  return computedValue\n}\n\nfunction variadic (fn, cache, serializer) {\n  var args = Array.prototype.slice.call(arguments, 3)\n  var cacheKey = serializer(args)\n\n  var computedValue = cache.get(cacheKey)\n  if (typeof computedValue === 'undefined') {\n    computedValue = fn.apply(this, args)\n    cache.set(cacheKey, computedValue)\n  }\n\n  return computedValue\n}\n\nfunction assemble (fn, context, strategy, cache, serialize) {\n  return strategy.bind(\n    context,\n    fn,\n    cache,\n    serialize\n  )\n}\n\nfunction strategyDefault (fn, options) {\n  var strategy = fn.length === 1 ? monadic : variadic\n\n  return assemble(\n    fn,\n    this,\n    strategy,\n    options.cache.create(),\n    options.serializer\n  )\n}\n\nfunction strategyVariadic (fn, options) {\n  var strategy = variadic\n\n  return assemble(\n    fn,\n    this,\n    strategy,\n    options.cache.create(),\n    options.serializer\n  )\n}\n\nfunction strategyMonadic (fn, options) {\n  var strategy = monadic\n\n  return assemble(\n    fn,\n    this,\n    strategy,\n    options.cache.create(),\n    options.serializer\n  )\n}\n\n//\n// Serializer\n//\n\nfunction serializerDefault () {\n  return JSON.stringify(arguments)\n}\n\n//\n// Cache\n//\n\nfunction ObjectWithoutPrototypeCache () {\n  this.cache = Object.create(null)\n}\n\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n  return (key in this.cache)\n}\n\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n  return this.cache[key]\n}\n\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n  this.cache[key] = value\n}\n\nvar cacheDefault = {\n  create: function create () {\n    return new ObjectWithoutPrototypeCache()\n  }\n}\n\n//\n// API\n//\n\nmodule.exports = memoize\nmodule.exports.strategies = {\n  variadic: strategyVariadic,\n  monadic: strategyMonadic\n}\n","export var TYPE;\n(function (TYPE) {\n    /**\n     * Raw text\n     */\n    TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n    /**\n     * Variable w/o any format, e.g `var` in `this is a {var}`\n     */\n    TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n    /**\n     * Variable w/ number format\n     */\n    TYPE[TYPE[\"number\"] = 2] = \"number\";\n    /**\n     * Variable w/ date format\n     */\n    TYPE[TYPE[\"date\"] = 3] = \"date\";\n    /**\n     * Variable w/ time format\n     */\n    TYPE[TYPE[\"time\"] = 4] = \"time\";\n    /**\n     * Variable w/ select format\n     */\n    TYPE[TYPE[\"select\"] = 5] = \"select\";\n    /**\n     * Variable w/ plural format\n     */\n    TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n    /**\n     * Only possible within plural argument.\n     * This is the `#` symbol that will be substituted with the count.\n     */\n    TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n    /**\n     * XML-like tag\n     */\n    TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n    SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n    SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n    return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n    return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n    return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n    return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n    return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n    return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n    return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n    return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n    return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n    return {\n        type: TYPE.literal,\n        value: value,\n    };\n}\nexport function createNumberElement(value, style) {\n    return {\n        type: TYPE.number,\n        value: value,\n        style: style,\n    };\n}\n","import { __assign } from \"tslib\";\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n    var result = {};\n    skeleton.replace(DATE_TIME_REGEX, function (match) {\n        var len = match.length;\n        switch (match[0]) {\n            // Era\n            case 'G':\n                result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n                break;\n            // Year\n            case 'y':\n                result.year = len === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'Y':\n            case 'u':\n            case 'U':\n            case 'r':\n                throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n            // Quarter\n            case 'q':\n            case 'Q':\n                throw new RangeError('`q/Q` (quarter) patterns are not supported');\n            // Month\n            case 'M':\n            case 'L':\n                result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n                break;\n            // Week\n            case 'w':\n            case 'W':\n                throw new RangeError('`w/W` (week) patterns are not supported');\n            case 'd':\n                result.day = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'D':\n            case 'F':\n            case 'g':\n                throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n            // Weekday\n            case 'E':\n                result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n                break;\n            case 'e':\n                if (len < 4) {\n                    throw new RangeError('`e..eee` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            case 'c':\n                if (len < 4) {\n                    throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            // Period\n            case 'a': // AM, PM\n                result.hour12 = true;\n                break;\n            case 'b': // am, pm, noon, midnight\n            case 'B': // flexible day periods\n                throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n            // Hour\n            case 'h':\n                result.hourCycle = 'h12';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'H':\n                result.hourCycle = 'h23';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'K':\n                result.hourCycle = 'h11';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'k':\n                result.hourCycle = 'h24';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'j':\n            case 'J':\n            case 'C':\n                throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n            // Minute\n            case 'm':\n                result.minute = ['numeric', '2-digit'][len - 1];\n                break;\n            // Second\n            case 's':\n                result.second = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'S':\n            case 'A':\n                throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n            // Zone\n            case 'z': // 1..3, 4: specific non-location format\n                result.timeZoneName = len < 4 ? 'short' : 'long';\n                break;\n            case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n            case 'O': // 1, 4: miliseconds in day short, long\n            case 'v': // 1, 4: generic non-location format\n            case 'V': // 1, 2, 3, 4: time zone ID or city\n            case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n            case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n                throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n        }\n        return '';\n    });\n    return result;\n}\nfunction icuUnitToEcma(unit) {\n    return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n    var result = {};\n    str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n        // @@@ case\n        if (typeof g2 !== 'string') {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits = g1.length;\n        }\n        // @@@+ case\n        else if (g2 === '+') {\n            result.minimumSignificantDigits = g1.length;\n        }\n        // .### case\n        else if (g1[0] === '#') {\n            result.maximumSignificantDigits = g1.length;\n        }\n        // .@@## or .@@@ case\n        else {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits =\n                g1.length + (typeof g2 === 'string' ? g2.length : 0);\n        }\n        return '';\n    });\n    return result;\n}\nfunction parseSign(str) {\n    switch (str) {\n        case 'sign-auto':\n            return {\n                signDisplay: 'auto',\n            };\n        case 'sign-accounting':\n        case '()':\n            return {\n                currencySign: 'accounting',\n            };\n        case 'sign-always':\n        case '+!':\n            return {\n                signDisplay: 'always',\n            };\n        case 'sign-accounting-always':\n        case '()!':\n            return {\n                signDisplay: 'always',\n                currencySign: 'accounting',\n            };\n        case 'sign-except-zero':\n        case '+?':\n            return {\n                signDisplay: 'exceptZero',\n            };\n        case 'sign-accounting-except-zero':\n        case '()?':\n            return {\n                signDisplay: 'exceptZero',\n                currencySign: 'accounting',\n            };\n        case 'sign-never':\n        case '+_':\n            return {\n                signDisplay: 'never',\n            };\n    }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n    // Engineering\n    var result;\n    if (stem[0] === 'E' && stem[1] === 'E') {\n        result = {\n            notation: 'engineering',\n        };\n        stem = stem.slice(2);\n    }\n    else if (stem[0] === 'E') {\n        result = {\n            notation: 'scientific',\n        };\n        stem = stem.slice(1);\n    }\n    if (result) {\n        var signDisplay = stem.slice(0, 2);\n        if (signDisplay === '+!') {\n            result.signDisplay = 'always';\n            stem = stem.slice(2);\n        }\n        else if (signDisplay === '+?') {\n            result.signDisplay = 'exceptZero';\n            stem = stem.slice(2);\n        }\n        if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n            throw new Error('Malformed concise eng/scientific notation');\n        }\n        result.minimumIntegerDigits = stem.length;\n    }\n    return result;\n}\nfunction parseNotationOptions(opt) {\n    var result = {};\n    var signOpts = parseSign(opt);\n    if (signOpts) {\n        return signOpts;\n    }\n    return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n    var result = {};\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        switch (token.stem) {\n            case 'percent':\n            case '%':\n                result.style = 'percent';\n                continue;\n            case '%x100':\n                result.style = 'percent';\n                result.scale = 100;\n                continue;\n            case 'currency':\n                result.style = 'currency';\n                result.currency = token.options[0];\n                continue;\n            case 'group-off':\n            case ',_':\n                result.useGrouping = false;\n                continue;\n            case 'precision-integer':\n            case '.':\n                result.maximumFractionDigits = 0;\n                continue;\n            case 'measure-unit':\n            case 'unit':\n                result.style = 'unit';\n                result.unit = icuUnitToEcma(token.options[0]);\n                continue;\n            case 'compact-short':\n            case 'K':\n                result.notation = 'compact';\n                result.compactDisplay = 'short';\n                continue;\n            case 'compact-long':\n            case 'KK':\n                result.notation = 'compact';\n                result.compactDisplay = 'long';\n                continue;\n            case 'scientific':\n                result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'engineering':\n                result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'notation-simple':\n                result.notation = 'standard';\n                continue;\n            // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n            case 'unit-width-narrow':\n                result.currencyDisplay = 'narrowSymbol';\n                result.unitDisplay = 'narrow';\n                continue;\n            case 'unit-width-short':\n                result.currencyDisplay = 'code';\n                result.unitDisplay = 'short';\n                continue;\n            case 'unit-width-full-name':\n                result.currencyDisplay = 'name';\n                result.unitDisplay = 'long';\n                continue;\n            case 'unit-width-iso-code':\n                result.currencyDisplay = 'symbol';\n                continue;\n            case 'scale':\n                result.scale = parseFloat(token.options[0]);\n                continue;\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n            case 'integer-width':\n                if (token.options.length > 1) {\n                    throw new RangeError('integer-width stems only accept a single optional option');\n                }\n                token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n                    if (g1) {\n                        result.minimumIntegerDigits = g2.length;\n                    }\n                    else if (g3 && g4) {\n                        throw new Error('We currently do not support maximum integer digits');\n                    }\n                    else if (g5) {\n                        throw new Error('We currently do not support exact integer digits');\n                    }\n                    return '';\n                });\n                continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n        if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n            result.minimumIntegerDigits = token.stem.length;\n            continue;\n        }\n        if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n            // Precision\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n            // precision-integer case\n            if (token.options.length > 1) {\n                throw new RangeError('Fraction-precision stems only accept a single optional option');\n            }\n            token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n                // .000* case (before ICU67 it was .000+)\n                if (g2 === '*') {\n                    result.minimumFractionDigits = g1.length;\n                }\n                // .### case\n                else if (g3 && g3[0] === '#') {\n                    result.maximumFractionDigits = g3.length;\n                }\n                // .00## case\n                else if (g4 && g5) {\n                    result.minimumFractionDigits = g4.length;\n                    result.maximumFractionDigits = g4.length + g5.length;\n                }\n                else {\n                    result.minimumFractionDigits = g1.length;\n                    result.maximumFractionDigits = g1.length;\n                }\n                return '';\n            });\n            if (token.options.length) {\n                result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n            }\n            continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n        if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n            result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n            continue;\n        }\n        var signOpts = parseSign(token.stem);\n        if (signOpts) {\n            result = __assign(__assign({}, result), signOpts);\n        }\n        var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n        if (conciseScientificAndEngineeringOpts) {\n            result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n        }\n    }\n    return result;\n}\n","// @ts-nocheck\nimport { __assign, __extends } from \"tslib\";\n// @generated\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { parseDateTimeSkeleton, parseNumberSkeleton } from './skeleton';\nvar SyntaxError = /** @class */ (function (_super) {\n    __extends(SyntaxError, _super);\n    function SyntaxError(message, expected, found, location) {\n        var _this = _super.call(this) || this;\n        _this.message = message;\n        _this.expected = expected;\n        _this.found = found;\n        _this.location = location;\n        _this.name = \"SyntaxError\";\n        if (typeof Error.captureStackTrace === \"function\") {\n            Error.captureStackTrace(_this, SyntaxError);\n        }\n        return _this;\n    }\n    SyntaxError.buildMessage = function (expected, found) {\n        function hex(ch) {\n            return ch.charCodeAt(0).toString(16).toUpperCase();\n        }\n        function literalEscape(s) {\n            return s\n                .replace(/\\\\/g, \"\\\\\\\\\")\n                .replace(/\"/g, \"\\\\\\\"\")\n                .replace(/\\0/g, \"\\\\0\")\n                .replace(/\\t/g, \"\\\\t\")\n                .replace(/\\n/g, \"\\\\n\")\n                .replace(/\\r/g, \"\\\\r\")\n                .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n                .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n        }\n        function classEscape(s) {\n            return s\n                .replace(/\\\\/g, \"\\\\\\\\\")\n                .replace(/\\]/g, \"\\\\]\")\n                .replace(/\\^/g, \"\\\\^\")\n                .replace(/-/g, \"\\\\-\")\n                .replace(/\\0/g, \"\\\\0\")\n                .replace(/\\t/g, \"\\\\t\")\n                .replace(/\\n/g, \"\\\\n\")\n                .replace(/\\r/g, \"\\\\r\")\n                .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n                .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n        }\n        function describeExpectation(expectation) {\n            switch (expectation.type) {\n                case \"literal\":\n                    return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n                case \"class\":\n                    var escapedParts = expectation.parts.map(function (part) {\n                        return Array.isArray(part)\n                            ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n                            : classEscape(part);\n                    });\n                    return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n                case \"any\":\n                    return \"any character\";\n                case \"end\":\n                    return \"end of input\";\n                case \"other\":\n                    return expectation.description;\n            }\n        }\n        function describeExpected(expected1) {\n            var descriptions = expected1.map(describeExpectation);\n            var i;\n            var j;\n            descriptions.sort();\n            if (descriptions.length > 0) {\n                for (i = 1, j = 1; i < descriptions.length; i++) {\n                    if (descriptions[i - 1] !== descriptions[i]) {\n                        descriptions[j] = descriptions[i];\n                        j++;\n                    }\n                }\n                descriptions.length = j;\n            }\n            switch (descriptions.length) {\n                case 1:\n                    return descriptions[0];\n                case 2:\n                    return descriptions[0] + \" or \" + descriptions[1];\n                default:\n                    return descriptions.slice(0, -1).join(\", \")\n                        + \", or \"\n                        + descriptions[descriptions.length - 1];\n            }\n        }\n        function describeFound(found1) {\n            return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n        }\n        return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n    };\n    return SyntaxError;\n}(Error));\nexport { SyntaxError };\nfunction peg$parse(input, options) {\n    options = options !== undefined ? options : {};\n    var peg$FAILED = {};\n    var peg$startRuleFunctions = { start: peg$parsestart };\n    var peg$startRuleFunction = peg$parsestart;\n    var peg$c0 = function () { return !ignoreTag; };\n    var peg$c1 = function (x) { return x; };\n    var peg$c2 = function () { return ignoreTag; };\n    var peg$c3 = \"<\";\n    var peg$c4 = peg$literalExpectation(\"<\", false);\n    var peg$c5 = function (parts) {\n        return parts.join('');\n    };\n    var peg$c6 = function () { return '<'; };\n    var peg$c7 = function (messageText) {\n        return __assign({ type: TYPE.literal, value: messageText }, insertLocation());\n    };\n    var peg$c8 = \"#\";\n    var peg$c9 = peg$literalExpectation(\"#\", false);\n    var peg$c10 = function () {\n        return __assign({ type: TYPE.pound }, insertLocation());\n    };\n    var peg$c11 = peg$otherExpectation(\"tagElement\");\n    var peg$c12 = function (open, children, close) {\n        if (open !== close) {\n            error(\"Mismatch tag \\\"\" + open + \"\\\" !== \\\"\" + close + \"\\\"\", location());\n        }\n        return __assign({ type: TYPE.tag, value: open, children: children }, insertLocation());\n    };\n    var peg$c13 = \"/>\";\n    var peg$c14 = peg$literalExpectation(\"/>\", false);\n    var peg$c15 = function (value) {\n        return __assign({ type: TYPE.literal, value: value.join('') }, insertLocation());\n    };\n    var peg$c16 = \">\";\n    var peg$c17 = peg$literalExpectation(\">\", false);\n    var peg$c18 = function (tag) { return tag; };\n    var peg$c19 = \"</\";\n    var peg$c20 = peg$literalExpectation(\"</\", false);\n    var peg$c21 = peg$otherExpectation(\"argumentElement\");\n    var peg$c22 = \"{\";\n    var peg$c23 = peg$literalExpectation(\"{\", false);\n    var peg$c24 = \"}\";\n    var peg$c25 = peg$literalExpectation(\"}\", false);\n    var peg$c26 = function (value) {\n        return __assign({ type: TYPE.argument, value: value }, insertLocation());\n    };\n    var peg$c27 = peg$otherExpectation(\"numberSkeletonId\");\n    var peg$c28 = /^['\\/{}]/;\n    var peg$c29 = peg$classExpectation([\"'\", \"/\", \"{\", \"}\"], false, false);\n    var peg$c30 = peg$anyExpectation();\n    var peg$c31 = peg$otherExpectation(\"numberSkeletonTokenOption\");\n    var peg$c32 = \"/\";\n    var peg$c33 = peg$literalExpectation(\"/\", false);\n    var peg$c34 = function (option) { return option; };\n    var peg$c35 = peg$otherExpectation(\"numberSkeletonToken\");\n    var peg$c36 = function (stem, options) {\n        return { stem: stem, options: options };\n    };\n    var peg$c37 = function (tokens) {\n        return __assign({ type: SKELETON_TYPE.number, tokens: tokens, parsedOptions: shouldParseSkeleton ? parseNumberSkeleton(tokens) : {} }, insertLocation());\n    };\n    var peg$c38 = \"::\";\n    var peg$c39 = peg$literalExpectation(\"::\", false);\n    var peg$c40 = function (skeleton) { return skeleton; };\n    var peg$c41 = function () { messageCtx.push('numberArgStyle'); return true; };\n    var peg$c42 = function (style) {\n        messageCtx.pop();\n        return style.replace(/\\s*$/, '');\n    };\n    var peg$c43 = \",\";\n    var peg$c44 = peg$literalExpectation(\",\", false);\n    var peg$c45 = \"number\";\n    var peg$c46 = peg$literalExpectation(\"number\", false);\n    var peg$c47 = function (value, type, style) {\n        return __assign({ type: type === 'number' ? TYPE.number : type === 'date' ? TYPE.date : TYPE.time, style: style && style[2], value: value }, insertLocation());\n    };\n    var peg$c48 = \"'\";\n    var peg$c49 = peg$literalExpectation(\"'\", false);\n    var peg$c50 = /^[^']/;\n    var peg$c51 = peg$classExpectation([\"'\"], true, false);\n    var peg$c52 = /^[^a-zA-Z'{}]/;\n    var peg$c53 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"'\", \"{\", \"}\"], true, false);\n    var peg$c54 = /^[a-zA-Z]/;\n    var peg$c55 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n    var peg$c56 = function (pattern) {\n        return __assign({ type: SKELETON_TYPE.dateTime, pattern: pattern, parsedOptions: shouldParseSkeleton ? parseDateTimeSkeleton(pattern) : {} }, insertLocation());\n    };\n    var peg$c57 = function () { messageCtx.push('dateOrTimeArgStyle'); return true; };\n    var peg$c58 = \"date\";\n    var peg$c59 = peg$literalExpectation(\"date\", false);\n    var peg$c60 = \"time\";\n    var peg$c61 = peg$literalExpectation(\"time\", false);\n    var peg$c62 = \"plural\";\n    var peg$c63 = peg$literalExpectation(\"plural\", false);\n    var peg$c64 = \"selectordinal\";\n    var peg$c65 = peg$literalExpectation(\"selectordinal\", false);\n    var peg$c66 = \"offset:\";\n    var peg$c67 = peg$literalExpectation(\"offset:\", false);\n    var peg$c68 = function (value, pluralType, offset, options) {\n        return __assign({ type: TYPE.plural, pluralType: pluralType === 'plural' ? 'cardinal' : 'ordinal', value: value, offset: offset ? offset[2] : 0, options: options.reduce(function (all, _a) {\n                var id = _a.id, value = _a.value, optionLocation = _a.location;\n                if (id in all) {\n                    error(\"Duplicate option \\\"\" + id + \"\\\" in plural element: \\\"\" + text() + \"\\\"\", location());\n                }\n                all[id] = {\n                    value: value,\n                    location: optionLocation\n                };\n                return all;\n            }, {}) }, insertLocation());\n    };\n    var peg$c69 = \"select\";\n    var peg$c70 = peg$literalExpectation(\"select\", false);\n    var peg$c71 = function (value, options) {\n        return __assign({ type: TYPE.select, value: value, options: options.reduce(function (all, _a) {\n                var id = _a.id, value = _a.value, optionLocation = _a.location;\n                if (id in all) {\n                    error(\"Duplicate option \\\"\" + id + \"\\\" in select element: \\\"\" + text() + \"\\\"\", location());\n                }\n                all[id] = {\n                    value: value,\n                    location: optionLocation\n                };\n                return all;\n            }, {}) }, insertLocation());\n    };\n    var peg$c72 = \"=\";\n    var peg$c73 = peg$literalExpectation(\"=\", false);\n    var peg$c74 = function (id) { messageCtx.push('select'); return true; };\n    var peg$c75 = function (id, value) {\n        messageCtx.pop();\n        return __assign({ id: id,\n            value: value }, insertLocation());\n    };\n    var peg$c76 = function (id) { messageCtx.push('plural'); return true; };\n    var peg$c77 = function (id, value) {\n        messageCtx.pop();\n        return __assign({ id: id,\n            value: value }, insertLocation());\n    };\n    var peg$c78 = peg$otherExpectation(\"whitespace\");\n    var peg$c79 = /^[\\t-\\r \\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n    var peg$c80 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\xA0\", \"\\u1680\", [\"\\u2000\", \"\\u200A\"], \"\\u2028\", \"\\u2029\", \"\\u202F\", \"\\u205F\", \"\\u3000\"], false, false);\n    var peg$c81 = peg$otherExpectation(\"syntax pattern\");\n    var peg$c82 = /^[!-\\/:-@[-\\^`{-~\\xA1-\\xA7\\xA9\\xAB\\xAC\\xAE\\xB0\\xB1\\xB6\\xBB\\xBF\\xD7\\xF7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]/;\n    var peg$c83 = peg$classExpectation([[\"!\", \"/\"], [\":\", \"@\"], [\"[\", \"^\"], \"`\", [\"{\", \"~\"], [\"\\xA1\", \"\\xA7\"], \"\\xA9\", \"\\xAB\", \"\\xAC\", \"\\xAE\", \"\\xB0\", \"\\xB1\", \"\\xB6\", \"\\xBB\", \"\\xBF\", \"\\xD7\", \"\\xF7\", [\"\\u2010\", \"\\u2027\"], [\"\\u2030\", \"\\u203E\"], [\"\\u2041\", \"\\u2053\"], [\"\\u2055\", \"\\u205E\"], [\"\\u2190\", \"\\u245F\"], [\"\\u2500\", \"\\u2775\"], [\"\\u2794\", \"\\u2BFF\"], [\"\\u2E00\", \"\\u2E7F\"], [\"\\u3001\", \"\\u3003\"], [\"\\u3008\", \"\\u3020\"], \"\\u3030\", \"\\uFD3E\", \"\\uFD3F\", \"\\uFE45\", \"\\uFE46\"], false, false);\n    var peg$c84 = peg$otherExpectation(\"optional whitespace\");\n    var peg$c85 = peg$otherExpectation(\"number\");\n    var peg$c86 = \"-\";\n    var peg$c87 = peg$literalExpectation(\"-\", false);\n    var peg$c88 = function (negative, num) {\n        return num\n            ? negative\n                ? -num\n                : num\n            : 0;\n    };\n    var peg$c89 = peg$otherExpectation(\"apostrophe\");\n    var peg$c90 = peg$otherExpectation(\"double apostrophes\");\n    var peg$c91 = \"''\";\n    var peg$c92 = peg$literalExpectation(\"''\", false);\n    var peg$c93 = function () { return \"'\"; };\n    var peg$c94 = function (escapedChar, quotedChars) {\n        return escapedChar + quotedChars.replace(\"''\", \"'\");\n    };\n    var peg$c95 = function (x) {\n        return (x !== '<' &&\n            x !== '{' &&\n            !(isInPluralOption() && x === '#') &&\n            !(isNestedMessageText() && x === '}'));\n    };\n    var peg$c96 = \"\\n\";\n    var peg$c97 = peg$literalExpectation(\"\\n\", false);\n    var peg$c98 = function (x) {\n        return x === '<' || x === '>' || x === '{' || x === '}' || (isInPluralOption() && x === '#');\n    };\n    var peg$c99 = peg$otherExpectation(\"argNameOrNumber\");\n    var peg$c100 = peg$otherExpectation(\"validTag\");\n    var peg$c101 = peg$otherExpectation(\"argNumber\");\n    var peg$c102 = \"0\";\n    var peg$c103 = peg$literalExpectation(\"0\", false);\n    var peg$c104 = function () { return 0; };\n    var peg$c105 = /^[1-9]/;\n    var peg$c106 = peg$classExpectation([[\"1\", \"9\"]], false, false);\n    var peg$c107 = /^[0-9]/;\n    var peg$c108 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n    var peg$c109 = function (digits) {\n        return parseInt(digits.join(''), 10);\n    };\n    var peg$c110 = peg$otherExpectation(\"argName\");\n    var peg$c111 = peg$otherExpectation(\"tagName\");\n    var peg$currPos = 0;\n    var peg$savedPos = 0;\n    var peg$posDetailsCache = [{ line: 1, column: 1 }];\n    var peg$maxFailPos = 0;\n    var peg$maxFailExpected = [];\n    var peg$silentFails = 0;\n    var peg$result;\n    if (options.startRule !== undefined) {\n        if (!(options.startRule in peg$startRuleFunctions)) {\n            throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n        }\n        peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n    function text() {\n        return input.substring(peg$savedPos, peg$currPos);\n    }\n    function location() {\n        return peg$computeLocation(peg$savedPos, peg$currPos);\n    }\n    function expected(description, location1) {\n        location1 = location1 !== undefined\n            ? location1\n            : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location1);\n    }\n    function error(message, location1) {\n        location1 = location1 !== undefined\n            ? location1\n            : peg$computeLocation(peg$savedPos, peg$currPos);\n        throw peg$buildSimpleError(message, location1);\n    }\n    function peg$literalExpectation(text1, ignoreCase) {\n        return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n    }\n    function peg$classExpectation(parts, inverted, ignoreCase) {\n        return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n    }\n    function peg$anyExpectation() {\n        return { type: \"any\" };\n    }\n    function peg$endExpectation() {\n        return { type: \"end\" };\n    }\n    function peg$otherExpectation(description) {\n        return { type: \"other\", description: description };\n    }\n    function peg$computePosDetails(pos) {\n        var details = peg$posDetailsCache[pos];\n        var p;\n        if (details) {\n            return details;\n        }\n        else {\n            p = pos - 1;\n            while (!peg$posDetailsCache[p]) {\n                p--;\n            }\n            details = peg$posDetailsCache[p];\n            details = {\n                line: details.line,\n                column: details.column\n            };\n            while (p < pos) {\n                if (input.charCodeAt(p) === 10) {\n                    details.line++;\n                    details.column = 1;\n                }\n                else {\n                    details.column++;\n                }\n                p++;\n            }\n            peg$posDetailsCache[pos] = details;\n            return details;\n        }\n    }\n    function peg$computeLocation(startPos, endPos) {\n        var startPosDetails = peg$computePosDetails(startPos);\n        var endPosDetails = peg$computePosDetails(endPos);\n        return {\n            start: {\n                offset: startPos,\n                line: startPosDetails.line,\n                column: startPosDetails.column\n            },\n            end: {\n                offset: endPos,\n                line: endPosDetails.line,\n                column: endPosDetails.column\n            }\n        };\n    }\n    function peg$fail(expected1) {\n        if (peg$currPos < peg$maxFailPos) {\n            return;\n        }\n        if (peg$currPos > peg$maxFailPos) {\n            peg$maxFailPos = peg$currPos;\n            peg$maxFailExpected = [];\n        }\n        peg$maxFailExpected.push(expected1);\n    }\n    function peg$buildSimpleError(message, location1) {\n        return new SyntaxError(message, [], \"\", location1);\n    }\n    function peg$buildStructuredError(expected1, found, location1) {\n        return new SyntaxError(SyntaxError.buildMessage(expected1, found), expected1, found, location1);\n    }\n    function peg$parsestart() {\n        var s0;\n        s0 = peg$parsemessage();\n        return s0;\n    }\n    function peg$parsemessage() {\n        var s0, s1;\n        s0 = [];\n        s1 = peg$parsemessageElement();\n        while (s1 !== peg$FAILED) {\n            s0.push(s1);\n            s1 = peg$parsemessageElement();\n        }\n        return s0;\n    }\n    function peg$parsemessageElement() {\n        var s0, s1, s2;\n        s0 = peg$currPos;\n        peg$savedPos = peg$currPos;\n        s1 = peg$c0();\n        if (s1) {\n            s1 = undefined;\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsetagElement();\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c1(s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = peg$parseliteralElement();\n            if (s0 === peg$FAILED) {\n                s0 = peg$parseargumentElement();\n                if (s0 === peg$FAILED) {\n                    s0 = peg$parsesimpleFormatElement();\n                    if (s0 === peg$FAILED) {\n                        s0 = peg$parsepluralElement();\n                        if (s0 === peg$FAILED) {\n                            s0 = peg$parseselectElement();\n                            if (s0 === peg$FAILED) {\n                                s0 = peg$parsepoundElement();\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        return s0;\n    }\n    function peg$parsemessageText() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        peg$savedPos = peg$currPos;\n        s1 = peg$c2();\n        if (s1) {\n            s1 = undefined;\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$parsedoubleApostrophes();\n            if (s3 === peg$FAILED) {\n                s3 = peg$parsequotedString();\n                if (s3 === peg$FAILED) {\n                    s3 = peg$parseunquotedString();\n                    if (s3 === peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 60) {\n                            s3 = peg$c3;\n                            peg$currPos++;\n                        }\n                        else {\n                            s3 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c4);\n                            }\n                        }\n                    }\n                }\n            }\n            if (s3 !== peg$FAILED) {\n                while (s3 !== peg$FAILED) {\n                    s2.push(s3);\n                    s3 = peg$parsedoubleApostrophes();\n                    if (s3 === peg$FAILED) {\n                        s3 = peg$parsequotedString();\n                        if (s3 === peg$FAILED) {\n                            s3 = peg$parseunquotedString();\n                            if (s3 === peg$FAILED) {\n                                if (input.charCodeAt(peg$currPos) === 60) {\n                                    s3 = peg$c3;\n                                    peg$currPos++;\n                                }\n                                else {\n                                    s3 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c4);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                s2 = peg$FAILED;\n            }\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c5(s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = [];\n            s2 = peg$parsedoubleApostrophes();\n            if (s2 === peg$FAILED) {\n                s2 = peg$parsequotedString();\n                if (s2 === peg$FAILED) {\n                    s2 = peg$parseunquotedString();\n                    if (s2 === peg$FAILED) {\n                        s2 = peg$parsenonTagStartingAngleBracket();\n                    }\n                }\n            }\n            if (s2 !== peg$FAILED) {\n                while (s2 !== peg$FAILED) {\n                    s1.push(s2);\n                    s2 = peg$parsedoubleApostrophes();\n                    if (s2 === peg$FAILED) {\n                        s2 = peg$parsequotedString();\n                        if (s2 === peg$FAILED) {\n                            s2 = peg$parseunquotedString();\n                            if (s2 === peg$FAILED) {\n                                s2 = peg$parsenonTagStartingAngleBracket();\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                s1 = peg$FAILED;\n            }\n            if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c5(s1);\n            }\n            s0 = s1;\n        }\n        return s0;\n    }\n    function peg$parsenonTagStartingAngleBracket() {\n        var s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$parseopeningTag();\n        if (s2 === peg$FAILED) {\n            s2 = peg$parseclosingTag();\n            if (s2 === peg$FAILED) {\n                s2 = peg$parseselfClosingTag();\n            }\n        }\n        peg$silentFails--;\n        if (s2 === peg$FAILED) {\n            s1 = undefined;\n        }\n        else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 60) {\n                s2 = peg$c3;\n                peg$currPos++;\n            }\n            else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c4);\n                }\n            }\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c6();\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parseliteralElement() {\n        var s0, s1;\n        s0 = peg$currPos;\n        s1 = peg$parsemessageText();\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c7(s1);\n        }\n        s0 = s1;\n        return s0;\n    }\n    function peg$parsepoundElement() {\n        var s0, s1;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 35) {\n            s1 = peg$c8;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c9);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c10();\n        }\n        s0 = s1;\n        return s0;\n    }\n    function peg$parsetagElement() {\n        var s0, s1, s2, s3;\n        peg$silentFails++;\n        s0 = peg$parseselfClosingTag();\n        if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseopeningTag();\n            if (s1 !== peg$FAILED) {\n                s2 = peg$parsemessage();\n                if (s2 !== peg$FAILED) {\n                    s3 = peg$parseclosingTag();\n                    if (s3 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s1 = peg$c12(s1, s2, s3);\n                        s0 = s1;\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c11);\n            }\n        }\n        return s0;\n    }\n    function peg$parseselfClosingTag() {\n        var s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 60) {\n            s2 = peg$c3;\n            peg$currPos++;\n        }\n        else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c4);\n            }\n        }\n        if (s2 !== peg$FAILED) {\n            s3 = peg$parsevalidTag();\n            if (s3 !== peg$FAILED) {\n                s4 = peg$parse_();\n                if (s4 !== peg$FAILED) {\n                    if (input.substr(peg$currPos, 2) === peg$c13) {\n                        s5 = peg$c13;\n                        peg$currPos += 2;\n                    }\n                    else {\n                        s5 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c14);\n                        }\n                    }\n                    if (s5 !== peg$FAILED) {\n                        s2 = [s2, s3, s4, s5];\n                        s1 = s2;\n                    }\n                    else {\n                        peg$currPos = s1;\n                        s1 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s1;\n                    s1 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c15(s1);\n        }\n        s0 = s1;\n        return s0;\n    }\n    function peg$parseopeningTag() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 60) {\n            s1 = peg$c3;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c4);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsevalidTag();\n            if (s2 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 62) {\n                    s3 = peg$c16;\n                    peg$currPos++;\n                }\n                else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c17);\n                    }\n                }\n                if (s3 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c18(s2);\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parseclosingTag() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c19) {\n            s1 = peg$c19;\n            peg$currPos += 2;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c20);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsevalidTag();\n            if (s2 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 62) {\n                    s3 = peg$c16;\n                    peg$currPos++;\n                }\n                else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c17);\n                    }\n                }\n                if (s3 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c18(s2);\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parseargumentElement() {\n        var s0, s1, s2, s3, s4, s5;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c22;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c23);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parseargNameOrNumber();\n                if (s3 !== peg$FAILED) {\n                    s4 = peg$parse_();\n                    if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 125) {\n                            s5 = peg$c24;\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c25);\n                            }\n                        }\n                        if (s5 !== peg$FAILED) {\n                            peg$savedPos = s0;\n                            s1 = peg$c26(s3);\n                            s0 = s1;\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c21);\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumberSkeletonId() {\n        var s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        peg$silentFails++;\n        s4 = peg$parsewhiteSpace();\n        if (s4 === peg$FAILED) {\n            if (peg$c28.test(input.charAt(peg$currPos))) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n            }\n            else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c29);\n                }\n            }\n        }\n        peg$silentFails--;\n        if (s4 === peg$FAILED) {\n            s3 = undefined;\n        }\n        else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n            }\n            else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c30);\n                }\n            }\n            if (s4 !== peg$FAILED) {\n                s3 = [s3, s4];\n                s2 = s3;\n            }\n            else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                s2 = peg$currPos;\n                s3 = peg$currPos;\n                peg$silentFails++;\n                s4 = peg$parsewhiteSpace();\n                if (s4 === peg$FAILED) {\n                    if (peg$c28.test(input.charAt(peg$currPos))) {\n                        s4 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c29);\n                        }\n                    }\n                }\n                peg$silentFails--;\n                if (s4 === peg$FAILED) {\n                    s3 = undefined;\n                }\n                else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                }\n                if (s3 !== peg$FAILED) {\n                    if (input.length > peg$currPos) {\n                        s4 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c30);\n                        }\n                    }\n                    if (s4 !== peg$FAILED) {\n                        s3 = [s3, s4];\n                        s2 = s3;\n                    }\n                    else {\n                        peg$currPos = s2;\n                        s2 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s2;\n                    s2 = peg$FAILED;\n                }\n            }\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c27);\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumberSkeletonTokenOption() {\n        var s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 47) {\n            s1 = peg$c32;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c33);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsenumberSkeletonId();\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c34(s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c31);\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumberSkeletonToken() {\n        var s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsenumberSkeletonId();\n            if (s2 !== peg$FAILED) {\n                s3 = [];\n                s4 = peg$parsenumberSkeletonTokenOption();\n                while (s4 !== peg$FAILED) {\n                    s3.push(s4);\n                    s4 = peg$parsenumberSkeletonTokenOption();\n                }\n                if (s3 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c36(s2, s3);\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c35);\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumberSkeleton() {\n        var s0, s1, s2;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsenumberSkeletonToken();\n        if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                s2 = peg$parsenumberSkeletonToken();\n            }\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c37(s1);\n        }\n        s0 = s1;\n        return s0;\n    }\n    function peg$parsenumberArgStyle() {\n        var s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c38) {\n            s1 = peg$c38;\n            peg$currPos += 2;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c39);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsenumberSkeleton();\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c40(s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            peg$savedPos = peg$currPos;\n            s1 = peg$c41();\n            if (s1) {\n                s1 = undefined;\n            }\n            else {\n                s1 = peg$FAILED;\n            }\n            if (s1 !== peg$FAILED) {\n                s2 = peg$parsemessageText();\n                if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c42(s2);\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumberFormatElement() {\n        var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c22;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c23);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parseargNameOrNumber();\n                if (s3 !== peg$FAILED) {\n                    s4 = peg$parse_();\n                    if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 44) {\n                            s5 = peg$c43;\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c44);\n                            }\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parse_();\n                            if (s6 !== peg$FAILED) {\n                                if (input.substr(peg$currPos, 6) === peg$c45) {\n                                    s7 = peg$c45;\n                                    peg$currPos += 6;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c46);\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    s8 = peg$parse_();\n                                    if (s8 !== peg$FAILED) {\n                                        s9 = peg$currPos;\n                                        if (input.charCodeAt(peg$currPos) === 44) {\n                                            s10 = peg$c43;\n                                            peg$currPos++;\n                                        }\n                                        else {\n                                            s10 = peg$FAILED;\n                                            if (peg$silentFails === 0) {\n                                                peg$fail(peg$c44);\n                                            }\n                                        }\n                                        if (s10 !== peg$FAILED) {\n                                            s11 = peg$parse_();\n                                            if (s11 !== peg$FAILED) {\n                                                s12 = peg$parsenumberArgStyle();\n                                                if (s12 !== peg$FAILED) {\n                                                    s10 = [s10, s11, s12];\n                                                    s9 = s10;\n                                                }\n                                                else {\n                                                    peg$currPos = s9;\n                                                    s9 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s9;\n                                                s9 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s9;\n                                            s9 = peg$FAILED;\n                                        }\n                                        if (s9 === peg$FAILED) {\n                                            s9 = null;\n                                        }\n                                        if (s9 !== peg$FAILED) {\n                                            s10 = peg$parse_();\n                                            if (s10 !== peg$FAILED) {\n                                                if (input.charCodeAt(peg$currPos) === 125) {\n                                                    s11 = peg$c24;\n                                                    peg$currPos++;\n                                                }\n                                                else {\n                                                    s11 = peg$FAILED;\n                                                    if (peg$silentFails === 0) {\n                                                        peg$fail(peg$c25);\n                                                    }\n                                                }\n                                                if (s11 !== peg$FAILED) {\n                                                    peg$savedPos = s0;\n                                                    s1 = peg$c47(s3, s7, s9);\n                                                    s0 = s1;\n                                                }\n                                                else {\n                                                    peg$currPos = s0;\n                                                    s0 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s0;\n                                                s0 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s0;\n                                            s0 = peg$FAILED;\n                                        }\n                                    }\n                                    else {\n                                        peg$currPos = s0;\n                                        s0 = peg$FAILED;\n                                    }\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsedateTimeSkeletonLiteral() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 39) {\n            s1 = peg$c48;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c49);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$parsedoubleApostrophes();\n            if (s3 === peg$FAILED) {\n                if (peg$c50.test(input.charAt(peg$currPos))) {\n                    s3 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                }\n                else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c51);\n                    }\n                }\n            }\n            if (s3 !== peg$FAILED) {\n                while (s3 !== peg$FAILED) {\n                    s2.push(s3);\n                    s3 = peg$parsedoubleApostrophes();\n                    if (s3 === peg$FAILED) {\n                        if (peg$c50.test(input.charAt(peg$currPos))) {\n                            s3 = input.charAt(peg$currPos);\n                            peg$currPos++;\n                        }\n                        else {\n                            s3 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c51);\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                s2 = peg$FAILED;\n            }\n            if (s2 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 39) {\n                    s3 = peg$c48;\n                    peg$currPos++;\n                }\n                else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c49);\n                    }\n                }\n                if (s3 !== peg$FAILED) {\n                    s1 = [s1, s2, s3];\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = [];\n            s1 = peg$parsedoubleApostrophes();\n            if (s1 === peg$FAILED) {\n                if (peg$c52.test(input.charAt(peg$currPos))) {\n                    s1 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                }\n                else {\n                    s1 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c53);\n                    }\n                }\n            }\n            if (s1 !== peg$FAILED) {\n                while (s1 !== peg$FAILED) {\n                    s0.push(s1);\n                    s1 = peg$parsedoubleApostrophes();\n                    if (s1 === peg$FAILED) {\n                        if (peg$c52.test(input.charAt(peg$currPos))) {\n                            s1 = input.charAt(peg$currPos);\n                            peg$currPos++;\n                        }\n                        else {\n                            s1 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c53);\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                s0 = peg$FAILED;\n            }\n        }\n        return s0;\n    }\n    function peg$parsedateTimeSkeletonPattern() {\n        var s0, s1;\n        s0 = [];\n        if (peg$c54.test(input.charAt(peg$currPos))) {\n            s1 = input.charAt(peg$currPos);\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c55);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            while (s1 !== peg$FAILED) {\n                s0.push(s1);\n                if (peg$c54.test(input.charAt(peg$currPos))) {\n                    s1 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                }\n                else {\n                    s1 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c55);\n                    }\n                }\n            }\n        }\n        else {\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsedateTimeSkeleton() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = peg$parsedateTimeSkeletonLiteral();\n        if (s3 === peg$FAILED) {\n            s3 = peg$parsedateTimeSkeletonPattern();\n        }\n        if (s3 !== peg$FAILED) {\n            while (s3 !== peg$FAILED) {\n                s2.push(s3);\n                s3 = peg$parsedateTimeSkeletonLiteral();\n                if (s3 === peg$FAILED) {\n                    s3 = peg$parsedateTimeSkeletonPattern();\n                }\n            }\n        }\n        else {\n            s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n            s1 = input.substring(s1, peg$currPos);\n        }\n        else {\n            s1 = s2;\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c56(s1);\n        }\n        s0 = s1;\n        return s0;\n    }\n    function peg$parsedateOrTimeArgStyle() {\n        var s0, s1, s2;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c38) {\n            s1 = peg$c38;\n            peg$currPos += 2;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c39);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsedateTimeSkeleton();\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c40(s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            peg$savedPos = peg$currPos;\n            s1 = peg$c57();\n            if (s1) {\n                s1 = undefined;\n            }\n            else {\n                s1 = peg$FAILED;\n            }\n            if (s1 !== peg$FAILED) {\n                s2 = peg$parsemessageText();\n                if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c42(s2);\n                    s0 = s1;\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        return s0;\n    }\n    function peg$parsedateOrTimeFormatElement() {\n        var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c22;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c23);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parseargNameOrNumber();\n                if (s3 !== peg$FAILED) {\n                    s4 = peg$parse_();\n                    if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 44) {\n                            s5 = peg$c43;\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c44);\n                            }\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parse_();\n                            if (s6 !== peg$FAILED) {\n                                if (input.substr(peg$currPos, 4) === peg$c58) {\n                                    s7 = peg$c58;\n                                    peg$currPos += 4;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c59);\n                                    }\n                                }\n                                if (s7 === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 4) === peg$c60) {\n                                        s7 = peg$c60;\n                                        peg$currPos += 4;\n                                    }\n                                    else {\n                                        s7 = peg$FAILED;\n                                        if (peg$silentFails === 0) {\n                                            peg$fail(peg$c61);\n                                        }\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    s8 = peg$parse_();\n                                    if (s8 !== peg$FAILED) {\n                                        s9 = peg$currPos;\n                                        if (input.charCodeAt(peg$currPos) === 44) {\n                                            s10 = peg$c43;\n                                            peg$currPos++;\n                                        }\n                                        else {\n                                            s10 = peg$FAILED;\n                                            if (peg$silentFails === 0) {\n                                                peg$fail(peg$c44);\n                                            }\n                                        }\n                                        if (s10 !== peg$FAILED) {\n                                            s11 = peg$parse_();\n                                            if (s11 !== peg$FAILED) {\n                                                s12 = peg$parsedateOrTimeArgStyle();\n                                                if (s12 !== peg$FAILED) {\n                                                    s10 = [s10, s11, s12];\n                                                    s9 = s10;\n                                                }\n                                                else {\n                                                    peg$currPos = s9;\n                                                    s9 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s9;\n                                                s9 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s9;\n                                            s9 = peg$FAILED;\n                                        }\n                                        if (s9 === peg$FAILED) {\n                                            s9 = null;\n                                        }\n                                        if (s9 !== peg$FAILED) {\n                                            s10 = peg$parse_();\n                                            if (s10 !== peg$FAILED) {\n                                                if (input.charCodeAt(peg$currPos) === 125) {\n                                                    s11 = peg$c24;\n                                                    peg$currPos++;\n                                                }\n                                                else {\n                                                    s11 = peg$FAILED;\n                                                    if (peg$silentFails === 0) {\n                                                        peg$fail(peg$c25);\n                                                    }\n                                                }\n                                                if (s11 !== peg$FAILED) {\n                                                    peg$savedPos = s0;\n                                                    s1 = peg$c47(s3, s7, s9);\n                                                    s0 = s1;\n                                                }\n                                                else {\n                                                    peg$currPos = s0;\n                                                    s0 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s0;\n                                                s0 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s0;\n                                            s0 = peg$FAILED;\n                                        }\n                                    }\n                                    else {\n                                        peg$currPos = s0;\n                                        s0 = peg$FAILED;\n                                    }\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsesimpleFormatElement() {\n        var s0;\n        s0 = peg$parsenumberFormatElement();\n        if (s0 === peg$FAILED) {\n            s0 = peg$parsedateOrTimeFormatElement();\n        }\n        return s0;\n    }\n    function peg$parsepluralElement() {\n        var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c22;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c23);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parseargNameOrNumber();\n                if (s3 !== peg$FAILED) {\n                    s4 = peg$parse_();\n                    if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 44) {\n                            s5 = peg$c43;\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c44);\n                            }\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parse_();\n                            if (s6 !== peg$FAILED) {\n                                if (input.substr(peg$currPos, 6) === peg$c62) {\n                                    s7 = peg$c62;\n                                    peg$currPos += 6;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c63);\n                                    }\n                                }\n                                if (s7 === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 13) === peg$c64) {\n                                        s7 = peg$c64;\n                                        peg$currPos += 13;\n                                    }\n                                    else {\n                                        s7 = peg$FAILED;\n                                        if (peg$silentFails === 0) {\n                                            peg$fail(peg$c65);\n                                        }\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    s8 = peg$parse_();\n                                    if (s8 !== peg$FAILED) {\n                                        if (input.charCodeAt(peg$currPos) === 44) {\n                                            s9 = peg$c43;\n                                            peg$currPos++;\n                                        }\n                                        else {\n                                            s9 = peg$FAILED;\n                                            if (peg$silentFails === 0) {\n                                                peg$fail(peg$c44);\n                                            }\n                                        }\n                                        if (s9 !== peg$FAILED) {\n                                            s10 = peg$parse_();\n                                            if (s10 !== peg$FAILED) {\n                                                s11 = peg$currPos;\n                                                if (input.substr(peg$currPos, 7) === peg$c66) {\n                                                    s12 = peg$c66;\n                                                    peg$currPos += 7;\n                                                }\n                                                else {\n                                                    s12 = peg$FAILED;\n                                                    if (peg$silentFails === 0) {\n                                                        peg$fail(peg$c67);\n                                                    }\n                                                }\n                                                if (s12 !== peg$FAILED) {\n                                                    s13 = peg$parse_();\n                                                    if (s13 !== peg$FAILED) {\n                                                        s14 = peg$parsenumber();\n                                                        if (s14 !== peg$FAILED) {\n                                                            s12 = [s12, s13, s14];\n                                                            s11 = s12;\n                                                        }\n                                                        else {\n                                                            peg$currPos = s11;\n                                                            s11 = peg$FAILED;\n                                                        }\n                                                    }\n                                                    else {\n                                                        peg$currPos = s11;\n                                                        s11 = peg$FAILED;\n                                                    }\n                                                }\n                                                else {\n                                                    peg$currPos = s11;\n                                                    s11 = peg$FAILED;\n                                                }\n                                                if (s11 === peg$FAILED) {\n                                                    s11 = null;\n                                                }\n                                                if (s11 !== peg$FAILED) {\n                                                    s12 = peg$parse_();\n                                                    if (s12 !== peg$FAILED) {\n                                                        s13 = [];\n                                                        s14 = peg$parsepluralOption();\n                                                        if (s14 !== peg$FAILED) {\n                                                            while (s14 !== peg$FAILED) {\n                                                                s13.push(s14);\n                                                                s14 = peg$parsepluralOption();\n                                                            }\n                                                        }\n                                                        else {\n                                                            s13 = peg$FAILED;\n                                                        }\n                                                        if (s13 !== peg$FAILED) {\n                                                            s14 = peg$parse_();\n                                                            if (s14 !== peg$FAILED) {\n                                                                if (input.charCodeAt(peg$currPos) === 125) {\n                                                                    s15 = peg$c24;\n                                                                    peg$currPos++;\n                                                                }\n                                                                else {\n                                                                    s15 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) {\n                                                                        peg$fail(peg$c25);\n                                                                    }\n                                                                }\n                                                                if (s15 !== peg$FAILED) {\n                                                                    peg$savedPos = s0;\n                                                                    s1 = peg$c68(s3, s7, s11, s13);\n                                                                    s0 = s1;\n                                                                }\n                                                                else {\n                                                                    peg$currPos = s0;\n                                                                    s0 = peg$FAILED;\n                                                                }\n                                                            }\n                                                            else {\n                                                                peg$currPos = s0;\n                                                                s0 = peg$FAILED;\n                                                            }\n                                                        }\n                                                        else {\n                                                            peg$currPos = s0;\n                                                            s0 = peg$FAILED;\n                                                        }\n                                                    }\n                                                    else {\n                                                        peg$currPos = s0;\n                                                        s0 = peg$FAILED;\n                                                    }\n                                                }\n                                                else {\n                                                    peg$currPos = s0;\n                                                    s0 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s0;\n                                                s0 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s0;\n                                            s0 = peg$FAILED;\n                                        }\n                                    }\n                                    else {\n                                        peg$currPos = s0;\n                                        s0 = peg$FAILED;\n                                    }\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parseselectElement() {\n        var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 123) {\n            s1 = peg$c22;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c23);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parse_();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parseargNameOrNumber();\n                if (s3 !== peg$FAILED) {\n                    s4 = peg$parse_();\n                    if (s4 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 44) {\n                            s5 = peg$c43;\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c44);\n                            }\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parse_();\n                            if (s6 !== peg$FAILED) {\n                                if (input.substr(peg$currPos, 6) === peg$c69) {\n                                    s7 = peg$c69;\n                                    peg$currPos += 6;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c70);\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    s8 = peg$parse_();\n                                    if (s8 !== peg$FAILED) {\n                                        if (input.charCodeAt(peg$currPos) === 44) {\n                                            s9 = peg$c43;\n                                            peg$currPos++;\n                                        }\n                                        else {\n                                            s9 = peg$FAILED;\n                                            if (peg$silentFails === 0) {\n                                                peg$fail(peg$c44);\n                                            }\n                                        }\n                                        if (s9 !== peg$FAILED) {\n                                            s10 = peg$parse_();\n                                            if (s10 !== peg$FAILED) {\n                                                s11 = [];\n                                                s12 = peg$parseselectOption();\n                                                if (s12 !== peg$FAILED) {\n                                                    while (s12 !== peg$FAILED) {\n                                                        s11.push(s12);\n                                                        s12 = peg$parseselectOption();\n                                                    }\n                                                }\n                                                else {\n                                                    s11 = peg$FAILED;\n                                                }\n                                                if (s11 !== peg$FAILED) {\n                                                    s12 = peg$parse_();\n                                                    if (s12 !== peg$FAILED) {\n                                                        if (input.charCodeAt(peg$currPos) === 125) {\n                                                            s13 = peg$c24;\n                                                            peg$currPos++;\n                                                        }\n                                                        else {\n                                                            s13 = peg$FAILED;\n                                                            if (peg$silentFails === 0) {\n                                                                peg$fail(peg$c25);\n                                                            }\n                                                        }\n                                                        if (s13 !== peg$FAILED) {\n                                                            peg$savedPos = s0;\n                                                            s1 = peg$c71(s3, s11);\n                                                            s0 = s1;\n                                                        }\n                                                        else {\n                                                            peg$currPos = s0;\n                                                            s0 = peg$FAILED;\n                                                        }\n                                                    }\n                                                    else {\n                                                        peg$currPos = s0;\n                                                        s0 = peg$FAILED;\n                                                    }\n                                                }\n                                                else {\n                                                    peg$currPos = s0;\n                                                    s0 = peg$FAILED;\n                                                }\n                                            }\n                                            else {\n                                                peg$currPos = s0;\n                                                s0 = peg$FAILED;\n                                            }\n                                        }\n                                        else {\n                                            peg$currPos = s0;\n                                            s0 = peg$FAILED;\n                                        }\n                                    }\n                                    else {\n                                        peg$currPos = s0;\n                                        s0 = peg$FAILED;\n                                    }\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsepluralRuleSelectValue() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 61) {\n            s2 = peg$c72;\n            peg$currPos++;\n        }\n        else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c73);\n            }\n        }\n        if (s2 !== peg$FAILED) {\n            s3 = peg$parsenumber();\n            if (s3 !== peg$FAILED) {\n                s2 = [s2, s3];\n                s1 = s2;\n            }\n            else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        if (s0 === peg$FAILED) {\n            s0 = peg$parseargName();\n        }\n        return s0;\n    }\n    function peg$parseselectOption() {\n        var s0, s1, s2, s3, s4, s5, s6, s7;\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parseargName();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parse_();\n                if (s3 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 123) {\n                        s4 = peg$c22;\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c23);\n                        }\n                    }\n                    if (s4 !== peg$FAILED) {\n                        peg$savedPos = peg$currPos;\n                        s5 = peg$c74(s2);\n                        if (s5) {\n                            s5 = undefined;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parsemessage();\n                            if (s6 !== peg$FAILED) {\n                                if (input.charCodeAt(peg$currPos) === 125) {\n                                    s7 = peg$c24;\n                                    peg$currPos++;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c25);\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    peg$savedPos = s0;\n                                    s1 = peg$c75(s2, s6);\n                                    s0 = s1;\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsepluralOption() {\n        var s0, s1, s2, s3, s4, s5, s6, s7;\n        s0 = peg$currPos;\n        s1 = peg$parse_();\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parsepluralRuleSelectValue();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$parse_();\n                if (s3 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 123) {\n                        s4 = peg$c22;\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c23);\n                        }\n                    }\n                    if (s4 !== peg$FAILED) {\n                        peg$savedPos = peg$currPos;\n                        s5 = peg$c76(s2);\n                        if (s5) {\n                            s5 = undefined;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                        }\n                        if (s5 !== peg$FAILED) {\n                            s6 = peg$parsemessage();\n                            if (s6 !== peg$FAILED) {\n                                if (input.charCodeAt(peg$currPos) === 125) {\n                                    s7 = peg$c24;\n                                    peg$currPos++;\n                                }\n                                else {\n                                    s7 = peg$FAILED;\n                                    if (peg$silentFails === 0) {\n                                        peg$fail(peg$c25);\n                                    }\n                                }\n                                if (s7 !== peg$FAILED) {\n                                    peg$savedPos = s0;\n                                    s1 = peg$c77(s2, s6);\n                                    s0 = s1;\n                                }\n                                else {\n                                    peg$currPos = s0;\n                                    s0 = peg$FAILED;\n                                }\n                            }\n                            else {\n                                peg$currPos = s0;\n                                s0 = peg$FAILED;\n                            }\n                        }\n                        else {\n                            peg$currPos = s0;\n                            s0 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parsewhiteSpace() {\n        var s0, s1;\n        peg$silentFails++;\n        if (peg$c79.test(input.charAt(peg$currPos))) {\n            s0 = input.charAt(peg$currPos);\n            peg$currPos++;\n        }\n        else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c80);\n            }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c78);\n            }\n        }\n        return s0;\n    }\n    function peg$parsepatternSyntax() {\n        var s0, s1;\n        peg$silentFails++;\n        if (peg$c82.test(input.charAt(peg$currPos))) {\n            s0 = input.charAt(peg$currPos);\n            peg$currPos++;\n        }\n        else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c83);\n            }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c81);\n            }\n        }\n        return s0;\n    }\n    function peg$parse_() {\n        var s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$parsewhiteSpace();\n        while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            s2 = peg$parsewhiteSpace();\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c84);\n            }\n        }\n        return s0;\n    }\n    function peg$parsenumber() {\n        var s0, s1, s2;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 45) {\n            s1 = peg$c86;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c87);\n            }\n        }\n        if (s1 === peg$FAILED) {\n            s1 = null;\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parseargNumber();\n            if (s2 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c88(s1, s2);\n                s0 = s1;\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c85);\n            }\n        }\n        return s0;\n    }\n    function peg$parseapostrophe() {\n        var s0, s1;\n        peg$silentFails++;\n        if (input.charCodeAt(peg$currPos) === 39) {\n            s0 = peg$c48;\n            peg$currPos++;\n        }\n        else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c49);\n            }\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c89);\n            }\n        }\n        return s0;\n    }\n    function peg$parsedoubleApostrophes() {\n        var s0, s1;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c91) {\n            s1 = peg$c91;\n            peg$currPos += 2;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c92);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c93();\n        }\n        s0 = s1;\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c90);\n            }\n        }\n        return s0;\n    }\n    function peg$parsequotedString() {\n        var s0, s1, s2, s3, s4, s5;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 39) {\n            s1 = peg$c48;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c49);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s2 = peg$parseescapedChar();\n            if (s2 !== peg$FAILED) {\n                s3 = peg$currPos;\n                s4 = [];\n                if (input.substr(peg$currPos, 2) === peg$c91) {\n                    s5 = peg$c91;\n                    peg$currPos += 2;\n                }\n                else {\n                    s5 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c92);\n                    }\n                }\n                if (s5 === peg$FAILED) {\n                    if (peg$c50.test(input.charAt(peg$currPos))) {\n                        s5 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                    }\n                    else {\n                        s5 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c51);\n                        }\n                    }\n                }\n                while (s5 !== peg$FAILED) {\n                    s4.push(s5);\n                    if (input.substr(peg$currPos, 2) === peg$c91) {\n                        s5 = peg$c91;\n                        peg$currPos += 2;\n                    }\n                    else {\n                        s5 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c92);\n                        }\n                    }\n                    if (s5 === peg$FAILED) {\n                        if (peg$c50.test(input.charAt(peg$currPos))) {\n                            s5 = input.charAt(peg$currPos);\n                            peg$currPos++;\n                        }\n                        else {\n                            s5 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c51);\n                            }\n                        }\n                    }\n                }\n                if (s4 !== peg$FAILED) {\n                    s3 = input.substring(s3, peg$currPos);\n                }\n                else {\n                    s3 = s4;\n                }\n                if (s3 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 39) {\n                        s4 = peg$c48;\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c49);\n                        }\n                    }\n                    if (s4 === peg$FAILED) {\n                        s4 = null;\n                    }\n                    if (s4 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s1 = peg$c94(s2, s3);\n                        s0 = s1;\n                    }\n                    else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n        }\n        return s0;\n    }\n    function peg$parseunquotedString() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n        }\n        else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c30);\n            }\n        }\n        if (s2 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s3 = peg$c95(s2);\n            if (s3) {\n                s3 = undefined;\n            }\n            else {\n                s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n                s2 = [s2, s3];\n                s1 = s2;\n            }\n            else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n        }\n        if (s1 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 10) {\n                s1 = peg$c96;\n                peg$currPos++;\n            }\n            else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c97);\n                }\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        return s0;\n    }\n    function peg$parseescapedChar() {\n        var s0, s1, s2, s3;\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        if (input.length > peg$currPos) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n        }\n        else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c30);\n            }\n        }\n        if (s2 !== peg$FAILED) {\n            peg$savedPos = peg$currPos;\n            s3 = peg$c98(s2);\n            if (s3) {\n                s3 = undefined;\n            }\n            else {\n                s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n                s2 = [s2, s3];\n                s1 = s2;\n            }\n            else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        return s0;\n    }\n    function peg$parseargNameOrNumber() {\n        var s0, s1;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseargNumber();\n        if (s1 === peg$FAILED) {\n            s1 = peg$parseargName();\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c99);\n            }\n        }\n        return s0;\n    }\n    function peg$parsevalidTag() {\n        var s0, s1;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = peg$parseargNumber();\n        if (s1 === peg$FAILED) {\n            s1 = peg$parsetagName();\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c100);\n            }\n        }\n        return s0;\n    }\n    function peg$parseargNumber() {\n        var s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 48) {\n            s1 = peg$c102;\n            peg$currPos++;\n        }\n        else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c103);\n            }\n        }\n        if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c104();\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$currPos;\n            if (peg$c105.test(input.charAt(peg$currPos))) {\n                s2 = input.charAt(peg$currPos);\n                peg$currPos++;\n            }\n            else {\n                s2 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c106);\n                }\n            }\n            if (s2 !== peg$FAILED) {\n                s3 = [];\n                if (peg$c107.test(input.charAt(peg$currPos))) {\n                    s4 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                }\n                else {\n                    s4 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c108);\n                    }\n                }\n                while (s4 !== peg$FAILED) {\n                    s3.push(s4);\n                    if (peg$c107.test(input.charAt(peg$currPos))) {\n                        s4 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c108);\n                        }\n                    }\n                }\n                if (s3 !== peg$FAILED) {\n                    s2 = [s2, s3];\n                    s1 = s2;\n                }\n                else {\n                    peg$currPos = s1;\n                    s1 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s1;\n                s1 = peg$FAILED;\n            }\n            if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c109(s1);\n            }\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c101);\n            }\n        }\n        return s0;\n    }\n    function peg$parseargName() {\n        var s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        peg$silentFails++;\n        s4 = peg$parsewhiteSpace();\n        if (s4 === peg$FAILED) {\n            s4 = peg$parsepatternSyntax();\n        }\n        peg$silentFails--;\n        if (s4 === peg$FAILED) {\n            s3 = undefined;\n        }\n        else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n                s4 = input.charAt(peg$currPos);\n                peg$currPos++;\n            }\n            else {\n                s4 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                    peg$fail(peg$c30);\n                }\n            }\n            if (s4 !== peg$FAILED) {\n                s3 = [s3, s4];\n                s2 = s3;\n            }\n            else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n            }\n        }\n        else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                s2 = peg$currPos;\n                s3 = peg$currPos;\n                peg$silentFails++;\n                s4 = peg$parsewhiteSpace();\n                if (s4 === peg$FAILED) {\n                    s4 = peg$parsepatternSyntax();\n                }\n                peg$silentFails--;\n                if (s4 === peg$FAILED) {\n                    s3 = undefined;\n                }\n                else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                }\n                if (s3 !== peg$FAILED) {\n                    if (input.length > peg$currPos) {\n                        s4 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                    }\n                    else {\n                        s4 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                            peg$fail(peg$c30);\n                        }\n                    }\n                    if (s4 !== peg$FAILED) {\n                        s3 = [s3, s4];\n                        s2 = s3;\n                    }\n                    else {\n                        peg$currPos = s2;\n                        s2 = peg$FAILED;\n                    }\n                }\n                else {\n                    peg$currPos = s2;\n                    s2 = peg$FAILED;\n                }\n            }\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c110);\n            }\n        }\n        return s0;\n    }\n    function peg$parsetagName() {\n        var s0, s1, s2, s3, s4;\n        peg$silentFails++;\n        s0 = peg$currPos;\n        s1 = [];\n        if (input.charCodeAt(peg$currPos) === 45) {\n            s2 = peg$c86;\n            peg$currPos++;\n        }\n        else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c87);\n            }\n        }\n        if (s2 === peg$FAILED) {\n            s2 = peg$currPos;\n            s3 = peg$currPos;\n            peg$silentFails++;\n            s4 = peg$parsewhiteSpace();\n            if (s4 === peg$FAILED) {\n                s4 = peg$parsepatternSyntax();\n            }\n            peg$silentFails--;\n            if (s4 === peg$FAILED) {\n                s3 = undefined;\n            }\n            else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n            }\n            if (s3 !== peg$FAILED) {\n                if (input.length > peg$currPos) {\n                    s4 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                }\n                else {\n                    s4 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c30);\n                    }\n                }\n                if (s4 !== peg$FAILED) {\n                    s3 = [s3, s4];\n                    s2 = s3;\n                }\n                else {\n                    peg$currPos = s2;\n                    s2 = peg$FAILED;\n                }\n            }\n            else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n            }\n        }\n        if (s2 !== peg$FAILED) {\n            while (s2 !== peg$FAILED) {\n                s1.push(s2);\n                if (input.charCodeAt(peg$currPos) === 45) {\n                    s2 = peg$c86;\n                    peg$currPos++;\n                }\n                else {\n                    s2 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                        peg$fail(peg$c87);\n                    }\n                }\n                if (s2 === peg$FAILED) {\n                    s2 = peg$currPos;\n                    s3 = peg$currPos;\n                    peg$silentFails++;\n                    s4 = peg$parsewhiteSpace();\n                    if (s4 === peg$FAILED) {\n                        s4 = peg$parsepatternSyntax();\n                    }\n                    peg$silentFails--;\n                    if (s4 === peg$FAILED) {\n                        s3 = undefined;\n                    }\n                    else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                    }\n                    if (s3 !== peg$FAILED) {\n                        if (input.length > peg$currPos) {\n                            s4 = input.charAt(peg$currPos);\n                            peg$currPos++;\n                        }\n                        else {\n                            s4 = peg$FAILED;\n                            if (peg$silentFails === 0) {\n                                peg$fail(peg$c30);\n                            }\n                        }\n                        if (s4 !== peg$FAILED) {\n                            s3 = [s3, s4];\n                            s2 = s3;\n                        }\n                        else {\n                            peg$currPos = s2;\n                            s2 = peg$FAILED;\n                        }\n                    }\n                    else {\n                        peg$currPos = s2;\n                        s2 = peg$FAILED;\n                    }\n                }\n            }\n        }\n        else {\n            s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n            s0 = input.substring(s0, peg$currPos);\n        }\n        else {\n            s0 = s1;\n        }\n        peg$silentFails--;\n        if (s0 === peg$FAILED) {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) {\n                peg$fail(peg$c111);\n            }\n        }\n        return s0;\n    }\n    var messageCtx = ['root'];\n    function isNestedMessageText() {\n        return messageCtx.length > 1;\n    }\n    function isInPluralOption() {\n        return messageCtx[messageCtx.length - 1] === 'plural';\n    }\n    function insertLocation() {\n        return options && options.captureLocation ? {\n            location: location()\n        } : {};\n    }\n    var ignoreTag = options && options.ignoreTag;\n    var shouldParseSkeleton = options && options.shouldParseSkeleton;\n    peg$result = peg$startRuleFunction();\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n        return peg$result;\n    }\n    else {\n        if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n            peg$fail(peg$endExpectation());\n        }\n        throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length\n            ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n            : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n    }\n}\nexport var pegParse = peg$parse;\n","import { __spreadArray } from \"tslib\";\nimport { isPluralElement, isLiteralElement, isSelectElement, } from './types';\nimport { pegParse } from './parser';\nvar PLURAL_HASHTAG_REGEX = /(^|[^\\\\])#/g;\n/**\n * Whether to convert `#` in plural rule options\n * to `{var, number}`\n * @param el AST Element\n * @param pluralStack current plural stack\n */\nexport function normalizeHashtagInPlural(els) {\n    els.forEach(function (el) {\n        // If we're encountering a plural el\n        if (!isPluralElement(el) && !isSelectElement(el)) {\n            return;\n        }\n        // Go down the options and search for # in any literal element\n        Object.keys(el.options).forEach(function (id) {\n            var _a;\n            var opt = el.options[id];\n            // If we got a match, we have to split this\n            // and inject a NumberElement in the middle\n            var matchingLiteralElIndex = -1;\n            var literalEl = undefined;\n            for (var i = 0; i < opt.value.length; i++) {\n                var el_1 = opt.value[i];\n                if (isLiteralElement(el_1) && PLURAL_HASHTAG_REGEX.test(el_1.value)) {\n                    matchingLiteralElIndex = i;\n                    literalEl = el_1;\n                    break;\n                }\n            }\n            if (literalEl) {\n                var newValue = literalEl.value.replace(PLURAL_HASHTAG_REGEX, \"$1{\" + el.value + \", number}\");\n                var newEls = pegParse(newValue);\n                (_a = opt.value).splice.apply(_a, __spreadArray([matchingLiteralElIndex, 1], newEls));\n            }\n            normalizeHashtagInPlural(opt.value);\n        });\n    });\n}\n","import { __assign } from \"tslib\";\nimport { pegParse } from './src/parser';\nimport { normalizeHashtagInPlural } from './src/normalize';\nexport * from './src/types';\nexport * from './src/parser';\nexport function parse(input, opts) {\n    opts = __assign({ normalizeHashtagInPlural: true, shouldParseSkeleton: true }, (opts || {}));\n    var els = pegParse(input, opts);\n    if (opts.normalizeHashtagInPlural) {\n        normalizeHashtagInPlural(els);\n    }\n    return els;\n}\n","export var ErrorKind;\n(function (ErrorKind) {\n    /** Argument is unclosed (e.g. `{0`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n    /** Argument is empty (e.g. `{}`). */\n    ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n    /** Argument is malformed (e.g. `{foo!}``) */\n    ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n    /** Expect an argument type (e.g. `{foo,}`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n    /** Unsupported argument type (e.g. `{foo,foo}`) */\n    ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n    /** Expect an argument style (e.g. `{foo, number, }`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n    /** The number skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n    /** The date time skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n    /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n    /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n    /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n    /** Missing select argument options (e.g. `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n    /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n    /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n    /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n    /**\n     * Expecting a message fragment after the `plural` or `selectordinal` selector\n     * (e.g. `{foo, plural, one}`)\n     */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n    /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n    /**\n     * Duplicate selectors in `plural` or `selectordinal` argument.\n     * (e.g. {foo, plural, one {#} one {#}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n    /** Duplicate selectors in `select` argument.\n     * (e.g. {foo, select, apple {apple} apple {apple}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n    /** Plural or select argument option must have `other` clause. */\n    ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n    /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n    ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n    /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n    ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n    /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n    ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n    /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n    /**\n     * Raw text\n     */\n    TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n    /**\n     * Variable w/o any format, e.g `var` in `this is a {var}`\n     */\n    TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n    /**\n     * Variable w/ number format\n     */\n    TYPE[TYPE[\"number\"] = 2] = \"number\";\n    /**\n     * Variable w/ date format\n     */\n    TYPE[TYPE[\"date\"] = 3] = \"date\";\n    /**\n     * Variable w/ time format\n     */\n    TYPE[TYPE[\"time\"] = 4] = \"time\";\n    /**\n     * Variable w/ select format\n     */\n    TYPE[TYPE[\"select\"] = 5] = \"select\";\n    /**\n     * Variable w/ plural format\n     */\n    TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n    /**\n     * Only possible within plural argument.\n     * This is the `#` symbol that will be substituted with the count.\n     */\n    TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n    /**\n     * XML-like tag\n     */\n    TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n    SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n    SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n    return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n    return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n    return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n    return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n    return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n    return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n    return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n    return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n    return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n    return {\n        type: TYPE.literal,\n        value: value,\n    };\n}\nexport function createNumberElement(value, style) {\n    return {\n        type: TYPE.number,\n        value: value,\n        style: style,\n    };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n    var result = {};\n    skeleton.replace(DATE_TIME_REGEX, function (match) {\n        var len = match.length;\n        switch (match[0]) {\n            // Era\n            case 'G':\n                result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n                break;\n            // Year\n            case 'y':\n                result.year = len === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'Y':\n            case 'u':\n            case 'U':\n            case 'r':\n                throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n            // Quarter\n            case 'q':\n            case 'Q':\n                throw new RangeError('`q/Q` (quarter) patterns are not supported');\n            // Month\n            case 'M':\n            case 'L':\n                result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n                break;\n            // Week\n            case 'w':\n            case 'W':\n                throw new RangeError('`w/W` (week) patterns are not supported');\n            case 'd':\n                result.day = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'D':\n            case 'F':\n            case 'g':\n                throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n            // Weekday\n            case 'E':\n                result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n                break;\n            case 'e':\n                if (len < 4) {\n                    throw new RangeError('`e..eee` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            case 'c':\n                if (len < 4) {\n                    throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            // Period\n            case 'a': // AM, PM\n                result.hour12 = true;\n                break;\n            case 'b': // am, pm, noon, midnight\n            case 'B': // flexible day periods\n                throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n            // Hour\n            case 'h':\n                result.hourCycle = 'h12';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'H':\n                result.hourCycle = 'h23';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'K':\n                result.hourCycle = 'h11';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'k':\n                result.hourCycle = 'h24';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'j':\n            case 'J':\n            case 'C':\n                throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n            // Minute\n            case 'm':\n                result.minute = ['numeric', '2-digit'][len - 1];\n                break;\n            // Second\n            case 's':\n                result.second = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'S':\n            case 'A':\n                throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n            // Zone\n            case 'z': // 1..3, 4: specific non-location format\n                result.timeZoneName = len < 4 ? 'short' : 'long';\n                break;\n            case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n            case 'O': // 1, 4: miliseconds in day short, long\n            case 'v': // 1, 4: generic non-location format\n            case 'V': // 1, 2, 3, 4: time zone ID or city\n            case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n            case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n                throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n        }\n        return '';\n    });\n    return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\" + SPACE_SEPARATOR_REGEX.source + \"*\");\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(SPACE_SEPARATOR_REGEX.source + \"*$\");\nfunction createLocation(start, end) {\n    return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n    ? Number.isSafeInteger\n    : function (n) {\n        return (typeof n === 'number' &&\n            isFinite(n) &&\n            Math.floor(n) === n &&\n            Math.abs(n) <= 0x1fffffffffffff);\n    };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n    var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    /**\n     * legacy Edge or Xbox One browser\n     * Unicode flag support: supported\n     * Pattern_Syntax support: not supported\n     * See https://github.com/formatjs/formatjs/issues/2822\n     */\n    REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n    REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n    ? // Native\n        function startsWith(s, search, position) {\n            return s.startsWith(search, position);\n        }\n    : // For IE11\n        function startsWith(s, search, position) {\n            return s.slice(position, position + search.length) === search;\n        };\nvar fromCodePoint = hasNativeFromCodePoint\n    ? String.fromCodePoint\n    : // IE11\n        function fromCodePoint() {\n            var codePoints = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                codePoints[_i] = arguments[_i];\n            }\n            var elements = '';\n            var length = codePoints.length;\n            var i = 0;\n            var code;\n            while (length > i) {\n                code = codePoints[i++];\n                if (code > 0x10ffff)\n                    throw RangeError(code + ' is not a valid code point');\n                elements +=\n                    code < 0x10000\n                        ? String.fromCharCode(code)\n                        : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n            }\n            return elements;\n        };\nvar fromEntries = \n// native\nhasNativeFromEntries\n    ? Object.fromEntries\n    : // Ponyfill\n        function fromEntries(entries) {\n            var obj = {};\n            for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n                var _a = entries_1[_i], k = _a[0], v = _a[1];\n                obj[k] = v;\n            }\n            return obj;\n        };\nvar codePointAt = hasNativeCodePointAt\n    ? // Native\n        function codePointAt(s, index) {\n            return s.codePointAt(index);\n        }\n    : // IE 11\n        function codePointAt(s, index) {\n            var size = s.length;\n            if (index < 0 || index >= size) {\n                return undefined;\n            }\n            var first = s.charCodeAt(index);\n            var second;\n            return first < 0xd800 ||\n                first > 0xdbff ||\n                index + 1 === size ||\n                (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n                second > 0xdfff\n                ? first\n                : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n        };\nvar trimStart = hasTrimStart\n    ? // Native\n        function trimStart(s) {\n            return s.trimStart();\n        }\n    : // Ponyfill\n        function trimStart(s) {\n            return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n        };\nvar trimEnd = hasTrimEnd\n    ? // Native\n        function trimEnd(s) {\n            return s.trimEnd();\n        }\n    : // Ponyfill\n        function trimEnd(s) {\n            return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n        };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n    return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n    // Native\n    var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var _a;\n        IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n        var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n        return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n    };\n}\nelse {\n    // IE11\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var match = [];\n        while (true) {\n            var c = codePointAt(s, index);\n            if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n                break;\n            }\n            match.push(c);\n            index += c >= 0x10000 ? 2 : 1;\n        }\n        return fromCodePoint.apply(void 0, match);\n    };\n}\nvar Parser = /** @class */ (function () {\n    function Parser(message, options) {\n        if (options === void 0) { options = {}; }\n        this.message = message;\n        this.position = { offset: 0, line: 1, column: 1 };\n        this.ignoreTag = !!options.ignoreTag;\n        this.requiresOtherClause = !!options.requiresOtherClause;\n        this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n    }\n    Parser.prototype.parse = function () {\n        if (this.offset() !== 0) {\n            throw Error('parser can only be used once');\n        }\n        return this.parseMessage(0, '', false);\n    };\n    Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n        var elements = [];\n        while (!this.isEOF()) {\n            var char = this.char();\n            if (char === 123 /* `{` */) {\n                var result = this.parseArgument(nestingLevel, expectingCloseTag);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else if (char === 125 /* `}` */ && nestingLevel > 0) {\n                break;\n            }\n            else if (char === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n                var position = this.clonePosition();\n                this.bump();\n                elements.push({\n                    type: TYPE.pound,\n                    location: createLocation(position, this.clonePosition()),\n                });\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                this.peek() === 47 // char code for '/'\n            ) {\n                if (expectingCloseTag) {\n                    break;\n                }\n                else {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n                }\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                _isAlpha(this.peek() || 0)) {\n                var result = this.parseTag(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else {\n                var result = this.parseLiteral(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n        }\n        return { val: elements, err: null };\n    };\n    /**\n     * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n     * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n     * are accepted:\n     *\n     * ```\n     * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n     * tagName ::= [a-z] (PENChar)*\n     * PENChar ::=\n     *     \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n     *     [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n     *     [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n     * ```\n     *\n     * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n     * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n     * since other tag-based engines like React allow it\n     */\n    Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n        var startPosition = this.clonePosition();\n        this.bump(); // `<`\n        var tagName = this.parseTagName();\n        this.bumpSpace();\n        if (this.bumpIf('/>')) {\n            // Self closing tag\n            return {\n                val: {\n                    type: TYPE.literal,\n                    value: \"<\" + tagName + \"/>\",\n                    location: createLocation(startPosition, this.clonePosition()),\n                },\n                err: null,\n            };\n        }\n        else if (this.bumpIf('>')) {\n            var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n            if (childrenResult.err) {\n                return childrenResult;\n            }\n            var children = childrenResult.val;\n            // Expecting a close tag\n            var endTagStartPosition = this.clonePosition();\n            if (this.bumpIf('</')) {\n                if (this.isEOF() || !_isAlpha(this.char())) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                var closingTagNameStartPosition = this.clonePosition();\n                var closingTagName = this.parseTagName();\n                if (tagName !== closingTagName) {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n                }\n                this.bumpSpace();\n                if (!this.bumpIf('>')) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                return {\n                    val: {\n                        type: TYPE.tag,\n                        value: tagName,\n                        children: children,\n                        location: createLocation(startPosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            else {\n                return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n            }\n        }\n        else {\n            return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n        }\n    };\n    /**\n     * This method assumes that the caller has peeked ahead for the first tag character.\n     */\n    Parser.prototype.parseTagName = function () {\n        var startOffset = this.offset();\n        this.bump(); // the first tag name character\n        while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n            this.bump();\n        }\n        return this.message.slice(startOffset, this.offset());\n    };\n    Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n        var start = this.clonePosition();\n        var value = '';\n        while (true) {\n            var parseQuoteResult = this.tryParseQuote(parentArgType);\n            if (parseQuoteResult) {\n                value += parseQuoteResult;\n                continue;\n            }\n            var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n            if (parseUnquotedResult) {\n                value += parseUnquotedResult;\n                continue;\n            }\n            var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n            if (parseLeftAngleResult) {\n                value += parseLeftAngleResult;\n                continue;\n            }\n            break;\n        }\n        var location = createLocation(start, this.clonePosition());\n        return {\n            val: { type: TYPE.literal, value: value, location: location },\n            err: null,\n        };\n    };\n    Parser.prototype.tryParseLeftAngleBracket = function () {\n        if (!this.isEOF() &&\n            this.char() === 60 /* `<` */ &&\n            (this.ignoreTag ||\n                // If at the opening tag or closing tag position, bail.\n                !_isAlphaOrSlash(this.peek() || 0))) {\n            this.bump(); // `<`\n            return '<';\n        }\n        return null;\n    };\n    /**\n     * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n     * a character that requires quoting (that is, \"only where needed\"), and works the same in\n     * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n     */\n    Parser.prototype.tryParseQuote = function (parentArgType) {\n        if (this.isEOF() || this.char() !== 39 /* `'` */) {\n            return null;\n        }\n        // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n        // Check if is valid escaped character\n        switch (this.peek()) {\n            case 39 /* `'` */:\n                // double quote, should return as a single quote.\n                this.bump();\n                this.bump();\n                return \"'\";\n            // '{', '<', '>', '}'\n            case 123:\n            case 60:\n            case 62:\n            case 125:\n                break;\n            case 35: // '#'\n                if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n                    break;\n                }\n                return null;\n            default:\n                return null;\n        }\n        this.bump(); // apostrophe\n        var codePoints = [this.char()]; // escaped char\n        this.bump();\n        // read chars until the optional closing apostrophe is found\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch === 39 /* `'` */) {\n                if (this.peek() === 39 /* `'` */) {\n                    codePoints.push(39);\n                    // Bump one more time because we need to skip 2 characters.\n                    this.bump();\n                }\n                else {\n                    // Optional closing apostrophe.\n                    this.bump();\n                    break;\n                }\n            }\n            else {\n                codePoints.push(ch);\n            }\n            this.bump();\n        }\n        return fromCodePoint.apply(void 0, codePoints);\n    };\n    Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n        if (this.isEOF()) {\n            return null;\n        }\n        var ch = this.char();\n        if (ch === 60 /* `<` */ ||\n            ch === 123 /* `{` */ ||\n            (ch === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n            (ch === 125 /* `}` */ && nestingLevel > 0)) {\n            return null;\n        }\n        else {\n            this.bump();\n            return fromCodePoint(ch);\n        }\n    };\n    Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n        var openingBracePosition = this.clonePosition();\n        this.bump(); // `{`\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        if (this.char() === 125 /* `}` */) {\n            this.bump();\n            return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        // argument name\n        var value = this.parseIdentifierIfPossible().value;\n        if (!value) {\n            return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        switch (this.char()) {\n            // Simple argument: `{name}`\n            case 125 /* `}` */: {\n                this.bump(); // `}`\n                return {\n                    val: {\n                        type: TYPE.argument,\n                        // value does not include the opening and closing braces.\n                        value: value,\n                        location: createLocation(openingBracePosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            // Argument with options: `{name, format, ...}`\n            case 44 /* `,` */: {\n                this.bump(); // `,`\n                this.bumpSpace();\n                if (this.isEOF()) {\n                    return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n                }\n                return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n            }\n            default:\n                return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n    };\n    /**\n     * Advance the parser until the end of the identifier, if it is currently on\n     * an identifier character. Return an empty string otherwise.\n     */\n    Parser.prototype.parseIdentifierIfPossible = function () {\n        var startingPosition = this.clonePosition();\n        var startOffset = this.offset();\n        var value = matchIdentifierAtIndex(this.message, startOffset);\n        var endOffset = startOffset + value.length;\n        this.bumpTo(endOffset);\n        var endPosition = this.clonePosition();\n        var location = createLocation(startingPosition, endPosition);\n        return { value: value, location: location };\n    };\n    Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n        var _a;\n        // Parse this range:\n        // {name, type, style}\n        //        ^---^\n        var typeStartPosition = this.clonePosition();\n        var argType = this.parseIdentifierIfPossible().value;\n        var typeEndPosition = this.clonePosition();\n        switch (argType) {\n            case '':\n                // Expecting a style string number, date, time, plural, selectordinal, or select.\n                return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n            case 'number':\n            case 'date':\n            case 'time': {\n                // Parse this range:\n                // {name, number, style}\n                //              ^-------^\n                this.bumpSpace();\n                var styleAndLocation = null;\n                if (this.bumpIf(',')) {\n                    this.bumpSpace();\n                    var styleStartPosition = this.clonePosition();\n                    var result = this.parseSimpleArgStyleIfPossible();\n                    if (result.err) {\n                        return result;\n                    }\n                    var style = trimEnd(result.val);\n                    if (style.length === 0) {\n                        return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n                    styleAndLocation = { style: style, styleLocation: styleLocation };\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_1 = createLocation(openingBracePosition, this.clonePosition());\n                // Extract style or skeleton\n                if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n                    // Skeleton starts with `::`.\n                    var skeleton = trimStart(styleAndLocation.style.slice(2));\n                    if (argType === 'number') {\n                        var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n                        if (result.err) {\n                            return result;\n                        }\n                        return {\n                            val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n                            err: null,\n                        };\n                    }\n                    else {\n                        if (skeleton.length === 0) {\n                            return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n                        }\n                        var style = {\n                            type: SKELETON_TYPE.dateTime,\n                            pattern: skeleton,\n                            location: styleAndLocation.styleLocation,\n                            parsedOptions: this.shouldParseSkeletons\n                                ? parseDateTimeSkeleton(skeleton)\n                                : {},\n                        };\n                        var type = argType === 'date' ? TYPE.date : TYPE.time;\n                        return {\n                            val: { type: type, value: value, location: location_1, style: style },\n                            err: null,\n                        };\n                    }\n                }\n                // Regular style or no style.\n                return {\n                    val: {\n                        type: argType === 'number'\n                            ? TYPE.number\n                            : argType === 'date'\n                                ? TYPE.date\n                                : TYPE.time,\n                        value: value,\n                        location: location_1,\n                        style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n                    },\n                    err: null,\n                };\n            }\n            case 'plural':\n            case 'selectordinal':\n            case 'select': {\n                // Parse this range:\n                // {name, plural, options}\n                //              ^---------^\n                var typeEndPosition_1 = this.clonePosition();\n                this.bumpSpace();\n                if (!this.bumpIf(',')) {\n                    return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n                }\n                this.bumpSpace();\n                // Parse offset:\n                // {name, plural, offset:1, options}\n                //                ^-----^\n                //\n                // or the first option:\n                //\n                // {name, plural, one {...} other {...}}\n                //                ^--^\n                var identifierAndLocation = this.parseIdentifierIfPossible();\n                var pluralOffset = 0;\n                if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n                    if (!this.bumpIf(':')) {\n                        return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    this.bumpSpace();\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n                    if (result.err) {\n                        return result;\n                    }\n                    // Parse another identifier for option parsing\n                    this.bumpSpace();\n                    identifierAndLocation = this.parseIdentifierIfPossible();\n                    pluralOffset = result.val;\n                }\n                var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n                if (optionsResult.err) {\n                    return optionsResult;\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_2 = createLocation(openingBracePosition, this.clonePosition());\n                if (argType === 'select') {\n                    return {\n                        val: {\n                            type: TYPE.select,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n                else {\n                    return {\n                        val: {\n                            type: TYPE.plural,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            offset: pluralOffset,\n                            pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n            }\n            default:\n                return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n        }\n    };\n    Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n        // Parse: {value, number, ::currency/GBP }\n        //\n        if (this.isEOF() || this.char() !== 125 /* `}` */) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bump(); // `}`\n        return { val: true, err: null };\n    };\n    /**\n     * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n     */\n    Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n        var nestedBraces = 0;\n        var startPosition = this.clonePosition();\n        while (!this.isEOF()) {\n            var ch = this.char();\n            switch (ch) {\n                case 39 /* `'` */: {\n                    // Treat apostrophe as quoting but include it in the style part.\n                    // Find the end of the quoted literal text.\n                    this.bump();\n                    var apostrophePosition = this.clonePosition();\n                    if (!this.bumpUntil(\"'\")) {\n                        return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n                    }\n                    this.bump();\n                    break;\n                }\n                case 123 /* `{` */: {\n                    nestedBraces += 1;\n                    this.bump();\n                    break;\n                }\n                case 125 /* `}` */: {\n                    if (nestedBraces > 0) {\n                        nestedBraces -= 1;\n                    }\n                    else {\n                        return {\n                            val: this.message.slice(startPosition.offset, this.offset()),\n                            err: null,\n                        };\n                    }\n                    break;\n                }\n                default:\n                    this.bump();\n                    break;\n            }\n        }\n        return {\n            val: this.message.slice(startPosition.offset, this.offset()),\n            err: null,\n        };\n    };\n    Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n        var tokens = [];\n        try {\n            tokens = parseNumberSkeletonFromString(skeleton);\n        }\n        catch (e) {\n            return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n        }\n        return {\n            val: {\n                type: SKELETON_TYPE.number,\n                tokens: tokens,\n                location: location,\n                parsedOptions: this.shouldParseSkeletons\n                    ? parseNumberSkeleton(tokens)\n                    : {},\n            },\n            err: null,\n        };\n    };\n    /**\n     * @param nesting_level The current nesting level of messages.\n     *     This can be positive when parsing message fragment in select or plural argument options.\n     * @param parent_arg_type The parent argument's type.\n     * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n     *     the argument. It is a by-product of a previous parsing attempt.\n     * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n     *     between a pair of opening and closing tags. The nested message will not parse beyond\n     *     the closing tag boundary.\n     */\n    Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n        var _a;\n        var hasOtherClause = false;\n        var options = [];\n        var parsedSelectors = new Set();\n        var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n        // Parse:\n        // one {one apple}\n        // ^--^\n        while (true) {\n            if (selector.length === 0) {\n                var startPosition = this.clonePosition();\n                if (parentArgType !== 'select' && this.bumpIf('=')) {\n                    // Try parse `={number}` selector\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n                    if (result.err) {\n                        return result;\n                    }\n                    selectorLocation = createLocation(startPosition, this.clonePosition());\n                    selector = this.message.slice(startPosition.offset, this.offset());\n                }\n                else {\n                    break;\n                }\n            }\n            // Duplicate selector clauses\n            if (parsedSelectors.has(selector)) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n                    : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n            }\n            if (selector === 'other') {\n                hasOtherClause = true;\n            }\n            // Parse:\n            // one {one apple}\n            //     ^----------^\n            this.bumpSpace();\n            var openingBracePosition = this.clonePosition();\n            if (!this.bumpIf('{')) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n                    : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n            }\n            var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n            if (fragmentResult.err) {\n                return fragmentResult;\n            }\n            var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n            if (argCloseResult.err) {\n                return argCloseResult;\n            }\n            options.push([\n                selector,\n                {\n                    value: fragmentResult.val,\n                    location: createLocation(openingBracePosition, this.clonePosition()),\n                },\n            ]);\n            // Keep track of the existing selectors\n            parsedSelectors.add(selector);\n            // Prep next selector clause.\n            this.bumpSpace();\n            (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n        }\n        if (options.length === 0) {\n            return this.error(parentArgType === 'select'\n                ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n                : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        if (this.requiresOtherClause && !hasOtherClause) {\n            return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        return { val: options, err: null };\n    };\n    Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n        var sign = 1;\n        var startingPosition = this.clonePosition();\n        if (this.bumpIf('+')) {\n        }\n        else if (this.bumpIf('-')) {\n            sign = -1;\n        }\n        var hasDigits = false;\n        var decimal = 0;\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n                hasDigits = true;\n                decimal = decimal * 10 + (ch - 48);\n                this.bump();\n            }\n            else {\n                break;\n            }\n        }\n        var location = createLocation(startingPosition, this.clonePosition());\n        if (!hasDigits) {\n            return this.error(expectNumberError, location);\n        }\n        decimal *= sign;\n        if (!isSafeInteger(decimal)) {\n            return this.error(invalidNumberError, location);\n        }\n        return { val: decimal, err: null };\n    };\n    Parser.prototype.offset = function () {\n        return this.position.offset;\n    };\n    Parser.prototype.isEOF = function () {\n        return this.offset() === this.message.length;\n    };\n    Parser.prototype.clonePosition = function () {\n        // This is much faster than `Object.assign` or spread.\n        return {\n            offset: this.position.offset,\n            line: this.position.line,\n            column: this.position.column,\n        };\n    };\n    /**\n     * Return the code point at the current position of the parser.\n     * Throws if the index is out of bound.\n     */\n    Parser.prototype.char = function () {\n        var offset = this.position.offset;\n        if (offset >= this.message.length) {\n            throw Error('out of bound');\n        }\n        var code = codePointAt(this.message, offset);\n        if (code === undefined) {\n            throw Error(\"Offset \" + offset + \" is at invalid UTF-16 code unit boundary\");\n        }\n        return code;\n    };\n    Parser.prototype.error = function (kind, location) {\n        return {\n            val: null,\n            err: {\n                kind: kind,\n                message: this.message,\n                location: location,\n            },\n        };\n    };\n    /** Bump the parser to the next UTF-16 code unit. */\n    Parser.prototype.bump = function () {\n        if (this.isEOF()) {\n            return;\n        }\n        var code = this.char();\n        if (code === 10 /* '\\n' */) {\n            this.position.line += 1;\n            this.position.column = 1;\n            this.position.offset += 1;\n        }\n        else {\n            this.position.column += 1;\n            // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n            this.position.offset += code < 0x10000 ? 1 : 2;\n        }\n    };\n    /**\n     * If the substring starting at the current position of the parser has\n     * the given prefix, then bump the parser to the character immediately\n     * following the prefix and return true. Otherwise, don't bump the parser\n     * and return false.\n     */\n    Parser.prototype.bumpIf = function (prefix) {\n        if (startsWith(this.message, prefix, this.offset())) {\n            for (var i = 0; i < prefix.length; i++) {\n                this.bump();\n            }\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Bump the parser until the pattern character is found and return `true`.\n     * Otherwise bump to the end of the file and return `false`.\n     */\n    Parser.prototype.bumpUntil = function (pattern) {\n        var currentOffset = this.offset();\n        var index = this.message.indexOf(pattern, currentOffset);\n        if (index >= 0) {\n            this.bumpTo(index);\n            return true;\n        }\n        else {\n            this.bumpTo(this.message.length);\n            return false;\n        }\n    };\n    /**\n     * Bump the parser to the target offset.\n     * If target offset is beyond the end of the input, bump the parser to the end of the input.\n     */\n    Parser.prototype.bumpTo = function (targetOffset) {\n        if (this.offset() > targetOffset) {\n            throw Error(\"targetOffset \" + targetOffset + \" must be greater than or equal to the current offset \" + this.offset());\n        }\n        targetOffset = Math.min(targetOffset, this.message.length);\n        while (true) {\n            var offset = this.offset();\n            if (offset === targetOffset) {\n                break;\n            }\n            if (offset > targetOffset) {\n                throw Error(\"targetOffset \" + targetOffset + \" is at invalid UTF-16 code unit boundary\");\n            }\n            this.bump();\n            if (this.isEOF()) {\n                break;\n            }\n        }\n    };\n    /** advance the parser through all whitespace to the next non-whitespace code unit. */\n    Parser.prototype.bumpSpace = function () {\n        while (!this.isEOF() && _isWhiteSpace(this.char())) {\n            this.bump();\n        }\n    };\n    /**\n     * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n     * If the input has been exhausted, then this returns null.\n     */\n    Parser.prototype.peek = function () {\n        if (this.isEOF()) {\n            return null;\n        }\n        var code = this.char();\n        var offset = this.offset();\n        var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n        return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n    };\n    return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n    return ((codepoint >= 97 && codepoint <= 122) ||\n        (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n    return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n    return (c === 45 /* '-' */ ||\n        c === 46 /* '.' */ ||\n        (c >= 48 && c <= 57) /* 0..9 */ ||\n        c === 95 /* '_' */ ||\n        (c >= 97 && c <= 122) /** a..z */ ||\n        (c >= 65 && c <= 90) /* A..Z */ ||\n        c == 0xb7 ||\n        (c >= 0xc0 && c <= 0xd6) ||\n        (c >= 0xd8 && c <= 0xf6) ||\n        (c >= 0xf8 && c <= 0x37d) ||\n        (c >= 0x37f && c <= 0x1fff) ||\n        (c >= 0x200c && c <= 0x200d) ||\n        (c >= 0x203f && c <= 0x2040) ||\n        (c >= 0x2070 && c <= 0x218f) ||\n        (c >= 0x2c00 && c <= 0x2fef) ||\n        (c >= 0x3001 && c <= 0xd7ff) ||\n        (c >= 0xf900 && c <= 0xfdcf) ||\n        (c >= 0xfdf0 && c <= 0xfffd) ||\n        (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n    return ((c >= 0x0009 && c <= 0x000d) ||\n        c === 0x0020 ||\n        c === 0x0085 ||\n        (c >= 0x200e && c <= 0x200f) ||\n        c === 0x2028 ||\n        c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n    return ((c >= 0x0021 && c <= 0x0023) ||\n        c === 0x0024 ||\n        (c >= 0x0025 && c <= 0x0027) ||\n        c === 0x0028 ||\n        c === 0x0029 ||\n        c === 0x002a ||\n        c === 0x002b ||\n        c === 0x002c ||\n        c === 0x002d ||\n        (c >= 0x002e && c <= 0x002f) ||\n        (c >= 0x003a && c <= 0x003b) ||\n        (c >= 0x003c && c <= 0x003e) ||\n        (c >= 0x003f && c <= 0x0040) ||\n        c === 0x005b ||\n        c === 0x005c ||\n        c === 0x005d ||\n        c === 0x005e ||\n        c === 0x0060 ||\n        c === 0x007b ||\n        c === 0x007c ||\n        c === 0x007d ||\n        c === 0x007e ||\n        c === 0x00a1 ||\n        (c >= 0x00a2 && c <= 0x00a5) ||\n        c === 0x00a6 ||\n        c === 0x00a7 ||\n        c === 0x00a9 ||\n        c === 0x00ab ||\n        c === 0x00ac ||\n        c === 0x00ae ||\n        c === 0x00b0 ||\n        c === 0x00b1 ||\n        c === 0x00b6 ||\n        c === 0x00bb ||\n        c === 0x00bf ||\n        c === 0x00d7 ||\n        c === 0x00f7 ||\n        (c >= 0x2010 && c <= 0x2015) ||\n        (c >= 0x2016 && c <= 0x2017) ||\n        c === 0x2018 ||\n        c === 0x2019 ||\n        c === 0x201a ||\n        (c >= 0x201b && c <= 0x201c) ||\n        c === 0x201d ||\n        c === 0x201e ||\n        c === 0x201f ||\n        (c >= 0x2020 && c <= 0x2027) ||\n        (c >= 0x2030 && c <= 0x2038) ||\n        c === 0x2039 ||\n        c === 0x203a ||\n        (c >= 0x203b && c <= 0x203e) ||\n        (c >= 0x2041 && c <= 0x2043) ||\n        c === 0x2044 ||\n        c === 0x2045 ||\n        c === 0x2046 ||\n        (c >= 0x2047 && c <= 0x2051) ||\n        c === 0x2052 ||\n        c === 0x2053 ||\n        (c >= 0x2055 && c <= 0x205e) ||\n        (c >= 0x2190 && c <= 0x2194) ||\n        (c >= 0x2195 && c <= 0x2199) ||\n        (c >= 0x219a && c <= 0x219b) ||\n        (c >= 0x219c && c <= 0x219f) ||\n        c === 0x21a0 ||\n        (c >= 0x21a1 && c <= 0x21a2) ||\n        c === 0x21a3 ||\n        (c >= 0x21a4 && c <= 0x21a5) ||\n        c === 0x21a6 ||\n        (c >= 0x21a7 && c <= 0x21ad) ||\n        c === 0x21ae ||\n        (c >= 0x21af && c <= 0x21cd) ||\n        (c >= 0x21ce && c <= 0x21cf) ||\n        (c >= 0x21d0 && c <= 0x21d1) ||\n        c === 0x21d2 ||\n        c === 0x21d3 ||\n        c === 0x21d4 ||\n        (c >= 0x21d5 && c <= 0x21f3) ||\n        (c >= 0x21f4 && c <= 0x22ff) ||\n        (c >= 0x2300 && c <= 0x2307) ||\n        c === 0x2308 ||\n        c === 0x2309 ||\n        c === 0x230a ||\n        c === 0x230b ||\n        (c >= 0x230c && c <= 0x231f) ||\n        (c >= 0x2320 && c <= 0x2321) ||\n        (c >= 0x2322 && c <= 0x2328) ||\n        c === 0x2329 ||\n        c === 0x232a ||\n        (c >= 0x232b && c <= 0x237b) ||\n        c === 0x237c ||\n        (c >= 0x237d && c <= 0x239a) ||\n        (c >= 0x239b && c <= 0x23b3) ||\n        (c >= 0x23b4 && c <= 0x23db) ||\n        (c >= 0x23dc && c <= 0x23e1) ||\n        (c >= 0x23e2 && c <= 0x2426) ||\n        (c >= 0x2427 && c <= 0x243f) ||\n        (c >= 0x2440 && c <= 0x244a) ||\n        (c >= 0x244b && c <= 0x245f) ||\n        (c >= 0x2500 && c <= 0x25b6) ||\n        c === 0x25b7 ||\n        (c >= 0x25b8 && c <= 0x25c0) ||\n        c === 0x25c1 ||\n        (c >= 0x25c2 && c <= 0x25f7) ||\n        (c >= 0x25f8 && c <= 0x25ff) ||\n        (c >= 0x2600 && c <= 0x266e) ||\n        c === 0x266f ||\n        (c >= 0x2670 && c <= 0x2767) ||\n        c === 0x2768 ||\n        c === 0x2769 ||\n        c === 0x276a ||\n        c === 0x276b ||\n        c === 0x276c ||\n        c === 0x276d ||\n        c === 0x276e ||\n        c === 0x276f ||\n        c === 0x2770 ||\n        c === 0x2771 ||\n        c === 0x2772 ||\n        c === 0x2773 ||\n        c === 0x2774 ||\n        c === 0x2775 ||\n        (c >= 0x2794 && c <= 0x27bf) ||\n        (c >= 0x27c0 && c <= 0x27c4) ||\n        c === 0x27c5 ||\n        c === 0x27c6 ||\n        (c >= 0x27c7 && c <= 0x27e5) ||\n        c === 0x27e6 ||\n        c === 0x27e7 ||\n        c === 0x27e8 ||\n        c === 0x27e9 ||\n        c === 0x27ea ||\n        c === 0x27eb ||\n        c === 0x27ec ||\n        c === 0x27ed ||\n        c === 0x27ee ||\n        c === 0x27ef ||\n        (c >= 0x27f0 && c <= 0x27ff) ||\n        (c >= 0x2800 && c <= 0x28ff) ||\n        (c >= 0x2900 && c <= 0x2982) ||\n        c === 0x2983 ||\n        c === 0x2984 ||\n        c === 0x2985 ||\n        c === 0x2986 ||\n        c === 0x2987 ||\n        c === 0x2988 ||\n        c === 0x2989 ||\n        c === 0x298a ||\n        c === 0x298b ||\n        c === 0x298c ||\n        c === 0x298d ||\n        c === 0x298e ||\n        c === 0x298f ||\n        c === 0x2990 ||\n        c === 0x2991 ||\n        c === 0x2992 ||\n        c === 0x2993 ||\n        c === 0x2994 ||\n        c === 0x2995 ||\n        c === 0x2996 ||\n        c === 0x2997 ||\n        c === 0x2998 ||\n        (c >= 0x2999 && c <= 0x29d7) ||\n        c === 0x29d8 ||\n        c === 0x29d9 ||\n        c === 0x29da ||\n        c === 0x29db ||\n        (c >= 0x29dc && c <= 0x29fb) ||\n        c === 0x29fc ||\n        c === 0x29fd ||\n        (c >= 0x29fe && c <= 0x2aff) ||\n        (c >= 0x2b00 && c <= 0x2b2f) ||\n        (c >= 0x2b30 && c <= 0x2b44) ||\n        (c >= 0x2b45 && c <= 0x2b46) ||\n        (c >= 0x2b47 && c <= 0x2b4c) ||\n        (c >= 0x2b4d && c <= 0x2b73) ||\n        (c >= 0x2b74 && c <= 0x2b75) ||\n        (c >= 0x2b76 && c <= 0x2b95) ||\n        c === 0x2b96 ||\n        (c >= 0x2b97 && c <= 0x2bff) ||\n        (c >= 0x2e00 && c <= 0x2e01) ||\n        c === 0x2e02 ||\n        c === 0x2e03 ||\n        c === 0x2e04 ||\n        c === 0x2e05 ||\n        (c >= 0x2e06 && c <= 0x2e08) ||\n        c === 0x2e09 ||\n        c === 0x2e0a ||\n        c === 0x2e0b ||\n        c === 0x2e0c ||\n        c === 0x2e0d ||\n        (c >= 0x2e0e && c <= 0x2e16) ||\n        c === 0x2e17 ||\n        (c >= 0x2e18 && c <= 0x2e19) ||\n        c === 0x2e1a ||\n        c === 0x2e1b ||\n        c === 0x2e1c ||\n        c === 0x2e1d ||\n        (c >= 0x2e1e && c <= 0x2e1f) ||\n        c === 0x2e20 ||\n        c === 0x2e21 ||\n        c === 0x2e22 ||\n        c === 0x2e23 ||\n        c === 0x2e24 ||\n        c === 0x2e25 ||\n        c === 0x2e26 ||\n        c === 0x2e27 ||\n        c === 0x2e28 ||\n        c === 0x2e29 ||\n        (c >= 0x2e2a && c <= 0x2e2e) ||\n        c === 0x2e2f ||\n        (c >= 0x2e30 && c <= 0x2e39) ||\n        (c >= 0x2e3a && c <= 0x2e3b) ||\n        (c >= 0x2e3c && c <= 0x2e3f) ||\n        c === 0x2e40 ||\n        c === 0x2e41 ||\n        c === 0x2e42 ||\n        (c >= 0x2e43 && c <= 0x2e4f) ||\n        (c >= 0x2e50 && c <= 0x2e51) ||\n        c === 0x2e52 ||\n        (c >= 0x2e53 && c <= 0x2e7f) ||\n        (c >= 0x3001 && c <= 0x3003) ||\n        c === 0x3008 ||\n        c === 0x3009 ||\n        c === 0x300a ||\n        c === 0x300b ||\n        c === 0x300c ||\n        c === 0x300d ||\n        c === 0x300e ||\n        c === 0x300f ||\n        c === 0x3010 ||\n        c === 0x3011 ||\n        (c >= 0x3012 && c <= 0x3013) ||\n        c === 0x3014 ||\n        c === 0x3015 ||\n        c === 0x3016 ||\n        c === 0x3017 ||\n        c === 0x3018 ||\n        c === 0x3019 ||\n        c === 0x301a ||\n        c === 0x301b ||\n        c === 0x301c ||\n        c === 0x301d ||\n        (c >= 0x301e && c <= 0x301f) ||\n        c === 0x3020 ||\n        c === 0x3030 ||\n        c === 0xfd3e ||\n        c === 0xfd3f ||\n        (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n    if (skeleton.length === 0) {\n        throw new Error('Number skeleton cannot be empty');\n    }\n    // Parse the skeleton\n    var stringTokens = skeleton\n        .split(WHITE_SPACE_REGEX)\n        .filter(function (x) { return x.length > 0; });\n    var tokens = [];\n    for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n        var stringToken = stringTokens_1[_i];\n        var stemAndOptions = stringToken.split('/');\n        if (stemAndOptions.length === 0) {\n            throw new Error('Invalid number skeleton');\n        }\n        var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n        for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n            var option = options_1[_a];\n            if (option.length === 0) {\n                throw new Error('Invalid number skeleton');\n            }\n        }\n        tokens.push({ stem: stem, options: options });\n    }\n    return tokens;\n}\nfunction icuUnitToEcma(unit) {\n    return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n    var result = {};\n    str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n        // @@@ case\n        if (typeof g2 !== 'string') {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits = g1.length;\n        }\n        // @@@+ case\n        else if (g2 === '+') {\n            result.minimumSignificantDigits = g1.length;\n        }\n        // .### case\n        else if (g1[0] === '#') {\n            result.maximumSignificantDigits = g1.length;\n        }\n        // .@@## or .@@@ case\n        else {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits =\n                g1.length + (typeof g2 === 'string' ? g2.length : 0);\n        }\n        return '';\n    });\n    return result;\n}\nfunction parseSign(str) {\n    switch (str) {\n        case 'sign-auto':\n            return {\n                signDisplay: 'auto',\n            };\n        case 'sign-accounting':\n        case '()':\n            return {\n                currencySign: 'accounting',\n            };\n        case 'sign-always':\n        case '+!':\n            return {\n                signDisplay: 'always',\n            };\n        case 'sign-accounting-always':\n        case '()!':\n            return {\n                signDisplay: 'always',\n                currencySign: 'accounting',\n            };\n        case 'sign-except-zero':\n        case '+?':\n            return {\n                signDisplay: 'exceptZero',\n            };\n        case 'sign-accounting-except-zero':\n        case '()?':\n            return {\n                signDisplay: 'exceptZero',\n                currencySign: 'accounting',\n            };\n        case 'sign-never':\n        case '+_':\n            return {\n                signDisplay: 'never',\n            };\n    }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n    // Engineering\n    var result;\n    if (stem[0] === 'E' && stem[1] === 'E') {\n        result = {\n            notation: 'engineering',\n        };\n        stem = stem.slice(2);\n    }\n    else if (stem[0] === 'E') {\n        result = {\n            notation: 'scientific',\n        };\n        stem = stem.slice(1);\n    }\n    if (result) {\n        var signDisplay = stem.slice(0, 2);\n        if (signDisplay === '+!') {\n            result.signDisplay = 'always';\n            stem = stem.slice(2);\n        }\n        else if (signDisplay === '+?') {\n            result.signDisplay = 'exceptZero';\n            stem = stem.slice(2);\n        }\n        if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n            throw new Error('Malformed concise eng/scientific notation');\n        }\n        result.minimumIntegerDigits = stem.length;\n    }\n    return result;\n}\nfunction parseNotationOptions(opt) {\n    var result = {};\n    var signOpts = parseSign(opt);\n    if (signOpts) {\n        return signOpts;\n    }\n    return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n    var result = {};\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        switch (token.stem) {\n            case 'percent':\n            case '%':\n                result.style = 'percent';\n                continue;\n            case '%x100':\n                result.style = 'percent';\n                result.scale = 100;\n                continue;\n            case 'currency':\n                result.style = 'currency';\n                result.currency = token.options[0];\n                continue;\n            case 'group-off':\n            case ',_':\n                result.useGrouping = false;\n                continue;\n            case 'precision-integer':\n            case '.':\n                result.maximumFractionDigits = 0;\n                continue;\n            case 'measure-unit':\n            case 'unit':\n                result.style = 'unit';\n                result.unit = icuUnitToEcma(token.options[0]);\n                continue;\n            case 'compact-short':\n            case 'K':\n                result.notation = 'compact';\n                result.compactDisplay = 'short';\n                continue;\n            case 'compact-long':\n            case 'KK':\n                result.notation = 'compact';\n                result.compactDisplay = 'long';\n                continue;\n            case 'scientific':\n                result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'engineering':\n                result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'notation-simple':\n                result.notation = 'standard';\n                continue;\n            // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n            case 'unit-width-narrow':\n                result.currencyDisplay = 'narrowSymbol';\n                result.unitDisplay = 'narrow';\n                continue;\n            case 'unit-width-short':\n                result.currencyDisplay = 'code';\n                result.unitDisplay = 'short';\n                continue;\n            case 'unit-width-full-name':\n                result.currencyDisplay = 'name';\n                result.unitDisplay = 'long';\n                continue;\n            case 'unit-width-iso-code':\n                result.currencyDisplay = 'symbol';\n                continue;\n            case 'scale':\n                result.scale = parseFloat(token.options[0]);\n                continue;\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n            case 'integer-width':\n                if (token.options.length > 1) {\n                    throw new RangeError('integer-width stems only accept a single optional option');\n                }\n                token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n                    if (g1) {\n                        result.minimumIntegerDigits = g2.length;\n                    }\n                    else if (g3 && g4) {\n                        throw new Error('We currently do not support maximum integer digits');\n                    }\n                    else if (g5) {\n                        throw new Error('We currently do not support exact integer digits');\n                    }\n                    return '';\n                });\n                continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n        if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n            result.minimumIntegerDigits = token.stem.length;\n            continue;\n        }\n        if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n            // Precision\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n            // precision-integer case\n            if (token.options.length > 1) {\n                throw new RangeError('Fraction-precision stems only accept a single optional option');\n            }\n            token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n                // .000* case (before ICU67 it was .000+)\n                if (g2 === '*') {\n                    result.minimumFractionDigits = g1.length;\n                }\n                // .### case\n                else if (g3 && g3[0] === '#') {\n                    result.maximumFractionDigits = g3.length;\n                }\n                // .00## case\n                else if (g4 && g5) {\n                    result.minimumFractionDigits = g4.length;\n                    result.maximumFractionDigits = g4.length + g5.length;\n                }\n                else {\n                    result.minimumFractionDigits = g1.length;\n                    result.maximumFractionDigits = g1.length;\n                }\n                return '';\n            });\n            if (token.options.length) {\n                result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n            }\n            continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n        if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n            result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n            continue;\n        }\n        var signOpts = parseSign(token.stem);\n        if (signOpts) {\n            result = __assign(__assign({}, result), signOpts);\n        }\n        var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n        if (conciseScientificAndEngineeringOpts) {\n            result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n        }\n    }\n    return result;\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n    els.forEach(function (el) {\n        delete el.location;\n        if (isSelectElement(el) || isPluralElement(el)) {\n            for (var k in el.options) {\n                delete el.options[k].location;\n                pruneLocation(el.options[k].value);\n            }\n        }\n        else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if ((isDateElement(el) || isTimeElement(el)) &&\n            isDateTimeSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if (isTagElement(el)) {\n            pruneLocation(el.children);\n        }\n    });\n}\nexport function parse(message, opts) {\n    if (opts === void 0) { opts = {}; }\n    opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n    var result = new Parser(message, opts).parse();\n    if (result.err) {\n        var error = SyntaxError(ErrorKind[result.err.kind]);\n        // @ts-expect-error Assign to error object\n        error.location = result.err.location;\n        // @ts-expect-error Assign to error object\n        error.originalMessage = result.err.message;\n        throw error;\n    }\n    if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n        pruneLocation(result.val);\n    }\n    return result.val;\n}\nexport * from './types';\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n    var cache = options && options.cache ? options.cache : cacheDefault;\n    var serializer = options && options.serializer ? options.serializer : serializerDefault;\n    var strategy = options && options.strategy ? options.strategy : strategyDefault;\n    return strategy(fn, {\n        cache: cache,\n        serializer: serializer,\n    });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n    return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n    var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.call(this, arg);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n    var args = Array.prototype.slice.call(arguments, 3);\n    var cacheKey = serializer(args);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.apply(this, args);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n    return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n    var strategy = fn.length === 1 ? monadic : variadic;\n    return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n    return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n    return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n    return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n    this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n    return key in this.cache;\n};\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n    return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n    this.cache[key] = value;\n};\nvar cacheDefault = {\n    create: function create() {\n        // @ts-ignore\n        return new ObjectWithoutPrototypeCache();\n    },\n};\nexport var strategies = {\n    variadic: strategyVariadic,\n    monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n    // When we have a placeholder but no value to format\n    ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n    // When value supplied is invalid\n    ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n    // When we need specific Intl API but it's not available\n    ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n    __extends(FormatError, _super);\n    function FormatError(msg, code, originalMessage) {\n        var _this = _super.call(this, msg) || this;\n        _this.code = code;\n        _this.originalMessage = originalMessage;\n        return _this;\n    }\n    FormatError.prototype.toString = function () {\n        return \"[formatjs Error: \" + this.code + \"] \" + this.message;\n    };\n    return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n    __extends(InvalidValueError, _super);\n    function InvalidValueError(variableId, value, options, originalMessage) {\n        return _super.call(this, \"Invalid values for \\\"\" + variableId + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(options).join('\", \"') + \"\\\"\", ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n    __extends(InvalidValueTypeError, _super);\n    function InvalidValueTypeError(value, type, originalMessage) {\n        return _super.call(this, \"Value for \\\"\" + value + \"\\\" must be of type \" + type, ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n    __extends(MissingValueError, _super);\n    function MissingValueError(variableId, originalMessage) {\n        return _super.call(this, \"The intl string context variable \\\"\" + variableId + \"\\\" was not provided to the string \\\"\" + originalMessage + \"\\\"\", ErrorCode.MISSING_VALUE, originalMessage) || this;\n    }\n    return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n    PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n    PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n    if (parts.length < 2) {\n        return parts;\n    }\n    return parts.reduce(function (all, part) {\n        var lastPart = all[all.length - 1];\n        if (!lastPart ||\n            lastPart.type !== PART_TYPE.literal ||\n            part.type !== PART_TYPE.literal) {\n            all.push(part);\n        }\n        else {\n            lastPart.value += part.value;\n        }\n        return all;\n    }, []);\n}\nexport function isFormatXMLElementFn(el) {\n    return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n    // Hot path for straight simple msg translations\n    if (els.length === 1 && isLiteralElement(els[0])) {\n        return [\n            {\n                type: PART_TYPE.literal,\n                value: els[0].value,\n            },\n        ];\n    }\n    var result = [];\n    for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n        var el = els_1[_i];\n        // Exit early for string parts.\n        if (isLiteralElement(el)) {\n            result.push({\n                type: PART_TYPE.literal,\n                value: el.value,\n            });\n            continue;\n        }\n        // TODO: should this part be literal type?\n        // Replace `#` in plural rules with the actual numeric value.\n        if (isPoundElement(el)) {\n            if (typeof currentPluralValue === 'number') {\n                result.push({\n                    type: PART_TYPE.literal,\n                    value: formatters.getNumberFormat(locales).format(currentPluralValue),\n                });\n            }\n            continue;\n        }\n        var varName = el.value;\n        // Enforce that all required values are provided by the caller.\n        if (!(values && varName in values)) {\n            throw new MissingValueError(varName, originalMessage);\n        }\n        var value = values[varName];\n        if (isArgumentElement(el)) {\n            if (!value || typeof value === 'string' || typeof value === 'number') {\n                value =\n                    typeof value === 'string' || typeof value === 'number'\n                        ? String(value)\n                        : '';\n            }\n            result.push({\n                type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                value: value,\n            });\n            continue;\n        }\n        // Recursively format plural and select parts' option — which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (isDateElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.date[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTimeElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.time[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isNumberElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.number[el.style]\n                : isNumberSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            if (style && style.scale) {\n                value =\n                    value *\n                        (style.scale || 1);\n            }\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getNumberFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTagElement(el)) {\n            var children = el.children, value_1 = el.value;\n            var formatFn = values[value_1];\n            if (!isFormatXMLElementFn(formatFn)) {\n                throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n            }\n            var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n            var chunks = formatFn(parts.map(function (p) { return p.value; }));\n            if (!Array.isArray(chunks)) {\n                chunks = [chunks];\n            }\n            result.push.apply(result, chunks.map(function (c) {\n                return {\n                    type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                    value: c,\n                };\n            }));\n        }\n        if (isSelectElement(el)) {\n            var opt = el.options[value] || el.options.other;\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n            continue;\n        }\n        if (isPluralElement(el)) {\n            var opt = el.options[\"=\" + value];\n            if (!opt) {\n                if (!Intl.PluralRules) {\n                    throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n                }\n                var rule = formatters\n                    .getPluralRules(locales, { type: el.pluralType })\n                    .select(value - (el.offset || 0));\n                opt = el.options[rule] || el.options.other;\n            }\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n            continue;\n        }\n    }\n    return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n    if (!c2) {\n        return c1;\n    }\n    return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n        all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n        return all;\n    }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n    if (!configs) {\n        return defaultConfig;\n    }\n    return Object.keys(defaultConfig).reduce(function (all, k) {\n        all[k] = mergeConfig(defaultConfig[k], configs[k]);\n        return all;\n    }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n    return {\n        create: function () {\n            return {\n                has: function (key) {\n                    return key in store;\n                },\n                get: function (key) {\n                    return store[key];\n                },\n                set: function (key, value) {\n                    store[key] = value;\n                },\n            };\n        },\n    };\n}\nfunction createDefaultFormatters(cache) {\n    if (cache === void 0) { cache = {\n        number: {},\n        dateTime: {},\n        pluralRules: {},\n    }; }\n    return {\n        getNumberFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n        }, {\n            cache: createFastMemoizeCache(cache.number),\n            strategy: strategies.variadic,\n        }),\n        getDateTimeFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n        }, {\n            cache: createFastMemoizeCache(cache.dateTime),\n            strategy: strategies.variadic,\n        }),\n        getPluralRules: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();\n        }, {\n            cache: createFastMemoizeCache(cache.pluralRules),\n            strategy: strategies.variadic,\n        }),\n    };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n    function IntlMessageFormat(message, locales, overrideFormats, opts) {\n        var _this = this;\n        if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n        this.formatterCache = {\n            number: {},\n            dateTime: {},\n            pluralRules: {},\n        };\n        this.format = function (values) {\n            var parts = _this.formatToParts(values);\n            // Hot path for straight simple msg translations\n            if (parts.length === 1) {\n                return parts[0].value;\n            }\n            var result = parts.reduce(function (all, part) {\n                if (!all.length ||\n                    part.type !== PART_TYPE.literal ||\n                    typeof all[all.length - 1] !== 'string') {\n                    all.push(part.value);\n                }\n                else {\n                    all[all.length - 1] += part.value;\n                }\n                return all;\n            }, []);\n            if (result.length <= 1) {\n                return result[0] || '';\n            }\n            return result;\n        };\n        this.formatToParts = function (values) {\n            return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n        };\n        this.resolvedOptions = function () { return ({\n            locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n        }); };\n        this.getAst = function () { return _this.ast; };\n        if (typeof message === 'string') {\n            this.message = message;\n            if (!IntlMessageFormat.__parse) {\n                throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n            }\n            // Parse string messages into an AST.\n            this.ast = IntlMessageFormat.__parse(message, {\n                ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n            });\n        }\n        else {\n            this.ast = message;\n        }\n        if (!Array.isArray(this.ast)) {\n            throw new TypeError('A message must be provided as a String or AST.');\n        }\n        // Creates a new object with the specified `formats` merged with the default\n        // formats.\n        this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n        // Defined first because it's used to build the format pattern.\n        this.locales = locales;\n        this.formatters =\n            (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n    }\n    Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n        get: function () {\n            if (!IntlMessageFormat.memoizedDefaultLocale) {\n                IntlMessageFormat.memoizedDefaultLocale =\n                    new Intl.NumberFormat().resolvedOptions().locale;\n            }\n            return IntlMessageFormat.memoizedDefaultLocale;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    IntlMessageFormat.memoizedDefaultLocale = null;\n    IntlMessageFormat.__parse = parse;\n    // Default format options used as the prototype of the `formats` provided to the\n    // constructor. These are used when constructing the internal Intl.NumberFormat\n    // and Intl.DateTimeFormat instances.\n    IntlMessageFormat.formats = {\n        number: {\n            integer: {\n                maximumFractionDigits: 0,\n            },\n            currency: {\n                style: 'currency',\n            },\n            percent: {\n                style: 'percent',\n            },\n        },\n        date: {\n            short: {\n                month: 'numeric',\n                day: 'numeric',\n                year: '2-digit',\n            },\n            medium: {\n                month: 'short',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            long: {\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            full: {\n                weekday: 'long',\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n        },\n        time: {\n            short: {\n                hour: 'numeric',\n                minute: 'numeric',\n            },\n            medium: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n            },\n            long: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n            full: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n        },\n    };\n    return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","/*! js-cookie v3.0.5 | MIT */\n;\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n    var current = global.Cookies;\n    var exports = global.Cookies = factory();\n    exports.noConflict = function () { global.Cookies = current; return exports; };\n  })());\n})(this, (function () { 'use strict';\n\n  /* eslint-disable no-var */\n  function assign (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        target[key] = source[key];\n      }\n    }\n    return target\n  }\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n  var defaultConverter = {\n    read: function (value) {\n      if (value[0] === '\"') {\n        value = value.slice(1, -1);\n      }\n      return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n    },\n    write: function (value) {\n      return encodeURIComponent(value).replace(\n        /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n        decodeURIComponent\n      )\n    }\n  };\n  /* eslint-enable no-var */\n\n  /* eslint-disable no-var */\n\n  function init (converter, defaultAttributes) {\n    function set (name, value, attributes) {\n      if (typeof document === 'undefined') {\n        return\n      }\n\n      attributes = assign({}, defaultAttributes, attributes);\n\n      if (typeof attributes.expires === 'number') {\n        attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n      }\n      if (attributes.expires) {\n        attributes.expires = attributes.expires.toUTCString();\n      }\n\n      name = encodeURIComponent(name)\n        .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n        .replace(/[()]/g, escape);\n\n      var stringifiedAttributes = '';\n      for (var attributeName in attributes) {\n        if (!attributes[attributeName]) {\n          continue\n        }\n\n        stringifiedAttributes += '; ' + attributeName;\n\n        if (attributes[attributeName] === true) {\n          continue\n        }\n\n        // Considers RFC 6265 section 5.2:\n        // ...\n        // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n        //     character:\n        // Consume the characters of the unparsed-attributes up to,\n        // not including, the first %x3B (\";\") character.\n        // ...\n        stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n      }\n\n      return (document.cookie =\n        name + '=' + converter.write(value, name) + stringifiedAttributes)\n    }\n\n    function get (name) {\n      if (typeof document === 'undefined' || (arguments.length && !name)) {\n        return\n      }\n\n      // To prevent the for loop in the first place assign an empty array\n      // in case there are no cookies at all.\n      var cookies = document.cookie ? document.cookie.split('; ') : [];\n      var jar = {};\n      for (var i = 0; i < cookies.length; i++) {\n        var parts = cookies[i].split('=');\n        var value = parts.slice(1).join('=');\n\n        try {\n          var found = decodeURIComponent(parts[0]);\n          jar[found] = converter.read(value, found);\n\n          if (name === found) {\n            break\n          }\n        } catch (e) {}\n      }\n\n      return name ? jar[name] : jar\n    }\n\n    return Object.create(\n      {\n        set,\n        get,\n        remove: function (name, attributes) {\n          set(\n            name,\n            '',\n            assign({}, attributes, {\n              expires: -1\n            })\n          );\n        },\n        withAttributes: function (attributes) {\n          return init(this.converter, assign({}, this.attributes, attributes))\n        },\n        withConverter: function (converter) {\n          return init(assign({}, this.converter, converter), this.attributes)\n        }\n      },\n      {\n        attributes: { value: Object.freeze(defaultAttributes) },\n        converter: { value: Object.freeze(converter) }\n      }\n    )\n  }\n\n  var api = init(defaultConverter, { path: '/' });\n  /* eslint-enable no-var */\n\n  return api;\n\n}));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer       = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader       = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util         = require(\"./util/minimal\");\nprotobuf.rpc          = require(\"./rpc\");\nprotobuf.roots        = require(\"./roots\");\nprotobuf.configure    = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n    protobuf.util._configure();\n    protobuf.Writer._configure(protobuf.BufferWriter);\n    protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits  = util.LongBits,\n    utf8      = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n    /**\n     * Read buffer.\n     * @type {Uint8Array}\n     */\n    this.buf = buffer;\n\n    /**\n     * Read buffer position.\n     * @type {number}\n     */\n    this.pos = 0;\n\n    /**\n     * Read buffer length.\n     * @type {number}\n     */\n    this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n    ? function create_typed_array(buffer) {\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    }\n    /* istanbul ignore next */\n    : function create_array(buffer) {\n        if (Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    };\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup(buffer) {\n            return (Reader.create = function create_buffer(buffer) {\n                return util.Buffer.isBuffer(buffer)\n                    ? new BufferReader(buffer)\n                    /* istanbul ignore next */\n                    : create_array(buffer);\n            })(buffer);\n        }\n        /* istanbul ignore next */\n        : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n    return function read_uint32() {\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n        /* istanbul ignore if */\n        if ((this.pos += 5) > this.len) {\n            this.pos = this.len;\n            throw indexOutOfRange(this, 10);\n        }\n        return value;\n    };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n    return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n    var value = this.uint32();\n    return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n    // tends to deopt with local vars for octet etc.\n    var bits = new LongBits(0, 0);\n    var i = 0;\n    if (this.len - this.pos > 4) { // fast route (lo)\n        for (; i < 4; ++i) {\n            // 1st..4th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 5th\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\n        if (this.buf[this.pos++] < 128)\n            return bits;\n        i = 0;\n    } else {\n        for (; i < 3; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 1st..3th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 4th\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n        return bits;\n    }\n    if (this.len - this.pos > 4) { // fast route (hi)\n        for (; i < 5; ++i) {\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    } else {\n        for (; i < 5; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    }\n    /* istanbul ignore next */\n    throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n    return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n    return (buf[end - 4]\n          | buf[end - 3] << 8\n          | buf[end - 2] << 16\n          | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 8);\n\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readFloatLE(this.buf, this.pos);\n    this.pos += 4;\n    return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readDoubleLE(this.buf, this.pos);\n    this.pos += 8;\n    return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n    var length = this.uint32(),\n        start  = this.pos,\n        end    = this.pos + length;\n\n    /* istanbul ignore if */\n    if (end > this.len)\n        throw indexOutOfRange(this, length);\n\n    this.pos += length;\n    if (Array.isArray(this.buf)) // plain array\n        return this.buf.slice(start, end);\n\n    if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n        var nativeBuffer = util.Buffer;\n        return nativeBuffer\n            ? nativeBuffer.alloc(0)\n            : new this.buf.constructor(0);\n    }\n    return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n    var bytes = this.bytes();\n    return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n    if (typeof length === \"number\") {\n        /* istanbul ignore if */\n        if (this.pos + length > this.len)\n            throw indexOutOfRange(this, length);\n        this.pos += length;\n    } else {\n        do {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n        } while (this.buf[this.pos++] & 128);\n    }\n    return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n    switch (wireType) {\n        case 0:\n            this.skip();\n            break;\n        case 1:\n            this.skip(8);\n            break;\n        case 2:\n            this.skip(this.uint32());\n            break;\n        case 3:\n            while ((wireType = this.uint32() & 7) !== 4) {\n                this.skipType(wireType);\n            }\n            break;\n        case 5:\n            this.skip(4);\n            break;\n\n        /* istanbul ignore next */\n        default:\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n    }\n    return this;\n};\n\nReader._configure = function(BufferReader_) {\n    BufferReader = BufferReader_;\n    Reader.create = create();\n    BufferReader._configure();\n\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n    util.merge(Reader.prototype, {\n\n        int64: function read_int64() {\n            return readLongVarint.call(this)[fn](false);\n        },\n\n        uint64: function read_uint64() {\n            return readLongVarint.call(this)[fn](true);\n        },\n\n        sint64: function read_sint64() {\n            return readLongVarint.call(this).zzDecode()[fn](false);\n        },\n\n        fixed64: function read_fixed64() {\n            return readFixed64.call(this)[fn](true);\n        },\n\n        sfixed64: function read_sfixed64() {\n            return readFixed64.call(this)[fn](false);\n        }\n\n    });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n    Reader.call(this, buffer);\n\n    /**\n     * Read buffer.\n     * @name BufferReader#buf\n     * @type {Buffer}\n     */\n}\n\nBufferReader._configure = function () {\n    /* istanbul ignore else */\n    if (util.Buffer)\n        BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice\n        ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n        : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n *     if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n *         throw Error(\"no such method\");\n *     asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n *         callback(err, responseData);\n *     });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n    if (typeof rpcImpl !== \"function\")\n        throw TypeError(\"rpcImpl must be a function\");\n\n    util.EventEmitter.call(this);\n\n    /**\n     * RPC implementation. Becomes `null` once the service is ended.\n     * @type {RPCImpl|null}\n     */\n    this.rpcImpl = rpcImpl;\n\n    /**\n     * Whether requests are length-delimited.\n     * @type {boolean}\n     */\n    this.requestDelimited = Boolean(requestDelimited);\n\n    /**\n     * Whether responses are length-delimited.\n     * @type {boolean}\n     */\n    this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n    if (!request)\n        throw TypeError(\"request must be specified\");\n\n    var self = this;\n    if (!callback)\n        return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n    if (!self.rpcImpl) {\n        setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n        return undefined;\n    }\n\n    try {\n        return self.rpcImpl(\n            method,\n            requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n            function rpcCallback(err, response) {\n\n                if (err) {\n                    self.emit(\"error\", err, method);\n                    return callback(err);\n                }\n\n                if (response === null) {\n                    self.end(/* endedByRPC */ true);\n                    return undefined;\n                }\n\n                if (!(response instanceof responseCtor)) {\n                    try {\n                        response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n                    } catch (err) {\n                        self.emit(\"error\", err, method);\n                        return callback(err);\n                    }\n                }\n\n                self.emit(\"data\", response, method);\n                return callback(null, response);\n            }\n        );\n    } catch (err) {\n        self.emit(\"error\", err, method);\n        setTimeout(function() { callback(err); }, 0);\n        return undefined;\n    }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n    if (this.rpcImpl) {\n        if (!endedByRPC) // signal end to rpcImpl\n            this.rpcImpl(null, null, null);\n        this.rpcImpl = null;\n        this.emit(\"end\").off();\n    }\n    return this;\n};\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n    // note that the casts below are theoretically unnecessary as of today, but older statically\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n    /**\n     * Low bits.\n     * @type {number}\n     */\n    this.lo = lo >>> 0;\n\n    /**\n     * High bits.\n     * @type {number}\n     */\n    this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n    if (value === 0)\n        return zero;\n    var sign = value < 0;\n    if (sign)\n        value = -value;\n    var lo = value >>> 0,\n        hi = (value - lo) / 4294967296 >>> 0;\n    if (sign) {\n        hi = ~hi >>> 0;\n        lo = ~lo >>> 0;\n        if (++lo > 4294967295) {\n            lo = 0;\n            if (++hi > 4294967295)\n                hi = 0;\n        }\n    }\n    return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n    if (typeof value === \"number\")\n        return LongBits.fromNumber(value);\n    if (util.isString(value)) {\n        /* istanbul ignore else */\n        if (util.Long)\n            value = util.Long.fromString(value);\n        else\n            return LongBits.fromNumber(parseInt(value, 10));\n    }\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n    if (!unsigned && this.hi >>> 31) {\n        var lo = ~this.lo + 1 >>> 0,\n            hi = ~this.hi     >>> 0;\n        if (!lo)\n            hi = hi + 1 >>> 0;\n        return -(lo + hi * 4294967296);\n    }\n    return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n    return util.Long\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n        /* istanbul ignore next */\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n    if (hash === zeroHash)\n        return zero;\n    return new LongBits(\n        ( charCodeAt.call(hash, 0)\n        | charCodeAt.call(hash, 1) << 8\n        | charCodeAt.call(hash, 2) << 16\n        | charCodeAt.call(hash, 3) << 24) >>> 0\n    ,\n        ( charCodeAt.call(hash, 4)\n        | charCodeAt.call(hash, 5) << 8\n        | charCodeAt.call(hash, 6) << 16\n        | charCodeAt.call(hash, 7) << 24) >>> 0\n    );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n    return String.fromCharCode(\n        this.lo        & 255,\n        this.lo >>> 8  & 255,\n        this.lo >>> 16 & 255,\n        this.lo >>> 24      ,\n        this.hi        & 255,\n        this.hi >>> 8  & 255,\n        this.hi >>> 16 & 255,\n        this.hi >>> 24\n    );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n    var mask =   this.hi >> 31;\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n    var mask = -(this.lo & 1);\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n    var part0 =  this.lo,\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n        part2 =  this.hi >>> 24;\n    return part2 === 0\n         ? part1 === 0\n           ? part0 < 16384\n             ? part0 < 128 ? 1 : 2\n             : part0 < 2097152 ? 3 : 4\n           : part1 < 16384\n             ? part1 < 128 ? 5 : 6\n             : part1 < 2097152 ? 7 : 8\n         : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n                   && global\n                   && global.process\n                   && global.process.versions\n                   && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n           || typeof window !== \"undefined\" && window\n           || typeof self   !== \"undefined\" && self\n           || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n    return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n    var value = obj[prop];\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n    return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n    try {\n        var Buffer = util.inquire(\"buffer\").Buffer;\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n    } catch (e) {\n        /* istanbul ignore next */\n        return null;\n    }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n    /* istanbul ignore next */\n    return typeof sizeOrArray === \"number\"\n        ? util.Buffer\n            ? util._Buffer_allocUnsafe(sizeOrArray)\n            : new util.Array(sizeOrArray)\n        : util.Buffer\n            ? util._Buffer_from(sizeOrArray)\n            : typeof Uint8Array === \"undefined\"\n                ? sizeOrArray\n                : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n         || /* istanbul ignore next */ util.global.Long\n         || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n    return value\n        ? util.LongBits.from(value).toHash()\n        : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n    var bits = util.LongBits.fromHash(hash);\n    if (util.Long)\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n    return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n        if (dst[keys[i]] === undefined || !ifNotSet)\n            dst[keys[i]] = src[keys[i]];\n    return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n    return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n    function CustomError(message, properties) {\n\n        if (!(this instanceof CustomError))\n            return new CustomError(message, properties);\n\n        // Error.call(this, message);\n        // ^ just returns a new error instance because the ctor can be called as a function\n\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) // node\n            Error.captureStackTrace(this, CustomError);\n        else\n            Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n        if (properties)\n            merge(this, properties);\n    }\n\n    CustomError.prototype = Object.create(Error.prototype, {\n        constructor: {\n            value: CustomError,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n        name: {\n            get: function get() { return name; },\n            set: undefined,\n            enumerable: false,\n            // configurable: false would accurately preserve the behavior of\n            // the original, but I'm guessing that was not intentional.\n            // For an actual error subclass, this property would\n            // be configurable.\n            configurable: true,\n        },\n        toString: {\n            value: function value() { return this.name + \": \" + this.message; },\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n    });\n\n    return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n *     if (e instanceof ProtocolError && e.instance)\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n    var fieldMap = {};\n    for (var i = 0; i < fieldNames.length; ++i)\n        fieldMap[fieldNames[i]] = 1;\n\n    /**\n     * @returns {string|undefined} Set field name, if any\n     * @this Object\n     * @ignore\n     */\n    return function() { // eslint-disable-line consistent-return\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n                return keys[i];\n    };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n    /**\n     * @param {string} name Field name\n     * @returns {undefined}\n     * @this Object\n     * @ignore\n     */\n    return function(name) {\n        for (var i = 0; i < fieldNames.length; ++i)\n            if (fieldNames[i] !== name)\n                delete this[fieldNames[i]];\n    };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n    longs: String,\n    enums: String,\n    bytes: String,\n    json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n    var Buffer = util.Buffer;\n    /* istanbul ignore if */\n    if (!Buffer) {\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\n        return;\n    }\n    // because node 4.x buffers are incompatible & immutable\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n        /* istanbul ignore next */\n        function Buffer_from(value, encoding) {\n            return new Buffer(value, encoding);\n        };\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n        /* istanbul ignore next */\n        function Buffer_allocUnsafe(size) {\n            return new Buffer(size);\n        };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits  = util.LongBits,\n    base64    = util.base64,\n    utf8      = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n    /**\n     * Function to call.\n     * @type {function(Uint8Array, number, *)}\n     */\n    this.fn = fn;\n\n    /**\n     * Value byte length.\n     * @type {number}\n     */\n    this.len = len;\n\n    /**\n     * Next operation.\n     * @type {Writer.Op|undefined}\n     */\n    this.next = undefined;\n\n    /**\n     * Value to write.\n     * @type {*}\n     */\n    this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n    /**\n     * Current head.\n     * @type {Writer.Op}\n     */\n    this.head = writer.head;\n\n    /**\n     * Current tail.\n     * @type {Writer.Op}\n     */\n    this.tail = writer.tail;\n\n    /**\n     * Current buffer length.\n     * @type {number}\n     */\n    this.len = writer.len;\n\n    /**\n     * Next state.\n     * @type {State|null}\n     */\n    this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n    /**\n     * Current length.\n     * @type {number}\n     */\n    this.len = 0;\n\n    /**\n     * Operations head.\n     * @type {Object}\n     */\n    this.head = new Op(noop, 0, 0);\n\n    /**\n     * Operations tail\n     * @type {Object}\n     */\n    this.tail = this.head;\n\n    /**\n     * Linked forked states.\n     * @type {Object|null}\n     */\n    this.states = null;\n\n    // When a value is written, the writer calculates its byte length and puts it into a linked\n    // list of operations to perform when finish() is called. This both allows us to allocate\n    // buffers of the exact required size and reduces the amount of work we have to do compared\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\n    // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup() {\n            return (Writer.create = function create_buffer() {\n                return new BufferWriter();\n            })();\n        }\n        /* istanbul ignore next */\n        : function create_array() {\n            return new Writer();\n        };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n    return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n    this.tail = this.tail.next = new Op(fn, len, val);\n    this.len += len;\n    return this;\n};\n\nfunction writeByte(val, buf, pos) {\n    buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n    while (val > 127) {\n        buf[pos++] = val & 127 | 128;\n        val >>>= 7;\n    }\n    buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n    this.len = len;\n    this.next = undefined;\n    this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\n    this.len += (this.tail = this.tail.next = new VarintOp(\n        (value = value >>> 0)\n                < 128       ? 1\n        : value < 16384     ? 2\n        : value < 2097152   ? 3\n        : value < 268435456 ? 4\n        :                     5,\n    value)).len;\n    return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n    return value < 0\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n        : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n    while (val.hi) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n        val.hi >>>= 7;\n    }\n    while (val.lo > 127) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = val.lo >>> 7;\n    }\n    buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n    var bits = LongBits.from(value).zzEncode();\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n    return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n    buf[pos    ] =  val         & 255;\n    buf[pos + 1] =  val >>> 8   & 255;\n    buf[pos + 2] =  val >>> 16  & 255;\n    buf[pos + 3] =  val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n    return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n    return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n    return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n    ? function writeBytes_set(val, buf, pos) {\n        buf.set(val, pos); // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytes_for(val, buf, pos) {\n        for (var i = 0; i < val.length; ++i)\n            buf[pos + i] = val[i];\n    };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n    var len = value.length >>> 0;\n    if (!len)\n        return this._push(writeByte, 1, 0);\n    if (util.isString(value)) {\n        var buf = Writer.alloc(len = base64.length(value));\n        base64.decode(value, buf, 0);\n        value = buf;\n    }\n    return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n    var len = utf8.length(value);\n    return len\n        ? this.uint32(len)._push(utf8.write, len, value)\n        : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n    this.states = new State(this);\n    this.head = this.tail = new Op(noop, 0, 0);\n    this.len = 0;\n    return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n    if (this.states) {\n        this.head   = this.states.head;\n        this.tail   = this.states.tail;\n        this.len    = this.states.len;\n        this.states = this.states.next;\n    } else {\n        this.head = this.tail = new Op(noop, 0, 0);\n        this.len  = 0;\n    }\n    return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n    var head = this.head,\n        tail = this.tail,\n        len  = this.len;\n    this.reset().uint32(len);\n    if (len) {\n        this.tail.next = head.next; // skip noop\n        this.tail = tail;\n        this.len += len;\n    }\n    return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n    var head = this.head.next, // skip noop\n        buf  = this.constructor.alloc(this.len),\n        pos  = 0;\n    while (head) {\n        head.fn(head.val, buf, pos);\n        pos += head.len;\n        head = head.next;\n    }\n    // this.head = this.tail = null;\n    return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n    BufferWriter = BufferWriter_;\n    Writer.create = create();\n    BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n    Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n    /**\n     * Allocates a buffer of the specified size.\n     * @function\n     * @param {number} size Buffer size\n     * @returns {Buffer} Buffer\n     */\n    BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n    BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n        ? function writeBytesBuffer_set(val, buf, pos) {\n          buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n          // also works for plain array values\n        }\n        /* istanbul ignore next */\n        : function writeBytesBuffer_copy(val, buf, pos) {\n          if (val.copy) // Buffer values\n            val.copy(buf, pos, 0, val.length);\n          else for (var i = 0; i < val.length;) // plain array values\n            buf[pos++] = val[i++];\n        };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n    if (util.isString(value))\n        value = util._Buffer_from(value, \"base64\");\n    var len = value.length >>> 0;\n    this.uint32(len);\n    if (len)\n        this._push(BufferWriter.writeBytesBuffer, len, value);\n    return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n        util.utf8.write(val, buf, pos);\n    else if (buf.utf8Write)\n        buf.utf8Write(val, pos);\n    else\n        buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = util.Buffer.byteLength(value);\n    this.uint32(len);\n    if (len)\n        this._push(writeStringBuffer, len, value);\n    return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.40\n   Copyright © 2012-2024 Faisal Salman <f@faisalman.com>\n   MIT License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://faisalman.github.io/ua-parser-js\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n    'use strict';\n\n    //////////////\n    // Constants\n    /////////////\n\n\n    var LIBVERSION  = '1.0.40',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        EMBEDDED    = 'embedded',\n        UA_MAX_LENGTH = 500;\n\n    var AMAZON  = 'Amazon',\n        APPLE   = 'Apple',\n        ASUS    = 'ASUS',\n        BLACKBERRY = 'BlackBerry',\n        BROWSER = 'Browser',\n        CHROME  = 'Chrome',\n        EDGE    = 'Edge',\n        FIREFOX = 'Firefox',\n        GOOGLE  = 'Google',\n        HUAWEI  = 'Huawei',\n        LG      = 'LG',\n        MICROSOFT = 'Microsoft',\n        MOTOROLA  = 'Motorola',\n        OPERA   = 'Opera',\n        SAMSUNG = 'Samsung',\n        SHARP   = 'Sharp',\n        SONY    = 'Sony',\n        XIAOMI  = 'Xiaomi',\n        ZEBRA   = 'Zebra',\n        FACEBOOK    = 'Facebook',\n        CHROMIUM_OS = 'Chromium OS',\n        MAC_OS  = 'Mac OS',\n        SUFFIX_BROWSER = ' Browser';\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (regexes, extensions) {\n            var mergedRegexes = {};\n            for (var i in regexes) {\n                if (extensions[i] && extensions[i].length % 2 === 0) {\n                    mergedRegexes[i] = extensions[i].concat(regexes[i]);\n                } else {\n                    mergedRegexes[i] = regexes[i];\n                }\n            }\n            return mergedRegexes;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        lowerize = function (str) {\n            return str.toLowerCase();\n        },\n        majorize = function (version) {\n            return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n        },\n        trim = function (str, len) {\n            if (typeof(str) === STR_TYPE) {\n                str = str.replace(/^\\s\\s*/, EMPTY);\n                return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    // Safari < 3.0\n    var oldSafariMap = {\n            '1.0'   : '/8',\n            '1.2'   : '/1',\n            '1.3'   : '/3',\n            '2.0'   : '/412',\n            '2.0.2' : '/416',\n            '2.0.3' : '/417',\n            '2.0.4' : '/419',\n            '?'     : '/'\n        },\n        windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var regexes = {\n\n        browser : [[\n\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n            /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(heytap|ovi|115)browser\\/([\\d\\.]+)/i,                              // HeyTap/Ovi/115\n            /(weibo)__([\\d\\.]+)/i                                               // Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UC'+BROWSER]], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, 'Sogou Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, 'Sogou Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|rekonq)/i,                                              // LieBao Browser/Rekonq\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME], [\n            /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,                                  // Iron\n            /ome\\/([\\w\\.]+).+qihu (360)[es]e/i                                  // 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION], [\n            /(Klarna)\\/([\\w\\.]+)/i,                                             // Klarna Shopping Browser for iOS & Android\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i                     // Chromium/Instagram/Snapchat\n            ], [NAME, VERSION], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA']], [\n            /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i                        // TikTok\n            ], [VERSION, [NAME, 'TikTok']], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i                      // Mobile Safari\n            ], [VERSION, [NAME, 'Mobile Safari']], [\n            /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i                // Safari & Safari Mobile\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser\n            /(links) \\(([\\w\\.]+)/i                                              // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /master.|lts./, \"\"]]\n        ],\n\n        cpu : [[\n\n            /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i                     // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i                                                      // IA32 (quicktime)\n            ], [[ARCHITECTURE, lowerize]], [\n\n            /((?:i[346]|x)86)[;\\)]/i                                            // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i                                 // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i                                   // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /windows (ce|mobile); ppc;/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i                            // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            /(sun4\\w)[;\\)]/i                                                    // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i                          // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /(?:honor)([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,                  // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,        // Xiaomi Redmi 'numeric' models\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i // Xiaomi Mi\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n            /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,                     // Redmi Pad\n            /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i                        // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n            /\\b(opd2\\d{3}a?) bui/i\n            ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n            // Vivo\n            /vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+)/i,\n            /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n            ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n            // Nokia\n            /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n            /nokia[-_ ]?([-\\w\\.]*)/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n            // Google\n            /(pixel c)\\b/i                                                      // Google Pixel C\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(?:015|06[35]|142p?))/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n            /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i,                             // IMO\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(asus)-?(\\w+)/i,                                                   // Asus\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w]+)/i,                                          // Lenovo\n            /(jolla)/i,                                                         // Jolla\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(archos) (gamepad2?)/i,                                            // Archos\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(nook)[\\w ]+build\\/(\\w+)/i,                                        // Nook\n            /(dell) (strea[kpr\\d ]*[\\dko])/i,                                   // Dell Streak\n            /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,                                  // Le Pan Tablets\n            /(trinity)[- ]*(t\\d{3}) bui/i,                                      // Trinity Tablets\n            /(gigaset)[- ]+(q\\w{1,9}) bui/i,                                    // Gigaset Tablets\n            /(vodafone) ([\\w ]+)(?:\\)| bui)/i                                   // Vodafone\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /(u304aa)/i                                                         // AT&T\n            ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n            /\\bsie-(\\w*)/i                                                      // Siemens\n            ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n            /\\b(rct\\w+) b/i                                                     // RCA Tablets\n            ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n            /\\b(venue[\\d ]{2,7}) b/i                                            // Dell Venue Tablets\n            ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n            /\\b(q(?:mv|ta)\\w+) b/i                                              // Verizon Tablet\n            ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n            /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i                       // Barnes & Noble Tablet\n            ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n            /\\b(tm\\d{3}\\w+) b/i\n            ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n            /\\b(k88) b/i                                                        // ZTE K Series Tablet\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n            /\\b(nx\\d{3}j) b/i                                                   // ZTE Nubia\n            ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n            /\\b(gen\\d{3}) b.+49h/i                                              // Swiss GEN Mobile\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n            /\\b(zur\\d{3}) b/i                                                   // Swiss ZUR Tablet\n            ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n            /\\b((zeki)?tb.*\\b) b/i                                              // Zeki Tablets\n            ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n            /\\b([yr]\\d{2}) b/i,\n            /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i                                // Dragon Touch Tablet\n            ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n            /\\b(ns-?\\w{0,9}) b/i                                                // Insignia Tablets\n            ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n            /\\b((nxa|next)-?\\w{0,9}) b/i                                        // NextBook Tablets\n            ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n            /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i                  // Voice Xtreme Phones\n            ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n            /\\b(lvtel\\-)?(v1[12]) b/i                                           // LvTel Phones\n            ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n            /\\b(ph-1) /i                                                        // Essential PH-1\n            ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n            /\\b(v(100md|700na|7011|917g).*\\b) b/i                               // Envizen Tablets\n            ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n            /\\b(trio[-\\w\\. ]+) b/i                                              // MachSpeed Tablets\n            ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n            /\\btu_(1491) b/i                                                    // Rotor Tablets\n            ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n            /(shield[\\w ]+) b/i                                                 // Nvidia Shield Tablets\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i             // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i        // LG SmartTV\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast\n            ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                              // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mitv-\\w{5}) bui/i                                                 // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i                   // SmartTV from Unidentified Vendors\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) ([wids3utch]+)/i                                        // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield) bui/i                                            // Nvidia\n            ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n            /(playstation [345portablevi]+)/i                                   // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i                                   // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i                                                    // Pebble\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n            /(pico) (4|neo3(?: link|pro)?)/i                                    // Pico\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /; (quest( \\d| pro)?)/i                                             // Oculus Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i    // Android Phones from Unidentified Vendors\n            ], [MODEL, [TYPE, MOBILE]], [\n            /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i       // Android Tablets from Unidentified Vendors\n            ], [MODEL, [TYPE, TABLET]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /(android[-\\w\\. ]{0,9});.+buil/i                                    // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n            /\\b(libweb)/i\n            ], [NAME, VERSION], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i             // Windows Phone\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /windows nt 6\\.2; (arm)/i,                                        // Windows RT\n            /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n            /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n            // iOS/macOS\n            /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,              // iOS\n            /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i                    // Android-x86/HarmonyOS\n            ], [VERSION, NAME], [                                               // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony\n            /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,\n            /(blackberry)\\w*\\/([\\w\\.]*)/i,                                      // Blackberry\n            /(tizen|kaios)[\\/ ]([\\w\\.]+)/i,                                     // Tizen/KaiOS\n            /\\((series40);/i                                                    // Series 40\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i         // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n            /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google Chromecast\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast\n            ], [VERSION, [NAME, CHROME+'cast']], [\n            /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                  // Chromium OS\n            ], [[NAME, CHROMIUM_OS], VERSION],[\n\n            // Smart TVs\n            /panasonic;(viera)/i,                                               // Panasonic Viera\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) ([wids345portablevuch]+)/i,                 // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux) ?([\\w\\.]*)/i,                                         // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    var UAParser = function (ua, extensions) {\n\n        if (typeof ua === OBJ_TYPE) {\n            extensions = ua;\n            ua = undefined;\n        }\n\n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions).getResult();\n        }\n\n        var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n        var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n        var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n        var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n        var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n        this.getBrowser = function () {\n            var _browser = {};\n            _browser[NAME] = undefined;\n            _browser[VERSION] = undefined;\n            rgxMapper.call(_browser, _ua, _rgxmap.browser);\n            _browser[MAJOR] = majorize(_browser[VERSION]);\n            // Brave-specific detection\n            if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n                _browser[NAME] = 'Brave';\n            }\n            return _browser;\n        };\n        this.getCPU = function () {\n            var _cpu = {};\n            _cpu[ARCHITECTURE] = undefined;\n            rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n            return _cpu;\n        };\n        this.getDevice = function () {\n            var _device = {};\n            _device[VENDOR] = undefined;\n            _device[MODEL] = undefined;\n            _device[TYPE] = undefined;\n            rgxMapper.call(_device, _ua, _rgxmap.device);\n            if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n                _device[TYPE] = MOBILE;\n            }\n            // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n            if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n                _device[MODEL] = 'iPad';\n                _device[TYPE] = TABLET;\n            }\n            return _device;\n        };\n        this.getEngine = function () {\n            var _engine = {};\n            _engine[NAME] = undefined;\n            _engine[VERSION] = undefined;\n            rgxMapper.call(_engine, _ua, _rgxmap.engine);\n            return _engine;\n        };\n        this.getOS = function () {\n            var _os = {};\n            _os[NAME] = undefined;\n            _os[VERSION] = undefined;\n            rgxMapper.call(_os, _ua, _rgxmap.os);\n            if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n                _os[NAME] = _uach.platform  \n                                    .replace(/chrome os/i, CHROMIUM_OS)\n                                    .replace(/macos/i, MAC_OS);           // backward compatibility\n            }\n            return _os;\n        };\n        this.getResult = function () {\n            return {\n                ua      : this.getUA(),\n                browser : this.getBrowser(),\n                engine  : this.getEngine(),\n                os      : this.getOS(),\n                device  : this.getDevice(),\n                cpu     : this.getCPU()\n            };\n        };\n        this.getUA = function () {\n            return _ua;\n        };\n        this.setUA = function (ua) {\n            _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n            return this;\n        };\n        this.setUA(_ua);\n        return this;\n    };\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    ///////////\n    // Export\n    //////////\n\n    // check js environment\n    if (typeof(exports) !== UNDEF_TYPE) {\n        // nodejs env\n        if (typeof module !== UNDEF_TYPE && module.exports) {\n            exports = module.exports = UAParser;\n        }\n        exports.UAParser = UAParser;\n    } else {\n        // requirejs env (optional)\n        if (typeof(define) === FUNC_TYPE && define.amd) {\n            define(function () {\n                return UAParser;\n            });\n        } else if (typeof window !== UNDEF_TYPE) {\n            // browser env\n            window.UAParser = UAParser;\n        }\n    }\n\n    // jQuery/Zepto specific (optional)\n    // Note:\n    //   In AMD env the global scope should be kept clean, but jQuery is an exception.\n    //   jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n    //   and we should catch that.\n    var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n    if ($ && !$.ua) {\n        var parser = new UAParser();\n        $.ua = parser.getResult();\n        $.ua.get = function () {\n            return parser.getUA();\n        };\n        $.ua.set = function (ua) {\n            parser.setUA(ua);\n            var result = parser.getResult();\n            for (var prop in result) {\n                $.ua[prop] = result[prop];\n            }\n        };\n    }\n\n})(typeof window === 'object' ? window : this);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = exports.validate = exports.v7 = exports.v6ToV1 = exports.v6 = exports.v5 = exports.v4 = exports.v3 = exports.v1ToV6 = exports.v1 = exports.stringify = exports.parse = exports.NIL = exports.MAX = void 0;\nvar max_js_1 = require(\"./max.js\");\nObject.defineProperty(exports, \"MAX\", { enumerable: true, get: function () { return max_js_1.default; } });\nvar nil_js_1 = require(\"./nil.js\");\nObject.defineProperty(exports, \"NIL\", { enumerable: true, get: function () { return nil_js_1.default; } });\nvar parse_js_1 = require(\"./parse.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parse_js_1.default; } });\nvar stringify_js_1 = require(\"./stringify.js\");\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return stringify_js_1.default; } });\nvar v1_js_1 = require(\"./v1.js\");\nObject.defineProperty(exports, \"v1\", { enumerable: true, get: function () { return v1_js_1.default; } });\nvar v1ToV6_js_1 = require(\"./v1ToV6.js\");\nObject.defineProperty(exports, \"v1ToV6\", { enumerable: true, get: function () { return v1ToV6_js_1.default; } });\nvar v3_js_1 = require(\"./v3.js\");\nObject.defineProperty(exports, \"v3\", { enumerable: true, get: function () { return v3_js_1.default; } });\nvar v4_js_1 = require(\"./v4.js\");\nObject.defineProperty(exports, \"v4\", { enumerable: true, get: function () { return v4_js_1.default; } });\nvar v5_js_1 = require(\"./v5.js\");\nObject.defineProperty(exports, \"v5\", { enumerable: true, get: function () { return v5_js_1.default; } });\nvar v6_js_1 = require(\"./v6.js\");\nObject.defineProperty(exports, \"v6\", { enumerable: true, get: function () { return v6_js_1.default; } });\nvar v6ToV1_js_1 = require(\"./v6ToV1.js\");\nObject.defineProperty(exports, \"v6ToV1\", { enumerable: true, get: function () { return v6ToV1_js_1.default; } });\nvar v7_js_1 = require(\"./v7.js\");\nObject.defineProperty(exports, \"v7\", { enumerable: true, get: function () { return v7_js_1.default; } });\nvar validate_js_1 = require(\"./validate.js\");\nObject.defineProperty(exports, \"validate\", { enumerable: true, get: function () { return validate_js_1.default; } });\nvar version_js_1 = require(\"./version.js\");\nObject.defineProperty(exports, \"version\", { enumerable: true, get: function () { return version_js_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction md5(bytes) {\n    const words = uint8ToUint32(bytes);\n    const md5Bytes = wordsToMd5(words, bytes.length * 8);\n    return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n    const bytes = new Uint8Array(input.length * 4);\n    for (let i = 0; i < input.length * 4; i++) {\n        bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n    }\n    return bytes;\n}\nfunction getOutputLength(inputLength8) {\n    return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n    const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n    xpad.set(x);\n    xpad[len >> 5] |= 0x80 << len % 32;\n    xpad[xpad.length - 1] = len;\n    x = xpad;\n    let a = 1732584193;\n    let b = -271733879;\n    let c = -1732584194;\n    let d = 271733878;\n    for (let i = 0; i < x.length; i += 16) {\n        const olda = a;\n        const oldb = b;\n        const oldc = c;\n        const oldd = d;\n        a = md5ff(a, b, c, d, x[i], 7, -680876936);\n        d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n        c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n        b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n        a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n        d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n        c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n        b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n        a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n        d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n        c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n        b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n        a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n        d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n        c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n        b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n        a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n        d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n        c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n        b = md5gg(b, c, d, a, x[i], 20, -373897302);\n        a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n        d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n        c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n        b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n        a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n        d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n        c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n        b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n        a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n        d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n        c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n        b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n        a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n        d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n        c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n        b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n        a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n        d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n        c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n        b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n        a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n        d = md5hh(d, a, b, c, x[i], 11, -358537222);\n        c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n        b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n        a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n        d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n        c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n        b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n        a = md5ii(a, b, c, d, x[i], 6, -198630844);\n        d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n        c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n        b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n        a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n        d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n        c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n        b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n        a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n        d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n        c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n        b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n        a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n        d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n        c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n        b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n        a = safeAdd(a, olda);\n        b = safeAdd(b, oldb);\n        c = safeAdd(c, oldc);\n        d = safeAdd(d, oldd);\n    }\n    return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n    if (input.length === 0) {\n        return new Uint32Array();\n    }\n    const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n    for (let i = 0; i < input.length; i++) {\n        output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n    }\n    return output;\n}\nfunction safeAdd(x, y) {\n    const lsw = (x & 0xffff) + (y & 0xffff);\n    const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n    return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n    return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n    return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n    return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n    return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n    return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n    return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexports.default = md5;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexports.default = { randomUUID };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = '00000000-0000-0000-0000-000000000000';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_js_1 = require(\"./validate.js\");\nfunction parse(uuid) {\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    let v;\n    return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexports.default = parse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\nexports.default = rng;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction f(s, x, y, z) {\n    switch (s) {\n        case 0:\n            return (x & y) ^ (~x & z);\n        case 1:\n            return x ^ y ^ z;\n        case 2:\n            return (x & y) ^ (x & z) ^ (y & z);\n        case 3:\n            return x ^ y ^ z;\n    }\n}\nfunction ROTL(x, n) {\n    return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n    const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n    const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n    const newBytes = new Uint8Array(bytes.length + 1);\n    newBytes.set(bytes);\n    newBytes[bytes.length] = 0x80;\n    bytes = newBytes;\n    const l = bytes.length / 4 + 2;\n    const N = Math.ceil(l / 16);\n    const M = new Array(N);\n    for (let i = 0; i < N; ++i) {\n        const arr = new Uint32Array(16);\n        for (let j = 0; j < 16; ++j) {\n            arr[j] =\n                (bytes[i * 64 + j * 4] << 24) |\n                    (bytes[i * 64 + j * 4 + 1] << 16) |\n                    (bytes[i * 64 + j * 4 + 2] << 8) |\n                    bytes[i * 64 + j * 4 + 3];\n        }\n        M[i] = arr;\n    }\n    M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n    M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n    for (let i = 0; i < N; ++i) {\n        const W = new Uint32Array(80);\n        for (let t = 0; t < 16; ++t) {\n            W[t] = M[i][t];\n        }\n        for (let t = 16; t < 80; ++t) {\n            W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n        }\n        let a = H[0];\n        let b = H[1];\n        let c = H[2];\n        let d = H[3];\n        let e = H[4];\n        for (let t = 0; t < 80; ++t) {\n            const s = Math.floor(t / 20);\n            const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n            e = d;\n            d = c;\n            c = ROTL(b, 30) >>> 0;\n            b = a;\n            a = T;\n        }\n        H[0] = (H[0] + a) >>> 0;\n        H[1] = (H[1] + b) >>> 0;\n        H[2] = (H[2] + c) >>> 0;\n        H[3] = (H[3] + d) >>> 0;\n        H[4] = (H[4] + e) >>> 0;\n    }\n    return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexports.default = sha1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeStringify = void 0;\nconst validate_js_1 = require(\"./validate.js\");\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nexports.unsafeStringify = unsafeStringify;\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexports.default = stringify;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateV1State = void 0;\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nconst _state = {};\nfunction v1(options, buf, offset) {\n    let bytes;\n    const isV6 = options?._v6 ?? false;\n    if (options) {\n        const optionsKeys = Object.keys(options);\n        if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n            options = undefined;\n        }\n    }\n    if (options) {\n        bytes = v1Bytes(options.random ?? options.rng?.() ?? (0, rng_js_1.default)(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = (0, rng_js_1.default)();\n        updateV1State(_state, now, rnds);\n        bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n    }\n    return buf ?? (0, stringify_js_1.unsafeStringify)(bytes);\n}\nfunction updateV1State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.nsecs ??= 0;\n    if (now === state.msecs) {\n        state.nsecs++;\n        if (state.nsecs >= 10000) {\n            state.node = undefined;\n            state.nsecs = 0;\n        }\n    }\n    else if (now > state.msecs) {\n        state.nsecs = 0;\n    }\n    else if (now < state.msecs) {\n        state.node = undefined;\n    }\n    if (!state.node) {\n        state.node = rnds.slice(10, 16);\n        state.node[0] |= 0x01;\n        state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    }\n    state.msecs = now;\n    return state;\n}\nexports.updateV1State = updateV1State;\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    else {\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n    }\n    msecs ??= Date.now();\n    nsecs ??= 0;\n    clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n    node ??= rnds.slice(10, 16);\n    msecs += 12219292800000;\n    const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n    buf[offset++] = (tl >>> 24) & 0xff;\n    buf[offset++] = (tl >>> 16) & 0xff;\n    buf[offset++] = (tl >>> 8) & 0xff;\n    buf[offset++] = tl & 0xff;\n    const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n    buf[offset++] = (tmh >>> 8) & 0xff;\n    buf[offset++] = tmh & 0xff;\n    buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n    buf[offset++] = (tmh >>> 16) & 0xff;\n    buf[offset++] = (clockseq >>> 8) | 0x80;\n    buf[offset++] = clockseq & 0xff;\n    for (let n = 0; n < 6; ++n) {\n        buf[offset++] = node[n];\n    }\n    return buf;\n}\nexports.default = v1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v1ToV6(uuid) {\n    const v1Bytes = typeof uuid === 'string' ? (0, parse_js_1.default)(uuid) : uuid;\n    const v6Bytes = _v1ToV6(v1Bytes);\n    return typeof uuid === 'string' ? (0, stringify_js_1.unsafeStringify)(v6Bytes) : v6Bytes;\n}\nexports.default = v1ToV6;\nfunction _v1ToV6(v1Bytes) {\n    return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = void 0;\nconst md5_js_1 = require(\"./md5.js\");\nconst v35_js_1 = require(\"./v35.js\");\nvar v35_js_2 = require(\"./v35.js\");\nObject.defineProperty(exports, \"DNS\", { enumerable: true, get: function () { return v35_js_2.DNS; } });\nObject.defineProperty(exports, \"URL\", { enumerable: true, get: function () { return v35_js_2.URL; } });\nfunction v3(value, namespace, buf, offset) {\n    return (0, v35_js_1.default)(0x30, md5_js_1.default, value, namespace, buf, offset);\n}\nv3.DNS = v35_js_1.DNS;\nv3.URL = v35_js_1.URL;\nexports.default = v3;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = exports.stringToBytes = void 0;\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction stringToBytes(str) {\n    str = unescape(encodeURIComponent(str));\n    const bytes = new Uint8Array(str.length);\n    for (let i = 0; i < str.length; ++i) {\n        bytes[i] = str.charCodeAt(i);\n    }\n    return bytes;\n}\nexports.stringToBytes = stringToBytes;\nexports.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nfunction v35(version, hash, value, namespace, buf, offset) {\n    const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n    const namespaceBytes = typeof namespace === 'string' ? (0, parse_js_1.default)(namespace) : namespace;\n    if (typeof namespace === 'string') {\n        namespace = (0, parse_js_1.default)(namespace);\n    }\n    if (namespace?.length !== 16) {\n        throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    }\n    let bytes = new Uint8Array(16 + valueBytes.length);\n    bytes.set(namespaceBytes);\n    bytes.set(valueBytes, namespaceBytes.length);\n    bytes = hash(bytes);\n    bytes[6] = (bytes[6] & 0x0f) | version;\n    bytes[8] = (bytes[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(bytes);\n}\nexports.default = v35;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst native_js_1 = require(\"./native.js\");\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v4(options, buf, offset) {\n    if (native_js_1.default.randomUUID && !buf && !options) {\n        return native_js_1.default.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? (0, rng_js_1.default)();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(rnds);\n}\nexports.default = v4;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.URL = exports.DNS = void 0;\nconst sha1_js_1 = require(\"./sha1.js\");\nconst v35_js_1 = require(\"./v35.js\");\nvar v35_js_2 = require(\"./v35.js\");\nObject.defineProperty(exports, \"DNS\", { enumerable: true, get: function () { return v35_js_2.DNS; } });\nObject.defineProperty(exports, \"URL\", { enumerable: true, get: function () { return v35_js_2.URL; } });\nfunction v5(value, namespace, buf, offset) {\n    return (0, v35_js_1.default)(0x50, sha1_js_1.default, value, namespace, buf, offset);\n}\nv5.DNS = v35_js_1.DNS;\nv5.URL = v35_js_1.URL;\nexports.default = v5;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stringify_js_1 = require(\"./stringify.js\");\nconst v1_js_1 = require(\"./v1.js\");\nconst v1ToV6_js_1 = require(\"./v1ToV6.js\");\nfunction v6(options, buf, offset) {\n    options ??= {};\n    offset ??= 0;\n    let bytes = (0, v1_js_1.default)({ ...options, _v6: true }, new Uint8Array(16));\n    bytes = (0, v1ToV6_js_1.default)(bytes);\n    if (buf) {\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; i++) {\n            buf[offset + i] = bytes[i];\n        }\n        return buf;\n    }\n    return (0, stringify_js_1.unsafeStringify)(bytes);\n}\nexports.default = v6;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parse_js_1 = require(\"./parse.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nfunction v6ToV1(uuid) {\n    const v6Bytes = typeof uuid === 'string' ? (0, parse_js_1.default)(uuid) : uuid;\n    const v1Bytes = _v6ToV1(v6Bytes);\n    return typeof uuid === 'string' ? (0, stringify_js_1.unsafeStringify)(v1Bytes) : v1Bytes;\n}\nexports.default = v6ToV1;\nfunction _v6ToV1(v6Bytes) {\n    return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.updateV7State = void 0;\nconst rng_js_1 = require(\"./rng.js\");\nconst stringify_js_1 = require(\"./stringify.js\");\nconst _state = {};\nfunction v7(options, buf, offset) {\n    let bytes;\n    if (options) {\n        bytes = v7Bytes(options.random ?? options.rng?.() ?? (0, rng_js_1.default)(), options.msecs, options.seq, buf, offset);\n    }\n    else {\n        const now = Date.now();\n        const rnds = (0, rng_js_1.default)();\n        updateV7State(_state, now, rnds);\n        bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n    }\n    return buf ?? (0, stringify_js_1.unsafeStringify)(bytes);\n}\nfunction updateV7State(state, now, rnds) {\n    state.msecs ??= -Infinity;\n    state.seq ??= 0;\n    if (now > state.msecs) {\n        state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n        state.msecs = now;\n    }\n    else {\n        state.seq = (state.seq + 1) | 0;\n        if (state.seq === 0) {\n            state.msecs++;\n        }\n    }\n    return state;\n}\nexports.updateV7State = updateV7State;\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    if (!buf) {\n        buf = new Uint8Array(16);\n        offset = 0;\n    }\n    else {\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n    }\n    msecs ??= Date.now();\n    seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n    buf[offset++] = (msecs / 0x10000000000) & 0xff;\n    buf[offset++] = (msecs / 0x100000000) & 0xff;\n    buf[offset++] = (msecs / 0x1000000) & 0xff;\n    buf[offset++] = (msecs / 0x10000) & 0xff;\n    buf[offset++] = (msecs / 0x100) & 0xff;\n    buf[offset++] = msecs & 0xff;\n    buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n    buf[offset++] = (seq >>> 20) & 0xff;\n    buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n    buf[offset++] = (seq >>> 6) & 0xff;\n    buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n    buf[offset++] = rnds[11];\n    buf[offset++] = rnds[12];\n    buf[offset++] = rnds[13];\n    buf[offset++] = rnds[14];\n    buf[offset++] = rnds[15];\n    return buf;\n}\nexports.default = v7;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst regex_js_1 = require(\"./regex.js\");\nfunction validate(uuid) {\n    return typeof uuid === 'string' && regex_js_1.default.test(uuid);\n}\nexports.default = validate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_js_1 = require(\"./validate.js\");\nfunction version(uuid) {\n    if (!(0, validate_js_1.default)(uuid)) {\n        throw TypeError('Invalid UUID');\n    }\n    return parseInt(uuid.slice(14, 15), 16);\n}\nexports.default = version;\n","import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\t// `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\r\n\t\t// For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\r\n\t\t// So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (isObject(optionsOrDefaultCountry)) {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param  {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included a `.country` property on an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset({\r\n\t\t\tcountry: this.defaultCountry,\r\n\t\t\tcallingCode: this.defaultCallingCode\r\n\t\t})\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberIsModified } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberIsModified\r\n\t\t\t\t? this.state.getNationalDigits()\r\n\t\t\t\t: this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the exact country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: this.state.nationalSignificantNumber,\r\n\t\t\t\tmetadata: this.metadata\r\n\t\t\t}\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tlet country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t// For example, `country` could be `\"AR\"` and `callingCode` could be `undefined`.\r\n\t\t// So `country` and `callingCode` are totally independent.\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// By default, if `defaultCountry` parameter was passed when\r\n\t\t// creating `AsYouType` instance, `state.country` is gonna be\r\n\t\t// that `defaultCountry`, which doesn't entirely conform with\r\n\t\t// `parsePhoneNumber()`'s behavior where it attempts to determine\r\n\t\t// the country more precisely in cases when multiple countries\r\n\t\t// could correspond to the same `countryCallingCode`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\r\n\t\t//\r\n\t\t// Because `AsYouType.getNumber()` method is supposed to be a 1:1\r\n\t\t// equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\r\n\t\t// then it should also behave accordingly in cases of `country` ambiguity.\r\n\t\t// That's how users of this library would expect it to behave anyway.\r\n\t\t//\r\n\t\tif (country) {\r\n\t\t\tif (country === this.defaultCountry) {\r\n\t\t\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t\t\t// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n\t\t\t\t// So `state.country` and `state.callingCode` are totally independent.\r\n\t\t\t\tconst metadata = new Metadata(this.metadata.metadata)\r\n\t\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t\t\tconst callingCode = metadata.numberingPlan.callingCode()\r\n\t\t\t\tconst ambiguousCountries = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\t\t\tif (ambiguousCountries.length > 1) {\r\n\t\t\t\t\tconst exactCountry = getCountryByNationalNumber(nationalSignificantNumber, {\r\n\t\t\t\t\t\tcountries: ambiguousCountries,\r\n\t\t\t\t\t\tmetadata: this.metadata.metadata\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (exactCountry) {\r\n\t\t\t\t\t\tcountry = exactCountry\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param  {string[]} characters\r\n * @param  {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param  {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}","export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}","import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, country, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, country, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\r\n\t\t\tformattedNationalNumber = state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n//    \"leading_digits_patterns\": [\"91\"],\r\n//    \"national_prefix_formatting_rule\": \"0$1\",\r\n//    \"format\": \"$2 15-$3-$4\",\r\n//    \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t//  output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param  {string} nextDigits — Additional phone number digits.\r\n\t * @param  {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t//  If so, we should use this instead of any other formatting template\r\n\t\t//  whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, state.country, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\r\n\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t//    \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t//    \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t//    \"format\": \"$2 15-$3-$4\",\r\n\t\t\t//    \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param  {Format} format\r\n\t * @param  {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use  the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber(undefined, undefined)\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param  {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tstate.country,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\t// Tells if the parsed national (significant) number is present as-is in the input string.\r\n\t\t// For example, when inputting \"0343515551212999\" Argentinian mobile number,\r\n\t\t// the parsed national (significant) number is \"93435551212999\".\r\n\t\t// There, one can see how it stripped \"0\" national prefix and prepended a \"9\",\r\n\t\t// because that's how it is instructed to do in Argentina's metadata.\r\n\t\t// So in the described example, the parsed national (significant) number is not present\r\n\t\t// as-is in the input string. Instead, it's \"modified\" in the input string.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tlet nationalSignificantNumberIsModified = false\r\n\r\n\t\t// In some countries, a phone number could have a prefix that is not a \"national prefix\"\r\n\t\t// but rather some other type of \"utility\" prefix.\r\n\t\t// For example, when calling within Australia, one could prepend `1831` prefix to hide\r\n\t\t// caller's phone number.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tlet prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\r\n\t\t// `nationalSignificantNumber` could be empty. In that case, `.lastIndexOf()` still works correctly.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\r\n\t\t// If the parsed national (significant) number is the last substring of the `nationalDigits`,\r\n\t\t// then it means that it's present as-is in the input string.\r\n\t\t// In any other case, the parsed national (significant) number is \"modified\" in the input string.\r\n\t\tif (\r\n\t\t\tnationalSignificantNumberIndex < 0 ||\r\n\t\t\tnationalSignificantNumberIndex !== nationalDigits.length - nationalSignificantNumber.length\r\n\t\t) {\r\n\t\t\tnationalSignificantNumberIsModified = true\r\n\t\t} else {\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// When national (significant) number is equal to the `nationalDigits`,\r\n\t\t\t// this `onExtractedNationalNumber()` function simply doesn't get called.\r\n\t\t\t// This means that at this point, `prefixBeforeNationalNumber` is always non-empty.\r\n\t\t\t// Still, added this `if` check just to prevent potential silly bugs.\r\n\t\t\t// The `!prefixBeforeNationalNumber` case is not really testable\r\n\t\t\t// so this line is exluded from the code coverage.\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (prefixBeforeNationalNumber) {\r\n\t\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = prefixBeforeNationalNumber\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberIsModified,\r\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tstate.country,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param  {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","// This \"state\" object simply holds the state of the \"AsYouType\" parser:\r\n//\r\n// * `country?: string` — The exact country of the phone number, if it could be determined.\r\n//                        When inputting a phone number in \"international\" format, it will derive the `country` from \"country calling code\" and the phone number digits.\r\n//                        When inputting a phone number in \"national\" format, it will derive the `country` from `defaultCountry` that was specified when creating the `AsYouType` formatter.\r\n//                        Sidenote: If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` flag was `true`, then for \"non-geographic phone numbers\" `state.country` would've been \"001\".\r\n// * `callingCode?: string` — \"Country calling code\" that has been extracted from the input phone number.\r\n//                        When inputting a phone number in \"international\" format, it will extract the \"country calling code\" from the digits that follow the \"+\" character.\r\n//                        When inputting a phone number in \"national\" format, `callingCode` will be `undefined`.\r\n//                        Sidenote: `state.callingCode` is therefore independent from `state.country` and there could be situations when `state.country` is defined by `state.callingCode` is not — that would be when inputting a phone number not in \"international\" format.\r\n// * `digits: string` — Phone number digits that have been input so far, including the \"+\" character, if present. In case of inputting non-arabic digits, those will be converted to arabic ones.\r\n// * `international: boolean` — Whether the phone number is being input in \"international\" format, i.e. with a \"+\" character.\r\n// * `missingPlus: boolean` — Whether it's a phone number in \"international\" format that is missing the leading \"+\" character for some reason — apparently, Google thinks that it's a common mistake when inputting a phone number.\r\n// * `IDDPrefix?: string` — An \"IDD prefix\", when the phone number is being input in an \"out-of-country dialing\" format. https://wikitravel.org/en/International_dialling_prefix\r\n// * `carrierCode?: string` — A \"carrier code\", if the phone number contains it. Normally, those can only be present in Colombia or Brazil, and only when calling from mobile phones to fixed-line numbers.\r\n// * `nationalPrefix?: string` — \"National prefix\", if present in the phone number input.\r\n// * `nationalSignificantNumber?: string` — National (significant) number digits that have been input so far.\r\n// * `nationalSignificantNumberIsModified: boolean` — Tells if the parsed national (significant) number is present as-is in the input string. For example, when inputting \"0343515551212999\" Argentinian mobile number, the parsed national (significant) number is \"93435551212999\". There, one can see how it stripped \"0\" national prefix and prepended a \"9\", because that's how it is instructed to do in Argentina's metadata. So in the described example, the parsed national (significant) number is not present as-is in the input string. Instead, it's \"modified\" in the input string. https://gitlab.com/caamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n// * `prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix?: string` — In some countries, a phone number could have a prefix that is not a \"national prefix\" but rather some other type of \"utility\" prefix.\r\n//                                                                             For example, when calling within Australia, one could prepend `1831` prefix to hide caller's phone number.\r\n//                                                                             https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n//\r\nexport default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset({ country, callingCode }) {\r\n\t\tthis.international = false\r\n\t\tthis.missingPlus = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberIsModified = false\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n  constructor(code) {\r\n    super(code)\r\n    // Set the prototype explicitly.\r\n    // Any subclass of FooError will have to manually set the prototype as well.\r\n    Object.setPrototypeOf(this, ParseError.prototype)\r\n    this.name = this.constructor.name\r\n  }\r\n}","import Metadata, { validateMetadata } from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport isObject from './helpers/isObject.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param  {string} countryOrCountryCallingCode\r\n\t * @param  {string} nationalNumber\r\n\t * @param  {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\t// Validate `countryOrCountryCallingCode` argument.\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('First argument is required')\r\n\t\t}\r\n\t\tif (typeof countryOrCountryCallingCode !== 'string') {\r\n\t\t\tthrow new TypeError('First argument must be a string')\r\n\t\t}\r\n\r\n\t\t// In case of public API use: `constructor(number, metadata)`.\r\n\t\t// Transform the arguments from `constructor(number, metadata)` to\r\n\t\t// `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\r\n\t\tif (countryOrCountryCallingCode[0] === '+' && !nationalNumber) {\r\n\t\t\tthrow new TypeError('`metadata` argument not passed')\r\n\t\t}\r\n\t\tif (isObject(nationalNumber) && isObject(nationalNumber.countries)) {\r\n\t\t\tmetadata = nationalNumber\r\n\t\t\tconst e164Number = countryOrCountryCallingCode\r\n\t\t\tif (!E164_NUMBER_REGEXP.test(e164Number)) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits')\r\n\t\t\t}\r\n\t\t\tconst { countryCallingCode, number } = extractCountryCallingCode(e164Number, undefined, undefined, undefined, metadata)\r\n\t\t\tnationalNumber = number\r\n\t\t\tcountryOrCountryCallingCode = countryCallingCode\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: too short')\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validate `nationalNumber` argument.\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument is required')\r\n\t\t}\r\n\t\tif (typeof nationalNumber !== 'string') {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument must be a string')\r\n\t\t}\r\n\r\n\t\t// Validate `metadata` argument.\r\n\t\tvalidateMetadata(metadata)\r\n\r\n\t\t// Initialize properties.\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\r\n\t\t// so that it doesn't clutter the console output of Node.js.\r\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\r\n\t\t// it would output the whole internal structure of the `metadata` object.\r\n\t\tthis.getMetadata = () => metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.getMetadata())\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.getMetadata())\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}\r\n\r\nconst E164_NUMBER_REGEXP = /^\\+\\d+$/","/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\r\n\r\nimport {\r\n  MAX_LENGTH_FOR_NSN,\r\n  MAX_LENGTH_COUNTRY_CODE,\r\n  VALID_PUNCTUATION\r\n} from './constants.js'\r\n\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport RegExpCache from './findNumbers/RegExpCache.js'\r\n\r\nimport {\r\n\tlimit,\r\n\ttrimAfterFirstMatch\r\n} from './findNumbers/util.js'\r\n\r\nimport {\r\n\t_pL,\r\n\t_pN,\r\n\tpZ,\r\n\tPZ,\r\n\tpNd\r\n} from './findNumbers/utf-8.js'\r\n\r\nimport Leniency from './findNumbers/Leniency.js'\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'\r\n\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nimport parsePhoneNumber from './parsePhoneNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nconst EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching')\r\n\r\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\r\nconst INNER_MATCHES =\r\n[\r\n\t// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\r\n\t'/+(.*)',\r\n\r\n\t// Note that the bracket here is inside the capturing group, since we consider it part of the\r\n\t// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\r\n\t'(\\\\([^(]*)',\r\n\r\n\t// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\r\n\t// We require a space on either side of the hyphen for it to be considered a separator.\r\n\t`(?:${pZ}-|-${pZ})${pZ}*(.+)`,\r\n\r\n\t// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\r\n\t// possible that it's supposed to be used to break two numbers without spaces, and we haven't\r\n\t// seen many instances of it used within a number.\r\n\t`[\\u2012-\\u2015\\uFF0D]${pZ}*(.+)`,\r\n\r\n\t// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\r\n\t`\\\\.+${pZ}*([^.]+)`,\r\n\r\n\t// Breaks on space - e.g. \"3324451234 8002341234\"\r\n\t`${pZ}+(${PZ}+)`\r\n]\r\n\r\n// Limit on the number of leading (plus) characters.\r\nconst leadLimit = limit(0, 2)\r\n\r\n// Limit on the number of consecutive punctuation characters.\r\nconst punctuationLimit = limit(0, 4)\r\n\r\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\r\nconst digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE\r\n\r\n// Limit on the number of blocks separated by punctuation.\r\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\r\nconst blockLimit = limit(0, digitBlockLimit)\r\n\r\n/* A punctuation sequence allowing white space. */\r\nconst punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit\r\n\r\n// A digits block without punctuation.\r\nconst digitSequence = pNd + limit(1, digitBlockLimit)\r\n\r\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n * <ul>\r\n *   <li>All captures are limited in order to place an upper bound to the text matched by the\r\n *       pattern.\r\n * <ul>\r\n *   <li>Leading punctuation / plus signs are limited.\r\n *   <li>Consecutive occurrences of punctuation are limited.\r\n *   <li>Number of digits is limited.\r\n * </ul>\r\n *   <li>No whitespace is allowed at the start or end.\r\n *   <li>No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n * </ul>\r\n */\r\nconst PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit\r\n\t+ digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit\r\n\t+ '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// We remove all characters that are not alpha or numerical characters.\r\n// The hash character is retained here, as it may signify\r\n// the previous block was an extension.\r\n//\r\n// // Don't know what does '&&' mean here.\r\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\r\n//\r\nconst UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`)\r\n\r\n// const NON_DIGITS_PATTERN = /(\\D+)/\r\n\r\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1\r\n\r\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n * <p>Vanity numbers (phone numbers using alphabetic digits such as <tt>1-800-SIX-FLAGS</tt> are\r\n * not found.\r\n *\r\n * <p>This class is not thread-safe.\r\n */\r\nexport default class PhoneNumberMatcher\r\n{\r\n  /**\r\n   * @param {string} text — the character sequence that we will search, null for no text.\r\n   * @param {'POSSIBLE'|'VALID'|'STRICT_GROUPING'|'EXACT_GROUPING'} [options.leniency] — The leniency to use when evaluating candidate phone numbers. See `source/findNumbers/Leniency.js` for more details.\r\n   * @param {number} [options.maxTries] — The maximum number of invalid numbers to try before giving up on the text. This is to cover degenerate cases where the text has a lot of false positives in it. Must be >= 0.\r\n   */\r\n  constructor(text = '', options = {}, metadata)\r\n  {\r\n    options = {\r\n      v2: options.v2,\r\n      defaultCallingCode: options.defaultCallingCode,\r\n      defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\r\n      // Here it should've assigned a default value only if `options.leniency === undefined`.\r\n      leniency: options.leniency || (options.extended ? 'POSSIBLE' : 'VALID'),\r\n      // Here it should've assigned a default value only if `options.maxTries === undefined`.\r\n      maxTries: options.maxTries || MAX_SAFE_INTEGER\r\n    }\r\n\r\n    // Validate `leniency`.\r\n\t\t// if (!options.leniency) {\r\n\t\t// \tthrow new TypeError('`leniency` is required')\r\n\t\t// }\r\n\t\tif (!Leniency[options.leniency]) {\r\n\t\t\tthrow new TypeError(`Unknown leniency: \"${options.leniency}\"`)\r\n\t\t}\r\n    if (options.leniency !== 'POSSIBLE' && options.leniency !== 'VALID') {\r\n      throw new TypeError(`Invalid \\`leniency\\`: \"${options.leniency}\". Supported values: \"POSSIBLE\", \"VALID\".`)\r\n    }\r\n\r\n    // Validate `maxTries`.\r\n\t\tif (options.maxTries < 0) {\r\n\t\t\tthrow new TypeError('`maxTries` must be `>= 0`')\r\n\t\t}\r\n\r\n\t\tthis.text = text\r\n\t\tthis.options = options\r\n    this.metadata = metadata\r\n\r\n\t\t// The degree of phone number validation.\r\n\t\tthis.leniency = Leniency[options.leniency]\r\n\r\n\t\t/** The maximum number of retries after matching an invalid number. */\r\n\t\tthis.maxTries = options.maxTries\r\n\r\n    // Compile regular expressions.\r\n\t\tthis.PATTERN = new RegExp(PATTERN, 'ig')\r\n    this.INNER_MATCHES = INNER_MATCHES.map(pattern => new RegExp(pattern, 'g'))\r\n\r\n    /** The iteration tristate. */\r\n    this.state = 'NOT_READY'\r\n\r\n    /** The next index to start searching at. Undefined in {@link State#DONE}. */\r\n    this.searchIndex = 0\r\n\r\n    // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n    // countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n    // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n    // that use-case won't have a lot of benefit.\r\n    this.regExpCache = new RegExpCache(32)\r\n  }\r\n\r\n  /**\r\n   * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n   * that represents a phone number. Returns the next match, null if none was found.\r\n   *\r\n   * @param index  the search index to start searching at\r\n   * @return  the phone number match found, null if none can be found\r\n   */\r\n\tfind(index) {\r\n\t\t// Reset the regular expression.\r\n\t\tthis.PATTERN.lastIndex = index\r\n\r\n\t\tlet matches\r\n\t\twhile ((this.maxTries > 0) && (matches = this.PATTERN.exec(this.text)) !== null) {\r\n\t\t\tlet candidate = matches[0]\r\n\t\t\tconst offset = matches.index\r\n\r\n\t\t\tcandidate = parsePreCandidate(candidate)\r\n\r\n\t\t\tif (isValidPreCandidate(candidate, offset, this.text)) {\r\n\t\t\t\tconst match =\r\n\t\t\t\t\t// Try to come up with a valid match given the entire candidate.\r\n\t\t\t\t\tthis.parseAndVerify(candidate, offset, this.text)\r\n\t\t\t\t\t// If that failed, try to find an \"inner match\" -\r\n\t\t\t\t\t// there might be a phone number within this candidate.\r\n\t\t\t\t\t|| this.extractInnerMatch(candidate, offset, this.text)\r\n\r\n\t\t\t\tif (match) {\r\n\t\t\t\t\tif (this.options.v2) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tstartsAt: match.startsAt,\r\n\t\t\t\t\t\t\tendsAt: match.endsAt,\r\n\t\t\t\t\t\t\tnumber: match.phoneNumber\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n            const { phoneNumber } = match\r\n\r\n            const result = {\r\n              startsAt: match.startsAt,\r\n              endsAt: match.endsAt,\r\n              phone: phoneNumber.nationalNumber\r\n            }\r\n\r\n            if (phoneNumber.country) {\r\n              /* istanbul ignore if */\r\n              if (USE_NON_GEOGRAPHIC_COUNTRY_CODE && country === '001') {\r\n                result.countryCallingCode = phoneNumber.countryCallingCode\r\n              } else {\r\n                result.country = phoneNumber.country\r\n              }\r\n            } else {\r\n              result.countryCallingCode = phoneNumber.countryCallingCode\r\n            }\r\n\r\n            if (phoneNumber.ext) {\r\n              result.ext = phoneNumber.ext\r\n            }\r\n\r\n            return result\r\n          }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.maxTries--\r\n\t\t}\r\n\t}\r\n\r\n  /**\r\n   * Attempts to extract a match from `substring`\r\n   * if the substring itself does not qualify as a match.\r\n   */\r\n  extractInnerMatch(substring, offset, text) {\r\n    for (const innerMatchRegExp of this.INNER_MATCHES) {\r\n      // Reset regular expression.\r\n      innerMatchRegExp.lastIndex = 0\r\n\r\n      let isFirstMatch = true\r\n      let candidateMatch\r\n      while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\r\n        if (isFirstMatch) {\r\n          // We should handle any group before this one too.\r\n          const candidate = trimAfterFirstMatch(\r\n            UNWANTED_END_CHAR_PATTERN,\r\n            substring.slice(0, candidateMatch.index)\r\n          )\r\n\r\n          const match = this.parseAndVerify(candidate, offset, text)\r\n\r\n          if (match) {\r\n            return match\r\n          }\r\n\r\n          this.maxTries--\r\n          isFirstMatch = false\r\n        }\r\n\r\n        const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1])\r\n\r\n        // Java code does `groupMatcher.start(1)` here,\r\n        // but there's no way in javascript to get a `candidate` start index,\r\n        // therefore resort to using this kind of an approximation.\r\n        // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\r\n        // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\r\n        const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index)\r\n\r\n        const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text)\r\n        if (match) {\r\n          return match\r\n        }\r\n\r\n        this.maxTries--\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Parses a phone number from the `candidate` using `parse` and\r\n   * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n   * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n   *\r\n   * @param candidate  the candidate match\r\n   * @param offset  the offset of {@code candidate} within {@link #text}\r\n   * @return  the parsed and validated phone number match, or null\r\n   */\r\n  parseAndVerify(candidate, offset, text) {\r\n    if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\r\n      return\r\n  \t}\r\n\r\n    const phoneNumber = parsePhoneNumber(\r\n      candidate,\r\n      {\r\n        extended: true,\r\n        defaultCountry: this.options.defaultCountry,\r\n        defaultCallingCode: this.options.defaultCallingCode\r\n      },\r\n      this.metadata\r\n    )\r\n\r\n    if (!phoneNumber) {\r\n      return\r\n    }\r\n\r\n    if (!phoneNumber.isPossible()) {\r\n      return\r\n    }\r\n\r\n    if (this.leniency(phoneNumber, {\r\n      candidate,\r\n      defaultCountry: this.options.defaultCountry,\r\n      metadata: this.metadata,\r\n      regExpCache: this.regExpCache\r\n    })) {\r\n      return {\r\n        startsAt: offset,\r\n        endsAt: offset + candidate.length,\r\n        phoneNumber\r\n      }\r\n    }\r\n  }\r\n\r\n  hasNext()\r\n  {\r\n    if (this.state === 'NOT_READY')\r\n    {\r\n      this.lastMatch = this.find(this.searchIndex)\r\n\r\n      if (this.lastMatch)\r\n      {\r\n        this.searchIndex = this.lastMatch.endsAt\r\n        this.state = 'READY'\r\n      }\r\n      else\r\n      {\r\n        this.state = 'DONE'\r\n      }\r\n    }\r\n\r\n    return this.state === 'READY'\r\n  }\r\n\r\n  next()\r\n  {\r\n    // Check the state and find the next match as a side-effect if necessary.\r\n    if (!this.hasNext())\r\n    {\r\n      throw new Error('No next element')\r\n    }\r\n\r\n    // Don't retain that memory any longer than necessary.\r\n    const result = this.lastMatch\r\n    this.lastMatch = null\r\n    this.state = 'NOT_READY'\r\n    return result\r\n  }\r\n}","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\r\n\r\nclass Node {\r\n  constructor(key, value, next = null, prev = null) {\r\n    this.key = key;\r\n    this.value = value;\r\n    this.next = next;\r\n    this.prev = prev;\r\n  }\r\n}\r\n\r\nexport default class LRUCache {\r\n  //set default limit of 10 if limit is not passed.\r\n  constructor(limit = 10) {\r\n    this.size = 0;\r\n    this.limit = limit;\r\n    this.head = null;\r\n    this.tail = null;\r\n    this.cache = {};\r\n  }\r\n\r\n  // Write Node to head of LinkedList\r\n  // update cache with Node key and Node reference\r\n  put(key, value){\r\n    this.ensureLimit();\r\n\r\n    if(!this.head){\r\n      this.head = this.tail = new Node(key, value);\r\n    }else{\r\n      const node = new Node(key, value, this.head);\r\n      this.head.prev = node;\r\n      this.head = node;\r\n    }\r\n\r\n    //Update the cache map\r\n    this.cache[key] = this.head;\r\n    this.size++;\r\n  }\r\n\r\n  // Read from cache map and make that node as new Head of LinkedList\r\n  get(key){\r\n    if(this.cache[key]){\r\n      const value = this.cache[key].value;\r\n\r\n      // node removed from it's position and cache\r\n      this.remove(key)\r\n      // write node again to the head of LinkedList to make it most recently used\r\n      this.put(key, value);\r\n\r\n      return value;\r\n    }\r\n\r\n    console.log(`Item not available in cache for key ${key}`);\r\n  }\r\n\r\n  ensureLimit(){\r\n    if(this.size === this.limit){\r\n      this.remove(this.tail.key)\r\n    }\r\n  }\r\n\r\n  remove(key){\r\n    const node = this.cache[key];\r\n\r\n    if(node.prev !== null){\r\n      node.prev.next = node.next;\r\n    }else{\r\n      this.head = node.next;\r\n    }\r\n\r\n    if(node.next !== null){\r\n      node.next.prev = node.prev;\r\n    }else{\r\n      this.tail = node.prev\r\n    }\r\n\r\n    delete this.cache[key];\r\n    this.size--;\r\n  }\r\n\r\n  clear() {\r\n    this.head = null;\r\n    this.tail = null;\r\n    this.size = 0;\r\n    this.cache = {};\r\n  }\r\n\r\n  // // Invokes the callback function with every node of the chain and the index of the node.\r\n  // forEach(fn) {\r\n  //   let node = this.head;\r\n  //   let counter = 0;\r\n  //   while (node) {\r\n  //     fn(node, counter);\r\n  //     node = node.next;\r\n  //     counter++;\r\n  //   }\r\n  // }\r\n\r\n  // // To iterate over LRU with a 'for...of' loop\r\n  // *[Symbol.iterator]() {\r\n  //   let node = this.head;\r\n  //   while (node) {\r\n  //     yield node;\r\n  //     node = node.next;\r\n  //   }\r\n  // }\r\n}","import parseDigits from '../helpers/parseDigits.js'\r\nimport matchPhoneNumberStringAgainstPhoneNumber from './matchPhoneNumberStringAgainstPhoneNumber.js'\r\nimport Metadata from '../metadata.js'\r\nimport getCountryByCallingCode from '../helpers/getCountryByCallingCode.js'\r\nimport { chooseFormatForNumber } from '../format.js'\r\n\r\nimport {\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\r\nexport default\r\n{\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n\t */\r\n\tPOSSIBLE(phoneNumber, { candidate, metadata })\r\n\t{\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\" and \"valid\".\r\n\t * Numbers written in national format must have their national-prefix\r\n\t * present if it is usually written for a number of this type.\r\n\t */\r\n\tVALID(phoneNumber, { candidate, defaultCountry, metadata })\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata)\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\t// Skipped for simplicity.\r\n\t\t// return isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and\r\n\t * are grouped in a possible way for this locale. For example, a US number written as\r\n\t * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol in the national significant number\r\n\t * are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use,\r\n\t * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tSTRICT_GROUPING(phoneNumber, { candidate, defaultCountry, metadata, regExpCache })\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\r\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\r\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tphoneNumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsRemainGrouped,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and are grouped in the same way\r\n\t * that we would have formatted it, or as a single block.\r\n\t * For example, a US number written as \"650 2530000\" is not accepted\r\n\t * at this leniency level, whereas \"650 253 0000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use, email the discussion group\r\n\t * libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tEXACT_GROUPING(phoneNumber, { candidate, defaultCountry, metadata, regExpCache })\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\r\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\r\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tphoneNumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsAreExactlyPresent,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t}\r\n}\r\n\r\nfunction containsOnlyValidXChars(phoneNumber, candidate, metadata)\r\n{\r\n\t// The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\r\n\t// national significant number or (2) an extension sign, in which case they always precede the\r\n\t// extension number. We assume a carrier code is more than 1 digit, so the first case has to\r\n\t// have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\r\n\t// or 'X'. We ignore the character if it appears as the last character of the string.\r\n\tfor (let index = 0; index < candidate.length - 1; index++)\r\n\t{\r\n\t\tconst charAtIndex = candidate.charAt(index)\r\n\r\n\t\tif (charAtIndex === 'x' || charAtIndex === 'X')\r\n\t\t{\r\n\t\t\tconst charAtNextIndex = candidate.charAt(index + 1)\r\n\r\n\t\t\tif (charAtNextIndex === 'x' || charAtNextIndex === 'X')\r\n\t\t\t{\r\n\t\t\t\t// This is the carrier code case, in which the 'X's always precede the national\r\n\t\t\t\t// significant number.\r\n\t\t\t\tindex++\r\n\t\t\t\tif (matchPhoneNumberStringAgainstPhoneNumber(candidate.substring(index), phoneNumber, metadata) !== 'NSN_MATCH')\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t\t// This is the extension sign case, in which the 'x' or 'X' should always precede the\r\n\t\t\t\t// extension number.\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconst ext = parseDigits(candidate.substring(index))\r\n\t\t\t\tif (ext) {\r\n\t\t\t\t\tif (phoneNumber.ext !== ext)  {\r\n\t\t\t\t\t\treturn false\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (phoneNumber.ext) {\r\n\t\t\t\t\t\treturn false\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nfunction isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata: _metadata })\r\n{\r\n\t// First, check how we deduced the country code. If it was written in international format, then\r\n\t// the national prefix is not required.\r\n\tif (phoneNumber.__countryCallingCodeSource !== 'FROM_DEFAULT_COUNTRY')\r\n\t{\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst metadata = new Metadata(_metadata)\r\n\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\r\n\tconst phoneNumberRegion = phoneNumber.country || getCountryByCallingCode(phoneNumber.countryCallingCode, {\r\n\t\tnationalNumber: phoneNumber.nationalNumber,\r\n\t\tmetadata\r\n\t})\r\n\r\n\t// Check if a national prefix should be present when formatting this number.\r\n\tconst nationalNumber = phoneNumber.nationalNumber\r\n\tconst format = chooseFormatForNumber(metadata.numberingPlan.formats(), nationalNumber)\r\n\r\n\t// To do this, we check that a national prefix formatting rule was present\r\n\t// and that it wasn't just the first-group symbol ($1) with punctuation.\r\n\tif (format.nationalPrefixFormattingRule())\r\n\t{\r\n\t\tif (metadata.numberingPlan.nationalPrefixIsOptionalWhenFormattingInNationalFormat())\r\n\t\t{\r\n\t\t\t// The national-prefix is optional in these cases, so we don't need to check if it was present.\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tif (!format.usesNationalPrefix())\r\n\t\t{\r\n\t\t\t// National Prefix not needed for this number.\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\treturn Boolean(phoneNumber.nationalPrefix)\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nexport function containsMoreThanOneSlashInNationalNumber(phoneNumber, candidate)\r\n{\r\n\tconst firstSlashInBodyIndex = candidate.indexOf('/')\r\n\tif (firstSlashInBodyIndex < 0)\r\n\t{\r\n\t\t// No slashes, this is okay.\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Now look for a second one.\r\n\tconst secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1)\r\n\tif (secondSlashInBodyIndex < 0)\r\n\t{\r\n\t\t// Only one slash, this is okay.\r\n\t\treturn false\r\n\t}\r\n\r\n\t// If the first slash is after the country calling code, this is permitted.\r\n\tconst candidateHasCountryCode =\r\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITH_PLUS_SIGN' ||\r\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITHOUT_PLUS_SIGN'\r\n\r\n\tif (candidateHasCountryCode && parseDigits(candidate.substring(0, firstSlashInBodyIndex)) === phoneNumber.countryCallingCode)\r\n\t{\r\n\t\t// Any more slashes and this is illegal.\r\n\t\treturn candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nfunction checkNumberGroupingIsValid(\r\n\tnumber,\r\n\tcandidate,\r\n\tmetadata,\r\n\tcheckGroups,\r\n\tregExpCache\r\n) {\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tconst normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */)\r\n\tlet formattedNumberGroups = getNationalNumberGroups(metadata, number, null)\r\n\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n\t\treturn true\r\n\t}\r\n\r\n\t// If this didn't pass, see if there are any alternate formats that match, and try them instead.\r\n\tconst alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode())\r\n\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\r\n\tif (alternateFormats) {\r\n\t\tfor (const alternateFormat of alternateFormats.numberFormats()) {\r\n\t\t\tif (alternateFormat.leadingDigitsPatterns().length > 0) {\r\n\t\t\t\t// There is only one leading digits pattern for alternate formats.\r\n\t\t\t\tconst leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0])\r\n\t\t\t\tif (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\r\n\t\t\t\t\t// Leading digits don't match; try another one.\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tformattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat)\r\n\t\t\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn false\r\n}\r\n\r\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\r\nfunction getNationalNumberGroups(\r\n\tmetadata,\r\n\tnumber,\r\n\tformattingPattern\r\n) {\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tif (formattingPattern) {\r\n\t\t// We format the NSN only, and split that according to the separator.\r\n\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\t\treturn util.formatNsnUsingPattern(nationalSignificantNumber,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformattingPattern, 'RFC3966', metadata).split('-')\r\n\t}\r\n\r\n\t// This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\r\n\tconst rfc3966Format = formatNumber(number, 'RFC3966', metadata)\r\n\r\n\t// We remove the extension part from the formatted string before splitting it into different\r\n\t// groups.\r\n\tlet endIndex = rfc3966Format.indexOf(';')\r\n\tif (endIndex < 0) {\r\n\t\tendIndex = rfc3966Format.length\r\n\t}\r\n\r\n\t// The country-code will have a '-' following it.\r\n\tconst startIndex = rfc3966Format.indexOf('-') + 1\r\n\treturn rfc3966Format.slice(startIndex, endIndex).split('-')\r\n}\r\n\r\nfunction allNumberGroupsAreExactlyPresent\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tconst candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN)\r\n\r\n\t// Set this to the last group, skipping it if the number has an extension.\r\n\tlet candidateNumberGroupIndex =\r\n\t\t\tnumber.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1\r\n\r\n\t// First we check if the national significant number is formatted as a block.\r\n\t// We use contains and not equals, since the national significant number may be present with\r\n\t// a prefix such as a national number prefix, or the country code itself.\r\n\tif (candidateGroups.length == 1\r\n\t\t\t|| candidateGroups[candidateNumberGroupIndex].contains(\r\n\t\t\t\t\tutil.getNationalSignificantNumber(number)))\r\n\t{\r\n\t\treturn true\r\n\t}\r\n\r\n\t// Starting from the end, go through in reverse, excluding the first group, and check the\r\n\t// candidate and number groups are the same.\r\n\tlet formattedNumberGroupIndex = (formattedNumberGroups.length - 1)\r\n\twhile (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0)\r\n\t{\r\n\t\tif (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex])\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tformattedNumberGroupIndex--\r\n\t\tcandidateNumberGroupIndex--\r\n\t}\r\n\r\n\t// Now check the first group. There may be a national prefix at the start, so we only check\r\n\t// that the candidate group ends with the formatted number group.\r\n\treturn (candidateNumberGroupIndex >= 0\r\n\t\t\t&& endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]))\r\n}\r\n\r\n\r\nfunction allNumberGroupsRemainGrouped\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tlet fromIndex = 0\r\n\tif (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t{\r\n\t\t// First skip the country code if the normalized candidate contained it.\r\n\t\tconst countryCode = String(number.getCountryCode())\r\n\t\tfromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length()\r\n\t}\r\n\r\n\t// Check each group of consecutive digits are not broken into separate groupings in the\r\n\t// {@code normalizedCandidate} string.\r\n\tfor (let i = 0; i < formattedNumberGroups.length; i++)\r\n\t{\r\n\t\t// Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\r\n\t\t// doesn't contain the consecutive digits in formattedNumberGroups[i].\r\n\t\tfromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex)\r\n\t\tif (fromIndex < 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Moves {@code fromIndex} forward.\r\n\t\tfromIndex += formattedNumberGroups[i].length()\r\n\t\tif (i == 0 && fromIndex < normalizedCandidate.length())\r\n\t\t{\r\n\t\t\t// We are at the position right after the NDC. We get the region used for formatting\r\n\t\t\t// information based on the country code in the phone number, rather than the number itself,\r\n\t\t\t// as we do not need to distinguish between different countries with the same country\r\n\t\t\t// calling code and this is faster.\r\n\t\t\tconst region = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n\t\t\tif (util.getNddPrefixForRegion(region, true) != null\r\n\t\t\t\t\t&& Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\r\n\t\t\t\t// This means there is no formatting symbol after the NDC. In this case, we only\r\n\t\t\t\t// accept the number if there is no formatting symbol at all in the number, except\r\n\t\t\t\t// for extensions. This is only important for countries with national prefixes.\r\n\t\t\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\t\t\t\treturn startsWith\r\n\t\t\t\t(\r\n\t\t\t\t\tnormalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length),\r\n\t\t\t\t\t nationalSignificantNumber\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// The check here makes sure that we haven't mistakenly already used the extension to\r\n\t// match the last group of the subscriber number. Note the extension cannot have\r\n\t// formatting in-between digits.\r\n\treturn normalizedCandidate.slice(fromIndex).contains(number.getExtension())\r\n}","import LRUCache from './LRUCache.js'\r\n\r\n// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n// that use-case won't have a lot of benefit.\r\nexport default class RegExpCache {\r\n\tconstructor(size) {\r\n\t\tthis.cache = new LRUCache(size)\r\n\t}\r\n\r\n\tgetPatternForRegExp(pattern) {\r\n\t\tlet regExp = this.cache.get(pattern)\r\n\t\tif (!regExp) {\r\n\t\t\tregExp = new RegExp('^' + pattern)\r\n\t\t\tthis.cache.put(pattern, regExp)\r\n\t\t}\r\n\t\treturn regExp\r\n\t}\r\n}","// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\nimport { PLUS_CHARS } from '../constants.js'\r\nimport { limit } from './util.js'\r\n\r\nimport {\r\n\tisLatinLetter,\r\n\tisInvalidPunctuationSymbol\r\n} from './utf-8.js'\r\n\r\nconst OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B'\r\nconst CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D'\r\nconst NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]`\r\n\r\nexport const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]`\r\n\r\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\r\nconst LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS)\r\n\r\n// Limit on the number of pairs of brackets in a phone number.\r\nconst BRACKET_PAIR_LIMIT = limit(0, 3)\r\n\r\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be.  It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\r\nconst MATCHING_BRACKETS_ENTIRE = new RegExp\r\n(\r\n\t'^'\r\n\t+ \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\"\r\n\t+ NON_PARENS + \"+\"\r\n\t+ \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT\r\n\t+ NON_PARENS + \"*\"\r\n\t+ '$'\r\n)\r\n\r\n/**\r\n * Matches strings that look like publication pages. Example:\r\n * <pre>Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).</pre>\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\r\nconst PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/\r\n\r\nexport default function isValidCandidate(candidate, offset, text, leniency)\r\n{\r\n\t// Check the candidate doesn't contain any formatting\r\n\t// which would indicate that it really isn't a phone number.\r\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\r\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\r\n\tif (leniency !== 'POSSIBLE')\r\n\t{\r\n\t\t// If the candidate is not at the start of the text,\r\n\t\t// and does not start with phone-number punctuation,\r\n\t\t// check the previous character.\r\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate))\r\n\t\t{\r\n\t\t\tconst previousChar = text[offset - 1]\r\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\r\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst lastCharIndex = offset + candidate.length\r\n\t\tif (lastCharIndex < text.length)\r\n\t\t{\r\n\t\t\tconst nextChar = text[lastCharIndex]\r\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}","// Matches strings that look like dates using \"/\" as a separator.\r\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\r\nconst SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/\r\n\r\n// Matches timestamps.\r\n// Examples: \"2012-01-02 08:00\".\r\n// Note that the reg-ex does not include the\r\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\r\nconst TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/\r\nconst TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/\r\n\r\nexport default function isValidPreCandidate(candidate, offset, text)\r\n{\r\n\t// Skip a match that is more likely to be a date.\r\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Skip potential time-stamps.\r\n\tif (TIME_STAMPS.test(candidate))\r\n\t{\r\n\t\tconst followingText = text.slice(offset + candidate.length)\r\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}","import parsePhoneNumber from '../parsePhoneNumber.js'\r\n\r\n/**\r\n * Matches a phone number object against a phone number string.\r\n * @param  {string} phoneNumberString\r\n * @param  {PhoneNumber} phoneNumber\r\n * @param  {object} metadata — Metadata JSON\r\n * @return {'INVALID_NUMBER'|'NO_MATCH'|'SHORT_NSN_MATCH'|'NSN_MATCH'|'EXACT_MATCH'}\r\n */\r\nexport default function matchPhoneNumberStringAgainstPhoneNumber(phoneNumberString, phoneNumber, metadata) {\r\n\t// Parse `phoneNumberString`.\r\n\tlet phoneNumberStringContainsCallingCode = true\r\n\tlet parsedPhoneNumber = parsePhoneNumber(phoneNumberString, metadata)\r\n\tif (!parsedPhoneNumber) {\r\n\t\t// If `phoneNumberString` didn't contain a country calling code\r\n\t\t// then substitute it with the `phoneNumber`'s country calling code.\r\n\t\tphoneNumberStringContainsCallingCode = false\r\n\t\tparsedPhoneNumber = parsePhoneNumber(phoneNumberString, { defaultCallingCode: phoneNumber.countryCallingCode }, metadata)\r\n\t}\r\n\tif (!parsedPhoneNumber) {\r\n\t\treturn 'INVALID_NUMBER'\r\n\t}\r\n\r\n\t// Check that the extensions match.\r\n\tif (phoneNumber.ext) {\r\n\t\tif (parsedPhoneNumber.ext !== phoneNumber.ext) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t} else {\r\n\t\tif (parsedPhoneNumber.ext) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check that country calling codes match.\r\n\tif (phoneNumberStringContainsCallingCode) {\r\n\t\tif (phoneNumber.countryCallingCode !== parsedPhoneNumber.countryCallingCode) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if the whole numbers match.\r\n\tif (phoneNumber.number === parsedPhoneNumber.number) {\r\n\t\tif (phoneNumberStringContainsCallingCode) {\r\n\t\t\treturn 'EXACT_MATCH'\r\n\t\t} else {\r\n\t\t\treturn 'NSN_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if one national number is a \"suffix\" of the other.\r\n\tif (\r\n\t\tphoneNumber.nationalNumber.indexOf(parsedPhoneNumber.nationalNumber) === 0 ||\r\n\t\tparsedPhoneNumber.nationalNumber.indexOf(phoneNumber.nationalNumber) === 0\r\n\t) {\r\n\t\t// \"A SHORT_NSN_MATCH occurs if there is a difference because of the\r\n\t\t//  presence or absence of an 'Italian leading zero', the presence or\r\n\t\t//  absence of an extension, or one NSN being a shorter variant of the\r\n\t\t//  other.\"\r\n\t\treturn 'SHORT_NSN_MATCH'\r\n\t}\r\n\r\n\treturn 'NO_MATCH'\r\n}","import { trimAfterFirstMatch } from './util.js'\r\n\r\n// Regular expression of characters typically used to start a second phone number for the purposes\r\n// of parsing. This allows us to strip off parts of the number that are actually the start of\r\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\r\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\r\n// extension so that the first number is parsed correctly.\r\n//\r\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\r\n//\r\nconst SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/\r\n\r\nexport default function parsePreCandidate(candidate)\r\n{\r\n\t// Check for extra numbers at the end.\r\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\r\n\t// from split notations (+41 79 123 45 67 / 68).\r\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate)\r\n}","// Javascript doesn't support UTF-8 regular expressions.\r\n// So mimicking them here.\r\n\r\n// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\r\n\r\nconst _pZ = '\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\nexport const pZ = `[${_pZ}]`\r\nexport const PZ = `[^${_pZ}]`\r\n\r\nexport const _pN = '\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\n// const pN = `[${_pN}]`\r\n\r\nconst _pNd = '\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\nexport const pNd = `[${_pNd}]`\r\n\r\nexport const _pL = '\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\r\nconst pL = `[${_pL}]`\r\nconst pL_regexp = new RegExp(pL)\r\n\r\nconst _pSc = '\\u0024\\u00A2-\\u00A5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\r\nconst pSc = `[${_pSc}]`\r\nconst pSc_regexp = new RegExp(pSc)\r\n\r\nconst _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26'\r\nconst pMn = `[${_pMn}]`\r\nconst pMn_regexp = new RegExp(pMn)\r\n\r\nconst _InBasic_Latin = '\\u0000-\\u007F'\r\nconst _InLatin_1_Supplement = '\\u0080-\\u00FF'\r\nconst _InLatin_Extended_A = '\\u0100-\\u017F'\r\nconst _InLatin_Extended_Additional = '\\u1E00-\\u1EFF'\r\nconst _InLatin_Extended_B = '\\u0180-\\u024F'\r\nconst _InCombining_Diacritical_Marks = '\\u0300-\\u036F'\r\n\r\nconst latinLetterRegexp = new RegExp\r\n(\r\n\t'[' +\r\n\t_InBasic_Latin +\r\n\t_InLatin_1_Supplement +\r\n\t_InLatin_Extended_A +\r\n\t_InLatin_Extended_Additional +\r\n\t_InLatin_Extended_B +\r\n\t_InCombining_Diacritical_Marks +\r\n\t']'\r\n)\r\n\r\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\r\nexport function isLatinLetter(letter)\r\n{\r\n\t// Combining marks are a subset of non-spacing-mark.\r\n\tif (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn latinLetterRegexp.test(letter)\r\n}\r\n\r\nexport function isInvalidPunctuationSymbol(character)\r\n{\r\n\treturn character === '%' || pSc_regexp.test(character)\r\n}","/** Returns a regular expression quantifier with an upper and lower limit. */\r\nexport function limit(lower, upper)\r\n{\r\n\tif ((lower < 0) || (upper <= 0) || (upper < lower)) {\r\n\t\tthrow new TypeError()\r\n\t}\r\n\treturn `{${lower},${upper}}`\r\n}\r\n\r\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\r\nexport function trimAfterFirstMatch(regexp, string)\r\n{\r\n\tconst index = string.search(regexp)\r\n\r\n\tif (index >= 0) {\r\n\t\treturn string.slice(0, index)\r\n\t}\r\n\r\n\treturn string\r\n}\r\n\r\nexport function startsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring) === 0\r\n}\r\n\r\nexport function endsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length\r\n}\r\n","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function findPhoneNumbersInText() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {string} format\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\t// Using ES6 \"rest spread\" syntax here didn't work with `babel`/`istanbul`\r\n\t\t// for some weird reason: this line of code would cause the code coverage\r\n\t\t// to show as not 100%. That's because `babel`/`istanbul`, for some weird reason,\r\n\t\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t\t//\r\n\t\t// options = { ...DEFAULT_OPTIONS, ...options }\r\n\t\t//\r\n\t\toptions = merge({}, DEFAULT_OPTIONS, options)\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport function chooseFormatForNumber(availableFormats, nationalNumber) {\r\n\t// Using a `for ... of` loop here didn't work with `babel`/`istanbul`:\r\n\t// for some weird reason, it showed code coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// for (const format of availableFormats) { ... }\r\n\t//\r\n\treturn pickFirstMatchingElement(availableFormats, (format) => {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\treturn matchesEntirely(nationalNumber, format.pattern())\r\n\t})\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}\r\n\r\nfunction merge(...objects) {\r\n\tlet i = 1\r\n\twhile (i < objects.length) {\r\n\t\tif (objects[i]) {\r\n\t\t\tfor (const key in objects[i]) {\r\n\t\t\t\tobjects[0][key] = objects[i][key]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn objects[0]\r\n}\r\n\r\nfunction pickFirstMatchingElement(elements, testFunction) {\r\n\tlet i = 0\r\n\twhile (i < elements.length) {\r\n\t\tif (testFunction(elements[i])) {\r\n\t\t\treturn elements[i]\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import AsYouType from './AsYouType.js'\r\n\r\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string|object} [optionsOrDefaultCountry] - A two-letter (\"ISO 3166-1 alpha-2\") country code, or an object of shape `{ defaultCountry?: string, defaultCallingCode?: string }`.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\r\nexport default function formatIncompletePhoneNumber(value, optionsOrDefaultCountry, metadata) {\r\n\tif (!metadata) {\r\n\t\tmetadata = optionsOrDefaultCountry\r\n\t\toptionsOrDefaultCountry = undefined\r\n\t}\r\n\treturn new AsYouType(optionsOrDefaultCountry, metadata).input(value)\r\n}","import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}","// Deprecated. Import from 'metadata.js' directly instead.\r\nexport { getCountryCallingCode as default } from './metadata.js'","import PhoneNumber from './PhoneNumber.js'\r\n\r\nexport default function getExampleNumber(country, examples, metadata) {\r\n\tif (examples[country]) {\r\n\t\treturn new PhoneNumber(country, examples[country], metadata)\r\n\t}\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param  {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param  {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import Metadata from '../metadata.js'\r\nimport mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, country, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, country, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for a certain `country` based on the number length.\r\n//\r\n// This function is not supported by metadata generated with ancient versions of\r\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\r\n//\r\n// There was also a known issue with `checkNumberLength()` function:\r\n// if a number is possible only in a certain `country` among several `countries`\r\n// that share the same \"country calling code\", that function would check\r\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\r\n// and would not check if it's actually be possible in the speciifc `country`.\r\n//\r\n// For example, \"+1310xxxx\" numbers are valid in Canada.\r\n// However, they are not possible in the US due to being too short.\r\n// Since Canada and the US share the same country calling code — \"+1\" —\r\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\r\n//\r\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\r\n// but at the same time `isPossible()` could output `false`, which was contradictory.\r\n//\r\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\r\n//\r\n// The solution suggested by Google was implemented: an optional `country` argument\r\n// was added to `checkNumberLength()` function. If present, that `country` will be used\r\n// to check phone number length for that specific `country` rather than the \"main\" country\r\n// for the shared \"country calling code\".\r\n//\r\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\r\n\t// If the exact `country` is specified, it's no necessarily already selected in `metadata`.\r\n\t// Most likely, in cases when there're multiple countries corresponding to the same\r\n\t// \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\r\n\tif (country) {\r\n\t\tmetadata = new Metadata(metadata.metadata)\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t}\r\n\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t  \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t     + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t     + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t    + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t    + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t    + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t       + explicitExtn + \"|\"\r\n\t       + ambiguousExtn + \"|\"\r\n\t       + americanStyleExtnWithSuffix + \"|\"\r\n\t       + autoDiallingExtn + \"|\"\r\n\t       + onlyCommasExtn;\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param  {string} number — Phone number digits (possibly with a `+`).\r\n * @param  {string} [country] — Country.\r\n * @param  {string} [defaultCountry] — Default country.\r\n * @param  {string} [defaultCallingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', null, 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', null, 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country || defaultCountry, defaultCallingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || defaultCountry || defaultCallingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tdefaultCountry,\r\n\t\t\t\t\tdefaultCallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// `number` can only be international at this point.\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n//  // Default value returned if this is not set, because the phone number was\r\n//  // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n//  // return false if this is the case.\r\n//  UNSPECIFIED = 0;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading \"+\",\r\n//  // e.g. the French number \"+33 1 42 68 53 00\".\r\n//  FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading IDD,\r\n//  // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n//  FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n//  // The country_code is derived based on a phone number without a leading\r\n//  // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n//  // supplied as France.\r\n//  FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n//  // The country_code is derived NOT based on the phone number itself, but\r\n//  // from the defaultCountry parameter provided in the parsing function by the\r\n//  // clients. This happens mostly for numbers written in the national format\r\n//  // (without country code). For example, this would be set when parsing the\r\n//  // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n//  // France.\r\n//  FROM_DEFAULT_COUNTRY = 20;\r\n// }","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param  {string} number — Phone number digits.\r\n * @param  {string} [country] — Exact country of the phone number.\r\n * @param  {string} [defaultCountry]\r\n * @param  {string} [defaultCallingCode]\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country || defaultCountry\r\n\t\t? getCountryCallingCode(country || defaultCountry, metadata)\r\n\t\t: defaultCallingCode\r\n\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country || defaultCountry, countryCallingCode)\r\n\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) &&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, country, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { number }\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param  {string} numberToParse\r\n * @param  {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryByCallingCode from './getCountryByCallingCode.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param  {string} number — Complete phone number digits.\r\n * @param  {string?} country — Country, if known.\r\n * @param  {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, country, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.numberingPlan.possibleLengths()) {\r\n\t\t\t// If an exact `country` is not specified, attempt to detect it from the assumed national number.\r\n\t\t\tif (!country) {\r\n\t\t\t\tcountry = getCountryByCallingCode(metadata.numberingPlan.callingCode(), {\r\n\t\t\t\t\tnationalNumber,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, country, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, country, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used  in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n   return {\r\n   \tnationalNumber: number\r\n   }\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n  VALID_DIGITS,\r\n  // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS +  ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Returns the exact country for the `nationalNumber`\r\n// that belongs to the specified \"country calling code\".\r\nexport default function getCountryByCallingCode(callingCode, {\r\n\tnationalNumber: nationalPhoneNumber,\r\n\tmetadata\r\n}) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(nationalPhoneNumber, {\r\n\t\tcountries: possibleCountries,\r\n\t\tmetadata: metadata.metadata\r\n\t})\r\n}","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\n// Returns the exact country that the `nationalPhoneNumber` belongs to\r\n// in cases of ambiguity, i.e. when multiple countries share the same \"country calling code\".\r\nexport default function getCountryByNationalNumber(nationalPhoneNumber, {\r\n\tcountries,\r\n\tmetadata\r\n}) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// const matchingCountries = []\r\n\r\n\tfor (const country of countries) {\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\r\n\t\t// because of the intended use of that feature.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\t// When multiple countries share the same \"country calling code\",\r\n\t\t\t// type patterns aren't guaranteed to be unique among them.\r\n\t\t\t// For example, both `US` and `CA` have the same pattern for `toll_free` numbers.\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417147572\r\n\t\t\t//\r\n\t\t\t// That means that this `if` condition could be `true` for multiple countries from the list.\r\n\t\t\t// Currently, it just returns the first one, which is also the \"main\" country for the \"country calling code\".\r\n\t\t\t// In an example with `toll_free` numbers above, `\"US\"` would be returned even though\r\n\t\t\t// it could as well be `\"CA\"`.\r\n\t\t\t//\r\n\t\t\t// There was also a time when this attempted to be overly smart\r\n\t\t\t// and kept track of all such multiple matching countries\r\n\t\t\t// and then picked the one that matched the `defaultCountry`, if provided.\r\n\t\t\t// For example, with `toll_free` numbers above, and with `defaultCountry: \"CA\"`,\r\n\t\t\t// it would've returned `\"CA\"` instead of `\"US\"`.\r\n\t\t\t// Later it turned out that such \"overly smart\" behavior turned out to be just confusing,\r\n\t\t\t// so this \"overly smart\" country detection was reverted to returning the \"main\" country\r\n\t\t\t// for the \"country calling code\".\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\r\n\t\t\t//\r\n\t\t\treturn country\r\n\t\t\t//\r\n\t\t\t// The \"overly smart\" behavior code:\r\n\t\t\t//\r\n\t\t\t// if (defaultCountry) {\r\n\t\t\t// \tif (country === defaultCountry) {\r\n\t\t\t// \t\treturn country\r\n\t\t\t// \t} else {\r\n\t\t\t// \t\tmatchingCountries.push(country)\r\n\t\t\t// \t}\r\n\t\t\t// } else {\r\n\t\t\t// \treturn country\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\r\n\t// // Return the first (\"main\") one of the `matchingCountries`.\r\n\t// if (matchingCountries.length > 0) {\r\n\t// \treturn matchingCountries[0]\r\n\t// }\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returns an empty object — `{}` —\r\n\t// that means that the phone number is malformed,\r\n\t// so it can't possibly be valid.\r\n\tif (!input.country && !input.countryCallingCode) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param  {string} callingCode — Calling code.\r\n * @param  {string} nationalNumber — National (significant) number.\r\n * @param  {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","const objectConstructor = {}.constructor;\r\n\r\nexport default function isObject(object) {\r\n  return object !== undefined && object !== null && object.constructor === objectConstructor;\r\n}\r\n","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n//  Regular expression of viable phone numbers. This is location independent.\r\n//  Checks we have at least three leading digits, and only valid punctuation,\r\n//  alpha characters and digits in the phone number. Does not include extension\r\n//  data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n//  used as a placeholder for carrier codes, for example in Brazilian phone\r\n//  numbers. We also allow multiple '+' characters at the start.\r\n//\r\n//  Corresponds to the following:\r\n//  [digits]{minLengthNsn}|\r\n//  plus_sign*\r\n//  (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n//  The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n//  they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n//  The second expression restricts the number of digits to three or more, but\r\n//  then allows them to be in international form, and to have alpha-characters\r\n//  and punctuation. We split up the two reg-exes here and combine them when\r\n//  creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n//  with ^ and append $ to each branch.\r\n//\r\n//  \"Note VALID_PUNCTUATION starts with a -,\r\n//   so must be the first in the range\" (c) Google devs.\r\n//  (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regularExpressionText) {\r\n\t// If the assigning of the `''` default value is moved to the arguments above,\r\n\t// the code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regularExpressionText + ')$').test(text)\r\n}","/**\r\n * Merges two arrays.\r\n * @param  {*} a\r\n * @param  {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9'  // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, input.country, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, country, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isValidPhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isValid() || false\r\n}","import parse from '../parse.js'\r\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from '../helpers/isViablePhoneNumber.js'\r\n\r\nimport parsePreCandidate from '../findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from '../findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate from '../findNumbers/isValidCandidate.js'\r\n\r\nimport {\r\n\t// PLUS_CHARS,\r\n\tVALID_PUNCTUATION,\r\n\t// VALID_DIGITS,\r\n\tWHITESPACE\r\n} from '../constants.js'\r\n\r\nconst WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+')\r\nconst PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$')\r\n\r\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param  {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\r\nexport default class PhoneNumberSearch {\r\n\tconstructor(text, options, metadata) {\r\n\t\tthis.text = text\r\n\t\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t\t// code coverage would decrease for some weird reason.\r\n\t\tthis.options = options || {}\r\n\t\tthis.metadata = metadata\r\n\r\n\t\t// Iteration tristate.\r\n\t\tthis.state = 'NOT_READY'\r\n\r\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig')\r\n\t}\r\n\r\n\tfind() {\r\n\t\tconst matches = this.regexp.exec(this.text)\r\n\t\tif (!matches) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tlet number = matches[0]\r\n\t\tlet startsAt = matches.index\r\n\r\n\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '')\r\n\t\tstartsAt += matches[0].length - number.length\r\n\t\t// Fixes not parsing numbers with whitespace in the end.\r\n\t\t// Also fixes not parsing numbers with opening parentheses in the end.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '')\r\n\r\n\t\tnumber = parsePreCandidate(number)\r\n\r\n\t\tconst result = this.parseCandidate(number, startsAt)\r\n\t\tif (result) {\r\n\t\t\treturn result\r\n\t\t}\r\n\r\n\t\t// Tail recursion.\r\n\t\t// Try the next one if this one is not a valid phone number.\r\n\t\treturn this.find()\r\n\t}\r\n\r\n\tparseCandidate(number, startsAt) {\r\n\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Don't parse phone numbers which are non-phone numbers\r\n\t\t// due to being part of something else (e.g. a UUID).\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\r\n\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\r\n\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// // Prepend any opening brackets left behind by the\r\n\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\r\n\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\r\n\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\r\n\t\t// if (full_number_starts_at >= 0) {\r\n\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\r\n\t\t// \tstartsAt = full_number_starts_at\r\n\t\t// }\r\n\t\t//\r\n\t\t// this.searching_from = matches.lastIndex\r\n\r\n\t\tconst result = parse(number, this.options, this.metadata)\r\n\t\tif (!result.phone) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tresult.startsAt = startsAt\r\n\t\tresult.endsAt = startsAt + number.length\r\n\t\treturn result\r\n\t}\r\n\r\n\thasNext() {\r\n\t\tif (this.state === 'NOT_READY') {\r\n\t\t\tthis.last_match = this.find()\r\n\t\t\tif (this.last_match) {\r\n\t\t\t\tthis.state = 'READY'\r\n\t\t\t} else {\r\n\t\t\t\tthis.state = 'DONE'\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.state === 'READY'\r\n\t}\r\n\r\n\tnext() {\r\n\t\t// Check the state and find the next match as a side-effect if necessary.\r\n\t\tif (!this.hasNext()) {\r\n\t\t\tthrow new Error('No next element')\r\n\t\t}\r\n\t\t// Don't retain that memory any longer than necessary.\r\n\t\tconst result = this.last_match\r\n\t\tthis.last_match = null\r\n\t\tthis.state = 'NOT_READY'\r\n\t\treturn result\r\n\t}\r\n}","import PhoneNumberMatcher from '../PhoneNumberMatcher.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function findNumbers() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}","// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbersInitialImplementation.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function findPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findPhoneNumbers(text, options, metadata)\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _searchPhoneNumbers(text, options, metadata)\r\n}","// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport createExtensionPattern from '../helpers/extension/createExtensionPattern.js'\r\n\r\nimport PhoneNumberSearch from './PhoneNumberSearch.js'\r\n\r\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\r\nexport const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing')\r\n\r\n// // Regular expression for getting opening brackets for a valid number\r\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\r\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\r\n\r\n// const VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/\r\n\r\nexport default function findPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\tconst phones = []\r\n\twhile (search.hasNext()) {\r\n\t\tphones.push(search.next())\r\n\t}\r\n\treturn phones\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\r\n\tconst iterator = () => {\r\n\t\treturn {\r\n\t\t\tnext: () => {\r\n\t\t\t\tif (search.hasNext()) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\tvalue: search.next()\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdone: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// This line of code didn't really work with `babel`/`istanbul`:\r\n\t// for some weird reason, it showed code coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// const iterable = { [Symbol.iterator]: iterator }\r\n\r\n\tconst iterable = {}\r\n\titerable[Symbol.iterator] = iterator\r\n\treturn iterable\r\n}\r\n","import _formatNumber from '../format.js'\r\nimport parse from '../parse.js'\r\nimport isObject from '../helpers/isObject.js'\r\n\r\nexport default function formatNumber() {\r\n\tconst {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t} = normalizeArguments(arguments)\r\n\r\n\treturn _formatNumber(input, format, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nfunction normalizeArguments(args)\r\n{\r\n\t// This line of code appeared to not work correctly with `babel`/`istanbul`:\r\n\t// for some weird reason, it caused coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// const [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args)\r\n\r\n\tconst arg_1 = args[0]\r\n\tconst arg_2 = args[1]\r\n\tconst arg_3 = args[2]\r\n\tconst arg_4 = args[3]\r\n\tconst arg_5 = args[4]\r\n\r\n\tlet input\r\n\tlet format\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// Sort out arguments.\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `format('8005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If country code is supplied.\r\n\t\t// `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\r\n\t\tif (typeof arg_3 === 'string')\r\n\t\t{\r\n\t\t\tformat = arg_3\r\n\r\n\t\t\tif (arg_5)\r\n\t\t\t{\r\n\t\t\t\toptions  = arg_4\r\n\t\t\t\tmetadata = arg_5\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata)\r\n\t\t}\r\n\t\t// Just an international phone number is supplied\r\n\t\t// `format('+78005553535', 'NATIONAL', [options], metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (typeof arg_2 !== 'string')\r\n\t\t\t{\r\n\t\t\t\tthrow new Error('`format` argument not passed to `formatNumber(number, format)`')\r\n\t\t\t}\r\n\r\n\t\t\tformat = arg_2\r\n\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions  = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { extended: true }, metadata)\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed number object.\r\n\t// `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\r\n\telse if (isObject(arg_1))\r\n\t{\r\n\t\tinput  = arg_1\r\n\t\tformat = arg_2\r\n\r\n\t\tif (arg_4)\r\n\t\t{\r\n\t\t\toptions  = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t// Legacy lowercase formats.\r\n\tif (format === 'International') {\r\n\t\tformat = 'INTERNATIONAL'\r\n\t} else if (format === 'National') {\r\n\t\tformat = 'NATIONAL'\r\n\t}\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\r\nimport _getNumberType from '../helpers/getNumberType.js'\r\nimport isObject from '../helpers/isObject.js'\r\nimport parse from '../parse.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone) {\r\n\t\treturn\r\n\t}\r\n\treturn _getNumberType(input, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nexport function normalizeArguments(args)\r\n{\r\n\t// This line of code appeared to not work correctly with `babel`/`istanbul`:\r\n\t// for some weird reason, it caused coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// const [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tconst arg_1 = args[0]\r\n\tconst arg_2 = args[1]\r\n\tconst arg_3 = args[2]\r\n\tconst arg_4 = args[3]\r\n\r\n\tlet input\r\n\tlet options = {}\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `getNumberType('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If \"default country\" argument is being passed\r\n\t\t// then convert it to an `options` object.\r\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\r\n\t\tif (!isObject(arg_2))\r\n\t\t{\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, { defaultCountry: arg_2 }, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// No \"resrict country\" argument is being passed.\r\n\t\t// International phone number is passed.\r\n\t\t// `getNumberType('+78005553535', metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (arg_3)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_2\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_2\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, undefined, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed phone number.\r\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\r\n\telse if (isObject(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\r\n\t\tif (arg_3)\r\n\t\t{\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","import { normalizeArguments } from './getNumberType.js'\r\nimport _isPossibleNumber from '../isPossible.js'\r\n\r\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isPossibleNumber() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone && !(options && options.v2)) {\r\n\t\treturn false\r\n\t}\r\n\treturn _isPossibleNumber(input, options, metadata)\r\n}","import _isValidNumber from '../isValid.js'\r\nimport { normalizeArguments } from './getNumberType.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function isValidNumber() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone) {\r\n\t\treturn false\r\n\t}\r\n\treturn _isValidNumber(input, options, metadata)\r\n}","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\r\nimport parseNumber from '../parse.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\n// This function has been deprecated and is not exported as\r\n// `isValidPhoneNumberForCountry()` or `isValidPhoneNumberForRegion()`.\r\n//\r\n// The rationale is:\r\n//\r\n// * We don't use the \"region\" word, so \"country\" would be better.\r\n//\r\n// * It could be substituted with:\r\n//\r\n// ```js\r\n// export default function isValidPhoneNumberForCountry(phoneNumberString, country) {\r\n// \tconst phoneNumber = parsePhoneNumber(phoneNumberString, {\r\n// \t\tdefaultCountry: country,\r\n// \t\t// Demand that the entire input string must be a phone number.\r\n// \t\t// Otherwise, it would \"extract\" a phone number from an input string.\r\n// \t\textract: false\r\n// \t})\r\n// \tif (!phoneNumber) {\r\n// \t\treturn false\r\n// \t}\r\n// \tif (phoneNumber.country !== country) {\r\n// \t\treturn false\r\n// \t}\r\n// \treturn phoneNumber.isValid()\r\n// }\r\n// ```\r\n//\r\n// * Same function could be used for `isPossiblePhoneNumberForCountry()`\r\n//   by replacing `isValid()` with `isPossible()`.\r\n//\r\n// * The reason why this function is not exported is because its result is ambiguous.\r\n//   Suppose `false` is returned. It could mean any of:\r\n//   * Not a phone number.\r\n//   * The phone number is valid but belongs to another country or another calling code.\r\n//   * The phone number belongs to the correct country but is not valid digit-wise.\r\n//   All those three cases should be handled separately from a \"User Experience\" standpoint.\r\n//   Simply showing \"Invalid phone number\" error in all of those cases would be lazy UX.\r\n\r\nexport default function isValidNumberForRegion(number, country, metadata) {\r\n\tif (typeof number !== 'string') {\r\n\t\tthrow new TypeError('number must be a string')\r\n\t}\r\n\tif (typeof country !== 'string') {\r\n\t\tthrow new TypeError('country must be a string')\r\n\t}\r\n\t// `parse` extracts phone numbers from raw text,\r\n\t// therefore it will cut off all \"garbage\" characters,\r\n\t// while this `validate` function needs to verify\r\n\t// that the phone number contains no \"garbage\"\r\n\t// therefore the explicit `isViablePhoneNumber` check.\r\n\tlet input\r\n\tif (isViablePhoneNumber(number)) {\r\n\t\tinput = parseNumber(number, { defaultCountry: country }, metadata)\r\n\t} else {\r\n\t\tinput = {}\r\n\t}\r\n\treturn _isValidNumberForRegion(input, country, undefined, metadata)\r\n}","import isValidNumber from '../isValid.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\r\nexport default function isValidNumberForRegion(input, country, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\treturn input.country === country && isValidNumber(input, options, metadata)\r\n}","import _parseNumber from '../parse.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function parseNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _parseNumber(text, options, metadata)\r\n}","import normalizeArguments from '../normalizeArguments.js'\r\nimport PhoneNumberMatcher from '../PhoneNumberMatcher.js'\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport default function searchNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\r\n\treturn  {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t    \t\tnext: () => {\r\n\t    \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t    \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import compare from './tools/semver-compare.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t//  which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\r\n\t// For that reason, it's not used in this detection algorithm.\r\n\t// Instead, it detects by `countries: {}` property existence.\r\n\tif (!isObject(metadata) || !isObject(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst typeOf = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries.hasOwnProperty(country)\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import isObject from './helpers/isObject.js'\r\n\r\n// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions  = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossible.js'\r\n// import { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\n// import stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\n\r\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param  {string} input\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, country, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param  {string} text\r\n * @param  {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param  {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param  {string} text - Input.\r\n * @param  {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param  {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// // Parse RFC 3966 phone number URI.\r\n\t// if (text && text.indexOf('tel:') === 0) {\r\n\t// \treturn parseRFC3966(text)\r\n\t// }\r\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\r\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\r\n\t\textractFormattedPhoneNumber: (text) => extractFormattedPhoneNumber(text, extract, v2)\r\n\t})\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCodeSource, countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tundefined,\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// The exact country of the phone number\r\n\tlet country\r\n\r\n\t// If `formattedPhoneNumber` is passed in \"international\" format,\r\n\t// choose a country by `countryCallingCode`.\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// Else, if `formattedPhoneNumber` is passed in \"national\" format,\r\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn {\r\n\t\t\tcountryCallingCodeSource,\r\n\t\t\tcountryCallingCode\r\n\t\t}\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tcountry,\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, {\r\n\t\tnationalNumber,\r\n\t\tmetadata\r\n\t})\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param  {string} character - Yet another character from raw input string.\r\n * @param  {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param  {function?} eventListener - An optional \"on event\" function.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, eventListener) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\t// `eventListener` argument was added to this `export`ed function on Dec 26th, 2023.\r\n\t\t\t// Any 3rd-party code that used to `import` and call this function before that\r\n\t\t\t// won't be passing any `eventListener` argument.\r\n\t\t\t//\r\n\t\t\t// The addition of the `eventListener` argument was to fix the slightly-weird behavior\r\n\t\t\t// of parsing an input string when the user inputs something like `\"2+7\"\r\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/437\r\n\t\t\t//\r\n\t\t\t// If the parser encounters an unexpected `+` in a string being parsed\r\n\t\t\t// then it simply discards that out-of-place `+` and any following characters.\r\n\t\t\t//\r\n\t\t\tif (typeof eventListener === 'function') {\r\n\t\t\t\teventListener('end')\r\n\t\t\t}\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n","import parsePhoneNumberWithError_ from './parsePhoneNumberWithError_.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function parsePhoneNumberWithError() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumberWithError_(text, options, metadata)\r\n}","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function searchPhoneNumbersInText() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\r\n\treturn  {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t    \t\tnext: () => {\r\n\t    \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t    \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n    a = a.split('-')\r\n    b = b.split('-')\r\n    var pa = a[0].split('.')\r\n    var pb = b[0].split('.')\r\n    for (var i = 0; i < 3; i++) {\r\n        var na = Number(pa[i])\r\n        var nb = Number(pb[i])\r\n        if (na > nb) return 1\r\n        if (nb > na) return -1\r\n        if (!isNaN(na) && isNaN(nb)) return 1\r\n        if (isNaN(na) && !isNaN(nb)) return -1\r\n    }\r\n    if (a[1] && b[1]) {\r\n        return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n    }\r\n    return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function validatePhoneNumberLength() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\tconst phoneNumber = parsePhoneNumberWithError(text, options, metadata)\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, phoneNumber.country, metadata)\r\n\t\tif (result !== 'IS_POSSIBLE') {\r\n\t\t\treturn result\r\n\t\t}\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\treturn error.message\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar uuid = require('uuid');\n\nclass LocalStorageMap {\n  _localStorageKey;\n  _map = /* @__PURE__ */ new Map();\n  constructor(localStorageKey) {\n    this._localStorageKey = localStorageKey;\n  }\n  has(key) {\n    return this._map.has(key);\n  }\n  get(key) {\n    return this._map.get(key);\n  }\n  set(key, value) {\n    this._map.set(key, value);\n    this._saveLocalStorage();\n  }\n  delete(key) {\n    this._map.delete(key);\n    this._saveLocalStorage();\n  }\n  /**\n   * Get the string from localStorage and parse it into a Map.\n   */\n  getLocalStorageAsMap() {\n    const localStorageString = localStorage.getItem(this._localStorageKey);\n    let result;\n    if (localStorageString) {\n      try {\n        const resultsMapArray = JSON.parse(localStorageString);\n        result = new Map(resultsMapArray);\n      } catch {\n        console.error(\n          \"User Journey - Failed to retrieve old journeys from local storage.\"\n        );\n      }\n      localStorage.removeItem(this._localStorageKey);\n    }\n    return result;\n  }\n  /**\n   * Stringify the results map and save it to local storage as a string.\n   */\n  _saveLocalStorage() {\n    localStorage.setItem(this._localStorageKey, JSON.stringify([...this._map]));\n  }\n}\n\nconst RAW_USER_JOURNEY_EVENT_NAME = \"RawUserJourneyEvent\";\nconst RAW_USER_JOURNEY_RESULT_NAME = \"RawUserJourneyResult\";\nfunction isRecord(value) {\n  return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\nfunction isOptionalString(value) {\n  return value === void 0 || typeof value === \"string\";\n}\nfunction isOptionalStringArray(value) {\n  return value === void 0 || Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\nfunction isOptionalOutcome(value) {\n  return value === void 0 || value === \"SUCCEEDED\" || value === \"USER_CANCELED\" || value === \"FAILED\" || value === \"PROCESS_CRASHED\" || value === \"PROCESS_KILLED\" || value === \"TERMINATED\";\n}\nfunction isOptionalTerminationReason(value) {\n  return value === void 0 || value === \"TIMEOUT_WITH_ACTIVE_USER\" || value === \"TIMEOUT_WITH_IDLE_USER\" || value === \"JOURNEY_RESTARTED\";\n}\nfunction isRawUserJourneyResultEventProps(value, { userJourneyName } = {}) {\n  return isRecord(value) && typeof value.id === \"string\" && value.id.length > 0 && typeof value.createdAt === \"number\" && Number.isFinite(value.createdAt) && typeof value.userJourneyName === \"string\" && value.userJourneyName.length > 0 && (userJourneyName === void 0 || value.userJourneyName === userJourneyName) && isOptionalOutcome(value.outcome) && isOptionalString(value.variant) && isOptionalStringArray(value.tags) && isOptionalStringArray(value.frictionSignals) && isOptionalStringArray(value.frustrationSignals) && isOptionalString(value.propertiesMapJson) && isOptionalString(value.summedPropertiesMapJson) && isOptionalString(value.maxPropertiesMapJson) && (value.durationRealTimeMs === void 0 || typeof value.durationRealTimeMs === \"number\" && Number.isFinite(value.durationRealTimeMs)) && isOptionalTerminationReason(value.terminationReason);\n}\nconst FRUSTRATION_SIGNAL_SUM_KEY_PREFIX = \"frustration:\";\nconst FRICTION_SIGNAL_SUM_KEY_PREFIX = \"friction:\";\n\nconst LOG_STYLE = \"color:orange;font-weight:bold;\";\nfunction log(message, metadata) {\n  const finalMessage = `%c@squareup/user-journey-web: ${message}`;\n  if (metadata) {\n    console.groupCollapsed(finalMessage, LOG_STYLE);\n    console.log(metadata);\n    console.groupEnd();\n  } else {\n    console.log(finalMessage, LOG_STYLE);\n  }\n}\n\nconst START_EVENT_NAME = RAW_USER_JOURNEY_EVENT_NAME;\nconst END_EVENT_NAME = RAW_USER_JOURNEY_RESULT_NAME;\nconst DEFAULT_TERMINATED_TIMEOUT = 6e5;\nconst LOCAL_STORAGE_KEY_PREFIX = \"USER_JOURNEY_\";\nconst CHECKPOINT_MILLIS_SINCE_START_SUFFIX = \":millisSinceStart\";\nconst createEmptyAccumulatedValues = () => ({\n  propertiesMap: {},\n  summedPropertiesMap: {},\n  maxPropertiesMap: {}\n});\nconst isAccumulatedValuesEmpty = (accumulatedValues) => Object.keys(accumulatedValues.propertiesMap).length === 0 && Object.keys(accumulatedValues.summedPropertiesMap).length === 0 && Object.keys(accumulatedValues.maxPropertiesMap).length === 0;\nclass UserJourney {\n  _results;\n  _timeouts = /* @__PURE__ */ new Map();\n  /**\n   * An ID to identify the host app, required to save result on browser storage\n   */\n  _applicationId;\n  /**\n   * A function to track an user journey event.\n   */\n  _track;\n  /**\n   * A customized timeout duration for TERMINATED outcome.\n   */\n  _timeoutMs;\n  /**\n   * If true, every operation will print a log to the console.\n   */\n  _showLogs;\n  /**\n   * If true, instead of throwing errors, it will just log to console if showLogs is true.\n   */\n  _silenceErrors;\n  /**\n   * If true, invalid accumulated values are ignored instead of throwing.\n   */\n  _silenceAccumulatedValueErrors;\n  constructor(config) {\n    this._applicationId = config.applicationId;\n    this._track = config.track;\n    this._timeoutMs = config.timeoutMs || DEFAULT_TERMINATED_TIMEOUT;\n    this._showLogs = config.showLogs;\n    this._results = new LocalStorageMap(\n      `${LOCAL_STORAGE_KEY_PREFIX}${this._applicationId}`\n    );\n    this._silenceErrors = config.silenceErrors;\n    this._silenceAccumulatedValueErrors = config.silenceAccumulatedValueErrors;\n    if (this._showLogs) {\n      log(\"Initialize User Journey\", {\n        applicationId: this._applicationId,\n        timeoutMs: this._timeoutMs\n      });\n    }\n    this._results.getLocalStorageAsMap()?.forEach((value, key) => {\n      this._endAsProcessKilled(key, value);\n    });\n  }\n  /**\n   * Start a user journey.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {Variant} [variant]\n   * The variant of this journey, if any.\n   * @returns\n   * A unique id of this specific instance of the journey.\n   */\n  start(name, variant) {\n    if (this._results.has(name)) {\n      this._endAsTerminated(name, \"RESTARTED\");\n    }\n    const result = this._createNewJourney();\n    result.variant = variant;\n    this._results.set(name, result);\n    this._timeouts.set(\n      name,\n      setTimeout(() => {\n        this._endAsTerminated(name, \"TIMEOUT\");\n      }, this._timeoutMs)\n    );\n    const trackableResult = {\n      id: result.id,\n      createdAt: result.createdAt,\n      frustrationSignals: result.frustrationSignals,\n      frictionSignals: result.frictionSignals,\n      tags: result.tags,\n      variant: result.variant\n    };\n    this._track(\n      START_EVENT_NAME,\n      {\n        userJourneyName: name,\n        ...trackableResult\n      },\n      {\n        overrides: {\n          context: {\n            os: {\n              // Enables us to use 'platform-name' to filter on Datadog\n              name: \"web\"\n            },\n            application: {\n              // Enables us to use 'application-name' to filter on Datadog\n              name: this._applicationId\n            }\n          }\n        }\n      }\n    );\n    if (this._showLogs) {\n      log(\"Start User Journey\", {\n        userJourneyName: name,\n        ...trackableResult\n      });\n    }\n    return result.id;\n  }\n  /**\n   * End a user journey.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {UserOutcome} outcome\n   * The outcome, either 'SUCCEEDED', 'FAILED', or 'USER_CANCELED'\n   */\n  end(name, outcome) {\n    const result = this._results.get(name);\n    if (result) {\n      this._end({\n        ...result,\n        userJourneyName: name,\n        outcome,\n        durationRealTimeMs: Date.now() - result.createdAt\n      });\n    } else {\n      this._throwError(\n        \"User Journey - Trying to end a journey that has not started\"\n      );\n    }\n  }\n  /**\n   * Check if a user journey is currently in progress.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   */\n  has(name) {\n    return this._results.has(name);\n  }\n  /**\n   * Add a variant after a journey has started.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {Variant} variant\n   * The variant of this journey.\n   */\n  setVariant(name, variant) {\n    this.addBatchMetadata(name, {\n      variant\n    });\n  }\n  /**\n   * Add a frustration signal after a journey has started.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {FrustrationSignal} frustrationSignal\n   * The frustration signal.\n   */\n  addFrustrationSignal(name, frustrationSignal) {\n    this.addBatchMetadata(name, {\n      frustrationSignals: [frustrationSignal],\n      accumulatedValues: {\n        summedPropertiesMap: {\n          [`${FRUSTRATION_SIGNAL_SUM_KEY_PREFIX}${String(frustrationSignal)}`]: 1\n        }\n      }\n    });\n  }\n  /**\n   * Add a friction signal after a journey has started.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {FrictionSignal} frictionSignal\n   * The friction signal.\n   */\n  addFrictionSignal(name, frictionSignal) {\n    this.addBatchMetadata(name, {\n      frictionSignals: [frictionSignal],\n      accumulatedValues: {\n        summedPropertiesMap: {\n          [`${FRICTION_SIGNAL_SUM_KEY_PREFIX}${String(frictionSignal)}`]: 1\n        }\n      }\n    });\n  }\n  /**\n   * Set the accumulated property value for a key.\n   */\n  setMapEntry(name, key, value) {\n    if (!this._shouldRecordMapEntryValue(key, value)) {\n      return;\n    }\n    this.addBatchMetadata(name, {\n      accumulatedValues: {\n        propertiesMap: {\n          [key]: value\n        }\n      }\n    });\n  }\n  /**\n   * Add to the accumulated sum value for a key. Non-positive values are ignored.\n   */\n  addSumMapEntry(name, key, value) {\n    if (!this._shouldRecordAccumulatedNumber(key, value) || value <= 0) {\n      return;\n    }\n    this.addBatchMetadata(name, {\n      accumulatedValues: {\n        summedPropertiesMap: {\n          [key]: value\n        }\n      }\n    });\n  }\n  /**\n   * Update the accumulated max value for a key.\n   */\n  addMaxMapEntry(name, key, value) {\n    if (!this._shouldRecordAccumulatedNumber(key, value)) {\n      return;\n    }\n    this.addBatchMetadata(name, {\n      accumulatedValues: {\n        maxPropertiesMap: {\n          [key]: value\n        }\n      }\n    });\n  }\n  /**\n   * Record the elapsed milliseconds between journey start and this checkpoint.\n   */\n  addCheckpoint(name, checkpointName) {\n    const result = this._results.get(name);\n    if (result) {\n      const millisSinceStart = Math.max(0, Date.now() - result.createdAt);\n      this.setMapEntry(\n        name,\n        `${checkpointName}${CHECKPOINT_MILLIS_SINCE_START_SUFFIX}`,\n        millisSinceStart\n      );\n    } else {\n      this._throwError(\n        \"User Journey - Trying to add a checkpoint on a journey that has not started\"\n      );\n    }\n  }\n  /**\n   * Add a tag after a journey has started.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {Tag} tag\n   * The tag.\n   */\n  addTag(name, tag) {\n    this.addBatchMetadata(name, {\n      tags: [tag]\n    });\n  }\n  /**\n   * Add a batch of metadata to the user journey after it is started.\n   *\n   * Metadata should be internally consistent. For example, if a caller adds\n   * friction or frustration signals, the corresponding sum keys should also\n   * be in the accumulated values.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {MutableResultMetadata<Variant, FrustrationSignal, FrictionSignal, Tag>} metadata\n   * A set of optional variant, frustration signals, friction signals, and tags.\n   */\n  addBatchMetadata(name, metadata) {\n    const result = this._results.get(name);\n    if (result) {\n      const {\n        variant,\n        frustrationSignals,\n        frictionSignals,\n        tags,\n        accumulatedValues\n      } = metadata;\n      if (variant) {\n        result.variant = variant;\n      }\n      if (frustrationSignals) {\n        result.frustrationSignals.push(...frustrationSignals);\n      }\n      if (frictionSignals) {\n        result.frictionSignals.push(...frictionSignals);\n      }\n      if (tags) {\n        result.tags.push(...tags);\n      }\n      if (accumulatedValues) {\n        this._mergeAccumulatedValues(result.accumulatedValues, accumulatedValues);\n      }\n      this._results.set(name, result);\n      if (this._showLogs) {\n        log(\"Update User Journey\", {\n          userJourneyName: name,\n          ...result\n        });\n      }\n    } else {\n      this._throwError(\n        \"User Journey - Trying to add metadata on a journey that has not started\"\n      );\n    }\n  }\n  /**\n   * Add a batch of metadata then end a user journey.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {MutableResultMetadata<Variant, FrustrationSignal, FrictionSignal, Tag>} metadata\n   * A set of optional variant, frustration signals, friction signals, and tags.\n   * @param {UserOutcome} outcome\n   * The outcome, either 'SUCCEEDED', 'FAILED', or 'USER_CANCELED'\n   */\n  addBatchMetadataAndEnd(name, metadata, outcome) {\n    this.addBatchMetadata(name, metadata);\n    this.end(name, outcome);\n  }\n  /**\n   * Creates a new journey with basic metadata.\n   */\n  _createNewJourney() {\n    return {\n      id: uuid.v4(),\n      createdAt: Date.now(),\n      frustrationSignals: [],\n      frictionSignals: [],\n      tags: [],\n      accumulatedValues: createEmptyAccumulatedValues()\n    };\n  }\n  /**\n   * End a journey as TERMINATED because it time out or start() is called again\n   * with the same name.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {\"RESTARTED\" | \"TIMEOUT\"} reason\n   * The reason we are terminating the journey.\n   */\n  _endAsTerminated(name, reason) {\n    const result = this._results.get(name);\n    if (result) {\n      this._end({\n        ...result,\n        userJourneyName: name,\n        outcome: \"TERMINATED\",\n        durationRealTimeMs: Date.now() - result.createdAt,\n        terminationReason: reason === \"TIMEOUT\" ? document.hidden ? \"TIMEOUT_WITH_IDLE_USER\" : \"TIMEOUT_WITH_ACTIVE_USER\" : \"JOURNEY_RESTARTED\"\n      });\n    } else {\n      console.warn(\n        \"User Journey - Attempt to end a journey with TERMINATED outcome but journey already ended.\"\n      );\n    }\n  }\n  /**\n   * End a journey as PROCESS_KILLED because the page was closed when the journey was still\n   * in progress previously.\n   *\n   * @param {Name} name\n   * The name of the journey.\n   * @param {InitialResult} result\n   * The metadata of this journey.\n   */\n  _endAsProcessKilled(name, result) {\n    this._end({\n      ...result,\n      userJourneyName: name,\n      outcome: \"PROCESS_KILLED\",\n      durationRealTimeMs: Date.now() - result.createdAt\n    });\n  }\n  /**\n   * Actually end a journey by sending the event with the track function, de-duplicating\n   * the frustration signals, friction signals, and tags. Then clear the timeout and delete\n   * the journey from the maps.\n   *\n   * @param {FinalResult<Name, Variant, FrustrationSignal, FrictionSignal, Tag>} result\n   */\n  _end(result) {\n    this._sanitizeAccumulatedValues(result);\n    const {\n      accumulatedValues,\n      ...trackableResult\n    } = result;\n    const accumulatedValueProperties = isAccumulatedValuesEmpty(accumulatedValues) ? {} : {\n      ...Object.keys(accumulatedValues.propertiesMap).length > 0 ? { propertiesMapJson: JSON.stringify(accumulatedValues.propertiesMap) } : {},\n      ...Object.keys(accumulatedValues.summedPropertiesMap).length > 0 ? { summedPropertiesMapJson: JSON.stringify(accumulatedValues.summedPropertiesMap) } : {},\n      ...Object.keys(accumulatedValues.maxPropertiesMap).length > 0 ? { maxPropertiesMapJson: JSON.stringify(accumulatedValues.maxPropertiesMap) } : {}\n    };\n    this._track(\n      END_EVENT_NAME,\n      {\n        ...trackableResult,\n        frustrationSignals: [...new Set(result.frustrationSignals)],\n        frictionSignals: [...new Set(result.frictionSignals)],\n        tags: [...new Set(result.tags)],\n        ...accumulatedValueProperties\n      },\n      {\n        overrides: {\n          context: {\n            os: {\n              // Enables us to use 'platform-name' to filter on Datadog\n              name: \"web\"\n            },\n            application: {\n              // Enables us to use 'application-name' to filter on Datadog\n              name: this._applicationId\n            }\n          }\n        }\n      }\n    );\n    if (this._showLogs) {\n      log(\"End User Journey\", {\n        ...trackableResult,\n        ...accumulatedValueProperties\n      });\n    }\n    clearTimeout(this._timeouts.get(result.userJourneyName));\n    this._timeouts.delete(result.userJourneyName);\n    this._results.delete(result.userJourneyName);\n  }\n  _shouldRecordAccumulatedNumber(key, value) {\n    if (Number.isFinite(value)) {\n      return true;\n    }\n    this._throwAccumulatedValueError(`Accumulated value for ${key} must be finite, was ${value}.`);\n    return false;\n  }\n  _shouldRecordMapEntryValue(key, value) {\n    if (typeof value === \"number\") {\n      return this._shouldRecordAccumulatedNumber(key, value);\n    }\n    if (typeof value === \"string\" || typeof value === \"boolean\") {\n      return true;\n    }\n    this._throwAccumulatedValueError(\n      `Accumulated value for ${key} must be a string, boolean, or finite number.`\n    );\n    return false;\n  }\n  _mergeAccumulatedValues(target, source) {\n    Object.entries(source.propertiesMap ?? {}).forEach(([key, value]) => {\n      if (!this._shouldRecordMapEntryValue(key, value)) {\n        return;\n      }\n      target.propertiesMap[key] = value;\n    });\n    Object.entries(source.summedPropertiesMap ?? {}).forEach(([key, value]) => {\n      if (!this._shouldRecordAccumulatedNumber(key, value) || value <= 0) {\n        return;\n      }\n      target.summedPropertiesMap[key] = (target.summedPropertiesMap[key] ?? 0) + value;\n    });\n    Object.entries(source.maxPropertiesMap ?? {}).forEach(([key, value]) => {\n      if (!this._shouldRecordAccumulatedNumber(key, value)) {\n        return;\n      }\n      target.maxPropertiesMap[key] = Math.max(target.maxPropertiesMap[key] ?? value, value);\n    });\n  }\n  _normalizeAccumulatedValues(accumulatedValues) {\n    const normalized = createEmptyAccumulatedValues();\n    this._mergeAccumulatedValues(normalized, {\n      propertiesMap: accumulatedValues?.propertiesMap,\n      summedPropertiesMap: accumulatedValues?.summedPropertiesMap,\n      maxPropertiesMap: accumulatedValues?.maxPropertiesMap\n    });\n    return normalized;\n  }\n  _sanitizeAccumulatedValues(result) {\n    result.accumulatedValues = this._normalizeAccumulatedValues(result.accumulatedValues);\n  }\n  _throwAccumulatedValueError(message) {\n    this._throwError(\n      message,\n      this._silenceErrors || this._silenceAccumulatedValueErrors\n    );\n  }\n  /**\n   * A wrapper function to throw an error or log to console.\n   * @param {string} message\n   * Text of the error.\n   */\n  _throwError(message, silenceError = this._silenceErrors) {\n    if (this._showLogs) {\n      console.error(message);\n    }\n    if (!silenceError) {\n      throw new Error(message);\n    }\n  }\n}\n\nexports.DEFAULT_TERMINATED_TIMEOUT = DEFAULT_TERMINATED_TIMEOUT;\nexports.FRICTION_SIGNAL_SUM_KEY_PREFIX = FRICTION_SIGNAL_SUM_KEY_PREFIX;\nexports.FRUSTRATION_SIGNAL_SUM_KEY_PREFIX = FRUSTRATION_SIGNAL_SUM_KEY_PREFIX;\nexports.LOCAL_STORAGE_KEY_PREFIX = LOCAL_STORAGE_KEY_PREFIX;\nexports.RAW_USER_JOURNEY_EVENT_NAME = RAW_USER_JOURNEY_EVENT_NAME;\nexports.RAW_USER_JOURNEY_RESULT_NAME = RAW_USER_JOURNEY_RESULT_NAME;\nexports.default = UserJourney;\nexports.isRawUserJourneyResultEventProps = isRawUserJourneyResultEventProps;\n","'use strict'\r\n\r\nvar parsePhoneNumberFromString = require('../build/parsePhoneNumber.js').default\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = parsePhoneNumberFromString\r\nexports['default'] = parsePhoneNumberFromString\r\n\r\nexports.PhoneNumber = require('../build/PhoneNumber.js').default\r\nexports.ParseError = require('../build/ParseError.js').default\r\nvar parsePhoneNumberWithError = require('../build/parsePhoneNumberWithError.js').default\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumberWithError = parsePhoneNumberWithError\r\nexports.parsePhoneNumber = parsePhoneNumberWithError\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = parsePhoneNumberFromString\r\n\r\nexports.isValidPhoneNumber = require('../build/isValidPhoneNumber.js').default\r\nexports.isPossiblePhoneNumber = require('../build/isPossiblePhoneNumber.js').default\r\nexports.validatePhoneNumberLength = require('../build/validatePhoneNumberLength.js').default\r\n\r\nexports.findNumbers = require('../build/legacy/findNumbers.js').default\r\nexports.searchNumbers = require('../build/legacy/searchNumbers.js').default\r\n\r\nexports.findPhoneNumbersInText = require('../build/findPhoneNumbersInText.js').default\r\nexports.searchPhoneNumbersInText = require('../build/searchPhoneNumbersInText.js').default\r\nexports.PhoneNumberMatcher = require('../build/PhoneNumberMatcher.js').default\r\n\r\nexports.AsYouType = require('../build/AsYouType.js').default\r\n\r\nexports.Metadata = require('../build/metadata.js').default\r\nexports.isSupportedCountry = require('../build/metadata.js').isSupportedCountry\r\nexports.getCountries = require('../build/getCountries.js').default\r\nexports.getCountryCallingCode = require('../build/metadata.js').getCountryCallingCode\r\nexports.getExtPrefix = require('../build/metadata.js').getExtPrefix\r\n\r\nexports.getExampleNumber = require('../build/getExampleNumber.js').default\r\n\r\nexports.formatIncompletePhoneNumber = require('../build/formatIncompletePhoneNumber.js').default\r\n\r\nexports.parseIncompletePhoneNumber = require('../build/parseIncompletePhoneNumber.js').default\r\nexports.parsePhoneNumberCharacter = require('../build/parseIncompletePhoneNumber.js').parsePhoneNumberCharacter\r\nexports.parseDigits = require('../build/helpers/parseDigits.js').default\r\nexports.DIGIT_PLACEHOLDER = require('../build/AsYouTypeFormatter.js').DIGIT_PLACEHOLDER\r\n\r\nexports.parseRFC3966 = require('../build/helpers/RFC3966.js').parseRFC3966\r\nexports.formatRFC3966 = require('../build/helpers/RFC3966.js').formatRFC3966\r\n","'use strict'\r\n\r\nvar min = require('./min/index.cjs')\r\nvar metadata = require('./metadata.min.json')\r\n\r\nfunction withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = min.parsePhoneNumberFromString\r\nexports['default'] = min.parsePhoneNumberFromString\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = min.parsePhoneNumberFromString\r\n\r\nexports.PhoneNumber = min.PhoneNumber\r\nexports.ParseError = min.ParseError\r\n\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumber = min.parsePhoneNumberWithError\r\nexports.parsePhoneNumberWithError = min.parsePhoneNumberWithError\r\n\r\nexports.isValidPhoneNumber = min.isValidPhoneNumber\r\nexports.isPossiblePhoneNumber = min.isPossiblePhoneNumber\r\nexports.validatePhoneNumberLength = min.validatePhoneNumberLength\r\n\r\n// `parse()` and `parseNumber()` functions are deprecated.\r\nvar parse_ = require('./build/legacy/parse.js').default\r\nexports.parse = function parse() {\r\n\treturn withMetadataArgument(parse_, arguments)\r\n}\r\nexports.parseNumber = exports.parse\r\n\r\n// `format()` and `formatNumber()` functions are deprecated.\r\nvar format_ = require('./build/legacy/format.js').default\r\nexports.format = function format() {\r\n\treturn withMetadataArgument(format_, arguments)\r\n}\r\nexports.formatNumber = exports.format\r\n\r\n// Deprecated.\r\nvar getNumberType_ = require('./build/legacy/getNumberType.js').default\r\nexports.getNumberType = function getNumberType() {\r\n\treturn withMetadataArgument(getNumberType_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isPossibleNumber_ = require('./build/legacy/isPossibleNumber.js').default\r\nexports.isPossibleNumber = function isPossibleNumber() {\r\n\treturn withMetadataArgument(isPossibleNumber_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isValidNumber_ = require('./build/legacy/isValidNumber.js').default\r\nexports.isValidNumber = function isValidNumber() {\r\n\treturn withMetadataArgument(isValidNumber_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isValidNumberForRegion_ = require('./build/legacy/isValidNumberForRegion.js').default\r\nexports.isValidNumberForRegion = function isValidNumberForRegion() {\r\n\treturn withMetadataArgument(isValidNumberForRegion_, arguments)\r\n}\r\n\r\nexports.getExampleNumber = min.getExampleNumber\r\nexports.Metadata = min.Metadata\r\n\r\n// Deprecated.\r\nvar findPhoneNumbers_ = require('./build/legacy/findPhoneNumbers.js').default\r\nexports.findPhoneNumbers = function findPhoneNumbers() {\r\n\treturn withMetadataArgument(findPhoneNumbers_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar searchPhoneNumbers_ = require('./build/legacy/findPhoneNumbers.js').searchPhoneNumbers\r\nexports.searchPhoneNumbers = function searchPhoneNumbers() {\r\n\treturn withMetadataArgument(searchPhoneNumbers_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar PhoneNumberSearch_ = require('./build/legacy/PhoneNumberSearch.js').default\r\nexports.PhoneNumberSearch = function PhoneNumberSearch(text, options) {\r\n\treturn PhoneNumberSearch_.call(this, text, options, metadata)\r\n}\r\nexports.PhoneNumberSearch.prototype = Object.create(PhoneNumberSearch_.prototype, {})\r\nexports.PhoneNumberSearch.prototype.constructor = exports.PhoneNumberSearch\r\n\r\n// Deprecated.\r\nexports.findNumbers = min.findNumbers\r\n// Deprecated.\r\nexports.searchNumbers = min.searchNumbers\r\n\r\nexports.findPhoneNumbersInText = min.findPhoneNumbersInText\r\nexports.searchPhoneNumbersInText = min.searchPhoneNumbersInText\r\nexports.PhoneNumberMatcher = min.PhoneNumberMatcher\r\n\r\nexports.AsYouType = min.AsYouType\r\n\r\nexports.getCountries = min.getCountries\r\nexports.getCountryCallingCode = min.getCountryCallingCode\r\nexports.isSupportedCountry = min.isSupportedCountry\r\nexports.getExtPrefix = min.getExtPrefix\r\n\r\nexports.parseRFC3966 = min.parseRFC3966\r\nexports.formatRFC3966 = min.formatRFC3966\r\n\r\n// Deprecated: `DIGITS` were used by `react-phone-number-input`.\r\n// Replaced by `parseDigits()`.\r\nexports.DIGITS = require('./build/helpers/parseDigits.js').DIGITS\r\nexports.DIGIT_PLACEHOLDER = min.DIGIT_PLACEHOLDER\r\n\r\n// `getPhoneCode` name is deprecated\r\nexports.getPhoneCode = min.getCountryCallingCode\r\n\r\nexports.formatIncompletePhoneNumber = min.formatIncompletePhoneNumber\r\nexports.parseIncompletePhoneNumber = min.parseIncompletePhoneNumber\r\nexports.parsePhoneNumberCharacter = min.parsePhoneNumberCharacter\r\nexports.parseDigits = min.parseDigits\r\n","'use strict'\r\n\r\nvar metadata = require('../metadata.min.json')\r\nvar core = require('../core/index.cjs')\r\n\r\nfunction call(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\nfunction parsePhoneNumberFromString() {\r\n\treturn call(core.parsePhoneNumberFromString, arguments)\r\n}\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = parsePhoneNumberFromString\r\nexports['default'] = parsePhoneNumberFromString\r\n\r\nexports.PhoneNumber = function PhoneNumber(number) {\r\n\treturn core.PhoneNumber.call(this, number, metadata)\r\n}\r\nexports.PhoneNumber.prototype = Object.create(core.PhoneNumber.prototype, {})\r\nexports.PhoneNumber.prototype.constructor = exports.PhoneNumber\r\n\r\nexports.ParseError = core.ParseError\r\n\r\nfunction parsePhoneNumberWithError() {\r\n\treturn call(core.parsePhoneNumberWithError, arguments)\r\n}\r\n\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumber = parsePhoneNumberWithError\r\nexports.parsePhoneNumberWithError = parsePhoneNumberWithError\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = parsePhoneNumberFromString\r\n\r\nexports.isValidPhoneNumber = function isValidPhoneNumber() {\r\n\treturn call(core.isValidPhoneNumber, arguments)\r\n}\r\n\r\nexports.isPossiblePhoneNumber = function isPossiblePhoneNumber() {\r\n\treturn call(core.isPossiblePhoneNumber, arguments)\r\n}\r\n\r\nexports.validatePhoneNumberLength = function validatePhoneNumberLength() {\r\n\treturn call(core.validatePhoneNumberLength, arguments)\r\n}\r\n\r\nexports.findNumbers = function findNumbers() {\r\n\treturn call(core.findNumbers, arguments)\r\n}\r\n\r\nexports.searchNumbers = function searchNumbers() {\r\n\treturn call(core.searchNumbers, arguments)\r\n}\r\n\r\nexports.findPhoneNumbersInText = function findPhoneNumbersInText() {\r\n\treturn call(core.findPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.searchPhoneNumbersInText = function searchPhoneNumbersInText() {\r\n\treturn call(core.searchPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) {\r\n\treturn core.PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nexports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {})\r\nexports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher\r\n\r\nexports.AsYouType = function AsYouType(country) {\r\n\treturn core.AsYouType.call(this, country, metadata)\r\n}\r\nexports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {})\r\nexports.AsYouType.prototype.constructor = exports.AsYouType\r\n\r\nexports.isSupportedCountry = function isSupportedCountry(country) {\r\n\treturn call(core.isSupportedCountry, arguments)\r\n}\r\n\r\nexports.getCountries = function getCountries() {\r\n\treturn call(core.getCountries, arguments)\r\n}\r\n\r\nexports.getCountryCallingCode = function getCountryCallingCode() {\r\n\treturn call(core.getCountryCallingCode, arguments)\r\n}\r\n\r\nexports.getExtPrefix = function getExtPrefix(country) {\r\n\treturn call(core.getExtPrefix, arguments)\r\n}\r\n\r\nexports.getExampleNumber = function getExampleNumber() {\r\n\treturn call(core.getExampleNumber, arguments)\r\n}\r\n\r\nexports.Metadata = function Metadata() {\r\n\treturn core.Metadata.call(this, metadata)\r\n}\r\nexports.Metadata.prototype = Object.create(core.Metadata.prototype, {})\r\nexports.Metadata.prototype.constructor = exports.Metadata\r\n\r\nexports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() {\r\n\treturn call(core.formatIncompletePhoneNumber, arguments)\r\n}\r\n\r\nexports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber\r\nexports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter\r\nexports.parseDigits = core.parseDigits\r\nexports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER\r\n\r\nexports.parseRFC3966 = core.parseRFC3966\r\nexports.formatRFC3966 = core.formatRFC3966\r\n"],"mappings":";;;;;AASO,IAAMA,EAAiB,CAC5BC,IAAK,MACLC,MAAO,QACPC,KAAM,OACNC,KAAM,OACNC,MAAO,SAsBIC,EAAgBC,QAEhBC,EAAyB;AACtCC,OAAOC,KAAKV,GAAgBW,kBAASC,GACnCJ,EAAuBI,GAA0BN,EAAcM,EACjE;AAEA,IAAMC,EAAS,uBAEFC,EAAmB,CAC9BZ,MAAOM,EAAuBN,MAAMa,KAAKT,EAAeO,GACxDZ,IAAKO,EAAuBP,IAAIc,KAAKT,EAAeO,GACpDV,KAAMK,EAAuBL,KAAKY,KAAKT,EAAeO,GACtDT,KAAMI,EAAuBJ,KAAKW,KAAKT,EAAeO,GACtDR,MAAOG,EAAuBH,MAAMU,KAAKT,EAAeO,IAG7CG,EAAc;ACnDrB,SAAUC,EAAuCC,EAA0BC,GAC/E,OAAO,WAAC,QAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAD,EAAAC,GAAAC,UAAAD;AACN,IACE,OAAOH,EAAEM,aAAIJ,EAGf,CAFE,MAAOK,GACPX,EAAQT,MAAMc,EAAUM,EAC1B,CACF,CACF,KCRIC;AAAAA,mDACAC;AAME,SAAUC,EAAaC,GAC3BF,EAAYE,CACd,CAmBM,SAAUC,EAA2CZ,GACzD,OAAO,WAEL,OAAOa,EAAcb,EAAIc,KAAMV,UACjC,CACF,CAQM,SAAUS,EACdb,EACAe,EACAb,GAEA,IAEE,OAAOF,EAAGM,MAAMS,EAASb,EAU3B,CATE,MAAOc,GAEP,GADAC,EAAsBD,GAClBR,EACF,IACEA,EAAwBQ,EAG1B,CAFE,MAAOA,GACPC,EAAsBD,EACxB,CAEJ,CACF,CAEM,SAAUC,IAAsB,QAAAf,EAAA,GAAAC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAD,EAAAC,GAAAC,UAAAD;AAChCM,GACFb,EAAQT,MAAKmB,MAAbV,EAAOsB,EAAA,CAAO,aAAgBhB,MAElC,CCjEM,SAAUiB,EAASC,EAA+BC,GACtD,OAAsC,IAA/BD,EAAUE,QAAQD,EAC3B,CAEM,SAAUE,EAAaC,GAC3B,GAAIC,MAAMC,KACR,OAAOD,MAAMC,KAAKF;AAGpB,IAAMG,EAAQ;AAEd,GAAIH,aAAqBI,IACvBJ,EAAU/B,kBAASoC,GAAS,OAAAF,EAAMG,KAAKD,EAAX;KAE5B,IAAK,IAAIE,EAAI,EAAGA,EAAIP,EAAUnB,OAAQ0B,IACpCJ,EAAMG,KAAKN,EAAUO;AAIzB,OAAOJ,CACT,CAOM,SAAUK,EAAKL,EAA2BM,GAC9C,IAAK,IAAIF,EAAI,EAAGA,EAAIJ,EAAMtB,OAAQ0B,GAAK,EAAG,CACxC,IAAMF,EAAOF,EAAMI;AACnB,GAAIE,EAAUJ,EAAME,GAClB,OAAOF,CAEX,CAEF,CAsBM,SAAUK,EAA0BC,GACxC,OAAO5C,OAAOC,KAAK2C,GAAQC,cAAKC,GAAQ,OAAAF,EAAOE,EAAP,GAC1C,CAEM,SAAUC,EAA2BH,GACzC,OAAO5C,OAAOC,KAAK2C,GAAQC,cAAKC,GAAQ,OAACA,EAAKF,EAAOE,GAAb,GAC1C,CAEM,SAAUE,EAAWnB,EAAmBC,GAC5C,OAAOD,EAAUoB,MAAM,EAAGnB,EAAOhB,UAAYgB,CAC/C,CAcM,SAAUoB,EAAOC,GAAoB,QAAAC,EAAA,GAAAxC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAwC,EAAAxC,EAAA,GAAAC,UAAAD;AAQzC,OAPAwC,EAASlD,kBAASmD,GAChB,IAAK,IAAMP,KAAOO,EACZrD,OAAOsD,UAAUC,eAAeC,KAAKH,EAAQP,KAC/CK,EAAOL,GAAOO,EAAOP,GAG3B,IACOK,CACT,CCxFM,SAAUM,IACd,GAA0B,iBAAfC,WACT,OAAOA;AAET1D,OAAO2D,eAAe3D,OAAOsD,UAAW,YAAa,CACnDM,IAAG,WACD,OAAOrC,IACT,EACAsC;AAGF,IAAIC,EAAwBC;AAc5B,cAZO/D,OAAOsD,UAAUS,UACI,iBAAjBD,IAIPA,EADkB,iBAATE,KACMA,KACY,iBAAXC,OACDA,OAEA,IAGZH,CACT,CC9BO,IAAMI,EAAgB,KAChBC,EAAgB,KAAOD,EAG9BE,EAA6B;AAE7B,SAAUC,EAAkBxC,GAEhC,OAAKuC,EAA2BE,KAAKzC,YAIjCoC,OAAOM,iBACEA,aAAcC,OAAO3C,GAAWf,OAGtC,IAAI2D,KAAK,CAAC5C,IAAY6C,KAPpB7C,EAAUf,MAQrB,CCOM,SAAU6D,EACdxB,EACAhD,GAEA,IACIyE,EADEC,EAAgBpB;AAQtB,OANIoB,EAAcC,MAAiD,mBAAlCD,EAAcC,KAAKC,aAClDH,EAAYzB,EAAe0B,EAAcC,KAAKC,WAAW5E,KAEtDyE,IACHA,EAAWzB,EAAOhD,IAEbyE,CACT,CC/BM,SAAUI,EAAWC,EAAsBC,GAC/C,OAAOP,EAAuBlB,IAAmB,aAA1CkB,CAAwDtD,EAAQ4D,GAAWC,EACpF,CAEM,SAAUC,EAAaC,GAC3BT,EAAuBlB,IAAmB,eAA1CkB,CAA0DS,EAC5D,CAEM,SAAUC,EAAYJ,EAAsBC,GAChD,OAAOP,EAAuBlB,IAAmB,cAA1CkB,CAAyDtD,EAAQ4D,GAAWC,EACrF,CAEM,SAAUI,EAAcF,GAC5BT,EAAuBlB,IAAmB,gBAA1CkB,CAA2DS,EAC7D,CChBM,SAAUG,EACd9E,EACA+E,EACAC,GAEA,IAGIC,EACAC,EAJEC,GAAuBH,YAAWA,EAAQI,SAAwBJ,EAAQI,QAC1EC,GAAwBL,YAAWA,EAAQM,UAAyBN,EAAQM,SAC9EC;AAIJ,MAAO,CACLC,UAAW,WAAC,QAAAC,EAAA,GAAAtF,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAsF,EAAAtF,GAAAC,UAAAD;AACNoF,EACFN,EAAiCQ,GAG/BN,EACFnF,EAAEM,aAAImF,GAENR,EAAiCQ,EAEnCF,KACAL,EAAmBX,cACbc,GAAyBJ,GAC3BjF,EAAEM,aAAI2E,GAERM,KACAN,QACF,GAAGF,GACL,EACAW,OAAQ,WACNhB,EAAaQ,GACbK,KACAN,QACF,EAEJ,CAGM,SAAUU,IAAQ,CClClB,SAAUC,EACdC,EACAC,EACAC,GAEA,GAAqB,iBAAVF,GAAgC,OAAVA,EAC/B,OAAOG,KAAKC,UAAUJ;AAKxB,IAAMK,EAA+BC,EAAmB5G,OAAOsD,WACzDuD,EAA8BD,EAAmB1E,MAAMoB,WACvDwD,EAA8BF,EAAmB5G,OAAO+G,eAAeT,IACvEU,EAAqBJ,EAAmBN;AAE9C,IACE,OAAOG,KAAKC,UAAUJ,EAAOC,EAAUC,EAQzC,CAPE,MAAAS,GACA,MAAO,qCACT,CAAC,QACCN,IACAE,IACAC,IACAE,GACF,CACF,CAMM,SAAUJ,EAAmBN,GACjC,IAAM1D,EAAS0D,EACTY,EAAetE,EAAOuE;AAC5B,OAAID,UACKtE,EAAOuE,OACP,WACLvE,EAAOuE,OAASD,CAClB,GAEKd,CACT,CClDM,SAAUgB,EAAgBxE,GAC9B,OAAOM,EAAO,GAAIN,EACpB,CAEM,SAAUyE,EAAqDzE,EAAW0D,GAC9E,OAAOtG,OAAOC,KAAK2C,GAAQ0E,eAAMxE,GAAQ,OAAAF,EAAOE,KAASwD,CAAhB,GAC3C,CAEM,SAAUiB,EAAc3E,GAC5B,OAAsC,IAA/B5C,OAAOC,KAAK2C,GAAQ9B,MAC7B,CCoFM,SAAU0G,EAA0BC,GACxC,IAAIC,EAAkB,EAIhBT,EAA6E1B,YAAU/D,GAC3FkG,EAAkBrD,EAAkBgC,EAAc7E,IAClDiG,GACF,GArFgD,KAkF7BE,EAA0BV,EAAAhB,UAAU2B,EAAuBX,EAAAd,OAKxE0B,EAAkB,WACtBD,IACAF,EAAkB,CACpB;AAEA,MAAO,CACLI,mBAAoB,SAACtG,GACf+F,EAAc/F,GAChBqG,IAEAF,EAA2BnG,EAE/B,EACAuG,kBAAmBF,EACnBG,cAAe,WAAM,OAAAN,CAAA,EACrBO,KAAM,WACJL,GACF,EAEJ,CC1HM,SAAUM,EAAQ5B,GACtB,OAAc,OAAVA,EACK,OAELpE,MAAMiG,QAAQ7B,GACT,eAEKA,CAChB,CCiBM,SAAU8B,EACdC,EACAhF,EACAiF,GAGA,YAHAA,MA0HF,WACE,GAAuB,oBAAZC,QAAyB,CAClC,IAAMC,EAAoB,IAAID;AAC9B,MAAO,CACLE,mBAAkB,SAACnC,GACjB,IAAMoC,EAAMF,EAAIE,IAAIpC;AAIpB,OAHKoC,GACHF,EAAIG,IAAIrC,GAEHoC,CACT,EAEJ,CACA,IAAMtG,EAAe;AACrB,MAAO,CACLqG,mBAAkB,SAACnC,GACjB,IAAMoC,EAAMtG,EAAML,QAAQuE,IAAU;AAIpC,OAHKoC,GACHtG,EAAMG,KAAK+D,GAENoC,CACT,EAEJ,CAvBA,SA1H6BE,IAGvBvF,EACF,OAAOgF;AAGT,GAAsB,iBAAXhF,GAAkC,OAAXA,EAEhC,OAAOA;AACF,GAAIA,aAAkBwF,KAC3B,OAAO,IAAIA,KAAKxF,EAAOyF;AAClB,GAAIzF,aAAkB0F,OAAQ,CACnC,IAAMC,EACJ3F,EAAO2F,OAEP,CACE3F,EAAO4F,OAAS,IAAM,GACtB5F,EAAO6F,WAAa,IAAM,GAC1B7F,EAAO8F,UAAY,IAAM,GACzB9F,EAAO+F,OAAS,IAAM,GACtB/F,EAAOgG,QAAU,IAAM,IACvBC,KAAK;AACT,OAAO,IAAIP,OAAO1F,EAAOA,OAAQ2F,EACnC,CAEA,IAAIV,EAAyBG,mBAAmBpF,GAAhD,CAGO,GAAInB,MAAMiG,QAAQ9E,GAAS,CAEhC,IADA,IAAMkG,EAAgBrH,MAAMiG,QAAQE,GAAeA,EAAc,GACxD7F,EAAI,EAAGA,EAAIa,EAAOvC,SAAU0B,EACnC+G,EAAO/G,GAAK4F,EAAUmB,EAAO/G,GAAIa,EAAOb,GAAI8F;AAE9C,OAAOiB,CACT,CAEA,IAAMC,EAAkC,WAAzBtB,EAAQG,GAA6BA,EAAmC;AACvF,IAAK,IAAMvF,KAAOO,EACZrD,OAAOsD,UAAUC,eAAeC,KAAKH,EAAQP,KAC/C0G,EAAO1G,GAAOsF,EAAUoB,EAAO1G,GAAMO,EAAOP,GAAMwF;AAGtD,OAAOkB,CARP,CASF,CAQM,SAAUC,EAAanD,GAC3B,OAAO8B,SAAqB9B,EAC9B,CAiDM,SAAUoD,IAAQ,QAClBrB,EADkBsB,EAAA,GAAA/I,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAA+I,EAAA/I,GAAAC,UAAAD;AAGtB,IAAqB,IAAAqG,EAAA,EAAA2C,EAAAD,EAAA1C,EAAA2C,EAAA9I,OAAAmG,IAAS,CAAzB,IAAM5D,EAAMuG,EAAA3C;AAEX5D,UAIJgF,EAAcD,EAAUC,EAAahF,GACvC,CAEA,OAAOgF,CACT,CCrGM,SAAUwB,EAASxG,EAAiByG,GAAwD,IAAAC;KAAA,IAAxDD,MA1BG;AA4B3C,IAAMnD,EAA+BC,EAAmB5G,OAAOsD,WACzDuD,EAA8BD,EAAmB1E,MAAMoB,WAGvD0G,EAA8C,GAC9CC,EAAyB,IAAIC,QAC7BC,EAAgBC,EACpB/G,EAhC2B,SAiC3BgH,EAEAL,EACAC,GAEEK,GAAyD,QAA7BrD,EAAAR,KAAKC,UAAUyD,cAAclD,WAAEnG,SAAU;AACzE,KAAIwJ,EAA4BR,GAAhC,CAKA,KAAOE,EAAelJ,OAAS,GAAKwJ,EAA4BR,GAAmB,CACjF,IAAMS,EAAqBP,EAAeQ,QACtCC,EAAkB;AAItB,GAAIvI,MAAMiG,QAAQoC,EAAmBlH,QACnC,IAAK,IAAIP,EAAM,EAAGA,EAAMyH,EAAmBlH,OAAOvC,OAAQgC,IAAO,CAkB/D,GAREwH,aATII,EAAaN,EACjBG,EAAmBlH,OAAOP,GAC1ByH,EAAmBI,KACnB7H,EACAkH,EACAC,IAI6BxD,KAAKC,UAAUgE,GAAY5J,OAI3B,EAE/BwJ,GAA6BG,EAC7BA,EAAkB,EACdH,EAA4BR,EAAmB,CACjDc,EAAuBd,EAAmB,YAAazG;AACvD,KACF,CACEkH,EAAmBpH,OAAwBL,GAAO4H,CACtD,MAEA,IAAK,IAAM5H,KAAOyH,EAAmBlH,OACnC,GAAIrD,OAAOsD,UAAUC,eAAeC,KAAK+G,EAAmBlH,OAAQP,GAAM,CACxE,IAAM4H;AAcN,aAdMA,EAAaN,EACjBG,EAAmBlH,OAAOP,GAC1ByH,EAAmBI,KACnB7H,EACAkH,EACAC,MAKAK,GACE7D,KAAKC,UAAUgE,GAAY5J,OAAS2J,EAAkB3H,EAAIhC,OArF1C,EAsFlB2J,EAAkB,GAEhBH,EAA4BR,EAAmB,CACjDc,EAAuBd,EAAmB,YAAazG;AACvD,KACF,CACEkH,EAAmBpH,OAAmBL,GAAO4H,CACjD,CAGN,CAMA,OAHA/D,IACAE,IAEOsD,CAhEP,CAFES,EAAuBd,EAAmB,YAAazG,EAmE3D,CAOA,SAAS+G,EACP/G,EACAwH,EACA/H,EACAgI,EACAb,GAGA,IAgCsC3D,EAhChCyE,EAwFR,SAA0BzE,GACxB,IAAM1D,EAAS0D;AACf,GAAI1D,GAAmC,mBAAlBA,EAAOuE,OAC1B,IACE,OAAOvE,EAAOuE,QAEd,CADA,MAAAF,GACA,CAIJ,OAAOX,CACT,CAXA,CAxF4CjD;AAE1C,IAAK0H,GAAgD,iBAArBA,EAC9B,MA+BmB,iBAFiBzE,EA7BEyE,GAgC/B,YAAAC,OAAY1E,EAAM2E,YAIN,mBAAV3E,EACF,cAAA0E,OAAc1E,EAAMnG,MAAQ,WAGhB,iBAAVmG,EAGF,YAAA0E,OAAa1E,EAAgC4E,aAAe5E,EAAM2E,YAGpE3E;AA3CP,IAAM6E,EAwDR,SAAyB7E,GACvB,IAEE,GAAIA,aAAiB8E,MACnB,MAAO,CACLC,UAAW/E,EAAM+E;AAKrB,IACMC,EADStL,OAAOsD,UAAU2H,SAASzH,KAAK8C,GACzBgF,MAAM;AAC3B,GAAIA,GAASA,EAAM,GACjB,MAAO,IAAAN,OAAIM,EAAM,GAAE,IAIrB,CAFA,MAAArE,GAEA,CAEF,MAAO,kBACT,CApBA,CAxD0C8D;AACxC,GAAwB,aAApBI,GAAsD,YAApBA,GAAqD,YAApBA,EACrE,OAAOA;AAMT,IAAMI,EAAiBlI;AACvB,GAAI4G,EAAuBvB,IAAI6C,GAC7B,MAAO,sBAAAP,OAAsBf,EAAuBrG,IAAI2H,GAAgB;AAI1E,IAAMC,WAAc1I,EAAoB,GAAAkI,OAAGH,EAAU,KAAAG,OAAIlI,GAAQ+H,EAC3D1H,EAASjB,MAAMiG,QAAQ4C,GAAqB,GAAuB;AAIzE,OAHAd,EAAuBwB,IAAIF,EAAgBC,GAC3CV,EAAMvI,KAAK,CAAEc,OAAQ0H,EAA4D5H,OAAMA,EAAEwH,KAAMa,IAExFrI,CACT,CA8EA,SAASyH,EAAuBd,EAA2B4B,EAAuCrI,GAChGhD,EAAQV,KACN,8BAAAqL,OAA8BU,EAAU,gCAAAV,OAA+BlB,EAAiB,gBACxFzG,EAEJ,CC1PA,IAAAsI,EAAA,WAIE,SAAAA,EAAoBC,GAAArK,KAAAqK,mBAHZrK,KAAAsK,UAAsC,EAG8C,CAoB9F,OAlBEF,EAAArI,UAAAwI,UAAA,SAAUC,GAAV,IAAAC,EAAAzK;AAKE,OAJKA,KAAKsK,UAAU/K,QAAUS,KAAKqK,mBACjCrK,KAAK0K,kBAAoB1K,KAAKqK,iBAAiBrK,YAAA,GAEjDA,KAAKsK,UAAUtJ,KAAKwJ,GACb,CACLG,YAAa,WACXF,EAAKH,UAAYG,EAAKH,UAAUM,iBAAQC,GAAU,OAAAL,IAAMK,CAAN,KAC7CJ,EAAKH,UAAU/K,QAAUkL,EAAKC,mBACjCD,EAAKC,mBAET,EAEJ,EAEAN,EAAArI,UAAA+I,OAAA,SAAOC,GACL/K,KAAKsK,UAAU3L,kBAASqM,GAAa,OAAAA,EAASD,EAAT,GACvC,EACFX,CAAA,CAxBA;AA0BM,SAAUa,IAAoB,QAAAC,EAAA,GAAA7L,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAA6L,EAAA7L,GAAAC,UAAAD;AAClC,OAAO,IAAI+K,YAAee,GACxB,IAAMC,EAAgCF,EAAY5J,cAAK+J,GACrD,OAAAA,EAAWd,oBAAWQ,GAAS,OAAAI,EAAiBL,OAAOC,EAAxB,GAA/B;AAEF,OAAO,WAAM,OAAAK,EAAczM,kBAAS2M,GAAiB,OAAAA,EAAaX,aAAb,GAAxC,CACf,GACF,CC5BM,SAAUY,EAAqBC,GACnC,IAAIvL,EAAmB,GACjBwL,EAAmB,IAAIrB,EAEvBsB,EAAiB,CACrBC,WAAY,WAAM,OAAAzD,EAAUjI,EAAV,EAElB2L,WAAY,SAACC,GACiB,WAAxBlF,EAAQkF,IACV5L,EAAUqI,EAASuD,GACnBL,EAAoBjF,mBAAmBtG,IAEvCyL,EAAeI,eAEjBL,EAAiBX,QACnB,EAEAiB,mBAAoB,SAACxK,EAAayK,GAChC/L,EAAQsB,GAAO+G,EAAS0D,GACxBR,EAAoBjF,mBAAmBtG,GACvCwL,EAAiBX,QACnB,EAEAmB,sBAAuB,SAAC1K,UACftB,EAAQsB,GACfiK,EAAoBjF,mBAAmBtG,GACvCwL,EAAiBX,QACnB,EAEAgB,aAAc,WACZ7L,EAAU,GACVuL,EAAoBhF,oBACpBiF,EAAiBX,QACnB,EAEAW,iBAAgBA;AAElB,OAAOC,CACT,CC7CO,ICaKQ,EDbCC,EAAkB,CAC7BC,QAAS,UACTC,YAAa;CCWf,SAAYH,GACVA,EAAAI,0BAAA,4BACAJ,EAAAK,cAAA,gBACAL,EAAAM,0BAAA,4BACAN,EAAAO,qBAAA,uBACAP,EAAAQ,QAAA,SACD,CAND,CAAYR,MAAmB;AAQ/B,IAAMS,GAAwD,IAAI7L;AAkB5D,SAAU8L,GAA6BC,GAC3C,OAAOF,GAA4BxF,IAAI0F,EACzC,CCvCM,SAAUC,GAAYC,GAC1B,OAAqB,IAAdA,GAAmC,IAAhBC,KAAKC,UAAkBF,CACnD,CAEM,SAAUG,GAAMC,EAAaC,GACjC,OAAQD,EAAIE,QAAQD,EACtB,CAEM,SAAUE,GAAavI,GAC3B,OAAOwI,GAASxI,IAAUA,GAAS,GAAKA,GAAS,GACnD,CAEM,SAAUwI,GAASxI,GACvB,MAAwB,iBAAVA,CAChB,CChBO,IAsGHyI,GAtGSC,GAAa,IACbC,GAAa,IACbC,GAAW,GAAKD;AAUvB,SAAUE,GAAiBC,GAC/B,MAAO,CAAEA,SAAQA,EAAEC,WAOUC,EAPuBF,EAQ9CG,EAAmBC,KAAYC,YAAYC,MAE7CH,EAAkBI,KACbpB,KAAKE,MAAMmB,GAAYL,EAAiBD,IAmE7C,SAAuBA,GAC3B,OAAOf,KAAKE,MAAMmB,GAAYD,KAAsBL,GACtD,CAFM,CAjEgBA;AANtB,IAA+BA,EACvBC,CAPR,CAEM,SAAUM,GAAkBR,GAChC,MAAO,CAAED,SAAUU,GAAgBT,GAAYA,UAASA,EAC1D,CAiBM,SAAUU,GAAiBC,GAC/B,OAAKlB,GAASkB,GAGPvB,GAAiB,IAAXuB,EAAgB,GAFpBA,CAGX,CAEM,SAAUR,KAMd,WAAW3G,MAAOC,SACpB,CAEM,SAAUmH,KACd,OAAOT,IACT,CAEM,SAAUU,KACd,OAAOT,YAAYC,KACrB,CAEM,SAAUS,KACd,MAAO,CAAEf,SAAUc,KAAeb,UAAWY,KAC/C,CAEM,SAAUG,KACd,MAAO,CAAEhB,SAAU,EAAmBC,UAAWM,KACnD,CAIM,SAAUU,GAAQC,EAAeC,GACrC,OAAQA,EAAMD,CAChB,CAKM,SAAUV,GAAYY,EAAWC,GACrC,OAAOD,EAAIC,CACb,CASM,SAAUX,GAAgBY,GAC9B,OAAQA,EAAYf,IACtB,CAeA,SAASA,KAIP,gBAHIZ,KACFA,GAAkBU,YAAYkB,OAAO5B,iBAEhCA,EACT,CCnFA,IAAM6B,GAAmB;AAEnB,SAAUC,GAAkBC,GAChC,IAAMC,EAAsB,GAExBC,EAAgBC,GAAeH,EAAI,SACjCI,EAAWC,OAAOL;AAkBxB,OAjBIE,GAAiBhO,EAAWgO,EAAeE,KAC7CF,EAAgBA,EAAc/N,MAAMiO,EAASpQ,SAE3CkQ,GACFA,EAAcI,MAAM,MAAMlR,kBAASmR,GACjC,IAAMC,EAwBZ,SAAyBD,GACvB,IAAME,EAAQC,GAAeC,KAAKJ;AAElC,GAAKE,EAAL,CAIA,IAAMG,EAAWH,EAAM,IAAqC,IAA/BA,EAAM,GAAGxP,QAAQ,UACxC4P,EAASJ,EAAM,IAAmC,IAA7BA,EAAM,GAAGxP,QAAQ,QACtC6P,EAAWC,GAAeJ,KAAKF,EAAM;AAS3C,OAPII,GAAUC,IAEZL,EAAM,GAAKK,EAAS,GACpBL,EAAM,GAAKK,EAAS,GACpBL,EAAM,GAAKK,EAAS,IAGf,CACLjR,KAAM+Q,EAAW,CAACH,EAAM,IAAM,GAC9BO,OAAQP,EAAM,IAAMA,EAAM,UAC1BQ,KAAMR,EAAM,IAAMX,GAClBS,KAAME,EAAM,IAAMA,EAAM,UACxBS,IAAMN,SAAWH,EAAM,GAlBzB,CAoBF,CAzBA,CAvBwBF,IAoDxB,SAAkCA,GAChC,IAAME,EAAQU,GAA6BR,KAAKJ;AAEhD,GAAKE,EAIL,MAAO,CACL5Q,KAAM,GACNmR,OAAQP,EAAM,IAAMA,EAAM,UAC1BQ,KAAMnB,GACNS,KAAME,EAAM,IAAMA,EAAM,UACxBS,IAAKT,EAAM,GAEf,CAdA,CApD0DF,IAuE1D,SAAsBA,GACpB,IAAME,EAAQW,GAAcT,KAAKJ;AACjC,GAAKE,EAIL,MAAO,CACL5Q,KAAM,GACNmR,OAAQP,EAAM,IAAMA,EAAM,UAC1BQ,KAAMR,EAAM,IAAMX,GAClBS,MAAOE,EAAM,GACbS,IAAKT,EAAM,GAEf,CAbA,CAvEgFF,IA0FhF,SAAwBA,GACtB,IAAME,EAAQY,GAAcV,KAAKJ;AACjC,GAAKE,EAAL,CAIA,IAAMI,EAASJ,EAAM,IAAMA,EAAM,GAAGxP,QAAQ,YAAc,EACpD6P,EAAWQ,GAAcX,KAAKF,EAAM;AAS1C,OAPII,GAAUC,IAEZL,EAAM,GAAKK,EAAS,GACpBL,EAAM,GAAKK,EAAS,GACpBL,EAAM,WAGD,CACL5Q,KAAM4Q,EAAM,GAAKA,EAAM,GAAGH,MAAM,KAAO,GACvCU,OAAQP,EAAM,IAAMA,EAAM,UAC1BQ,KAAMR,EAAM,IAAMX,GAClBS,KAAME,EAAM,IAAMA,EAAM,UACxBS,IAAKT,EAAM,GAjBb,CAmBF,CAvBA,CA1FwGF;AAC9FC,KACGA,EAAWS,MAAQT,EAAWD,OACjCC,EAAWS,KAAOnB,IAGpBG,EAAMxO,KAAK+O,GAEf,IAGK,CACLe,QAASpB,GAAeH,EAAI,WAC5B3Q,KAAM8Q,GAAeH,EAAI,QACzBC,MAAKA,EAET,CACA,IAAMuB,GAAU,iGACVC,GAAe,cACff,GAAiB,IAAIzI,OAAO,qBAAAiC,OAAqBsH,IAAOtH,OAAGuH,GAAY,KAAAvH,OAAIuH,GAAY,cAAc,KAErGV,GAAiB,IAAI9I,OAAO,YAAAiC,OAAYuH,IAAYvH,OAAGuH,GAAY,QA6BnEN,GAA+B,IAAIlJ,OAAO,YAAAiC,OAAYsH,IAAOtH,OAAGuH,GAAY,KAAAvH,OAAIuH,GAAY,WAAW,KAkBvGL,GACJ,gHAiBIC,GACJ,4IACIC,GAAgB;AA2BtB,SAASnB,GAAepP,EAAoB0L,GAC1C,GAAyB,iBAAd1L,GAA2BA,GAAe0L,KAAY1L,EAAjE,CAGA,IAAMyE,EAASzE,EAAuC0L;AACtD,MAAwB,iBAAVjH,EAAqBA,QAFnC,CAGF,CAaA,IAAMkM,GACJ;ACrKI,SAAUC,KAOd,IAEIC,EADE9S,EAAQ,IAAI+S;AAIlB,IAAK/S,EAAMmR,MACT,IACE,MAAMnR,CAGR,CAFE,MAAO6B,GAET,CASF,OANAH,cACE,IAAMsR,EAAa/B,GAAkBjR;AACrCgT,EAAW7B,MAAQ6B,EAAW7B,MAAM9N,MAfT,GAgB3ByP,EAAiBG,GAAmBD,EACtC,IAEOF,CACT,CAEM,SAAUG,GAAmB9B,GACjC,IAAI+B,EAASC,GAAmBhC;AAQhC,OAPAA,EAAMA,MAAM7Q,kBAAS8S,GACnB,IAAMjB,EAAsB,MAAfiB,EAAMjB,KAAe,cAAgBiB,EAAMjB,KAClDpR,EAAOqS,EAAMrS,MAAQqS,EAAMrS,KAAKG,OAAS,EAAI,IAAAkK,OAAIgI,EAAMrS,KAAK2I,KAAK,MAAK,KAAM,GAC5E+H,EAAO2B,EAAM3B,KAAO,IAAArG,OAAIgI,EAAM3B,MAAS,GACvCS,EAASkB,EAAM3B,MAAQ2B,EAAMlB,OAAS,IAAA9G,OAAIgI,EAAMlB,QAAW;AACjEgB,GAAU,UAAA9H,OAAU+G,GAAK/G,OAAGrK,EAAI,OAAAqK,OAAMgI,EAAMhB,KAAIhH,OAAGqG,GAAIrG,OAAG8G,EAC5D,IACOgB,CACT,CAEM,SAAUC,GAAmBhC,GACjC,MAAO,GAAA/F,OAAG+F,EAAM5Q,MAAQ,QAAO,MAAA6K,OAAK+F,EAAMsB,QAC5C,CC9CO,IAAMY,GAAiC;AAaxC,SAAUC,GAAgBjM,GAQf,IAPf2L,EAAU3L,EAAA2L,WACVO,EAAalM,EAAAkM,cACbC,EAAanM,EAAAmM,cACbC,EAAWpM,EAAAoM,YACXC,EAAcrM,EAAAqM,eACdjQ,EAAM4D,EAAA5D,OACNkQ,EAAQtM,EAAAsM,SAEFC,EAAkBL,aAAyBR,MAE3CN,EAsBR,SACEO,EACAY,EACAF,EACAH,GAIA,OAAOP,iBAAYP,WAAWO,iBAAYzS,MACtCyS,EAAWP,QACVmB,EAEC,gBADA,GAAAxI,OAAGsI,EAAc,KAAAtI,OAAI3E,EAAcwD,EAASsJ,IAEpD,CAbA,CAtBiCP,EAAYY,EAAiBF,EAAgBH,GACtEpC,EAoCR,SAAwByC,EAA0BZ,GAChD,gBAAIA,MAGAY,GAKGZ,EAAW7B,MAAMjQ,OAAS,IAAM8R,EAAW7B,MAAMjQ,OAAS,YAAK8R,EAAW7B,MAAM,GAAGiB,KAC5F,CAVA,CApC+BwB,EAAiBZ,GAC1CC,GAAmBD,GACnBK,GACEQ,EAASD,EAAkBE,GAAmBP,EAAiC9P;AAIrF,MAAO,CACLgQ,YAAWA,EACXhQ,OAAMA,EACNkQ,SAAQA,EACRH,cAAaA,EACbD,cAAaA,EACbQ,KATWf,iBAAYzS,KAUvBkS,QAAOA,EACPtB,MAAKA,EACL0C,OAAMA,EACNG,YAZkBC,GAAoBV,GAc1C,CA6BM,SAAUU,GAAoBV,GAClC,OAAOA,aAAyBR,OAAS,mBAAoBQ,EACzDhC,OAAOgC,EAAcW,sBAE3B,CAMM,SAAUJ,GAAmB9T,EAAuBmU,GAGxD,IAFA,IAAIC,EAAepU,EACb6T,EAA0B,IACzBO,iBAAcC,iBAAiBtB,OAASc,EAAO3S,OAAS,IAAI,CACjE,IAAM8R,EAAa/B,GAAkBmD,EAAaC;AAClDR,EAAOlR,KAAK,CACV8P,QAAS2B,EAAaC,MAAM5B,QAC5BhP,OAAQ0Q,EACRJ,KAAMf,iBAAYzS,KAClB4Q,MAAO6B,GAAcC,GAAmBD,KAE1CoB,EAAeA,EAAaC,KAC9B,CACA,OAAOR,EAAO3S,OAAS2S,QACzB,CCzGO,IAAMS,GAAsB,cAEtBC,GAAkB,gBAIlBC,GAAsB;ACA7B,SAAUC,GAAgBV,EAA4BW,GAC1D,IAAMrP,EAAYhB,OAAyBsQ;AACvCtP,GACFA,EAAS,CAAE0O,KAAIA,EAAEW,QAAOA,GAE5B,CCQM,SAAUE,KAAe,IAAA/S,EACvBgT,EAAYxQ,OAAOwQ;AACzB,MAAO,CACLC,OAAQD,EAAUE,OAAS,YAAc,gBACzCC,WAAYH,EAAUI,YAAcJ,EAAUI,WAAWlB,KAAO,CAACc,EAAUI,WAAWlB,aACtFmB,eAAoC,QAApB7N,EAAAwN,EAAUI,sBAAU5N,WAAE8N,cAE1C,CClBM,SAAUC,GAAc5S,EAAYE,GACxC,IAAM2S,EAAQ7S,EAAML,QAAQO;AACxB2S,GAAS,GACX7S,EAAM8S,OAAOD,EAAO,EAExB,CCXA,ICMYE,MDJZC,GAAA,oBAAAA,IACU7T,KAAA8T,OAAkC,EAiB5C,QAfED,EAAA9R,UAAAqF,IAAA,SAAI1D,GACa1D,KAAK8T,OAAO9S,KAAK0C,GANf,KAQf1D,KAAK8T,OAAOH,OAAO,EAAG,EAE1B,EAEAE,EAAA9R,UAAAgS,OAAA,SAAOrQ,GACL+P,GAAWzT,KAAK8T,OAAQpQ,EAC1B,EAEAmQ,EAAA9R,UAAAiS,MAAA,SAAMC,GACJjU,KAAK8T,OAAOnV,kBAAS+E,GAAa,OAAAA,EAASuQ,EAAT,IAClCjU,KAAK8T,OAAOvU,OAAS,CACvB,EACFsU,CAAA,CAlBA,GEFaK,GACN,MADMA,GAEI,gBAFJA,GAGJ,QC2BHC,GAAqB,CACzB,0CACA,wCACA,wCACA,wCACA,mBACA,eAcIC,GAAqC,CPhDR,gBOmD/BC,GAA0B,IAAIR,GAC9BS,GAA+B,SAACC,GAClCF,GAAwBjN,gBAAU,OAAAkN,GAA6BC,EAA7B,GACpC;AAsGM,SAAUC,GAAkB1D,EAAiB7Q,GACjDE,EAAsBnC,EAAeE,MAAO4S,EAAS7Q,GACrDqU,GACE3S,EACE,CACEyQ,KAAM8B,GACNpD,QAAOA,EACPqC,OAAM,SAERlT,GAGN,CAEM,SAAUwU,GAAkBvU,EAAYD,GAC5CqU,GACE3S,EACE,CACEyQ,KAAM8B,GACNf,OAAM,SAsBR,SAAsBjT,GAC1B,GAAIA,aAAakR,MAAO,CACtB,IAAMC,EAAa/B,GAAkBpP;AACrC,MAAO,CACL7B,MAAO,CACLqW,KAAMrD,EAAWzS,KACjB4Q,MAAO8B,GAAmBqD,GAAoBtD,KAEhDP,QAASO,EAAWP,QAExB,CACA,MAAO,CACLzS,MAAO,CACLmR,MAAOkC,IAETZ,QAAS,GAAArH,OAAA,gBAAAA,OAA8B3E,EAAc5E,IAEzD,CAjBM,CApBYA,GACZD,GAGN,CASM,SAAU2U,GAAkBC,GAChCP,GAA6B,CAC3BlC,KAAM8B,GACNW,MAAKA,GAET,CAqBM,SAAUF,GAAoBtD,GAIlC,OAHAA,EAAW7B,MAAQ6B,EAAW7B,MAAM5E,iBACjC6G,GAAU,OAACA,EAAMhB,KAAO0D,GAAmBpO,eAAM+O,GAAoB,OAAArT,EAAWgQ,EAAMhB,IAAMqE,EAAvB,GAA3D,IAENzD,CACT,CFvIM,SAAU0D,GACdC,EACAC,EACAC,EACAC,EACAjR,GAEA,OAAOkR,GAAkBJ,EAAeC,EAAa,CAACC,GAAYC,EAAUjR,EAC9E,CAcM,SAAUkR,GACdJ,EACAC,EACAI,EACAF,EACAzP,GAAwD,IAAxD4P,WAAA5P,EAAsD,GAAEA,EAAtD6P,EAAID,EAAAC,KAAEC,EAAOF,EAAAE,QAAEC,EAAOH,EAAAG,QAElBC,EAAsB5V,YAASyU,IAC9BA,EAAMzK,WAAcyK,EAAMoB,eAAkBX,EAAcY,wBAG3DL,GACF7O,IAEFyO,EAASZ,GACX,IAEMrQ,EAAUuR,EAAU,CAAED,QAAOA,EAAEC,QAAOA,GAAKD,EAE3CpO,EAAMhE,EAAuB6R,EAAa;AAGhD,SAASvO,IACP,IAAMqN,EAAS3Q,EAAuB6R,EAAa;AACnDI,EAAW1W,kBAASuW,GAAc,OAAAnB,EAAO9R,KAAKgT,EAAaC,EAAWQ,EAAqBxR,EAAzD,GACpC,CAEA,OAPAmR,EAAW1W,kBAASuW,GAAc,OAAA9N,EAAInF,KAAKgT,EAAaC,EAAWQ,EAAqBxR,EAAtD,IAO3B,CACLwC,KAAIA,EAER,EAtIYkN,WAAS,KACnBiC,cAAA,eACAjC,GAAAkC,MAAA,QACAlC,GAAAmC,UAAA,WACAnC,GAAAoC,SAAA,UACApC,GAAAqC,KAAA,OACArC,GAAAsC,UAAA,WACAtC,GAAAuC,OAAA,SACAvC,GAAAwC,YAAA,aACAxC,GAAAyC,UAAA,WACAzC,GAAA0C,WAAA,YACA1C,GAAA2C,kBAAA,mBACA3C,GAAA4C,UAAA,WACA5C,GAAA6C,OAAA,SACA7C,GAAA8C,OAAA,SACA9C,GAAA+C,mBAAA,mBACA/C,GAAAgD,aAAA,cACAhD,GAAAiD,WAAA,YACAjD,GAAAkD,eAAA,gBACAlD,GAAAmD,YAAA,aACAnD,GAAAoD,UAAA,WACApD,GAAAqD,WAAA,YACArD,GAAAsD,SAAA,UACAtD,GAAAuD,WAAA,YACAvD,GAAAwD,MAAA,QACAxD,GAAAyD,KAAA,OACAzD,GAAA0D,aAAA,cACA1D,GAAA2D,OAAA,SACA3D,GAAA4D,OAAA,SACA5D,GAAA6D,MAAA,QACA7D,GAAA8D,KAAA,OACA9D,GAAA+D,MAAA,QACA/D,GAAAgE,0BAAA,0BACAhE,GAAAiE,iBAAA,kBACAjE,GAAAkE,QAAA;AGnCF,IAEMC,GAAgD;AAEhD,SAAUC,GACdhD,EACAtJ,EACAuM,EACAC,GAEA,IAAMC,EA2BF,SAA0BF,EAAoBC,GAClD,MAAO,GAAAzO,OAtCwB,QAsCG,KAAAA,OAAIwO,EAAU,KAAAxO,OAAIyO,EACtD,CAFM,CA3B+BD,EAAYC;AAqB/C,SAASE,IACP,IAAMC,EAAaC,aAAaC,QAAQJ;AACxC,OAAsB,OAAfE,EAAuBnT,KAAKsT,MAAMH,GAA0B,EACrE,CAtBAN,GAAiB/W,KACf+T,GAAiBC,EAAetS,OAAQkR,GAAUkE,kBAAUpS,GAAO,IAALnE,EAAGmE,EAAAnE;AAC3D4W,IAAe5W,GAUrBmK,EAAeE,WAAWwM,IAP1B,KAEF1M,EAAeD,iBAAiBlB,sBAS9B+N,aAAaG,QAAQN,EAAYjT,KAAKC,UAAUuG,EAAeC,cACjE,IARAD,EAAeE,WAAWzD,EAAQiQ,IAAkB1M,EAAeC,cAcrE,CCmBM,SAAU+M,KACd,IAAIC,EAAS,GACTC,EAAmB;AAEvB,MAAO,CACLC,WAEIC,cACF,OAAQH,CACV,EAEAI,MAAK,SAAChO,EAAMrH,GACV,IAAMsV,EAA8BlW,EAAkBiI;AACtD6N,GAAoBI,EACpBL,GAAU5N,EACNrH,GACFA,EAASsV,EAEb,EAEAC,OAAM,SAACvV,GACLA,EAAS1D,KAAKkZ,aAChB,EAEAA,WAAU,WACR,IAAM3H,EAAS,CACboH,OAAMA,EACNC,iBAAgBA,EAChBO,cAAeP,EACfQ,YAAa;AAIf,OAFAT,EAAS,GACTC,EAAmB,EACZrH,CACT,EAEA8H,0BAAyB,SAACtO,GACxB,OAAOA,EAAKxL,MACd,EAEJ,CC1FM,SAAU+Z,GAAaC,GAE3B,IAAMC,EAAO7X,EAAO,GAAI4X;AAOxB,MANa,CAAC,KAAM,OAAQ,SACvB5a,kBAAS4C,GACRA,KAAOiY,IACTA,EAAKjY,GAAOqO,OAAO4J,EAAKjY,IAE5B,IACOiY,CACT,CClBM,SAAUC,GAA+BC,EAA+BC,GACvEA,EAAkBC,oBACrB9a,EAAQT,MAAM,GAAAoL,OAAGiQ,EAAO,4BAE5B,CCYM,SAAUG,KACd,IAAMC,EAuCC5X,IAAgD6X;AArCvD,GAAKD,EAIL,MAAO,CACLE,gBAAe,eAAAC;AACb,OAAO/U,KAAKsT,OAAuC,QAAjC9S,EAAAoU,EAAkBE,2BAAetU,WAAAzD,KAAA6X,KAAQ,KAC7D,EACAI,gBAAe,eAAAD;AACb,OAAwC,QAAjCvU,EAAAoU,EAAkBI,2BAAexU,WAAAzD,KAAA6X,EAC1C,EACAK,uBAAsB,WACpB,OAAOjV,KAAKsT,MAAMsB,EAAkBK,yBACtC,EACAC,KAAI,SAACC,EAAc9F,EAAU+F,GAC3B,IAAMC,EAAOD,EAAS,CAAEE,GAAIF;AAC5BR,EAAkBM,KAAKlV,KAAKC,UAAU,CAAEkV,UAASA,EAAE9F,MAAKA,EAAEgG,KAAIA,IAChE,EAEJ,CAEM,SAAUE,GAAeC,GAC7B,IAAMC,EAASd;AACf,QAASc,GAAUta,EAASsa,EAAOX,kBAAmBU,EACxD,CAEM,SAAUE,GAAkBC,GAA0D,IAAAZ;KAAA,IAA1DY,MAAgD,QAAhDnV,EAAcxD,IAA0B4Y,oBAAQpV,WAAEqV;AAClF,IAAMJ,EAASd;AACf,QACIc,GACFA,EACGR,yBACApU,eAAMiV,GAAgB,OAAAH,IAAgBG,IjCiBpB1a,EiCjB4Cua,EjCiBzBta,EiCjBsC,IAAAkJ,OAAIuR,GjCkB7E1a,EAAUoB,OAAOnB,EAAOhB,UAAYgB;AADvC,IAAmBD,EAAmBC,CiCjBf,GAE7B,CCpDM,SAAU0a,GAAaC,GAC3B,OAAOA,GAEFC,SAASD,EAAa,IAAwB,GAAhBlO,KAAKC,UAAmBkO,SAASD,EAAa,IAAM,GAAKxR,SAAS,IACjG,GAAAD,OAAG,IAAG,KAAAA,OAAI,IAAG,KAAAA,OAAI,IAAG,KAAAA,OAAI,IAAG,KAAAA,OAAI,MAAO2R,QAAQ,SAAUH,GAC9D,CAEA,ICeII,GA6CAC,GD5DEC,GAA4B;AAE5B,SAAUC,GAAwBC,EAAmB7c,GAGzD,IAFA2c,GAA0BG,UAAY,IAEzB,CACX,IAAM3R,EAAQwR,GAA0BrL,KAAKuL;AAC7C,IAAI1R,EAKF;AAJA,GAAIA,EAAM,KAAOnL,EACf,OAAOmL,EAAM,EAKnB,CACF,CAiBM,SAAU4R,GAAarb,EAAmBf,EAAgBqc,kBAAA;AAC9D,IAAMC,EAAWvb,EAAUwb,WAAWvc,EAAS,GAEzCwc,EAD0BF,GAAY,OAAUA,GAAY,MAChBtc,EAAS,EAAIA;AAE/D,OAAIe,EAAUf,QAAUwc,EACfzb,EAGF,GAAAmJ,OAAGnJ,EAAUoB,MAAM,EAAGqa,IAAgBtS,OAAGmS,EAClD,CC1CM,SAAUI,GAAUpd,EAAcmG,EAAekX,EAAqB/X,GAC1E,IAAMgY,EAAO,IAAI5U;AACjB4U,EAAKC,QAAQD,EAAK3U,UAAY0U;AAC9B,IAAMG,EAAU,WAAA3S,OAAWyS,EAAKG,eAC1BC,EAAWpY,GAAWA,EAAQqY,UAAY,OAAS,SACnDC,EAAStY,GAAWA,EAAQsY,OAAS,WAAA/S,OAAWvF,EAAQsY,QAAW,GACnEC,EAASvY,GAAWA,EAAQuY,OAAS,UAAY,GACjDC,EAAcxY,GAAWA,EAAQwY,YAAc,eAAiB;AACtEC,SAASC,OAAS,GAAAnT,OAAG7K,EAAI,KAAA6K,OAAI1E,EAAK,KAAA0E,OAAI2S,EAAO,qBAAA3S,OAAoB6S,GAAQ7S,OAAG+S,GAAM/S,OAAGgT,GAAMhT,OAAGiT,EAChG,CAEM,SAAUG,GAAUje,GACxB,OAAO4c,GAAwBmB,SAASC,OAAQhe,EAClD,CAQM,SAAUke,GAAcle,GAI5B,OAHKyc,KACHA,GDNE,SAAmCI,GACvC,IAAMlK,EAAS,IAAIwL;AAGnB,IAFAxB,GAA0BG,UAAY,IAEzB,CACX,IAAM3R,EAAQwR,GAA0BrL,KAAKuL;AAC7C,IAAI1R,EAGF;AAFAwH,EAAOrH,IAAIH,EAAM,GAAIA,EAAM,GAI/B,CACA,OAAOwH,CACT,CAbM,CCM0CoL,SAASC,SAEhDvB,GAAiBhZ,IAAIzD,EAC9B,CAMM,SAAUoe,GAAape,EAAcsF,GACzC8X,GAAUpd,EAAM,GAAI,EAAGsF,EACzB,CC3CO,ICkBH+Y;ADRE,SAAUC,KACd,OAAOC,QACJza,OAAyB0a,iCAAmCN,GAVf,kCAYlD,CCKA,SAASO,KACP,OAAOJ,YAAiBA,GAIpB,SAAwB3Z,GAA8B,IAAA2W;KAAA,IAA9B3W,MAAAZ;AAC5B,IAAM4a,EAAYha,EAAc4P,UAAUoK;AAC1C,OAAKha,EAAsBia,QAAU,iBAAiBxa,KAAKua,GACzD,EAOqD,KAAvB,QAA9B5X,EAAApC,EAAc4P,UAAUsK,kBAAM9X,WAAElF,QAAQ,WACvC,UAAUuC,KAAKua,KAAe,kBAAkBva,KAAKua,GAEtD,EAGGha,EAAcqZ,SAAiBc,aAClC,EAGF,CACF,CArBM,EAHN,CCpBO,IAAMC,GAAoB,QCDpBC,GAAyB,EAAIhQ,GAC7BiQ,GAA2B,GAAKlQ,GCEvCmQ,GAAuB;AAoBvB,SAAUC,GAA2BC,GACzC,OAAO/X,EAAc+X,EACvB,CAEM,SAAUC,GAAiBD,GAC/B,OAAQD,GAA2BC,EACrC,CAEM,SAAUE,GAAwBF,GACtC,gBAAOA,EAAQG,wBAIQC,EAJoCJ,GAQ3CK,SAAyBnQ,KAAYoQ,OAAOF,EAAaC,SAAWT,eACjFQ,EAAaG,QAAwBrQ,KAAYoQ,OAAOF,EAAaG;AAL1E,IAAyBH,CAHzB,CAYM,SAAUI,GAAmBR,GACjCA,EAAQO,OAAS1O,OAAO3B,KAAY2P,GACtC,CAEM,SAAUY,GAAgBT,GAC9B,OAAOvc,EAAcuc,GAClBzc,cAAKoE,GAAY,IAAXnE,EAAGmE,EAAA,GAAEX,EAAKW,EAAA;AAAM,SAAA+D,OAAGlI,EAAG,KAAAkI,OAAI1E,EAAV,IACtBgD,KAhD2B,IAiDhC,CAEM,SAAU0W,GAAeC,GAC7B,IAAMX,EAAwB;AAU9B,OAGF,SAA8BW,GAC5B,QACIA,KACmD,IAApDA,EAAcle,QApEa,MAoE8Bqd,GAAqB9a,KAAK2b,GAExF,CALA,CAZ2BA,IACvBA,EAAc7O,MAtDc,KAsDiBlR,kBAASggB,GACpD,IAAMC,EAAUf,GAAqB3N,KAAKyO;AAC1C,GAAgB,OAAZC,EAAkB,CACX,IAAArd,EAAcqd,EAAO,GAAhB7Z,EAAS6Z,EAAO;AAC9Bb,EAAQxc,GAAOwD,CACjB,CACF,IAEKgZ,CACT,CC1BA,SAASc,KAEP,OAAOJ,GADe5B,GAAUa,IAElC,CChBA,SAASoB,GAAsBX,GAC7B7F,aAAaG,QAAQiF,GAAmBc,GAAgBL,GAC1D,CAEA,SAASY,KAEP,OAAON,GADenG,aAAaC,QAAQmF,IAE7C,CAEA,SAASsB,KACPF,GFpBO,CACLZ,UAbmB,KEiCvB,CC7BO,IAGHe,GADEC,GAAmC;AAGnC,SAAUC,GACdC,EACAC,EACAC,GAAmB,IAAAC;KAAA,IAAnBD,MAAA;AAEQ,IAAAE,EAAiDH,EAAoBG,cAAtDC,EAAkCJ,EAAoBI,eAAtCC,EAAkBL,EAAoBK,cACvEC,EAAkB,SAAC5B,GAA0B,OAAA0B,EAAe9d,EAAO,GAAIoc,EAAS,CAAE6B,KAAMC,IAA3C,EAC7CC,EAAgB,WACpB,IAAM/B,EAAUsB,EAAqBU,kBAC/BH,EAAO7B,EAAQ6B;AAMrB,OAJI7B,EAAQ6B,aACH7B,EAAQ6B,KAGV,CACL7B,QAAOA,EACP6B,KAAIA,EAER;AAKA,GAHKX,KACHA,GAAoBG,GAElBA,IAAeH,GAInB,GAAIO,GAAiBF,GAhCO,IAiC1BU,GAAKX;IADP,CAIA,IAAIQ,EACAI,EAAeH;AACnB,GAAIN,EAAe,CAEjB,GAAIS,EAAaL,KAEf,YADAM,GAAWd,EAAYC,EAAsBC;AAQ/C,GAJAO,EAAc5E,KACd0E,EAAgBM,EAAalC,UAE7BkC,EAAeH,KACEF,OAASC,EAExB,YADAK,GAAWd,EAAYC,EAAsBC,EAGjD,CACA,IAAIa,EAAmBf,EAAWgB,QAAQH,EAAalC;AACvD,GAAIyB,IAEFS,EAAeH,KACEF,OAASC,EACxBK,GAAWd,EAAYC,EAAsBC;IAJjD,CAgBA,GARIa,IACElC,GAAwBkC,GAC1BT,KAEAnB,GAAmB4B,GACnBX,EAAgBG,EAAgBQ,GAAoBV,EAAeU,KAGnEX,KAGIW,IAAoBlC,GAAwBkC,IAAoB,CAGpE,IADAF,EAAeH,KACEF,OAASC,EAExB,YADAK,GAAWd,EAAYC,EAAsBC;AAG/CG,EAAeQ,EAAalC,SAC5BoC,EAAmBF,EAAalC,OAClC,CAIc,QAAhBrY,EAAA0Z,EAAWiB,iBAAK3a,KAAAzD,KAAAmd,EAAGe,GAAoBF,EAAalC,SACpDiC,GAAKX,EA1BL,CA3BA,MANEH,GAAmBle,KAAKoe,EA4D5B,CAEA,SAASc,GAAWd,EAAwBkB,EAAoCC,GAC9E9c,cACE0b,GAA8BC,EAAYkB,EAAcC,EAAyB,EACnF,GA/F8B,GAgGhC,CAEA,SAASP,GAAKM,GACZrB;AACA,IAAMuB,EAAiBtB,GAAmBjW;AACtCuX,GACFrB,GAA8BqB,EAAgBF,EAElD,CCzEM,SAAUG,GACd9G,GAEA,IAAI+G,EHnCA,SAA+B/G,GACnC,IAAMgH,EAoCF,SAA6BhH,GACjC,IAAMgH,EAA+B;AAcrC,OAZAA,EAAclE,SACV9C,EAAkBiH,0BAClBjH,EAAkBkH,wCAClBlH,EAAkBmH,0BACtBH,EAAcpE,YACV5C,EAAkBkH,wCAA0ClH,EAAkBmH,0BAClFH,EAAcjE,cAAgB/C,EAAkBkH,qCAE5ClH,EAAkBoH,+BACpBJ,EAAcnE,ONYZ,WACJ,YAAIlB,GAAmC,CAQrC,IALA,IAAM0F,EAAiB,gBAAAvX,OAAgBwR,MAGjCgG,EAAeve,OAAOoY,SAASC,SAASlL,MAAM,KAChDqR,EAAkBD,EAAaE,MAC5BF,EAAa1hB,SAAWsd,GAAUmE,IACvCE,EAAkB,GAAAzX,OAAGwX,EAAaE,MAAM,KAAA1X,OAAIyX,GAC5ClF,GAAUgF,EANY,OAMqBvT,GAAY,CAAE+O,OAAQ0E;AAEnElE,GAAagE,EAAgB,CAAExE,OAAQ0E,IACvC5F,GAAsB4F,CACxB,CACA,OAAO5F,EACT,CAjBM,IMTGqF,CACT,CAhBM,CApCqChH;AACzC,ONkCI,SAA+BzV,GACnC,YAAIyY,SAASC,QAA4C,OAApBD,SAASC,OAC5C;AAEF,IAGE,IAAMoE,EAAiB,kBAAAvX,OAAkBwR,MACnCmG,EAAkB;AACxBpF,GAAUgF,EAAgBI,EAAiB1T,GAAYxJ;AACvD,IAAMmd,EAAuBxE,GAAUmE,KAAoBI;AAE3D,OADApE,GAAagE,EAAgB9c,GACtBmd,CAIT,CAHE,MAAOhjB,GAEP,OADAS,EAAQT,MAAMA,KAEhB,CACF,CAjBM,CMlCwBsiB,GAAiB,CAAEvO,KAAM,SAAUuO,cAAaA,SAC9E,CAHM,CGmCgDhH;AAIpD,OAHK+G,GAA4B/G,EAAkB2H,8BACjDZ,EFxCE,WACJ,IACE,IAAMlG,EAAKS,KACLsG,EAAU,GAAA9X,OALW,aAKcA,OAAG+Q;AAC5ClC,aAAaG,QAAQ8I,EAAS/G;AAC9B,IAAMgH,EAAclJ,aAAaC,QAAQgJ;AAEzC,OADAjJ,aAAa7E,WAAW8N,GACjB/G,IAAOgH,EAAc,CAAEpP,KAAM,sBAGtC,CAFE,MAAOlS,GACP,MACF,CACF,CAXM,IE0CGwgB,CACT,CCjDM,SAAUe,GAAahR,GAC3B,OAAOiR,GAASjR,EAAKqK,SAAS6G,MAAMA,IACtC,CAeM,SAAUD,GAASjR,EAAamR,GACpC,IAAMC,EA0BR,WACE,YAAIC,GACF,IACE,IAAMrR,EAAM,IAAIsR,GAAY;AAC5BD,GAA8B,qBAAbrR,EAAIkR,IAGvB,CAFE,MAAAjc,GACAoc,KACF,CAEF,OAAOA,GAAiBC,SAC1B,CAVA;AAzBE,GAAIF,EACF,IACE,gBAAOD,EAAqB,IAAIC,EAAapR,EAAKmR,GAAQ,IAAIC,EAAapR,EAG7E,CAFE,MAAOpS,GACP,MAAM,IAAI+S,MAAM,4BAAA3H,OAA4BmG,OAAOvR,GAAM,KAAAoL,OAAI3E,EAAc,CAAE2L,IAAGA,EAAEmR,KAAIA,KACxF,CAEF,YAAIA,IAAuB,IAAI7e,KAAK0N,GAClC,MAAM,IAAIW,MAAM,iBAAA3H,OAAiBgH,EAAG;AAEtC,IAAIuR,EAAMrF,SACJsF,EAAgBD,EAAIE,cAAc;AACxC,YAAIN,EAAoB,CAEtB,IAAMO,GADNH,EAAMrF,SAASyF,eAAeC,mBAAmB,KACzBH,cAAc;AACtCC,EAAYR,KAAOC,EACnBI,EAAIM,KAAKC,YAAYJ,GACrBH,EAAIQ,KAAKD,YAAYN,EACvB,CAEA,OADAA,EAAcN,KAAOlR,EACdwR,CACT,CAEA,IACIH,GADEC,GAAcU;ACvBd,SAAUC,GACd/I,EACAgJ,EACAC,GAEA,IAAMC,EAiBR,SACElJ,EACAgJ,GAEA,IAAMvZ,EAAO,WAAAK,OAAWkZ,GAClBG,EAAQnJ,EAAkBmJ;AAChC,GAAqB,iBAAVA,EAAoB,CAC7B,IAAMC,EAAqBtB,GAAaqB;AACxC,OAAO,SAACne,GAAe,SAAA8E,OAAGsZ,EAAkB,eAAAtZ,OAAcuZ,mBAAmB,GAAAvZ,OAAGL,EAAI,KAAAK,OAAI9E,IAAjE,CACzB,CACA,GAAqB,mBAAVme,EACT,OAAO,SAACne,GAAe,OAAAme,EAAM,CAAE1Z,KAAIA,EAAEzE,WAAUA,GAAxB;AAEzB,IAAMse,EAIR,SAA2BN,EAAsBhJ,GACvC,IAAAjU,EAAuDiU,EAAiBuJ,KAAxEA,WAAIxd,EAAGkN,GAAelN,EAAEyd,EAA+BxJ,EAAiBwJ;AAEhF,GAAkB,SAAdR,GAAwBhJ,EAAkByJ,cAAgBF,IAAStQ,GACrE,OAAOC;AAGT,GAAIsQ,GAA8BD,IAAStQ,GACzC,MAAO,GAAAnJ,OAAG0Z,EAA0B,KAAA1Z,OAAImJ;AAG1C,GzBtEqC,iByBsEjCsQ,EACF,MAAO,oBAAAzZ,OAAoByZ;AAG7B,IAAMG,EAAcH,EAAKrT,MAAM,KACzByT,EAAYD,EAAYlC;AAC9B,MAAO,kBAAA1X,OAAkB4Z,EAAYtb,KAAK,KAAI,KAAA0B,OAAI6Z,EACpD,CAlBA,CAJiCX,EAAWhJ;AAC1C,OAAO,SAAChV,GAAe,iBAAA8E,OAAWwZ,GAAIxZ,OAAGL,EAAI,KAAAK,OAAI9E,EAA1B,CACzB,CAfA,CAjBwEgV,EAAmBgJ;AAEzF,MAAO,CACLY,MAAK,SAACC,EAAczQ,GAClB,IAAMpO,EAsDZ,SACEe,EACAid,EACAC,EACAY,EACAlO,GAA4B,IAJ1BmO,EAAW/d,EAAA+d,YAAEN,EAA0Bzd,EAAAyd,2BAIvCO,EAAKpO,EAAAoO,MAAEC,EAAQrO,EAAAqO,SAEXC,EAAO,CAAC,eAAAna,OAAe,iBAAAA,OAAA+Z,IAA8B/Z,OAAAmZ;AACvDc,GACFE,EAAK5iB,KAAK,eAAAyI,OAAeia,EAAMG,OAAS,eAAApa,OAAeia,EAAMI;AAG/D,IAAMnf,EAAa,CACjB,mBACA,UAAA8E,OAAUuZ,mBAAmBY,EAAK7b,KAAK,OACvC,cAAA0B,OAAcga,GACd,yBAAAha,OAAyBuZ,mBAAmB,WAC5C,wBACA,iBAAAvZ,OAAiBwR;AAenB,OAZI0I,GACFhf,EAAW3D,KAAK,mBAAAyI,OAAmBka,IAGnB,QAAdhB,GACFhe,EAAW3D,KAAK,cAAAyI,OAAciF,OAG5ByU,GACFxe,EAAWof,UAGNpf,EAAWoD,KAAK,IACzB,CAlCA,CAtDiD4R,EAAmBgJ,EAAWC,EAAmBY,EAAKzQ;AACjG,OAAO8P,EAAuBle,EAChC,EACAqf,UAAWnB,EAAuB,IAClCF,UAASA,EAEb,CCjCO,IAsBDsB,GAAuB;AAEvB,SAAUC,GAAS3iB,EAAa4iB,GAIpC,IAAMC,EA5BsB,IA4BY7iB,EAAIhC,OAAS,GAEjD4kB,EAAS5kB,OAAS6kB,GAAkBH,GAAqBlhB,KAAKohB,KAChErlB,EAAQV,KACN,GAAAqL,OAAGlI,EAAG,8EAAAkI,OAA6EzK,EAAW;AAMlG,IAAMqlB,EAAiBF,EAAS/I,QAAQ,KAAM;AAE9C,MAAO,GAAA3R,OAAGlI,EAAG,KAAAkI,OAAI4a,EACnB,CC7BO,IAAMC,GAAsB,CACjCC,MAAO,QACPC,KAAM,OACNC,gBAAiB,mBAINC,GAAwB,CACnCC,IAAK,MACLC,QAAS;AAyKX,SAASC,GAAcC,EAAcC,GACnC,OAAID,SAAoD,iBAARA,IAC9ChmB,EAAQT,MAAM,GAAAoL,OAAGsb,EAAO,oCAI5B,CCjMM,SAAUC,GAAcjkB,GAC5B,IAAMkkB,EAAWte,EAAQ5F;AACzB,MAAoB,WAAbkkB,GAAsC,aAAbA,GAA2BlkB,aAAgByG,MAC7E,CAOM,SAAU0d,GAAUC,EAAqBpgB,EAAeqgB,GAC5D,gBAD4DA,UACrDD,EAAKpf,eAAMhF,GAChB,IACE,GAAoB,mBAATA,EACT,OAAOA,EAAKgE;AACP,GAAIhE,aAAgByG,OACzB,OAAOzG,EAAKgC,KAAKgC;AACZ,GAAoB,iBAAThE,EAChB,OAAOqkB,EAAgB3jB,EAAWsD,EAAOhE,GAAQA,IAASgE,CAI9D,CAFE,MAAO7E,GACPpB,EAAQT,MAAM6B,EAChB,CACA,QACF,GACF,CC2BM,SAAUmlB,GAAqBplB,GACZ,IAAnBA,EAAQkT,QAAiBlT,EAAQqlB,YACnCrlB,EAAQslB,eACRtlB,EAAQulB,cACRvlB,EAAQwlB,oBAEZ,CAwCA,SAASC,GACP1Q,EACA/U,EACA0lB,EACAC,GAEA,YAuBOC,MAvBuBF,EAAeG,qBAA7C,CAIA,IA+BAP,EACAC,EACAC,EACAM,EAEMC,EApCAC,EAAgB/kB,EAAK8T,EAAckR,6BAAqBD,GAC5D,OAAAf,GAAU,CAACe,EAAclc,OAAQ9J,EAAQwQ,OAAzC;AAEGwV,IAGLhmB,EAAQwlB,cAAgBlY,GAASyH,EAAcmR,kBAAoBrZ,GAAYkI,EAAcmR,kBAExFlmB,EAAQwlB,cAAgBzQ,EAAcoR,wBAA0B1B,GAAsBC,OAI3F1kB,EAAQslB,QAAU,IAAIc,GACtBpmB,EAAQulB,OAAS,IAAIa,GAErBT,GAgBAL,EAhB0BtlB,EAAQslB,QAiBlCC,EAjB2CvlB,EAAQulB,OAkBnDC,EAlB2DxlB,EAAQwlB,aAmBnEM,EAnBiFE,EAAcF,gBAqBzFC,EAAiC,GAEvCD,EAAgBpnB,kBAAS2nB,GACvB,OAAQA,GACN,IAAK,UACH3kB,EAAOqkB,EAAgB,CACrB,mBAAoB,MACpB,sBAAuBR,EAAOe,kBAC9B,8BAA+Bd,EAAe,IAAM,IACpD,qBAAsBF,EAAQgB;AAEhC;AAGF,IAAK,eACH5kB,EAAOqkB,EAAgB,CACrBQ,YAAa,sBAAA/c,OAAsB8b,EAAQkB,4BAA2B,KAAAhd,OAAI+b,EAAOiB,4BAA2B,MAAAhd,OAC1Ggc,EAAe,IAAM;AAGzB;AAGF,IAAK,KACH9jB,EAAOqkB,EAAgB,CACrBU,GAAI,GAAAjd,OAAG8b,EAAQkB,4BAA2B,KAAAhd,OAAI+b,EAAOiB,4BAA2B,KAAAhd,OAC9Egc,EAAe,IAAM;AAGzB;AAEF,IAAK,UACH9jB,EAAOqkB,EAAgB,CACrB,eAAgBT,EAAQkB,4BACxB,cAAejB,EAAOiB,4BACtB,eAAgBhB,EAAe,IAAM,MAK7C,IACOO,KA/EP,CAkBF,CAMA,SAASH,KACP,OAAOnjB,OAAOikB,QAAWjkB,OAAekkB,QAC1C,CAyDA,IAAAP,GAAA,WAGE,SAAAA,IAFQrmB,KAAA8T,OAAqB,IAAI+S,WAAW,GAG1ChB,KAAYiB,gBAAgB9mB,KAAK8T,QACjC9T,KAAK8T,OAAO,GAAsB,IAAjB9T,KAAK8T,OAAO,EAC/B,CAwCF,OAtCEuS,EAAAtkB,UAAA2H,SAAA,SAASqd,GACP,IAAIC,EAAOhnB,KAAKinB,UAAU,GACtBC,EAAMlnB,KAAKinB,UAAU,GACrBE,EAAM;AAEV,EAAG,CACD,IAAMC,EAAOJ,EAAOD,EAAS,WAAaG;AAC1CF,EAAOha,KAAKqa,MAAML,EAAOD,GACzBG,EAAMla,KAAKqa,MAAMD,EAAML,GACvBI,GAAOC,EAAML,GAAOrd,SAASqd,GAASI,CACxC,OAASH,GAAQE;AAEjB,OAAOC,CACT,EAKAd,EAAAtkB,UAAAwkB,gBAAA,WACE,OAAOvmB,KAAK0J,SAAS,GACvB,EAKA2c,EAAAtkB,UAAA0kB,0BAAA,WACE,IAAMlB,EAAUvlB,KAAK0J,SAAS;AAC9B,OAAO/I,MAAM,GAAK4kB,EAAQhmB,QAAQwI,KAAK,KAAOwd,CAChD,EAEQc,EAAAtkB,UAAAklB,UAAR,SAAkBK,GAChB,OACwB,SAAtBtnB,KAAK8T,OAAOwT,IACXtnB,KAAK8T,OAAOwT,EAAS,IAAM,KAC3BtnB,KAAK8T,OAAOwT,EAAS,IAAM,GAC5BtnB,KAAK8T,OAAOwT,EAAS,EAEzB,EACFjB,CAAA,CA9CA,GF7KakB,GAA6C,CAAC,eAAgB;AA4IrE,SAAUC,GACd7N,GAAuC,IAAAM,EAAAzR;AAEvC,GAAKmR,EAAkB8N,cAKvB,YACE9N,EAAkB+N,yBACjBpa,GAAaqM,EAAkB+N,yBAMlC,YAAI/N,EAAkBwM,iBAAkC7Y,GAAaqM,EAAkBwM,iBAKvF,YAAIxM,EAAkBgO,sBAAuChnB,MAAMiG,QAAQ+S,EAAkBgO,sBAA7F,CAKA,IAAMzB,EA4CR,SAAwCvM,GACtC,YAAIA,EAAkBuM,mBAAkC,CACtD,IAAKvlB,MAAMiG,QAAQ+S,EAAkBuM,oBAEnC,YADApnB,EAAQT,MAAM;AAGhB,GAAoD,IAAhDsb,EAAkBuM,mBAAmB3mB,iBAAgBoa,EAAkBiO,QAEzE,YADA9oB,EAAQT,MAAM;AAIhB,IAAMwpB,EAAkC;AAcxC,OAbAlO,EAAkBuM,mBAAmBvnB,kBAASmpB,GEpN5C,IACEC;AFoNE/C,GAAc8C,GAChBD,EAAe7mB,KAAK,CAAE+I,MAAO+d,EAAQ/B,gBAAiBwB,KEnNhC,WAA1B5gB,EAFIohB,EFsNyBD,IEnN7B9C,GAAc+C,EAAahe,QAC3BpJ,MAAMiG,QAAQmhB,EAAahC,iBFmNvB8B,EAAe7mB,KAAK8mB,GAEpBhpB,EAAQV,KACN,yGACA0pB,EAGN,IAEOD,CACT,CAEA,MAAO,EACT,CA7BA,CA5C4DlO;AAC1D,GAAKuM,EAAL,CAIA,IAAM8B,EAYF,SAAwCrO,GAAoC,IAAAM,EAAAzR,EAAA+W,EAAA0I,EAAAhnB;AAChF,GAAK0Y,GAAsBA,EAAkB8J,YAK7C,YAAI9J,EAAkBuO,mBAAoC5a,GAAaqM,EAAkBuO,mBAKzF,YAAIvO,EAAkBwO,qBAAsC7a,GAAaqM,EAAkBwO,qBAK3F,YACExO,EAAkByO,kCACjB9a,GAAaqM,EAAkByO,kCAMlC,YACEzO,EAAkB0O,0BACjB/a,GAAaqM,EAAkB0O,2BAMlC,GAAKxD,GAAclL,EAAkB2O,QAAS,YAIzCzD,GAAclL,EAAkB4O,IAAK,QAIrC1D,GAAclL,EAAkBiO,QAAS,WAI9C,YACEjO,EAAkB6O,iBACjB1iB,EAAeqG,EAAiBwN,EAAkB6O,iBAFrD,CAhDF,IAAuBtF;AAwDrB,IAAIvJ,EAAkBuJ,OAxDDA,EAwDwBvJ,EAAkBuJ,KAvDxD,8BAA8BngB,KAAKmgB,IA4D1C,OAAOvhB,EACL,CACE8mB,WACE9O,EAAkB8O,YAAcxpB,EAAgB0a,EAAkB8O,WAAY,8BAChF/H,yBAA0BD,GAA+B9G,GACzDuO,kBAAsD,QAAnCxiB,EAAAiU,EAAkBuO,6BAAiBxiB,IAAI,IAC1DyiB,oBAA0D,QAArC7S,EAAAqE,EAAkBwO,+BAAmB7S,IAAI,GAC9D8S,iCAAoF,QAAlDM,EAAA/O,EAAkByO,4CAAgCM,IAAI,EACxFL,yBAAoE,QAA1CM,EAAAhP,EAAkB0O,oCAAwBM,IAAI,EACxEf,QAASjO,EAAkBiO,gBAC3BhO,qBAAsBD,EAAkBC,mBACxChE,uBAAwB+D,EAAkB/D,qBAC1C4S,gBAAkD,QAAjCI,EAAAjP,EAAkB6O,2BAAeI,IAAIzc,EAAgBC,QACtEyc,2BAA4BlP,EAAkBkP,yBAK9CC,gBAAiB,GAAKnmB,EAEtBomB,0BAA2B,IAC3BC,0BAA2B,GAM3BC,aAAe,IAKfC,mBAAoB,GACpBC,kBAAmB,IAAMxmB,GGjRzB,SAAwCgX,GAC5C,IAAMuJ,EAAOvJ,EAAkBuJ,MAAQtQ,GAEjCgR,EJpBF,SAAoB5O,GAChB,IAAAuT,EAAsCvT,EAAauT,IAA9CX,EAAiC5S,EAAa4S,QAArCU,EAAwBtT,EAAasT,QAA5Bc,EAAepU,EAAaoU,WACrDxF,EAAO;AAeb,OAbI2E,GACF3E,EAAK5iB,KAAKkjB,GAAS,MAAOqE,IAExBX,GACFhE,EAAK5iB,KAAKkjB,GAAS,UAAW0D,IAE5BU,GACF1E,EAAK5iB,KAAKkjB,GAAS,UAAWoE,IAE5Bc,GACFxF,EAAK5iB,KAAKkjB,GAAS,aAAckF,IAG5BxF,CACT,CAlBM,CIoBmBjK,GAEjB0P,EAeR,SAAiC1P,EAAsCiK,GACrE,MAAO,CACL0F,oBAAqB5G,GAAsB/I,EAAmB,OAAQiK,GACtE2F,mBAAoB7G,GAAsB/I,EAAmB,MAAOiK,GACpE4F,6BAA8B9G,GAAsB/I,EAAmB,SAAUiK,GAErF,CANA,CAfmDjK,EAAmBiK,GAC9D6F,EA8CR,SACEJ,EACAnG,GAEA,IAAMuG,EAAoBroB,EAAaioB,GAAkB/nB,cAAKooB,GAAY,OAAAA,EAAQ1F,SAAR;AAM1E,OAJId,IAAStQ,IACX6W,EAAkBzoB,KAAK,WAAAyI,OAAWoJ,GAAmB,MAGhD4W,CACT,CAXA,CA9CqDJ,EAAkBnG,GAE/DyG,EAoBR,SACEhQ,EACA8P,EACA7F,GAEA,GAAKjK,EAAkBiQ,QAAvB,CAIA,IAAMD,EAA0ChoB,EAAO,GAAIgY,EAAmB,CAC5EuJ,KAAMtQ,GACN6Q,YAAa9J,EAAkBiQ,QAAQnG,cAGnCoG,EAA0B,CAC9BP,oBAAqB5G,GAAsBiH,EAAsB,OAAQ/F,GACzE2F,mBAAoB7G,GAAsBiH,EAAsB,MAAO/F;AAKzE,OAFA6F,EAAkBzoB,KAAIxB,MAAtBiqB,EAA0BroB,EAAayoB,GAAyBvoB,cAAKooB,GAAY,OAAAA,EAAQ1F,SAAR,KAE1EriB,EAAO,CAAE8lB,cAAe9N,EAAkBiQ,QAAQnC,eAAiBoC,EAd1E,CAeF,CAtBA,CApB2DlQ,EAAmB8P,EAAmB7F;AAE/F,OAAOjiB,EACL,CACEmoB,YAAa,SAACrZ,GAAgB,OAAAgZ,EAAkB1jB,eAAMgkB,GAAmB,OAAgC,IAAhCtZ,EAAIjQ,QAAQupB,EAAZ,GAA3C,EAC9BH,QAASD,EACTzG,KAAIA,GAENmG,EAEJ,CAlBM,CHmR4B1P;AAvC9B7a,EAAQT,MAAM,yDAAAoL,OAAyDzK,EAAW,2BAHpF,MAFEF,EAAQT,MAAM,qEApBdS,EAAQT,MAAM;KARdS,EAAQT,MAAM;KARdS,EAAQT,MAAM;KALdS,EAAQT,MAAM;KALdS,EAAQT,MAAM,6DA4FlB,CA9FM,CAZoDsb;AACxD,GAAKqO,EAIL,OAAOrmB,EACL,CACE8lB,cAAe9N,EAAkB8N,cACjCa,QAAS3O,EAAkB2O,gBAC3B0B,oBAAqBrQ,EAAkBqQ,oBACvCtC,wBAAkE,QAAzChiB,EAAAiU,EAAkB+N,mCAAuBhiB,IAAI,EACtEukB,sCAAuCtQ,EAAkBsQ,oCACzD9D,gBAAiBxM,EAAkBwM,gBACnCD,mBAAkBA,EAClByB,qBAA4D,QAAtCrS,EAAAqE,EAAkBgO,gCAAoBrS,IAAI,GAChE4U,UAAWvQ,EAAkBuQ,UAC7BC,yBAA0BxQ,EAAkBwQ,uBAC5CC,wBAAyBzQ,EAAkByQ,sBAC3CC,qBAAsB1Q,EAAkB0Q,mBACxCC,iBAAkB3Q,EAAkB2Q,eACpCC,iBAAkB5Q,EAAkB4Q,eACpCC,UAAW7Q,EAAkB6Q,UAC7BC,oBAAqB3kB,EAAewe,GAAqB3K,EAAkB8Q,qBACvE9Q,EAAkB8Q,oBAClBnG,GAAoBE,KACxBkG,6BAA8B/Q,EAAkB+Q,2BAChDC,gCAAiC,EACjCvE,sBAAuBtgB,EAAe4e,GAAuB/K,EAAkByM,uBAC3EzM,EAAkByM,sBAClB1B,GAAsBC,IAC1BiG,QAAUhe,GAA6BV,EAAoBQ,UAAYiN,EAAkBiR,SAAY,IAEvG5C,EAlCF,CALA,MAFElpB,EAAQT,MAAM;KALdS,EAAQT,MAAM;KALdS,EAAQT,MAAM;KARdS,EAAQT,MAAM,mEA6DlB,CAuCA,SAASwsB,GAA8B7V,GACrC,IAAM8V,EAAyB,IAAIhqB;AAanC,OAXIH,MAAMiG,QAAQoO,EAAckR,qBAAuBlR,EAAckR,mBAAmB3mB,OAAS,GAC/FyV,EAAckR,mBAAmBvnB,kBAASmpB,GACpC9C,GAAc8C,GAChBP,GAAyB5oB,kBAAS2nB,GAAmB,OAAAwE,EAAuB1jB,IAAIkf,EAA3B,IACxB,WAApB3f,EAAQmhB,IAAwBnnB,MAAMiG,QAAQkhB,EAAO/B,kBAE9D+B,EAAO/B,gBAAgBpnB,kBAAS2nB,GAAmB,OAAAwE,EAAuB1jB,IAAIkf,EAA3B,GAEvD,IAGK7lB,EAAUqqB,EACnB,CIvOA,SAASC,KACPjsB,EAAQT,MAAM,2CAChB,CC/CO,IAAM2sB,GAAiB,CAC5BC,OAAQ,oBACRC,UAAW,gBACXC,SAAU,YACVC,OAAQ;AA4CJ,SAAUC,GAAiBC,GAC/B,OAAOjrB,EAASe,EAAa4pB,IAAiBM,EAChD,CC5BM,SAAUC,KACd,IAAIC,EACEloB,EAA+BZ;AAarC,GAAIY,EAAcC,OAIhBioB,EAAcpoB,EAAuBE,EAAe,oBAEhDA,EAAcmoB,kBAAoBD,IAAgBloB,EAAcmoB,kBAAkB,CAQpF,IAIMC,EAAmBtoB,EAJD,IAAIE,EAAcmoB,iBAAiB5mB,GAIM;AACjE2mB,EAAcE,GAAoBA,EAAiBF,WACrD,CAOF,OAJKA,IACHA,EAAcloB,EAAcmoB,kBAGvBD,CACT,CCnEM,SAAUG,GACd3W,EACA4W,EACAloB,GAEA,GAAIiZ,SAASkP,aAAeD,GAA8C,aAAxBjP,SAASkP,WACzDnoB;IACK,CACL,IAAMwR,EAAmC,aAAvB0W,EAAoChY,GAAUqC,KAAOrC,GAAU+C;AACjF5B,GAAiBC,EAAetS,OAAQwS,EAAWxR,EAAU,CAAE6R,SACjE,CACF,CCaO,IAAMuW,GAAwB,mBAE/BC,GAA0F,CAC9F,YAAwB,SAACC,GAA0B,OAAAF,KAA0BE,CAA1B,GACnD,OAAmB,SAACA,GAA0B,yBAAqBA,CAArB,GAC9C,SAAqB,SAACA,GAA0B,gBAAYA,CAAZ,GAChD,UAAsB,SAACA,GAA0B,iBAAaA,CAAb,GACjD,OAAmB,SAACC,EAAW7iB,GAAiB,gBAAUrG,KAAKqG,EAAf,GAChD,MAAkB,SAAC6iB,EAAW7iB,GAAiB,eAASrG,KAAKqG,EAAd,GAC/C,SAEE,SAAC4iB,EAAuB5iB,GACtB,OAAA/I,EAAS,CAAC,QAAS,MAAO,QAAS2rB,IAAuE,OAArD,sCAAsC9b,KAAK9G,EAAhG,GAEJ,QAAoB,SAAC6iB,EAAW7iB,GAAiB,OAA0C,OAA1C,2BAA2B8G,KAAK9G,EAAhC,GACjD,SAEE,SAAC4iB,EAAuB5iB,GACtB,OAAA/I,EAAS,CAAC,QAAS,SAAU2rB,IAAiD,OAA/B,gBAAgB9b,KAAK9G,EAApE;AAmBN,SAAS8iB,KAAW,QAAAC,EAAA,GAAA9sB,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAA8sB,EAAA9sB,GAAAC,UAAAD;AAClB,IAAK,IAAI4B,EAAI,EAAGA,EAAIkrB,EAAQ5sB,OAAQ0B,GAAK,EACvC,GAAIkrB,EAAQlrB,EAAI,GAAKkrB,EAAQlrB,GAC3B;AAGJ,QACF,CAiBM,SAAUmrB,GACdzN,GAEA,GAAK0N,GAAa1N,GAAlB,CAIE,IAAA2N,EAYE3N,EAAK2N,UAXPC,EAWE5N,EAAK4N,WAVPC,EAUE7N,EAAK6N,cATPC,EASE9N,EAAK8N,YARPC,EAQE/N,EAAK+N,kBAPPC,EAOEhO,EAAKgO,gBANPC,EAMEjO,EAAKiO,aALPC,EAKElO,EAAKkO,sBAJPC,EAIEnO,EAAKmO,WAHPC,EAGEpO,EAAKoO,aAFPC,EAEErO,EAAKqO,cAEHC,EAAsC,CAC1CC,SAAUC,GAAab,EAAWU,EAHhCrO,EAAKyO,aAIPC,WAAYF,GAAab,EAAWS,EAAcC;AAuBpD,OAnBIT,EAAaO,IACfG,EAAQK,QAAUH,GAAab,EAAWM,EAAcE,GAGpDF,GAAgBC,GAAyBA,GAAyBC,IACpEG,EAAQM,IAAMJ,GAAab,EAAWO,EAAuBC,KAK7DP,EAAaI,IACfM,EAAQO,IAAML,GAAab,EAAWI,EAAmBC,IAIvDL,EAAYG,IACdQ,EAAQQ,SAAWN,GAAab,EAAWE,EAAeC,IAGrDQ,CAzCP,CA0CF,CAEM,SAAUZ,GAAa1N,GAC3B,GAAI/R,GAA6BV,EAAoBM,2BACnD;AAOF,IAAMkhB,EAA0BxB,GAC9BvN,EAAM2N,UACN3N,EAAM4N,WACN5N,EAAM+N,kBACN/N,EAAMgO,gBACNhO,EAAMiO,aACNjO,EAAMmO,WACNnO,EAAMoO,aACNpO,EAAMqO,cACNrO,EAAMyO,aAGFO,GAOR,SAAwBhP,GACtB,OAAOA,EAAM8N,YAAc9N,EAAM2N,SACnC,CAFA,CAPsD3N,IAChDuN,GAAWvN,EAAM2N,UAAW3N,EAAM6N,cAAe7N,EAAM8N,YAAa9N,EAAM4N;AAG9E,OAAOmB,GAA2BC,CACpC,CAKA,SAASR,GAAaS,EAAsB7e,EAAqBC,GAC/D,GAAI4e,GAAU7e,GAASA,GAASC,EAC9B,MAAO,CACLP,SAAUD,GAAiBM,GAAQC,EAAOC,IAC1CD,MAAOP,GAAiBM,GAAQ8e,EAAQ7e,IAG9C,CAEM,SAAU8e,GAAYlP,GAE1B,GAAIA,EAAM2N,UAAY3N,EAAMqO,cAAe,CACjC,IAAAc,EAAmDnP,EAAKmP,gBAAvCC,EAAkCpP,EAAKoP;AAChE,MAAO,CACL5qB,KAAM4qB,EACNC,kBAAmBF,EACnBG,kBAAmBF,EACnBG,cALyDvP,EAAKwP,aAOlE,CACA,MAAO,CACLhrB,YACA6qB,yBACAC,yBACAC,qBAEJ,CAEM,SAAUE,GAAoBpZ,EAAiCvE,GACnE,OAAOA,IAAQuE,EAAc8U,YAAYrZ,EAC3C,CAEA,IAAM4d,GAAiB;AAGjB,SAAUC,GAAc7d,GAC5B,QAAIA,EAAIlR,QAHqC,MAKV,UAAxBkR,EAAI8d,UAAU,EAAG,KAE1B9d,EAAMA,EAAI8d,UAAU,EAPuB,MAQpC,GAGX,CAEM,SAAUC,GAAgB/d,GAC9B,MAAO,GAAAhH,OAAGgH,EAAI1G,MAAMskB,IAAiB,GAAE,QACzC,CCxNM,SAAUI,GAAWC,GACzB,OAAOA,EAAKC,WAAaC,KAAKC,SAChC,CAMM,SAAUC,GAAcJ,GAC5B,OAAOA,EAAKC,WAAaC,KAAKG,YAChC,CAEM,SAAUC,GAAiBN,GAC/B,OAAOI,GAAcJ,IAASvR,QAAQuR,EAAKO,WAC7C,CAEM,SAAUC,GAAiBR,GAC/B,IAAMO,EAAaP;AACnB,QAASO,EAAWhM,MAAQgM,EAAWN,WAAaC,KAAKO,wBAA0BL,GAAcG,EAAWhM,KAC9G,CAMM,SAAUmM,GAAkBV,EAAYhrB,GAG5C,IAFA,IAAI2rB,EAAQX,EAAKY,WAEVD,GACL3rB,EAAS2rB,GAETA,EAAQA,EAAME;AAGZP,GAAiBN,IACnBhrB,EAASgrB,EAAKO,WAElB,CAKM,SAAUO,GAAcd,GAC5B,OAAOQ,GAAiBR,GAAQA,EAAKzL,KAAOyL,EAAKe,UACnD,CCnCO,IC4BKC;AD1BN,SAAUC,GAAmBhT,GACjC,IAAM5R,EASF,SAAuC4R,GAC3C,IAAMiT,EAAcjT,EAASkT,cAA+B,0BACtDC,EAAgBnT,EAASkT,cAA+B;AAC9D,OAAOE,GAAwBH,GAAeA,EAAYI,QAASF,GAAiBA,EAAcE,QACpG,CAJM,CATsCrT,IAetC,SAA0CA,GAC9C,IAAMsT,EAyBF,SAA2BtT,GAI/B,IAAK,IAAI1b,EAAI,EAAGA,EAAI0b,EAASuT,WAAW3wB,OAAQ0B,GAAK,EAEnD,GADMgvB,EAAUE,GAAwBxT,EAASuT,WAAWjvB,IAE1D,OAAOgvB;AAQX,GAAItT,EAAS6F,KACX,IAASvhB,EAAI0b,EAAS6F,KAAK0N,WAAW3wB,OAAS,EAAG0B,GAAK,EAAGA,GAAK,EAAG,CAChE,IACMgvB,EADAvB,EAAO/R,EAAS6F,KAAK0N,WAAWjvB;AAEtC,GADMgvB,EAAUE,GAAwBzB,GAEtC,OAAOuB;AAET,IAAKxB,GAAWC,GACd,KAEJ,CAEJ,CA3BM,CAzB6B/R;AACjC,GAAKsT,EAGL,OAAOF,GACLvU,GAAwByU,EAAS,YACjCzU,GAAwByU,EAAS,cAErC,CATM,CAfmFtT;AAEvF,GAAK5R,KAAQA,EAAKqlB,WAAaniB,KAL2B,MAS1D,OAAOlD,EAAKwa,OACd,CAmBM,SAAUwK,GACdxK,EACA8K,GAEA,IAAMD,EAAYC,GAAiBhS,OAAOgS;AAC1C,GAAK9K,GAAY6K,EAIjB,MAAO,CACL7K,QAAOA,EACP6K,UAASA,EAEb,CA+BA,SAASD,GAAwBzB,GAC/B,GAAIA,GD/EA,SAAwBA,GAC5B,OAAOA,EAAKC,WAAaC,KAAK0B,YAChC,CAFM,CC+EsB5B,GAAO,CAC/B,IAAM3kB,EAAQ,wBAAwBmG,KAAKwe,EAAK3jB;AAChD,GAAIhB,EACF,OAAOA,EAAM,EAEjB,CACF,CC0DA,SAASwmB,KACP,gBAAO7tB,OAAOwL,aAA6B,eAAgBA,WAC7D,CAEM,SAAUsiB,GAA8BC,GAC5C,OACE/tB,OAAOguB,8BACPA,oBAAoBC,qBACpBD,oBAAoBC,oBAAoBtwB,SAASowB,EAErD,CAEM,SAAUG,GAA2BC,EAAsB7b,GAC/D,IAAM8b,EAAkC;AAKxC,GAgFI,SACJ9b,EACAtR,GAEAioB,GAAgB3W,EAAe,0BAC7B,IAAI5F,EAEE2hB,EAAmB,CACvBN,UAAWf,GAAwBsB,SACnChF,cAAeF,GACfvG,QAASoK,GAAmBhT,UAC5B/W,OAAQ,WAAM,OAAAjE,EAAO,GAAIyN,EAAQ,CAAExJ,eAArB;AAEhB,GACE4qB,GAA8Bd,GAAwBuB,aACtD/iB,YAAYgjB,iBAAiBxB,GAAwBuB,YAAY1xB,OAAS,EAC1E,CACA,IAAM4xB,EAAkBjjB,YAAYgjB,iBAAiBxB,GAAwBuB,YAAY;AACzF7hB,EAASzN,EAAOwvB,EAAgBvrB,SAA0CmrB,EAC5E,KAAO,CACL,IAAMK,EAA4BC;AAClCjiB,EAASzN,EACPyvB,EACA,CACErD,gBAAiB,EACjBD,gBAAiB,EACjBK,aAAc,EACdmD,qBAAsB,eACtB7iB,SAAU2iB,EAA0BhE,YACpCxuB,KAAM8D,OAAOoY,SAAS6G,KACtB2K,UAAW,GAEbyE,EAEJ,CACArtB,EAAS0L,EACX,GACF,CArCM,CApFkC4F,YAAgB5F,GACpDmiB,GAA4BV,EAAW7b,EAAe,CAAC5F,GACzD,IAEImhB,KAA4B,CAC9B,IAAMiB,EAAqBtjB,YAAYujB;AAGvChuB,cAAiB,OAAA8tB,GAA4BV,EAAW7b,EAAewc,EAAtD,GACnB,CAEA,GAAI9uB,OAAOguB,oBAAqB,CAC9B,IAAMgB,EAA6B5xB,YAAS6xB,GAC1C,OAAAJ,GAA4BV,EAAW7b,EAAe2c,EAAQF,aAA9D,IAEIG,EAAc,CAClBlC,GAAwBsB,SACxBtB,GAAwBuB,WACxBvB,GAAwBmC,UACxBnC,GAAwBoC,OAEpBC,EAAsB,CAC1BrC,GAAwBsC,yBACxBtC,GAAwBuC,YACxBvC,GAAwBwC,aACxBxC,GAAwByC;AAG1B,IAIEJ,EAAoBpzB,kBAASyT,GAC3B,IAAMpH,EAAW,IAAKtI,OAAyBguB,oBAAoBgB;AACnE1mB,EAASonB,QAAQ,CACfhgB,KAAIA,EACJigB,YAGAC,kBAAmB,KAErBxB,EAAa9vB,iBAAW,OAAAgK,EAASunB,YAAT,GAC1B,GAKF,CAJE,MAAOryB,GAGP0xB,EAAY5wB,KAAIxB,MAAhBoyB,EAAoBG,EACtB,CAEA,IAAMS,EAAe,IAAI9B,oBAAoBgB;AAI7C,GAHAc,EAAaJ,QAAQ,CAAEK,WAAYb,IACnCd,EAAa9vB,iBAAW,OAAAwxB,EAAaD,YAAb,IAEpBhC,MAA8B,qBAAsBriB,YAAa,CAE3D,IAAMwkB,EAA8B3d,GAC1CC,EACA9G,YACA,uCAEEA,YAAYykB,sBACd,IACDjsB;AACDoqB,EAAa9vB,KAAK0xB,EACpB,CACF,CAMA,GALKlC,GAA8Bd,GAAwBuB,aAyD7D,SACEjc,EACAtR,GAEA,SAASkvB,IACPlvB,EACE/B,EAAO0vB,KAAoC,CACzCZ,UAAWf,GAAwBuB,aAGzC,CAEAtF,GAAgB3W,EAAe,uBAE7BvR,EAAWmvB,EACb,GACF,CAhBA,CAxD6B5d,YAAgB5F,GACvCmiB,GAA4BV,EAAW7b,EAAe,CAAC5F,GACzD,KAEGohB,GAA8Bd,GAAwBuC,aAAc,CAC/D,IAAMY,EAyElB,SAAkC7d,EAAiCtR,GACjE,IAAMovB,EAAiB7kB,KACnB8kB,KAEUC,EAAyB5d,GACrCJ,EACAtS,OACA,CAACkR,GAAUkC,MAAOlC,GAAUqD,WAAYrD,GAAUoC,SAAUpC,GAAUwC,YAAaxC,GAAUgD,wBAC5Fqc,GAEC,GAAKA,EAAIC,WAAT,CAOA,IAAM9jB,EAA8B,CAClCqhB,UAAWf,GAAwBuC,YACnCkB,gBAAiBxkB,KACjBykB,cAAezkB,KACf2d,UAAW2G,EAAInlB,UACfW,SAAU,EACV7P,KAAM;AAGJq0B,EAAI7gB,OAASwB,GAAUgD,aAiB/B,SAA2C5B,EAAiC5F,GAC1EgG,GACEJ,EACAtS,OACA,CAACkR,GAAUiD,WAAYjD,GAAUkD,0BAChCvC,GACKA,EAAMnC,OAASwB,GAAUiD,YAC3Bwc,EAAWjkB,EAEf,GACA,CAAEmG,SAEN,CAZA,CAhBwCP,EAAe5F,GAEjDikB,EAAWjkB,EAjBb,CAmBF,GACA,CAAEqG,WAAeD,aAClB9O;AAED,MAAO,CAAEA,KAAMssB;AAsBf,SAASK,EAAWjkB,GAClB,IAAK2jB,EAAY,CACfA,KACAC;AAMA,IAAMrvB,EAAQyL,EAAO+jB,gBAAkB/jB,EAAOkd;AAC1C3oB,GAAS,GAAKA,EAAQsK,KAAY6kB,GACpCpvB,EAAS0L,EAEb,CACF,CACF,CAxEA,CAzEoE4F,YAAgB5F,GAC9EmiB,GAA4BV,EAAW7b,EAAe,CAAC5F,GACzD,IAAE1I;AACFoqB,EAAa9vB,KAAK6xB,EACpB,CACA,MAAO,CACLnsB,KAAM,WACJoqB,EAAanyB,kBAAS20B,GAAS,OAAAA,GAAA,GACjC,EAEJ,CA6IA,SAASjC,KACP,IAAM9f,EAA6C,GAC7CnC,EAASlB,YAAYkB;AAC3B,IAAK,IAAM7N,KAAO6N,EAChB,GAAI7B,GAAS6B,EAAO7N,IAAkC,CACpD,IAAMgyB,EAAYhyB,EACZiyB,EAAgBpkB,EAAOmkB;AAC7BhiB,EAAOgiB,GAA+B,IAAlBC,EAAuB,EAAqBjlB,GAAgBilB,EAClF,CAEF,OAAOjiB,CACT,CAEA,SAASggB,GACPV,EACA7b,EACA2c,GAEA,IAIM8B,EAJwB9B,EAAQ/mB,iBAAQ+T,GAC5C,OAAA7Y,EAAe4pB,GAAyB/Q,EAAM8R,UAA9C,IAGyD7lB,iBACxD+T,GAAU,OAQf,SAAgCA,GAC9B,OAAOA,EAAM8R,YAAcf,GAAwBuB,YAActS,EAAM+U,cAAgB,CACzF,CAFA,CARuC/U,KAYvC,SAA6B3J,EAAiC2J,GAC5D,OAAOA,EAAM8R,YAAcf,GAAwBsB,WAAa5C,GAAoBpZ,EAAe2J,EAAM/f,KAC3G,CAFA,CAZsEoW,EAAe2J,EAAtE;AAGT8U,EAA6Bl0B,QAC/BsxB,EAAU/lB,OAAM,EAAmD2oB,EAEvE,EAxXA,SAAY/D,GACVA,EAAAyC,MAAA,QACAzC,EAAAuC,YAAA,cACAvC,EAAAsC,yBAAA,2BACAtC,EAAAwC,aAAA,eACAxC,EAAAmC,UAAA,WACAnC,EAAAuB,WAAA,aACAvB,EAAAoC,MAAA,QACApC,EAAAsB,SAAA,UACD,CATD,CAAYtB,QAAuB;ACG5B,IAAMiE,GACJ,QADIA,GAEF,UAFEA,GAGH,SAHGA,GAMH,SANGA,GAOH;ACxCJ,SAAUC,GACdvZ,EACAwZ,EACAC,GAEA,IAAIC,EAAa,EACbC;AAEJ,MAAO,CACLC,eAAc,WAQZ,GAPmB,IAAfF,GACFtwB,cACEswB,EAAa,CACf,GAAGrmB,KAGLqmB,GAAc,IACIF,GAASG,EAEzB,OADAA,MAAiB;AAInB,GAAID,IAAeF,EAAQ,EAAG,CAC5BG;AACA,IACEF,EAAe,CACbhjB,QAAS,yBAAArH,OAAyB4Q,EAAS,iBAAA5Q,OAAgBoqB,GAC3D/xB,OAAQ6xB,GACR7hB,YAAalD,MAIjB,CAFC,QACColB,IACF,CACF,CAEA,QACF,EAEJ,CCNA,SAAS9pB,GAAI7I,EAAiB+H,EAAcrE,GAG1C,IAFA,IAAImvB,EAAU7yB,EACR8yB,EAAS/qB,EAAKyG,MAAM,KACjB5O,EAAI,EAAGA,EAAIkzB,EAAO50B,OAAQ0B,GAAK,EAAG,CACzC,IAAMmzB,EAAQD,EAAOlzB;AACrB,IAAKozB,GAAcH,GACjB;AAEEjzB,IAAMkzB,EAAO50B,OAAS,EACxB20B,EAAUA,EAAQE,GAElBF,EAAQE,GAASrvB,CAErB,CACF,CAEA,SAASsvB,GAAchzB,GACrB,MAA2B,WAApBsF,EAAQtF,EACjB,CAEA,SAASizB,GAAwBjzB,EAAiB+yB,GAChD,OAAOC,GAAchzB,IAAW5C,OAAOsD,UAAUC,eAAeC,KAAKZ,EAAQ+yB,EAC/E,CCbA,IAeIG,GAfEC,GAAoD,CACxD,YAAa,SACb,WAAY,SACZ,gBAAiB,UAGbC,GAAsD,CAC1Dx0B,QAAS,UAGLy0B,GAAoD,CACxD9M,QAAS,SACTU,QAAS;AAOL,SAAUqM,GACd3f,EACA6b,EACAlL,EACAiP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAAsC,IAAAC,EAAAC,GAEX1vB,EAAA,IACzB6U,KAAqBia,GACrB9uB,EAAArH,MAAsBsD,EACpB,CACE,gBAAiB,SACjB,cAAe,SACf,qBAAsB,SACtB,oBAAqB,UAEvB8yB,GACAD,GACAE,IAEFhvB,EAAA2vB,SAAyB1zB,EACvB,CACE,eAAgB,UAElBiL,GAA6BV,EAAoBI,2BAC7C,CACE,mBAAoB,UAEtB,GACJmoB,GACAD,GACAE,IAEFhvB,EAAA4vB,OAAuB3zB,EACrB,CACE,qBAAsB,UAExB8yB,GACAD,GACAE,IAEFhvB,EAAA6vB,UAA0B5zB,EAAO,GAAI8yB,GAA+BD,IACpE9uB,EAAA8vB,MAAsB7zB,EAAO,GAAI8yB,GAA+BD,IAnClED,GAmC8FY;AAE9F,IAAMM,IAAiBngB,EAAA,IACrBjX,MAAsBu1B,GAAsB,QAE1C5e,EAAc+T,0BACdmM,GAEF5f,EAAAggB,OAAuB1B,GAAsB,SAE3C5e,EAAc+T,0BACdmM,GAEF5f,EAAAkgB,MAAsB5B,GAAsB,QAE1C5e,EAAc+T,0BACdmM,GACDE,GAGGM,ECpIF,WACJ,I5BgBM3wB,E4BhBA4wB,E5BiBkB,iBADlB5wB,EAASrC,OAAyBkzB,+BAAiC9Y,GAjB7B,iCAkBT/X,S4BhB7B8wB,E5BmBF,WACJ,IAAM9wB,EACHrC,OAAyBozB,+BAAiChZ,GAtBf;AAuB9C,MAAwB,iBAAV/X,EAAqBA,QACrC,CAJM;A4BjBJ,GAAI4wB,GAAUE,EACZ,MAAO,CACLE,QAASJ,EACTK,UAAWH,EACXI,SAAU/Y,KAGhB,CAXM;ADqIJ2T,EAAUtmB,UAAS,aAEhB7E,GAA8E,IA+FjF6O,EA/FK+X,EAAS5mB,EAAA4mB,UAAE4J,EAAWxwB,EAAAwwB,YAAEC,EAAazwB,EAAAywB,cAAEC,EAAkB1wB,EAAA0wB,mBAAEC,EAAe3wB,EAAA2wB,gBACrEC,EAAc1B,EAAa2B,SAASjK,GACpCkK,EAAa3B,EAAY4B,QAAQnK,GACjCvO,EAAU4H,EAAeG,mBAAmBwG;AAClD,GAAIvO,GAAWuY,GAAeE,EAAY,CACxC,IAAME,EAAgBN,GAAsBnB,IACtC0B,EAAW7B,EAAe8B,aAAatK,GAwCvCuK,EAAiB1uB,EAtCQ,CAC7B2uB,IAAK,CACHC,eAAgB,EAChBC,M9CpHHhqB,KAAKE,MAAMe,KAAYI,GAAYD,KAAsBF,YAAYC,Q8CqHlE6G,cAAe,CACbiiB,oBAAqB/pB,GAAM8H,EAAckT,kBAAmB,GAC5DgP,2BAA4BhqB,GAAM8H,EAAc0S,wBAAyB,IAE3EyP,oBAAqBvc,KAAsB,iBAE7Cwc,YAAa,CACX5c,GAAIxF,EAAcyS,eAEpBvL,KAAMxN,KACNkZ,QAAS0O,EAAY1O,SAAW5S,EAAc4S,QAC9CU,QAASgO,EAAYhO,SAAWtT,EAAcsT,QAC9CxmB,OAAQ,UACRic,QAAS,CACPvD,GAAIuD,EAAQvD,GACZpI,KAAMsjB,EACH,aACCV,EAAoB3yB,MACnB,UACA,QAEPkY,KAAM,CACJC,GAAI8b,EAAY9b,GAChB5b,KAAM03B,EAAY13B,KAClB6R,IAAK+lB,EAAW/lB,IAChB4mB,SAAUb,EAAWa,UAEvB/B,QAwDR/gB,EAxDyC2hB,GA0D2D,IAA7F,iCAAoE11B,QAAQ+T,EAAMnC,OA1DhCukB,EAAW,CAAEnc,GAAImc,WAClEW,WAAY5B,EACZ6B,QAASvC,EAAoB3yB,MAC7BvD,QAASi2B,EAAe1yB,MACxBm1B,aAAcvkB,MAGmDijB;AACnEW,EAAe52B,QAAUkI,EAAQuuB,EAAcz2B,QAASo2B,GAElD,eAAgBQ,EAAe9Y,UACjC8Y,EAAe9Y,QAAyC0Z,WAAaf,EAAcgB,WAE3D,SAAxBb,EAAezkB,OACfykB,EAAe9Y,QAAyC4Z,mBACnC,IAArB5Z,EAAQ6Z,eAGP5xB,EAAc0wB,EAAcld,QAC7Bqd,EAAegB,IAAmCnB,EAAcld,MAc5E,SACEjF,EACAkU,EACA0N,EACAV,GAA+D,IAAAxN;AAE/D,GAAIQ,EAAY,CACd,IAAMlX,ED/MJ,SACJlQ,EACAy2B,EACAC,GAEA,IAAMC,EAAQ9vB,EAAU7G,GAClBkQ,EAASwmB,EAASC;AAUxB,OATAx2B,EAAcs2B,GAAsBn5B,kBAAS+G,GAAsB,IAArBuyB,EAASvyB,EAAA,GAAEwyB,EAASxyB,EAAA,GAC1DyyB,EAWV,SAAa92B,EAAiB+H,GAE5B,IADA,IAAI8qB,EAAU7yB,EACMhC,EAAA,EAAAqG,EAAA0D,EAAKyG,MAAM,KAAXxQ,EAAAqG,EAAAnG,OAAAF,IAAiB,CAAhC,IAAM+0B,EAAK1uB,EAAArG;AACd,IAAKi1B,GAAwBJ,EAASE,GACpC;AAEFF,EAAUA,EAAQE,EACpB,CACA,OAAOF,CACT,CATA,CAXyB8D,EAAOC,GACtBG,EAAUzxB,EAAQwxB;AACpBC,IAAYF,EACdhuB,GAAI7I,EAAQ42B,EAAW3vB,EAAS6vB,IACT,WAAdD,GAAuC,cAAZE,GAAuC,SAAZA,GAC/DluB,GAAI7I,EAAQ42B,EAAW,GAE3B,IACO1mB,CACT,CAjBM,CC+M+BgD,EAAOggB,GAA4BhgB,EAAMnC,gBAAQmC,GAChF,OAAAkU,EAAWlU,EAAO4hB,EAAlB;AAEF,QAAI5kB,GAA8B,SAAVgD,EAAMnC,KAC5B;CAAO,IAELb,GACFzS,EAAQV,KAAK,8CAEjB,CAGA,QADsD,QAA7BsH,EAAA+vB,EAAkBlhB,EAAMnC,iBAAK1M,WAAEuuB,iBAE1D,CApBA,CAXuB4C,EAAgB7hB,EAAcyT,WAAY0N,EAAeV,KAClEzvB,EAAc6wB,EAAe52B,iBACxB42B,EAAe52B,QAExB4wB,EAAU/lB,OAAM,GAAyC+rB,GAE7D,CACF,GAEJ,CE7LA,ICcIwB,GCyESC,GFvFb,oBAAAC,IACUv4B,KAAAw4B,UAAsE,EAyBhF,QArBED,EAAAx2B,UAAA+I,OAAA,SAAOuP,EAA2BtP,GAChC,IAAM0tB,EAAiBz4B,KAAKw4B,UAAUne;AAClCoe,GACFA,EAAe95B,kBAAS+E,GAAa,OAAAA,EAASqH,EAAT,GAEzC,EAEAwtB,EAAAx2B,UAAAwI,UAAA,SACE8P,EACA3W,GAFF,IAAA+G,EAAAzK;AAQE,OAJKA,KAAKw4B,UAAUne,KAClBra,KAAKw4B,UAAUne,GAAa,IAE9Bra,KAAKw4B,UAAUne,GAAYrZ,KAAK0C,GACzB,CACLiH,YAAa,WACXF,EAAK+tB,UAAUne,GAAa5P,EAAK+tB,UAAUne,GAAYzP,iBAAQC,GAAU,OAAAnH,IAAamH,CAAb,GAC3E,EAEJ,EACF0tB,CAAA,CA1BA,GGZMG,GAAeC,IAgBrBC,GAAA,WAIE,SAAAA,EACU3c,EACA4c,GAFV,IAAApuB,EAAAzK;AACUA,KAAAic,cACAjc,KAAA64B,aALF74B,KAAA2xB,QAA2C,GAOjD3xB,KAAK84B,uBAAyBh1B,cAAkB,OAAA2G,EAAKsuB,gBAAL,GAdXrrB,IAevC,CA2FF,OArFEkrB,EAAA72B,UAAAqF,IAAA,SAAIrC,EAAcunB,GAAlB,IAAA7hB,EAAAzK,KACQ2e,EAAkC,CACtC5Z,MAAKA,EACLunB,UAASA,EACT0M,QAASN,GACT3kB,OAAQ,WACNN,GAAWhJ,EAAKknB,QAAShT,EAC3B,EACAsa,MAAO,SAACD,GACNra,EAAMqa,QAAUA,CAClB;AASF,OANIh5B,KAAK64B,YAAc74B,KAAK2xB,QAAQpyB,QAAUS,KAAK64B,YACjD74B,KAAK2xB,QAAQxQ,MAGfnhB,KAAK2xB,QAAQuH,QAAQva,GAEdA,CACT,EAQAia,EAAA72B,UAAAb,KAAA,SACEorB,EACApoB,YADAooB,MAAAoM,aACAx0B,MAAA,CAAyCi1B;AAEzC,IAAoB,IAAA95B,EAAA,EAAAqG,EAAA1F,KAAK2xB,QAALtyB,EAAAqG,EAAAnG,OAAAF,IAAc,CAA7B,IAAMsf,EAAKjZ,EAAArG;AACd,GAAIsf,EAAM2N,WAAaA,EAAW,CAChC,GAAIpoB,EAAQi1B,gBAAkB7M,GAAa3N,EAAMqa,QAC/C,OAAOra,EAAM5Z;AAEf,KACF,CACF,CACF,EAMA6zB,EAAA72B,UAAAq3B,YAAA,SAAYJ,GACV,IAAMK,EAAcr5B,KAAK2xB,QAAQ;AAC7B0H,GAAeA,EAAYL,UAAYN,IACzCW,EAAYJ,MAAMD,EAEtB,EAOAJ,EAAA72B,UAAAu3B,QAAA,SAAQhN,EAAwC7d,YAAxC6d,MAAAoM,aAAwCjqB,MAAW;AACzD,IAAMuqB,EAAU3qB,GAAYie,EAAW7d;AACvC,OAAOzO,KAAK2xB,QACT/mB,iBAAQ+T,GAAU,OAAAA,EAAM2N,WAAa0M,GAAW1M,GAAa3N,EAAMqa,OAAjD,IAClB13B,cAAKqd,GAAU,OAAAA,EAAM5Z,KAAN,GACpB,EAKA6zB,EAAA72B,UAAAw3B,MAAA,WACEv5B,KAAK2xB,QAAU,EACjB,EAKAiH,EAAA72B,UAAA2E,KAAA,WACE3C,EAAc/D,KAAK84B,uBACrB,EAEQF,EAAA72B,UAAAg3B,eAAR,WAEE,IADA,IAAMS,EAAmB7qB,KAAgB3O,KAAKic,YACvCjc,KAAK2xB,QAAQpyB,OAAS,GAAKS,KAAK2xB,QAAQ3xB,KAAK2xB,QAAQpyB,OAAS,GAAGy5B,QAAUQ,GAChFx5B,KAAK2xB,QAAQxQ,KAEjB,EACFyX,CAAA,CApGA;ACgDM,SAAUa,GACdC,EACAC,EACAC,EACAl0B,GAAiE,IAA/Dm0B,YAAFn0B,EAA+D,GAAEA,GAA3Cm0B,qBAElBx2B,EAAWq2B,EAAgBC;AAE/B,GAAwB,mBAAbt2B,EAAyB,CAClC,IAAI5B,EAAWk4B,EAAQ,MAGrB,MAAO,CAAEjzB,KAAM7B;AAFfxB,EAAWwB,CAIf,CAEA,IAAIi1B,KAEEC,EAAkB,WACtB,GAAID,EAEF,OAAOz2B,EAAS7D,MAAMQ,KAAMV;AAG9B,IAEI06B,EAFEr1B,EAAalE,EAAUnB;AAI7BS,EAAc65B,EAAW,KAAM,CAC7B,CACEh4B,OAAQ5B,KACR2E,WAAUA,EACVs1B,WAAY,SAACv2B,GACXs2B,EAAmBt2B,CACrB,EACAmO,cAAegoB,EAAuB3oB;AAK1C,IAAMK,EAASlO,EAAS7D,MAAMQ,KAAM2E;AAOpC,OALIq1B,GACFj6B,EAAci6B,EAAkB,KAAM,CAACzoB,IAIlCA,CACT;AAIA,OAFAmoB,EAAgBC,GAAUI,EAEnB,CACLrzB,KAAM,WACJozB,KAEIJ,EAAgBC,KAAYI,IAC9BL,EAAgBC,GAAUt2B,EAE9B,EAEJ,CAEM,SAAU62B,GACdR,EACA1tB,EACAqU,GAEA,IAAM8Z,EAAqB17B,OAAO27B,yBAAyBV,EAAiB1tB;AAC5E,IAAKmuB,IAAuBA,EAAmBjwB,MAAQiwB,EAAmB73B,aACxE,MAAO,CAAEoE,KAAM7B;AAGjB,IAAMw1B,EAAyBx1B,EAC3Bk1B,EAAkB,SAACn4B,EAAgBmD,GAErCtB,cACMs2B,IAAoBM,GACtBha,EAAMze,EAAQmD,EAElB,GAAG,EACL,EAEMu1B,EAAyB,SAAwBv1B,GACrDo1B,EAAmBjwB,IAAKjI,KAAKjC,KAAM+E,GACnCg1B,EAAgB/5B,KAAM+E,EACxB;AAMA,OAJAtG,OAAO2D,eAAes3B,EAAiB1tB,EAAU,CAC/C9B,IAAKowB,IAGA,CACL5zB,KAAM,eAAA8B,GAC0D,QAA1D9C,EAAAjH,OAAO27B,yBAAyBV,EAAiB1tB,cAAStG,WAAEwE,OAAQowB,GACtE77B,OAAO2D,eAAes3B,EAAiB1tB,EAAUmuB,GAEnDJ,EAAkBM,CACpB,EAEJ,CHzIA,IIDIE,GJCEC,GAAc,IAAI7xB;AAgCxB,SAAS8xB,GAAQ/0B,GAA0F,IAAhFg1B,EAAGh1B,EAAA9D,OAAE0T,EAAA5P,EAAAf,WAAag1B,EAAMrkB,EAAA,GAAE7E,EAAG6E,EAAA;AACtDklB,GAAYtwB,IAAIwwB,EAAK,CACnBC,MAAO,OACPhB,OAAQ/pB,OAAO+pB,GAAQiB,cACvBnqB,IAAKgR,GAAa7R,OAAOa,KAE7B,CAmDA,SAASoqB,GAASn1B,GAAgE,IAAtDg1B,EAAGh1B,EAAA9D,OACvB3B,EAAUu6B,GAAYn4B,IAAIq4B;AAC5Bz6B,IACFA,EAAQqlB,aAEZ,CKlEA,IAAIwV,GAAmB;AAEjB,SAAUC,GACdlK,EACA7b,EACA2Q,GAEA,IAAMqV,ErBFF,SAAsBhmB,EAAiC2Q,GAC3D,MAAO,CACLN,qBAAoBA,GACpB4V,WAAY,SAACh7B,GACX,OAAAylB,GAA8B1Q,EAAe/U,EAAS0lB,YAAiBK,GAA8B,IAAA/L;AACnG,GAAIha,EAAQi7B,iBAAiBC,WAAwB,QAAZz1B,EAAAzF,EAAQm7B,gBAAI11B,WAAE21B,SACrDp7B,EAAQi7B,MAAQ,IAAIC,QAAQl7B,EAAQi7B,OACpCz8B,OAAOC,KAAKsnB,GAAgBrnB,kBAAS4C,GACjCtB,EAAQi7B,MAAkBG,QAAQC,OAAO/5B,EAAKykB,EAAezkB,GACjE;IACK,CACLtB,EAAQm7B,KAAOv1B,EAAa5F,EAAQm7B;AACpC,IAAMG,EAAmC;AACrCt7B,EAAQm7B,KAAKC,mBAAmBG,QAClCv7B,EAAQm7B,KAAKC,QAAQ18B,kBAASoG,EAAOxD,GACnCg6B,EAAQv6B,KAAK,CAACO,EAAKwD,GACrB,IACSpE,MAAMiG,QAAQ3G,EAAQm7B,KAAKC,SACpCp7B,EAAQm7B,KAAKC,QAAQ18B,kBAAS88B,GAC5BF,EAAQv6B,KAAKy6B,EACf,IACSx7B,EAAQm7B,KAAKC,SACtB58B,OAAOC,KAAKuB,EAAQm7B,KAAKC,SAAS18B,kBAAS4C,GACzCg6B,EAAQv6B,KAAK,CAACO,EAAMtB,EAAQm7B,KAAMC,QAAmC95B,IACvE,IAEFtB,EAAQm7B,KAAKC,QAAUE,EAAQ9xB,OAAOjI,EAAcwkB,GACtD,CACF,GAxBA,EAyBF0V,SAAU,SAACz7B,EAASy6B,GAClB,OAAAhV,GAA8B1Q,EAAe/U,EAAS0lB,YAAiBK,GACrEvnB,OAAOC,KAAKsnB,GAAgBrnB,kBAASC,GACnC87B,EAAIiB,iBAAiB/8B,EAAMonB,EAAepnB,GAC5C,GACF,GAJA,EAMN,CApCM,CqBEuBoW,EAAe2Q;CAKtC,SAAmBkL,EAAsB7b,EAAiCgmB,aLtC9ChmB,GAIhC,OAHKqjB,KACHA,GAKJ,SAA6BrjB,GAC3B,OAAO,IAAI5K,YAAwBiB,GACzB,IAAMuwB,EAA2BnC,GAAiBoC,eAAe95B,UAAW,OAAQ04B,IAAQ/zB,KAEtFo1B,EAA0BrC,GACtCoC,eAAe95B,UACf,iBACCE,IAwBP,SACEyD,EACAsP,EACA3J,GAAkC,IAFxBqvB,EAAGh1B,EAAA9D,OAAEiQ,EAAanM,EAAAmM,cAItB5R,EAAUu6B,GAAYn4B,IAAIq4B;AAChC,GAAKz6B,EAAL,CAIA,IAAM87B,EAAe97B;AACrB87B,EAAapB,MAAQ,QACrBoB,EAAajqB,YAAclD,KAC3BmtB,EAAazW,aACbyW,EAAarB,IAAMA,EACnBqB,EAAalqB,cAAgBA;AAE7B,IAAImqB,KAEUC,EAAwCxC,GAAiBiB,EAAK,iCACtEA,EAAI7O,aAAegQ,eAAeK,MAKpCC,GAEJ,IAAEz1B,KAEIy1B,EAAQ,WAGZ,GAFAC,IACAH,KACID,EAAJ,CAGAA;AAEA,IAAMK,EAAkBp8B;AACxBo8B,EAAgB1B,MAAQ,WACxB0B,EAAgB5tB,SAAWK,GAAQitB,EAAajqB,YAAYhE,UAAWY,MACvE2tB,EAAgBlpB,OAASunB,EAAIvnB,OAC7B9H,EAAWP,OAAOjF,EAAaw2B,GAP/B,CAQF,EAEcD,EAA+BrnB,GAAiBC,EAAe0lB,EAAK,UAAWyB,GAAMz1B;AAEnG2E,EAAWP,OAAOixB,EAtClB,CAuCF,CA/CA,CAvBgB95B,EAAM+S,EAAe3J,EAC/B,GACA,CAAEwuB,0BACHnzB,KAEa41B,EAA2B7C,GAAiBoC,eAAe95B,UAAW,QAAS84B,IAASn0B;AAEtG,OAAO,WACLk1B,IACAE,IACAQ,GACF,CACF,GACF,CArBA,CALwCtnB,IAE/BqjB,EACT,EKiCgF2C,CACvChmB,GAAezK,oBAAW8N,GAC/D,IAAMpY,EAAUoY;AAChB,GAAK+V,GAAoBpZ,EAAe/U,EAAQwQ,KAIhD,OAAQxQ,EAAQ06B,OACd,IAAK,QACHK,EAAOU,SAASz7B,EAASA,EAAQy6B,KACjCz6B,EAAQs8B,aAAeC,KAEvB3L,EAAU/lB,OAAM,EAAqC,CACnDyxB,aAAct8B,EAAQs8B,aACtB9rB,IAAKxQ,EAAQwQ;AAEf;AACF,IAAK,WACHuqB,EAAO3V,qBAAqBplB,GAC5B4wB,EAAU/lB,OAAM,EAAuC,CACrD2D,SAAUxO,EAAQwO,SAClBkrB,OAAQ15B,EAAQ05B,OAChB4C,aAAct8B,EAAQs8B,aACtB/W,OAAQvlB,EAAQulB,OAChB1T,YAAa7R,EAAQ6R,YACrBqB,OAAQlT,EAAQkT,OAChBoS,QAAStlB,EAAQslB,QACjBE,aAAcxlB,EAAQwlB,aACtBrT,KAAI,MACJ3B,IAAKxQ,EAAQwQ,IACbiqB,IAAKz6B,EAAQy6B,IACbpV,UAAWrlB,EAAQqlB,UACnBzT,cAAe5R,EAAQ4R,gBAI/B,GAGF,CAvCM,CAJKgf,EAAW7b,EAAegmB,GA6C/B,SAAqBnK,EAAsB7b,EAAiCgmB,ID/E3ET,KACHA,GAMK,IAAInwB,YAA0BiB,GACnC,GAAK3I,OAAO+5B,MAAZ,CAIQ,IAAA/1B,EAAS+yB,GAAiB/2B,OAAQ,kBAAUT,GAAS,OAQjE,SACEyD,EACA2F,GAAoC,IADlC1G,EAAUe,EAAAf,WAAEs1B,EAAUv0B,EAAAu0B,WAAEpoB,EAAanM,EAAAmM,cAGhCqpB,EAAev2B,EAAU,GAAlBy2B,EAAQz2B,EAAU,GAC5B+3B,EAAmBtB,GAAQA,EAAKzB;KAAAA,IAEhC+C,GAAkCxB,aAAiBC,UACrDuB,EAAmBxB,EAAMvB;AAG3B,IAAMA,WAAS+C,EAAiC9sB,OAAO8sB,GAAkB9B,cAAgB,MACnFnqB,EAAMyqB,aAAiBC,QAAUD,EAAMzqB,IAAMgR,GAAa7R,OAAOsrB,IAGjEj7B,EAA6B,CACjC06B,MAAO,QACPS,KAAIA,EACJF,MAAKA,EACLvB,OAAMA,EACN7nB,YAPkBlD,KAQlB6B,IAAGA,EACHoB,cAAaA;AAGfxG,EAAWP,OAAO7K,GAGlB0E,EAAW,GAAK1E,EAAQi7B,MACxBv2B,EAAW,GAAK1E,EAAQm7B,KAExBnB,YAAY0C,GAAoB,OAGlC,SACEtxB,EACAsxB,EACAZ,GAEA,IAAMa,EAAc,SAACC,GACnB,IAAM58B,EAAU87B;AAChB97B,EAAQ06B,MAAQ,UACZ,UAAWkC,GAAYA,aAAoBzrB,OAC7CnR,EAAQkT,OAAS,EACjBlT,EAAQqlB,UAAYuX,aAAoBC,cAAgBD,EAASE,OAASD,aAAaE,UACvF/8B,EAAQ5B,MAAQw+B,GACP,WAAYA,IACrB58B,EAAQ48B,SAAWA,EACnB58B,EAAQg9B,aAAeJ,EAASzqB,KAChCnS,EAAQkT,OAAS0pB,EAAS1pB,OAC1BlT,EAAQqlB,cAEVja,EAAWP,OAAO7K,EACpB;AAEA08B,EAAgBO,KAAKp9B,EAAQ88B,GAAc98B,EAAQ88B,GACrD,CAtBA,CAH4CvxB,EAAYsxB,EAAiB18B,EAAvC,GAClC,CAhCA,CAR4EgC,EAAMoJ,EAAjB,GAA8B,CACzFwuB,0BACAnzB;AAEF,OAAOA,CANP,CAOF,KAdO6zB,IC6EoChwB,oBAAW8N,GACpD,IAAMpY,EAAUoY;AAChB,GAAK+V,GAAoBpZ,EAAe/U,EAAQwQ,KAIhD,OAAQxQ,EAAQ06B,OACd,IAAK,QACHK,EAAOC,WAAWh7B,GAClBA,EAAQs8B,aAAeC,KAEvB3L,EAAU/lB,OAAM,EAAqC,CACnDyxB,aAAct8B,EAAQs8B,aACtB9rB,IAAKxQ,EAAQwQ;AAEf;AACF,IAAK,WAkCX,SAAmCxQ,EAAiCyD,GAClE,IAAMy5B,EAAiBl9B,EAAQ48B,UClK3B,SAAqBA,GACzB,IACE,OAAOA,EAAS7E,OAIlB,CAHE,MAAO93B,GAEP,MACF,CACF,CAPM,CDkKkDD,EAAQ48B;AACzDM,GAAmBA,EAAe3a,KE3JnC,SACJ4a,EACA15B,EACAQ,GAEA,IAAMm5B,EAASD,EAAOE,YAChBC,EAAuB,GACzBC,EAAiB;AA2BrB,SAASC,IASP,GARAJ,EAAOz4B,SAAS84B,MAGd74B,GAKEX,EAAQy5B,kBAAmB,CAC7B,IAAIC;AACJ,GAAsB,IAAlBL,EAAOh+B,OAGTq+B,EAAiBL,EAAO;IACnB,CAELK,EAAiB,IAAI/W,WAAW2W;AAChC,IAAIK,EAAS;AACbN,EAAO5+B,kBAASm/B,GACdF,EAAe1zB,IAAI4zB,EAAOD,GAC1BA,GAAUC,EAAMv+B,MAClB,GACF,CACQq+B,EAAel8B,MAAM,EAAGwC,EAAQ65B,YACxBH,EAAer+B,MACjC,CAEAmE,GACF,EApDA,SAASs6B,IACPX,EAAOY,OAAOf,KACZp9B,YAASyR,GACHA,EAAO2sB,KACTT,KAIEv5B,EAAQy5B,mBACVJ,EAAOv8B,KAAKuQ,EAAOxM,QAErBy4B,GAAkBjsB,EAAOxM,MAAMxF,QAEV2E,EAAQ65B,WAC3BN,IAEAO,IAEJ,IACAl+B,YAASzB,GAAU,OAAAqF,GAAA,IAEvB,CArBA,EAqDF,CAhEM,CFgKAy5B,EAAe3a,iBAEb9e,EAASoL,GAAQ7O,EAAQ6R,YAAYhE,UAAWY,MAClD,GACA,CACEqvB,WAAY1f,OAAO8f,kBACnBR,uBATJj6B,EAASoL,GAAQ7O,EAAQ6R,YAAYhE,UAAWY,MAapD,CAjBA,CAjCkCzO,YAAUwO,GAClCusB,EAAO3V,qBAAqBplB,GAC5B4wB,EAAU/lB,OAAM,EAAuC,CACrD2D,SAAQA,EACRkrB,OAAQ15B,EAAQ05B,OAChB4C,aAAct8B,EAAQs8B,aACtBU,aAAch9B,EAAQg9B,aACtBzX,OAAQvlB,EAAQulB,OAChB1T,YAAa7R,EAAQ6R,YACrBqB,OAAQlT,EAAQkT,OAChBoS,QAAStlB,EAAQslB,QACjBE,aAAcxlB,EAAQwlB,aACtBrT,KAAI,QACJ3B,IAAKxQ,EAAQwQ,IACbosB,SAAU58B,EAAQ48B,SAClBzB,KAAMn7B,EAAQm7B,KACdF,MAAOj7B,EAAQi7B,MACf5V,UAAWrlB,EAAQqlB,UACnBzT,cAAe5R,EAAQ4R,eAE3B,IAGN,GAEF,CA3CM,CA5COgf,EAAW7b,EAAegmB,EACvC,CAwFA,SAASwB,KACP,IAAMjrB,EAASupB;AAEf,OADAA,IAAoB,EACbvpB,CACT,CGhKM,SAAU6sB,GAAwB3vB,GACtC,OAAOlB,GAASkB,IAAaA,EAAW,SAAgBA,CAC1D,CCSM,SAAU4vB,GAAiB34B,GAQhC,IAPCmrB,EAASnrB,EAAAmrB,UACTyN,EAAY54B,EAAA44B,aACZhpB,EAAA5P,EAAA64B,SAAU76B,WAAQ4R,EAAGzQ,EAAIyQ,EAMnBkpB,EAA2B,CAC/BC,WAAY,EACZC,cAAe,EACfC,cAAe,EACfC,YAAa,EACbC,iBAAkB,GAGdvzB,EAAeulB,EAAUtmB,UAAS,aAA0CgK,GAAK,IAAA0F;AACrF,GAAmB,SAAf1F,EAAMnC,MAAkC,UAAfmC,EAAMnC,MAAqBksB,EAAa/pB,GAGrE,OAAQA,EAAMnC,MACZ,YACEosB,EAAYC,YAAc,EAC1B/6B;AACA;AACF,aACE86B,EAAYI,aAAe,EACvBrqB,EAAM+gB,OAAOwJ,cACfN,EAAYK,kBAAoBtqB,EAAM+gB,OAAOwJ,YAAY1sB,KAAK7S,QAEhEmE;AACA;AACF,gBACE86B,EAAYE,eAAiB,EAC7Bh7B;AACA;AACF,gBACgB,QAATgC,EAAA6O,EAAMuiB,eAAGpxB,WAAEq5B,aACdP,EAAYG,eAAiB,EAC7Bj7B,KAIR;AAEA,MAAO,CACLgD,KAAM,WACJ4E,EAAaX,aACf,EACA6zB,YAAWA,EAEf,CCVM,SAAUQ,GACdnO,EACAoO,EACAjqB,EACAkqB,EACAC,GAEA,IAAMC,EAsDF,SACJvO,EACAoO,EACAjqB,GAEA,OAAO,IAAI5K,YAA+BiB,GACxC,IACIg0B,EADEj0B,EAAgC,GAElCk0B,EAAuB;AAE3Bl0B,EAAcpK,KACZi+B,EAAsB10B,UAAUg1B,GAChC1O,EAAUtmB,UAAS,YAAoDonB,GAEnEA,EAAQ5rB,eACL4Y,GAAU,OAAAA,EAAM8R,YAAcf,GAAwBsB,WAAawO,GAAcxqB,EAAe2J,EAAM/f,KAA5F,KAGb2gC,GAEJ,IACA1O,EAAUtmB,UAAS,YAAsCk1B,GACnDD,GAAcxqB,EAAeyqB,EAAWhvB,gBAGxC4uB,IACFA,EAAoBI,EAAWlD,cAEjC+C,GAAwB,EACxBC,IACF,IACA1O,EAAUtmB,UAAS,YAAwCm1B,GAEvDF,GAAcxqB,EAAe0qB,EAAQjvB,eACrC4uB,GAEAK,EAAQnD,aAAe8C,IAIzBC,GAAwB,EACxBC,IACF;AAGM,IAiBa77B,EAjBPi8B,GAiBOj8B,EAjBoC67B,EAkBpD9F,GAAiB/2B,OAAQ,OAAQgB,IAlBsCgD;AAE5E,OAAO,WACLi5B,IACAv0B,EAAczM,kBAASihC,GAAM,OAAAA,EAAEj1B,aAAF,GAC/B;AAEA,SAAS40B,IACPl0B,EAAWP,OAAO,CAAE+0B,OAAQP,EAAuB,GACrD,CACF,GACF,CAxDM,CAtDwDzO,EAAWoO,EAAuBjqB;AAC9F,OAGI,SACJoqB,EACAF,EACAC,GAEA,IAAIW,EACAC,KAEEC,EAAsBv8B,EAC1B3D,cAAc,OAAAmgC,EAAS,CAAEC,gBAAX,IA5D4B,KA+DtCC,WACJhB,EACI17B,EACE3D,cAAc,OAAAmgC,EAAS,CAAEC,eAAmBlxB,IAAKN,MAAnC,IACdywB,UAIFiB,EAA2BhB,EAAuB70B,oBAAW7E,GAAU,IAARm6B,EAAMn6B,EAAAm6B;AACzEj8B,EAAao8B,GACbp8B,EAAak8B;AACb,IAAMO,EAAiB3xB;AAClBmxB,IACHC,EAA2Br8B,EACzB3D,cAAc,OAAAmgC,EAAS,CAAEC,eAAmBlxB,IAAKqxB,GAAnC,IA3EiB,KA+ErC,IAEM35B,EAAO,WACXq5B,KACAn8B,EAAao8B,GACbp8B,EAAak8B,GACbl8B,EAAau8B,GACbC,EAAyBz1B,aAC3B;AAEA,SAASs1B,EAAS1rB,GACZwrB,IAGJr5B,IACAw4B,EAAwB3qB,GAC1B,CACA,MAAO,CAAE7N,KAAIA,EACf,CAhDM,CAHyB04B,EAAwBF,EAAyBC,EAChF,CA8GA,SAASK,GAAcxqB,EAAiCsrB,GACtD,OAAOpb,GAAUlQ,EAAc2S,qBAAsB2Y,EACvD,CChLM,SAAUC,GAAUpZ,GACxB,OAAIzkB,OAAO89B,KAAO99B,OAAO89B,IAAIC,OACpB/9B,OAAO89B,IAAIC,OAAOtZ,GAIpBA,EAAI/L,QAAQ,yDAA0DslB,EAAIC,GAC/E,OAAIA,EAES,OAAPD,EACK,IAGF,GAAAj3B,OAAGi3B,EAAGh/B,MAAM,GAAI,GAAE,MAAA+H,OAAKi3B,EAAG5kB,WAAW4kB,EAAGnhC,OAAS,GAAGmK,SAAS,IAAG,KAGlE,KAAAD,OAAKi3B,EACd,GACF,CAEM,SAAUE,GAAeC,EAAsEC,GACnG,OAAID,EAAQjiB,QACHiiB,EAAQjiB,QAAQkiB,KAGrBD,EAAQE,mBACHF,EAAQE,kBAAkBD,EAGrC,CAOM,SAAUE,GAAiBtS,GAC/B,GAAIA,EAAKuS,cACP,OAAOvS,EAAKuS;AAGd,KAAOvS,EAAKe,YAAY,CACtB,GAAIf,EAAKe,WAAWd,WAAaC,KAAKG,aACpC,OAAOL,EAAKe;AAEdf,EAAOA,EAAKe,UACd,CAEA,OAAO,IACT,CAmBA,IACAzoB,GAAA,WAGE,SAAAA,EAAYk6B,GAAZ,IAAAz2B,EAAAzK;AAFQA,KAAAsB,IAAM,IAAIqH,QAGZu4B,GACFA,EAAcviC,kBAASoG,GAAU,OAAA0F,EAAKnJ,IAAI4I,IAAInF,EANhC,EAMmB,GAErC,CAeF,OAbEiC,EAAAjF,UAAAqF,IAAA,SAAIrC,GAGF,OAFA/E,KAAKsB,IAAI4I,IAAInF,EAXG,GAaT/E,IACT,EAEAgH,EAAAjF,UAAAo/B,OAAA,SAAOp8B,GACL,OAAO/E,KAAKsB,IAAI6/B,OAAOp8B,EACzB,EAEAiC,EAAAjF,UAAAoF,IAAA,SAAIpC,GACF,OAAO/E,KAAKsB,IAAI6F,IAAIpC,EACtB,EACFiC,CAAA,CAtBA,GClEao6B,GAAmB,CAC9BC,OAAQ,SACRpW,OAAQ,SACR1G,MAAOD,GAAoBC,MAC3BC,KAAMF,GAAoBE,KAC1BC,gBAAiBH,GAAoBG,iBAI1B6c,GAAoB,kBAYpBC,GAAuB,MACvBC,GAAoB,qFAEpBC,GAAsD,CACjEhqB,SACAiqB,UACAC,YACAC,UACAC,UACAC,YACAC;AAaI,SAAUC,GACdtT,EACAjE,EACAwX,GAEA,GAAIA,GAASA,EAAM96B,IAAIunB,GACrB,OAAOuT,EAAM5/B,IAAIqsB;AAEnB,IAAMe,EAAaD,GAAcd,GAC3BwT,EAAyBzS,EAC3BuS,GAAoBvS,EAAYhF,EAAqBwX,GACrDxX,EAEE0X,EAAmBC,GADIC,GAAwB3T,GACawT;AAIlE,OAHID,GACFA,EAAM/3B,IAAIwkB,EAAMyT,GAEXA,CACT,CAKM,SAAUC,GACdE,EACAJ,GAEA,OAAQA,GAEN,KAAKd,GAAiBnW,OACtB,KAAKmW,GAAiBC,OACpB,OAAOa,EAEX,OAAQI,GACN,KAAKlB,GAAiB7c,MACtB,KAAK6c,GAAiB5c,KACtB,KAAK4c,GAAiB3c,gBACtB,KAAK2c,GAAiBnW,OACtB,KAAKmW,GAAiBC,OACpB,OAAOiB;AACT,QACE,OAAOJ,EAEb,CAKM,SAAUG,GAAwB3T,GAEtC,GAAKI,GAAcJ,GAAnB,CAKA,GAAqB,SAAjBA,EAAK3J,QACP,OAAOqc,GAAiB7c;AAI1B,GAAqB,UAAjBmK,EAAK3J,QAAqB,CAC5B,IAAMwd,EAAe7T;AACrB,GAA0B,aAAtB6T,EAAanwB,MAA6C,UAAtBmwB,EAAanwB,MAA0C,QAAtBmwB,EAAanwB,KACpF,OAAOgvB,GAAiB5c;AAE1B,GAA0B,WAAtB+d,EAAanwB,KACf,OAAOgvB,GAAiB5c;AAE1B,IAAMge,EAAeD,EAAaE,aAAa;AAE/C,GAAID,GAAgD,IAAhCA,EAAahiC,QAAQ,OACvC,OAAO4gC,GAAiB5c,IAE5B,CAGA,OAAIoc,GAAelS,EAAMgU,GAAmBtB,GAAiBnW,SACpDmW,GAAiBnW,OAGtB2V,GAAelS,EAAMgU,GAAmBtB,GAAiB5c,OACpD4c,GAAiB5c,KAGtBoc,GAAelS,EAAMgU,GAAmBtB,GAAiB3c,kBACpD2c,GAAiB3c,gBAGtBmc,GAAelS,EAAMgU,GAAmBtB,GAAiB7c,QACpD6c,GAAiB7c,MAyGtB,SAA8Bsc,GAClC,GAAyB,WAArBA,EAAQ8B,SACV;AAGF,GAAyB,SAArB9B,EAAQ8B,SAAqB,CAC/B,IAAMC,EAAeC,EAAsB;AAC3C,MAEG,oBAAoB9/B,KAAK6/B,IAAiD,WAAhCC,EAAsB,OAEhD,kBAAjBD,GACiB,SAAjBA,CAEJ,CAEA,GAAyB,SAArB/B,EAAQ8B,SAAqB,CAC/B,IAAMG,EAAgBD,EAAsB,QAEtCE,GADAH,EAAeC,EAAsB,OACjBA,EAAsB;AAChD,MAEE,oCAAoC9/B,KAAK+/B,IACvB,qBAAlBA,GACiB,SAAjBF,GACiB,qBAAjBA,GACiB,kBAAjBA,GAEkB,aAAlBE,GACkB,gBAAlBA,GAEA,oBAAoB//B,KAAKggC,IACzB,iBAAiBhgC,KAAK+/B,IACJ,cAAlBA,GAEkB,WAAlBA,GACkB,cAAlBA,GACkB,YAAlBA,GAGAjC,EAAQmC,aAAa,eAEH,WAAlBF,GACkB,cAAlBA,GACkB,cAAlBA,GACkB,cAAlBA,GACkB,WAAlBA,GACA,YAAY//B,KAAKggC,IACjB,YAAYhgC,KAAKggC,IAEC,6BAAlBD,GACkB,wBAAlBA,GACkB,eAAlBA,GACkB,oBAAlBA,GACkB,cAAlBA,GACkB,iBAAlBA,GACkB,+BAAlBA,CAEJ,CAEA,SAASD,EAAsBjkC,GAC7B,OAAQiiC,EAAQ4B,aAAa7jC,IAAS,IAAIqkC,aAC5C,CAEA,QACF,CAjEM,CAtGoBvU,GACf0S,GAAiBC,aAzC1B,CA2CF,CAaM,SAAU6B,GAAexU,EAAYyU,GACzC,OAAQA,GACN,KAAK/B,GAAiB5c,KACtB,KAAK4c,GAAiBnW,OACtB,KAAKmW,GAAiBC,OACpB;AACF,KAAKD,GAAiB3c,gBACpB,OAAOgK,GAAWC,GAAQ0U,GAAc1U,EAAKe,YAAc2T,GAAc1U;AAC3E,QACE,SAEN,CAEA,SAAS0U,GAAc1U,GACrB,IAAKA,GAAQA,EAAKC,WAAaD,EAAKK,aAClC;AAEF,IAAM8R,EAAUnS;AAChB,GAAwB,UAApBmS,EAAQ9b,QACV,OAAQ8b,EAAQzuB,MACd,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,SACH,SAGN,QAASqvB,GAAuBZ,EAAQ9b,QAC1C,CAQM,SAAUse,GACdC,EACAC,EACArB,GAAwC,IAAA3iB,EAIlCikB,EAAsC,QAAtB99B,EAAA49B,EAASrC,yBAAav7B,WAAEqf,QAC1C0e,EAAcH,EAASG,aAAe;AAE1C,IAAIF,GAAqBE,EAAYC,OAArC,CAQA,GAFmC,WAAlBF,EAIfC,EAAclC;KACT,GAPkBW,IAOOd,GAAiBnW,OAE/CwY,EAAclC;KACT,GAAI2B,GAAeI,EAVDpB,GAWvB,GAEoB,aAAlBsB,GACkB,WAAlBA,GACkB,aAAlBA,GAEA,IAAKC,EAAYC,OACf,YAIFD,EAF2B,WAAlBD,EAEKjC,GAtCM,SAACoC,GAAiB,OAAAA,EAAKvoB,QAAQ,MAxJ/B,IAwJkB,CAwCxBwoB,CAAWH;AAG7B,OAAOA,CA7BP,CA8BF,CA2EM,SAAUf,GAAmBS,GACjC,MAAO,IAAA15B,OAAI63B,GAAiB,MAAA73B,OAAK05B,EAAY,SAAA15B,OAhSX,eAgSuCA,OAAG05B,EAC9E,CC9SO,IAAMU,GAA6C;AAEpD,SAAUC,GACdjD,EACAn7B,EACAy8B,GAAmC,IADjCzX,EAA0BhlB,EAAAglB,2BAAuBqZ,EAAyBr+B,EAAAskB,oBAStEga,EACJC,GAAyCpD,EAASgD,KACjDE,GAA6BE,GAAyCpD,EAASkD;AAElF,OAAI5B,IAAqBf,GAAiB5c,KACjCwf,GAjB4B,iBAqBnCA,GACAE,GACErD,EACAkD,EACAI,GACAzZ,IAEFwZ,GACErD,EACAkD,EACAK,GACA1Z,IAEF,EAEJ,CAEA,SAASuZ,GAAyCI,EAAwBC,GACxE,IAAIC;AAKJ,YA2OIC,KACFA,GAA+B,YAAaC,YAAY1iC,WAEnDyiC,GA7OLD,EAAuBF,EAAcK,QAAQ,IAAAj7B,OAAI66B,EAAqB;KAGtE,IADA,IAAIzD,EAA0BwD,EACvBxD,GAAS,CACd,GAAIA,EAAQmC,aAAasB,GAAwB,CAC/CC,EAAuB1D;AACvB,KACF,CACAA,EAAUG,GAAiBH,EAC7B,CAGF,GAAK0D,EAIL,OAAOI,GAASC,GADHL,EAAqB9B,aAAa6B,GACNZ,QAC3C,CAQA,IAiMImB,GAcAL,GA/MEL,GAAqC,CAEzC,SAACtD,EAASkD,EAA2Be,GAGnC,YA8LED,KACFA,GAA8B,WAAYE,iBAAiBhjC,WAEtD8iC,IAhMH,GAAI,WAAYhE,GAAWA,EAAQmE,QAAUnE,EAAQmE,OAAOzlC,OAAS,EACnE,OAAO0lC,GAAkBpE,EAAQmE,OAAO,GAAIjB,QAEzC,GAAIlD,EAAQrmB,GAAI,CACrB,IAAM0qB,EACJrE,EAAQsE,eACRjkC,EAAK2/B,EAAQsE,cAAcC,iBAAiB,mBAAWF,GAAU,OAAAA,EAAMG,UAAYxE,EAAQrmB,EAA1B;AACnE,OAAO0qB,GAASD,GAAkBC,EAAOnB,EAA2Be,EACtE,CACF,EAEA,SAACjE,GACC,GAAyB,UAArBA,EAAQ8B,SAAsB,CAChC,IAAMzH,EAAQ2F,EACRzuB,EAAO8oB,EAAMuH,aAAa;AAChC,GAAa,WAATrwB,GAA8B,WAATA,GAA8B,UAATA,EAC5C,OAAO8oB,EAAMn2B,KAEjB,CACF,EAEA,SAAC87B,EAASkD,EAA2BuB,GACnC,GAAyB,WAArBzE,EAAQ8B,UAA8C,UAArB9B,EAAQ8B,UAAyD,WAAjC9B,EAAQ4B,aAAa,QACxF,OAAOwC,GAAkBpE,EAASkD,EAA2BuB,EAEjE,EACA,SAACzE,GAAY,OAAAA,EAAQ4B,aAAa,aAArB,EAEb,SAAC5B,EAASkD,EAA2BuB,GACnC,IAAMC,EAAsB1E,EAAQ4B,aAAa;AACjD,GAAI8C,EACF,OAAOA,EACJ11B,MAAM,OACNvO,cAAKkZ,GAAO,OAsErB,SAAwBgrB,EAAqBhrB,GAG3C,OAAOgrB,EAAWL,cAAgBK,EAAWL,cAAcM,eAAejrB,GAAM,IAClF,CAJA,CAtEoCqmB,EAASrmB,EAAxB,IACZ5P,iBAAQs6B,GAAgC,OAAA/nB,QAAQ+nB,EAAR,IACxC5jC,cAAKu/B,GAAY,OAAAoE,GAAkBpE,EAASkD,EAA2BuB,EAAtD,IACjBv9B,KAAK,IAEZ,EACA,SAAC84B,GAAY,OAAAA,EAAQ4B,aAAa,MAArB,EACb,SAAC5B,GAAY,OAAAA,EAAQ4B,aAAa,OAArB,EACb,SAAC5B,GAAY,OAAAA,EAAQ4B,aAAa,QAArB,EACb,SAAC5B,GAAY,OAAAA,EAAQ4B,aAAa,cAArB,EAEb,SAAC5B,EAASkD,GACR,GAAI,YAAalD,GAAWA,EAAQ38B,QAAQ3E,OAAS,EACnD,OAAO0lC,GAAkBpE,EAAQ38B,QAAQ,GAAI6/B,EAEjD,GAGIK,GAAqC,CACzC,SAACvD,EAASkD,EAA2BuB,GACnC,OAAAL,GAAkBpE,EAASkD,EAA2BuB,EAAtD;AAQJ,SAASpB,GACPG,EACAN,EACA2B,EACAJ,GAIA,IAFA,IAAIzE,EAA0BwD,EAC1BsB,EAAmB,EAErBA,GAV4B,IAW5B9E,GACqB,SAArBA,EAAQ8B,UACa,SAArB9B,EAAQ8B,UACa,SAArB9B,EAAQ8B,UACR,CACA,IAAuB,IAAAtjC,EAAA,EAAAumC,EAAAF,EAAArmC,EAAAumC,EAAArmC,OAAAF,IAAY,CAA9B,IACGwmC,KADWD,EAAAvmC,IACKwhC,EAASkD,EAA2BuB;AAC1D,GAAoB,iBAATO,EAAmB,CAC5B,IAAMC,EAAcD,EAAKnC;AACzB,GAAIoC,EACF,OAAOnB,GAASC,GAAoBkB,GAExC,CACF,CAGA,GAAyB,SAArBjF,EAAQ8B,SACV;AAEF9B,EAAUG,GAAiBH,GAC3B8E,GAAoB,CACtB,CACF,CAEA,SAASf,GAAoBhF,GAC3B,OAAOA,EAAExkB,QAAQ,OAAQ,IAC3B,CAEA,SAASupB,GAAS/E,GAChB,OAAOA,EAAErgC,OAAS,IAAM,GAAAkK,OAAGkS,GAAaikB,EAAG,KAAI,UAAWA,CAC5D,CAQA,SAASqF,GACPpE,EACAkD,EACAuB,GAEA,IAAKzE,EAAwBkF,kBAA7B,CAIA,GAAI,cAAelF,EAAS,CAC1B,IAAImF,EAAOnF,EAAQoF,UAEbC,EAAyB,SAACC,GAE9B,IADA,IAAMhhB,EAAO0b,EAAQuE,iBAAwCe,GACpDzyB,EAAQ,EAAGA,EAAQyR,EAAK5lB,OAAQmU,GAAS,EAAG,CACnD,IAAM0yB,EAAUjhB,EAAKzR;AACrB,GAAI,cAAe0yB,EAAS,CAC1B,IAAMC,EAAgBD,EAAQH;AAC1BI,GAAiBA,EAAc3C,OAAOnkC,OAAS,IACjDymC,EAAOA,EAAK5qB,QAAQirB,EAAe,IAEvC,CACF,CACF;AAsBA,O1CvO0B,IAArBhpB,M0CsNH6oB,EAAuB,iBAIzBA,EAAuB,IAAAz8B,OAAIo6B,GAA0C,MAEjEE,GACFmC,EAAuB,IAAAz8B,OAAIs6B,EAAyB,MAGlDuB,GAEFY,EACE,GAAAz8B,OAAGi5B,GAAmBtB,GAAiBnW,QAAO,MAAAxhB,OAAKi5B,GAAmBtB,GAAiB5c,QAIpFwhB,CACT,CAEA,OAAOnF,EAAQ4C,WAzCf,CA0CF,CC5OO,IA8QH6C,GA9QSC,GAAoB,CAC/B1C,GAEA,cACA,YACA,UACA,UACA,eACA,aACA,eAEA,iBACA,eACA,oBAQI2C,GAAqD,CAACC,GA8D5D,SAAuB5F,GACrB,GAAIA,EAAQrmB,KAAOksB,GAAiB7F,EAAQrmB,IAC1C,MAAO,IAAA/Q,OAAI82B,GAAUM,EAAQrmB,IAEjC,GA7DMmsB,GAA2D,CAC/DF,GA8DF,SAA0B5F,GACxB,GAAwB,SAApBA,EAAQ9b,QAIZ,IADA,IAAM6hB,EH1CF,SAAuB/F,GAAgB,IAAA5mB;AAC3C,GAAI4mB,EAAQ+F,UACV,OAAO/F,EAAQ+F;AAGjB,IAAMC,EAAuC,QAA7BnhC,EAAAm7B,EAAQ4B,aAAa,oBAAQ/8B,WAAEg+B;AAC/C,OAAOmD,EAAUA,EAAQh3B,MAAM,OAAS,EAC1C,CAPM,CG0C2BgxB,GACtB5/B,EAAI,EAAGA,EAAI2lC,EAAUrnC,OAAQ0B,GAAK,EAAG,CAC5C,IAAM6lC,EAAYF,EAAU3lC;AAC5B,IAAIylC,GAAiBI,GAIrB,MAAO,GAAAr9B,OAAG82B,GAAUM,EAAQ9b,SAAQ,KAAAtb,OAAI82B,GAAUuG,GACpD,CACF,EAEA,SAA4BjG,GAC1B,OAAON,GAAUM,EAAQ9b,QAC3B;AA1EM,SAAUgiB,GACd1C,EACAra,GAEA,GA4PE,gBAFiB6W,EA1PFwD,GAgQRxD,EAAQmG,YAGVnG,EAAQsE,cAAc8B,gBAAgBC,SAASrG,GAnQtD,CAQA,IAHA,IAAIsG,EACAC,EAAiC/C,EAE9B+C,GAA8C,SAA5BA,EAAezE,UAAqB,CAC3D,IAAM0E,EAAyBC,GAC7BF,EACAZ,GACAe,GACAvd,EACAmd;AAEF,GAAIE,EACF,OAAOA;AAUTF,EAPoCG,GAClCF,EACAT,GACAa,GACAxd,EACAmd,IAG+BM,GAAgBC,GAAoBN,GAAiBD,GAEtFC,EAAiBpG,GAAiBoG,EACpC,CAEA,OAAOD,CA7BP,CAsPF,IAAqBtG,CAxNrB,CAEA,SAAS6F,GAAiB3hC,GAQxB,MAAO,QAAQhC,KAAKgC,EACtB,CA2BA,SAAS0hC,GAA2B5F,EAAkB7W,GACpD,GAAIA,IACI8W,EAAW6G,EAAqB3d,IAEpC,OAAO8W;AAIX,IAA4B,IAAAzhC,EAAA,EAAAuoC,EAAArB,GAAAlnC,EAAAuoC,EAAAroC,OAAAF,IAAmB,CAA1C,IACGyhC;AACN,GADMA,EAAW6G,EADKC,EAAAvoC,IAGpB,OAAOyhC,CAEX,CAEA,SAAS6G,EAAqBE,GAC5B,GAAIhH,EAAQmC,aAAa6E,GACvB,MAAO,GAAAp+B,OAAG82B,GAAUM,EAAQ9b,SAAQ,KAAAtb,OAAIo+B,EAAa,MAAAp+B,OAAK82B,GAAUM,EAAQ4B,aAAaoF,IAAgB,KAE7G,CACF,CAEA,SAASH,GAAoB7G,GAI3B,IAHA,IAAIiH,EAAU9G,GAAiBH,GAAUkH,kBACrCC,EAAe,EAEZF,GAAWA,IAAYjH,GACxBiH,EAAQ/iB,UAAY8b,EAAQ9b,UAC9BijB,GAAgB,GAElBF,EAAUA,EAAQG;AAGpB,MAAO,GAAAx+B,OAAG82B,GAAUM,EAAQ9b,SAAQ,iBAAAtb,OAAgBu+B,EAAY,IAClE,CAEA,SAASV,GACPzG,EACAqH,EACA/mC,EACA6oB,EACAme,GAEA,IAA6B,IAAA9oC,EAAA,EAAA+oC,EAAAF,EAAA7oC,EAAA+oC,EAAA7oC,OAAAF,IAAiB,CAAzC,IACGgpC,KADiBD,EAAA/oC,IACgBwhC,EAAS7W;AAChD,GAAKqe,GAGDlnC,EAAU0/B,EAASwH,EAAiBF,GACtC,OAAOV,GAAgBY,EAAiBF,EAE5C,CACF,CAKA,SAASZ,GACP1G,EACAwH,EACAF,GAEA,OAA0G,IAAnGtH,EAAQsE,cAAcC,iBAAiBqC,GAAgBY,EAAiBF,IAAgB5oC,MACjG,CAgEM,SAAUioC,GACdJ,EACAkB,EACAH,GAEA,IAAII;AAEJ,YAAIJ,EAIFI,EAAoB,SAACT,GAAY,OAAAlH,GAAekH,EAASQ,EAAxB;IAC5B,CACL,IAAME,EAuBJ,WACJ,YAAIlC,GACF,IACE3pB,SAASkT,cAAc,UACvByW,KAGF,CAFE,MAAA5gC,GACA4gC,KACF,CAEF,OAAOA,EACT,CAVM,GAtBEmB,GAAgB,GAAAh+B,OAAG6+B,EAAsB,UAAUH,GACnDV,GAAgBa,EAAwBH;AAC5CI,EAAoB,SAACT,GAAY,OAA0C,OAA1CA,EAAQjY,cAAc2Y,EAAtB,CACnC,CAIA,IAFA,IACIV,EADW9G,GAAiBoG,GACXW,kBACdD,GAAS,CACd,GAAIA,IAAYV,GAAkBmB,EAAkBT,GAClD;AAEFA,EAAUA,EAAQG,kBACpB,CAEA,QACF,CAEA,SAASR,GAAgBgB,EAAgBpZ,GACvC,OAAOA,EAAQ,GAAA5lB,OAAGg/B,EAAM,KAAAh/B,OAAI4lB,GAAUoZ,CACxC,CC/KA,SAASC,KACP,IAAMC,EAAYjmC,OAAOkmC;AACzB,OAAQD,GAAaA,EAAUE,WACjC,CAEA,SAASC,GAAoBv0B,GAC3B,OACEA,EAAM3S,kBAAkBmnC,cAGxBx0B,EAAMy0B,SAEV,CC/CM,SAAUC,GAAOC,GACrB,QAAIA,EAAMC,iBAAmBD,EAAME,kBAAkBlO,OAASgO,EAAME,kBAAkBC,QAG9EzI,GAAesI,EAAM30B,MAAM3S,OAjBnC,qNAkBF,CCPM,SAAU0nC,GACdzY,EACAoO,EACAjqB,GAEA,IAEIu0B,EAFEC,EAAgC,IAAI5Q,GAPC,KAQrC6Q,EAAiB,IAAIr/B;AAG3BymB,EAAUtmB,UAAS,eACjBi/B,EAAQjQ,OACV,IAEA1I,EAAUtmB,UAAS,EAAgCm/B;AAE3C,IAAMC,EFhEV,SACJ30B,EACAtP,GAA+D,IAE3DkkC,EAMAC,EARFC,EAAapkC,EAAAokC,cAAEC,EAAWrkC,EAAAqkC,YAGxBC,EAA6B,CAC/BrB,aACAzN,SACAmO,WAIIY,EAAY,CAChBl1B,GACEC,EACAtS,OACAkR,GAAUgD,uBACTrC,GACKu0B,GAAoBv0B,KACtBq1B,EAA8BlB,KAC9BsB,EAAe,CACbrB,aACAzN,SACAmO,WAEFQ,EAAeC,EAAcv1B,GAEjC,GACA,CAAEiB,aAGJT,GACEC,EACAtS,OACAkR,GAAUiE,6BAEH+xB,GAAgClB,OACnCsB,EAAarB,aAEjB,GACA,CAAEnzB,aAGJT,GACEC,EACAtS,OACAkR,GAAUuC,mBAER6zB,EAAaX,SACf,GACA,CAAE7zB,WAAeC,aAGnBV,GACEC,EACAtS,OACAkR,GAAUiD,qBACTtC,GACC,GAAIu0B,GAAoBv0B,IAAUs1B,EAAc,CAE9C,IAAMK,EAAoBF;AAC1BD,EAAYF,EAAct1B,cAAa,OAAA21B,CAAA,IACvCL,QACF,CACF,GACA,CAAEr0B,aAGJT,GACEC,EACAtS,OACAkR,GAAU6D,kBAERuyB,EAAa9O,QACf,GACA,CAAE1lB;AAIN,MAAO,CACL9O,KAAM,WACJujC,EAAUtrC,kBAASwW,GAAa,OAAAA,EAASzO,MAAT,GAClC,EAEJ,CApFM,CEmEDsO,EAAe,CAChB80B,cAAe,SAACK,GACd,OA8CN,SACEn1B,EACA6b,EACAoO,EACAkL,GAEA,IAAMhI,EAAmBntB,EAAc0V,2BACnCsX,GAAoBmI,EAAiBvoC,OAAQoT,EAAcyV,qBAC3D2W,GAAiB7c;AAErB,GAAI4d,IAAqBf,GAAiBnW,OAA1C,CAIA,IAAMmf,EA4ER,SACE71B,EACA4tB,EACAntB,GAEA,IAAMq1B,EAAO91B,EAAM3S,OAAO0oC;AAE1B,MAAO,CACLl4B,KAAI,QACJxQ,OAAQ,CACN2oC,MAAOv9B,KAAKE,MAAMm9B,EAAKE,OACvBC,OAAQx9B,KAAKE,MAAMm9B,EAAKG,QACxB1J,SAAUiG,GAAuBxyB,EAAM3S,OAAQoT,EAAcgV,sBAE/DygB,SAAU,CAERC,EAAG19B,KAAKE,MAAMqH,EAAMo2B,QAAUN,EAAKO,MACnCC,EAAG79B,KAAKE,MAAMqH,EAAMu2B,QAAUT,EAAKU,MAErCnsC,KAAMklC,GAAyBvvB,EAAM3S,OAAQoT,EAAemtB,GAEhE,CArBA,CA5EiDgI,EAAkBhI,EAAkBntB,GAE/Eg2B;AAcJ,OAZAhM,GACEnO,EACAoO,EACAjqB,YACCi2B,GACCD,EAA2BC,EAAqB/K,WAClD,GP1I0C,KOgJrC,CAAEkK,gBAAeA,EAAEY,yBAA0B,WAAM,OAAAA,CAAA,EAlB1D,CAmBF,CA/BA,CA9CyBh2B,EAAe6b,EAAWoO,EAAuBkL,EAApE,EACFJ,YAAa,SAACrkC,EAA+C+5B,EAAY2J,GAAe,IAAxEgB,EAAe1kC,EAAA0kC,gBAAEY,EAAwBtlC,EAAAslC;CA8E7D,SACEh2B,EACA6b,EACAoO,EACAuK,EACAC,EACAyB,EACAd,EACA3K,EACA2J,EACA4B,GAEA,IAAM9B,EAAQiC,GAASta,EAAW2Y,EAASJ,EAAiBgB,EAAiB3K;AAC7EyL,EAAwBhC;AAEhB,IAAMkC,EAA4BpM,GACxCnO,EACAoO,EACAjqB,YACCi2B,GACKA,EAAqB/K,aAAe+K,EAAqBj8B,IAAMk6B,EAAMp3B,YAAYhE,UAEnFo7B,EAAMmC,UAEFJ,EAAqB/K,YACvBgJ,EAAMxiC,KAAKukC,EAAqBj8B,KACvBg8B,IACT9B,EAAMxiC,KAGJwiC,EAAMp3B,YAAYhE,WAGpBo7B,EAAMxiC,MAGZ,GA1IqC,KA4ItCA,KAEK4kC,EAAwBza,EAAUtmB,UAAS,YAAiC7E,GAAa,IAAX6lC,EAAS7lC,EAAA6lC;AAC3FrC,EAAMxiC,KAAK6kC,EAAUz9B,UACvB,IAEM09B,EAAmB/B,EAAel/B,sBACtC2+B,EAAMxiC,MACR;AAEAwiC,EAAMO,eAAel/B,sBACnB+gC,EAAsB3gC,cACtBygC,IACAI,EAAiB7gC,aACnB,GACF,CArDA,CA5EQqK,EACA6b,EACAoO,EACAuK,EACAC,EACAyB,EACAd,EACA3K,EACA2J,EACA4B,EAEJ,IACAtkC;AAMF,MAAO,CACLA,KAAM,WACJgjC,IACAD,EAAe3+B,SACf6+B,GACF,EACA7U,eAVqC,CACrC8B,aAAc,SAACtK,GAA6B,OAAAkd,EAAQlQ,QAAQhN,EAAhB;AAY9C,SAAS4e,EAAwBhC,GAC/B,IAAKK,IAAsBA,EAAkBkC,UAAUvC,GAAQ,CAC7D,IAAMwC,EAAYxC,EAAMlR;AACxBuR,ECnGA,SAA2BoC,EAAmBC,GAClD,IAEIC,EAFEC,EAA0B,GAC5B34B,EAAM;AAIV,SAAS44B,EAAY7C,GACnBA,EAAMO,eAAel/B,UAAUyhC,GAC/BF,EAAe9qC,KAAKkoC,GACpBtlC,EAAaioC,GACbA,EAAoCpoC,EAAWwoC,EAnBRx+B,IAoBzC,CAEA,SAASu+B,IACG,IAAN74B,GAAsD24B,EAAeI,gBAAOhD,GAAU,OAAAA,EAAMiD,WAAN,MACxFh5B,EAAM,EACNy4B,EAAWE,GAEf,CAEA,SAASG,IACProC,EAAaioC,GACH,IAAN14B,IACFA,EAAM,EACN64B,IAEJ,CAEA,OAxBAD,EAAYJ,GAwBL,CACLF,UAAW,SAACvC,GACV,OAAU,IAAN/1B,IAKF24B,EAAevsC,OAAS,IAmBN6sC,EAlBAN,EAAeA,EAAevsC,OAAS,GAAGgV,MAkBvB83B,EAlB8BnD,EAAM30B,QAoB7E63B,EAAMxqC,SAAWyqC,EAAOzqC,SAMAgsB,EALLwe,EAKyBvhC,EALlBwhC,EAMrBr/B,KAAKs/B,KAAKt/B,KAAKu/B,IAAI3e,EAAO+c,QAAU9/B,EAAM8/B,QAAS,GAAK39B,KAAKu/B,IAAI3e,EAAOkd,QAAUjgC,EAAMigC,QAAS,KAvE/D,MAkEvCsB,EAAMt+B,UAAYu+B,EAAOv+B,WAnEcL,OA+CnCw+B,SAIFF,EAAY7C;AAYlB,IAA0BkD,EAAmBC,EAQjBze,EAAoB/iB,CAlB5C,EACAnE,KAAM,WACJulC,GACF,EAEJ,CAjDM,CDmGqC/C,YAAQsD,IAqO7C,SAAyBA,EAAiBC,GACtC,IAAAC,EDpVJ,SAA6BF,EAAiBC,GAClD,GA2BI,SAAiBD,GACrB,GAAIA,EAAOzmC,eAAMmjC,GAAU,OAAAA,EAAME,kBAAkBT,WAAaO,EAAME,kBAAkBC,MAA7D,IACzB;AAEF,IAAK,IAAIpoC,EAAI,EAAGA,EAAIurC,EAAOjtC,SAAuD0B,GAAK,EACrF,GACEurC,EAAOvrC,EApCkC,EAoCW,GAAGsT,MAAMzG,UAAY0+B,EAAOvrC,GAAGsT,MAAMzG,WACzFL,GAEA;AAGJ,QACF,CAbM,CA3BO++B,GAQT,OAPAC,EAAUE,eAAc,cACpBH,EAAOzmC,KAAKkjC,KACdwD,EAAUE,eAAc,cAEtBF,EAAUG,UACZH,EAAUE,eAAc,eAEnB,CAAED;AAGX,IAAMG,EAAsBL,EAAOzmC,eAAMmjC,GAAU,OAAAA,EAAME,kBAAkBT,SAAxB;AAanD,OAZA6D,EAAO7tC,kBAASuqC,GACVA,EAAM0D,UACR1D,EAAMyD,eAAc,eAGpB1D,GAAOC,KAEN2D,GAED3D,EAAMyD,eAAc,aAExB,IACO,CAAED,UACX,CA1BM,CCoVkCF,EAAQC,GAAUC;AACpDA,GACFF,EAAO7tC,kBAASuqC,GAAU,OAAAA,EAAMmC,SAAN,IAC1BoB,EAAU/lC,KAAKgI,MACf+9B,EAAUK,SAASN,EAAOlrC,cAAK4nC,GAAU,OAAAA,EAAM30B,KAAN,OAEzCk4B,EAAUpB,UACVmB,EAAO7tC,kBAASuqC,GAAU,OAAAA,EAAM4D,UAAN,IAE9B,CAVM,CApOiBN,EAAQd,EACzB,GACF,CACF,CAEA,SAAShC,IACHH,GACFA,EAAkB7iC,MAEtB,CACF,CA8HA,SAASykC,GACPta,EACA2Y,EACAJ,EACAgB,EACA3K,GAEA,IAUIsN,EAVEvyB,EAAKS,KACLnJ,EAAclD,KACdo+B,EAAexD,EAAQpiC,IAAIoT,EAAI1I,EAAYjE,UAC3Co/B,EAA0B5O,GAAiB,CAC/CxN,UAASA,EACTyN,aAAc,SAAC/pB,GACb,gBAAAA,EAAM+gB,SACL30B,MAAMiG,QAAQ2N,EAAM+gB,OAAO9a,IAAMna,EAASkU,EAAM+gB,OAAO9a,GAAIA,GAAMjG,EAAM+gB,OAAO9a,KAAOA,EADtF,IAGArH,EAAM,EAEJ+5B,EAAsC,GACtCzD,EAAiB,IAAIr/B;AAE3B,SAAS1D,EAAKymC,GACF,IAANh6B,IAIJA,EAAM,GADN45B,EAAkBI,GAGhBH,EAAa/T,MAAM1qB,GAAgBw+B,IAEnCC,EAAaj5B,SAEfk5B,EAAwBvmC,OACxB+iC,EAAe3+B,SACjB,CAEA,MAAO,CACLyJ,MAAOkrB,EACP/4B,KAAIA,EACJ+iC,eAAcA,EAEVmD,eACF,OAAOK,EAAwBzO,YAAYC,WAAa,CAC1D,EACI0K,sBACF,gBAAO4D,CACT,EACA3D,gBAAeA,EACfuD,eAAgB,SAACS,GACfF,EAAiBlsC,KAAKosC,EACxB,EACAt7B,YAAWA,EAEXq6B,UAAW,WAAM,OAAM,IAANh5B,GAAwC,IAANA,CAAlC,EAEjB6kB,MAAO,WAAM,OAAAmT,GAASta,EAAW2Y,EAASJ,EAAiBgB,EAAiB3K,EAA/D,EAEbqN,SAAU,SAACO,GAET,GADA3mC,IACU,IAANyM,EAAJ,CAIM,IAAAzN,EAA+CunC,EAAwBzO,YAArEG,EAAaj5B,EAAAi5B,cAAEF,EAAU/4B,EAAA+4B,WAAEC,EAAah5B,EAAAg5B,cAC1C4O,EAA2B3rC,EAC/B,CACEyQ,KAAM,QACN3D,SAAUs+B,GAAmBj+B,GAAQgD,EAAYhE,UAAWi/B,GAC5Dj7B,YAAWA,EACX0I,GAAEA,EACF0yB,iBAAgBA,EAChBK,OAAQ,CACN5O,cAAaA,EACbF,WAAUA,EACVC,cAAaA,GAEf8O,OAAQH,UAAa,CAAC5N,GACtBlrB,MAAOkrB,GAET2K;AAEFvZ,EAAU/lB,OAAM,EAA2CwiC,GAC3Dn6B,EAAM,CArBN,CAsBF,EAEAk4B,QAAS,WACP3kC,IACAyM,EAAM,CACR,EAEJ,CE7RA,SAASs6B,GACPnY,EACAoY,GAEA,IAAMC,EAAuBC,GAAatY,GACtC,CACEA,OAAQ,CACN9a,GAAI8a,EAAO9a,GACXqzB,aAAczP,GAAwB5vB,GAAiB8mB,EAAO7mB,WAC9DqwB,YAAa,CACX1sB,KAAMkjB,EAAO4X,kBAEf7uC,MAAO,CACLwlB,MAAOyR,EAAOiY,OAAO9O,YAEvBlJ,UAAW,CACT1R,MAAOyR,EAAOiY,OAAO7O,eAEvBrJ,SAAU,CACRxR,MAAOyR,EAAOiY,OAAO5O,gBAGzB7H,IAAK,CACHxB,OAAQ,CACN1zB,OAAQ0zB,EAAO1zB,OACf6oC,SAAUnV,EAAOmV,mBAKrBpU,EAAmBuX,GAAatY,UAAUA,EAAOr1B,QACjD6tC,EAAiC3lC,EACrC,CACEmtB,OAAQ,CACN9a,GAAIS,KACJrZ,OAAQ,CACNhD,KAAM02B,EAAO12B,MAEfwT,KAAMkjB,EAAOljB,MAEf8J,KAAMoZ,EAAOxjB,YAAYhE,UACzBsE,KAAM,SACNmI,KAAM,CAAEwzB,cAAeL,EAAiBM,iBAAgB,SAAmB1Y,EAAOxjB,YAAYjE,YAEhG8/B,GAGIxX,EAA6CyX,GAAatY,GAAU,CAAEkY,OAAQlY,EAAOkY,QAAW;AAMtG,OAJKI,GAAatY,IAAWA,EAAOzjB,gBAClCskB,EAActkB,cAAgByjB,EAAOzjB,eAGhC,CACLwkB,gBAAeA,EACfH,YAAa4X,EACbxhB,UAAWgJ,EAAOxjB,YAAYjE,SAC9BsoB,cAAaA,EAEjB,CAEA,SAASyX,GAAatY,GACpB,MAAkB,WAAXA,EAAOljB,IAChB,CCtGA,IAAI67B,GAA8E,GCXrEC,GACG,eADHA,GAGG;AA8FhB,SAASC,GACPvvC,EACAkS,EACAs9B,EACAC,EACAC,GAEA,OAAOF,EACH98B,GAAmB,CACjB1S,KAAIA,EACJkS,QAAOA,EACPtB,MAAO,CACL,CACEgB,KAAM,IACNC,IAAK29B,EACLt+B,KAAMu+B,iBACN99B,OAAQ+9B,0BAAgBC,CAKpC,CC9FM,SAAUC,GACd3d,EACA7b,EACA04B,EACAe,GAEA,IAAMC,EAAkB,IAAItkC;AAQ5B,OC5CI,SAA4BskC,GAChC,IHkBoCC,EAC9BC,GAD8BD,EGlBO,CAAC3wC,EAAeK,OHmBrDuwC,EAAqBD,EAAKrtC,cAAKkiB,GAInC,OAHKyqB,GAAwBzqB,KAC3ByqB,GAAwBzqB,GAY9B,SAAiCA,GAC/B,OAAO,IAAIpZ,YAAwBiB,GACjC,IAAMwjC,EAAqBvwC,EAAcklB;AAWzC,OATAllB,EAAcklB,GAAO,WAAC,QAAAsrB,EAAA,GAAAzvC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAyvC,EAAAzvC,GAAAC,UAAAD;AACpBwvC,EAAmBrvC,MAAMjB,QAASuwC;AAClC,IAAMj9B,EAAgBX;AAEtBnR,cACEsL,EAAWP,OAUnB,SAAyBgkC,EAAmBtrB,EAAqB3R,GAC/D,IACIrC,EACA6C,EACAH,EAHEpB,EAAUg+B,EAAOxtC,cAAKytC,GAAU,OAsBxC,SAAiCA,GAC/B,MAAqB,iBAAVA,EACFzmC,EAASymC,GAEdA,aAAiB39B,MACZI,GAAmBlC,GAAkBy/B,IAEvCjqC,EAAcwD,EAASymC,UAAmB,EACnD,CARA,CAtBgEA,EAAxB,IAAgChnC,KAAK;AAK3E,GAAIyb,IAAQxlB,EAAeK,MAAO,CAChC,IAAM2wC,EAAkB9tC,EAAK4tC,YAASC,GAAmC,OAAAA,aAAiB39B,KAAjB;AACzE5B,EAAQw/B,EAAkB19B,GAAmBhC,GAAkB0/B,WAC/D38B,EAAcC,GAAoB08B,GAClC98B,EAAS88B,EAAkB78B,GAAmB68B,EAAiB,iBACjE,CAEA,MAAO,CACLxrB,IAAGA,EACH1S,QAAOA,EACPtB,MAAKA,EACLqC,cAAaA,EACbQ,YAAWA,EACXH,OAAMA,EAEV,CArBA,CAV0C48B,EAAQtrB,EAAK3R,GACjD,GACF,EAEO,WACLvT,EAAcklB,GAAOqrB,CACvB,CACF,GACF,CAjBA,CAZ6DrrB,IAElDyqB,GAAwBzqB,EACjC,IAEOvY,EAAgBzL,aAAgBovC,IG1B4BrkC,oBAAW0kC,GAC5E,OAAAP,EAAgB5jC,OAAO,CACrBgH,YAAalD,KACbkC,QAASm+B,EAAan+B,QACtBtB,MAAOy/B,EAAaz/B,MACpB6C,YAAa48B,EAAa58B,YAC1BvQ,OAAQ6xB,GACR3hB,SAAQ,UACRH,cAAeo9B,EAAap9B,eAP9B,GAgBJ,CAlBM,CDsCc68B,GE9Bd,SAA4BA,GAChC,IAsBgChrC,EAtB1BwrC,EAAqB,SAAC79B,EAAwBO,GAClD,IAAMu9B,EAAWx9B,GAAgB,CAC/BN,WAAUA,EACVO,cAAaA,EACbE,YAAalD,KACbmD,eAAc,WACdjQ,OAAQ6xB,GACR3hB,SAAQ;AAEV08B,EAAgB5jC,OAAOqkC,EACzB,EACcC,GAWkB1rC,EAX6BwrC,EAYtDzV,GAAiB/2B,OAAQ,oBAAYgD,GAAyD,IAC/F2L,EADwCiE,EAAA5P,EAAAf,WAAa0qC,EAAU/5B,EAAA,GAAE7E,EAAG6E,EAAA,GAAExF,EAAIwF,EAAA,GAAE/E,EAAM+E,EAAA,GAAEg6B,EAAQh6B,EAAA;AAG9FjE,EADEi+B,aAAoBl+B,MACT9B,GAAkBggC,GxE8H/B,SAA8CD,EAAqB5+B,EAAcX,EAAeS,GACpG,IAAMf,EAAQ,CAAC,CAAEiB,IAAGA,EAAEF,OAAMA,EAAET,KAAIA,IAC5BpK,EAYR,SAA2B2pC,GAAmB,IAAAp1B,EACxCrb,EACAkS;AAIJ,MAHqC,oBAAjC,GAAGpH,SAASzH,KAAKotC,KACfzwC,GAAH8G,EAAoBuL,GAAef,KAAKm/B,IAAjC,GAAEv+B,EAAOpL,EAAA,IAEZ,CAAE9G,KAAIA,EAAEkS,QAAOA,EACxB,CAPA,CAZ8Cu+B;AAC5C,MAAO,CACLzwC,KAFU8G,EAAA9G,KAGVkS,QAHmBpL,EAAAoL,QAInBtB,MAAKA,EAET,CARM,CwE5HiD6/B,EAAY5+B,EAAKX,EAAMS,GAE1E7M,EAAS2N,EAAYi+B,UAAYD,EACnC,KApBgF3oC,KAClE6oC,EAsBV,SAAuC7rC,GAC3C,OAAO+1B,GAAiB/2B,OAAQ,iCAAyBgD,GAAmB,IACpE4lB,EADiE5lB,EAAAf,WAAA,GACtD2mB,QAAU,eACrB9b,EAAQF,GAAkBgc;AAChC5nB,EAAS8L,EAAO8b,EAClB,GACF,CANM,CAtBiF4jB,GAAmBxoC,IAQ1G,CFUE8oC,CAAkBd,GGtCd,SAA2B15B,EAAiC05B,aJqB7B15B,EAA8B25B,GACjE,IAAMzjC,EAA4C;AAE9C7K,EAASsuC,EAAMT,KACjBhjC,EAAYlK,KAmChB,SAA4CgU,GAC1C,OAAO,IAAI5K,YAAuBiB,GAKhC,OAJiB0J,GAAiBC,EAAe2H,SAAU/I,GAAUgE,oCAA4BrD,GAC/FlJ,EAAWP,OAmBjB,SAAwCyJ,GACtC,IAAMnC,EAAO87B,GACPp9B,EAAU,IAAArH,OAAI8K,EAAMk7B,WAAU,kBAAAhmC,OAAiB8K,EAAMm7B,mBAAkB;AAC7E,MAAO,CACLt9B,KAAM87B,GACNyB,QAASp7B,EAAMm7B,mBACf5+B,QAAS,GAAArH,OAAG2I,EAAI,MAAA3I,OAAKqH,GACrBtB,MAAO2+B,GACL55B,EAAMm7B,mBACNn7B,EAAMq7B,eACF,GAAAnmC,OAAGqH,EAAO,oBAAArH,OAAmBkS,GAAapH,EAAMq7B,eAAgB,IAAK,OAAM,KAC3E,YACJr7B,EAAM65B,WACN75B,EAAM85B,WACN95B,EAAM+5B,cAERuB,eAAgBt7B,EAEpB,CAlBA,CAnBuDA,GACnD,IAAE7N,IAGJ,GACF,CARA,CAnCwDsO;AAGtD,IAAM86B,EAAcnB,EAAK/jC,iBAAQ4Y,GAA0C,OAAAA,IAAQ0qB,EAAR;AAK3E,OAJI4B,EAAYvwC,QACd2L,EAAYlK,KAMhB,SAAgC8uC,GAC9B,OAAO,IAAI1lC,YAAuBiB,GAChC,GAAK3I,OAAOqtC,kBAAZ,CAIA,IAAMC,EAAgBlwC,YAASmwC,EAAwDhkB,GACrF,OAAAgkB,EAAQtxC,kBAASuxC,GACf7kC,EAAWP,OA0BnB,SAAkColC,GACxB,IAAA99B,EAAe89B,EAAM99B,KAAfoQ,EAAS0tB,EAAM1tB;AAE7B,MAAO,CACLpQ,KAAIA,EACJu9B,QAASntB,EAAKhI,GACd1J,QAAS,GAAArH,OAAG2I,EAAI,MAAA3I,OAAK+Y,EAAK1R,SAC1B++B,eAAgBK,EAChB1gC,MAAO2+B,GAAW3rB,EAAKhI,GAAIgI,EAAK1R,QAAS0R,EAAK4rB,WAAY5rB,EAAK6rB,WAAY7rB,EAAK8rB,cAEpF,CAVA,CA1BmD4B,GAC7C,GAFA,IAKIllC,EAAW,IAAItI,OAAOqtC,kBAAkBC,EAAe,CAC3DG,MAAOL,EACPzd;AAIF,OADArnB,EAASonB,UACF,WACLpnB,EAASunB,YACX,CAhBA,CAiBF,GACF,CAtBA,CAN4Cud,IAGnC7kC,EAAgBzL,aAAe0L,EACxC,EIlCkEwjC,CACtB15B,EAAe,CACvDk5B,GACAA,KACC3jC,oBAAW2qB,GACZ,IAAMia,EAAqB,CACzBr9B,YAAalD,KACbkC,QAASokB,EAAYpkB,QACrBtB,MAAO0lB,EAAY1lB,MACnB4C,KAAM8iB,EAAYya,QAClB7tC,OAAQ6xB,GACR3hB,SAAQ,YACRJ,cAAesjB,EAAY2a;AAS7B,MANwC,4BAApC3a,EAAY2a,eAAez9B,OAC7B+8B,EAASiB,IAAM,CACbC,YAAanb,EAAY2a,eAAeQ,cAIrC3B,EAAgB5jC,OAAOqkC,EAChC,GAOF,CA7BM,CHuCan6B,EAAe05B,GAEhCA,EAAgBnkC,oBAAWlM,GAAU,OAAAwyB,EAAU/lB,OAAM,GAAyC,CAAEzM,MAAKA,GAAhE,IAKjC,SACJwyB,EACA6c,EACAe,GAeA,OAbA5d,EAAUtmB,UAAS,aAA0C7E,GAA8C,IAA5CrH,EAAKqH,EAAArH,MAAEg4B,EAAe3wB,EAAA2wB,gBAAED,EAAkB1wB,EAAA0wB;AACvGvF,EAAU/lB,OAAM,GAEdnJ,EACE,CACE00B,gBAAeA,EACfD,mBAAkBA,GAgC5B,SACE/3B,EACAqvC,EACAe,GAEA,IAAMvY,EAAgC,CACpCha,KAAM7d,EAAMyT,YAAYhE,UACxBzP,MAAO,CACLmc,GAAIS,KACJnK,QAASzS,EAAMyS,QACfhP,OAAQzD,EAAMyD,OACd0N,MAAOnR,EAAMmR,MACb8gC,eAAgBjyC,EAAMwT,cACtBO,KAAM/T,EAAM+T,KACZJ,SAAU3T,EAAM2T,SAChBE,OAAQ7T,EAAM6T,OACdq+B,YAAa,UACbl+B,YAAahU,EAAMgU,YACnB+9B,IAAK/xC,EAAM+xC,KAEbh+B,KAAM,QACNmI,KAAM,CAAEwzB,cAAeL,EAAiBM,iBAAgB,SAAmB3vC,EAAMyT,YAAYjE,YAGzF2iC,EAAqB/B,EAAoBgC,2BAA2BpyC,EAAMyT,YAAYjE;AACxF2iC,IAAuBxqC,EAAcwqC,KACvCta,EAAYwa,cAAgBF;AAG9B,IAAMra,EAA4C,CAChD93B,MAAOA,EAAMuT,cACbC,cAAexT,EAAMwT;AAGvB,MAAO,CACLqkB,YAAWA,EACX5J,UAAWjuB,EAAMyT,YAAYjE,SAC7BsoB,cAAaA,EAEjB,CAvCA,CA9BqB93B,EAAOqvC,EAAkBe,IAG5C,IAEO,CACLkC,SAAU,SACRjrC,EACA0wB,GAAkC,IADhC/3B,EAAKqH,EAAArH,MAAEwT,EAAanM,EAAAmM,cAAEC,EAAWpM,EAAAoM,YAAWukB,EAAe3wB,EAAAzF,QAIvDkvC,EAAWx9B,GAAgB,CAC/BN,WAFiBhT,aAAiB+S,MAAQ9B,GAAkBjR,UAG5DuT,cAAevT,EACfwT,cAAaA,EACbC,YAAWA,EACXC,eAAc,WACdjQ,OAAQ6xB,GACR3hB,SAAQ;AAGV6e,EAAU/lB,OAAM,GAAyC,CACvDurB,gBAAeA,EACfD,mBAAkBA,EAClB/3B,MAAO8wC,GAEX,EAEJ,CAzCM,CAH0Bte,EAAW6c,EAAkBe,EAC7D,CIpCA,IAAMmC,GAAwB,IAAI5pC;AA6ClC,SAASgyB,GAAQ5pB,GACf,OAAOf,GAAYe,EAAOkd,UAAWld,EAAOX,SAC9C,CCoDA,SAASoiC,GACPlyB,EACA3J,GAEA,IAAMlD,EAAclE,GAAiB+Q,EAAM2N,WACrCwkB,EA8DR,SAAiCnyB,EAAqC3J,GAEpE,GADsB2J,EAAM4G,QAI5B,MAAO,CACLuR,IAAK,CACHia,SAAUpyB,EAAM4G,QAChByrB,SAAUC,GAAWj8B,IAG3B,CAXA,CA9D8C2J,EAAO3J;AACnD,GAAKA,EAAcsV,gBAAmBwmB,EAAtC,CAIA,IAuFyBI,EAvFnB9+B,ErCxEF,SAA8BhD,GAClC,IAAMqB,EAAMrB,EAAOxQ;AACnB,IX7CI,SAAqB6R,GACzB,IACE,QAASiR,GAASjR,EAGpB,CAFE,MAAA/K,GACA,QACF,CACF,CANM,CW6CY+K,GAEd,OADA+D,GAAkB,gCAAA/K,OAAgC2F,EAAOxQ,KAAI,MAC7D;AAGF,IADA,IAAMwK,EXzCF,SAAsBqH,GAC1B,IAAM0gC,EAAWzvB,GAASjR,GAAK0gC;AAC/B,MAAuB,MAAhBA,EAAS,GAAaA,EAAW,IAAA1nC,OAAI0nC,EAC9C,CAHM,CWyCqB1gC,GACIpR,EAAA,EAAA+xC,EAAArlB,GAAA1sB,EAAA+xC,EAAA7xC,OAAAF,IAAgB,CAAlC,IAAAqG,EAAA0rC,EAAA/xC,GAAC+S,EAAI1M,EAAA;AACd,MADsBA,EAAA,IACX0J,EAAO4c,cAAe5iB,GAC/B,OAAOgJ,CAEX,CACA,aACF,CAbM,CqCwE6BuM,GAC3B0yB,EAAeC,GAA+B3yB,GAE9C4yB,EAAgBppC,EACpB,CACE+T,KAAMpK,EAAYhE,UAClBunB,SAAU,CACR7a,GAAIS,KACJ7I,KAAIA,EACJ3B,IAAKkO,EAAM/f,KACX4yC,aA6EmBN,EA7EYvyB,EAAM8yB,eA8ErB,IAAfP,SAA+BA,IA5ElC9+B,KAAM,WACN0kB,IAAK,CACHiI,WAAY/pB,EAAcsV,iBAG9BwmB,EACAO;AAEF,MAAO,CACL/kB,UAAWxa,EAAYjE,SACvBqoB,YAAaqb,EACbpb,cAAe,CACbub,iBAAkB/yB,GA1BtB,CA6BF,CAEA,SAAS2yB,GAA+BliC,GAC9B,IrC1EyCuP,EACzClQ,EAAU6d,EAAWc,EqCyErBkE,EAAyBliB,EAAMkiB;AACvC,MAAO,CACL+D,SAAU1zB,EACR,CACE8M,UrC9E2CkQ,EqC8EEvP,ErC7E3CX,EAAqCkQ,EAAKlQ,SAAhC6d,EAA2B3N,EAAK2N,UAArBc,EAAgBzO,EAAKyO,YAIzC5e,GADQ,IAAbC,GAAkB6d,EAAYc,EACRte,GAAQwd,EAAWc,GAGrB3e,IqCuElBkjC,uBAAwBrgB,GAE1BzD,GAAYze,GACZgd,GAAkChd,IAGxC,CAgCA,SAAS6hC,GAAWj8B,GAClB,OAAOzH,GAASyH,EAAcmR,iBAAmBnR,EAAcmR,gBAAkB,UACnF,CCjLM,SAAUyrB,GACd/gB,EACA7b,EACA68B,EACAC,GAEA,IAAMC,EAAyC,GAEjCC,ECbV,SAAiCnhB,EAAsBntB,GAmB3D,MAAO,CAAEgD,KAlBqBmqB,EAAUtmB,UAAS,YAAoDonB,GACnG,IAAoB,IAAAtyB,EAAA,EAAA4yC,EAAAtgB,EAAAtyB,EAAA4yC,EAAA1yC,OAAAF,IAAS,CAAxB,IAAMsf,EAAKszB,EAAA5yC;AACVsf,EAAM8R,YAAcf,GAAwBuB,aDUwBihB,ECT7D,CACPC,YAAaxzB,EAAMwzB,YACnBC,iBAAkBzzB,EAAM0zB,yBACxBC,eAAgB3zB,EAAM2zB,eACtBC,UAAW5zB,EAAM+U,aAKjB8e,UAAW7zB,EAAMqO,eAAiB,GAAKrO,EAAMqO,eAAiBre,KAAgBgQ,EAAMqO,sBDC1F6kB,EAAaK,EAAkBK,WAC/BR,EAAmBG,kBAAoBA,EACvCJ,ICAA,CDHyE,IAACI,CCI5E,IAAEvnC,YAGJ,CApBM,CDa4DkmB,GAI9DnqB,KAEI+rC,EE3BF,SAA2Bz9B,EAAiCC,GAChE,IAAInH,EACA4kC;AAoBJ,gBAtBgEz9B,MAAAvS,QAI/B,WAA7Bia,SAASg2B,gBACX7kC,EAAY,GAEZA,EAAY6qB,IACF+Z,EAAkBt9B,GAC1BJ,EACAC,EACA,CAACrB,GAAUoD,UAAWpD,GAAU2C,6BAC/BhC,GACKA,EAAMnC,OAASwB,GAAUoD,WAA0C,WAA7B2F,SAASg2B,kBACjD7kC,EAAYyG,EAAMzG,UAClB4kC,IAEJ,GACA,CAAEl9B,aACH9O,MAGI,CACDoH,gBACF,OAAOA,CACT,EACApH,KAAI,WACFgsC,YACF,EAEJ,CA9BM,CF2BiC19B,GACvB49B,EGtBV,SACJ/hB,EACA4hB,EACA/uC,GAkBA,MAAO,CACLgD,KAjB4CmqB,EAAUtmB,UAAS,YAE9DonB,GACC,IHciFkhB,EGd3EC,EAAW5xC,EACfywB,YACChT,GACC,OAAAA,EAAM8R,YAAcf,GAAwBoC,OAC7B,2BAAfnT,EAAM/f,MACN+f,EAAM2N,UAAYmmB,EAAY3kC,WAC9B6Q,EAAM2N,UAhBiB,GAavB;AAKAwmB,IHM6ED,EGLtEC,EAASxmB,UHMtBylB,EAAmBc,qBAAuBA,EAC1Cf,IGLA,IACDnnC,YAIH,CAxBM,CHsBwDkmB,EAAW4hB,GAGrE/rC,KAEYqsC,EIdV,SACJliB,EACA7b,EACAy9B,EACAx9B,EACAvR,GAKA,IAAIsvC,EAA4Bra,IAClBsa,EAAsB79B,GAClCJ,EACAC,EACA,CAACrB,GAAUgD,aAAchD,GAAUoC,oBAClCzB,GACCy+B,EAA4Bz+B,EAAMzG,SACpC,GACA,CAAE0H,WAAeD,UAClB7O,KAEGwsC,EAAiB,EACAC,EAAyBtiB,EAAUtmB,UAAS,YAE9DonB,GACC,IJNDyhB,EIMOC,ElGXN,SACJxyC,EACAM,GAEA,IAAK,IAAIF,EAAIJ,EAAMtB,OAAS,EAAG0B,GAAK,EAAGA,GAAK,EAAG,CAC7C,IAAMF,EAAOF,EAAMI;AACnB,IkGOK0d,ElGPS5d,GkGQF0vB,YAAcf,GAAwBsC,0BAC5CrT,EAAM2N,UAAY0mB,GAClBr0B,EAAM2N,UAAYmmB,EAAY3kC,WAC9B6Q,EAAM2N,UA5CiB,KA+CvB3N,EAAMxb,KAAO+vC,ElGbjB,OAAOnyC,CAEX,CkGIM,IAAC4d,ClGFT,CAXM,CkGYEgT;AAWF,GAAI0hB,EAAU,CACZ,IAAIC;AACAD,EAASxS,UACXyS,EAAoBvM,GAAuBsM,EAASxS,QAAS7rB,EAAcgV,sBJrBhFopB,EIwBY,CACPruC,MAAOsuC,EAAS/mB,UAChBinB,eAAgBD,GJzBpBvB,EAAmBqB,uBAAyBA,EAC5CtB,II0BEoB,EAAiBG,EAASlwC,IAC5B,CACF,IACDwH;AAED,MAAO,CACLjE,KAAM,WACJusC,IACAE,GACF,EAEJ,CA1DM,CJeFtiB,EACA7b,EACAy9B,EACA/vC,QAKDgE,KAEa8sC,EKzBV,SACJ3iB,EACA7b,EACAy9B,EACA/uC,GA6BA,MAAO,CACLgD,KA5B4CmqB,EAAUtmB,UAAS,YAE9DonB,GACC,ILgBsF8hB,EKhBhFC,EAAkBxyC,EACtBywB,YACChT,GACC,OAAAA,EAAM8R,YAAcf,GAAwBuC,aAAetT,EAAM2N,UAAYmmB,EAAY3kC,SAAzF;AAEJ,GAAI4lC,EAAiB,CACnB,IAAMC,EAAkB7kC,GAAQ4kC,EAAgBpnB,UAAWonB,EAAgBvgB,iBACvEygB;AAEAF,EAAgB9xC,QAAUktB,GAAc4kB,EAAgB9xC,UAC1DgyC,EAA2B7M,GAAuB2M,EAAgB9xC,OAAQoT,EAAcgV,sBLMNypB,EKH3E,CAGP9vC,MAAOgwC,GAAmB,EAAIA,EAAmB,EACjDE,KAAMH,EAAgBpnB,UACtBinB,eAAgBK,GLDtB7B,EAAmB0B,WAAaA,EAChC3B,GKEE,CACF,IACDnnC,YAKH,CApCM,CLyB8CkmB,EAAW7b,EAAey9B,GAG1E/rC;AAUF,MAAO,CACLA,KATF,WACEsrC,IACAY,IACAG,IACAS,IACAf,EAAY/rC,MACd,EAIEqrC,mBAAkBA,EAEtB,CMqBA,SAAS+B,GAAoB1rC,GAAgC,IAAA6R;AAC3D,GAAK7R,EAIL,OAA8G,QAAvG1C,EAAAxE,EAAKkH,YAAUtG,GAA4C,QAAEA,EAAO4sB,MAAQI,GAAchtB,EAAO4sB,KAAtC,eAA4ChpB,WAAEgpB,IAClH,CAEO,IC5EH1jB,GCZA+oC,GDcAC,GAA2B,EAC3BC,GAAwBtb,IACxBub,GAAwB,EA6BfC,GAAsB,WACjC,OAAAnpC,GAAWgpC,GAA4BtxC,OAAyBwL,YAAYkmC,kBAAqB,CAAjG;AEtDI,SAAUC,KACd,IAAIC,EACEC,EAAS7xC,OAAO8xC;AAQtB,OANEF,EADEC,EACQA,EAAOE,SAAWF,EAAOG,oBAC1BhyC,OAAO4xC,QACN5xC,OAAO4xC,QAEP5xC,OAAOiyC,aAAe,EAE3B3nC,KAAKE,MAAMonC,EACpB,CAEM,SAAUM,KACd,IAAIC,EACEN,EAAS7xC,OAAO8xC;AAQtB,OANEK,EADEN,EACQA,EAAOO,QAAUP,EAAOQ,mBACzBryC,OAAOmyC,QACNnyC,OAAOmyC,QAEPnyC,OAAOsyC,aAAe,EAE3BhoC,KAAKE,MAAM2nC,EACpB,CDdM,SAAUI,GAAuBjgC,GAIrC,OAHK++B,KACHA,GAKE,SAAmC/+B,GACvC,OAAO,IAAI5K,YAA+BiB,GAChC,IAAW6pC,EAAoBlxC,cACrCqH,EAAWP,OAAOqqC,KACpB,GAAG,KAAIzwC;AAEP,OAAOqQ,GAAiBC,EAAetS,OAAQkR,GAAU2D,OAAQ29B,EAAiB,CAAE1/B,WAAeC,aAChG/O,IACL,GACF,CATM,CAL4CsO,IAEzC++B,EACT,CAcM,SAAUoB,KACd,IAAMZ,EAAS7xC,OAAO8xC;AACtB,OAAID,EACK,CACLhK,MAAOlsB,OAAOk2B,EAAOhK,MAAQgK,EAAOa,OACpC5K,OAAQnsB,OAAOk2B,EAAO/J,OAAS+J,EAAOa,QAInC,CACL7K,MAAOlsB,OAAO3b,OAAO2yC,YAAc,GACnC7K,OAAQnsB,OAAO3b,OAAO4yC,aAAe,GAEzC,CEvBM,SAAUC,GACd1kB,EACAoO,EACAjqB,EACA88B,EACA0D,EACAC,GAEA,IAAMC,EAAuC,GAEvChwC,ECtBF,SACJmrB,EACAoO,EACAjqB,EACA2gC,EACAF,EACA/xC,GAEA,IAAIkyC,EAAgC,iBAARD,EACxBE,KACEC,EAAoC;AAE1C,SAASC,IDgBP,IAACC;CCfIH,IAAoCD,GAAyBE,EAAsBv2C,OAAS,IDehGy2C,ECdUhpC,KAAKipC,IAAGz2C,MAARwN,KAAY8oC,GDerBJ,EAAkBQ,YAAcF,EAChClE,ICdJ,CAYA,MAAO,CACLprC,KAXes4B,GAAoBnO,EAAWoO,EAAuBjqB,YAAgBT,GACjFshC,IACFA,KACIthC,EAAM2rB,aACR4V,EAAsB90C,KAAK8N,GAAQ2mC,EAAU3nC,UAAWyG,EAAMvF,MAEhE+mC,IAEJ,IAAErvC,KAIAmrC,aAAc,SAACU,GACTqD,IACFA,KACAE,EAAsB90C,KAAKuxC,GAC3BwD,IAEJ,EAEJ,CAtCM,CDuBFllB,EACAoO,EACAjqB,EACAwgC,EACAC,GALYU,EAAuBzwC,EAAAgB,KAAEmrC,EAAYnsC,EAAAmsC,aAYrCuE,EEhBV,SACJphC,EACAygC,EACA/xC,EACA2yC,kBA0DI,SACJrhC,EACAshC,GAEA,gBAFAA,MAzEsC7oC,KA2E/B,IAAIrD,YAA0BiB,GAKnC,GAAI3I,OAAO6zC,eAAgB,CACzB,IAAMC,EAAkBxyC,cA1BxB,IACEyyC,EAEEjM;AAmBJn/B,EAAWP,QArBT2rC,EAAY7B,KAEVpK,EAAW2K,KAAsB3K,OAMlC,CACLkM,aALmB1pC,KAAKE,OAAOyP,SAASg6B,kBAAoBh6B,SAASsqB,iBAAiByP,cAMtFE,YAJkB5pC,KAAKE,MAAMs9B,EAASiM,GAKtCA,UAASA,IAWT,GAG2CH,EAAkB,CACzDhyC,WACAE,cAGIqyC,EAAiBl6B,SAASg6B,kBAAoBh6B,SAASsqB,gBACvD6P,EAAiB,IAAIP,eAAez2C,EAAQ02C,EAAgB9xC;AAClEoyC,EAAe1kB,QAAQykB;AACvB,IAAME,EAAgBhiC,GAAiBC,EAAetS,OAAQkR,GAAUuC,OAAQqgC,EAAgB9xC,UAAW,CACzG+Q;AAGF,OAAO,WACL+gC,EAAgB5xC,SAChBkyC,EAAeE,UAAUH,GACzBE,EAAcrwC,MAChB,CACF,CACF,GACF,CA7BM,CA1DwCsO;AAE5C,IAAIiiC,EAAiB,EACjBC,EAAkB,EAClBC,EAAsB,EAEpB7rC,EAAe+qC,EAAa9rC,oBAAW7E,GAAwC,IAAtCkxC,EAAWlxC,EAAAkxC,YAAEH,EAAS/wC,EAAA+wC,UAAEC,EAAYhxC,EAAAgxC,aAC7EU;AAOJ,GALIR,EAAcK,IAChBA,EAAiBL,EACjBQ,MAGEV,EAAeQ,EAAiB,CAClCA,EAAkBR;AAClB,IAAMvoC,EAAMQ;AACZwoC,EAAsBroC,GAAQ2mC,EAAU5nC,SAAUM,GAClDipC,IACF,CAEIA,GACF1zC,EAAS,CACP2zC,SAAUrqC,KAAKsqC,IAAIL,EAAgBC,GACnCK,kBAAmBd,EACnBS,gBAAeA,EACfC,oBAAmBA,GAGzB;AAEA,MAAO,CACLzwC,KAAM,WAAM,OAAA4E,EAAaX,aAAb,EAEhB,CAtCM,CFgB2DqK,EAAeygC,YAAY+B,GACxF9B,EAAkBrM,OAASmO,CAC7B,IAAE9wC,KAEY+wC,EJVV,SACJziC,EACA6b,EACA4kB,EACA/xC,GAEA,IAmGO8sB,GAA8Bd,GAAwBwC,cAlG3D,MAAO,CACLxrB,KAAM7B;AAIV,IAEI6yC,EACAC,EAHAC,EAAc;AAMlBl0C,EAAS,CACPqB,MAAO;AAGT,IAAMrC,EA0CR,WACE,IACI4pB,EACA0M,EAFA6e,EAAiB,EAGjBC,EAAW;AAEf,MAAO,CACLC,OAAQ,SAACp5B,GACP,IAKIq5B;AAgBJ,gBApBE1rB,GACA3N,EAAM2N,UAAY0M,GAZHvrB,KAafkR,EAAM2N,UAAYA,GAdS,KAmB3BA,EAAY0M,EAAUra,EAAM2N,UAC5BwrB,EAAWD,EAAiBl5B,EAAM5Z,MAClCizC,OAEAH,GAAkBl5B,EAAM5Z,MACxBi0B,EAAUra,EAAM2N,WAChB0rB,EAAar5B,EAAM5Z,MAAQ+yC,KAGzBA,EAAWn5B,EAAM5Z,QAId,CACL8yC,eAAcA,EACdG,WAAUA,EAEd,EAEJ,CAnCA,GAzCuBtxC,EAASmqB,EAAUtmB,UAAS,YAAoDonB,GACnG,IAAoB,IAAAtyB,EAAA,EAAA4yC,EAAAtgB,EAAAtyB,EAAA4yC,EAAA1yC,OAAAF,IAAS,CAAxB,IAAMsf,EAAKszB,EAAA5yC;AACd,GAAIsf,EAAM8R,YAAcf,GAAwBwC,eAAiBvT,EAAMs5B,eAAgB,CAC/E,IAAAvyC,EAAiChD,EAAOq1C,OAAOp5B,GAA7Ck5B,EAAcnyC,EAAAmyC;AAEtB,GAFkCnyC,EAAAsyC,WAElB,CACd,IAAMp2C,EAASkyC,GAAoBn1B,EAAMvW;AACzCsvC,EAAe91C,EAAS,IAAIs2C,QAAQt2C,UACpC+1C,EAAkB7oC,GAAQ2mC,EAAW92B,EAAM2N,UAC7C,CAEIurB,EAAiBD,IACnBA,EAAcC,EACRj2C,EAAS81C,iBAAcS,QAE7Bz0C,EAAS,CACPqB,MAAOmI,GAAM0qC,EAAa,GAC1BrE,eAAgB3xC,GAAUmlC,GAAuBnlC,EAAQoT,EAAcgV,qBACvE6pB,KAAM8D,IAGZ,CACF,CACF,IAAEhtC;AAEF,MAAO,CACLjE,KAAIA,EAER,CAnDM,CIWFsO,EACA6b,EACA4kB,EAAU5nC,mBACTuqC,GACC1C,EAAkB0C,sBAAwBA,EAC1CtG,GACF,IACDprC,KAEK4O,EG3BF,SACJN,EACAygC,EACA4C,EACAxnB,GAEA,KA4IEL,GAA8Bd,GAAwByC,QACtDzvB,OAAO41C,wBACP,kBAAmBA,uBAAuBv2C,WA7I1C,MAAO,CACLw2C,0BAA2B,WAAM,EACjCC,WAAY3zC,EACZ6B,KAAM7B;AAIJ,IAMF4zC,EACAC,EAPEhzC,EA2GF,SAAoC2yC,GN1HpC,qBAAsBnqC,aAAelD,KAIzCA,GAAW,IAAKtI,OAAyBguB,oBACvC5wB,YAAS6xB,GACPA,EAAQF,aAAa9yB,kBAASuB,GAC5B,IAAMye,EAAQze;AAEVye,EAAMg6B,gBACR1E,GAAwBjnC,KAAKsqC,IAAIrD,GAAuBt1B,EAAMg6B,eAC9DzE,GAAwBlnC,KAAKipC,IAAI/B,GAAuBv1B,EAAMg6B,eAE9D3E,IAA4BE,GAAwBD,IAAyB,EAAI,EAErF,GACF,MAGO7hB,QAAQ,CAAEhgB,KAAM,QAASigB,YAAgBC,kBAAmB;AMyGrE,IAAMsmB,EAA0C,iBAAfP,EAAmD,EAAIlE,KACpFxZ,EAA0E,CAAEb;AAEhF,SAAS+e,IACP,OAAO1E,KAAwByE,CACjC,CAEA,MAAO,CACLE,wBAAyB,WACvB,OAAIne,EAAMb,QACDa,EAAMyZ,iBAGRyE,GACT,EACAE,yBAA0B,WACxBpe,EAAQ,CAAEb,WAAesa,iBAAkByE,IAC7C,EAEJ,CArBM,CA3GoFR,GAAhFS,EAAuBpzC,EAAAozC,wBAAEC,EAAwBrzC,EAAAqzC,yBAErDC,EAAUrgB,IAERsgB,EA2DR,SAAkCH,GAChC,IAAMG,EAA8E;AAEpF,SAASC,IACPD,EAAoBE,eAAMlqC,EAAGC,GAAM,OAAAA,EAAET,SAAWQ,EAAER,QAAf,IAAyBkF,OAhGhC,GAiG9B,CAEA,MAAO,CAMLyM,QAAO,SAACzB,GACN,IAAMy6B,EAAmBH,EAAoBI,oBAC1CC,GAAgB,OAAA36B,EAAMg6B,gBAAkBW,EAAYX,aAApC,IAGbY,EAAwBN,EAAoBA,EAAoB15C,OAAS,IAErD,IAAtB65C,EACEz6B,EAAMlQ,SAAWwqC,EAAoBG,GAAkB3qC,WACzDwqC,EAAoBG,GAAoBz6B,EACxCu6B,MAGFD,EAAoB15C,OAtHI,IAuHxBof,EAAMlQ,SAAW8qC,EAAsB9qC,YAEvCwqC,EAAoBj4C,KAAK2d,GACzBu6B,IAEJ,EAKAM,uBAAsB,WACpB,IAAMJ,EAAmBpsC,KAAKsqC,IAAI2B,EAAoB15C,OAAS,EAAGyN,KAAKqa,MAAMyxB,IAA4B;AACzG,OAAOG,EAAoBG,EAC7B,EAEJ,CA1CA,CA3DuDN,GACjDW,GAA0B;AAkC9B,MAAO,CACLlB,0BAA2B,WAGzB,OAAIkB,GAA0B,EACrB,CACL10C,MAAOiI,KAAKsqC,IAAImC,EAxEI,KAyEpBlG,eAAgBkF,EAChB5E,KAAM6E,GAECI,IACF,CACL/zC,MAAO,SAGb,EACAyzC,WAAY,SAACkB,GACXV,EAAUU,EACVX,GACF,EACAryC,KAlD4BmqB,EAAUtmB,UAAS,YAAoDonB,GACnG,IAAoB,IAAAtyB,EAAA,EAAA4yC,EAAAtgB,EAAAtyB,EAAA4yC,EAAA1yC,OAAAF,IAAS,CAAxB,IAAMsf,EAAKszB,EAAA5yC,IAEXsf,EAAM8R,YAAcf,GAAwByC,OAC3CxT,EAAM8R,YAAcf,GAAwBuC,cAC9CtT,EAAMg6B,eAENh6B,EAAM2N,WAAampB,GACnB92B,EAAM2N,WAAa0sB,GAEnBC,EAAoB74B,QAAQzB,EAEhC,CAEA,IAAMg7B,EAAiBV,EAAoBO;AACvCG,GAAkBA,EAAelrC,WAAagrC,IAChDA,EAAyBE,EAAelrC,SACxCiqC,EAAkC5pC,GAAQ2mC,EAAWkE,EAAertB,WAGlEmsB,EADEkB,EAAe/3C,QAAUktB,GAAc6qB,EAAe/3C,QACjBmlC,GACrC4S,EAAe/3C,OACfoT,EAAcgV,4BAMtB,IAAErf,YAwBJ,CA3EM,CH+B4BqK,EAAeygC,EAAU5nC,SAAU2nC,EAAa3kB,GAHxE+oB,EAAetkC,EAAA5O,KACrB6xC,EAAyBjjC,EAAAijC;AAI3B,MAAO,CACL7xC,KAAM,WACJyvC,IACAsB,IACArB,GACF,EACAwD,gBAAeA,EACf/H,aAAYA,EACZ2G,WAXUljC,EAAAkjC,WAYVqB,qBAAsB,WAEpB,OADAnE,EAAkB+D,uBAAyBlB,IACpC7C,CACT,EAEJ,CI4PA,SAASoE,GAAgBC,GACvB,IAAMrmC,EAAQqmC,EAAKv5C,QAAQ;AAC3B,OAAOkT,EAAQ,EAAIqmC,EAAOA,EAAKr4C,MAAM,EAAGgS,EAC1C,CC3TM,SAAUsmC,GACdnpB,EACA7b,EACA8F,EACAmkB,EACAgb,EACAxL,EACAf,EACAwM,EACAC,GAQA,OANAtpB,EAAUtmB,UAAS,YAAmCgQ,GACpD,OAAAsW,EAAU/lB,OAAM,GAgBpB,SACEyP,EACAvF,EACAy5B,EACAyL,EACAxM,GAAkC,IAAAzsC,EAAAgO,EAAA2wB,EAAAwa,EAAAC,EAAAC,EAAAnlB,EAAAC,EAAA5qB,EAAA+vC,EAAAC,EAAAC,EAAAC,EAAAxrC,EAAA27B,EAAA8P,EAE5BC,EAAcV,EAAYW,eAAetgC,EAAKC,IAC9Cg2B,EAAqB/B,EAAoBgC,2BAA2Bl2B,EAAKzI,YAAYjE,UACrFitC,EAAapN,EAAiBpU,QAAQ/e,EAAKzI,YAAYjE,SAAU0M,EAAK9L,UACtEssC,EAA6B,CACjCjkB,IAAK,CACHkkB,iBAAkBzgC,EAAK0gC,gBACvBC,aAAcN,EACdO,YAAaL,EACb9lC,cAAe,CACbomC,wCAAyCpmC,EAAciV,sCAG3D/N,KAAM3B,EAAKzI,YAAYhE,UACvBsE,KAAI,OACJmI,KAAM,CACJ+a,OAAQ,CACNzR,MAAOtJ,EAAKikB,YAAYI,aAE1BE,YAAa,CACXjb,MAAOtJ,EAAKikB,YAAYK,kBAE1Bwc,wBAAqE,QAA5C31C,EAAA6U,EAAKm7B,kBAAkB0C,iCAAqB1yC,WAAEX,MACvEu2C,6BAA8B9sC,GAA6D,QAA5C8G,EAAAiF,EAAKm7B,kBAAkB0C,iCAAqB9iC,WAAEu+B,MAC7F0H,wCAAqF,QAA5C7yB,EAAAnO,EAAKm7B,kBAAkB0C,iCAAqB1vB,WAAE6qB,eACvFlmB,WAAY7e,GAA0D,QAAzCma,EAAApO,EAAKw3B,mBAAmBG,6BAAiBvpB,WAAE6pB,WACxEgJ,aAAchtC,GAA0D,QAAzCoa,EAAArO,EAAKw3B,mBAAmBG,6BAAiBtpB,WAAEupB,aAC1EsJ,mBAAoBjtC,GAA0D,QAAzCktC,EAAAnhC,EAAKw3B,mBAAmBG,6BAAiBwJ,WAAEtJ,kBAChFuJ,gBAAiBntC,GAA0D,QAAzCotC,EAAArhC,EAAKw3B,mBAAmBG,6BAAiB0J,WAAEtJ,gBAC7Ej0C,MAAO,CACLwlB,MAAOtJ,EAAKikB,YAAYC,YAE1Bod,uBAAwBrtC,GAAiB+L,EAAKw3B,mBAAmBc,sBACjEiJ,kBAAmBttC,GAAmD,QAAlCutC,EAAAxhC,EAAKw3B,mBAAmB0B,sBAAUsI,WAAEp4C,OACxEq4C,iBAAkBxtC,GAAmD,QAAlCytC,EAAA1hC,EAAKw3B,mBAAmB0B,sBAAUwI,WAAEpI,MACvEqI,4BAA+D,QAAlCC,EAAA5hC,EAAKw3B,mBAAmB0B,sBAAU0I,WAAE5I,eACjE6I,0BAA2B5tC,GAA8D,QAA7C6tC,EAAA9hC,EAAKm7B,kBAAkB+D,kCAAsB4C,WAAEt3C,OAC3Fu3C,+BAAgC9tC,GAA8D,QAA7C+tC,EAAAhiC,EAAKm7B,kBAAkB+D,kCAAsB8C,WAAE1I,MAChG2I,0CAAwF,QAA7CC,EAAAliC,EAAKm7B,kBAAkB+D,kCAAsBgD,WAAElJ,eAC1FmJ,UAAWniC,EAAKoiC,SAChB/9C,KAAM2b,EAAK3b,KACXg+C,yBAA0BpuC,GAA+D,QAA9CquC,EAAAtiC,EAAKw3B,mBAAmBqB,kCAAsByJ,WAAE93C,OAC3F+3C,yCAAwF,QAA9CC,EAAAxiC,EAAKw3B,mBAAmBqB,kCAAsB2J,WAAExJ,eAC1FyJ,WAAYxuC,GAA0D,QAAzCyuC,EAAA1iC,EAAKw3B,mBAAmBG,6BAAiB+K,WAAE1K,WACxE1E,aAAczP,GAAwB5vB,GAAiB+L,EAAKm7B,kBAAkBQ,cAC9EgH,aAAc3iC,EAAKi7B,YACnBjgB,UAAW,CACT1R,MAAOtJ,EAAKikB,YAAYE,eAE1BrJ,SAAU,CACRxR,MAAOtJ,EAAKikB,YAAYG,eAE1Bwe,WAAY3uC,GAAiB+L,EAAK9L,WAEpCiiC,cAAeF,IAAuBxqC,EAAcwqC,GAAsBA,SAC1E1xC,QAASyb,EAAKm7B,kBAAkBrM,OAC5B,CACEA,OAAQ,CACN+T,UAAW7iC,EAAKm7B,kBAAkBrM,OAAOgO,SACzCgG,qBAAsB9iC,EAAKm7B,kBAAkBrM,OAAOkO,kBACpD+F,kBAAmB/iC,EAAKm7B,kBAAkBrM,OAAO6N,gBACjDqG,uBAAwB/uC,GAAiB+L,EAAKm7B,kBAAkBrM,OAAO8N,8BAI/Ep5B,QAAS,CACP0Z,aAAYmjB,UACZ8B,YAAWniC,EAAKijC,yBAElB1Y,QAAS,CACP2Y,aAAczoC,EAAcyV;AAShC,OANKzkB,EAAcuU,EAAKmjC,iBACtB3C,EAAUxgC,KAAKojC,etG7Gb,SAA0Bt8C,EAA8BnC,GAE5D,IADA,IAAM0+C,EAAkC,GACtBv+C,EAAA,EAAAqG,EAAAjH,OAAOC,KAAK2C,GAAZhC,EAAAqG,EAAAnG,OAAAF,IAAqB,CAAlC,IAAMkC,EAAGmE,EAAArG;AACZu+C,EAAUr8C,GAAOrC,EAAGmC,EAAOE,GAC7B,CACA,OAAOq8C,CACT,CANM,CsG8GArjC,EAAKmjC,cACLlvC,KAGG,CACL0nB,YAAa6kB,EACbzuB,UAAW/R,EAAKzI,YAAYjE,SAC5BsoB,cAAe,CACbrb,SAAUP,EAAKO,UAGrB,CA5FA,CAdwBP,EAAMvF,EAAey5B,EAAqByL,EAAaxM,GAF3E,IDsDE,SACJ5yB,EACA+V,EACAoO,EACAjqB,EACAilC,EACA4D,EACA1D,GAEA,IAKI2D,EALEC,EAA+C,IAAIj9C,IACrDk9C,EAAcC,EAAY,eAA+BpvC,KAAgBsrC;AAS7E,SAAS8D,EAAazI,EAA8B1jC,EAA2BosC,GAC7E,IAAMC,EA+DV,SACEttB,EACAoO,EACAjqB,EACAopC,EACA5I,EACA1jC,EACAosC,YADApsC,MAA2BlD;AAI3B,IAII28B,EAIA3sC,EACAgpB,EACAU,EAVE9N,EAAKS,KACLwuB,EAAiB,IAAIr/B,EACrBszC,EAAmC,GACrCzC,EAAkB,EAEhBngC,EAAWjV,EAAau4C,GAE1BZ;AAIAU,IACFt/C,EAAOs/C,EAAYt/C,KACnBgpB,EAAUs2B,EAAYt2B,gBACtBU,EAAU41B,EAAY51B;AAGxB,IAAM+1B,EAAmB,CACvB7jC,GAAEA,EACF5b,KAAIA,EACJkT,YAAWA,EACX8V,QAAOA,EACPU,QAAOA;AAETuI,EAAU/lB,OAAM,EAAyCuzC,GACzDxtB,EAAU/lB,OAAM,EAAkCuzC;AAG5C,IAAA34C,EAAsE1B,EAC1Es6C,EA3IuC,IA6IvC,CACEh6C,aAJewtC,EAAkBpsC,EAAAhB,UAAU65C,EAAwB74C,EAAAd,OAQjE0Q,EAMFigC,GACF1kB,EACAoO,EACAjqB,EACA88B,EACA0D,EACA1jC,GAXA+/B,EAAYv8B,EAAAu8B,aACZ2G,EAAUljC,EAAAkjC,WACJgG,EAA6BlpC,EAAA5O,KACnCkzC,EAAetkC,EAAAskC,gBACfC,EAAoBvkC,EAAAukC,qBAUhBnxB,EACO,iBAAX8sB,EACI5D,GAAwB/gB,EAAW7b,EAAe68B,EAAcC,GAChE,CAAEprC,KAAM7B,EAAMktC,mBAAoB,IAH1B0M,EAA8B/1B,EAAAhiB,KAAEqrC,EAAkBrpB,EAAAqpB,mBAK1DppB,EEnOF,SAA+BkI,EAAsBvW,EAAgBikB,GACnE,IAAA74B,EAAwB24B,GAAiB,CAC7CxN,UAASA,EACTyN,aAAc,SAAC/pB,GAAU,OAAAA,EAAMgG,KAAKC,KAAOF,CAAlB,EACzBikB,SAAQA;AAGV,MAAO,CACL73B,KAPUhB,EAAAgB,KAQV83B,YARuB94B,EAAA84B,YAU3B,CAXM,CFmOwE3N,EAAWrW,EAAIs3B,GAA7E4M,EAAuB/1B,EAAAjiB,KAAE83B,EAAW7V,EAAA6V,YAG5CmgB,EAAsB76C,EAAYw6C,EAxKC;AA6KzC,SAASA,IACPC,IACAtD,GAAmB;AACnB,IAAM2D,WAAarT,EAA0B78B,KAAiB68B,EAAUz9B;AAExE+iB,EAAU/lB,OAAM,EAAkC,CAChD4yC,cAAaA,EACbzC,gBAAeA,EACfzgC,GAAEA,EACF5b,KAAIA,EACJgpB,QAAOA,EACPU,QAAOA,EACPktB,YAAWA,EACX16B,SAAQA,EACRhJ,YAAWA,EACX4jC,kBAAmBmE,IACnB9H,mBAAkBA,EAClBtjC,SAAUK,GAAQgD,EAAYhE,UAAW8wC,GACzCjC,kBAAUpR,EACViS,gBAAeA,EACfhf,YAAWA,GAEf,CAEA,OA1BA8f,IA0BO,CACL1/C,KAAIA,EACJgpB,QAAOA,EACPU,QAAOA,EACPmhB,eAAcA,EACdz6B,IAAG,SAAC9K,GAAJ,IAAAsE,EAAA+W,EAAA9U,EAAAzK;KAAA,IAAIkE,MAAA,IACEqnC,IAIJA,EAA6B,QAAjB7lC,EAAAxB,EAAQqnC,qBAAS7lC,IAAIkJ,KACjC4uC,EAAyC,QAAvBloC,EAAApR,EAAQs5C,2BAAeloC,KAEzCub,EAAU/lB,OAAM,EAAgC,CAAEygC,UAASA,IAC3D1a,EAAU/lB,OAAM,EAAsC,CAAEygC,UAASA,IACjExnC,EAAc46C,GACdnG,EAAWjN,EAAU19B,UACrB2wC,IACAF,IACA76C,cACEgH,EAAK/D,MACP,GAlNwC,KAmN1C,EACAA,KAAI,WACF+3C,IACAC,IACA9E,IACAnQ,EAAe3+B,QACjB,EACA+zC,UAAS,SAACjgD,EAAci1C,GACtB,IAAItI,EAAJ,CAGA,IAAMx9B,E3FtMN,SAAgC8lC,GACpC,OAAOA,EA7Fc,OA8FvB,CAFM,C2FsM2CA,GAAQA,EAAO/kC,GAAQgD,EAAYhE,UAAW+lC;AACzF6J,EASN,SAAwB9+C,GACtB,IAAMkgD,EAAYlgD,EAAKwc,QAAQ,qBAAsB;AAIrD,OAHI0jC,IAAclgD,GAChBE,EAAQV,KAAK,wBAAAqL,OAAwB7K,EAAI,oBAAA6K,OAAmBq1C,IAEvDA,CACT,CANA,CATmClgD,IAASmP,EACtC+jC,GAHA,CAIF,EAEJ,CAxIA,CA9DMjhB,EACAoO,EACAjqB,EACA8F,EACA06B,EACA1jC,EACAosC;AAMF,OAJAH,EAAY32C,IAAI+2C,GAChBA,EAAiB1U,eAAel/B,sBAC9BwzC,EAAY5c,OAAOgd,EACrB,IACOA,CACT,CAiCA,OA9BEttB,EAAUtmB,UAAS,eAEjByzC,EAAcC,EAAY,sBAA0C,CAClEr/C,KAAMo/C,EAAYp/C,KAClBgpB,QAASo2B,EAAYp2B,QACrBU,QAAS01B,EAAY11B,SAEzB,IAEAuI,EAAUtmB,UAAS,cACjByzC,EAAYhvC,IAAI,CAAEwuC,oBACpB,IAGA3sB,EAAUtmB,UAAS,aAAkCw0C,GAC/CA,EAAczzB,SAAWN,GAAeE,WAC1C8yB,EAAYhvC,KAEhB,IAxCE6uC,IACFC,EA0CF,SAAmC7D,GACjC,OAAOA,EAAyB1vC,oBAAW7E,GAA4B,IA6K7Cs5C,EAA2BC,EASjDC,EAtLyCC,EAAWz5C,EAAAy5C;AA6KHF,EA7KgBv5C,EAAA05C,aA6K3CJ,EA5KCG,GA8KXhO,WAAa8N,EAAc9N,WASlB,MAFrB+N,EANaD,EAAclF,KAMJxrB,UAAU,KAEJ5R,SAAS8oB,eAAeyZ,IAPvDpF,GAAgBmF,EAAclF,QAAUD,GAAgBkF,EAAgBjF,SA/KtEiE,EAAYhvC,MACZgvC,EAAcC,EAAY,gBAE9B,GACF,CAPA,CA1CyDhE,IAmDlD,CACL4E,UAAW,SAACjgD,EAAci1C,kBAAiCnlC,MACzDsvC,EAAYa,UAAUjgD,EAAMi1C,EAC9B,EACAwL,UAAW,SAACn7C,EAAuB4N,GACjCksC,EAAYhvC,IAAI,CAAEu8B,UAAWz5B,IAC7BksC,EAAcC,EAAY,eAA+BnsC,EAAa5N,EACxE,EACAwC,KAAM,WACJo3C,WAA4BnzC,cAC5BqzC,EAAYhvC,MACZ+uC,EAAYp/C,kBAAS4b,GAAS,OAAAA,EAAK7T,MAAL,GAChC,EAEJ,CAjFM,CChDFoU,EACA+V,EACAoO,EACAjqB,EACAilC,GACCjlC,EAAcqV,mBACf8vB,EAEJ,CEVO,IAEHmF,GAAmC;AAEjC,SAAUC,GACdvqC,EACAiD,EACAunC,EACAC,GAEA,IAAMC,EAAkB,IAAIt1C,EACtBu1C,EAAmB,IAAIv1C,EAGvBkW,EnEcF,SACJI,EACAzI,EACAunC,GAEA,IAWII,EH3D6Bj/B,EAiBLzc,EAhBtB27C,EG+CAH,EAAkB,IAAIt1C,EACtBu1C,EAAmB,IAAIv1C,EACvB01C,EAA+B,IAAI11C,EAEnCiV,EAC8B,WAAlCqB,EAAyBtO,MHrDMuO,EGsDRD,EAAyBC,coEpD9C,SAAiCo/B,GAErC,IADsBjjC,GAAcY,IAChB,CAClB,IAAMsiC,EAAeljC,GAfc,OAgB7BmjC,EAAanjC,GAfY,SAgBzBojC,EAAcpjC,GAfY,SAgB1BiB,EAAwB;AAE1BiiC,IACFjiC,EAAQvD,GAAKwlC,GAEXE,GAAe,SAASn9C,KAAKm9C,KAC/BniC,EAAQoiC,KAAoBD,GAE1BD,GAAc,UAAUl9C,KAAKk9C,KAC/BliC,EAAQqiC,IAAmBH,GAGzBjiC,GAAiBD,KACnBQ,GAAmBR,GACnBgiC,EAAoBtgC,eAAe1B,GAEvC,CACF,CAvBM,CvEDE8hC,EAAc,CAKlBrgC,cJT0B,IAArBnC,KIULoC,gBAU0Bvb,EAVWyc,EAWhC,SAAC5C,GACN/B,GAAU0B,GAAmBc,GAAgBT,GAAUH,GAA0B1Z,EACnF,GAZE6b,gBAAiBlB,GACjBa,cAAe,WAAM,OAczB,SAA6Bxb,GAC3B8X,GAAU0B,GAAmBc,GDpBtB,CACLN,UAbmB,MCgCmDP,GAAwBzZ,EAClG,CAFA,CAd6Cyc,EAApB,IAKhBk/B,GCRA,CACLrgC,iBACAC,eAAgBX,GAChBiB,gBAAiBhB,GACjBW,cAAeV,IE8CTU,EAAkBL,EAAoBK,cAExC2gC,EAAwBv8C,cA2C5Bqb,GACE,CACEiB,QAAS,SAACjC,GAAiB,OAACF,GAAwBE,GJnGnD,CACLD,UAbmB,UI+GqDoiC,CAAzC,EAC3BjgC,MAAOkgC,GAETlhC,EAEJ,GAvFgC5R;AAwChC+yC;AAEM,IAAA96C,EAAmF1B,cACvFmb,GACE,CACEiB,QAAS,SAACjC,GACR,IAAIL,GAA2BK,GAA/B,CAIA,IAAMsiC,EAAsBF,EAAmBpiC;AAE/C,OAoER,SAAmCA,GACjC,GAAIL,GAA2BK,GAC7B;AAGI,IAAAzY,EAA8B85C,EAAoBrhC,EAAalG,IAA7DyoC,EAAYh7C,EAAAg7C,aAAEC,EAASj7C,EAAAi7C;AAC/BxiC,EAAalG,GAAcyoC,SACpBviC,EAAaD,UAChByiC,IAAcxiC,EAAa3D,KAC7B2D,EAAa3D,GAAKS,KAClBkD,EAAaC,QAAUxO,OAAO3B,MAElC,CAZA,CArEkCwyC,GACnBA,CAJP,CAKF,EACApgC,MAAO,SAAClC,GACFH,GAAiBG,KAAkByiC,KA4F/C,SAA6BziC,GAC3ByhC,EAAezhC,EACfuhC,EAAgB50C,QAClB,CAHA,CA3F8BqT,GAEtByhC,EAAezhC,CACjB,GAEFkB,EAEJ,GA/DgC5R,KA0CbozC,EAA6Bn7C,EAAAhB,UAAUo8C,EAA0Bp7C,EAAAd;AA+CpF,SAAS27C,EAAmBpiC,GAY1B,OAXIF,GAAwBE,KAC1BA,EJ5GG,CACLD,UAbmB,MI0Hf0iC,MA6CN,SAAkCziC,GAChC,OAAOyhC,EAAaplC,KAAO2D,EAAa3D,IAAMolC,EAAa3nC,KAAgBkG,EAAalG,EAC1F,CAFA,CA5CiCkG,IAiD/ByhC,EJhKK,CACL1hC,UAbmB,KI6KnByhC,EAAiB70C,WA/Cbg1C,EAA6Bh1C,OAAO,CAAEi2C,cAAenB,EAAcoB,SAAU7iC,IAC7EyhC,EAAezhC,IAGZA,CACT,CAEA,SAASqiC,IACPrhC,GACE,CACEiB,QAAS,SAACjC,GACR,GAAIL,GAA2BK,GAC7B,MJ9HH,CACLD,UAbmB,II4If,EACAmC,MAAO,SAAClC,GACNyhC,EAAezhC,CACjB,GAEFkB,EAEJ,CAgBA,SAASuhC,IACP,gBAAOhB,EAAa3nC,EACtB,CA0BA,MAAO,CACLgpC,qBAAsBJ,EACtBK,cAnGF,WACE/hC,GACE,CACEiB,QAAS,SAACjC,GAAiB,OAACyiC,IAAsBL,EAAmBpiC,SAA1C,GAE7BkB,EAEJ,EA6FE8hC,WAAY,WAAM,OAAAvB,CAAA,EAClBF,gBAAeA,EACfC,iBAAgBA,EAChBG,6BAA4BA,EAC5BsB,eAAgBZ,EAChBliC,OAAQ,WACNwiC,IACAphC,IACA6gC,EJ9LG,CACLriC,UAbmB,KI2MnB,EACAxX,KAAM,WACJ3C,EAAcs8C,EAChB,EACAgB,mBA1BF,SAA4BC,GAC1BniC,GACE,CACEiB,QAAS,SAACjC,GAAiB,OAAAxc,EAAO,GAAIwc,EAAcmjC,EAAzB,EAC3BjhC,MAAOkgC,GAETlhC,EAEJ,EAoBF,CmE5KuBkiC,CAAkBvsC,EAAc0L,yBAA2BzI,EAAYunC;AAC5FF,GAAct+C,iBAAW,OAAAsf,EAAa5Z,MAAb;AAEzB,IAAM86C,EAAwB,IAAI5oB,GAhBEjb;AAiDpC,SAAS8jC,IACP,MAAO,CACLjnC,GAAI8F,EAAa6gC,aAAa3mC,GAC9BkmC,aAAcpgC,EAAa6gC,aAAalpC,GACxCypC,iBAAkBphC,EAAa6gC,aAAaQ,aAEhD,CAEA,OAxCArC,GAAct+C,iBAAW,OAAAwgD,EAAsB96C,MAAtB,IAEzB4Z,EAAao/B,gBAAgBn1C,sBAC3Bi3C,EAAsBp6C,IAAIq6C,IAAuB9yC,MACjD+wC,EAAgB50C,QAClB,IACAwV,EAAaq/B,iBAAiBp1C,sBAC5Bo1C,EAAiB70C,SACjB02C,EAAsBpoB,YAAYzqB,KACpC,IAIA2R,EAAa2gC,uBACbO,EAAsBp6C,IAAIq6C,IAAuB5yC,KAAehB,UAEhE4xC,EAAqBp0C,WAAWd,sBAC1Bk1C,EAAqBmC,YACvBthC,EAAa2gC,uBAEb3gC,EAAahC,QAEjB,IAiCF,SAAuBtJ,EAA8BisC,GAC3C,IAAAv6C,EAAS0O,GACfJ,EACAtS,OACA,CAACkR,GAAUkC,MAAOlC,GAAUwC,YAAaxC,GAAUoC,SAAUpC,GAAUuC,oBAlCnEspC,EAAqBmC,aACvBthC,EAAa2gC,sBAEjB,GAiCE,CAAEzrC,WAAeC,aAClB/O;AACD44C,GAAct+C,KAAK0F,EACrB,CATA,CA/BgBsO,GA0ChB,SAAyBA,EAA8BksC,GACrD,IAAMW,EAA2B,WACE,YAA7BllC,SAASg2B,iBAvCsBryB,EAAa4gC,eA0ClD,EAEQx6C,EAASqO,GAAiBC,EAAe2H,SAAU/I,GAAU2C,kBAAmBsrC,GAAyBn7C;AACjH44C,GAAct+C,KAAK0F;AAEnB,IAAMo7C,EAA0Bh+C,EAAY+9C,EA9FRn0C;AA+FpC4xC,GAAct+C,iBACZ+C,EAAc+9C,EAChB,GACF,CAdA,CArCkB9sC,GAqDlB,SAAqBA,EAA8B+sC,GACzC,IAAAr7C,EAASqO,GAAiBC,EAAetS,OAAQkR,GAAU8C,mBArDlC,OAAA4J,EAAa8gC,gBAAb,GAqD8C,CAAE5rC,aAAgB9O;AACjG44C,GAAct+C,KAAK0F,EACrB,CAHA,CApDcsO,GAUL,CACLgtC,YAAa,SAAC11B,EAAWpoB,GAAY,OAAAs9C,EAAsBtgD,KAAKorB,EAAWpoB,EAAtC,EACrCw7C,gBAAeA,EACfC,iBAAgBA,EAChBG,6BAA8Bx/B,EAAaw/B,6BAC3CxhC,OAAQgC,EAAahC,OACrB+iC,mBAAoB/gC,EAAa+gC,mBAErC,CEkCA,SAASY,GAAcC,GACrB,MACgB,MAAdA,GACc,MAAdA,CAEJ,CC7HA,IAAAC,GAAA,WAIE,SAAAA,EACUC,EACA1iB,EACD2iB,EACCl5B,GAJV,IAAA1e,EAAAzK;AACUA,KAAAoiD,UACApiD,KAAA0/B,UACD1/B,KAAAqiD,kBACCriD,KAAAmpB,oBAPFnpB,KAAAsiD,aAA0C,GAShDtiD,KAAKuiD,kBAAoBviD,KAAKqiD,gBAAgBG,gBAAgBj4C,oBAAWgK,GAAU,OAAA9J,EAAKg4C,MAAMluC,EAAX,GACrF,CAmGF,OAjGE4tC,EAAApgD,UAAAqF,IAAA,SAAI0J,GACF9Q,KAAK0iD,YAAY5xC,EACnB,EAEAqxC,EAAApgD,UAAA4gD,OAAA,SAAO7xC,EAAkBvP,GACvBvB,KAAK0iD,YAAY5xC,EAASvP,EAC5B,EAEA4gD,EAAApgD,UAAA2E,KAAA,WACE1G,KAAKuiD,kBAAkB53C,aACzB,EAEQw3C,EAAApgD,UAAA0gD,MAAR,SAAcluC,GACZ,IAAMquC,EAAiBxhD,EAAapB,KAAKsiD,cAAcv6C,KAAK;AAC5D/H,KAAKsiD,aAAe;AAEpB,IAAMO,EAAax3B,GAAiB9W,EAAM+W,QACpClR,EAAOyoC,EAAa7iD,KAAK0/B,QAAQojB,WAAa9iD,KAAK0/B,QAAQtlB;AAEjE,GACEyoC,GAKA7iD,KAAKoiD,QAAQvpC,QACb,CACA,IAAMkqC,EAAgB/iD,KAAKoiD,QAAQlpC;AAG/B6pC,EAAcnqC,kBAChBwB,EAAK4oC,GAAyBD;AAIhC,IAAME,EAAkB,CAACF,EAAc3pC,YAAawpC,GAAgBh4C,OAAOuS,SAASpV,KAAK;AACrFk7C,GACF7oC,EAAK,CACHrP,KAAMk4C,EACNC,WAAYpgD,EAAkBmgD,IAGpC,MACML,GACF5iD,KAAKoiD,QAAQrpC,MAAM/Y,KAAKoiD,QAAQtpC,QAAU8pC,EAAiB,KAAAn5C,OAAKm5C,IAElE5iD,KAAKoiD,QAAQnpC,iBAAQ8pC,GACnB3oC,EAAK4oC,GAAyBD,GAChC,GAEJ,EAEQZ,EAAApgD,UAAA2gD,YAAR,SAAoB5xC,EAAkBvP,GACpC,IAAM4hD,EAAoBr+C,EAAcgM,GAElCsyC,EAA6BpjD,KAAKoiD,QAAQ/oC,0BAA0B8pC;AAEtEC,GAA8BpjD,KAAKmpB,kBACrCrqB,EAAQV,KACN,2EAAAqL,OAA2EzJ,KAAKmpB,kBAAiB,sBAAA1f,OAAqBzK,EAAW,0EAKjIgB,KAAKqjD,cAAc9hD,IACrBvB,KAAK+T,OAAOxS,GAGdvB,KAAKgB,KAAKmiD,EAAmBC,EAA4B7hD,GAC3D,EAEQ4gD,EAAApgD,UAAAf,KAAR,SAAamiD,EAA2BC,EAAoC7hD,GAA5E,IAAAkJ,EAAAzK;AACEA,KAAKqiD,gBAAgBiB,uBAAuBF,YAExC7hD,GACFvB,KAAKsiD,aAAa/gD,GAAO4hD,EACzBnjD,KAAKqiD,gBAAgBkB,yBAErBvjD,KAAKoiD,QAAQrpC,MACX/Y,KAAKoiD,QAAQtpC,QAAUqqC,EAAoB,KAAA15C,OAAK05C,aAC/CK,GACC/4C,EAAK43C,gBAAgBkB,sBAAsBC,EAAwBJ,EACrE,GAGN,EAEQjB,EAAApgD,UAAAgS,OAAR,SAAexS,GACb,IAAMkiD,EAAiBzjD,KAAKsiD,aAAa/gD;OAClCvB,KAAKsiD,aAAa/gD;AACzB,IAAMmiD,EAAoB1jD,KAAKoiD,QAAQ/oC,0BAA0BoqC;AACjEzjD,KAAKqiD,gBAAgBsB,yBAAyBD,EAChD,EAEQvB,EAAApgD,UAAAshD,cAAR,SAAsB9hD,GACpB,gBAAOA,YAAqBvB,KAAKsiD,aAAa/gD,EAChD,EACF4gD,CAAA,CA9GA;AAgHA,SAASa,GAAyBD,GAgBhC,MAAO,CACLh4C,KAfkC,iBAAzBg4C,EAAcpqC,OAChBoqC,EAAcpqC,OAEd,IAAIzV,KAAK,CAAC6/C,EAAcpqC,QAAS,CAOtCvG,KAAM,eAMR8wC,WAAYH,EAAcnqC,iBAC1B+K,SAAUo/B,EAAcp/B,SAE5B,CCvIO,IAEMigC,GAAwB,EAAIhhD;AAyBnC,SAAUihD,GACd9wC,EACA4nB,EACAmpB,EACAnhC,EACAuS,GAGuB,IAArByF,EAAMopB,iBAC0B,IAAhCppB,EAAMqpB,eAAe7gD,QACrBw3B,EAAMspB,iBAAiBC,UAAUnxC,GAEjCqH,GAAKrH,EAAS4nB,EAAOmpB,EAAc,CACjCK,UAAW,WAAM,OAAAC,GAAmB,EAA4BzpB,EAAOmpB,EAAcnhC,EAAWuS,EAA/E,EACjBmvB,UAAW,WACT1pB,EAAMqpB,eAAeM,QAAQvxC,GAC7BwxC,GAAc5pB,EAAOmpB,EAAcnhC,EAAWuS,EAChD,IAGFyF,EAAMqpB,eAAeM,QAAQvxC,EAEjC,CAEA,SAASwxC,GACP5pB,EACAmpB,EACAnhC,EACAuS,GAEyB,IAArByF,EAAMopB,iBAGVtgD,cAEE2W,GADgBugB,EAAMqpB,eAAe5X,QACvBzR,EAAOmpB,EAAc,CACjCK,UAAW,WACTxpB,EAAMqpB,eAAeQ,UACrB7pB,EAAM8pB,mBA7DsBh3C,IA8D5B22C,GAAmB,EAA2BzpB,EAAOmpB,EAAcnhC,EAAWuS,EAChF,EACAmvB,UAAW,WACT1pB,EAAM8pB,mBAAqBz3C,KAAKsqC,IAlER5pC,IAkEyD,EAA3BitB,EAAM8pB,oBAC5DF,GAAc5pB,EAAOmpB,EAAcnhC,EAAWuS,EAChD,GAEJ,GAAGyF,EAAM8pB,mBACX,CAEA,SAASrqC,GACPrH,EACA4nB,EACAmpB,EACAp+C,GAA0E,IAAxEy+C,EAASz+C,EAAAy+C,UAAEE,EAAS3+C,EAAA2+C;AAEtB1pB,EAAMspB,iBAAiB78C,IAAI2L,GAC3B+wC,EAAa/wC,YAAU8pB,GACrBlC,EAAMspB,iBAAiBlwC,OAAOhB,GAuClC,SAA4B8pB,GAC1B,MACoB,WAAlBA,EAASzqB,OACa,IAApByqB,EAAS1pB,SAAiBD,UAAUE,QAChB,MAApBypB,EAAS1pB,QACW,MAApB0pB,EAAS1pB,QACK0pB,EAAS1pB,Q3CzIV,I2C2InB,CARA,CAtC4B0pB,IAKtBlC,EAAMopB,gBACJppB,EAAMspB,iBAAiBS,oBAAsB,EAAG,EAAmC,EACrF3xC,EAAQ2Q,MAAQ,CACdG,MAAO9Q,EAAQ2Q,MAAQ3Q,EAAQ2Q,MAAMG,MAAQ,EAAI,EACjDC,kBAAmB+Y,EAAS1pB,QAE9BkxC,MAVA1pB,EAAMopB,gBAAe,EACrBI,IAWJ,GACF,CAEA,SAASC,GACP94B,EACAqP,EACAmpB,EACAnhC,EACAuS,GAEU,IAAN5J,GAAwCqP,EAAMqpB,eAAeW,WAAahqB,EAAMiqB,oBAClF1vB,EAAY,CACVpkB,QAAS,eAAArH,OAAekZ,EAAS,oCAAAlZ,OAAmCm6C,EAAqC,OACzG9hD,OAAQ6xB,GACR7hB,YAAalD,OAEf+rB,EAAMiqB;AAER,IAAMC,EAAgBlqB,EAAMqpB;AAE5B,IADArpB,EAAMqpB,eAAiBc,KAChBD,EAAc1hD,OAAS,GAC5B0gD,GAAsBgB,EAAcL,UAAY7pB,EAAOmpB,EAAcnhC,EAAWuS,EAEpF,CAsBA,SAAS4vB,KACP,IAAMv7C,EAAmB;AACzB,MAAO,CACL25C,WAAY,EACZoB,QAAO,SAACvxC,GACF/S,KAAK2kD,WAGTp7C,EAAMvI,KAAK+R,GACX/S,KAAKkjD,YAAcnwC,EAAQmwC,WAC7B,EACA9W,MAAK,WACH,OAAO7iC,EAAM,EACf,EACAi7C,QAAO,WACL,IAAMzxC,EAAUxJ,EAAMN;AAItB,OAHI8J,IACF/S,KAAKkjD,YAAcnwC,EAAQmwC,YAEtBnwC,CACT,EACA5P,KAAI,WACF,OAAOoG,EAAMhK,MACf,EACAolD,OAAM,WACJ,OAAO3kD,KAAKkjD,YAAcU,EAC5B,EAEJ,CChJM,SAAUmB,GACd/vC,EACAgwC,EACAjnB,EACA7I,GAEA,IAAM+vB,EDqGC,CACLlB,gBAAe,EACfU,mBApIgCh3C,IAqIhCw2C,iBAqCK,CACLS,oBAAqB,EACrBQ,iBAAkB,EAClBhB,UAAS,SAACnxC,GACR,OAC+B,IAA7B/S,KAAK0kD,qBACJ1kD,KAAKklD,iBAAmBnyC,EAAQmwC,YApLF,OAqL7BljD,KAAK0kD,oBApLqB,EAsLhC,EACAt9C,IAAG,SAAC2L,GACF/S,KAAK0kD,qBAAuB,EAC5B1kD,KAAKklD,kBAAoBnyC,EAAQmwC,UACnC,EACAnvC,OAAM,SAAChB,GACL/S,KAAK0kD,qBAAuB,EAC5B1kD,KAAKklD,kBAAoBnyC,EAAQmwC,UACnC,GArDAc,eAAgBc,KAChBF,sBCzGIO,EAAuB,SAACpyC,EAAkBqyC,GAC9C,OAiDE,SACJpwC,EACAgwC,EACAjnB,EACAhrB,EACAqyC,GAGA,GAgBF,WAEE,IACE,OAAO1iD,OAAOy4B,SAAW,cAAe,IAAIA,QAAQ,WAGtD,CAFE,MAAAz1B,GACA,QACF,CACF,CAPA,IAjBoDqN,EAAQmwC,WAAanlB,EAClD,CACnB,IAAMsnB,EAAWL,EAAgBzhC,MAAM,QAASxQ;AAChD0pB,MAAM4oB,EAAU,CAAE1rB,OAAQ,OAAQnX,KAAMzP,EAAQhI,KAAMu6C,aAAiBC,KAAM,SAAUroB,KACrFp9B,YAAS+8B,GAAuB,OAAAuoB,iBAAa,CAAEjyC,OAAQ0pB,EAAS1pB,OAAQf,KAAMyqB,EAASzqB,MAAvD,IAChCtS,cACE,IAAM0lD,EAASR,EAAgBzhC,MAAM,MAAOxQ;AAE5C0yC,GAAQzwC,EAAewwC,EAAQzyC,EAAQhI,KAAMq6C,EAC/C,IAEJ,KAAO,CACL,IAAMI,EAASR,EAAgBzhC,MAAM,MAAOxQ;AAC5C0yC,GAAQzwC,EAAewwC,EAAQzyC,EAAQhI,KAAMq6C,EAC/C,CACF,CAtBM,CAjDqBpwC,EAAegwC,EAAiBjnB,EAAYhrB,EAASqyC,EAA5E;AAEF,MAAO,CACLhrC,KAAM,SAACrH,GACL8wC,GAAsB9wC,EAASkyC,EAAYE,EAAsBH,EAAgBriC,UAAWuS,EAC9F,EAKA4tB,WAAY,SAAC/vC,IAMjB,SACEiC,EACAgwC,EACAjnB,EACAhrB,GAGA,GADuBG,UAAUwyC,YAAc3yC,EAAQmwC,WAAanlB,EAElE,IACE,IAAM4nB,EAAYX,EAAgBzhC,MAAM,SAAUxQ;AAGlD,GAFiBG,UAAUwyC,WAAWC,EAAW5yC,EAAQhI,MAGvD,MAIJ,CAFE,MAAO7K,IAWb,SAA2BA,GACpB0lD,KACHA,MACAnxC,GAAkBvU,GAEtB,CALA,CAVwBA,EACpB,CAIFulD,GAAQzwC,EADOgwC,EAAgBzhC,MAAM,MAAOxQ,GACbA,EAAQhI,KACzC,CAtBA,CALyBiK,EAAegwC,EAAiBjnB,EAAYhrB,EACjE,EAEJ,CA0BA,IAAI6yC;AA0CE,SAAUH,GACdzwC,EACAvE,EACA1F,EACAq6C,GAEA,IAAM1lB,EAAU,IAAI7D;AACpB6D,EAAQmmB,KAAK,OAAQp1C,MACjB1F,aAAgB7H,MAIlBw8B,EAAQ/D,iBAAiB,eAAgB5wB,EAAKqH,MAEhD2C,GACEC,EACA0qB,EACA,sBAEE0lB,WAAa,CAAEjyC,OAAQusB,EAAQvsB,QACjC,GACA,CAGEoC,UAGJmqB,EAAQtlB,KAAKrP,EACf,CC7IM,SAAU+6C,GACd9wC,EACA6b,EACAk1B,EACA7wB,EACA8wB,EACAC,EACAC,GAEA,IAAMt8B,EAAU5U,EAAc4U,QAExBu8B,ECLF,SACJnxC,EACAoxC,EACAx8B,EACAsL,EACA8wB,EACAC,GAEA,IAAMI,EAAeC,EAAYtxC,EAAeoxC,GAC1CG,EAAe38B,GAAW08B,EAAYtxC,EAAe4U;AAE3D,SAAS08B,EAAYtxC,EAA8BtP,GAAyC,IAAvC8gD,EAAQ9gD,EAAA8gD,SAAEpE,EAAO18C,EAAA08C;AACpE,OAAO,IAAID,GACTC,EACA2C,GAAkB/vC,EAAewxC,EAAUxxC,EAAc8T,gBAAiBoM,GCL1E,SAAgCxvB,GAMb,IA+BnB+gD,EApCJC,EAAahhD,EAAAghD,cACb3oB,EAAUr4B,EAAAq4B,WACV4oB,EAAajhD,EAAAihD,cAEbV,EAAuBvgD,EAAAugD,wBAEjBW,EAHYlhD,EAAAsgD,mBAG8Bz7C,oBAAWgK,GAAU,OAAAkuC,EAAMluC,EAAM+W,OAAZ,IAC/Du7B,EAA4BZ,EAAwB17C,sBAAgB,OAAAk4C,EAAM,iBAAN,IAEpED,EAAkB,IAAIp4C,cAA6B,kBACvDw8C,EAAqBj8C,cACrBk8C,EAA0Bl8C,aAC5B,CAHyD,IAKrDm8C,EAAoB,EACpBC,EAAuB;AAE3B,SAAStE,EAAMuE,GACb,GAA6B,IAAzBD,EAAJ,CAIA,IAAME,EAAgBF,EAChB7D,EAAa4D;AAEnBC,EAAuB,EACvBD,EAAoB,EACpBI,IAEA1E,EAAgB13C,OAAO,CACrBwgB,OAAQ07B,EACRC,cAAaA,EACb/D,WAAUA,GAZZ,CAcF,CAWA,SAASgE,IACPtjD,EAAa6iD,GACbA,QACF,CAEA,MAAO,CACLjE,gBAAeA,EACXyE,oBACF,OAAOF,CACT,EAWAzD,uBAAsB,SAACF,GACjB0D,EAAoB1D,GAA8BrlB,GACpD0kB,EAAM,eAKRsE,GAAwB,EACxBD,GAAqB1D,WAnCnBqD,IACFA,EAAyBhjD,cACvBg/C,EAAM,iBACR,GAAGkE,GAkCL,EAWApD,sBAAqB,SAAC4D,kBAAA,GACpBL,GAAqBK,EAEjBJ,GAAwBL,EAC1BjE,EAAM,kBACGqE,GAAqB/oB,GAC9B0kB,EAAM,cAEV,EAYAkB,yBAAwB,SAACD,GACvBoD,GAAqBpD,EAEQ,IAD7BqD,GAAwB,IAEtBG,GAEJ,EAEJ,CAnHM,CDMsB,CACpBR,cAAe1xC,EAAckU,mBAC7B6U,WAAY/oB,EAAc8T,gBAC1B69B,cAAe3xC,EAAciU,aAC7B+8B,mBAAkBA,EAClBC,wBAAuBA,IAEzBjxC,EAAcmU,kBAElB,CAEA,MAAO,CACLq5B,gBAAiB6D,EAAahE,gBAAgBG,gBAE9Cp7C,IAAG,SAAC0J,EAAYs2C,sBACdf,EAAaj/C,IAAI0J,GACby1C,GAAgBa,GAClBb,EAAan/C,IAAIwiB,EAAQy9B,iBAAmBz9B,EAAQy9B,iBAAiBv2C,GAAWA,EAEpF,EAEA6xC,OAAQ,SAAC7xC,EAAYvP,GACnB8kD,EAAa1D,OAAO7xC,EAASvP,GACzBglD,GACFA,EAAa5D,OAAO/4B,EAAQy9B,iBAAmBz9B,EAAQy9B,iBAAiBv2C,GAAWA,EAASvP,EAEhG,EAEAmF,KAAM,WACJ2/C,EAAa3/C,OACb6/C,WAAc7/C,MAChB,EAEJ,CAhDM,CDMFsO,EACA,CACEwxC,SAAUxxC,EAAcuU,mBACxB64B,QAAS8D,EAAa,IAExBt8B,GAAW,CACT48B,SAAU58B,EAAQL,mBAClB89B,iBAAkB,SAACv2C,GAAY,OAAA3I,EAAQ2I,EAAS,CAAEsmB,YAAa,CAAE5c,GAAIoP,EAAQnC,gBAA9C,EAC/B26B,QAAS8D,EAAa,IAExBhxB,EACA8wB,EACAC;AAaF,OAVAp1B,EAAUtmB,UAAS,aAA0CssB,GACpC,SAAnBA,EAAezkB,KACjB+zC,EAAMxD,OAAO9rB,EAAgBA,EAAetc,KAAKC,IAEjD2rC,EAAM/+C,IAAIyvB,EAEd,IAEAkvB,EAAyBx7C,oBAAWgK,GAAU,OAAA4xC,EAAM/+C,IAAImN,EzF4GpD,SAAwCS,GAC5C,OAAOA,EAAckO,OAASvQ,EAChC,CAFM,CyF5GyFqC,GAA/C,IAEvCmxC,CACT,CGvCO,IC0BHmB,GACAC,GACAC;AAyDJ,SAASC,KACkC,IAArCH,GAAsBI,aAI1BlzC,GAAkB,yBAA0B8yC,IAC5CK,KACF,CAMA,SAASC,GAAcC,EAAkB9iD,GACvC8iD,EAAQC,KAAO/iD,EACf8iD,EAAQvQ,IAAMtqC,KAAKsqC,IAAIuQ,EAAQvQ,IAAKvyC,GACpC8iD,EAAQ5R,IAAMjpC,KAAKipC,IAAI4R,EAAQ5R,IAAKlxC,EACtC,CAEA,SAASgjD,GAAanmD,EAAiBE,GACrCF,EAAOkmD,KAAOhmD,EAAOgmD,IACrBlmD,EAAO01C,IAAMtqC,KAAKsqC,IAAI11C,EAAO01C,IAAKx1C,EAAOw1C,KACzC11C,EAAOq0C,IAAMjpC,KAAKipC,IAAIr0C,EAAOq0C,IAAKn0C,EAAOm0C,IAC3C,CAEA,SAAS0R,KACPL,GAAwB,CACtBI,WAAY,EACZM,gBAlBK,CAAE1Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAmBnCG,mBAnBK,CAAE3Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAoBnCI,mBApBK,CAAE5Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAqBnCK,iBArBK,CAAE7Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAsBnCM,iBAtBK,CAAE9Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAwBvC,CAEA,SAASO,KACPb,MACAD,GAAuB,CACrBW,mBA7BK,CAAE5Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GA8BnCK,iBA9BK,CAAE7Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GA+BnCM,iBA/BK,CAAE9Q,IAAK3e,IAAUsd,IAAK,EAAG6R,IAAK,GAiCvC,CCdA,SAASQ,KACP,MAAiC,WAA7B3rC,SAASg2B,gBACX,SAGEh2B,SAAS4rC,WACX,SAGF,SACF,CCrFA,SAASC,GAAoBC,EAAoB/kD,GAC/C,IAAMglD,EAAsBltC,GAAwBmB,SAASC,OAAQ6rC,GAC/DE,EAAwB7kD,cAC5B,IAAM8kD,EAAcptC,GAAwBmB,SAASC,OAAQ6rC;AACzDG,IAAgBF,GAClBhlD,EAASklD,EAEb,GATyCn7C;AAWzC,OAAO,WACL1J,EAAc4kD,EAChB,CACF,CC3DO,ICDHE,GDCSC,GAAoC;ACC3C,SAAUC,GAAiBzuC,GAC/B,OAAO0uC,GAAuB1uC,GAAQ2uC,cACxC,CAsBA,SAASD,GAAuB1uC,GAK9B,IAAIsgC;AAeJ,OAnBKiO,KACHA,GAAe,IAAI9rC,KAIjB8rC,GAAa1hD,IAAImT,GACnBsgC,EAAciO,GAAaxmD,IAAIiY,IAE/BsgC,EAAc,CACZsO,cAAe,EACfD,eAAgB,EAChBE,wBAAyB,GAE3BN,GAAa3+C,IAAIoQ,EAAQsgC,GACrBiO,GAAa1lD,KA1CY,IAkDjC,WACE,GAAK0lD,GAGL,GAAIA,GAAanqD,KACfmqD,GAAa1nB,OAAO0nB,GAAanqD,OAAOshB,OAAOjb;IAC1C,CAEL,IAAIqkD;AACJP,GAAalqD,kBAAS0qD,EAAQ9nD,GACxB6nD,IACFP,GAAc1nB,OAAO5/B,GACrB6nD,KAEJ,GACF,CACF,CAhBA,IAHSxO,CACT,CC7CA,IAAM0O,GAAoB,IAAI3gD;AAExB,SAAU4gD,GAAkB76B,GAChC,OAAO46B,GAAkBniD,IAAIunB,EAC/B,CAeM,SAAU86B,GAAoB96B,GAClC,OAAO46B,GAAkBjnD,IAAIqsB,EAC/B,CAWM,SAAU+6B,GAAqB5oB,EAAkBsB,GAOrD,IAAMpd,EAAU8b,EAAQ9b,QAClBhgB,EAAS87B,EAAmD97B;AAElE,GAAIm+B,GAAerC,EAASsB,GAAmB,CAC7C,IAAM/vB,EAAQyuB,EAAmDzuB;AACjE,GAAgB,UAAZ2S,IAAiC,WAAT3S,GAA8B,WAATA,GAA8B,UAATA,GAGpE,OAAOrN;AACF,IAAKA,GAAqB,WAAZggB,EAEnB;AAEF,OAAOwc,EACT,CAEA,MAAgB,WAAZxc,GAAoC,WAAZA,EAClB8b,EAAkD97B,MAG5C,UAAZggB,GAAmC,aAAZA,EAIpBhgB,QACT,CAEO,IAAM2kD,GAAiB,+CACjBC,GAAe,oBACfC,GAAW,aAiClBC,GAAiB;AACjB,SAAUC,GAAgB/kC,GAC9B,IAAMglC,EAAmBhlC,EAAQke,cAAcS;AAE/C,OAAImmB,GAAe9mD,KAAKgnD,GAIf,MAGFA,CACT,CAEM,SAAUC,GAAqBzf,EAAeC,GAClD,MAAO,uEAAA/gC,OAAuE8gC,EAAK,cAAA9gC,OAAa+gC,EAAM,iDACxG,CCxHO,IAAMyf,GASG,EATHA,GAUU,EAVVA,GAWL,EAXKA,GAYJ,EAZIA,GAaF,EAbEA,GAcK,EAdLA,GAeQ,EAKRC,GAQD,EARCA,GASG,EATHA,GAUF,EAVEA,GAWL,EAXKA,GAYJ,EAZIA,GAaO,GAKPC,GAWD,EAXCA,GAYA,EAZAA,GAaO,EAbPA,GAcH,EAdGA,GAeK,EAfLA,GAgBJ,EAhBIA,GAiBA,EAjBAA,GAkBO,EAlBPA,GAmBK,EAOLC,GACF,EADEA,GAEA,EAFAA,GAGJ,EAHIA,GAIE,EAJFA,GAKD,EALCA,GAMJ,EANIA,GAOL,EAPKA,GAQC,EARDA,GASD,EAKCC,GACL,EADKA,GAEJ;AChFH,SAAUC,GAAqBC,GACnC,YAAIA,GAA0D,IAA1BA,EAAehrD,OAGnD,OAAOgrD,EAAejpD,cAAKkpD,GACzB,IAAMC,EAAQD,EAAcE,UAAYF,EAAcC;AAQtD,MAL+B,CAC7BC,SAHe/pD,MAAMC,KAAK6pD,YAAQE,GAAY,OAAAA,EAAQC,OAAR,IAI9CC,SAAUL,EAAcK,iBACxBC,MAAON,EAAcM,MAAMvrD,OAAS,EAAIoB,MAAMC,KAAK4pD,EAAcM,cAGrE,GACF,CCJM,SAAUC,GACdlqB,EACAsB,EACA0F,EACA7yB,GAEA,GAAImtB,IAAqBf,GAAiBnW,OAExC,OAAO;AAET,IAAM+/B,EAAiBnqB,EAAQ4B,aAAaoF;AAC5C,GACE1F,IAAqBf,GAAiB5c,MACtCqjB,IAAkBvG,KACjBiF,GAAkBlmC,SAASwnC,IAC5BA,IAAkB7yB,EAAcgV,oBAChC,CACA,IAAMjF,EAAU8b,EAAQ9b;AAExB,OAAQ8iB,GAEN,IAAK,QACL,IAAK,MACL,IAAK,cACH,OAAOtG,GAIX,GAAgB,QAAZxc,IAAwC,QAAlB8iB,GAA6C,WAAlBA,GAA6B,CAEhF,IAAMojB,EAAQpqB;AACd,GAAIoqB,EAAMC,aAAe,EACvB,OAAOlB,GAAqBiB,EAAMC,aAAcD,EAAME;AAElD,IAAAzlD,EAAoBm7B,EAAQyJ,wBAA1BC,EAAK7kC,EAAA6kC,MAAEC,EAAM9kC,EAAA8kC;AACrB,OAAID,EAAQ,GAAKC,EAAS,EACjBwf,GAAqBzf,EAAOC,GAG9BhJ,EACT,CAGA,GAAgB,WAAZzc,IAA2C,QAAlB8iB,GAA6C,WAAlBA,GACtD,OAAOrG;AAIT,GAAgB,MAAZzc,GAAqC,SAAlB8iB,EACrB,OAAOtG;AAIT,GAAIypB,GAAkBvpD,EAAWomC,EAAe,SAE9C,OAAOtG;AAIT,GAAgB,WAAZxc,GAA0C,WAAlB8iB,EAC1B,OAAOtG,EAEX,CAEA,OAAKypB,GAA4C,iBAAnBA,GAK1B18B,GAAc08B,GACTx8B,GAAgBw8B,GALhBA,CASX,CCkCM,SAAUI,GAAkBZ,GAChC,IAAKA,EACH,OAAO;AAET,IAAIC,EJlD8BG,EAAiBS;AImDnD,IACEZ,EAAQD,EAAcC,OAASD,EAAcE,QAE7C,CADA,MAAAhlD,GACA,CAEF,OAAK+kD,GJxD6BG,EI2DRjqD,MAAMC,KAAK6pD,E7FrHT,IAArBptC,K6FqHkDiuC,GAA4BC,IAAkBxjD,KAAK,IJ3DzDsjD,EI4DLb,EAAc7oC,KJ3DrDipC,EAAQxvC,QACbsuC,aAEE8B,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAMp7C,EAAMi7C,GAA4BE,GAA4BC;AAEpE,IAAKR,IAAY56C,GAAOk5C,GAAa5mD,KAAK0N,IAAQm5C,GAAS7mD,KAAK0N,GAC9D,OAAO+6C;AAGT,IAAMM,EAAQL,GAAeE,GAAe;AAC5C,MAAO,OAAAliD,OAAOqiD,GAAKriD,OAKnB,SAA0BgH,EAAas7C,GAC3C,IACE,OAAOrqC,GAASjR,EAAKs7C,GAASpqC,IAGhC,CAFE,MAAOsK,GACP,OAAOxb,CACT,CACF,CANM,CALsCA,EAAK46C,IAAQ5hD,OAAGqiD,EAAK,IAC7D,KIsCO,IAIX,CAEA,SAASR,GAA0BU,GAGjC,OAoBF,SAAwBA,GACtB,MAAO,iBAAkBA,CAC3B,CAFA,CApBqBA,IAASA,EAAKC,aAAa5rD,SAAS,KAG9C2rD,EAAKpB,QAAQxvC,QADA,8BACqB,UAGpCmwC,GAAiBS,EAC1B,CAEA,SAAST,GAAiBS,GAIxB,OAGF,SAAyBA,GACvB,MAAO,eAAgBA,CACzB,CAFA,CAH0BA,IAASZ,GAAkBY,EAAKE,aAAgBF,EAAKpB,OAC/E,CC/HM,SAAUuB,GAAoBz9B,EAAYxqB,GAC9C,IAAMkoD,EAgCR,SAAuB19B,EAAYxqB,GACjC,OAAQwqB,EAAKC,UACX,KAAKD,EAAK29B,cACR,OAcA,SAAgC1vC,EAAoBzY,GACxD,MAAO,CACLkO,KAAM83C,GACNh6B,WAAYo8B,GAAoB3vC,EAAUzY,GAC1CqoD,mBAAoBjC,GAAqB3tC,EAAS4vC,oBAEtD,CANM,CAd6B79B,EAAkBxqB;AACjD,KAAKwqB,EAAKS,uBACR,OAoBN,SACE0R,EACA38B,GAEA,IAAMsoD,EAAet9B,GAAiB2R;AAKtC,OAJI2rB,GACFtoD,EAAQuoD,qBAAqBC,sBAAsBC,cAAc9rB,GAG5D,CACLzuB,KAAM83C,GACNh6B,WAAYo8B,GAAoBzrB,EAAS38B,GACzCsoD,aAAYA,EACZD,mBAAoBC,EAAelC,GAAqBzpB,EAAQ0rB,2BAEpE,CAfA,CApB2C79B,EAA0BxqB;AACjE,KAAKwqB,EAAKk+B,mBACR,MAoCG,CACLx6C,KAAM83C,GACNtrD,MAH+BiuD,EAnCIn+B,GAsChB9vB,KACnBkuD,SAAUD,EAAaC,SACvBC,SAAUF,EAAaE;AAvCvB,KAAKr+B,EAAKK,aACR,OA4DN,SAA8B8R,EAAkB38B,GAAyB,IAAAsE,EA4DnDwkD,EA3DdjoC,EAAU+kC,GAAgBjpB,EAAQ9b,SAClCkoC,EA2DgB,SADFD,EA1DOnsB,GA2DjB9b,SAAqBioC,aAAcE,mBAvDvC/qB,EAAmBC,GAAmBC,GAAwBxB,GAAU38B,EAAQg+B;AAEtF,GAAIC,IAAqBf,GAAiBnW,OAAQ,CAC1C,IAAA3V,EAAoBurB,EAAQyJ,wBAA1BC,EAAKj1B,EAAAi1B,MAAEC,EAAMl1B,EAAAk1B;AACrB,MAAO,CACLp4B,KAAM83C,GACNnlC,QAAOA,EACPooC,YAAUznD,EAAA,CACR0nD,SAAU,GAAA3jD,OAAG8gC,EAAK,MAClB8iB,UAAW,GAAA5jD,OAAG+gC,EAAM,OACpB9kC,EAAC47B,IrD/HgC,SqD+Ha94B,GAEhD0nB,WAAY,GACZ+8B,MAAKA,EAET,CAGA,GAAI9qB,IAAqBf,GAAiBC,OAA1C,CAIA,IAAM8rB,EDvJF,SACJtsB,EACAsB,EACAj+B,GAAyB,IAAAqb;AAEzB,GAAI4iB,IAAqBf,GAAiBnW,OACxC,MAAO;AAMT,IAJA,IAAMqiC,EAAuD,GACvDvoC,EAAU+kC,GAAgBjpB,EAAQ9b,SAClC/C,EAAM6e,EAAQsE,cAEXlkC,EAAI,EAAGA,EAAI4/B,EAAQssB,WAAW5tD,OAAQ0B,GAAK,EAAG,CACrD,IACM4mC,EADYhH,EAAQssB,WAAWpsD,KAAKE,GACVrC,KAC1BosD,EAAiBD,GAAmBlqB,EAASsB,EAAkB0F,EAAe3jC,EAAQ8Q;AACrE,OAAnBg2C,IACFsC,EAAUzlB,GAAiBmjB,EAE/B,CAEA,GACGnqB,EAA6B97B,QACjB,aAAZggB,GAAsC,WAAZA,GAAoC,WAAZA,GAAoC,UAAZA,GAC3E,CACA,IAAMwoC,EAAY9D,GAAqB5oB,EAASsB;KAAAA,IAC5CorB,IACFD,EAAUvoD,MAAQwoD,EAEtB,CAKA,GAAgB,WAAZxoC,GAAwBod,IAAqBf,GAAiB7c,MAAO,CAEvE,IAAMipC,EAAgB3sB;AAClB2sB,EAAcC,WAChBH,EAAUG,SAAWD,EAAcC,SAEvC,CAGA,GAAgB,SAAZ1oC,EAAoB,CACtB,IACM6lC,EADA8C,EAAa/sD,MAAMC,KAAKohB,EAAI2rC,aAAazsD,eAAM0+B,GAAM,OAAAA,EAAEje,OAAUkf,EAA4Blf,IAAxC,KACrDipC,EAAUQ,GAAkBsC,KACnBA,IACbJ,EAAUM,SAAWhD,EAEzB,CAGgB,UAAZ7lC,GAAwB8b,EAA6BgtB,QACjDjD,EAAUQ,GAAmBvqB,EAA6BgtB,UAE9DP,EAAUM,SAAWhD;AAYzB,IAoBInU,EACAqX,EArBEvrB,EAAe1B;AAYrB,GAXgB,UAAZ9b,GAA8C,UAAtBwd,EAAanwB,MAA0C,aAAtBmwB,EAAanwB,OACpE+vB,IAAqBf,GAAiB7c,MACxC+oC,EAAUS,UAAYxrB,EAAawrB,QAC1B7qB,GAAeX,EAAcJ,WAC/BmrB,EAAUS,SAOL,UAAZhpC,GAAmC,UAAZA,EAAqB,CAC9C,IAAMipC,EAAentB;AACrBysB,EAAUW,cAAgBD,EAAaE,OAAS,SAAW,QAC7D,CAOA,IAAMzB,EAAuBvoD,EAAQuoD;AACrC,OAAQA,EAAqBt5C,QAC3B,OACEsjC,EAAYzpC,KAAKE,MAAM2zB,EAAQ4V,WAC/BqX,EAAa9gD,KAAKE,MAAM2zB,EAAQitB,aAC5BrX,GAAaqX,IACfrB,EAAqB0B,wBAAwBjkD,IAAI22B,EAAS,CAAE4V,UAASA,EAAEqX,WAAUA;AAEnF;AACF,OACMrB,EAAqB0B,wBAAwBhnD,IAAI05B,KAC/C4V,GAAF/wC,EAA4B+mD,EAAqB0B,wBAAwB9rD,IAAIw+B,IAAlE4V,UAAEqX,EAAUpoD,EAAAooD,YAW/B,OAPIA,IACFR,EAAUc,cAAgBN,GAExBrX,IACF6W,EAAUe,aAAe5X,GAGpB6W,CACT,CAhHM,CCuJmCzsB,EAASsB,EAAkBj+B,GAE9DgsB,EAAqC;AAqBzC,O1EhKI,SAAwBxB,GAC5B,OAAOA,EAAKwB,WAAW3wB,OAAS,GAAKyvB,GAAiBN,EACxD,CAFM,C0E6IYmS,IAEF,UAAZ9b,IAcAmL,EAAao8B,GAAoBzrB,EAR7B38B,EAAQg+B,yBAA2BC,GAAoBj+B,EAAQq/B,oBAAkC,SAAZxe,GACtD7gB,EAEAvC,EAAO,GAAIuC,EAAS,CACnDg+B,uBAAwBC,EACxBoB,iBAA8B,SAAZxe,MAMjB,CACL3S,KAAM83C,GACNnlC,QAAOA,EACPooC,WAAUA,EACVj9B,WAAUA,EACV+8B,MAAKA,EA9BP,CAgCF,CA1DA,CA5DkCv+B,EAAiBxqB;AAC/C,KAAKwqB,EAAKG,UACR,OAgIN,SAA2ByU,EAAgBp/B,GACzC,IAAMu/B,EAAcJ,GAAeC,EAAUp/B,EAAQq/B,qBAA2Br/B,EAAQg+B;AACxF,YAAIuB,EAGJ,MAAO,CACLrxB,KAAM83C,GACNzmB,YAAWA,EAEf,CATA,CAhI+B/U,EAAcxqB;AACzC,KAAKwqB,EAAK4/B,mBACR,MA0IG,CACLl8C,KAAM83C,GACNzmB,YAAa,IA/GjB,IAAmCopB,CA3BnC,CAfA,CAhCuCn+B,EAAMxqB;AAC3C,IAAKkoD,EACH,OAAO;AAIT,IAAM5xC,EAAKgvC,GAAoB96B,IAYxB6/B,KAXDC,EAAuBpC;AAM7B,OALAoC,EAAqBh0C,GAAKA,ELTtB,SAA8BkU,EAAY+/B,GAC9CnF,GAAkBp/C,IAAIwkB,EAAM+/B,EAC9B,CAFM,CKUgB//B,EAAMlU,GACtBtW,EAAQolD,mBACVplD,EAAQolD,kBAAkBliD,IAAIoT,GAEzBg0C,CACT,CAEA,IAAID,GAAU;AAKR,SAAUjC,GAAoB59B,EAAYxqB,GAC9C,IAAMqN,EAAiC;AAOvC,OANA6d,GAAkBV,YAAOggC,GACvB,IAAMC,EAAsBxC,GAAoBuC,EAAWxqD;AACvDyqD,GACFp9C,EAAOvQ,KAAK2tD,EAEhB,IACOp9C,CACT,CCtDM,SAAUq9C,GACdjyC,EACA3H,EACAy3C,GAGA,OAAON,GAAoBxvC,EAAU,CACnC8vC,qBAAoBA,EACpBvqB,uBAAwBltB,EAAcyV,oBACtCzV,cAAaA,GAEjB,CCdM,SAAU65C,GAAat6C,GAC3B,OAAO4I,QAAS5I,EAAqBu6C,eACvC,CAEM,SAAUC,GAAex6C,GAC7B,WAAIA,EAAMy6C,UAAqBhgC,GAAiBza,EAAM3S,QAC7C2S,EAAM06C,eAAe,GAEvB16C,EAAM3S,MACf,CCPM,SAAUstD,GACdptD,EACAiJ,GAEA,MAAO,CACLA,KAAMpJ,EACJ,CACEG,OAAMA,GAERiJ,GAEFqH,KAAM63C,GACN96C,UAAWT,KAEf,CCRA,IAAAygD;AAIM,SAAUC,GAAUp6C,EAAiCq6C,GACnD,IAAA3pD,EAAwD1B,YAC3DuQ,GACC,IAAM3S,EAASmtD,GAAex6C;AAC9B,GAAIg1C,GAAkB3nD,GAAS,CAC7B,IAAM0tD,EAAcC,GAAwBh7C;AAC5C,IAAK+6C,EACH;AAEF,IAAM7kB,EAA0B,CAC9BjwB,GAAIgvC,GAAoB5nD,GACxB4tD,WAAY,EACZ9kB,EAAG4kB,EAAY5kB,EACfG,EAAGykB,EAAYzkB;AAGjBwkB,EACEH,GACEL,GAAat6C,GAAS41C,GAA8BA,GACpD,CAAEsF,UAAW,CAAChlB,KAGpB,CACF,GA3BkC,GA6BlC,CACEjmC,cAzBekrD,EAAchqD,EAAAhB,UAAUirD,EAAcjqD,EAAAd,OA6B3CgrD,EAAmBx6C,GAC/BJ,EACA2H,SACA,CAAC/I,GAAUuD,WAAYvD,GAAU0C,YACjCo5C,EACA,CACEl6C,WACAC,aAEH/O;AAED,MAAO,CACLA,KAAM,WACJkpD,IACAD,GACF,EAEJ,CAEM,SAAUJ,GAAwBh7C,GAClC,IAAA7O,EAA6BmpD,GAAat6C,GAASA,EAAMu6C,eAAe,GAAKv6C,EAAlEm2B,EAAChlC,EAAAilC,QAAWE,EAACnlC,EAAAolC;AAC5B,GAAIpoC,OAAO8xC,eAAgB,CACnB,IAAAl/B,EC/B0C,SAACq1B,EAAiBG,GACpE,IAAM0J,EAAiB9xC,OAAO8xC,eACxBqb,EAAgC,CACpCC,gBAAiBnlB,EACjBolB,gBAAiBjlB,EACjBklB,gBAAiBrlB,EACjBslB,gBAAiBnlB;AAGnB,OAAK0J,GAvBP,SAAoCA,GAClC,OACExnC,KAAKkjD,IAAI1b,EAAeM,QAAUN,EAAeO,UAAYryC,OAAOmyC,SATtD,IAUd7nC,KAAKkjD,IAAI1b,EAAeC,SAAWD,EAAeE,WAAahyC,OAAO4xC,SAVxD,EAYlB,CALA,CA0BwCE,IAEpCqb,EAAWC,gBAAkB9iD,KAAKE,MAAMy9B,EAAU6J,EAAeE,YACjEmb,EAAWE,gBAAkB/iD,KAAKE,MAAM49B,EAAU0J,EAAeO,aAGjE8a,EAAWG,gBAAkBhjD,KAAKE,MAAMy9B,EAAU6J,EAAeE,YACjEmb,EAAWI,gBAAkBjjD,KAAKE,MAAM49B,EAAU0J,EAAeO,YAE5D8a,GAVEA,CAWX,CDSiDM,CAAqCzlB,EAAGG;AACrFH,EADuBp1B,EAAA06C,gBAEvBnlB,EAFwCv1B,EAAA26C,eAG1C,CACA,GAAK5xC,OAAO+xC,SAAS1lB,IAAOrsB,OAAO+xC,SAASvlB,GAM5C,MAAO,CAAEH,EAACA,EAAEG,EAACA;AALPt2B,EAAMzK,WACR0K,GAAkB,gCAKxB,CEjEA,IAAM67C,KAA2B3qD,GAAA,IAS9BkO,GAAUiD,YAAauzC,GAExB1kD,GAACkO,GAAUqD,YAAamzC,GACxB1kD,GAACkO,GAAUkC,OAAQs0C,GACnB1kD,GAACkO,GAAU0D,cAAe8yC,GAC1B1kD,GAACkO,GAAUmC,WAAYq0C,GACvB1kD,GAACkO,GAAUwD,OAAQgzC,GACnB1kD,GAACkO,GAAUyD,MAAO+yC,GAClB1kD,GAACkO,GAAUwC,aAAcg0C,GACzB1kD,GAACkO,GAAUyC,WAAY+zC,GAA6B+E;AAKhD,SAAUmB,GACdt7C,EACAu7C,EACAC,GA8BA,OAAOp7C,GACLJ,EACA2H,SACAle,OAAOC,KAAK2xD,cA/BG97C,GACf,IAAM3S,EAASmtD,GAAex6C;AAC9B,GACEytB,GAAoBpgC,EAAQoT,EAAcyV,uBAAyB2W,GAAiBnW,QACnFs+B,GAAkB3nD,GAFrB,CAMA,IAGI03C,EAHE9+B,EAAKgvC,GAAoB5nD,GACzBwQ,EAAOi+C,GAA4B97C,EAAMnC;AAG/C,GAAIA,IAASg4C,IAA6Bh4C,IAASg4C,GAA4B,CAC7E,IAAMkF,EAAcC,GAAwBh7C;AAC5C,IAAK+6C,EACH;AAEFhW,EAAc,CAAE9+B,GAAEA,EAAEpI,KAAIA,EAAEs4B,EAAG4kB,EAAY5kB,EAAGG,EAAGykB,EAAYzkB,EAC7D,MACEyO,EAAc,CAAE9+B,GAAEA,EAAEpI,KAAIA;AAG1B,IAAMq+C,EAAS9uD,EACb,CAAE6Y,GAAIg2C,EAAUE,cAAcn8C,IAC9B26C,GAAkD/E,GAAoC7Q;AAExFiX,EAAmBE,EAnBnB,CAoBF,GAME,CACEj7C,WACAC,YAGN,CC/DM,SAAUk7C,GACd37C,EACA47C,EACAzC,EACAvsD,kBAAA+a;AAEM,IAAAjX,EAAwD1B,YAAUuQ,GACtE,IAAM3S,EAASmtD,GAAex6C;AAC9B,GACG3S,GACDogC,GAAoBpgC,EAAQoT,EAAcyV,uBAAyB2W,GAAiBnW,QACnFs+B,GAAkB3nD,GAHrB,CAOA,IAAM4Y,EAAKgvC,GAAoB5nD,GACzBivD,EACJjvD,IAAW+a,SACP,CACE85B,UAAW7B,KACXkZ,WAAYzZ,MAEd,CACEoC,UAAWzpC,KAAKE,MAAOtL,EAAuB60C,WAC9CqX,WAAY9gD,KAAKE,MAAOtL,EAAuBksD;AAEvDK,EAAwBjkD,IAAItI,EAAQivD,GACpCD,EACE1B,GAAwC/E,GAA0B,CAChE3vC,GAAEA,EACFkwB,EAAGmmB,EAAgB/C,WACnBjjB,EAAGgmB,EAAgBpa,YAjBvB,CAoBF,GAtCgC,KAUbiZ,EAAchqD,EAAAhB,UAAUirD,EAAcjqD,EAAAd,OA8B3CgrD,EAAmB76C,GAAiBC,EAAepT,EAAQgS,GAAUuC,OAAQu5C,EAAgB,CACzGl6C,WACAC,aACA/O;AAEF,MAAO,CACLA,KAAM,WACJkpD,IACAD,GACF,EAEJ,CC/CM,SAAUmB,GACd97C,EACA+7C,GAEA,IAAMC,EAA6B/b,GAAuBjgC,GAAezK,oBAAWQ,GAClFgmD,EAAiB7B,GAAgD/E,GAAkCp/C,GACrG;AAEA,MAAO,CACLrE,KAAM,WACJsqD,EAA2BrmD,aAC7B,EAEJ,CChBM,SAAUsmD,GACdj8C,EACAk8C,GAEA,OAAO97C,GACLJ,EACA2H,SACA,CAAC/I,GAAU8D,KAAM9D,GAAU+D,iBAC1BpD,GACC,IAAM3S,EAASmtD,GAAex6C;AAE3B3S,GACDogC,GAAoBpgC,EAAQoT,EAAcyV,uBAAyB2W,GAAiBnW,QACnFs+B,GAAkB3nD,IAIrBsvD,EACEhC,GAAkD/E,GAAoC,CACpF3vC,GAAIgvC,GAAoB5nD,GACxBwQ,KAAMmC,EAAMnC,OAASwB,GAAU8D,KAAO2yC,GAA4BA,KAGxE,GACA,CACE70C,WACAC,YAGN,CC9BM,SAAU07C,GAAgBC,GAC9B,SAASC,EAA2BnF,EAAkCxoD,GAChEwoD,GAAc3C,GAAkB2C,EAAWoF,YAC7C5tD,EAAS8lD,GAAoB0C,EAAWoF,WAE5C,CAEA,IAAMC,EAA0B,CAC9B93B,GAAiB+3B,cAAczvD,UAAW,uBAAe2D,GAAiD,IAAvCwmD,EAAUxmD,EAAA9D,OAAE0T,EAAA5P,EAAAf,WAAaqnD,EAAI12C,EAAA,GAAE5B,EAAK4B,EAAA;AACrG+7C,EAA2BnF,YAAa1xC,GACtC,OAAA42C,EACElC,GAAgD/E,GAAkC,CAChF3vC,GAAEA,EACFi3C,KAAM,CAAC,CAAEzF,KAAIA,EAAEt4C,MAAKA,MAHxB,GAOJ,IAEA+lB,GAAiB+3B,cAAczvD,UAAW,uBAAe2D,GAA2C,IAAjCwmD,EAAUxmD,EAAA9D,OAAe8R,EAAKhO,EAAAf,WAAA;AAC/F0sD,EAA2BnF,YAAa1xC,GACtC,OAAA42C,EACElC,GAAgD/E,GAAkC,CAChF3vC,GAAEA,EACFk3C,QAAS,CAAC,CAAEh+C,MAAKA,MAHrB,GAOJ;AAUF,SAASi+C,EAA+BC,GACtCL,EAAwBvwD,KACtBy4B,GAAiBm4B,EAAI7vD,UAAW,uBAAe2D,GAAiD,IAAvCwmD,EAAUxmD,EAAA9D,OAAE0T,EAAA5P,EAAAf,WAAaqnD,EAAI12C,EAAA,GAAE5B,EAAK4B,EAAA;AAC3F+7C,EAA2BnF,EAAW2F,2BAAmBr3C,GACvD,IAAMpR,EAAO0oD,GAAuB5F;AAChC9iD,IACFA,EAAKpI,KAAK0S,GAAS,GACnB09C,EACElC,GAAgD/E,GAAkC,CAChF3vC,GAAEA,EACFi3C,KAAM,CAAC,CAAEzF,KAAIA,EAAEt4C,MAAOtK,OAI9B,GACF,IAEAqwB,GAAiBm4B,EAAI7vD,UAAW,uBAAe2D,GAA2C,IAAjCwmD,EAAUxmD,EAAA9D,OAAe8R,EAAKhO,EAAAf,WAAA;AACrF0sD,EAA2BnF,EAAW2F,2BAAmBr3C,GACvD,IAAMpR,EAAO0oD,GAAuB5F;AAChC9iD,IACFA,EAAKpI,KAAK0S,GACV09C,EACElC,GAAgD/E,GAAkC,CAChF3vC,GAAEA,EACFk3C,QAAS,CAAC,CAAEh+C,MAAOtK,OAI3B,GACF,IAEJ,CAEA,MAzC+B,oBAApB2oD,gBACTJ,EAA+BI,kBAE/BJ,EAA+BK,cAC/BL,EAA+BM,kBAqC1B,CACLvrD,KAAM,WACJ6qD,EAAwB5yD,kBAASuzD,GAAY,OAAAA,EAAQxrD,MAAR,GAC/C,EAEJ,CAEM,SAAUorD,GAAuB9F,GAGrC,IAFA,IAAM5iD,EAAiB,GACnB+oD,EAAcnG,EACXmG,EAAYC,YAAY,CAC7B,IACMC,EADQ1xD,MAAMC,KAAMuxD,EAAYC,WAA+B1H,UACjDlqD,QAAQ2xD;AAC5B/oD,EAAK8vB,QAAQm5B,GACbF,EAAcA,EAAYC,UAC5B,CAEA,GAAKD,EAAYN,iBAAjB,CAIA,IACMn+C,EADQ/S,MAAMC,KAAKuxD,EAAYN,iBAAiBnH,UAClClqD,QAAQ2xD;AAG5B,OAFA/oD,EAAK8vB,QAAQxlB,GAENtK,CANP,CAOF,CCtGM,SAAUkpD,GAAWt9C,EAAiCu9C,GAC1D,OAAOn9C,GAAkBJ,EAAetS,OAAQ,CAACkR,GAAUwD,MAAOxD,GAAUyD,kBAC1Ek7C,EAAQ,CACNxnD,KAAM,CAAEynD,UAAW71C,SAAS4rC,YAC5Bn2C,KAAM63C,GACN96C,UAAWT,MAEf,GACF,CCNM,SAAU+jD,GACd5hC,EACA6hC,EACAlC,GAEA,IAAMmC,EAA0B9hC,EAAUtmB,UAAS,aAA8CQ,GAAI,IAAAwU,EAAA0I,EAAAhnB;AAE5E,WAArB8J,EAAKmrB,YAAY9jB,MACW,UAA5BrH,EAAKmrB,YAAYZ,OAAOljB,OACiB,QAAzCkD,EAAmC,QAAnC5P,EAAAqF,EAAKmrB,YAAYZ,OAAOwJ,uBAAWp5B,WAAE0M,gBAAIkD,WAAE/V,SAC3C,WAAYwL,EAAKorB,gBACQ,QAAzBzN,EAAA3d,EAAKorB,cAAcqX,kBAAM9kB,WAAEnpB,SAE3BmzD,EAAc,CACZvjD,UAAWpE,EAAKmrB,YAAYha,KAC5B9J,KAAM63C,GACNl/C,KAAM,CACJmiC,iBAAkBniC,EAAKmrB,YAAYZ,OAAOwJ,YAAY1sB,KACtDo+C,UAAWzlD,EAAKorB,cAAcqX,OAAOlsC,cAAKpB,GAAM,OAAAswD,EAAUE,cAAcxwD,EAAxB,MAIxD;AAEA,MAAO,CACLwG,KAAM,WACJisD,EAAwBhoD,aAC1B,EAEJ,CC7BM,SAAUioD,GAAa/hC,EAAsBgiC,GACjD,IAAMC,EAAsBjiC,EAAUtmB,UAAS,cAC7CsoD,EAAU,CACR1jD,UAAWT,KACX0D,KAAM63C,IAEV;AAEA,MAAO,CACLvjD,KAAM,WACJosD,EAAoBnoD,aACtB,EAEJ,CCVM,SAAUooD,GACd/9C,EACAg+C,EACApxD,kBAAA+a;AAEA,IA4BIs2C,EA5BExoC,EAAsBzV,EAAcyV,oBACpCyoC,EAA+C,IAAIvqD,QAEnD6jD,EAAe5qD,IAAW+a,SAElBw2C,EAAuB/9C,GACnCJ,EACApT,EAIA4qD,EAAe,CAAC54C,GAAU4D,QAAU,CAAC5D,GAAU6D,MAAO7D,GAAU4D,kBAC/DjD,GACC,IAAM3S,EAASmtD,GAAex6C,IAE5B3S,aAAkBmjC,kBAClBnjC,aAAkBwxD,qBAClBxxD,aAAkByxD,oBAElBC,EAAgB1xD,EAEpB,GACA,CACE4T,WACAC,aAEH/O;AAGD,GAAK8lD,EAYHyG,EAAoCpuD;IAZnB,CACjB,IAAM0uD,EAA0B,CAC9Br5B,GAAiB6K,iBAAiBhjC,UAAW,QAASuxD,GACtDp5B,GAAiB6K,iBAAiBhjC,UAAW,UAAWuxD,GACxDp5B,GAAiBm5B,kBAAkBtxD,UAAW,QAASuxD,GACvDp5B,GAAiBk5B,oBAAoBrxD,UAAW,QAASuxD,GACzDp5B,GAAiBm5B,kBAAkBtxD,UAAW,gBAAiBuxD;AAEjEL,EAAoC,WAClCM,EAAwB50D,kBAASuzD,GAAY,OAAAA,EAAQxrD,MAAR,GAC/C,CACF,CAIA,MAAO,CACLA,KAAM,WACJusD,IACAE,GACF;AAGF,SAASG,EAAgB1xD,GACvB,IAAMugC,EAAmBH,GAAoBpgC,EAAQ6oB;AACrD,GAAI0X,IAAqBf,GAAiBnW,OAA1C,CAIA,IAEIuoC,EAFEphD,EAAOxQ,EAAOwQ;AAGpB,GAAa,UAATA,GAA6B,aAATA,EAAqB,CAC3C,GAAI8wB,GAAethC,EAAQugC,GACzB;AAEFqxB,EAAa,CAAEC,UAAY7xD,EAA4BmsD,QACzD,KAAO,CACL,IAAMhpD,EAAQ0kD,GAAqB7nD,EAAQugC;AAC3C,YAAIp9B,EACF;AAEFyuD,EAAa,CAAE7vB,KAAM5+B,EACvB,CAGA2uD,EAAY9xD,EAAQ4xD;AAGpB,IjJzCFruC,EACAzhB,EiJwCQ9E,EAAOgD,EAAOhD;AACP,UAATwT,GAAoBxT,GAASgD,EAA4BmsD,UjJ1C/D5oC,EiJ2CYxI,SAASyoB,iBAAiB,6BAAA37B,OAA6B82B,GAAU3hC,GAAK,OjJ1ClF8E,EiJ0CyF,SAACspD,GAChFA,IAAOprD,GAET8xD,EAAY1G,EAAI,CAAEyG,cAEtB,EjJ7CJ9yD,MAAMoB,UAAUpD,QAAQsD,KAAKkjB,EAAMzhB,GiJgBjC,CA+BF,CAKA,SAASgwD,EAAY9xD,EAAc4xD,GACjC,GAAKjK,GAAkB3nD,GAAvB,CAGA,IAAM+xD,EAAiBT,EAAkB7wD,IAAIT;AAE1C+xD,GACAA,EAAqChwB,OAAU6vB,EAAiC7vB,MAChFgwB,EAA2CF,YAAeD,EAAuCC,YAElGP,EAAkBhpD,IAAItI,EAAQ4xD,GAC9BR,EACE9D,GACE/E,GACAxoD,EACE,CACE6Y,GAAIgvC,GAAoB5nD,IAE1B4xD,KAfR,CAoBF,CACF,CC9DM,SAAUI,GACdC,EACA7+C,EACA03C,EACA9qD,GAEA,IAAM6pB,EAAmBF;AACzB,IAAKE,EACH,MAAO,CAAE/kB,KAAM7B,EAAM49C,MAAO59C;AAG9B,IAAMivD,EChEF,SAA8BC,GAClC,IAAIC,EAAuBnvD,EACvBovD,EAAwC;AAE5C,SAASxR,IACPuR,IACAD,EAAqBE,GACrBA,EAAmB,EACrB,CAEM,IAAAvuD,EAAwD1B,EAASy+C,EAZ/B,GAYkE,CACxGn+C,aADiB4vD,EAAcxuD,EAAAhB,UAAUirD,EAAcjqD,EAAAd;AAIzD,MAAO,CACLuvD,aAAc,SAACC,GACmB,IAA5BH,EAAiB10D,SACnBy0D,EAsBR,SAA6BtwD,EAAsB2wD,GACjD,GAAI3xD,OAAO4xD,qBAAuB5xD,OAAO6xD,mBAAoB,CAC3D,IAAMC,EAAK9xD,OAAO4xD,oBAAoBx0D,EAAQ4D,GAAW2wD;AACzD,OAAO,WAAM,OAAA3xD,OAAO6xD,mBAAmBC,EAA1B,CACf,CACA,IAAMh6C,EAAK9X,OAAO+xD,sBAAsB30D,EAAQ4D;AAChD,OAAO,WAAM,OAAAhB,OAAOgyD,qBAAqBl6C,EAA5B,CACf,CAPA,CAtBmD05C,EAAgB,CAAES,QAzBlC,OA2B7BV,EAAiBjzD,KAAIxB,MAArBy0D,EAAyBG,EAC3B,EAEA3R,MAAKA,EAEL/7C,KAAM,WACJstD,IACArE,GACF,EAEJ,CA7BM,EDgEkBiF,SAAqBR,IA+B7C,SACEA,EACAP,EACA7+C,EACA03C,GAEA,IAAMmI,EAA+C,IAAI93C;AAEzDq3C,EACGxpD,iBAAQkqD,GAAqD,MAAkB,cAAlBA,EAAS1iD,IAAT,IAC7DzT,kBAASm2D,GACRA,EAASC,aAAap2D,kBAASq2D,GAC7BC,GAAyBD,EAAatI,EAAsBwI,iBAC9D,GACF;AAMF,IAAMC,EAAoBf,EAAUxpD,iBACjCkqD,GACC,OAAAA,EAASlzD,OAAOolC,apB3HhB,SAA6CtY,GAEjD,IADA,IAAIwF,EAAuBxF,EACpBwF,GAAS,CACd,IAAKq1B,GAAkBr1B,KAAahF,GAAiBgF,GACnD;AAEFA,EAAU1E,GAAc0E,EAC1B,CACA,QACF,CATM,CoB4HmC4gC,EAASlzD,SAC5CogC,GAAoB8yB,EAASlzD,OAAQoT,EAAcyV,oBAAqBoqC,KACtEzzB,GAAiBnW,MAHnB,IAMEvlB,EAoCR,SACE0uD,EACAp/C,EACA03C,EACAmI,GAeA,IAFA,IAAMO,EAAqB,IAAIt0D,IACzBi0D,EAAe,IAAIh4C,IAAmC9N,EAAA,SACjD6lD,GACTA,EAASO,WAAW12D,kBAAS+vB,GAC3B0mC,EAAmBhuD,IAAIsnB,EACzB,IACAomC,EAASC,aAAap2D,kBAAS+vB,GACxB0mC,EAAmBjuD,IAAIunB,IAC1BqmC,EAAa7qD,IAAIwkB,EAAMomC,EAASlzD,QAElCwzD,EAAmBj0B,OAAOzS,EAC5B,GAAE,EATmBrvB,EAAA,EAAAi2D,EAAAlB,EAAA/0D,EAAAi2D,EAAA/1D,OAAAF,IAAJ4P,EAAAqmD,EAAAj2D;AAsBnB,IAAMk2D,EAA2B50D,MAAMC,KAAKw0D;AACrBG,EA6KjBpc,eAAMlqC,EAAGC,GACb,IAAMu7B,EAAWx7B,EAAEumD,wBAAwBtmD;AAE3C,OAAIu7B,EAAW7b,KAAK6mC,gCACV,EACChrB,EAAW7b,KAAK8mC,4BAEhBjrB,EAAW7b,KAAK+mC,4BADlB,EAGElrB,EAAW7b,KAAKgnC,6BACjB,EAGH,CACT;AApLA,IAHA,IAAMtM,EAAoB,IAAIxoD,IAExB+0D,EAA0C,GAC7BnwD,EAAA,EAAAowD,EAAAP,EAAA7vD,EAAAowD,EAAAv2D,OAAAmG,IAA0B,CAAxC,IAAMgpB,EAAIonC,EAAApwD;AACb,IAAIqwD,EAAkBrnC,GAAtB,CAIA,IAAMwT,EAAyBF,GAC7BtT,EAAKe,WACLza,EAAcyV,oBACdoqC;AAEF,GAAI3yB,IAA2Bd,GAAiBnW,QAAUiX,IAA2Bd,GAAiBC,OAAtG,CAIA,IAAM+qB,EAAiBD,GAAoBz9B,EAAM,CAC/C46B,kBAAiBA,EACjBpnB,uBAAsBA,EACtBuqB,qBAAsB,CAAEt5C,OAAM,EAAuCu5C,sBAAqBA,GAC1F13C,cAAaA;AAEf,GAAKo3C,EAAL,CAIA,IAAM38B,EAAaD,GAAcd;AACjCmnC,EAAmB70D,KAAK,CACtBg1D,OAAQC,EAAevnC,GACvBwnC,SAAU1M,GAAoB/5B,GAC9Bf,KAAM09B,GANR,CAVA,CATA,CA2BF,CAEA,IAAM+J,EAA8C;AAUpD,OATApB,EAAap2D,kBAAS8pC,EAAQ/Z,GACxB66B,GAAkB76B,IACpBynC,EAAqBn1D,KAAK,CACxBk1D,SAAU1M,GAAoB/gB,GAC9BjuB,GAAIgvC,GAAoB96B,IAG9B,IAEO,CAAE+iC,KAAMoE,EAAoBnE,QAASyE,EAAsBJ,kBAAiBA;AAEnF,SAASA,EAAkBrnC,GACzB,OAAO66B,GAAkB76B,IAAS46B,EAAkBniD,IAAIqiD,GAAoB96B,GAC9E,CAEA,SAASunC,EAAevnC,GAEtB,IADA,IAAIa,EAAcb,EAAKa,YAChBA,GAAa,CAClB,GAAIg6B,GAAkBh6B,GACpB,OAAOi6B,GAAoBj6B;AAE7BA,EAAcA,EAAYA,WAC5B,CAEA,OAAO,IACT,CACF,CA5GA,CAnCI4lC,EAAkBvqD,iBACfkqD,GAA2E,MAAkB,cAAlBA,EAAS1iD,IAAT,IAE9E4C,EACA03C,EACAmI,GANMpD,EAAI/rD,EAAA+rD,KAAEC,EAAOhsD,EAAAgsD,QAAEqE,EAAiBrwD,EAAAqwD,kBASlCK,EAyIR,SACEhC,EACAp/C,EACA6/C,GAeA,IAf4C,IAAAt1C,EAEtC82C,EAAgC,GAGhCC,EAAe,IAAIx1D,IAUFzB,EAAA,EAAAk3D,EATGnC,EAAUxpD,iBAAQkqD,GAC1C,OAAIwB,EAAanvD,IAAI2tD,EAASlzD,UAG9B00D,EAAalvD,IAAI0tD,EAASlzD,WAE5B,IAGuBvC,EAAAk3D,EAAAh3D,OAAAF,IAAmB,CAArC,IAAMy1D,EAAQyB,EAAAl3D;AAEjB,GADcy1D,EAASlzD,OAAO6hC,cAChBqxB,EAAS0B,SAAvB,CAIA,IAAMt0B,EAAyBF,GAC7BxS,GAAcslC,EAASlzD,QACvBoT,EAAcyV,oBACdoqC;AAEE3yB,IAA2Bd,GAAiBnW,QAAUiX,IAA2Bd,GAAiBC,QAItGg1B,EAAcr1D,KAAK,CACjBwZ,GAAIgvC,GAAoBsL,EAASlzD,QAEjCmD,MAAqE,QAA9DW,EAAA29B,GAAeyxB,EAASlzD,UAAesgC,cAAuBx8B,IAAI,MAd3E,CAgBF,CAEA,OAAO2wD,CACT,CAzCA,CAxIIlB,EAAkBvqD,iBACfkqD,GACC,MAAkB,kBAAlBA,EAAS1iD,OAA6B2jD,EAAkBjB,EAASlzD,OAAjE,IAEJoT,EACA6/C,GAGI1H,EA2KR,SACEiH,EACAp/C,EACA6/C,GAqBA,IAnBA,IAAM4B,EAA0C,GAG1CC,EAAkB,IAAI35C,IACtBo4C,EAAoBf,EAAUxpD,iBAAQkqD,GAC1C,IAAM6B,EAAoBD,EAAgBr0D,IAAIyyD,EAASlzD;AACvD,QAAI+0D,iBAAmBxvD,IAAI2tD,EAASjtB,kBAG/B8uB,EAGHA,EAAkBvvD,IAAI0tD,EAASjtB,eAF/B6uB,EAAgBxsD,IAAI4qD,EAASlzD,OAAQ,IAAId,IAAI,CAACg0D,EAASjtB,oBAK3D,IAGM+uB,EAAmB,IAAI75C,IACN1d,EAAA,EAAAw3D,EAAA1B,EAAA91D,EAAAw3D,EAAAt3D,OAAAF,IAAmB,CAArC,IAAMy1D,EAAQ+B,EAAAx3D;AAEjB,GADwBy1D,EAASlzD,OAAO6gC,aAAaqyB,EAASjtB,iBACtCitB,EAAS0B,SAAjC,CAGA,IAAMrzB,EAAenB,GAAoB8yB,EAASlzD,OAAQoT,EAAcyV,oBAAqBoqC,GACvF7J,EAAiBD,GAAmB+J,EAASlzD,OAAQuhC,EAAc2xB,EAASjtB,cAAgB7yB,GAE9F8hD;AACJ,GAA+B,UAA3BhC,EAASjtB,cAA2B,CACtC,IAAMkvB,EAAatN,GAAqBqL,EAASlzD,OAAQuhC;AACzD,YAAI4zB,EACF;AAEFD,EAAmBC,CACrB,MACED,EADmC,iBAAnB9L,EACGA,EAEA;AAGrB,IAAIgM,EAAkBJ,EAAiBv0D,IAAIyyD,EAASlzD;AAC/Co1D,IACHA,EAAkB,CAChBx8C,GAAIgvC,GAAoBsL,EAASlzD,QACjCurD,WAAY,IAEdsJ,EAAmBz1D,KAAKg2D,GACxBJ,EAAiB1sD,IAAI4qD,EAASlzD,OAAQo1D,IAGxCA,EAAgB7J,WAAW2H,EAASjtB,eAAkBivB,CA3BtD,CA4BF,CAEA,OAAOL,CACT,CA3DA,CA1KItB,EAAkBvqD,iBACfkqD,GACC,MAAkB,eAAlBA,EAAS1iD,OAA0B2jD,EAAkBjB,EAASlzD,OAA9D,IAEJoT,EACA6/C,IAGGuB,EAAM72D,QAAW4tD,EAAW5tD,QAAWmyD,EAAQnyD,QAAWkyD,EAAKlyD,SAIpEs0D,EACE3E,GAAiD/E,GAA4B,CAAEsH,KAAIA,EAAEC,QAAOA,EAAE0E,MAAKA,EAAEjJ,WAAUA,IAEnH,CA9DA,CA7BMiH,EAAU3qD,OAAOuB,EAASisD,eAC1BpD,EACA7+C,EACA03C,EAEJ,IAEM1hD,EAAW,IAAIygB,EAAiB3rB,EAAQg0D,EAAcK;AAW5D,OATAnpD,EAASonB,QAAQxwB,EAAQ,CACvBs1D,qBACA/J,cACAgK,iBACAC,yBACAC,aACAC,aAGK,CACL5wD,KAAM,WACJsE,EAASunB,aACTuhC,EAAcptD,MAChB,EACA+7C,MAAO,WACLqR,EAAcrR,OAChB,EAEJ,CA0SA,SAASwS,GAAyBD,EAAmBuC,GAC/CvoC,GAAiBgmC,IACnBuC,EAAyBvC,EAAY/lC,YAEvCG,GAAkB4lC,YAActG,GAAc,OAAAuG,GAAyBvG,EAAW6I,EAApC,GAChD,CEnZA,IAAAC,GAAA,WAIE,SAAAA,EACUpV,EACRniD,EACAw3D,GAFQz3D,KAAAoiD,UAHFpiD,KAAA03D,kBAAoB;AAO1B,IAAMp9C,EAASra,EAAQsa,KAAKC;AAE5Bxa,KAAK23D,SAAWh2D,EACd,CACEoN,MAAO4pB,IACP3pB,SACA4oD,gBAAiBH,EACjBvO,cAAe,EACf2O,qBACAC,cAAeld,GAA6BtgC,GAC5CxY,OAAQ,WAEV7B,GvBtBA,SAAqBqa,GACzB0uC,GAAuB1uC,GAAQ2uC,gBAAkB,CACnD,CAFM,CuByBqB3uC,EACzB,CA0BF,OAxBEk9C,EAAAz1D,UAAAg2D,UAAA,SAAUtH,EAAuB/sD,GAAjC,IAAA8E,EAAAiC,EAAAzK;AACEA,KAAK23D,SAAS5oD,MAAQ/B,KAAKsqC,IAAIt3C,KAAK23D,SAAS5oD,MAAO0hD,EAAOthD,WAC3DnP,KAAK23D,SAAS3oD,IAAMhC,KAAKipC,IAAIj2C,KAAK23D,SAAS3oD,IAAKyhD,EAAOthD,WACvDnP,KAAK23D,SAASzO,eAAiB,GAC/BxjD,EAAA1F,KAAK23D,UAASE,oBAAiBnyD,EAAjBmyD,kBAAsBpH,EAAOr+C,OAAS63C;AAEpD,IAAM+N,EAASh4D,KAAKoiD,QAAQtpC,QAAU,eAAiB;AACvD9Y,KAAKoiD,QAAQrpC,MAAMi/C,EAAS9yD,KAAKC,UAAUsrD,aAAUz3C,GACnDvO,EAAKitD,mBAAqB1+C,EAC1BtV,EAAS+G,EAAKitD,kBAChB,GACF,EAEAF,EAAAz1D,UAAA0gD,MAAA,SAAM/+C,GAAN,IAAA+G,EAAAzK;AACE,GAAIA,KAAKoiD,QAAQtpC,QACf,MAAM,IAAI1H,MAAM;AAGlBpR,KAAKoiD,QAAQrpC,MAAM,KAAAtP,OAAKvE,KAAKC,UAAUnF,KAAK23D,UAAUj2D,MAAM,GAAE,OAC9D1B,KAAKoiD,QAAQnpC,iBAAQ8pC,GvBvCnB,IAAuBzoC,EAAgB29C;AAAhB39C,EuBwCE7P,EAAKktD,SAASp9C,KAAKC,GvBxCLy9C,EuBwCSlV,EAAc5pC,cvBvClE6vC,GAAuB1uC,GAAQ6uC,yBAA2B8O,EuBwCtDv0D,EAAS+G,EAAKktD,SAAU5U,EAC1B,GACF,EACFyU,CAAA,CAnDA;ACPM,SAAUU,KACd,MAIwB,mBAAfv3D,MAAMC,MACc,mBAApBqxD,iBACwB,mBAAxBxvC,IAAI01C,iBACX,YAAaC,SAASr2D,SAE1B,CCHM,SAAUs2D,GACdrjD,EACAsjD,EACAC,GAEA,IAEIC,EAFAr/C,EAAgB,EAChBs/C,EAA+B,GAG/BC,EAAoB,EAClBC,EAKD,GAESC,EAA0B7jD,GACtCC,EACAsjD,EACA,oBACC5yD,GAA6D,IAArDmzD,EAAcnzD,EAAAqF;AACrB,GAA4B,UAAxB8tD,EAAezmD,MAAqBymD,EAAeN,WAAwCA,EAA/F,CAIAp/C,GAAiB0/C,EAAeZ,qBAChCQ,EAAez3D,KAAK63D,EAAetnD,QACnCinD,EAAwBK,EAAeC;AAEvC,IAAMC,EAAoBJ,EAAoB1vD;AAC1C8vD,GAAqBA,EAAkBv+C,KAAOq+C,EAAer+C,GAC3Du+C,EAAkBC,cACpBD,EAAkBC,cAAcH,EAAetnD,OAAO0nD,YAC7CF,EAAkBG,gBAC3BH,EAAkBG,kBAGpBN,IACApkD,GAAkB,2CAfpB,CAiBF,IACD9N;AAED,SAASyyD,IACP,IAAMxgD,EACsB,IAA1B8/C,EAAel5D,OAAe,IAAIsnB,WAAW,GpJrC7C,SAAwBuyC,GAI5B,IAHA,IAAM75D,EAAS65D,EAAQC,iBAAQC,EAAOxlD,GAAW,OAAAwlD,EAAQxlD,EAAOvU,MAAf,GAAuB,GAClEgS,EAAS,IAAIsV,WAAWtnB,GAC1B+nB,EAAS,EACQjoB,EAAA,EAAAk6D,EAAAH,EAAA/5D,EAAAk6D,EAAAh6D,OAAAF,IAAS,CAAzB,IAAMyU,EAAMylD,EAAAl6D;AACfkS,EAAOrH,IAAI4J,EAAQwT,GACnBA,GAAUxT,EAAOvU,MACnB,CACA,OAAOgS,CACT,CATM,CoJqCgEknD,EAAehvD,OAAO+uD,IAClFjnD,EAAoC,CACxC4H,cAAaA,EACbR,OAAMA,EACNC,iBAAkBD,EAAOsgD,WACzBt1C,SAAU;AAIZ,OAFAxK,EAAgB,EAChBs/C,EAAiB,GACVlnD,CACT,CAEA,SAASioD,IACHd,EAAoB,IACtBJ,EAAOmB,YAAY,CACjBnkC,OAAQ,QACRijC,SAAQA,IAEVG,EAAoB,EAExB,CAEA,MAAO,CACL7/C,WAEIC,cACF,OAA6B,IAAtB4/C,CACT,EAEA3/C,MAAK,SAAChO,EAAMrH,GACV40D,EAAOmB,YAAY,CACjBnkC,OAAQ,QACR9a,GAAIk+C,EACJ3tD,KAAIA,EACJwtD,SAAQA,IAEVI,EAAoB33D,KAAK,CACvBwZ,GAAIk+C,EACJM,cAAet1D,EACfqH,KAAIA,IAEN2tD,GAAqB,CACvB,EAEAz/C,OAAM,SAACvV,GACL81D,IAEKb,EAAoBp5D,QAIvBo5D,EAAoBh6D,kBAAS+6D,UACpBA,EAAmBV,aAC5B,IAGAL,EAAoBA,EAAoBp5D,OAAS,GAAG25D,eAAiB,WAAM,OAAAx1D,EAASy1D,IAAT,GAR3Ez1D,EAASy1D,IAUb,EAEAjgD,WAAU,WACRsgD;AAEA,IAAMpgD,EAAcu/C,EACjBr3D,cAAKo4D,GAIJ,cAFOA,EAAmBV,qBACnBU,EAAmBR,eACnBQ,EAAmB3uD,IAC5B,IACChD,KAAK;AAER,OAAOpG,EAAOw3D,IAAiB,CAC7B//C,YAAWA,GAEf,EAEAC,0BAAyB,SAACtO,GAKxB,OAAOA,EAAKxL,OAAS,CACvB,EAEAmH,KAAI,WACFkyD,GACF,EAEJ,CC/FA,SAASe,GAAoB3kD,GAC3B,OAAO,IAAI4kD,OAAO5kD,EAAckV,WAAazH,IAAI01C,gBAAgB,IAAIj1D,KAAK,CAAC,4tyBAC7E,CAEA,IAAIy3B,GAA4B,CAAExnB,OAAM;AAElC,SAAU0mD,GACd7kD,EACAlT,EACAg4D,EACAC,GAOA,gBAPAA,MAAAJ,IAEgB,IAAZh/B,GAAMxnB,QAkCN,SACJ6B,EACAlT,EACAi4D,kBAAAJ;AAEA,IACE,IAAMrB,EAASyB,EAAwB/kD,GACzBglD,EAAwBjlD,GAAiBC,EAAesjD,EAAQ,kBAAUj6D,GACtF47D,GAAQjlD,EAAelT,EAAQzD,EACjC,IAAEqI,KACYwzD,EAA0BnlD,GACtCC,EACAsjD,EACA,oBACC5yD,GAA6C,IA6B7B4iB,EA7Bdvd,EAAIrF,EAAAqF;AACa,YAAdA,EAAKqH,KACP6nD,GAAQjlD,EAAelT,EAAQiJ,EAAK1M,MAAO0M,EAAKwtD,UACzB,gBAAdxtD,EAAKqH,OA0BDkW,EAzBCvd,EAAKud,QA0BX,IAAZqS,GAAMxnB,SACRwnB,GAAQ,CAAExnB,OAAM,EAAmCmlD,OAAQ39B,GAAM29B,OAAQ5xD,KAAMi0B,GAAMj0B,KAAM4hB,QAAOA,IAzBhG,IACD5hB;AACD4xD,EAAOmB,YAAY,CAAEnkC,OAAQ,SAC7B7xB,cAAiB,OAYrB,SAAmB3B,GACD,IAAZ64B,GAAMxnB,SACRrU,EAAQT,MAAM,GAAAoL,OAAG3H,EAAM,uEACvB64B,GAAMw/B,+BAA+Bx7D,kBAAS+E,GAAa,OAAAA,GAAA,IAC3Di3B,GAAQ,CAAExnB,OAAM,GAEpB,CANA,CAZ+BrR,EAAV,GA3GwB,KAiHzC64B,GAAQ,CAAExnB,OAAM,EAA+BmlD,OAAMA,EAAE5xD,KAL1C,WACXszD,IACAE,GACF,EAE6DC,+BAAgC,GAG/F,CAFE,MAAO97D,GACP47D,GAAQjlD,EAAelT,EAAQzD,EACjC,CACF,CAjCM,CAhCmB2W,EAAelT,EAAQi4D,GAGtCp/B,GAAMxnB,QACZ,OAEE,OADAwnB,GAAMw/B,+BAA+Bn5D,KAAK84D,GACnCn/B,GAAM29B;AACf,OACE,OAAO39B,GAAM29B,OAEnB,CASM,SAAU8B,KACd,OAAOz/B,GAAMxnB,MACf,CA4DA,SAAS8mD,GAAQjlD,EAAiClT,EAAgBzD,EAAgBk6D,GAChF,GAAgB,IAAZ59B,GAAMxnB,QAAsD,IAAZwnB,GAAMxnB,OAAoC,CAG1F,IAAIknD;AADN,GADAv7D,EAAQT,MAAM,GAAAoL,OAAG3H,EAAM,kEAAkEzD,GACrFA,aAAiBwL,OAAUxL,aAAiB+S,QA2BhD/Q,EAFyByQ,EAzBoDzS,EAAMyS,QA2BjE,4BAElBzQ,EAASyQ,EAAS,gCA1BdupD,EADErlD,EAAckV,UACF,mCAAAzgB,OAAmCuL,EAAckV,UAAS,gDAE1D,gDAEhBprB,EAAQT,MACN,GAAAoL,OAAG4wD,EAAW,0BAAA5wD,OAAyBzK,EAAW;KAGpDyV,GAAkBpW;AAEJ,IAAZs8B,GAAMxnB,QACRwnB,GAAMw/B,+BAA+Bx7D,kBAAS+E,GAAa,OAAAA,GAAA,IAE7Di3B,GAAQ,CAAExnB,OAAM,EAClB,MACEsB,GAAkBpW,EAAO,CACvBi8D,eAA4B,IAAZ3/B,GAAMxnB,QAA8CwnB,GAAMrS,QAC1EiyC,UAAWhC;AAKjB,IAA6BznD,CAF7B,CC1IA,IAAMopC,GC6BA,SACJsgB,EACAT,GAEA,GAAKn/C,OAAwBH,GAAc,aAAgCy9C,KACzE,MAAO,CACLnpD,MAAOlK,EACP6B,KAAM7B,EACNg2C,eAAgB,WAAM,EACtB4f,WAAY51D,EACZ61D,YAAa,WAAM,UACnBC,qBAAsB,WAAM;AAIhC,IAAIhgC,EAAuB,CACzBxnB,OAAM,GAGJynD,EAAiC,WACnCjgC,EAAQ,CAAExnB,OAAM,EAClB,EACI0nD,EAAe,WACjBlgC,EAAQ,CAAExnB,OAAM,EAClB,EACI2nD,EAA+Bj2D;AAEnC,MAAO,CACLkK,MAAO,SAAC7K,GAAoC,OAAA02D,EAAc12D,EAAd,EAC5CwC,KAAM,WAAM,OAAAm0D,GAAA,EACZF,qBAAsB,WAAM,OAAAG,GAAA,EAC5BL,WAAY,SACV5pC,EACA7b,EACA2Q,EACAiP,EACA0jC,GAyBA,IAAIyC;AAvBA/lD,EAAciV,sCAChB0Q,EAAQ,CAAExnB,OAAM,IAElB0d,EAAUtmB,UAAS,cACD,IAAZowB,EAAMxnB,QAAkD,IAAZwnB,EAAMxnB,SACpD0nD,IACAlgC,EAAQ,CAAExnB,OAAM,GAEpB,IAGA0d,EAAUtmB,UAAS,aAAkCw0C,GAC/CA,EAAczzB,SAAWN,GAAeE,WAC1C2vC,GAEJ,IAEAhqC,EAAUtmB,UAAS,eACD,IAAZowB,EAAMxnB,QACRynD,GAEJ,IAuBAA,EAAgB,SAAC12D,GACf,IAAM6Z,EAAU4H,EAAeG;AAC1B/H,IAAiC,IAArBA,EAAQ6Z,gBAA6C1zB,iBAAS82D,QAK/D,IAAZrgC,EAAMxnB,QAAkD,IAAZwnB,EAAMxnB,SAItDwnB,EAAQ,CAAExnB,OAAM,GAEhBwY,GAAgB3W,EAAe,0BAC7B,GAAgB,IAAZ2lB,EAAMxnB,OAAV,CAIA,IAAM8nD,GApCHF,IACEzC,IACHA,EAASuB,GACP7kD,EACA,qCAEE6lD,GACF,QDpGMK,ICwGN5C,IACFyC,EAAuB1C,GAAqBrjD,EAAesjD,EAAM,KAG9DyC;AAsBL,GAAKE,EAAL,CAOQ,IAAME,EChKlB,SACJtqC,EACA7b,EACA2Q,EACAiP,EACAwtB,EACAgZ,GAEA,IAWIrD,EAXEjnC,EAAkC,GAOlCuqC,EAEJtW,GAAkB/vC,EAAeA,EAAcwU,6BCblB,KDagD8xC,SAP1Dj9D,GACnBwyB,EAAU/lB,OAAM,GAAyC,CAAEzM,MAAKA,IAChEmW,GAAkB,6BAA8B,CAAE,gBAAiBnW,EAAMyS,SAC3E;AAQA,GAAK8J,KAYCm9C,EEvCF,SAA4BnjC,GAChC,IAAMja,EAASd;AAEf,MAAO,CACLk+C,UAAW,SAACtH,GAIV,IAAMl2C,EAAOqa,EAAa2B;AAC1B5b,EAAOP,KAAK,SAAUq2C,EAAQl2C,EAAKC,GACrC,EAEJ,CAZM,CFuCkCoa,GAAamjC;IAZzB,CACxB,IAAMwD,ECSJ,SACJ1qC,EACA7b,EACA2Q,EACAiP,EACAwmC,EACAhZ,GAEA,OA2BI,SACJvxB,EACA2qC,EACAJ,EACAhZ,GAEA,IAAIznB,EAAgC,CAClCxnB,OAAM,EACNsoD,0BAA2B,QAGRC,EAA2B7qC,EAAUtmB,UAAS,cACjEoxD,EAAa,cACf,IAAEhxD,YAEmBixD,EAA0B/qC,EAAUtmB,UAAS,aAE/Dw0C,GACC4c,EAAa5c,EAAczzB,OAC7B,IACD3gB;AAED,SAASgxD,EAAa3U,GACJ,IAAZrsB,EAAMxnB,SACRwnB,EAAMkhC,QAAQpZ,gBAAOkV,EAAU5U,GAC7B,IAAMhwC,EE5FR,SACJhI,EACA4sD,EACAmE,GAEA,IAAMC,EAAW,IAAIC;AAErBD,EAASzgC,OACP,UACA,IAAIp4B,KAAK,CAAC6H,GAAO,CACfqH,KAAM,6BAER,GAAA3I,OAAGkuD,EAAS55C,QAAQvD,GAAE,KAAA/Q,OAAIkuD,EAAS5oD;AAGrC,IAAMktD,EAAiEt6D,EACrE,CACEu6D,iBAAkBJ,EAClBK,wBAAyBpxD,EAAKkuD,YAEhCtB,GAEIyE,EAAoCl3D,KAAKC,UAAU82D;AAGzD,OAFAF,EAASzgC,OAAO,QAAS,IAAIp4B,KAAK,CAACk5D,GAAoC,CAAEhqD,KAAM,sBAExE,CAAErH,KAAMgxD,EAAU7Y,WAAYn4C,EAAKkuD,WAC5C,CA1BM,CF4FqClW,EAAcpqC,OAAQg/C,EAAU5U,EAAc5pC;AAE7EkS,GAAiB27B,GACnBoU,EAAYtY,WAAW/vC,GAEvBqoD,EAAYhhD,KAAKrH,EAErB,IACAnP,EAAa+2B,EAAM0hC,sBAInB1hC,EADkB,SAAhBqsB,EACM,CACN7zC,OAAM,EACNsoD,0BAA2BzU,GAGrB,CACN7zC,OAAM,EAGZ,CAEA,MAAO,CACL4kD,UAAW,SAACtH,GACV,GAAgB,IAAZ91B,EAAMxnB,OAAV,CAIA,GAAgB,IAAZwnB,EAAMxnB,OAA4D,CACpE,IAAMlT,EA6BR,SACJwnB,EACA9B,EACAiP,GAEA,IAAM7W,EAAU4H,EAAeG,qBACzBwQ,EAAc1B,EAAa2B;AACjC,GAAKxY,GAAYuY,EAGjB,MAAO,CACLc,YAAa,CACX5c,GAAIiN,GAEN1J,QAAS,CACPvD,GAAIuD,EAAQvD,IAEdD,KAAM,CACJC,GAAI8b,EAAY9b,IAGtB,CArBM,CA7G0BxF,EAAcyS,cAAe9B,EAAgBiP;AAiFrE,IAAK30B,EACH;AAGF06B,EAAQ,CACNxnB,OAAM,EACN0oD,QAAS,IAAIrE,GAAQpV,EAASniD,EAAS06B,EAAM8gC,2BAC7CY,oBAAqB54D,cACnBk4D,EAAa,yBACf,GApI4B,KAsIhC,CAEAhhC,EAAMkhC,QAAQ9D,UAAUtH,YAASiH,GAC3BA,EApIqB,KAqIvBiE,EAAa,sBAEjB,GArBA,CAsBF,EAEAj1D,KAAM,WACJi1D,EAAa,QACbD,IACAE,GACF,EAEJ,CAlFM,CA1BF/qC,EACA,EACAuqC,EACAhZ,EAEJ,CDvB8Bka,CACxBzrC,EACA7b,EACA2Q,EACAiP,EACAymC,EACAjZ;AAEF2V,EAAYwD,EAAkBxD,UAC9BjnC,EAAa9vB,KAAKu6D,EAAkB70D,KACtC,CAIQ,IAAMy0D,EITV,SAAiBj3D,GACb,IAAAq4D,EAAmCr4D,EAAOq4D,KAApCvnD,EAA6B9Q,EAAO8Q,cAArB6b,EAAc3sB,EAAO2sB;AAElD,IAAK0rC,EACH,MAAM,IAAInrD,MAAM;AAGlB,ICxCMorD,EDwCAC,EAAsB,SAAChM,GAC3B8L,EAAK9L,GACL39C,GAAgB,SAAU,CAAE29C,OAAMA,IjChCpCzH,GiCiCe9kD,EAAQ0wB,aAAa2B,WACP/b,IjClCE0uC,eAAiB,CiCmChD,EAEMiF,GC/CAqO,EAA2B,IAAI7zD,QAC9B,CACLuB,IAAG,SAAC22B,EAA6BgwB,IAC3BhwB,IAAYlkB,UAAaA,SAASg6B,mBAKtC6lB,EAAyBtyD,IACvB22B,IAAYlkB,SAAWA,SAASg6B,iBAAqB9V,EACrDgwB,EAEJ,EACAxuD,IAAG,SAACw+B,GACF,OAAO27B,EAAyBn6D,IAAIw+B,EACtC,EACA15B,IAAG,SAAC05B,GACF,OAAO27B,EAAyBr1D,IAAI05B,EACtC,ID+BI6rB,EElCiC,SACvC13C,EACAtR,EACAyqD,GAEA,IAAMuO,EAAyB,IAAI3/C,IAE7B2vC,EAA+C,CACnDC,cAAe,SAAC19B,GACd,IAAIytC,EAAuBv1D,IAAI8nB,GAA/B,CAGA,IAAM0tC,EAAkB/I,GAAclwD,EAAUsR,EAAe03C,EAAuBz9B,GAEhF2tC,EAAe7J,GAAW/9C,EAAetR,EAAUurB,GAEnD4tC,EAAgBlM,GAAY37C,EAAetR,EAAUyqD,EAAyBl/B;AACpFytC,EAAuBxyD,IAAI+kB,EAAY,CACrCwzB,MAAO,WAAM,OAAAka,EAAgBla,OAAhB,EACb/7C,KAAM,WACJi2D,EAAgBj2D,OAChBk2D,EAAal2D,OACbm2D,EAAcn2D,MAChB,GAZF,CAcF,EACAwuD,iBAAkB,SAACjmC,GACjB,IAAMtQ,EAAQ+9C,EAAuBr6D,IAAI4sB;AACpCtQ,IAILA,EAAMjY,OACNg2D,EAAuBv7B,OAAOlS,GAChC,EACAvoB,KAAM,WACJg2D,EAAuB/9D,kBAAS+G,GAAa,SAAPA,EAAAgB,OAAO,GAC/C,EACA+7C,MAAO,WACLia,EAAuB/9D,kBAAS+G,GAAc,SAAPA,EAAA+8C,QAAO,GAChD;AAEF,OAAOiK,CACT,CA3CyC,CFkCiB13C,EAAeynD,EAAqBtO,GAE9E2O,EG7CV,SACJ3O,EACAzB,EACA77B,EACA7b,EACA+nD,EACAC,GAEA,IAAMC,EAAmB,SACvB9tD,EACAs9C,YADAt9C,MAAYT,eACZ+9C,MAAA,CACEt5C,OAAM,EACNg7C,wBAAuBA,EACvBzB,sBAAqBA;AAGjB,IzBiCwBlY,EyBjCxB9uC,EAAoByvC,KAAlB5K,EAAK7kC,EAAA6kC,MACP2yB,EAA2B,CAC/B,CACEnyD,KAAM,CACJy/B,OAJe9kC,EAAA8kC,OAKf7oB,KAAMjf,OAAOoY,SAAS6G,KACtB4oB,MAAKA,GAEPn4B,KAAM63C,GACN96C,UAASA,GAEX,CACEpE,KAAM,CACJynD,UAAW71C,SAAS4rC,YAEtBn2C,KAAM63C,GACN96C,UAASA,GAEX,CACEpE,KAAM,CACJ2jB,KAAMkgC,GAAkBjyC,SAAU3H,EAAey3C,GACjD0Q,cAAe,CACbvyB,KAAMyJ,KACNtJ,IAAK6J,OAGTxiC,KAAM63C,GACN96C,UAASA;AAWb,OAPIzM,OAAO8xC,gBACT0oB,EAAQl8D,KAAK,CACX+J,MzBA0BypC,EyBAF9xC,OAAO8xC,ezBA6D,CAClGY,MAAOZ,EAAeY,MACtBV,WAAYF,EAAeE,WAC3BK,UAAWP,EAAeO,UAC1BN,SAAUD,EAAeC,SACzBK,QAASN,EAAeM,QACxBtK,OAAQgK,EAAehK,OACvBD,MAAOiK,EAAejK,QyBNhBn4B,KAAM63C,GACN96C,UAASA,IAGN+tD,CACT;AAeA,OAbAF,EAAqBC,KAad,CACLv2D,KAZsBmqB,EAAUtmB,UAAS,YAAmCgQ,GAC5EwiD,IACAC,EACEC,EAAiB1iD,EAAKzI,YAAYhE,UAAW,CAC3C4+C,sBAAqBA,EACrBv5C,OAAM,EACNg7C,wBAAuBA,IAG7B,IAAExjD,YAKJ,CAzEM,CH8CFwjD,EACAzB,EACA77B,EACA7b,EACA+nD,YACCG,GAAY,OAAAA,EAAQv+D,kBAAS8xD,GAAW,OAAAgM,EAAoBhM,EAApB,GAA5B,IACd/pD;AAED,SAASq2D,IACPrQ,EAAsBjK,QACtBka,EAAgBla,OAClB,CAEA,IAAM+N,EInEF,WACJ,IAAMA,EAAY,IAAI7nD,QAClBqtD,EAAS;AAEb,MAAO,CACLtF,cAAa,SAACn8C,GAIZ,OAHKi8C,EAAUrpD,IAAIoN,IACjBi8C,EAAUtmD,IAAIqK,EAAOyhD,KAEhBxF,EAAUnuD,IAAIkS,EACvB,EAEJ,CAZM,GJoEEooD,EAAkB/I,GAAc6I,EAAqBznD,EAAe03C,EAAuB/vC,UAC3FygD,EAAsB,CAC1BT,EACAvN,GAAUp6C,EAAeynD,GACzBnM,GAAsBt7C,EAAeynD,EAAqBjM,GAC1DG,GAAY37C,EAAeynD,EAAqBtO,EAAyBxxC,UACzEm0C,GAAoB97C,EAAeynD,GACnC1J,GAAW/9C,EAAeynD,GAC1BxL,GAAsBj8C,EAAeynD,GACrCtL,GAAgBsL,GAChBnK,GAAWt9C,EAAeynD,GAC1B3L,GAAoB97C,EAAeynD,GACnChK,GAAiB5hC,EAAW4rC,EAAqBjM,GACjDoC,GAAa/hC,YAAYwsC,GACvBN,IACAN,EAAoBY,EACtB;AAGF,MAAO,CACL32D,KAAM,WACJgmD,EAAsBhmD,OACtB02D,EAASz+D,kBAAS2+D,GAAY,OAAAA,EAAQ52D,MAAR,IAC9Bo2D,GACF,EACAC,eAAcA,EACdrQ,sBAAqBA,EAEzB,CJpDkC+D,CAAO,CACrC8L,KAAMxE,EACN/iD,cAAaA,EACb6b,UAASA,EACT+D,aAAYA,IACZluB;AAGF,OAFAoqB,EAAa9vB,KAAKm6D,GAEX,CACLz0D,KAAM,WACJoqB,EAAanyB,kBAAS20B,GAAS,OAAAA,GAAA,GACjC,EAEJ,CAjDM,CDiKMzC,EACA7b,EACA2Q,EACAiP,EACAqmC,GACDv0D;AACDi0B,EAAQ,CACNxnB,OAAM,EACNgoD,cAAaA,EAXf,MAJExgC,EAAQ,CACNxnB,OAAM,EALV,CAqBF,KAEIjP,iBAAS82D,QAA8B,IAArBj9C,EAAQ6Z,eAC5BjS,EAAe43C,mBArCf5iC,EAAQ,CAAExnB,OAAM,EAuCpB,EAEA0nD,EAAe,WACG,IAAZlgC,EAAMxnB,SAIM,IAAZwnB,EAAMxnB,QACRwnB,EAAMwgC,gBAGRxgC,EAAQ,CACNxnB,OAAM,GAEV,EAEA2nD,EAA+B,WAC7B,OUvMF,SACJ9lD,EACA2Q,EACAiP,EACA4oC,GAEA,IAAMz/C,EAAU4H,EAAeG,qBACzB23C,EAUR,SAAsB1/C,EAAiCy/C,GACrD,OAAKtF,KAGAn6C,EAMoB,IAArBA,EAAQ6Z,cAGH,yBAEJ4lC,SACI,qBARA,kBANA,uBAgBX,CAlBA,CAViCz/C,EAASy/C;AAGxC,OCTI,SACJxoD,EACAtP,GAQC,IAPCqY,EAAOrY,EAAAqY,QACPuY,EAAW5wB,EAAA4wB,YACXmnC,EAAS/3D,EAAA+3D,UAOLC,EAAY3/C,EAAUA,EAAQvD,GAAK,gBACnC7V,EAAuB;KAAA,IACzB84D,GACF94D,EAAW3D,KAAK,cAAAyI,OAAcg0D,IAE5BnnC,IACF3xB,EAAW3D,KAAK,QAAAyI,OAAQ6sB,EAAY9b,KACpC7V,EAAW3D,KAAK,QAAAyI,OAAQ6sB,EAAYxkB,YAAYhE;AAGlD,IAKgC6vD,EAC1Bz6C,EACAsH,EAPAoD,GAMA1K,GAD0By6C,EALC3oD,GAMHkO,KACxBsH,EAAYmzC,EAAiBnzC,WAIrC,SAAiCxV,GAC/B,OAAQA,EAAckO,MACpB,KAAKtQ,GACL,I/ItC2B,e+IuCzB,MAAO;AACT,KAAKD,GACH,MAAO;AACT,QACE,OAEN,CAVA,CAJ0EgrD,GACjE,WAAAl0D,OAAW+gB,EAAY,GAAA/gB,OAAG+gB,EAAS,KAAM,IAAE/gB,OAAGyZ,IAP/C9Z,EAAO,wBAAAK,OAAwBi0D;AACrC,MAAO,GAAAj0D,OAAGmkB,GAAMnkB,OAAGL,EAAI,KAAAK,OAAI9E,EAAWoD,KAAK,KAC7C,CAzBM,CDSuBiN,EAAe,CACxCshB,YAHkB1B,EAAa2B,WAI/BknC,UAASA,EACT1/C,QAAOA,GAEX,CVwLQ48C,CAAqB3lD,EAAe2Q,EAAgBiP,EAA0B,IAAZ+F,EAAMxnB,OAAxE,EAEc,IAAZwnB,EAAMxnB,QACRynD,GAEJ,EAEAF,YAAa,WAuBX,OAAwB,IAAxBN,MAA4E,IAAZz/B,EAAMxnB,MAAtE,EAEF0nC,eAAgB,SAACvgC,GACf,OAAwB,IAAxB8/C,K5BvNA,SAAyB9/C,GAC7B,OAAOuuC,mBAAcxmD,IAAIiY,EAC3B,CAFM,C4BuNkFA,SAAlF,EAEN,CAhLM,GD5BOsjD,GaoQP,SACJC,EACA3jB,EACAh2C,kBAAA;AAEA,IvJ5RyC45D,EACnCzyD,EuJ2RA0yD,E7J7QF,SACJC,kBAAA;AAEA,IAAMC,EAAuB,IAAIlhD,IAE7BmhD;AACJ,SAASh4D,EAAuBi4D,GAC9B,YAD8BA,MAAA,IAC1BD,GAAkC,IAAjBF,EAArB,CAIA,IAAMI,EACa,IAAjBJ,EA/BmC,KAMW,MA6B5C9a,EAAaib;AACjBF,EAAqBt/D,kBAAS2+D,GAC5Bpa,GAAcoa,EAAQ72D,eACxB,IAEIy8C,EAAakb,IA4ErB,SAAgDA,GAC9Ct/D,EAAQV,KACN,yCAAAqL,OACE20D,EAAkBz7D,EAAa,iCAAA8G,OACDzK,EAAW,0GAE/C,CANA,CA3E6Co/D,GACvCF,KAdF,CAgBF,CAEA,MAAO,CAQLG,sBAAuB,WACrB,IAAMf,EAAUr3D,cAAgC,OAAAC,EAAuBo3D,EAAQ72D,gBAA/B;AAChD,OAAO62D,CACT,EAKAgB,mBAAoB,SAAClsD,GAInB,OAHK6rD,EAAqB92D,IAAIiL,IAC5B6rD,EAAqB/zD,IAAIkI,EAAMnM,EAA0BC,IAEpD+3D,EAAqB57D,IAAI+P,EAClC,EAEAmsD,qBAAsB,SAACC,GACA,IAAjBR,IACFA,EAAoBQ,EACpBt4D,IAEJ,EAEAu4D,qBAAsB,WAAM,OAAAT,CAAA,EAE5Bt3D,KAAM,WACJu3D,EAAqBt/D,kBAAS2+D,GAAY,OAAAA,EAAQ52D,MAAR,IAC1Cu3D,EAAqBS,OACvB,EAEJ,CAhEM,C6J6Q+D,GAC7DC,EAAuBpzD,EAC3BwyD,EAA2BO,mBAAkB,IAEzCM,EAAqBrzD,EAAqBwyD,EAA2BO,mBAAkB,IACvF7e,EvJ9RC,CACLof,UAAS,SAACr2C,GACHs1C,IACHA,EAAiBt1C,EAErB,EACAuvB,OAAM,SAACvvB,GACLs1C,EAAiBt1C,EACjBnd,EAAWP,QACb,EACA82C,UAAS,WACP,OAAOkc,IAAmB3xD,EAAgBC,OAC5C,EACAf,WAfIA,EAAa,IAAIjB;AuJkSvB,SAAS6qB,IACP,OC1SE,SACJ0pC,EACAC,EACA1kB,GAEA,MAAO,CACLj6C,QAAS0+D,EAAqBhzD,aAC9B6N,KAAMolD,EAAmBjzD,aACzB+rB,YAAWwiB,EAAYwgB,sBAE3B,CAVM,CD0SwBiE,EAAsBC,EAAoB1kB,EACtE,CAEA,IEhSiD4kB,EAC3CC,EF+RFC,EGzRA,SACJt5D,EACAuvB,EACAwqB,EACAwf,GAImB,IAGfC,EAGAC,EAEAC,EACAC,EAhBFC,EAAmC55D,EAAA45D,oCAAEzF,EAAkBn0D,EAAAm0D,mBASnD0F,EAAiB,IAAI1rD,GASrB2rD,EAAmC/f,EAAqBp0C,WAAWd,UAAUk1D;AAEnF,SAASA,IACP,GAAKL,GAA4BC,GAAwB5f,EAAqBmC,YAA9E,CAMA,IAAIzH;AAEJ,GAJAqlB,EAAiC70D,cAI7B00D,EAAoBh1C,mBAAoB,CAC1C,IAAK60C,EACH;AAQFK,EAAexrD,OAAOmrD,EAAmBx7D,UACzCy2C,EAAqB+kB,EAAmBh7D,OAC1C,CAEA,IAAMw7D,EAAiBT,EAAWI,EAAqBF,EAAehlB;AAEtEolB,EAAevrD,MAAM0rD,EAtBrB,CAuBF,CAEA,SAASC,EAAOhmD,GACd,IAAMimD,EAAuBhlD;AAS7B,GARIglD,IACFjmD,EA0HN,SAA4CA,GAAuC,IAAAM,EAAAzR;AACjF,OAAO7G,EAAO,GAAIgY,EAAmB,CACnC8N,cAAe,uCACfhE,YAAa,QACbyE,kBAAmB,IACnBuC,oBAA0D,QAArC/kB,EAAAiU,EAAkB8Q,+BAAmB/kB,IAAoB,QAAhB4P,EAAAuE,gBAAgBvE,WAAE4E,mBAEpF,CAPA,CA1H6DP,IAIzDylD,EAA0BzlD,E5IsGxB,SAAoC3E,GACxCV,GAA6B,CAC3BlC,KAAM8B,GACNc,cAAaA,GAEjB,CALM,CoBgGA,SAAoCA,GAAmC,IAAAiF,EAkBtCN,EAjB/BkmD,EAkBC,CACL5oC,qBAFmCtd,EAjBsB3E,GAmBlBkT,kBACvC43C,sBAAuBnmD,EAAkBwO,oBACzC43C,oCAAqCpmD,EAAkByO,iCACvD43C,4BAA6BrmD,EAAkB0O,yBAC/C43C,kBAAmBtmD,EAAkB8O,WACrCy3C,8BAA+BvmD,EAAkBmH,0BACjDq/C,0CAA2CxmD,EAAkBkH,qCAC7Du/C,0BAA2BzmD,EAAkBiH,uBAC7Cy/C,YAAa1mD,EAAkBmJ,MAC/Bw9C,qBAAsB3mD,EAAkBC,mBACxC2mD,gCAAiC5mD,EAAkBoH,6BACnDy/C,kCAAmC7mD,EAAkB2H,4BACrDm/C,8BAA+B9mD,EAAkBkP,yBACjD63C,yBAA0B/mD,EAAkB/D,qBAC5C+qD,iBAAkBhnD,EAAkB6O;AA/BtC,OAAO7mB,EACL,CACEu1B,2BAA4BliB,EAAc0S,wBAC1C0zB,wCAAyCpmC,EAAciV,oCACvD22C,kBAAmB5rD,EAAcmR,gBACjC06C,wBAAyB7rD,EAAcoR,sBACvC06C,sBAAuB9rD,EAAcgV,oBACrC+2C,yBACEpgE,MAAMiG,QAAQoO,EAAckR,qBAAuBlR,EAAckR,mBAAmB3mB,OAAS,EAC/FyhE,6BAA8Bn2C,GAA8B7V,GAC5DisD,sBAAuBjsD,EAAcyV,oBACrCy2C,+BAAgClsD,EAAc0V,2BAC9Cy2C,2BACExgE,MAAMiG,QAAQoO,EAAc2S,uBAAyB3S,EAAc2S,qBAAqBpoB,OAAS,EACnG6hE,iBAAkBpsD,EAAckV,UAChCm3C,yBAA0BrsD,EAAcmV,uBACxCm3C,qBAAsBtsD,EAAcqV,mBACpCk3C,wBAAyBvsD,EAAcoV,sBACvCo3C,gBAAiBxsD,EAAcsV,eAC/Bm3C,gBAAiBzsD,EAAcuV,eAC/BK,QAA8B,QAArBllB,EAAAsP,EAAc4V,mBAAOllB,WAAEpE,cAAKogE,GAAM,IAAAh8D;AACzC,OAAA/D,EAAO,CAAE/C,KAAM8iE,EAAO9iE,MAAwC,QAAhC8G,EAAAg8D,EAAOC,qCAAyBj8D,WAAAzD,KAAAy/D,GAAK,KAGvE7B,EAEJ,CA7BM,CwHrMkDlmD,IAEhD0lD,EACF5lD,GAA+B,SAAUE;IAD3C,CAKA,IAAM3E,EAAgBwS,GAAiC7N;AAClD3E,IAIA4qD,GAAyB5qD,EAAc0L,yBAKxC1L,EAAcmV,yBAA2By1C,GAAwB/F,KACnEsF,EAAgBtF,EACd7kD,EACA,cAIAnQ,MAQJw6D,EAAsBrqD,EACtByqC,EAAqBof,UAAU7pD,EAAcwT,iBAC7Ci3C,KArBE3gE,EAAQV,KAAK,gEARf,CA8BF,CAEA,MAAO,CACLg9B,KAAI,SAACzhB,EAAmBolD,GzJnGtB,IAA2B6C;AyJoGtBjoD,GzJpGsBioD,EyJyGVjoD,EAAkBioD,2BzJxGnCjhE,MAAMiG,QAAQg7D,IAEdA,EAA2Bh3D,iBAAQi3D,GACjC,OAAA/7D,EAAeoG,EAAqB21D,EAApC,IAOUljE,kBAASkjE,GACvBl1D,GAA4BvF,IAAIy6D,EAClC,IyJ+FIzC,EAA0BzlD,EAMtB2lD,GAAuCpiD,OAIvCtQ,GAA6BV,EAAoBQ,UCnIrD,SACJke,EACAk3C,EACAC,GAEA,GAAKn3C,EAGL,IAAqB,IAAAvrB,EAAA,EAAA2iE,EAAAp3C,EAAAvrB,EAAA2iE,EAAAziE,OAAAF,IAAS,CAAzB,IACGs6B,EADSqoC,EAAA3iE,GACiB4iE;AAC5BtoC,GACFA,EAAOooC,EAEX,CACF,CAdM,CDoIoBpoD,EAAkBiR,QAAS,EAAU,CAAEjR,kBAAiBA,EAAEolD,UAASA,IAIrFplD,EAAkBuoD,uBAClBt1D,GAA6BV,EAAoBO,sBpHzInD,SACJkN,EACAjW,IAcI,SACJsR,EACAtR,GAEA,IAAMg3B,EAAM,IAAImB;AAEhB9mB,GAAiBC,EAAe0lB,EAAK,mBAChB,MAAfA,EAAIvnB,OACNzP,EAASwB,KAAKsT,MAAMkiB,EAAIynC,eAExBp3C,IAEJ,IAEAhW,GAAiBC,EAAe0lB,EAAK,oBACnC3P,IACF,IAEA2P,EAAImrB,KAAK,MAAO,GAAAp8C,OA1CsB,sDA0CK,KAAAA,OAAIuZ,mBAAmBhO,EAAcktD,uBAAuB,UACvGxnC,EAAItgB,MACN,CApBM,CAZqBT,YAAoByoD,GAC3C1+D,EAIE,SACJiW,EACAyoD,GAEA,OAAOzgE,EAAO,GAAIgY,EAAmByoD,EACvC,CALM,CAJgCzoD,EAAmByoD,GACvD,GACF,CAPM,CoH2ImCzoD,EAAmBgmD,GAEpDA,EAAOhmD,KA3BP7a,EAAQT,MAAM,wBA6BlB,EAEIsb,wBACF,OAAOylD,CACT,EAEAiD,mBAAoBx9D,EAEpBy9D,YAAaz9D,EAEbg6C,UAAS,SAACjgD,EAAMi1C,kBAAOnlC,MACrB6wD,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAe7gB,UAAUjgD,EAAMi1C,EAA/B,GACzC,EAEAwL,UAAS,SAACn7C,EAAS4N,kBAAclD;AAC/B,IAAMlL,EAAW,SAACg8D,GAChBA,EAAergB,UAAUn7C,EAAS4N,EACpC;AACAytD,EAAen4D,IAAI1D,GAEdw7D,IACHA,EAAqB,CAAEh7D,QAAOA,EAAER,SAAQA,GACxC+7D,IAEJ,EAEA8C,UAAS,SAACjtC,EAAQoB,kBAAgBzB,KAChCsqC,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAe6C,UAAUjtC,EAAQoB,EAAjC,GACzC,EAEAia,SAAQ,SAAC6xB,EAAe9rC,kBAAgBzB,KACtCsqC,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAe/uB,SAAS6xB,EAAe9rC,EAAvC,GACzC,EAEA+rC,yBAAwB,SAAClhE,EAAKwD,GAC5Bw6D,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAe+C,yBAAyBlhE,EAAKwD,EAA7C,GACzC,EAEA29D,mBAAkB,SAACC,GACjBpD,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAegD,mBAAmBC,EAAlC,GACzC,EAEAC,kBAAiB,SAACD,GAChBpD,EAAen4D,cAAKs4D,GAAmB,OAAAA,EAAekD,kBAAkBD,EAAjC,GACzC,EAEJ,CH6GiBE,CACb3+D,EACA+wB,EACAwqB,YAECzqC,EAAemqD,EAAehlB,GACzBvtC,GAA6BV,EAAoBK,iBASjDu2D,EAAqBJ,mBAAqB5iE,YACzClB,EAAcsF,GACb86D,EAAS0D,mBAAmB,CAC1B9jE,KAAM0J,EAAS1J,GACfkT,aAAa5N,iBAASooB,WAAYhe,GAAkBpK,EAAQooB,WAA0B1d,KACtF3O,QAASqI,EAASpE,iBAASjE,WAE7B2U,GAAkB,CAAEmuD,QAAS,wBAC/B,IAWAD,EAAqBF,kBAAoB9iE,YACxClB,EAAcsF,GACb86D,EAAS4D,kBAAkB,CACzBhkE,KAAM0J,EAAS1J,GACfokE,YAAY9+D,iBAAS++D,UAAW30D,GAAkBpK,EAAQ++D,UAAyBr0D,KACnF3O,QAASqI,EAASpE,iBAASjE,UAE/B,KAIA+U,EAAc6T,2BAChB7Q,GAAoBhD,EAAe2pD,EA9EnB,MA8EwD,GACxE3mD,GAAoBhD,EAAe4pD,EA/EnB,MA+EsD,IAGxEb,EAA2BQ,qBACzBY,EAAe,EAAwC;AAGzD,IAAMO,EKvTN,SACJ1qD,EACAklC,EACA6jB,EACA9oC,EACAklB,EACA+L,EAKAzG,GAEA,IAAM3uB,EAAkC,GAClCD,EAAY,IAAIyH;AAEtBzH,EAAUtmB,UAAS,aAA0CgK,GAAU,OAAAzB,GAAgB,MAAOyB,EAAvB;AAEvE,IAAM2uD,EAgIR,SAA2BluD,GACzB,IAAMkuD,E9I5IF,SAAyBC,EAAoCnuD,GAA4B,IAAAxM,EACzF46D,EACE/3D,EAAa,IAAIjB,EACjBi5D,EAAoB,IAAIviE,IAExBwiE,GACHjjE,EAAS+T,GAA0BY,EAAckO,OAASpW,GAAYkI,EAAcmT,qBAEjFo7C,IAAuB79D,EAAA,IAC1BwO,IAAoBovD,EACrB59D,EAACwO,IAA8BovD,GAAoBx2D,GAAYkI,EAAcoT,kCAC7E1iB,EAACwO,IAAsBovD,GAAoBx2D,GAAYkI,EAAcqT,0BAAyB7f,GAG1Fg7D,EAkDC,CACLC,cAA4C,UAA7B/gE,OAAOoY,SAAS4oD,SAC/BC,UAAW,sBAAuBlhE;AAXpC,OAxCA6R,GAA+B,SAACsvD,GAC9B,IAAMC,EAAmB/+D,EAAc8+D;AACvC,GACEL,EAAwBK,EAASxxD,OACjCixD,EAAkBlgE,KAAO6R,EAAcgU,4BACtCq6C,EAAkBl8D,IAAI08D,GACvB,CACA,IAAMC,EAQV,SACEX,EACA5uD,EACAivD,GAEA,OAAOr7D,EACL,CACEiK,KAAM,YACN8J,KAAMxN,KACNkZ,QAjB6Bu7C,kBAkB7B76C,QAAS,SACTxmB,OAAQ,UACRg1B,IAAK,CACHC,eAAgB,GAElBmsC,UAAW/6D,EAAQoM,EAAO,CACxBwvD,YAAaP,EACbhsC,aAAcvkB,OAEhB+wD,sBAAuBvjE,Eb3DtBkM,ca6DHy2D,EAAgCA,IAAoB,GAExD,CAvBA,C8I8GgC,E9ItHqBQ,EAAUJ;AAC3Dn4D,EAAWP,OAAOg5D,GAClBhxD,GAAgB,YAAagxD,GAC7BT,EAAkBj8D,IAAIy8D,EACxB,CACF,E7BjFAnkE,E6BkF4B+U,GA2BrB,CACLwvD,mBAAoB,SAACC,GACnBd,EAAkBc,CACpB,EACA74D,WAAUA,EACV84D,QAASb,EAEb,CA9DM,C8I4I4B,EAAuBtuD;AACvD,GAAI4F,KAAqB,CACvB,IAAMwpD,EAASvqD;AACfqpD,EAAU73D,WAAWd,oBAAWgK,GAAU,OAAA6vD,EAAOhqD,KAAK,qBAAsB7F,EAAlC,GAC5C,CACA,OAAO2uD,CACT,CAPA,CAhIsCluD;AACpCkuD,EAAUe,+BAAmB,IAAAhqD,EAAAzR;AAAM,MAAC,CAClC4uB,YAAa,CACX5c,GAAIxF,EAAcyS,eAEpB1J,QAAS,CACPvD,GAAgC,QAA5B9U,EAAAqY,EAAQ+H,gCAAoBpgB,WAAE8U,IAEpCD,KAAM,CACJC,GAA2B,QAAvBlF,EAAAsf,EAAa2B,sBAAUjhB,WAAEkF,IAE/B8a,OAAQ,CACN9a,GAAIsa,EAAe8B,gBAEtB;AAED,IAAM1B,EAAc,SAAC72B,GACnBwyB,EAAU/lB,OAAM,GAAyC,CAAEzM,MAAKA,IAChEmW,GAAkB,6BAA8B,CAAE,gBAAiBnW,EAAMyS,SAC3E,EACM29B,ECnEF,SACJ5d,EACArlB,GAEA,IAAMijC,EAAsB,IAAI7V,GAvBiBjb;AAkCjD,OATAkT,EAAUtmB,UAAS,YAA0C7E,GAAe,IAAboM,EAAWpM,EAAAoM;AACxE28B,EAAoBrnC,IAAI,GAAI0K,EAAYjE,UACxCrC,EAAoBhF,mBACtB,IAEAqqB,EAAUtmB,UAAS,YAAuC7E,GAAa,IAAX6lC,EAAS7lC,EAAA6lC;AACnEkD,EAAoBrV,YAAYmS,EAAU19B,SAC5C,IAEO,CACL4iC,2BAA4B,SAACnkB,GAA6B,OAAAmiB,EAAoBvtC,KAAKorB,EAAzB,EAC1Dm2C,yBAA0B,SAAClhE,EAAawD,GACtC,IAAMs/D,EAAiB51B,EAAoBvtC;AACvCmjE,IACFA,EAAe9iE,GAAOwD,EACtByG,EAAoBjF,mBAAmB89D,GAE3C,EACA39D,KAAM,WAAM,OAAA8E,EAAoB9E,MAApB,EAEhB,CA1BM,CDoEFmqB,EACAktC,EAA2BO,mBAAkB,IAGzCtY,ErH9EF,SAAmChxC,GACvC,OAAO,IAAI5K,YAA2BiB,GAC5B,IAAMqnC,EAAkBt9B,GAC9BJ,EACAtS,OACA,CAACkR,GAAU2C,kBAAmB3C,GAAU6C,kBACvClC,GACKA,EAAMnC,OAASwB,GAAU2C,mBAAkD,WAA7BoG,SAASg2B,gBAKzDtnC,EAAWP,OAAO,CAAEwgB,OAAQN,GAAeC,SAClC1W,EAAMnC,OAASwB,GAAU6C,QAKlCpL,EAAWP,OAAO,CAAEwgB,OAAQN,GAAeI,QAE/C,GACA,CAAE5V,aACH9O,KAEK49D,EAA2BvvD,GAAiBC,EAAetS,OAAQkR,GAAUiC,0BACjFxK,EAAWP,OAAO,CAAEwgB,OAAQN,GAAeE,WAC7C,IAAGxkB;AAEH,OAAO,WACLgsC,IACA4xB,GACF,CACF,GACF,CAjCM,CqH8EgDtvD,GAC9C4xC,EAAuBZ,EAAmBz7C,oBAAWgK,GACzDsc,EAAU/lB,OAAM,GAAiCyJ,EACnD;AACAuc,EAAa9vB,iBAAW,OAAA4lD,EAAqBj8C,aAArB;AAExB,IAAMoT,EAAWnD,KzDTb,WACJ,IAAMmD,EAAsB,CAC1BvD,GAAI,uCACJod,cAAend,GAAc,WAA4B,EAA6B;AAExF,MAAO,CACLqL,mBAAoB,WAAM,OAAA/H,CAAA,EAC1BO,OAAQzZ,EACR86C,iBAAkB,IAAIv1C,EACtBmzD,gBAAiB14D,EAErB,CAXM,GAtDA,SACJmQ,EACA6b,EACA4uB,GAEA,IAAM95B,EAAiB45B,GACrBvqC,EAhC2B,gBAkC1BuvD,GAAoB,OA2DzB,SAA6BvvD,EAAiCuvD,GAC5D,IAAI7jB;AAUJ,MAAO,CACLA,aAHAA,EAQJ,SAA4BA,GAC1B,MACc,MAAZA,GACY,MAAZA,GACY,MAAZA,CAEJ,CANA,CAfyB6jB,GACNA,EACLz3D,GAAYkI,EAAckT,mBAE1Bpb,GAAYkI,EAAc0S,yBAGxB,IAFA,IAFA,IAQZi5B,UAAWsB,GAAcvB,GAE7B,CAfA,CA3D6C1rC,EAAeuvD,EAAnC,GACrB9kB;AAoBF,OAjBA95B,EAAeg6B,iBAAiBp1C,sBAC9BsmB,EAAU/lB,OAAM,EAClB,IAEA6a,EAAe+5B,gBAAgBn1C,sBAC7BsmB,EAAU/lB,OAAM,GAClB,IAEA6a,EAAem6B,6BAA6Bv1C,oBAAW7E,GAA2B,IAAzBq7C,EAAar7C,EAAAq7C,cAAEC,EAAQt7C,EAAAs7C;AAC9E,IAAKD,EAAcY,cAAgBX,EAASW,aAAc,CACxD,IAAM6iB,EAAgB7+C,EAAeq8B;AACjCwiB,IACFA,EAAc9iB,kBAElB,CACF,IAEO,CACL57B,mBAAoB,SAACwG,GACnB,IAAMvO,EAAU4H,EAAeq8B,YAAY11B;AAC3C,GAAKvO,GAAYkkC,GAAclkC,EAAQ2iC,cAGvC,MAAO,CACLlmC,GAAIuD,EAAQvD,GACZod,cACsB,MAApB7Z,EAAQ2iC,aACL,EACC3iC,EAAQ2jC,eACP,EACA,EAEX,EACApjC,OAAQqH,EAAerH,OACvBqhC,iBAAkBh6B,EAAeg6B,iBACjC4d,gBAAiB,WAAM,OAAA53C,EAAe07B,mBAAmB,CAAEM,aAAc,KAAlD,EAE3B,CAjDM,CyDgEuB3sC,EAAe6b,EAAW4uB;AAErD,GAAK7kC,MEnGD,SAA8BiW,GAClC,IAAMlW,EAASd;AAEfgX,EAAUtmB,UAAS,aAA0CssB,GAC3Dlc,EAAOP,KAAK,MAAOyc,EACrB,GACF,CANM,CFgHkBhG;IAbI,CACxB,IAAM4zC,EAAQ3e,GACZ9wC,EACA6b,EACAqyC,EAAU73D,WACV6pB,EACA8wB,EACAjoC,EAAQ4hC,iBACRuG;AAEFp1B,EAAa9vB,iBAAW,OAAAyjE,EAAM/9D,MAAN,IjDzEtB,SACJsO,EACAkuD,EACAryC,EACAktC,EACA2G,GAEqCxB,EAAUiB,SAAWr3D,GAAYkI,EAAc2V,mCAKpFg9B,KACAU,KAIAx3B,EAAUtmB,UAAS,aAA0CgK,GAC3DizC,MACAI,GACEL,GAAqBW,mBACrB6V,EAA2BO,mBAAkB,GAAiC73D,iBAGhFmhD,GACEL,GAAqBY,iBACrB4V,EAA2BO,mBAAkB,GAAwB73D,iBAGvEmhD,GACEL,GAAqBa,iBACrB/nD,EAAS,iBAAyCkU,EAAMnC,MACpD2rD,EAA2BO,mBAAkB,GAA+B73D,gBAC5E,EAER,IAEAi+D,EAAqBn6D,oBAAW7E,GAA6B,IAA3Bw9C,EAAUx9C,EAAAw9C,WAAE+D,EAAavhD,EAAAuhD;AAGpDO,KAGLF,GAAsBI,YAAc,EACpCE,GAAcN,GAAsBU,gBAAiB9E,GACrD0E,GAAcN,GAAsBW,mBAAoBhB,GACxDc,GAAaT,GAAsBY,mBAAoBX,GAAqBW,oBAC5EH,GAAaT,GAAsBa,iBAAkBZ,GAAqBY,kBAC1EJ,GAAaT,GAAsBc,iBAAkBb,GAAqBa,kBAC1EC,KACF,IAEAvkD,EAAY2jD,GA/E0B,KAgFxC,CArDM,CiD0EyBzyC,EAAekuD,EAAWryC,EAAWktC,EAA4B0G,EAAMjiB,gBACpG,CAIA,IAAMvjB,EpHvHF,WACJ,IAAMxT,EAAmBF;AAEzB,OAAO,IAAInhB,YAAkBiB,GAC3B,GAAKogB,EAAL,CAGA,IAAMzgB,EAAW,IAAIygB,EAAiB3rB,cAAc,OAAAuL,EAAWP,QAAX;AAOpD,OANAE,EAASonB,QAAQzV,SAAU,CACzBwwC,cACAgK,iBACAE,aACAC,aAEK,WAAM,OAAAtsD,EAASunB,YAAT,CARb,CASF,GACF,CAhBM,GoHwHE0nB,EGlHF,SAAyCjlC,EAAiC8F,GAC9E,IAAIkkC,EAAkBn5C,EAAaiV;AAEnC,OAAO,IAAI1Q,YAA4BiB,GAC7B,IAAMs5D,EAsBlB,SAAsB3vD,EAAiC4vD,GAC7C,IAAMC,EAA+BprC,GAAiB+P,QAAS,sBAAc9jC,MAAYA,EAAAu0B,YACpF2qC,EACb,IAAEl+D,KACYo+D,EAAkCrrC,GAAiB+P,QAAS,yBAAiB9jC,MAAYA,EAAAu0B,YAC1F2qC,EACb,IAAEl+D,KACYkpD,EAAmB76C,GAAiBC,EAAetS,OAAQkR,GAAUsC,UAAW0uD,GAAgBl+D;AAE9G,MAAO,CACLA,KAAM,WACJm+D,IACAC,IACAlV,GACF,EAEJ,CAhBA,CAtBuD56C,EAAe+vD,GAAiBr+D,KACrEs+D,EAuClB,SAAmBhwD,EAAiCiwD,GAClD,OAAOlwD,GAAiBC,EAAetS,OAAQkR,GAAUmD,YAAakuD,EACxE,CAFA,CAvCiDjwD,EAAe+vD,GAAiBr+D;AAE7E,SAASq+D,IACP,GAAI/lB,EAAgBr9B,OAAS7G,EAAS6G,KAAtC,CAGA,IAAMy9B,EAAcv5C,EAAaiV;AACjCzP,EAAWP,OAAO,CAChBs0C,YAAWA,EACXD,YAAaH,IAEfA,EAAkBI,CANlB,CAOF,CAEA,OAAO,WACLulB,IACAK,GACF,CACF,GACF,CAxBM,CHkH4DhwD,EAAe8F,UAEzEpV,EAoFF,SACJmrB,EACA7b,EACA8F,EACA6K,EACAs0B,EACAhb,EACAhK,EACAC,GAEA,IAAMN,EIrMF,SAA4B/D,GAChC,IAAMq0C,EAAqB,IAAItsC,GAhBUjb;AAwCzC,OAtBAkT,EAAUtmB,UAAS,YAA0CgQ,GAC3D2qD,EAAmB99D,IAWrB,SAA0BmT,GACxB,MAAO,CACLqN,QAASrN,EAAKqN,QACdU,QAAS/N,EAAK+N,QACd9N,GAAID,EAAKC,GACT5b,KAAM2b,EAAK3b,KACXkT,YAAayI,EAAKzI,YAEtB,CARA,CAX0CyI,GAAOA,EAAKzI,YAAYjE,SAClE,IAEAgjB,EAAUtmB,UAAS,YAAuC7E,GAAa,IAAX6lC,EAAS7lC,EAAA6lC;AACnE25B,EAAmB9rC,YAAYmS,EAAU19B,SAC3C,IAEAgjB,EAAUtmB,UAAS,eACjB26D,EAAmB3rC,OACrB,IAYO,CACLhD,SAAU,SAACjK,GAAc,OAAA44C,EAAmBhkE,KAAKorB,EAAxB,EACzB5lB,KAAM,WACJw+D,EAAmBx+D,MACrB,EAEJ,CA/BM,CJqMmCmqB,GACjCgE,ElDnMF,SACJhE,EACAopB,EACAn/B,GAEA,IAEIqqD,EAFEC,EAAoB,IAAIxsC,GAjBUjb;AAqBxCkT,EAAUtmB,UAAS,YAA0C7E,GAAe,IAAboM,EAAWpM,EAAAoM,YAClEuzD,EAAUvqD,EAAS6G;AACzByjD,EAAkBh+D,IAChBk+D,EAAgB,CACd70D,IAAK40D,EACLhuC,SAAW8tC,GAAkBxoD,SAAS0a,WAExCvlB,EAAYjE,UAEds3D,EAAkBE,CACpB,IAEAx0C,EAAUtmB,UAAS,YAAuC7E,GAAa,IAAX6lC,EAAS7lC,EAAA6lC;AACnE65B,EAAkBhsC,YAAYmS,EAAU19B,SAC1C;AAEA,IAAMiwC,EAA6B7D,EAAyB1vC,oBAAW7E,GAAe,IAAb05C,EAAW15C,EAAA05C,YAC5ElrB,EAAUkxC,EAAkBlkE;AAClC,GAAIgzB,EAAS,CACX,IAAMqxC,EAAa52D;AACnBy2D,EAAkBhsC,YAAYmsC,GAC9BH,EAAkBh+D,IAChBk+D,EAAgB,CACd70D,IAAK2uC,EAAYz9B,KACjB0V,SAAUnD,EAAQmD,WAEpBkuC,EAEJ,CACF;AAEA,SAASD,EAAgB5/D,GACvB,MAAO,CACL+K,IAF0B/K,EAAA+K,IAG1B4mB,SAHoC3xB,EAAA2xB,SAKxC,CAEA,MAAO,CACLZ,QAAS,SAACnK,GAA6B,OAAA84C,EAAkBlkE,KAAKorB,EAAvB,EACvC5lB,KAAM,WACJo3C,EAA2BnzC,cAC3By6D,EAAkB1+D,MACpB,EAEJ,CAtDM,CkDmMiCmqB,EAAWopB,EAA0Bn/B,GAEpE4yB,EhDvLF,SACJ14B,EACAwwD,kBAxB+C;AA0B/C,IAKIC,EALEC,EAAwB,IAAI9sC,GAxBajb,MAJX;AAkCpCgoD,EAAard,KAAgB35C;AAErB,IAAMwkD,EAAuB/9C,GACnCJ,EACAtS,OACA,CACEkR,GAAU4C,UACV5C,GAAUwD,MACVxD,GAAUyD,KACVzD,GAAU2C,kBACV3C,GAAU8C,OACV9C,GAAU6C,OACV7C,GAAUoD,qBAEXzC,GACCoxD,EAsDN,SAA0BpxD,GACxB,OAAIA,EAAMnC,OAASwB,GAAU6C,OAC3B,SACSlC,EAAMnC,OAASwB,GAAUoD,UAC1BzC,EAA8BqxD,UAAW,SAAmB,aAE/Dtd,IACT,CAPA,CAtDoC/zC,GAAQA,EAAMzG,UAC9C,GACA,CAAE0H,aACH9O;AAED,SAASi/D,EAAaE,EAA0Bv5C,kBAAY3d,MACtDk3D,IAAkBJ,IAItBA,EAAmBI,EACnBH,EAAsBtsC,YAAY9M,GAClCo5C,EAAsBt+D,IAAI,CAAEuzB,MAAO8qC,EAAkBn5C,UAASA,GAAIA,GACpE,CAEA,IAAMohB,EAAmB,CACvBpU,QAAS,SAACwsC,EAA8Br3D,GACtC,IAAMs3D,EAAmBL,EAAsBpsC,QAAQwsC,EAAgBr3D;AAEvE,GAAgC,IAA5Bs3D,EAAiBxmE,OAArB,CASA,IALA,IAAMymE,EAAyB,GAEzBnyC,EAAQ7mB,KAAKipC,IAAI,EAAG8vB,EAAiBxmE,OAASimE,GAG3C9xD,EAAQqyD,EAAiBxmE,OAAS,EAAGmU,GAASmgB,EAAOngB,IAAS,CACrE,IAAMuyD,EAAYF,EAAiBryD,GAE7BwyD,EAAoBp3D,GAAQg3D,EAAgBG,EAAU35C;AAE5D05C,EAAuBhlE,KAAK,CAC1B25B,MAAOsrC,EAAUtrC,MACjB5rB,MAAOP,GAAiB03D,IAE5B,CAEA,OAAOF,CAlBP,CAmBF,EACAh4B,iBAAkB,SAACrT,EAAkBrO,GACnC,OAAAohB,EAAiBy4B,2BAA2BxrC,EAAOrO,EAAW,EAA9D,EACF65C,2BAA4B,SAACxrC,EAAkBrO,EAAyB7d,GACtE,OAAAi3D,EAAsBpsC,QAAQhN,EAAW7d,GAAU1I,eAAMkgE,GAAc,OAAAA,EAAUtrC,QAAUA,CAApB,GAAvE,EACFgrC,aAAYA,EACZj/D,KAAM,WACJysD,IACAuS,EAAsBh/D,MACxB;AAEF,OAAOgnC,CACT,CA7EM,CgDuL2C14B,GAEzCtP,ErFnMF,SACJmrB,EACAoO,EACAjqB,EACA04B,GAEA7c,EAAUtmB,UAAS,YAA4C+qB,GAC7D,OAAAzE,EAAU/lB,OAAM,GAA6C2iC,GAAcnY,EAAQoY,GAAnF;AAGF,IAAI5Y,EAAiC,CAAE8B,aAAc/xB;AAKrD,OAJImQ,EAAcoV,wBAChB0K,EAAiBwU,GAAkBzY,EAAWoO,EAAuBjqB,GAAe8f,gBAG/E,CACLytC,UAAW,SAACjtC,EAAsBc,GAChCvF,EAAU/lB,OAAM,GAEdnJ,EACE,CACEy0B,mBAAkBA,GAEpBqX,GAAcnY,EAAQoY,IAG5B,EACA5Y,eAAcA,EAElB,CA7BM,CqFoMFjE,EACAoO,EACAjqB,EACA04B,GAJM60B,EAAS78D,EAAA68D,UAAEztC,EAAcpvB,EAAAovB,eAO3BC,EKjOF,SAA8B/f,GAClC,IAAIoxD,EAAWjxB;AAKf,MAAO,CACL9yC,IAAK,WAAM,MAAC,CAAE+jE,SAAQA,EAAX,EACX1/D,KAN0BuuC,GAAuBjgC,GAAezK,oBAAW87D,GAC3ED,EAAWC,CACb,IAAG17D,YAML,CAVM,CLiOuCqK,GACrCggB,E9CzNF,SACJhgB,EACAsxD,GAA2F,IAAA99D;KAAA,IAA3F89D,MDEI,SAAiCtxD,EAA8ByzC,GACnE,IAAM8d,EAA8B7jE,OAA6Bm9C,YASnE,SAAmC7qC,GACjC,OAAO,SAACyzC,EAAoB/kD,GAgB1B,OAfiBqR,GACfC,EACCtS,OAA6Bm9C,YAC9BjsC,GAAU4D,iBACTjD,GAGC,IAAMiyD,EACJtlE,EAAKqT,EAAMkyD,kBAAUlyD,GAAU,OAAAA,EAAM3V,OAAS6pD,CAAf,KAC/BvnD,EAAKqT,EAAMmyD,kBAAUnyD,GAAU,OAAAA,EAAM3V,OAAS6pD,CAAf;AAC7B+d,GACF9iE,EAAS8iE,EAAYzhE,MAEzB,IAEc2B,IAClB,CACF,CAnBA,CARgCsO,GAC1BwzC;AAEJ,OAAO,IAAIp+C,YAAgCiB,GACzC,OAAAk7D,ECRuDzd,2CDQ5BL,SAAal0C,GAAU,OAAAlJ,EAAWP,OAAOyJ,EAAlB,GAAlD,GAEJ,CARM,CCFsCS;AAE1C,IAAI2xD,EACF7pD,GAAcgsC,MAAsE,QAAhCpjD,EAAChD,OAAwBkkE,mBAAOlhE,WAAE6iB,IAAI,YAEtFs+C,EAA+BP,EAAiB/7D,oBAAWxF,GAC/D4hE,EAAkB5hE,CACpB;AAEA,MAAO,CACL1C,IAAK,WACH,GAA+B,iBAApBskE,EACT,MAAO,CACLG,kBAAmBH,EAGzB,EACAjgE,KAAM,WAAM,OAAAmgE,EAA6Bl8D,aAA7B,EAEhB,CArBM,C8CyNiDqK;AAerD,OAbA2f,GACE3f,EACA6b,EACAlL,EACAiP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGK,CACLN,aAAYA,EACZ8Y,iBAAgBA,EAChB7Y,YAAWA,EACX0tC,UAASA,EACTztC,eAAcA,EACdpuB,KAAM,WACJsuB,EAAoBtuB,OACpBquB,EAAeruB,OACfgnC,EAAiBhnC,OACjBmuB,EAAYnuB,OACZkuB,EAAaluB,OACbgnC,EAAiBhnC,MACnB,EAEJ,CArDM,CA5EFmqB,EACA7b,EACA8F,SACAiD,EACAk8B,EACAhb,EACAhK,EACAC,GAdAN,EAAYlvB,EAAAkvB,aACZ8Y,EAAgBhoC,EAAAgoC,iBAChB7Y,EAAWnvB,EAAAmvB,YACXC,EAAcpvB,EAAAovB,eACdytC,EAAS78D,EAAA68D,UACHwE,EAAsBrhE,EAAAgB;AAW9BoqB,EAAa9vB,KAAK+lE,G9IClB1yD,GAAwBL,QoJtIpB,SAAkC6c,EAAsB7b,GAC5D6b,EAAUtmB,UAAS,YAAoDonB,GACrE,IAAoB,IAAAtyB,EAAA,EAAA4yC,EAAAtgB,EAAAtyB,EAAA4yC,EAAA1yC,OAAAF,IAAS,CAAxB,IAAMsf,EAAKszB,EAAA5yC;AACd,GAAIsf,EAAM8R,YAAcf,GAAwBmC,UAC9C;AAEF,IAAK7c,EAAcuV,eACjB;AAEF,IAAMzY,EAAclE,GAAiB+Q,EAAM2N,WACrC4J,EAAmC,CACvCha,KAAMpK,EAAYhE,UAClBynB,UAAW,CACT/a,GAAIS,KACJxM,SAAUD,GAAiBmQ,EAAMlQ,WAEnC2D,KAAI,YACJ0kB,IAAK,CACHiI;AAGJlO,EAAU/lB,OAAM,GAA6C,CAC3DorB,YAAWA,EACX5J,UAAWxa,EAAYjE,SACvBsoB,cAAe,CAAEub,iBAAkB/yB,IAEvC,CACF,GACF,CA5BM,CNyIoBkS,EAAW7b,G7EhH/B,SACJ6b,EACA7b,EACA04B,GAEA7c,EAAUtmB,UAAS,YAAwCm1B,GACzD,IAAMkkC,EAkBV,SACElkC,EACA1qB,EACA04B,GAEA,IAAMs5B,EDnCF,SAA6BtnC,GACjC,GAAKxxB,aAAiB,qBAAsBA,YAA5C,CAGA,IAAM+4D,EAAkB/4D,YAAYg5D,iBAAiBxnC,EAAQjvB,IAAK;AAElE,GAAKw2D,EAAgB1nE,QAAY,WAAY0nE,EAAgB,GAA7D,CAIA,IAAME,EAAaF,EAChBr8D,iBAAQ+T,GAAU,OAACiyB,GAAsBzpC,IAAIwX,EAA3B,IAClB/T,iBAAQ+T,GAAU,OAAA0N,GAAa1N,EAAb,IAClB/T,iBAAQ+T,GACP,OAoBavP,EAnBXuP,EAmB2B5P,EAlB3B2wB,EAAQ5tB,YAAYjE,SAkB4BmB,EAjBhDgqB,GAAQ,CAAE1M,UAAWoT,EAAQ5tB,YAAYjE,SAAUY,SAAUixB,EAAQjxB,WAmBpEW,EAAOkd,WAAavd,EADP,GAC8BiqB,GAAQ5pB,IAAWf,GAAYW,EAD7D;AADtB,IAAmBI,EAAgBL,EAAqBC,CApBlD;AAOJ,OAA0B,IAAtBm4D,EAAW5nE,QACbqxC,GAAsBxpC,IAAI+/D,EAAW,IAE9BA,EAAW,GAAGvhE,gBAhBvB,CALA,CAyBF,CA5BM,CCmCsC85B,GACpC5tB,EAAck1D,EAAiBp5D,GAAiBo5D,EAAe16C,WAAaoT,EAAQ5tB,YACpFg/B,EAoGR,SAAmCpR,EAA+B1qB,GAEhE,GADsB0qB,EAAQja,cAAgBia,EAAQna,SAAWma,EAAQla,OAIzE,MAAO,CACLsR,IAAK,CACHswC,QAAS1nC,EAAQla,OAAQe,kBACzBwqB,SAAUrR,EAAQna,QAASgB,kBAC3ByqB,SAAUC,GAAWj8B,IAG3B,CAZA,CApGgD0qB,EAAS1qB;AACvD,GAAKA,EAAcsV,gBAAmBwmB,EAAtC,CAIA,IAAM1+B,EAAmB,QAAZstB,EAAQttB,KAA0B,MAAmB,QAE5Di1D,EAA+BL,EAAiB11B,GAA+B01B,UAE/Ev4D,EA6HR,SAAgCi/B,EAAoC57B,EAA0BrD,GAC5F,OAAQi/B,EAAiBy4B,2BAA0B,SAAmBr0D,EAAYjE,SAAUY,UACxFD,GAAiBC,EAEvB,CAJA,CA7H0Ci/B,EAAkB57B,EAAa4tB,EAAQjxB,UAEzE8iC,EAAgBppC,EACpB,CACE+T,KAAMpK,EAAYhE,UAClBunB,SAAU,CACR7a,GAAIS,KACJ7I,KAAIA,EACJ3D,SAAQA,EACRkrB,OAAQ+F,EAAQ/F,OAChB6X,YAAa9R,EAAQvsB,OACrB1C,IAAK6d,GAAcoR,EAAQjvB,KAAO+d,GAAgBkR,EAAQjvB,KAAOivB,EAAQjvB,KAE3E2B,KAAM,WACN0kB,IAAK,CACHiI,WAAY/pB,EAAcsV,iBAG9BwmB,EACAu2B;AAGF,MAAO,CACL/6C,UAAWxa,EAAYjE,SACvBqoB,YAAaqb,EACbpb,cAAe,CACbub,iBAAkBs1B,EAClBtsC,IAAKgF,EAAQhF,IACbmC,SAAU6C,EAAQ7C,SAClByqC,aAAc5nC,EAAQxE,MACtBqsC,YAAa7nC,EAAQtE,KACrB/8B,MAAOqhC,EAAQrhC,MACfinB,UAAWoa,EAAQpa,UACnBzT,cAAe6tB,EAAQ7tB,eAvC3B,CA0CF,CApDA,CAlBoC6tB,EAAS1qB,EAAe04B;AACpDk2B,GACF/yC,EAAU/lB,OAAM,GAA6C84D,EAEjE,IAEA/yC,EAAUtmB,UAAS,YAAoDonB,GACrE,IAAoB,IAAAtyB,EAAA,EAAA4yC,EAAAtgB,EAAAtyB,EAAA4yC,EAAA1yC,OAAAF,IAAS,CAAxB,IAAMsf,EAAKszB,EAAA5yC;AACd,GAAIsf,EAAM8R,YAAcf,GAAwBsB,UrC2BpB,oBADJ5hB,EqC1BmDuP,GrC2BjEqN,eAA+D,UAAzB5c,EAAO4c,cqC3B4B,CACjF,IAAM43C,EAAW/yB,GAAqBlyB,EAAO3J;AACzC4uD,GACF/yC,EAAU/lB,OAAM,GAA6C84D,EAEjE,CACF,CrCoBE,IAAwBx0D,CqCnB5B,GACF,C6E2FEo4D,CAAwB32C,EAAW7b,EAAe04B;AAE5C,IAAAp4B,EAIF0kC,GACFnpB,EACA7b,EACA8F,SACAmkB,EACAgb,EACAxL,EACAf,EACAwM,EACAC,GAZA0E,EAASvpC,EAAAupC,UACTQ,EAAS/pC,EAAA+pC,UACHooB,EAAkBnyD,EAAA5O;AAY1BoqB,EAAa9vB,KAAKymE;AAEV,IAAA92B,EAAanC,GAAqB3d,EAAW7b,EAAe04B,EAAkBe,GAAoBkC;AAE1G5V,GAAuBlK,EAAW7b,EAAe+I;AACzC,IAAM2pD,EAA8B92C,GAA2BC,EAAW7b,GAActO;AAChGoqB,EAAa9vB,KAAK0mE;AAElB,IAAMC,EO9IF,SAA+B92C,EAAsB6c,GACzD,IAAMk6B,EAAoB,IAAI7qD;AAW9B,OATA8T,EAAUtmB,UAAS,eAEjBq9D,EAAkBlJ,OACpB,IAMO,CACLgE,mBAAoB,SAACC,GACnBiF,EAAkB19D,IAAIy4D,EAAW/jE,KAAM+jE,EACzC,EACAC,kBAAmB,SAACiF,GAClB,IAAMlF,EAAaiF,EAAkBvlE,IAAIwlE,EAAUjpE;AACnD,GAAK+jE,EAAL,CAGA,IAAMntC,EASZ,SAA4BmtC,EAAgCkF,GAC1D,MAAO,CACLjpE,KAAM+jE,EAAW/jE,KACjBwT,KAAI,WACJN,YAAa6wD,EAAW7wD,YACxB/M,MAAO+J,GAAQ6zD,EAAW7wD,YAAYhE,UAAW+5D,EAAU7E,WAAWl1D,WACtE7N,QAASkI,EAAQw6D,EAAW1iE,QAAS4nE,EAAU5nE,SAEnD,CARA,CATuC0iE,EAAYkF;AAC7CD,EAAkBzmC,OAAO3L,EAAM52B,MAdnC,SAAiB42B,GACf,OAAQkY,EAAiBy4B,2BAA0B,SAAmB3wC,EAAM1jB,YAAYjE,SAAU2nB,EAAMzwB,MAC1G,CAFA,CAegBywB,IACV3E,EAAU/lB,OAAM,GAgBxB,SAAsB0qB,EAAsBsyC,GAA2B,IAAAt/D;AAsBrE,MAAO,CACL0tB,YAtBoC,CACpCha,KAAMsZ,EAAM1jB,YAAYhE,UACxB0nB,MAAO,CACLhb,GAAIS,KACJ7I,KAAMojB,EAAMpjB,KACZxT,KAAM42B,EAAM52B,KACZmpE,QAAMriE,EAAA,GACJA,EAAC8vB,EAAM52B,MAAO42B,EAAMzwB,MAAKyD,IAG7B4J,KAAI,QAIJ8jB,IAAkB,CAChBV,MAAO,CACLwyC,qBAOJ17C,UAAWkJ,EAAM1jB,YAAYjE,SAC7BwoB,gBAAiBb,EAAMv1B,QACvBk2B,cAAe,GAEnB,CA5BA,CAhBkFX,GAJ5E,CAMF,EAEJ,CA5BM,CP8IyC3E,EAAW6c,GAClDu6B,EQpJF,SACJxgD,EACA9B,EACAiP,EACAE,EACAD,GAEA,MAAO,CACLxyB,IAAK,SAACiqB,GACJ,IAAMgK,EAAc1B,EAAa2B,SAASjK,GACpCkK,EAAa3B,EAAY4B,QAAQnK,GACjCvO,EAAU4H,EAAeG,mBAAmBwG;AAClD,GAAIvO,GAAWuY,GAAeE,EAAY,CACxC,IAAMG,EAAW7B,EAAe8B,aAAatK;AAC7C,MAAO,CACL47C,eAAgBzgD,EAChB0gD,WAAYpqD,EAAQvD,GACpB4tD,YAAazxC,EAAW,CAAEnc,GAAImc,UAC9Bpc,KAAM,CAAEC,GAAI8b,EAAY9b,GAAI5b,KAAM03B,EAAY13B,KAAMy4B,SAAUb,EAAWa,SAAU5mB,IAAK+lB,EAAW/lB,KAEvG,CACF,EAEJ,CAvBM,CRqJFuE,EAAcyS,cACd1J,EACA6W,EACAE,EACAD;AAGF,MAAO,CACL0tC,UAASA,EACT5xB,SAAQA,EACRkO,UAASA,EACT4jB,yBAA0Bh0B,EAAoBg0B,yBAC9CpjB,UAASA,EACTxuB,UAASA,EACT+D,aAAYA,EACZ7W,QAAOA,EACPukD,YAAa,WAAM,OAAAvkD,EAAQO,QAAR,EACnB+jD,mBAAoB4F,EAAgB5lE,IACpCqgE,mBAAoBiF,EAAgBjF,mBACpCE,kBAAmB+E,EAAgB/E,kBACnCl8D,KAAM,WACJoqB,EAAanyB,kBAAS20B,GAAS,OAAAA,GAAA,GACjC,EAEJ,CAhJM,CLwTEte,EACAklC,EACA6jB,EACA9oC,EACAklB,EACAglB,GAAiBj7D,EAAQm0D,qBACrB,SAACE,GAAa,OAAAr0D,EAAQm0D,qBAAsBrjD,EAAemqD,EAAe5G,EAA5D,EACd7/C,GACJ+mC;AAaF,OAVAvF,EAAYugB,WACViF,EAAe7uC,UACf7b,EACA0qD,EAAe3hD,QACf2hD,EAAe9qC,aACfuqC,GAGFH,EAsHN,SAAiCqJ,EAA4B3I,GAC3D,OAAO/9D,EACL,CACEy5B,KAAM,SAACzhB,GACLF,GAA+B,SAAUE,EAC3C,EACAA,kBAAmB0uD,EAAiB1uD,mBAEtC+lD,EAEJ,CAVA,CAtHyCV,EAAUU,GAEtCA,CACT,IAGIrgB,EAGFv/C,YAASoE,GACX,IAAMokE,EAAsC,iBAAZpkE,EAAuBA,EAAU,CAAEtF,KAAMsF;AACzE86D,EAAS3f,UAAUipB,GACnB1zD,GAAkB,CAAEmuD,QAAS,cAC/B,IACMD,GExX2ChE,EFwXc,CAC7D1jC,KAAMt7B,YAAS6Z,GAAsB,OAAAqlD,EAAS5jC,KAAKzhB,EAAmBmpD,EAAjC,IAErCyF,mBAAoBzoE,YAAS0oB,GAC3Bi3B,EAAqB1H,OAAOvvB,GAC5B5T,GAAkB,CAAEmuD,QAAS,uBAAwBpC,iBAAkBn4C,GACzE,IAEAggD,iBAAkB1oE,YAASG,GACzB0+D,EAAqB/yD,WAAW3L,GAChC2U,GAAkB,CAAEmuD,QAAS,sBAC/B,IAEA0F,iBAAkB3oE,cAAc,OAAA6+D,EAAqBhzD,YAArB,IAEhC+8D,yBAA0B5oE,YAASyB,EAAKwD,GACtC45D,EAAqB5yD,mBAAmBxK,EAAKwD,GAC7C6P,GAAkB,CAAEmuD,QAAS,sBAC/B,IAEA4F,4BAA6B7oE,YAASyB,GAAQ,OAAAo9D,EAAqB1yD,sBAAsB1K,EAA3C,IAE9CqnE,mBAAoB9oE,cAAc,OAAA6+D,EAAqB7yD,cAArB,IAElCu2D,mBAAoBviE,YAASwsB,GAAc,OAAA0yC,EAASqD,mBAAmB/1C,EAA5B,IAE3Cu8C,qBAAsB/oE,cAAc,OAAAoI,EAAU82D,EAASrlD,kBAAnB,IAEpC4oD,UAAW,SAAC3jE,EAAMqB,GAChB,IAAM4R,EAAgBX;AAEtBnR,cACEi/D,EAASuD,UAAU,CACjB3jE,KAAM0J,EAAS1J,GACfqB,QAASqI,EAASrI,GAClB6R,YAAalD,KACbwD,KAAI,SACJP,cAAaA,IAEf+C,GAAkB,CAAEmuD,QAAS,cAC/B,GACF,EAEApyB,SAAU,SAACtyC,EAAO4B,GAChB,IAAM4R,EAAgBX;AACtBnR,cACEi/D,EAASruB,SAAS,CAChBtyC,MAAKA,EACLwT,cAAaA,EACb5R,QAASqI,EAASrI,GAClB6R,YAAalD,OAEfgG,GAAkB,CAAEmuD,QAAS,aAC/B,GACF,EAEAlkB,UAAW/+C,YAASlB,EAAMi1C,GAExBmrB,EAASngB,UAAUv2C,EAAS1J,GAAQi1C,EACtC,IAEAi1B,QAAShpE,YAASyZ,atIjbIA,GACxB,IAAMwvD,EAA+B,WAArBpiE,EAAQ4S;AAIxB,OAHKwvD,GACHjqE,EAAQT,MAAM,oBAAqBkb,GAE9BwvD,CACT,EsI2asBxvD,CACFA,IACZqlD,EAAmBhzD,WAAW0N,GAAaC,IAE7C3E,GAAkB,CAAEmuD,QAAS,YAC/B,IAEAiG,QAASlpE,cAAc,OAAA8+D,EAAmBjzD,YAAnB,IAEvBs9D,gBAAiBnpE,YAASyB,EAAKyK,GAAQ,IAAAxD,EAC/B0gE,EAAoB5vD,IAAY5T,EAAA,GAAGA,EAACnE,GAAMyK,EAAQtG,IAAInE;AAC5Dq9D,EAAmB7yD,mBAAmBxK,EAAK2nE,GAC3Ct0D,GAAkB,CAAEmuD,QAAS,YAC/B,IAEAoG,mBAAoBrpE,YAASyB,GAAQ,OAAAq9D,EAAmB3yD,sBAAsB1K,EAAzC,IAErC6nE,UAAWtpE,cAAc,OAAA8+D,EAAmB9yD,cAAnB,IAEzBuzC,UAASA,EAETijB,YAAaxiE,cACXk/D,EAASsD,cACT1tD,GAAkB,CAAEmuD,QAAS,gBAC/B,IAEAN,yBAA0B3iE,YAASyB,EAAKwD,GACtCi6D,EAASyD,yBAAyBn6D,EAAS/G,GAAO+G,EAASvD,IAC3D6P,GAAkB,CAAEmuD,QAAS,+BAC/B,IAEApI,qBAAsB76D,cAAc,OAAAo6C,EAAYygB,sBAAZ,IACpC0O,4BAA6BvpE,YAASoE,GACpCg2C,EAAYnrC,MAAM7K,GAClB0Q,GAAkB,CAAEmuD,QAAS,iCAAkC/H,MAAO92D,iBAAS82D,OACjF,IAEAsO,2BAA4BxpE,cAAc,OAAAo6C,EAAYxzC,MAAZ,KEzdtCq4D,EAAYp9D,EAChB,CACE2mB,QAAS,SAKTihD,QAAO,SAAC7lE,GACNA,GACF,GAEFo7D,GAKFrgE,OAAO2D,eAAe28D,EAAW,YAAa,CAC5C18D,IAAG,WACD,OAAOzC,CACT,EACA4pE,gBAGKzK;AFqcP,OAAO+D,CACT,CA9MM,CKjPA,ElBnB+C5oB,GAAa,CAAE2f,mBAAkBA,GAAExB,qBAAoBA;CeetG,SAA0D3wD,EAAgB9I,EAAY4kB,GAC1F,IAAMimD,EAAyB/hE,EAAO9I;AAClC6qE,IAA2BA,EAAuBC,GAAKD,EAAuBnhD,SAChFxpB,EAAQV,KAAK,yFAEfsJ,EAAO9I,GAAQ4kB,EACXimD,GAA0BA,EAAuBC,GACnDD,EAAuBC,EAAE/qE,kBAASO,GAAO,OAAAD,EAAgBC,EAAI,mCAApBD,EAAA,GAE7C,CATM,CfVOiD,IAAkC,SAAU07D;A2BrCzD,IAAI+L,EAAuC,oBAAfxnE,WAA6BA,WAA+B,oBAAXO,OAAyBA,OAA2B,oBAAXgF,OAAyBA,OAAyB,oBAATjF,KAAuBA,KAAO,CAAC;AAM9LmnE,EAAQD,eAAiBA,EACzBC,EAAQC,wBALR,SAAkCn/B,GACjC,OAAOA,GAAKA,EAAEo/B,YAAcrrE,OAAOsD,UAAUC,eAAeC,KAAKyoC,EAAG,WAAaA,EAAWq/B,QAAIr/B,CACjG,SAAAxqC,EAAA+Z,KAAA;ACJA,IAEI+vD,EAFAC,EAAgB,CAAC;AA4BrBL,EAAQM,qBAxBR,WACC,GAAIF,EAA0B,OAAOC;AAErC,IAAIE;AACJ,SAASC,EAAoBrlD,GAC3B,OAAO,IAAIslD,OAAOvlD,GAAQA,GAAK,CAC7BtlB,MAAKA,CAACoC,EAAQ0oE,EAASlrE,IACdmrE,QAAQ/qE,MAAM2qE,QAAqEA,EAAwBvoE,EAAQ0oE,EAASlrE,IAFhI,CAIJ2lB,EACL,CAWA,OAnBAilD,EAA2B,EAgB3BC,EAAcG,oBAAsBA,EACpCH,EAAcO,qBALd,SAA8Bxd,EAAIjoC,GAChC,IAAIrf,EAAI4P;AACR,OAAiI,QAAxHA,EAAmE,QAA7D5P,EAAKsnD,eAAwCA,EAAGjoC,mBAAqBrf,SAAyBA,EAAGu9B,uBAAyB3tB,SAAyBA,EAAGrT,KAAKyD,MAAS0kE,EAAoBrlD,EACzM,EAGAklD,EAAcQ,oBATeC,IAC3BP,EAAwBO,GASnBT,CACR,SAAA/pE,EAAA+Z,EAAAzR,KAAA;AC1BA,IAWImiE,EA4BAC,EA8FAC,EArIAC,EAAmBC,EAAQ,MAC3Bd,EAAgBc,EAAQ,MAExBC,EAAc,CAACpB,QAAS,CAAC,GAEzBqB,EAAa,CAAC,EAEdC,EAAgB,CAAC,EAEjBC,EAA4B,CAAC,EA0B7BC,EAAgC,CAAC,EAEjCC,EAAgB,CAAC;AAIrB,SAASC,IACR,OAAIV,IACJA,EAA2B,EA4C3BS,EAAcE,uDA3CiD,eA4C/DF,EAAcG,uDA3CiD,eA4C/DH,EAAcI,uDA3CiD,eA4C/DJ,EAAcK,wCA3CkC,sBA4ChDL,EAAcM,qBA3Ce,GA4C7BN,EAAcO,wDA3CkD,IA4ChEP,EAAcQ,mDA3C6C,IA4C3DR,EAAcS,uDA3CiD,IA4C/DT,EAAcU,qBA3Ce,mBA4C7BV,EAAcW,iCA3C2B,IA4CzCX,EAAcY,sBA3CgB,mBA4C9BZ,EAAca,yBA3CmB,kBA4CjCb,EAAcc,uBA3CiB,mBA4C/Bd,EAAce,qBA3Ce,oBA4C7Bf,EAAcgB,sBA3CgB,kBA4C9BhB,EAAciB,uBA3CiB,mBA4C/BjB,EAAckB,qBA3Ce,oBA4C7BlB,EAAcmB,uBA3CiB,oBA4C/BnB,EAAcoB,oBA3Cc,kBA4C5BpB,EAAcqB,oBA3Cc,oBA4C5BrB,EAAcsB,sBA3CgB,oBA4C9BtB,EAAcuB,qBA3Ce,oBA4C7BvB,EAAcwB,mCA3C6B,mBA4C3CxB,EAAcyB,4BA3CsB,GA4CpCzB,EAAc0B,mCA3C6B,mBA4C3C1B,EAAc2B,4BA3CsB,GA4CpC3B,EAAc4B,uBA3CiB,mBA4C/B5B,EAAc6B,+BA3CyB,IA4CvC7B,EAAc8B,iDA3C2C,IA4CzD9B,EAAc+B,gDA3C0C,IA4CxD/B,EAAcgC,+CA3CyC,IA4CvDhC,EAAciC,8CA3CwC,IA4CtDjC,EAAckC,kDA3C4C,IA4C1DlC,EAAcmC,iDA3C2C,IA4CzDnC,EAAcoC,0BA3CoB,EA4ClCpC,EAAcqC,uCA3CiC,EA4C/CrC,EAAcsC,oCA3C8B,GA4C5CtC,EAAcuC,2BA3CqB,EA4CnCvC,EAAcwC,2BA3CqB,EA4CnCxC,EAAcyC,iCA3C2B,gBA4CzCzC,EAAc0C,gCA3C0B,gBA4CxC1C,EAAc2C,qCA3C+B,EA4C7C3C,EAAc4C,wBA3CkB,KA5CK5C,CAyFtC,CAuFA,IAII6C,EAyBAC,EA7BAC,EAA6B,CAAC,EAE9BC,EAA2B,CAAC;AAIhC,SAASC,IACR,GAAIJ,EAAqC,OAAOG;AAChDH,EAAsC;AACtC,MAAMx6D,EAAQu2D,EAAcC;AAiB5B,OAJAmE,EAAyBE,kBAZzB,SAA2BvhB,GACzB,OAAQA,eAAwCA,EAAGjoC,WAAarR,EAAM02D,oBAAoB,mBAAmBxvC,aAC/G,EAWAyzC,EAAyBG,eAVzB,SAAwBxhB,GACtB,OAAQA,eAAwCA,EAAGjoC,WAAarR,EAAM02D,oBAAoB,gBAAgBxvC,aAC5G,EASAyzC,EAAyBI,aARzB,SAAsBzhB,GACpB,OAAQA,eAAwCA,EAAGjoC,WAAarR,EAAM02D,oBAAoB,cAAcxvC,aAC1G,EAOAyzC,EAAyBK,gBANzB,SAAyB1hB,GACvB,OAAQA,eAAwCA,EAAGjoC,WAAarR,EAAM02D,oBAAoB,iBAAiBxvC,aAC7G,EAKOyzC,CACR,CAoLA,IAEIM,EAyBAC,EAkCAC,EA7DAC,EAAoC,CAAC,EAyBrCC,EAAuC,CAAC,EAgCxCC,EAAyB,CAAC,EAE1BC,EAAqB,CAAC;AAI1B,SAASC,IACR,OAAIL,IACJA,EAAgC,EAehCI,EAAmBE,WAdnB,WAA8B,IAAD,IAAAC,EAAA9vE,UAAAC,OAANH,EAAI,IAAAuB,MAAAyuE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjwE,EAAIiwE,GAAA/vE,UAAA+vE;AACzB,OAAOjwE,EAAKi6D,SAAQ9nD,EAAQ0C,KAC1B,GAAmB,iBAARA,EACT1C,EAAOvQ,KAAKiT;KACP,GAAmB,iBAARA,EAChB,IAAK,MAAMq7D,KAAM7wE,OAAOC,KAAKuV,GACvBA,EAAIq7D,IACN/9D,EAAOvQ,KAAKsuE;AAIlB,OAAO/9D,CAAM,GACZ,IAAIxJ,KAAK,IACd,GAf0CknE,CAkB3C,CAEA,IAEIM,EAkDAC,EApDAC,EAAa,CAAC;AAIlB,SAASC,IACR,GAAIH,EAAuB,OAAOE;AAElC,IAAI3oD;AADJyoD,EAAwB;AAExB,IAAII,EAAQ,IAAI9oD,WAAW;AAC3B,SAAS+oD,IACP,IAAK9oD,KACHA,EAAoC,oBAAXH,QAA0BA,OAAOG,iBAAmBH,OAAOG,gBAAgB/nB,KAAK4nB,SAA+B,oBAAbC,UAAgE,mBAA7BA,SAASE,iBAAkCF,SAASE,gBAAgB/nB,KAAK6nB,WAErO,MAAM,IAAIxV,MAAM;AAGpB,OAAO0V,EAAgB6oD,EACzB,CACA,MAAME,EAAQ;AAKd,IADA,IAAIC,EAAY,GACP7uE,EAAI,EAAGA,EAAI,MAAOA,EACzB6uE,EAAU9uE,MAAMC,EAAI,KAAKyI,SAAS,IAAIqmE,OAAO;AAyB/C,OADAN,EAAWO,GAdX,SAAY9rE,EAAS+rE,EAAK3oD,GAExB,IAAI4oD,GADJhsE,EAAUA,GAAW,CAAC,GACH+I,SAAW/I,EAAQ0rE,KAAOA;AAG7C,GAFAM,EAAK,GAAe,GAAVA,EAAK,GAAU,GACzBA,EAAK,GAAe,GAAVA,EAAK,GAAU,IACrBD,EAAK,CACP3oD,EAASA,GAAU;AACnB,IAAK,IAAI6oD,EAAK,EAAGA,EAAK,KAAMA,EAC1BF,EAAI3oD,EAAS6oD,GAAMD,EAAKC;AAE1B,OAAOF,CACT,CACA,OApBF,SAAmBG,GACjB,IAAI9oD,EAAShoB,UAAUC,OAAS,YAAKD,UAAU,GAAgBA,UAAU,GAAK,EAC1E+wE,GAAQP,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAM,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAM,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAM,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAMwoD,EAAUM,EAAI9oD,EAAS,IAAM,IAAMwoD,EAAUM,EAAI9oD,EAAS,KAAOwoD,EAAUM,EAAI9oD,EAAS,KAAOwoD,EAAUM,EAAI9oD,EAAS,KAAOwoD,EAAUM,EAAI9oD,EAAS,KAAOwoD,EAAUM,EAAI9oD,EAAS,KAAOwoD,EAAUM,EAAI9oD,EAAS,MAAM2b;AACzf,IAVF,SAAkBotC,GAChB,MAAuB,iBAATA,GAAqBR,EAAM9sE,KAAKstE,EAChD,CAFA,CAUgBA,GACZ,MAAMC,UAAU;AAElB,OAAOD,CACT,CAPA,CAoBmBH,EACnB,EAEOT,CACR,CAqEA,IAIIc,EAJAC,EAAwB,CAAC,EAEzBC,EAAiB,CAAC;AAItB,SAASC,IACR,GAAIH,EAA2B,OAAOE;AACtCF,EAA4B;AAC5B,MAAM78D,EAAQu2D,EAAcC,uBA2BtByG,EAAmB,CAAC,aAAc,gBAAiB,QAAS,SAAU;AA2C5E,OAJAF,EAAeE,iBAAmBA,EAClCF,EAAeG,aAvCM,CACnB,aAAc,CAAEC,SAChB,gBAAiB,CAAEA,SACnBC,MAAO,CAAED,SACTE,OAAQ,CAAEF,SACVhjB,MAAO,CAAEgjB,UAmCXJ,EAAeO,kBAjCWA,IAAML,EAAiBrvE,KAAK8Q,GAC7CsB,EAAM02D,oBAAqB,UAASh4D,OAC1CrK,KAAK,KAgCR0oE,EAAeQ,0BA/Bf,SAAmCC,GACjC,MAAMC,EAAOD,EAAMrhD,cAAc,eAC3B4L,EAASy1C,EAAMrhD,cAAcnc,EAAM02D,oBAAoB;AAC7D,GAAI+G,GAAQ11C,IAAWA,EAAO21C,QAAS,CACrC,IAAIC,EAAmB;AACvB,MAmBMC,GA7DsBpyE,EA0CDqyE,KAEzB,GADkBJ,EAAK16B,UACP,GACd,IAAKhb,EAAO21C,QAAS,CACnB,GAAyB,OAArBC,EAA2B,CAC7B,MAAMG,EAAa/1C,EAAOxM,WAAWY,cAAc,YAC7C4hD,EAAmBC,iBAAiBF;AAC1CH,EAAmBhzD,OAAOlD,SAASs2D,EAAiBjnC,OAAQ,IAAMnsB,OAAOlD,SAASs2D,EAAiBE,UAAW,GAChH,CACAR,EAAKS,MAAMC,WAAc,GAAER,MAC3B51C,EAAO21C,UACT,OAEI31C,EAAO21C,UACTD,EAAKS,MAAMC,WAAa,GACxBp2C,EAAO21C,WAAU,EAxDrBU,EAAW,GACXC,EAAU,KACVC,EAAY,WACd,IAAK,IAAIC,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAEzBJ,EAAW1yE,EACP2yE,IAGJA,EAAUtd,kCACRsd,EAAU,KACV7yE,EAAGM,aAAcsyE,EACnB,IACF,EACAE,EAAUptE,OAAS,WACZmtE,IAGLrd,qBAAqBqd,GACrBA,EAAU,KACZ,EACOC;AAuCLb,EAAKp8D,iBAAiB,SAAUu8D,EAAiB,CAAE77D,YACrD,CA/DY,IAAkBvW,EAC1B4yE,EACAC,EACAC,CA6DN,EAKOvB,CACR,CAEA,IAEI0B,EA2jCAC,EA7jCAC,EAAoB,CAAC;AAIzB,SAASC,IACR,GAAIH,EAA8B,OAAOE;AACzCF,EAA+B;AAK/B,IAAII,EAAqB,CAAC,qBAAsB,sBAAuB,wBAAyB,uBAAwB,sBAAuB,oCAAqC,+BAAgC,+BAAgC,gEAAiE,6CAA8C,wBAC/VC,EAAoCD,EAAmBxqE,KAAK,KAC5D0qE,EAA+B,oBAAZ1pC,QACnBnqB,EAAU6zD,EAAY,WAC1B,EAAI1pC,QAAQhnC,UAAU6c,SAAWmqB,QAAQhnC,UAAUg/B,mBAAqBgI,QAAQhnC,UAAU2wE,sBACtFC,GAAeF,GAAa1pC,QAAQhnC,UAAU4wE,YAAc,SAAS9xC,GACvE,IAAI+xC;AACJ,OAAO/xC,SAAmG,QAAhD+xC,EAAuB/xC,EAAQ8xC,uBAAyBC,SAA2CA,EAAqB3wE,KAAK4+B,EACzL,EAAI,SAASA,GACX,OAAOA,eAAkDA,EAAQsE,aACnE,EACI0tC,EAAU,SAASC,EAASpkD,EAAMqkD,GACpC,IAAIC;KAAAA,IACAD,IACFA;AAEF,IAAIE,EAAWvkD,SAAyF,QAA5CskD,EAAqBtkD,EAAK+T,wBAA0BuwC,SAAyCA,EAAmB/wE,KAAKysB,EAAM;AAGvL,MAFyB,KAAbukD,GAAgC,SAAbA,GACTF,GAAUrkD,GAAQokD,EAASpkD,EAAKe,WAExD,EAMIyjD,EAAgB,SAAwBlmB,EAAImmB,EAAkBvoE,GAChE,GAAIioE,EAAQ7lB,GACV,MAAO;AAET,IAAIma,EAAaxmE,MAAMoB,UAAUL,MAAMlC,MAAMwtD,EAAG5nB,iBAAiBotC;AAKjE,OAJIW,GAAoBv0D,EAAQ3c,KAAK+qD,EAAIwlB,IACvCrL,EAAWjuC,QAAQ8zB,GAERma,EAAWv8D,OAAOA,EAEjC,EACIwoE,EAA2B,SAASC,EAA0BC,EAAUH,EAAkBjvE,GAG5F,IAFA,IAAIijE,EAAa,GACboM,EAAkB5yE,MAAMC,KAAK0yE,GAC1BC,EAAgBh0E,QAAQ,CAC7B,IAAIshC,EAAU0yC,EAAgBtqE;AAC9B,IAAI4pE,EAAQhyC,MAGZ,GAAwB,SAApBA,EAAQ9b,QAAoB,CAC9B,IAAIyuD,EAAW3yC,EAAQ4yC,mBAEnBC,EAAmBL,EADTG,EAASj0E,OAASi0E,EAAW3yC,EAAQ8yC,YACazvE;AAC5DA,EAAQ0vE,QACVzM,EAAWnmE,KAAKxB,MAAM2nE,EAAYuM,GAElCvM,EAAWnmE,KAAK,CACd6yE,YAAahzC,EACbsmC,WAAYuM,GAGlB,KAAO,CACgB90D,EAAQ3c,KAAK4+B,EAAS2xC,IACrBtuE,EAAQ0G,OAAOi2B,KAAasyC,IAAqBG,EAASjzE,SAASwgC,KACvFsmC,EAAWnmE,KAAK6/B;AAElB,IAAI5R,EAAa4R,EAAQ5R,YACQ,mBAA1B/qB,EAAQ4vE,eAAgC5vE,EAAQ4vE,cAAcjzC,GACjEkzC,GAAmBlB,EAAQ5jD,SAAwB/qB,EAAQ8vE,kBAAoB9vE,EAAQ8vE,iBAAiBnzC;AAC5G,GAAI5R,GAAc8kD,EAAiB,CACjC,IAAIE,EAAoBZ,OAA0BpkD,EAAsB4R,EAAQ8yC,SAAW1kD,EAAW0kD,YAAgBzvE;AAClHA,EAAQ0vE,QACVzM,EAAWnmE,KAAKxB,MAAM2nE,EAAY8M,GAElC9M,EAAWnmE,KAAK,CACd6yE,YAAahzC,EACbsmC,WAAY8M,GAGlB,MACEV,EAAgBr6C,QAAQ15B,MAAM+zE,EAAiB1yC,EAAQ8yC,SAE3D,CACF,CACA,OAAOxM,CACT,EACI+M,EAAc,SAAsBxlD,GACtC,OAAQylD,MAAMh5D,SAASuT,EAAK+T,aAAa,YAAa,IACxD,EACI2xC,EAAc,SAAsB1lD,GACtC,IAAKA,EACH,MAAM,IAAItd,MAAM;AAElB,OAAIsd,EAAK2lD,SAAW,IACb,0BAA0BtxE,KAAK2rB,EAAK3J,UArErB,SAA4B2J,GAClD,IAAI4lD,EACAC,EAAW7lD,SAA0F,QAA7C4lD,EAAsB5lD,EAAK+T,wBAA0B6xC,SAA0CA,EAAoBryE,KAAKysB,EAAM;AAC1L,MAAoB,KAAb6lD,GAAgC,SAAbA,CAC5B,CAJwB,CAqEmD7lD,MAAWwlD,EAAYxlD,GACrF,EAGJA,EAAK2lD,QACd,EAQIG,EAAuB,SAA+BvlE,EAAGC,GAC3D,OAAOD,EAAEolE,WAAanlE,EAAEmlE,SAAWplE,EAAEwlE,cAAgBvlE,EAAEulE,cAAgBxlE,EAAEolE,SAAWnlE,EAAEmlE,QACxF,EACIK,EAAU,SAAkBhmD,GAC9B,MAAwB,UAAjBA,EAAK3J,OACd,EA8DI4vD,EAAa,SAAqBjmD,GACpC,IAAIkmD,EAAwBlmD,EAAK4b,wBAAyBC,EAAQqqC,EAAsBrqC,MAAOC,EAASoqC,EAAsBpqC;AAC9H,OAAiB,IAAVD,GAA0B,IAAXC,CACxB,EA0DIqqC,EAAkC,SAA0C3wE,EAASwqB,GACvF,QAAIA,EAAKm8B,UAGTgoB,EAAQnkD,IA9HU,SAAwBA,GAC1C,OAAOgmD,EAAQhmD,IAAuB,WAAdA,EAAKtc,IAC/B,CAFoB,CA8Hasc,IA7DlB,SAAmBA,EAAMomD,GACtC,IAAIC,EAAeD,EAAKC,aAAcjB,EAAgBgB,EAAKhB;AAC3D,GAA0C,WAAtCpC,iBAAiBhjD,GAAMsmD,WACzB;AAEF,IACIC,EADkBr2D,EAAQ3c,KAAKysB,EAAM,iCACAA,EAAKuS,cAAgBvS;AAC9D,GAAI9P,EAAQ3c,KAAKgzE,EAAkB,yBACjC;AAEF,GAAKF,GAAiC,SAAjBA,GAA4C,gBAAjBA,GAwBzC,GAAqB,kBAAjBA,EACT,OAAOJ,EAAWjmD,OAzB4D,CAC9E,GAA6B,mBAAlBolD,EAA8B,CAEvC,IADA,IAAIoB,EAAexmD,EACZA,GAAM,CACX,IAAIuS,EAAgBvS,EAAKuS,cACrBk0C,EAAWxC,EAAYjkD;AAC3B,GAAIuS,IAAkBA,EAAchS,iBAAc6kD,EAAc7yC,GAC9D,OAAO0zC,EAAWjmD;AAElBA,EADSA,EAAK0mD,aACP1mD,EAAK0mD,aACFn0C,GAAiBk0C,IAAazmD,EAAKyW,cAGtClE,EAFAk0C,EAASlyD,IAIpB,CACAyL,EAAOwmD,CACT,CACA,GAjDiB,SAAyBxmD,GAC5C,IAAI2mD,EAKEC,EAAeC,EAAuBC,EAJxCC,EAAW/mD,GAAQikD,EAAYjkD,GAC/BgnD,EAA0C,QAA1BL,EAAYI,aAAsBJ,SAAgCA,EAAUpyD,KAC5F0yD;AACJ,GAAIF,GAAYA,IAAa/mD,EAG3B,IADAinD,KAAiD,QAAlCL,EAAgBI,aAA0BJ,GAAsF,QAAzDC,EAAwBD,EAAcnwC,yBAA2BowC,GAAoCA,EAAsBruC,SAASwuC,IAAiBhnD,SAAmF,QAA9C8mD,EAAsB9mD,EAAKyW,yBAA2BqwC,GAAkCA,EAAoBtuC,SAASxY,KAC7XinD,GAAYD,GAAc,CAChC,IAAIE,EAAYC,EAAgBC;AAGhCH,IAAkD,QAAnCE,EADfH,EAA2C,QAA3BE,EADhBH,EAAW9C,EAAY+C,cAC4BE,SAAiCA,EAAW3yD,gBACrC4yD,GAAwF,QAA1DC,EAAwBD,EAAe1wC,yBAA2B2wC,IAAoCA,EAAsB5uC,SAASwuC,GAC/N,CAEF,OAAOC,CACT,CAhBqB,CAiDEjnD,GACjB,OAAQA,EAAKqnD,iBAAiBx2E;AAEhC,GAAqB,gBAAjBw1E,EACF,QAEJ,CAGA,QACF,CAtCe,CA6DoCrmD,EAAMxqB,IA3H9B,SAA+BwqB,GAIxD,MAHyB,YAAjBA,EAAK3J,SAAyBpkB,MAAMoB,UAAUL,MAAMlC,MAAMkvB,EAAKilD,UAAU5tE,eAAcspB,GAC7F,MAAyB,YAAlBA,EAAMtK,OACf,GAEF,CAL2B,CA4HJ2J,IAvBM,SAAiCA,GAC5D,GAAI,mCAAmC3rB,KAAK2rB,EAAK3J,SAE/C,IADA,IAAI0K,EAAaf,EAAKuS,cACfxR,GAAY,CACjB,GAA2B,aAAvBA,EAAW1K,SAA0B0K,EAAWo7B,SAAU,CAC5D,IAAK,IAAI5pD,EAAI,EAAGA,EAAIwuB,EAAWkkD,SAASp0E,OAAQ0B,IAAK,CACnD,IAAIouB,EAAQI,EAAWkkD,SAAS5yE,KAAKE;AACrC,GAAsB,WAAlBouB,EAAMtK,QACR,QAAOnG,EAAQ3c,KAAKwtB,EAAY,0BAAkCJ,EAAM6X,SAASxY,EAErF,CACA,QACF,CACAe,EAAaA,EAAWwR,aAC1B,CAEF,QACF,CAjB6B,CAuB0BvS,GAIvD,EACIsnD,EAAiC,SAAyC9xE,EAASwqB,GACrF,QA5FuB,SAA6BA,GACpD,OAJY,SAAkBA,GAC9B,OAAOgmD,EAAQhmD,IAAuB,UAAdA,EAAKtc,IAC/B,CAFc,CAIGsc,KA1BK,SAA0BA,GAC9C,IAAKA,EAAK9vB,KACR;AAEF,IAIIq3E,EAJAC,EAAaxnD,EAAKynD,MAAQxD,EAAYjkD,GACtC0nD,EAAc,SAAsBx3E,GACtC,OAAOs3E,EAAW9wC,iBAAiB,6BAA+BxmC,EAAO,KAC3E;AAEA,GAAsB,oBAAX8D,iBAAiCA,OAAO89B,KAAoD,mBAAtB99B,OAAO89B,IAAIC,OAC1Fw1C,EAAWG,EAAY1zE,OAAO89B,IAAIC,OAAO/R,EAAK9vB;KAE9C,IACEq3E,EAAWG,EAAY1nD,EAAK9vB,KAI9B,CAHE,MAAOa,GAEP,OADAlB,QAAQF,MAAM,2IAA4IoB,EAAIqR,WAEhK,CAEF,IAAIi9C,EA1BgB,SAA0BsoB,EAAOF,GACrD,IAAK,IAAIl1E,EAAI,EAAGA,EAAIo1E,EAAM92E,OAAQ0B,IAChC,GAAIo1E,EAAMp1E,GAAG8sD,SAAWsoB,EAAMp1E,GAAGk1E,OAASA,EACxC,OAAOE,EAAMp1E,EAGnB,CANsB,CA0BUg1E,EAAUvnD,EAAKynD;AAC7C,OAAQpoB,GAAWA,IAAYr/B,CACjC,CArBsB,CA0BqBA,EAC3C,CAFyB,CA4FAA,IAAS0lD,EAAY1lD,GAAQ,IAAMmmD,EAAgC3wE,EAASwqB,GAIrG,EACI4nD,EAA4B,SAAoCC,GAClE,IAAIlC,EAAWl5D,SAASo7D,EAAe9zC,aAAa,YAAa;AACjE,SAAI0xC,MAAME,IAAaA,GAAY,EAIrC,EACImC,EAAc,SAASC,EAAatP,GACtC,IAAIuP,EAAmB,GACnBC,EAAmB;AAkBvB,OAjBAxP,EAAWxoE,kBAAiBoC,EAAME,GAChC,IAAI21E,IAAY71E,EAAK8yE,YACjBhzC,EAAU+1C,EAAU71E,EAAK8yE,YAAc9yE,EACvC81E,EApKmB,SAA+BnoD,EAAMkoD,GAC9D,IAAIvC,EAAWD,EAAY1lD;AAC3B,OAAI2lD,EAAW,GAAKuC,IAAY1C,EAAYxlD,GACnC,EAEF2lD,CACT,CAN2B,CAoKsBxzC,EAAS+1C,GAClDtD,EAAWsD,EAAUH,EAAa11E,EAAKomE,YAActmC;AAC/B,IAAtBg2C,EACFD,EAAUF,EAAiB11E,KAAKxB,MAAMk3E,EAAkBpD,GAAYoD,EAAiB11E,KAAK6/B,GAE1F81C,EAAiB31E,KAAK,CACpByzE,cAAexzE,EACfozE,SAAUwC,EACV91E,OACA61E,UACA5mD,QAASsjD,GAGf,IACOqD,EAAiBx9B,KAAKq7B,GAAsBnb,iBAAgByd,EAAKC,GAEtE,OADAA,EAASH,QAAUE,EAAI91E,KAAKxB,MAAMs3E,EAAKC,EAAS/mD,SAAW8mD,EAAI91E,KAAK+1E,EAAS/mD,SACtE8mD,CACT,GAAG,IAAIrtE,OAAOitE,EAChB,EA8BIM,EAAa,SAAqBtoD,EAAMxqB,GAE1C,GADAA,EAAUA,GAAW,CAAC,GACjBwqB,EACH,MAAM,IAAItd,MAAM;AAElB,WAAIwN,EAAQ3c,KAAKysB,EAAM8jD,IAGhBwD,EAA+B9xE,EAASwqB,EACjD,EACIuoD,EAA6C1E,EAAmB9oE,OAAO,UAAU1B,KAAK,KACtFmvE,EAAc,SAAsBxoD,EAAMxqB,GAE5C,GADAA,EAAUA,GAAW,CAAC,GACjBwqB,EACH,MAAM,IAAItd,MAAM;AAElB,WAAIwN,EAAQ3c,KAAKysB,EAAMuoD,IAGhBpC,EAAgC3wE,EAASwqB,EAClD;AAKA,SAASyoD,EAAkB3uE,EAAGyG,IAC3B,MAAQA,GAAKA,EAAIzG,EAAEjJ,UAAY0P,EAAIzG,EAAEjJ;AACtC,IAAK,IAAIW,EAAI,EAAGqf,EAAI5e,MAAMsO,GAAI/O,EAAI+O,EAAG/O,IAAKqf,EAAErf,GAAKsI,EAAEtI;AACnD,OAAOqf,CACT,CAIA,SAAS63D,EAAgBl3E,EAAGsI,EAAGyR,GAC7B,OAAQzR,EA+CV,SAAwByR,GACtB,IAAIhZ,EAXN,SAAsBgZ,EAAGzR,GACvB,GAAI,iBAAmByR,IAAMA,EAAG,OAAOA;AACvC,IAAI/Z,EAAI+Z,EAAEo9D,OAAOC;AACjB,YAAep3E,EAAG,CAChB,IAAIe,EAAIf,EAAE+B,KAAKgY,EAOO;AANtB,GAAI,iBAAmBhZ,EAAG,OAAOA;AACjC,MAAM,IAAIqvE,UAAU,+CACtB,CACA,OAAyB1gE,OAAiBqK,EAC5C,CATA,CAWuBA;AACrB,MAAO,iBAAmBhZ,EAAIA,EAAIA,EAAI,EACxC,CAHA,CA/C6BuH,MAAOtI,EAAIzB,OAAO2D,eAAelC,EAAGsI,EAAG,CAChEzD,MAAOkV,EACPuvD,cACAlnE,gBACAi1E,cACGr3E,EAAEsI,GAAKyR,EAAG/Z,CACjB,CAOA,SAASs3E,EAAQt3E,EAAGsI,GAClB,IAAIyR,EAAIxb,OAAOC,KAAKwB;AACpB,GAAIzB,OAAOg5E,sBAAuB,CAChC,IAAIxvD,EAAIxpB,OAAOg5E,sBAAsBv3E;AACrCsI,IAAMyf,EAAIA,EAAErd,iBAAgB8sE,GAC1B,OAAOj5E,OAAO27B,yBAAyBl6B,EAAGw3E,GAAIlO,UAChD,KAAKvvD,EAAEjZ,KAAKxB,MAAMya,EAAGgO,EACvB,CACA,OAAOhO,CACT,CACA,SAAS09D,EAAez3E,GACtB,IAAK,IAAIsI,EAAI,EAAGA,EAAIlJ,UAAUC,OAAQiJ,IAAK,CACzC,IAAIyR,EAAI,MAAQ3a,UAAUkJ,GAAKlJ,UAAUkJ,GAAK,CAAC;AAC/CA,EAAI,EAAIgvE,EAAQ/4E,OAAOwb,OAAUtb,kBAAiB+4E,GAChDN,EAAgBl3E,EAAGw3E,EAAIz9D,EAAEy9D,GAC3B,IAAKj5E,OAAOm5E,0BAA4Bn5E,OAAOo5E,iBAAiB33E,EAAGzB,OAAOm5E,0BAA0B39D,IAAMu9D,EAAQ/4E,OAAOwb,IAAItb,kBAAiB+4E,GAC5Ij5E,OAAO2D,eAAelC,EAAGw3E,EAAIj5E,OAAO27B,yBAAyBngB,EAAGy9D,GAClE,GACF,CACA,OAAOx3E,CACT,CAyBA,IAgCI43E,EAAa,SAAqB53E,GACpC,MAAyD,SAAjDA,eAAsCA,EAAEqB,MAAwE,KAArDrB,eAAsCA,EAAE63E,QAC7G,EACIC,EAAe,SAAuB93E,GACxC,OAAO43E,EAAW53E,KAAOA,EAAE+3E,QAC7B,EACIC,EAAgB,SAAwBh4E,GAC1C,OAAO43E,EAAW53E,IAAMA,EAAE+3E,QAC5B,EACIt0E,EAAQ,SAAgBzE,GAC1B,OAAOuE,WAAWvE,EAAI,EACxB,EACIi5E,EAAiB,SAAyBpzE,GAC5C,IAAK,IAAIktE,EAAO3yE,UAAUC,OAAQuvC,EAAS,IAAInuC,MAAMsxE,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IACpGpjC,EAAOojC,EAAO,GAAK5yE,UAAU4yE;AAE/B,MAAwB,mBAAVntE,EAAuBA,EAAMvF,aAAcsvC,GAAU/pC,CACrE,EACIqzE,EAAkB,SAA0B7jE,GAC9C,OAAOA,EAAM3S,OAAOqtB,YAA4C,mBAAvB1a,EAAM06C,aAA8B16C,EAAM06C,eAAe,GAAK16C,EAAM3S,MAC/G,EACIy2E,EAAoB;AA0mBxB,OADAhG,EAAkBiG,2BAhBiBC,IAAuC,IAAtCC,gBAAEA,EAAexrB,GAAEA,EAAE9oD,QAAEA,GAASq0E,EAC9DE,EAAY;AACM,oBAAX/1E,SACJA,OAAO+1E,UAGVA,EAAY/1E,OAAO+1E,UAFnB/1E,OAAO+1E,UAAYA;AAKvB,IACE,OAlmBkB,SAA0BnF,EAAUoF,GACxD,IA+CIC,EA/CA32D,GAAO02D,eAA0DA,EAAY/7D,WAAaA,SAC1F87D,GAAaC,eAA0DA,EAAYD,YAAcJ,EACjGO,EAASjB,EAAe,CAC1BkB,2BACAC,qBACAC,qBACAf,eACAE,iBACCQ,GACC/9C,EAAQ,CAGVq+C,WAAY,GAiBZC,gBAAiB,GAMjBC,eAAgB,GAChBC,4BAA6B,KAC7BC,wBAAyB,KACzBC,UACAnrB,UACAorB,kBAGAC,8BAEAC,uBAGEC,EAAY,SAAoBC,EAAuBC,EAAYC,GACrE,OAAOF,YAAyBA,EAAsBC,GAAyBD,EAAsBC,GAAcf,EAAOgB,GAAoBD,EAChJ,EACIE,EAAqB,SAA6Bh5C,EAAStsB,GAC7D,IAAI06C,EAA6F,mBAAtE16C,eAA8CA,EAAM06C,cAA+B16C,EAAM06C;AACpH,OAAOt0B,EAAMs+C,gBAAgB5/B,oBAAmBy7B,GAC9C,IAAIgF,EAAYhF,EAAKgF,UAAWC,EAAgBjF,EAAKiF;AACrD,OAAOD,EAAU5yC,SAASrG,KAIzBouB,eAA4DA,EAAa5uD,SAASy5E,KAAeC,EAAc74E,eAAcwtB,GAC5H,OAAOA,IAASmS,CAClB,GACF,GACF,EACIm5C,EAAmB,SAA2BL,GAChD,IAhJwBnxE,EAgJpByxE,EAAQ36E,UAAUC,OAAS,YAAKD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAAG46E,EAAoBD,EAAME,YAAaA,WAAcD,GAAuCA,EAAmBE,EAAeH,EAAMnrC,OAAQA,WAASsrC,EAA0B,GAAKA,EACjQC,EAAczB,EAAOe;AAOzB,GAN2B,mBAAhBU,IACTA,EAAcA,EAAY76E,aAzLhC,SAA4BgJ,GAC1B,GAAI7H,MAAMiG,QAAQ4B,GAAI,OAAO2uE,EAAkB3uE,EACjD,CAFA,CAsC4BA,EAmJqCsmC,IA9KjE,SAA0BtmC,GACxB,GAAI,oBAAsB6uE,QAAU,MAAQ7uE,EAAE6uE,OAAOiD,WAAa,MAAQ9xE,EAAE,cAAe,OAAO7H,MAAMC,KAAK4H,EAC/G,CAFA,CA4BmDA,IAgBnD,SAAqCA,EAAGyG,GACtC,GAAIzG,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO2uE,EAAkB3uE,EAAGyG;AACtD,IAAIgL,EAAI,CAAC,EAAEvQ,SAASzH,KAAKuG,GAAG9G,MAAM,GAAI;AACtC,MAAO,WAAauY,GAAKzR,EAAEgjB,cAAgBvR,EAAIzR,EAAEgjB,YAAY5sB,MAAO,QAAUqb,GAAK,QAAUA,EAAItZ,MAAMC,KAAK4H,GAAK,cAAgByR,GAAK,2CAA2ClX,KAAKkX,GAAKk9D,EAAkB3uE,EAAGyG,SAClN,CACF,CANA,CAhBqFzG,IAzBrF,WACE,MAAM,IAAI8nE,UAAU,uIACtB,CAFA,MAyB2FiK,IAoJnFF,IACFA,WAEGA,EAAa,CAChB,YAAIA,QAA0BA,EAC5B,OAAOA;AAET,MAAM,IAAIjpE,MAAM,IAAI3H,OAAOkwE,EAAY,gEACzC,CACA,IAAIjrD,EAAO2rD;AACX,GAA2B,iBAAhBA,EAA0B,CACnC,IACE3rD,EAAO1M,EAAI6N,cAAcwqD,EAG3B,CAFE,MAAO56E,GACP,MAAM,IAAI2R,MAAM,IAAI3H,OAAOkwE,EAAY,gDAAgDlwE,OAAOhK,EAAIqR,QAAS,KAC7G,CACA,IAAK4d,IACEyrD,EACH,MAAM,IAAI/oE,MAAM,IAAI3H,OAAOkwE,EAAY,yCAG7C,CACA,OAAOjrD,CACT,EACI8rD,EAAsB,WACxB,IAAI9rD,EAAOsrD,EAAiB,eAAgB,CAC1CG;AAEF,QAAIzrD,EACF;AAEF,YAAIA,GAAmBA,IAASwoD,EAAYxoD,EAAMkqD,EAAO6B,iBACvD,GAAIZ,EAAmB73D,EAAI04D,gBAAkB,EAC3ChsD,EAAO1M,EAAI04D;IACN,CACL,IAAIC,EAAqBhgD,EAAMu+C,eAAe;AAE9CxqD,EADwBisD,GAAsBA,EAAmBC,mBACrCZ,EAAiB,gBAC/C,MACkB,OAATtrD,IACTA,EAAOsrD,EAAiB;AAE1B,IAAKtrD,EACH,MAAM,IAAItd,MAAM;AAElB,OAAOsd,CACT,EACImsD,EAAsB,WAgExB,GA/DAlgD,EAAMs+C,gBAAkBt+C,EAAMq+C,WAAW13E,cAAaw4E,GACpD,IAAIC,EAvSK,SAAmBD,EAAW51E,GAE3C,IAAIijE;AAWJ,OATEA,GAHFjjE,EAAUA,GAAW,CAAC,GAEV4vE,cACGV,EAAyB,CAAC0G,GAAY51E,EAAQivE,iBAAkB,CAC3EvoE,OAAQorE,EAA+Bj3E,KAAK,KAAMmF,GAClD0vE,WACAE,cAAe5vE,EAAQ4vE,cACvBE,iBAAkBsC,IAGPpD,EAAc4G,EAAW51E,EAAQivE,iBAAkB6C,EAA+Bj3E,KAAK,KAAMmF,IAErGsyE,EAAYrP,EACrB,CAde,CAuSoB2S,EAAWlB,EAAO6B,iBAC3CK,EAzRM,SAAoBhB,EAAW51E,GAY7C,OAXAA,EAAUA,GAAW,CAAC,GAEV4vE,cACGV,EAAyB,CAAC0G,GAAY51E,EAAQivE,iBAAkB,CAC3EvoE,OAAQiqE,EAAgC91E,KAAK,KAAMmF,GACnD0vE,WACAE,cAAe5vE,EAAQ4vE,gBAGZZ,EAAc4G,EAAW51E,EAAQivE,iBAAkB0B,EAAgC91E,KAAK,KAAMmF,GAG/G,CAbgB,CAyRqB41E,EAAWlB,EAAO6B,iBAC7CG,EAAoBb,EAAcx6E,OAAS,EAAIw6E,EAAc,UAC7DgB,EAAmBhB,EAAcx6E,OAAS,EAAIw6E,EAAcA,EAAcx6E,OAAS,UACnFy7E,EAAuBF,EAAe55E,eAAcwtB,GACtD,OAAOsoD,EAAWtoD,EACpB,IACIusD,EAAsBH,EAAep5E,QAAQqiB,UAAU7iB,eAAcwtB,GACvE,OAAOsoD,EAAWtoD,EACpB,IACIwsD,IAAuBnB,EAAc74E,eAAcwtB,GACrD,OAAO0lD,EAAY1lD,GAAQ,CAC7B;AACA,MAAO,CACLorD,YACAC,gBACAe,iBAEAI,qBAEAN,oBAEAG,mBASAC,uBAEAC,sBASAE,iBAAkB,SAA0BzsD,GAC1C,IAAI0sD,IAAU97E,UAAUC,OAAS,YAAKD,UAAU,KAAgBA,UAAU,GACtE+7E,EAAUtB,EAAcv5E,QAAQkuB;AACpC,OAAI2sD,EAAU,EACRD,EACKN,EAAep5E,MAAMo5E,EAAet6E,QAAQkuB,GAAQ,GAAGxtB,eAAc8rD,GAC1E,OAAOgqB,EAAWhqB,EACpB,IAEK8tB,EAAep5E,MAAM,EAAGo5E,EAAet6E,QAAQkuB,IAAO3K,UAAU7iB,eAAc8rD,GACnF,OAAOgqB,EAAWhqB,EACpB,IAEK+sB,EAAcsB,GAAWD,EAAU,GAAK,GACjD,EAEJ,IACAzgD,EAAMu+C,eAAiBv+C,EAAMs+C,gBAAgBruE,iBAAgB0wE,GAC3D,OAAOA,EAAMvB,cAAcx6E,OAAS,CACtC,IACIo7B,EAAMu+C,eAAe35E,QAAU,IAAMy6E,EAAiB,iBACxD,MAAM,IAAI5oE,MAAM;AAElB,GAAIupB,EAAMs+C,gBAAgB/3E,eAAcu5C,GACtC,OAAOA,EAAEygC,kBACX,KAAMvgD,EAAMs+C,gBAAgB15E,OAAS,EACnC,MAAM,IAAI6R,MAAM,gLAEpB,EACImqE,EAAoB,SAA0BvuB,GAChD,IAAI0tB,EAAgB1tB,EAAG0tB;AACvB,GAAKA,EAGL,OAAIA,EAAczrD,YAAyD,OAA3CyrD,EAAczrD,WAAWyrD,cAChDa,EAAkBb,EAAczrD,YAElCyrD,CACT,EACIc,EAAY,SAAkB9sD,QAC5BA,GAGAA,IAAS6sD,EAAkB5+D,YAG1B+R,GAASA,EAAK+sD,OAInB/sD,EAAK+sD,MAAM,CACTC,gBAAiB9C,EAAO8C,gBAE1B/gD,EAAMy+C,wBAA0B1qD,EAnPZ,SAA4BA,GAClD,OAAOA,EAAK3J,SAA0C,UAA/B2J,EAAK3J,QAAQke,eAAoD,mBAAhBvU,EAAKitD,MAC/E,CAFwB,CAoPEjtD,IACpBA,EAAKitD,UARLH,EAAUhB,KAUd,EACIoB,EAAqB,SAA6BC,GACpD,IAAIntD,EAAOsrD,EAAiB,iBAAkB,CAC5ClrC,OAAQ,CAAC+sC;AAEX,OAAOntD,QAAcA,GAAyBmtD,CAChD,EACIC,EAAkB,SAA0BC,GAC9C,IAAIn6E,EAASm6E,EAAMn6E,OAAQ2S,EAAQwnE,EAAMxnE,MAAOynE,EAAmBD,EAAME,WAAYA,WAAaD,GAAsCA;AACxIp6E,EAASA,GAAUw2E,EAAgB7jE,GACnCsmE;AACA,IAAIqB,EAAkB;AACtB,GAAIvhD,EAAMu+C,eAAe35E,OAAS,EAAG,CACnC,IAAI48E,EAAiBtC,EAAmBj4E,EAAQ2S,GAC5C6nE,EAAiBD,GAAkB,EAAIxhD,EAAMs+C,gBAAgBkD;AACjE,GAAIA,EAAiB,EAEjBD,EADED,EACgBthD,EAAMu+C,eAAev+C,EAAMu+C,eAAe35E,OAAS,GAAGw7E,iBAEtDpgD,EAAMu+C,eAAe,GAAG0B;KAEvC,GAAIqB,EAAY,CACrB,IAAII,EAAoB1hD,EAAMu+C,eAAe7/B,oBAAmBijC,GAC9D,IAAI1B,EAAoB0B,EAAM1B;AAC9B,OAAOh5E,IAAWg5E,CACpB;AAIA,GAHIyB,EAAoB,IAAMD,EAAetC,YAAcl4E,GAAUs1E,EAAYt1E,EAAQg3E,EAAO6B,mBAAqBzD,EAAWp1E,EAAQg3E,EAAO6B,mBAAqB2B,EAAejB,iBAAiBv5E,SAClMy6E,EAAoBF,GAElBE,GAAqB,EAAG,CAC1B,IAAIE,EAA8C,IAAtBF,EAA0B1hD,EAAMu+C,eAAe35E,OAAS,EAAI88E,EAAoB,EACxGG,EAAmB7hD,EAAMu+C,eAAeqD;AAC5CL,EAAkB9H,EAAYxyE,IAAW,EAAI46E,EAAiBzB,iBAAmByB,EAAiBvB,mBACpG,MAAYnD,EAAWvjE,KACrB2nE,EAAkBE,EAAejB,iBAAiBv5E,MAEtD,KAAO,CACL,IAAI66E,EAAmB9hD,EAAMu+C,eAAe7/B,oBAAmBqjC,GAC7D,IAAI3B,EAAmB2B,EAAM3B;AAC7B,OAAOn5E,IAAWm5E,CACpB;AAIA,GAHI0B,EAAmB,IAAML,EAAetC,YAAcl4E,GAAUs1E,EAAYt1E,EAAQg3E,EAAO6B,mBAAqBzD,EAAWp1E,EAAQg3E,EAAO6B,mBAAqB2B,EAAejB,iBAAiBv5E,MACjM66E,EAAmBN,GAEjBM,GAAoB,EAAG,CACzB,IAAIE,EAAyBF,IAAqB9hD,EAAMu+C,eAAe35E,OAAS,EAAI,EAAIk9E,EAAmB,EACvGG,EAAoBjiD,EAAMu+C,eAAeyD;AAC7CT,EAAkB9H,EAAYxyE,IAAW,EAAIg7E,EAAkBhC,kBAAoBgC,EAAkB5B,oBACvG,MAAYlD,EAAWvjE,KACrB2nE,EAAkBE,EAAejB,iBAAiBv5E,GAEtD,CACF,MACEs6E,EAAkBlC,EAAiB;AAErC,OAAOkC,CACT,EACIW,EAAmB,SAA2B38E,GAChD,IAAI0B,EAASw2E,EAAgBl4E;AACzB25E,EAAmBj4E,EAAQ1B,IAAM,IAGjCi4E,EAAeS,EAAOkE,wBAAyB58E,GACjDy4E,EAAKoE,WAAW,CAOdC,YAAapE,EAAOC,0BAIpBV,EAAeS,EAAOqE,kBAAmB/8E,IAG7CA,EAAEg9E,iBACJ,EACIC,EAAe,SAAuB5oE,GACxC,IAAI3S,EAASw2E,EAAgB7jE,GACzB6oE,EAAkBvD,EAAmBj4E,EAAQ2S,IAAU;AAC3D,GAAI6oE,GAAmBx7E,aAAkBy7E,SACnCD,IACFziD,EAAMy+C,wBAA0Bx3E;IAE7B,CAEL,IAAI07E;AADJ/oE,EAAMgpE;AAEN,IAAIC;AACJ,GAAI7iD,EAAMy+C,wBACR,GAAIhF,EAAYz5C,EAAMy+C,yBAA2B,EAAG,CAClD,IAAIqE,EAAkB5D,EAAmBl/C,EAAMy+C,yBAC3CW,EAAgBp/C,EAAMs+C,gBAAgBwE,GAAiB1D;AAC3D,GAAIA,EAAcx6E,OAAS,EAAG,CAC5B,IAAIm+E,EAAY3D,EAAc1gC,oBAAmB3qB,GAC/C,OAAOA,IAASiM,EAAMy+C,uBACxB;AACIsE,GAAa,IACX9E,EAAOZ,aAAar9C,EAAM6+C,gBACxBkE,EAAY,EAAI3D,EAAcx6E,SAChC+9E,EAAWvD,EAAc2D,EAAY,GACrCF,MAGEE,EAAY,GAAK,IACnBJ,EAAWvD,EAAc2D,EAAY,GACrCF,MAIR,CACF,MACO7iD,EAAMs+C,gBAAgBlzE,eAAc00C,GACvC,OAAOA,EAAEs/B,cAAch0E,eAAcwZ,GACnC,OAAO60D,EAAY70D,GAAK,CAC1B,GACF,MACEi+D;KAIJA;AAEEA,IACFF,EAAWxB,EAAgB,CAGzBl6E,OAAQ+4B,EAAMy+C,wBACd6C,WAAYrD,EAAOV,cAAcv9C,EAAM6+C,mBAIzCgC,EADE8B,GAGQ3iD,EAAMy+C,yBAA2BoB,IAE/C,CACA7/C,EAAM6+C,qBACR,EAeImE,EAAc,SAAsBppE,IAClCqkE,EAAOZ,aAAazjE,IAAUqkE,EAAOV,cAAc3jE,KAfvC,SAAsBA,GACtC,IAAI0nE,EAAa38E,UAAUC,OAAS,YAAKD,UAAU,IAAgBA,UAAU;AAC7Eq7B,EAAM6+C,eAAiBjlE;AACvB,IAAI2nE,EAAkBJ,EAAgB,CACpCvnE,QACA0nE;AAEEC,IACEpE,EAAWvjE,IACbA,EAAM2oE,iBAER1B,EAAUU,GAEd,CAbkB,CAgBF3nE,EAAOqkE,EAAOV,cAAc3jE,GAE5C,EACIqpE,EAAiB,SAAyBrpE,GAnZ5B,IAAwBrU;AACe,YAAjDA,OADkCA,EAoZtBqU,UAnZ0BrU,EAAEqB,MAAuE,SAAjDrB,eAAsCA,EAAEqB,MAAwE,MAArDrB,eAAsCA,EAAE63E,eAmZ3II,EAAeS,EAAOE,kBAAmBvkE,KACnEA,EAAM2oE,iBACNvE,EAAKoE,aAET,EACIc,EAAa,SAAqB39E,GACpC,IAAI0B,EAASw2E,EAAgBl4E;AACzB25E,EAAmBj4E,EAAQ1B,IAAM,GAGjCi4E,EAAeS,EAAOkE,wBAAyB58E,IAG/Ci4E,EAAeS,EAAOqE,kBAAmB/8E,KAG7CA,EAAEg9E,iBACFh9E,EAAEq9E,2BACJ,EACIO,EAAe,WACjB,GAAKnjD,EAAM0+C,OAyBX,OA7dY,SAAsBZ,EAAWE,GAC7C,GAAIF,EAAUl5E,OAAS,EAAG,CACxB,IAAIw+E,EAAatF,EAAUA,EAAUl5E,OAAS;AAC1Cw+E,IAAepF,GACjBoF,EAAWC,mBAEf,CACA,IAAIC,EAAYxF,EAAUj4E,QAAQm4E,IACf,IAAfsF,GAGFxF,EAAU9kE,OAAOsqE,EAAW,GAF5BxF,EAAUz3E,KAAK23E,EAKnB,CAdc,CAuckBF,EAAWE,GACzCh+C,EAAM4+C,uBAAyBX,EAAOG,kBAAoBp1E,cACxD63E,EAAUhB,IACZ,IAAKgB,EAAUhB,KACfx4D,EAAIjN,iBAAiB,UAAWooE,MAChCn7D,EAAIjN,iBAAiB,YAAa8nE,EAAkB,CAClDrnE,WACAC,aAEFuM,EAAIjN,iBAAiB,aAAc8nE,EAAkB,CACnDrnE,WACAC,aAEFuM,EAAIjN,iBAAiB,QAAS8oE,EAAY,CACxCroE,WACAC,aAEFuM,EAAIjN,iBAAiB,UAAW4oE,EAAa,CAC3CnoE,WACAC,aAEFuM,EAAIjN,iBAAiB,UAAW6oE,GACzBjF,CACT,EACIuF,EAAkB,WACpB,GAAKvjD,EAAM0+C,OASX,OANAr3D,EAAIm8D,oBAAoB,UAAWhB,MACnCn7D,EAAIm8D,oBAAoB,YAAatB,MACrC76D,EAAIm8D,oBAAoB,aAActB,MACtC76D,EAAIm8D,oBAAoB,QAASN,MACjC77D,EAAIm8D,oBAAoB,UAAWR,MACnC37D,EAAIm8D,oBAAoB,UAAWP,GAC5BjF,CACT,EAYIyF,EAAqC,oBAAX17E,QAA0B,qBAAsBA,OAAS,IAAI+oB,2BAX3C2oC,GACnBA,EAAUruD,eAAc+uD,GAEjD,OADmBn0D,MAAMC,KAAKk0D,EAASC,cACnBhvD,eAAc2oB,GAChC,OAAOA,IAASiM,EAAMy+C,uBACxB,GACF,KAEEoC,EAAUhB,IAEd,WAEI6D,EAAsB,WACnBD,IAGLA,EAAiB7rD,aACboI,EAAM0+C,SAAW1+C,EAAMuzB,QACzBvzB,EAAMq+C,WAAW13E,cAAaw4E,GAC5BsE,EAAiBhsD,QAAQ0nD,EAAW,CAClCxiB,WACAD,cAEJ,IAEJ;AAuIA,OAtIAshB,EAAO,CACDU,aACF,OAAO1+C,EAAM0+C,MACf,EACInrB,aACF,OAAOvzB,EAAMuzB,MACf,EACAowB,SAAU,SAAkB9F,GAC1B,GAAI79C,EAAM0+C,OACR,OAAOr5E;AAET,IAAIu+E,EAAa9E,EAAUjB,EAAiB,cACxCgG,EAAiB/E,EAAUjB,EAAiB,kBAC5CiG,EAAoBhF,EAAUjB,EAAiB;AAC9CiG,GACH5D,IAEFlgD,EAAM0+C,UACN1+C,EAAMuzB,UACNvzB,EAAMw+C,4BAA8BoC,EAAkBv5D,GACtDu8D,SAAgDA;AAChD,IAAIG,EAAmB,WACjBD,GACF5D,IAEFiD,IACAO,IACAG,SAAwDA,GAC1D;AACA,OAAIC,GACFA,EAAkB9jD,EAAMq+C,WAAWvvE,UAAUyzB,KAAKwhD,EAAkBA,GAC7D1+E,OAET0+E,IACO1+E,KACT,EACA+8E,WAAY,SAAoB4B,GAC9B,IAAKhkD,EAAM0+C,OACT,OAAOr5E;AAET,IAAIkE,EAAUyzE,EAAe,CAC3BiH,aAAchG,EAAOgG,aACrBC,iBAAkBjG,EAAOiG,iBACzBC,oBAAqBlG,EAAOkG,qBAC3BH;AACH/6E,aAAa+2B,EAAM4+C,wBACnB5+C,EAAM4+C,8BACN2E,IACAvjD,EAAM0+C,UACN1+C,EAAMuzB,UACNmwB,IAxiBY,SAAwB5F,EAAWE,GACjD,IAAIsF,EAAYxF,EAAUj4E,QAAQm4E,IACf,IAAfsF,GACFxF,EAAU9kE,OAAOsqE,EAAW,GAE1BxF,EAAUl5E,OAAS,IAAMk5E,EAAUA,EAAUl5E,OAAS,GAAGw/E,qBAC3DtG,EAAUA,EAAUl5E,OAAS,GAAGy+E,mBAEpC,CARgB,CAyiBoBvF,EAAWE;AAC3C,IAAIiG,EAAenF,EAAUv1E,EAAS,gBAClC26E,EAAmBpF,EAAUv1E,EAAS,oBACtC46E,EAAsBrF,EAAUv1E,EAAS,uBACzC84E,EAAcvD,EAAUv1E,EAAS,cAAe;AACpD06E,SAAoDA;AACpD,IAAII,EAAqB,WACvBr7E,cACMq5E,GACFxB,EAAUI,EAAmBjhD,EAAMw+C,8BAErC0F,SAA4DA,GAC9D,GACF;AACA,OAAI7B,GAAe8B,GACjBA,EAAoBlD,EAAmBjhD,EAAMw+C,8BAA8Bj8C,KAAK8hD,EAAoBA,GAC7Fh/E,OAETg/E,IACOh/E,KACT,EACAi/E,MAAO,SAAeC,GACpB,OAAKvkD,EAAM0+C,QAGX1+C,EAAM2+C,kBACCt5E,KAAKg+E,mBAAsBkB,IAHzBl/E,IAIX,EACAm/E,QAAS,SAAiBC,GACxB,OAAKzkD,EAAM0+C,QAGX1+C,EAAM2+C,kBACFb,EAAUA,EAAUl5E,OAAS,KAAOS,KAC/BA,KAEFA,KAAKg+E,mBAAuBoB,IAN1Bp/E,IAOX,EACAq/E,wBAAyB,SAAiCC,GACxD,IAAIC,EAAkB,GAAG91E,OAAO61E,GAAmB10E,OAAOuS;AAQ1D,OAPAwd,EAAMq+C,WAAauG,EAAgBj+E,cAAau/B,GAC9C,MAA0B,iBAAZA,EAAuB7e,EAAI6N,cAAcgR,GAAWA,CACpE,IACIlG,EAAM0+C,QACRwB,IAEFwD,IACOr+E,IACT,GAEFvB,OAAOo5E,iBAAiBc,EAAM,CAC5BoG,kBAAmB,CACjBh6E,MAAO,WACL,OAAO41B,EAAM2+C,cACf,GAEF0E,gBAAiB,CACfj5E,MAAO,SAAempD,EAAQhqD,GAC5B,GAAIy2B,EAAMuzB,SAAWA,EACnB,OAAOluD;AAGT,GADA26B,EAAMuzB,OAASA,EACXA,EAAQ,CACV,IAAIsxB,EAAU/F,EAAUv1E,EAAS,WAC7Bu7E,EAAchG,EAAUv1E,EAAS;AACrCs7E,SAA0CA,IAC1CtB,IACAG,IACAoB,SAAkDA,GACpD,KAAO,CACL,IAAIC,EAAYjG,EAAUv1E,EAAS,aAC/By7E,EAAgBlG,EAAUv1E,EAAS;AACvCw7E,SAA8CA,IAC9C7E,IACAiD,IACAO,IACAsB,SAAsDA,GACxD,CACA,OAAO3/E,IACT,KAGJ24E,EAAK0G,wBAAwB/L,GACtBqF,CACT,CAWWiH,CAAgB5yB,EAAIvuD,OAAOkD,OAAOlD,OAAOkD,OAAO,CAAEs7E,qBAAyBtgE,kBAAUm8D,sBAA4B50E,GAAU,CAAEu2E,gBAAiBh8E,OAAOkD,OAAO,CAAEmyE,kBAAuB5vE,eAAkDA,EAAQu2E,iBAAkBhC,eAAc6F,SAAS9F,EAGjS,CAFE,MAAOt4E,GACP3B,QAAQH,KAAK8B,EACf,GAIKmyE,CACR,CA0KA,IAIIwN,EAwDAC,EA5DAC,EAAyB,CAAC,EAE1BC,EAAe,CAAC;AAIpB,SAASC,IACR,OAAIJ,IACJA,EAA0B,EA6C1BG,EAAaE,4BAJuBA,CAACC,EAASC,KAA+B,IAA7BC,SAAEA,EAAQC,UAAEA,GAAWF;AACrED,EAAUI,aAAa,gBAAiBF,GACxCF,EAAUI,aAAa,gBAAiBD,IAG1CN,EAAaQ,yBApBqBL,IAChC,IAAIz6E;AACJ,MAAM+6E,EAAeC,GAAkB,OAATA,GAAiC,KAAhBA,EAAKh9C;AACpD,IAAIi9C;AACJ,MAAMC,EAAiBT,EAAU19C,aAAa;AAC9C,GAAIg+C,EAAYG,GAAiB,CAC/B,MAAMC,EAAoE,QAAlDn7E,EAAKiX,SAAS8oB,eAAem7C,cAA6Bl7E,SAAyBA,EAAG+9B;AAC9Gk9C,EAAmBA,GAAoBE,CACzC,CACA,MAAMC,EAAYX,EAAU19C,aAAa;AAIzC,OAHIg+C,EAAYK,KACdH,EAAmBA,GAAoBG,GAElCH,GAAoBR,EAAU19C,aAAa,eAAW,EAQ/Du9C,EAAae,sBA9BkBC,IAC7B,IAAIt7E;AACJ,MAAMu7E,EAEJD,EAAQnxD,cAAc,uBACiB,QAArCnqB,EAAKs7E,EAAQrO,cAAc1vD,gBAAkBvd,SAAyBA,EAAGmqB,cAAc;AAE3F,OAAQoxD,eAA4DA,EAAaC,YAAcF,EAAQv+C,aAAa,eAAW,EAwBjIu9C,EAAamB,sBAvCiBA,CAACn0B,EAAIo0B,KACjC,MAAMhD,EAAmB,IAAI3yD,uBAC3B,MAAM41D,EAViBr0B,IAClBA,EAAGs0B,oBAAoB12E,QAAQ81E,GAASA,EAAKj/E,WAAW,WAAU43D,SAAQyd,EAAK4J,KACpF,MAAM37E,EAAQioD,EAAGvqB,aAAai+C;AAG9B,OAFc,OAAV37E,IACF+xE,EAAI4J,GAAQ37E,GACP+xE,CAAG,GACT,CAAC,GANqB9pB,CAUkBA;AACzC,OAAOo0B,EAAmBC,EAAe;AAG3C,OADAjD,EAAiBhsD,QAAQ46B,EAAI,CAAEG,gBACxBixB,IAhB2B4B,CAmDrC,CA+JA,IAIIuB,EAeAC,EAnBAC,EAAiC,CAAC,EAElCC,EAAmB,CAAC;AAIxB,SAASC,IACR,GAAIJ,EAA6B,OAAOG;AACxCH,EAA8B;AAC9B,MAAM7tE,EAAQu2D,EAAcC,uBACtB0X,EAA4BnjF,OAAOojF,OAAO,CAC9CnuE,EAAM02D,oBAAoB,iBAC1B12D,EAAM02D,oBAAoB,eAC1B12D,EAAM02D,oBAAoB;AAG5B,OADAsX,EAAiBE,0BAA4BA,EACtCF,CACR,CA8GA,IAIII,EAJAC,EAA8B,CAAC,EAE/BC,EAAc,CAAC;AAInB,SAASC,IACR,OAAIH,IACJA,EAAyB,EAOzBE,EAAYE,2BANZ,WACE,OAAO,IAAIC,SAASC,IAClB,IAAI18E,GACqF,QAAvFA,EAAgB,OAAXhD,iBAAmBA,cAA6BA,OAAO+xD,iCAAmC/uD,SAAyBA,EAAGzD,KAAKS,YAAc0/E,QAAeA,GAAS,GAE5K,GAPmCJ,CAUpC,CAEA,IAIIK,GAJAC,GAAmB,CAAC,EAEpBC,GAAmB,CAAC;AAIxB,SAASC,KACR,GAAIH,GAA6B,OAAOE;AACxCF,GAA8B;AAE9B,MAAMI,EADqD,iBAAnC3X,EAAiBnB,gBAA8BmB,EAAiBnB,gBAAkBmB,EAAiBnB,eAAelrE,SAAWA,QAAUqsE,EAAiBnB;AAEhL,IAAI+Y,EAA0B,iBAARjgF,MAAoBA,MAAQA,KAAKhE,SAAWA,QAAUgE;AAE5E,MAAMkgF,EADKF,GAAgBC,GAAYE,SAAS,cAATA,GAGjCC,EADOF,EAAOtL;AAEpB,IAAIyL,EAAgBrkF,OAAOsD,UACvBC,EAAiB8gF,EAAc9gF,eAC/B+gF,EAAyBD,EAAcp5E,SACvCs5E,EAAmBH,EAAWA,EAASI,mBAmBvCC,EADczkF,OAAOsD,UACc2H,SAKnCy5E,EAAiBN,EAAWA,EAASI;AAoBzC,OANAV,GAAiBlL,OAASwL,EAC1BN,GAAiBa,WAdjB,SAAoBr+E,GAClB,OAAa,MAATA,WACKA,EAJmC,qBAAhC,gBAMLo+E,GAAkBA,KAAkB1kF,OAAOsG,GA5BpD,SAAmBA,GACjB,IAAIs+E,EAAQrhF,EAAeC,KAAK8C,EAAOi+E,GAAmBl+D,EAAM/f,EAAMi+E;AACtE,IACEj+E,EAAMi+E;AACN,IAAIM,IAEN,CADE,MAAOpjF,GACT,CACA,IAAIqR,EAASwxE,EAAuB9gF,KAAK8C;AAQzC,OAPIu+E,IACED,EACFt+E,EAAMi+E,GAAoBl+D,SAEnB/f,EAAMi+E,IAGVzxE,CACT,CAhBA,CA4BuExM,GATvE,SAAwBA,GACtB,OAAOm+E,EAAqBjhF,KAAK8C,EACnC,CAFA,CAS+FA,EAC/F,EAUAw9E,GAAiBgB,WAAad,EAC9BF,GAAiBiB,SAPjB,SAAkBz+E,GAChB,IAAIqN,SAAcrN;AAClB,OAAgB,MAATA,IAA0B,UAARqN,GAA4B,YAARA,EAC/C,EAKAmwE,GAAiBkB,aAXjB,SAAsB1+E,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,EAUAw9E,GAAiBmB,KAAOf,EACjBJ,EACR,CAEA,IAEIoB,GAcAC,GAqJAC,GArKAC,GAAmB,CAAC;AAIxB,SAASC,KACR,GAAIJ,GAA6B,OAAOG;AACxCH,GAA8B;AAC9B,MAAMH,EAAWhB;AAMjB,OADAsB,GAAiBE,SAHjB,SAAkBj/E,GAChB,MAAuB,iBAATA,GAAqBy+E,EAASC,aAAa1+E,IAF3C,mBAEqDy+E,EAASJ,WAAWr+E,EACzF,EAEO++E,EACR,CAIA,SAASG,KACR,GAAIL,GAA6B,OAAOtB;AACxCsB,GAA8B;AAC9B,MAAMJ,EAAWhB,KACXwB,EAAWD;AACjB,IAAIG,EAAe,KAOfC,EAAc,OAKdC,EAAa,qBACbC,EAAa,aACbC,EAAY,cACZC,EAAeppE;AACnB,SAASqpE,EAASz/E,GAChB,GAAoB,iBAATA,EACT,OAAOA;AAET,GAAIi/E,EAASA,SAASj/E,GACpB,OAVM0/E;AAYR,GAAIjB,EAASA,SAASz+E,GAAQ,CAC5B,IAAI8F,EAAgC,mBAAjB9F,EAAM2/E,QAAwB3/E,EAAM2/E,UAAY3/E;AACnEA,EAAQy+E,EAASA,SAAS34E,GAASA,EAAQ,GAAKA,CAClD,CACA,GAAoB,iBAAT9F,EACT,OAAiB,IAAVA,EAAcA,GAASA;AApBlC,IAAkB4/E;AAsBhB5/E,GAtBgB4/E,EAsBC5/E,GArBD4/E,EAAOjjF,MAAM,EAR/B,SAAyBijF,GAEvB,IADA,IAAIjxE,EAAQixE,EAAOplF,OACZmU,KAAWwwE,EAAanhF,KAAK4hF,EAAOC,OAAOlxE,MAElD,OAAOA,CACT,CALA,CAQkDixE,GAAU,GAAGvpE,QAAQ+oE,EAAa,IAAMQ;AAsBxF,IAAIE,EAAWR,EAAWthF,KAAKgC;AAC/B,OAAO8/E,GAAYP,EAAUvhF,KAAKgC,GAASw/E,EAAax/E,EAAMrD,MAAM,GAAImjF,EAAW,EAAI,GAAKT,EAAWrhF,KAAKgC,GArBpG0/E,KAqBoH1/E,CAC9H,CAIA,MAAM+/E,EAHI,WACR,OAAOtB,EAASE,KAAKp8E,KAAK6G,KAC5B;AAEA,IACI42E,EAAY/3E,KAAKipC,IAAK+uC,EAAYh4E,KAAKsqC;AAoG3C,OAFAgrC,GAAiBt+E,SAfjB,SAAkBwM,EAAMvM,EAAMC,GAC5B,IAAII,KAAgBE;AACpB,GAAmB,mBAARgM,EACT,MAAM,IAAI8/D,UAJQ;AAUpB,OAJIkT,EAASA,SAASt/E,KACpBI,EAAU,YAAaJ,IAAYA,EAAQI,QAAUA,EACrDE,EAAW,aAAcN,IAAYA,EAAQM,SAAWA,GAzF5D,SAAkBgM,EAAMvM,EAAMC,GAC5B,IAAI4tE,EAAUmT,EAAUC,EAAS3zE,EAAQ4zE,EAASC,EAAcC,EAAiB,EAAG/gF,KAAiBghF,KAAgB9gF;AACrH,GAAmB,mBAARgM,EACT,MAAM,IAAI8/D,UALU;AActB,SAASiV,EAAW1xC,GAClB,IAAIz0C,EAAO0yE,EAAUxH,EAAU2a;AAI/B,OAHAnT,EAAWmT,SACXI,EAAiBxxC,EACjBtiC,EAASf,EAAKhR,MAAM8qE,EAASlrE,EAE/B,CAUA,SAASomF,EAAa3xC,GACpB,IAAI4xC,EAAoB5xC,EAAOuxC;AAC/B,gBAAOA,GAA2BK,GAAqBxhF,GAAQwhF,EAAoB,GAAKH,GADrBzxC,EAAOwxC,GAC+CH,CAC3H,CACA,SAASQ,IACP,IAAI7xC,EAAOixC;AACX,GAAIU,EAAa3xC,GACf,OAAO8xC,EAAa9xC;AAEtBsxC,EAAU1hF,WAAWiiF,EAbvB,SAAuB7xC,GACrB,IAA0F+xC,EAAc3hF,GAAhF4vC,EAAOuxC;AAC/B,OAAOE,EAASN,EAAUY,EAAaV,GAD4BrxC,EAAOwxC,IACFO,CAC1E,CAHA,CAamD/xC,GACnD,CACA,SAAS8xC,EAAa9xC,GAEpB,OADAsxC,SACI3gF,GAAYstE,EACPyT,EAAW1xC,IAEpBi+B,EAAWmT,SACJ1zE,EACT,CAWA,SAASs0E,IACP,IAAIhyC,EAAOixC,IAASgB,EAAaN,EAAa3xC;AAI9C,GAHAi+B,EAAWxyE,UACX2lF,EAAWjlF,KACXolF,EAAevxC,EACXiyC,EAAY,CACd,YAAIX,EACF,OA7CN,SAAqBtxC,GAGnB,OAFAwxC,EAAiBxxC,EACjBsxC,EAAU1hF,WAAWiiF,EAAczhF,GAC5BK,EAAUihF,EAAW1xC,GAAQtiC,CACtC,CAJA,CA6CyB6zE;AAErB,GAAIE,EAGF,OAFA1hF,aAAauhF,GACbA,EAAU1hF,WAAWiiF,EAAczhF,GAC5BshF,EAAWH,EAEtB,CAIA,gBAHID,IACFA,EAAU1hF,WAAWiiF,EAAczhF,IAE9BsN,CACT,CAGA,OA1EAtN,EAAOugF,EAASvgF,IAAS,EACrBu/E,EAASA,SAASt/E,KACpBI,IAAYJ,EAAQI,QAEpB4gF,GADAI,EAAS,YAAaphF,GACH6gF,EAAUP,EAAStgF,EAAQghF,UAAY,EAAGjhF,GAAQihF,EACrE1gF,EAAW,aAAcN,IAAYA,EAAQM,SAAWA,GAmE1DqhF,EAAUjhF,OA9BV,oBACMugF,GACFvhF,aAAauhF,GAEfE,EAAiB,EACjBvT,EAAWsT,EAAeH,EAAWE,QACvC,EAyBAU,EAAUpjC,MAxBV,WACE,gBAAO0iC,EAAqB5zE,EAASo0E,EAAab,IACpD,EAuBOe,CACT,CAhFA,CA2FkBr1E,EAAMvM,EAAM,CAC1BK,QAAWA,EACX4gF,QAAWjhF,EACXO,SAAYA,GAEhB,EAEA89E,GAAiBkC,SAAWA,EACrBlC,EACR,CA+JA,IAEIyD,GA+IAC,GA8CAC,GA+FAC,GAgPAC,GAkMAC,GAhtBAC,GAA2B,CAAC,EA+I5BC,GAA+B,CAAC,EA8ChCC,GAA8B,CAAC,EA+F/BC,GAA4B,CAAC,EA8O7BC,GAA8B,CAAC,EAE/BC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIR,GAA0B,OAAOO;AACrCP,GAA2B;AAC3B,MAAM7uC,IAAEA,EAAGrB,IAAEA,EAAG5uB,MAAEA,EAAKna,MAAEA,GAAUF;AACnC,SAAS45E,EAASC,EAAMC,EAAMC,GAC5B,IAAI3xD,EAAIyxD,EACJjnD,EAAIknD,EACJpsC,EAAIqsC;AACR3xD,EAAIA,EAAI,IAAM,EACdwK,GAAK,IACL8a,GAAK;AACL,MAAMz5C,EAAIomB,EAAM+N,GACV5qB,EAAI4qB,EAAIn0B,EACRs5C,EAAIG,GAAK,EAAI9a,GACb8pC,EAAIhvB,GAAK,EAAIlwC,EAAIo1B,GACjB3lB,EAAIygC,GAAK,GAAK,EAAIlwC,GAAKo1B,GACvBxY,EAAMnmB,EAAI;AAIhB,MAAO,CAAK,IAHF,CAACy5C,EAAGgvB,EAAGnvB,EAAGA,EAAGtgC,EAAGygC,GAAGtzB,GAGR,IAFX,CAACnN,EAAGygC,EAAGA,EAAGgvB,EAAGnvB,EAAGA,GAAGnzB,GAEC,IADpB,CAACmzB,EAAGA,EAAGtgC,EAAGygC,EAAGA,EAAGgvB,GAAGtiD,GAE/B,CAIA,SAAS4/D,EAASC,EAAMC,EAAMC,GAC5B,IAAI3+E,EAAIy+E,EACJxsC,EAAIysC,EACJh4E,EAAIi4E;AACR3+E,GAAK,IACLiyC,GAAK,IACLvrC,GAAK;AACL,MAAMk4E,EAAS9vC,EAAI9uC,EAAGiyC,EAAGvrC,GACnBm4E,EAASpxC,EAAIztC,EAAGiyC,EAAGvrC,GACnBo4E,EAAQD,EAASD;AACvB,IAAIhyD,EAAGwK;AAEP,GAAc,IAAV0nD,EACFlyD,EAAIwK,EAAI;IACH,CACLA,EAAI0nD,EAAQD;AACZ,MAAME,IAAOF,EAAS7+E,GAAK,EAAI8+E,EAAQ,GAAKA,EACtCE,IAAOH,EAAS5sC,GAAK,EAAI6sC,EAAQ,GAAKA,EACtCG,IAAOJ,EAASn4E,GAAK,EAAIo4E,EAAQ,GAAKA;AACxC9+E,IAAM6+E,EACRjyD,EAAIqyD,EAAKD,EACA/sC,IAAM4sC,EACfjyD,EAAI,EAAI,EAAImyD,EAAKE,EACRv4E,IAAMm4E,IACfjyD,EAAI,EAAI,EAAIoyD,EAAKD,GAEfnyD,EAAI,EACNA,GAAK,EACIA,EAAI,IACbA,GAAK,EAET,CACA,MAAO,CAAK,IAAJA,EAAa,IAAJwK,EAAa,IArBpBynD,EAsBZ,CACA,SAASK,EAAStyD,EAAG0xD,EAAMa,GACzB,IAAI/nD,EAAIknD,EACJ1sC,EAAIutC;AACR/nD,GAAK,IACLwa,GAAK,IACLxa,GAAKwa,EAAI,GAAMA,EAAI,EAAIA;AACvB,MAAMwtC,EAAK,EAAIhoD,GAAKwa,EAAIxa,GAAK,IACvB8a,EAAc,KAATN,EAAIxa;AACf,MAAO,CAACxK,EAAG/W,OAAO81D,MAAMyT,GAAM,EAAIA,EAAIltC,EACxC,CACA,SAASmtC,EAASC,GAChB,MACMC,EADSD,EAAI/9E,MAAM,SACAzI,KAAKo5C,GAAMr8B,OAAOlD,SAASu/B,EAAG;AACvD,OAAOssC,EAASe,EAAU,GAAIA,EAAU,GAAIA,EAAU,GACxD,CACA,SAASC,EAASnnF,GAChB,OAAOA,EAAMS,KAAKo5C,IAChB,MAAMn7B,EAAIlB,OAAOq8B;AACjB,OAAOr8B,OAAO81D,MAAMz5B,UAAcn7B,CAAC,GAEvC,CA8GA,OAJAmnE,GAAcuB,SAnKd,SAAkB7yD,EAAGwK,EAAG8a,GACtB,OAAOksC,EAASxxD,EAAGwK,EAAG8a,GAAGp5C,KAAK4mF,GAAOh7E,EAAMg7E,GAAIx+E,SAAS,IAAIy+E,SAAS,EAAG,MAC1E,EAkKAzB,GAAcE,SAAWA,EACzBF,GAAc0B,cAzCd,SAAuBC,GACrB,GAAIA,EAAM5mF,WAAW,QAAS,CAC5B,GAAwB,oBAAbkb,SAA0B,CACnC,MAAM2rE,EAAc3rE,SAASuF,cAAc;AAC3ComE,EAAY1W,MAAMyW,MAAQA,EAC1B1rE,SAAS6F,KAAKD,YAAY+lE;AAC1B,MAAMC,EAAgB7W,iBAAiB4W,GAAaD;AACpD1rE,SAAS6F,KAAKgmE,YAAYF;AAC1B,MAAMv+E,EAAQw+E,EAAcx+E,MAAM;AAClC,GAAIA,EAKF,OADwB,IAHdsU,OAAOlD,SAASpR,EAAM,GAAI,IAGF,IAFxBsU,OAAOlD,SAASpR,EAAM,GAAI,IAEQ,IADlCsU,OAAOlD,SAASpR,EAAM,GAAI,KACe,IAC/B,MAExB,CACA,QACF,CACA,GAAIs+E,EAAM5mF,WAAW,KAAM,CACzB,MAAMqmF,EAAMO,EAAM3mF,MAAM;AAKxB,OADwB,IAHd2c,OAAOlD,SAAS2sE,EAAIpmF,MAAM,EAAG,GAAI,IAGT,IAFxB2c,OAAOlD,SAAS2sE,EAAIpmF,MAAM,EAAG,GAAI,IAEC,IADlC2c,OAAOlD,SAAS2sE,EAAIpmF,MAAM,EAAG,GAAI,KACQ,IAC/B,MACtB,CACA,GAAI2mF,EAAM5mF,WAAW,OAAQ,CAC3B,MAAMsI,EAAQs+E,EAAMt+E,MAAM;AAC1B,GAAIA,EAKF,OADwB,IAHdsU,OAAOlD,SAASpR,EAAM,GAAI,IAGF,IAFxBsU,OAAOlD,SAASpR,EAAM,GAAI,IAEQ,IADlCsU,OAAOlD,SAASpR,EAAM,GAAI,KACe,IAC/B,MAExB,CACA,QACF,EAIA28E,GAAc+B,YA5Gd,SAAqBthE,GACnB,MAAMuhE,EAAuB,CAC3BC,KAAM,2EACNC,KAAM,+DACNC,KAAM,+DACNC,KAAM;AAER,IAAK,MAAOC,EAAWC,KAAUvqF,OAAOkzB,QAAQ+2D,GAAuB,CACrE,MAAM3+E,EAAQi/E,EAAM94E,KAAKiX;AACzB,GAAKpd,EAGL,OAAQg/E,GACN,IAAK,OAAQ,CACX,MAAME,EAAkBjB,EAASj+E;AACjC,IAAIvB,EAAIygF,EAAgB,GACpBxuC,EAAIwuC,EAAgB,GACpB/5E,EAAI+5E,EAAgB,GACpBh6E,EAAIg6E,EAAgB;AAKxB,GAJAzgF,EAAiB,MAAbuB,EAAM,GAAavB,EAAI,IAAM,IAAMA,EACvCiyC,EAAiB,MAAb1wC,EAAM,GAAa0wC,EAAI,IAAM,IAAMA,EACvCvrC,EAAiB,MAAbnF,EAAM,GAAamF,EAAI,IAAM,IAAMA,EACvCD,EAAiB,MAAblF,EAAM,GAAakF,EAAI,IAAMA,EAC7BzG,EAAI,KAAOiyC,EAAI,KAAOvrC,EAAI,KAAOD,EAAI,GAAKA,EAAI,EAChD;AAEF,MAAO,CAAEi6E,OAAQ,IAAIlC,EAASx+E,EAAGiyC,EAAGvrC,GAAID,GAAIA,IAAG85E,YACjD,CACA,IAAK,OAAQ,CACX,IAAK,CAAEjB,GAAO/9E;AACK,IAAf+9E,EAAIvoF,QAA+B,IAAfuoF,EAAIvoF,SAC1BuoF,EAAMA,EAAIj4E,MAAM,IAAIvO,KAAKo5C,GAAMA,EAAIA,IAAG3yC,KAAK;AAE7C,MAAMohF,EAAMrB,EAAIpmF,MAAM,EAAG;AACzB,IAAIuN,EAAI64E,EAAIpmF,MAAM;AAElB,OADAuN,EAAIA,EAAIoP,OAAOlD,SAASlM,EAAG,IAAM,WAC1B,CAAEi6E,OAAQ,IAAIrB,EAASsB,GAAMl6E,GAAIA,IAAG85E,YAC7C,CACA,IAAK,OAAQ,CACX,MAAME,EAAkBjB,EAASj+E,GAC3BqrB,EAAI6zD,EAAgB,GACpBrpD,EAAIqpD,EAAgB,GACpB7uC,EAAI6uC,EAAgB;AAC1B,IAAIh6E,EAAIg6E,EAAgB;AAExB,GADAh6E,EAAiB,MAAblF,EAAM,GAAakF,EAAI,IAAMA,EAC7BmmB,EAAI,KAAOwK,EAAI,KAAOwa,EAAI,KAAOnrC,EAAI,GAAKA,EAAI,EAChD;AAEF,MAAO,CAAEi6E,OAAQ,IAAIxB,EAAStyD,EAAGwK,EAAGwa,GAAInrC,GAAIA,IAAG85E,YACjD,CACA,IAAK,OAAQ,CACX,MAAME,EAAkBjB,EAASj+E,GAC3BqrB,EAAI6zD,EAAgB,GACpBrpD,EAAIqpD,EAAgB,GACpBvuC,EAAIuuC,EAAgB;AAC1B,IAAIh6E,EAAIg6E,EAAgB;AAExB,GADAh6E,EAAiB,MAAblF,EAAM,GAAakF,EAAI,IAAMA,EAC7BmmB,EAAI,KAAOwK,EAAI,KAAO8a,EAAI,KAAOzrC,EAAI,GAAKA,EAAI,EAChD;AAEF,MAAO,CAAEi6E,OAAQ,CAAC9zD,EAAGwK,EAAG8a,EAAGzrC,GAAIA,IAAG85E,YACpC,EAEJ,CACA,MAAO,CAAEG,OAAQ,KAAMH,UAAW,KACpC,EA4COrC,EACR,CA0HA,IAII0C,GAkBAC,GAtBAC,GAAsC,CAAC,EAEvCC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIJ,GAA0B,OAAOG;AAErC,SAAS16B,EAAat6C,GACpB,OAAO4I,QAAQ5I,eAA8CA,EAAMu6C,eACrE,CAQA,OAXAs6B,GAA2B,EAS3BG,GAAcE,mBALd,SAA4BvpF,GAG1B,MAAO,CAAEwqC,EAFCmkB,EAAa3uD,GAAKA,EAAE4uD,eAAe,GAAGnkB,QAAUzqC,EAAEyqC,QAEhDE,EADFgkB,EAAa3uD,GAAKA,EAAE4uD,eAAe,GAAGhkB,QAAU5qC,EAAE4qC,QAE9D,EAEAy+C,GAAc16B,aAAeA,EACtB06B,EACR,CAmOA,IAEIG,GA+DAC,GA6FAC,GAwBAC,GAoLAC,GA4IAC,GAtfAC,GAAmC,CAAC,EA+DpCC,GAAkC,CAAC,EA6FnCC,GAA8B,CAAC,EAwB/BC,GAA0B,CAAC,EAoL3BC,GAAiC,CAAC,EA0IlCC,GAA6B,CAAC,EAE9BC,GAAe,CAAC;AAIpB,SAASC,KACR,OAAIR,KACJA,GAA0B,GACfngB,EAcR0gB,IAbME,wBACEA,EAWP5gB,EAAQ4gB,kBAAoB5gB,EAAQ4gB,gBAAkB,CAAC,IAVjCC,MAAI,QAC3BD,EAA2BE,UAAI,YAC/BF,EAA2BG,UAAI,YAC/BH,EAA2BI,UAAI,YAC/BJ,EAA4BK,WAAI,aAChCL,EAA4BM,WAAI,aAChCN,EAA2BO,UAAI,YAC/BP,EAA2BQ,UAAI,YAC/BR,EAA4BS,WAAI,aAChCT,EAAwBU,OAAI,UAdKZ;AAEnC,IAAU1gB,EAEA4gB,CAcZ,CAEA,IAEIW,GAFAC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIF,GAA0B,OAAOC;AAErC,SAASE,EAAQrjE,GAEf,OAAOqjE,EAAU,mBAAqBjU,QAAU,iBAAmBA,OAAOiD,SAAW,SAASiR,GAC5F,cAAcA,CAChB,EAAI,SAASA,GACX,OAAOA,GAAM,mBAAqBlU,QAAUkU,EAAG//D,cAAgB6rD,QAAUkU,IAAOlU,OAAOt1E,UAAY,gBAAkBwpF,CACvH,GAAWtjE,EACb,CAWA,SAASujE,EAAaC,EAAUrsF,GAC9B,GAAIA,EAAKG,OAASksF,EAChB,MAAM,IAAInb,UAAUmb,EAAW,aAAeA,EAAW,EAAI,IAAM,IAAM,uBAAyBrsF,EAAKG,OAAS,WAEpH,CAvBA4rF,GAA2B;AAuC3B,IAAIO,EAAiB,CAAC;AAStB,OALAN,GAAcE,QAAUA,EACxBF,GAAcO,kBAJd,WACE,OAAOD,CACT,EAGAN,GAAcI,aAAeA,EAC7BJ,GAAcQ,OAtBd,SAAgBC,GACdL,EAAa,EAAGlsF;AAChB,IAAIwsF,EAASrtF,OAAOsD,UAAU2H,SAASzH,KAAK4pF;AAC5C,OAAIA,aAAoBvkF,MAA8B,WAAtBgkF,EAAQO,IAAqC,kBAAXC,EACzD,IAAIxkF,KAAKukF,EAAStkF,WACI,iBAAbskF,GAAoC,oBAAXC,EAClC,IAAIxkF,KAAKukF,IAES,iBAAbA,GAAoC,oBAAXC,GAAoD,oBAAZvtF,UAC3EA,QAAQH,KAAK,sNACbG,QAAQH,UAASgT,OAAQ5B,QAEJ,IAAIlI,KAAKm9E,KAEpC,EASA2G,GAAcW,UAtCd,SAAmBC,GACjB,GAAoB,OAAhBA,QAAwBA,QAAwBA,EAClD,OAAOvH;AAET,IAAIwH,EAAS5tE,OAAO2tE;AACpB,OAAI7X,MAAM8X,GACDA,EAEFA,EAAS,EAAIj/E,KAAKk/E,KAAKD,GAAUj/E,KAAKqa,MAAM4kE,EACrD,EA8BOb,EACR,CAEA,IAEIe,GAqCAC,GAvCAC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIH,GAA0B,OAAOE;AACrCF,GAA2B;AAC3B,MAAMz4E,EAAQ23E;AACd,SAASkB,EAAWC,GAClB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY;AAExB,OADAtwE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CAuBA,OAJAmwE,GAAcK,QAZd,SAAiBF,EAAWG,GAC1Bj5E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBI,EAAgBl5E,EAAMk4E,OAAOe;AACjC,OAAOzwE,EAAK3U,UAAYqlF,EAAcrlF,SACxC,EAQA8kF,GAAcQ,SAPd,SAAkBL,EAAWG,GAC3Bj5E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBI,EAAgBl5E,EAAMk4E,OAAOe;AACjC,OAAOzwE,EAAK3U,UAAYqlF,EAAcrlF,SACxC,EAGA8kF,GAAcS,UApBd,SAAmBC,EAAeC,GAChCt5E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI2tF,EAAqBV,EAAWQ,GAChCG,EAAsBX,EAAWS;AACrC,OAAOC,EAAmB1lF,YAAc2lF,EAAoB3lF,SAC9D,EAgBA8kF,GAAcE,WAAaA,EACpBF,EACR,CAIA,SAASc,KACR,GAAIf,GAAuC,OAAO/B;AAClD+B,GAAwC,EACxC3tF,OAAO2D,eAAeioF,GAA4B,aAAc,CAAEtlF;AAClE,MAAMqoF,EAAUC,KACVC,EAAO/C,KACPgD,EAAUtjB,EAAcC,uBACxBx2D,EAAQ23E,KACRmC,EAAUlB,KACVtc,EAAKN;AAcX,SAAS+d,EAAUjB,EAAWkB,GAC5Bh6E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBmB,EAASj6E,EAAMq4E,UAAU2B;AAC7B,GAAIvZ,MAAMwZ,GACR,OAAuB,IAAIrmF,KAAKm9E;AAElC,IAAKkJ,EACH,OAAOzxE;AAET,IAAI0xE,EAAa1xE,EAAK2xE,UAClBC,EAAoB,IAAIxmF,KAAK4U,EAAK3U;AAGtC,OAFAumF,EAAkBC,SAAS7xE,EAAK8xE,WAAaL,EAAS,EAAG,GAErDC,GADcE,EAAkBD,UAE3BC,GAEP5xE,EAAK+xE,YAAYH,EAAkBI,cAAeJ,EAAkBE,WAAYJ,GACzE1xE,EAEX,CACA,SAASiyE,EAAY3B,EAAWtoF,GAC9B,IAAI4wE,EAAMmF,EAAO8B,EAAOqS,EAAuBC,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIosF,EAAiBh4E,EAAMi4E,oBACvB8C,EAAe/6E,EAAMq4E,UAA+0B,QAAp0BjX,EAA8hB,QAAthBmF,EAAkd,QAAzc8B,EAA6G,QAApGqS,EAAwBlqF,eAAkDA,EAAQuqF,wBAA0BL,EAAmCA,EAAwBlqF,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBG,wBAA0B1S,EAAmBA,EAAQ2P,EAAe+C,wBAA0BxU,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBC,wBAA0B3Z,EAAkBA,EAAO;AACz4B,KAAM2Z,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,IAAIzyE,EAAOxI,EAAMk4E,OAAOY,GACpBoC,EAAM1yE,EAAK2yE,SACXC,GAAQF,EAAMH,EAAe,EAAI,GAAKG,EAAMH;AAGhD,OAFAvyE,EAAK6yE,QAAQ7yE,EAAK2xE,UAAYiB,GAC9B5yE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CAkBA,SAAS8yE,EAAaxC,GACpB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY;AAGxB,OAFAtwE,EAAK6yE,QAAQ,GACb7yE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CACA,SAAS+yE,EAAYzC,GACnB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4vF,EAAYx7E,EAAMk4E,OAAOY,GACzBtwE,EAAuB,IAAI5U,KAAK;AAGpC,OAFA4U,EAAK+xE,YAAYiB,EAAUhB,cAAe,EAAG,GAC7ChyE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CACA,SAASizE,EAAU3C,EAAWtoF,GAC5B,IAAI4wE,EAAMmF,EAAO8B,EAAOqS,EAAuBC,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIosF,EAAiBh4E,EAAMi4E,oBACvB8C,EAAe/6E,EAAMq4E,UAA+0B,QAAp0BjX,EAA8hB,QAAthBmF,EAAkd,QAAzc8B,EAA6G,QAApGqS,EAAwBlqF,eAAkDA,EAAQuqF,wBAA0BL,EAAmCA,EAAwBlqF,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBG,wBAA0B1S,EAAmBA,EAAQ2P,EAAe+C,wBAA0BxU,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBC,wBAA0B3Z,EAAkBA,EAAO;AACz4B,KAAM2Z,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,IAAIzyE,EAAOxI,EAAMk4E,OAAOY,GACpBoC,EAAM1yE,EAAK2yE,SACXC,EAAuC,GAA/BF,EAAMH,GAAgB,EAAI,IAAUG,EAAMH;AAGtD,OAFAvyE,EAAK6yE,QAAQ7yE,EAAK2xE,UAAYiB,GAC9B5yE,EAAKuwE,SAAS,GAAI,GAAI,GAAI,KACnBvwE,CACT,CACA,SAASkzE,EAAe5C,GACtB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpB6C,EAAQnzE,EAAK8xE;AAGjB,OAFA9xE,EAAK+xE,YAAY/xE,EAAKgyE,cAAemB,EAAQ,EAAG,GAChDnzE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CACA,SAASozE,EAAc9C,GACrB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpB+C,EAAOrzE,EAAKgyE;AAGhB,OAFAhyE,EAAK+xE,YAAYsB,EAAO,EAAG,EAAG,GAC9BrzE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,CACT,CA4BA,MAAMszE,EACJhkE,cACExrB,KAAKkc,KAAO,GACZlc,KAAKuvF,KAAO,KACZvvF,KAAKytD,YACLztD,KAAK2oC,UAAY,OACjB3oC,KAAKyvF,SACLzvF,KAAK6qD,WACP,EAEF,MAAM6kC,EAAmB,MACvBlkE,YAAYmkE,GACVvC,EAAQwC,iBAAiB5vF,KAAM2vF,GAC/B3vF,KAAK6vF,uBAAyBzC,EAAQ0C,YAAY9vF,KAAM,yBAA0B,GAClFA,KAAK+vF,2BAA6B3C,EAAQ0C,YAAY9vF,KAAM,6BAA8B,GAC1FA,KAAKgwF,kBAAoB,GACzBhwF,KAAKiwF,cAAgB,SACrBjwF,KAAKkwF,yBACLlwF,KAAKmwF,uBACLnwF,KAAKowF,0BACLpwF,KAAKqwF,wBACLrwF,KAAKswF,wBACLtwF,KAAKuwF,eACLvwF,KAAKwwF,mBAAqB,MAC1BxwF,KAAKywF,iBAAmB,GACxBzwF,KAAK0wF,UAAY,UACjB1wF,KAAKyuF,oBACLzuF,KAAK2wF,sBACL3wF,KAAK0uF,OAASx7E,UAAU09E,UAAY,QACpC5wF,KAAK6wF,qBACL7wF,KAAK8wF,WAAa,GAClB9wF,KAAK+wF,WACL/wF,KAAKgxF,qBACLhxF,KAAKixF,kBACLjxF,KAAKkxF,sBACLlxF,KAAKmxF,kBAAoB,GACzBnxF,KAAKoxF,kBAAoB,GACzBpxF,KAAKqxF,kBACP,CAIAC,YACE,IAAI5rF,EAAI4P;AACR,GAAItV,KAAKswF,kBAAoBtwF,KAAKuwF,YAAa,CAC7C,MAAMgB,EAAsC,QAA7B7rF,EAAK1F,KAAKgtD,GAAG/9B,sBAAwBvpB,SAAyBA,EAAGmqB,cAAc,4BACH,QAAzEva,EAAKi8E,eAA8CA,EAAMtiE,sBAAwB3Z,SAAyBA,EAAG8vB,iBAAiB,eACvIzmC,SAAS6yF,IACZA,EAAI/uD,aAAa,WAAaziC,KAAKswF,kBACrCkB,EAAItoD,OACN,GAEJ,CACA,OAAOi5C,QAAQC,SACjB,CAIAqP,gBACEzxF,KAAKmxF,kBAAoB;AACzB,MAAMO,EAAUvD,EAA4B,IAAI7mF,KAAQ,CAAEmnF,aAAczuF,KAAK2xF;AAC7E,IAAIC;AACJ,IAAK,IAAIt3C,EAAI,EAAGA,EAAI,EAAGA,IACrBs3C,EAAcF,EAAQG,mBAAmB7xF,KAAK0uF,OAAQ,CAAEgD,QAAS,UAC7D1xF,KAAK0uF,OAAOjtF,WAAW,SACzBmwF,EAAcA,EAAYlwF,MAAM,GAAI,IAEtC1B,KAAKmxF,kBAAkBnwF,KAAK4wF,GAC5BF,EAAQ3C,QAAQ2C,EAAQ7D,UAAY,EAExC,CACAiE,oBACE,MACMC,EADO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1DvxF,QAAQR,KAAKyuF;AACnC,OAAqB,IAAdsD,EAAkBA,EAAW/xF,KAAK2xF,yBAC3C,CACAA,0BACE,IAAIjsF,EAAI4P,EAAIoT,EAAIC,EAAIC;AACpB,MAAMopE,EAAO,IAAIC,KAAKC,OAAOlyF,KAAK0uF;AAElC,OADqW,QAAnV9lE,EAAkI,QAA5HtT,EAA0E,QAApE5P,EAAKssF,eAA4CA,EAAKG,oBAAsBzsF,SAAyBA,EAAGqsF,oBAAsBz8E,EAAgBA,EAAuI,QAAjIqT,EAA6E,QAAvED,EAAKspE,eAA4CA,EAAKI,uBAAyB1pE,SAAyBA,EAAGzmB,KAAK+vF,cAAmBrpE,SAAyBA,EAAGopE,oBAAsBnpE,EAAgBA,EAAK,GAChX,CACpB,CAIAypE,2BAA2BC,EAAaC,GACtC,IAAKvyF,KAAKqxF,YACR;AAEF,MAAMmB,EAAmB,IAAIlrF,KAAKtH,KAAKkwF;AACnClwF,KAAKkwF,oBAAsBlwF,KAAKmwF,iBAAmB3C,EAAQX,SAASyF,EAAatyF,KAAKqxF,cAAgB7D,EAAQd,QAAQ4F,EAAaE,KACrID,EAAc5pD,UAAY,gBAEvB6kD,EAAQV,UAAU9sF,KAAKqxF,YAAaiB,MAGpCtyF,KAAKkwF,mBAAqBlwF,KAAKkwF,mBAAqBlwF,KAAKmwF,kBAAoB3C,EAAQd,QAAQ1sF,KAAKqxF,YAAamB,GAClHD,EAAc5pD,UAAY,cAE1B4pD,EAAc5pD,UAAY,aAE9B,CAIA8pD,2BAA2B7D,EAAK8D,EAAcF,EAAkBG,GACzD/D,EAAI1yE,OAGLs2E,GAAoBhF,EAAQV,UAAU4F,EAAcF,KACtD5D,EAAInhC,YACJmhC,EAAIjmD,UAAmC,WAAvB3oC,KAAKiwF,cAA6B,SAAW,eAEpC,UAAvBjwF,KAAKiwF,gBACPjwF,KAAKqyF,2BAA2BK,EAAc9D,GAC1C4D,GAAoBG,GAAkBnF,EAAQd,QAAQgG,EAAcF,IAAqBhF,EAAQX,SAAS6F,EAAcC,KAC1H/D,EAAInhC,YACJmhC,EAAIjmD,UAAY,gBAEdgqD,GAAkBnF,EAAQV,UAAU4F,EAAcC,KACpD/D,EAAInhC,YACJmhC,EAAIjmD,UAAY,eAGtB,CAMAiqD,gBACE,MAAMnD,EAAwB,IAAInoF,KAC5BurF,EAAuB,IAAIvrF,KAAKtH,KAAK6wF,eACrCiC,EAAW,IAAIxrF,KAAKurF,EAAqB3E,cAAe2E,EAAqB7E,WAAY,GACzF+E,EAAiB/yF,KAAK2xF;AACF,IAAtBmB,EAASjE,UAAqC,IAAnBkE,EAC7BD,EAAS/D,QAAQ+D,EAASjF,UAAY,GAEtCiF,EAAS/D,QAAQ+D,EAASjF,WAAaiF,EAASjE,SAAWkE,IAE7D/yF,KAAKgzF,KAAO;AACZ,MAAMR,EAAmBxyF,KAAKkwF,mBAAqB,IAAI5oF,KAAKtH,KAAKkwF,mBAC3DyC,EAAiB3yF,KAAKmwF,iBAAmB,IAAI7oF,KAAKtH,KAAKmwF;AAC7D,IAAK,IAAI71C,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAMs0C,EAAM,IAAIY;AAqBhB,GApBAZ,EAAIW,KAAOuD,EAAS5E,cACpBU,EAAIS,MAAQyD,EAAS9E,WACjB8E,EAAS5E,gBAAkB2E,EAAqB3E,eAAiB4E,EAAS9E,aAAe6E,EAAqB7E,aAChHY,EAAI1yE,KAAO42E,EAASjF,UAAUnkF,YAE5B8jF,EAAQV,UAAUgG,EAAUrD,KAC9Bb,EAAIa,UAENzvF,KAAKyyF,2BAA2B7D,EAAKkE,EAAUN,EAAkBG,GAC7D/D,EAAI1yE,MAAQlc,KAAK2wF,iBACnB/B,EAAI/jC,SAAW7qD,KAAK2wF,eAAemC,IAEd,WAAnB9yF,KAAK0wF,WAA0BlD,EAAQX,SAASiG,EAAUrD,KAAWjC,EAAQV,UAAUgG,EAAUrD,KACnGb,EAAI/jC,aAEiB,SAAnB7qD,KAAK0wF,WAAwBlD,EAAQd,QAAQoG,EAAUrD,KAAWjC,EAAQV,UAAUgG,EAAUrD,KAChGb,EAAI/jC,aAEN7qD,KAAKgzF,KAAKhyF,KAAK4tF,GACfkE,EAAS/D,QAAQ+D,EAASjF,UAAY,GAClCiF,EAASjE,WAAa,EAAIkE,GAAkBD,EAAS9E,aAAe6E,EAAqB7E,WAC3F,KAEJ,CACF,CAIAiF,sBACEjzF,KAAKkwF,kBAAoB,KACzBlwF,KAAKmwF,gBAAkB,IACzB,CAKA+C,cAAcC,GACZ,MAAMN,EAAuB,IAAIvrF,KAAKtH,KAAK6wF;AAC3C7wF,KAAK6wF,cAAgB,IAAIvpF,KAAKurF,EAAqB3E,cAAe2E,EAAqB7E,WAAamF,EAAW,GAAGC,aACpH,CAOAC,iBAAgBC,GAA+B,IAA5BC,QAAQr3E,KAAEA,EAAIgf,MAAEA,IAASo4D;AAC1C,MAAOE,EAAS3/C,GAAQ33B,EAAKrM,MAAM,MAC5B4jF,EAASC,EAAUC,GAAUH,EAAQ3jF,MAAM,KAAKvO,IAAI+c;AAC3Dre,KAAK6wF,cAAgB,IAAIvpF,KAAKmsF,EAASC,EAAW,EAAG,GAAGhqF;AACxD,MAAOkqF,EAAMC,GAA8B,kBAApB7zF,KAAK8wF,WAAiCj9C,EAAKhkC,MAAM,KAAKvO,IAAI+c,QAAU;AAC3Fre,KAAK8zF,YAAY,CACflF,IAAK+E,EACLtE,MAAOqE,EAAW,EAClBnE,KAAMkE,EACNG,OACAC,SACA34D,SAEJ,CAIA64D,WAAUC,GAAqC,IAAlCT,QAAUr3E,KAAM+3E,IAAeD;AACjB,QAArBC,EAAY7hF,KACdpS,KAAKk0F,sBAAsBD,EAAY7hF,KAAM6hF,EAAYrF,KAEzD5uF,KAAK8zF,YAAY,CAAElF,IAAKqF,EAAYrF,KAExC,CAIAuF,UAASC,GAAqC,IAAlCb,QAAUr3E,KAAM+3E,IAAeG;AACzC,MAAMvB,EAAuB,IAAIvrF,KAAKtH,KAAK6wF;AAC3C7wF,KAAKqxF,YAAc,IAAI/pF,KAAKurF,EAAqB3E,cAAe2E,EAAqB7E,WAAYiG,EAAYrF,IAC/G,CAIAyF,gBACEr0F,KAAKqxF,YAAc,IACrB,CAKAiD,cAAcp0F,GACZ,MAAMq0F,EAAar0F,EAAEqzF,OAAOiB;AAC5B,IAAKD,EACH;AAEFv0F,KAAK+vF,2BAA2BxzB,KAAK,CACnCi4B,cAAeD;AAEjB,MAAME,EAAgBz0F,KAAKkwF,kBACrBwE,EAAc10F,KAAKmwF;AACzBnwF,KAAK20F,kBAAkBJ,GACnBA,IAAejH,EAAK9C,gBAAgBU,QACtClrF,KAAK6vF,uBAAuBtzB,KAAK,CAC/Bk4B,gBACAC,cACAE,UAAW50F,KAAKkwF,kBAChB2E,QAAS70F,KAAKmwF,gBACdqE,cAAeD,GAGrB,CAIAO,gBAAeC,GAA2B,IAAxBxB,QAAQxC,QAAEA,IAAWgE;AACrC/0F,KAAK+wF,QAAUA,CACjB,CACA4D,kBAAkBJ,GAChB,MAAM9E,EAAwB,IAAInoF,KAC5BmnF,EAAezuF,KAAK8xF;AAC1B,OAAQyC,GACN,KAAKjH,EAAK9C,gBAAgBC,MACxBzqF,KAAKizF,sBACLjzF,KAAKkwF,kBAAoBT,EAAM2D;AAC/B;AACF,KAAK9F,EAAK9C,gBAAgBE,UACxB1qF,KAAKizF,sBACLjzF,KAAKkwF,mBAvSP/hF,EAAsB,IAAI7G,KAC1BioF,EAAOphF,EAAI+/E,cACXmB,EAAQlhF,EAAI6/E,WACZY,EAAMzgF,EAAI0/E,UACV3xE,EAAuB,IAAI5U,KAAK,GACpC4U,EAAK+xE,YAAYsB,EAAMF,EAAOT,EAAM,GACpC1yE,EAAKuwE,SAAS,EAAG,EAAG,EAAG,GAChBvwE,GAgS2Ck3E;AAC5C;AACF,KAAK9F,EAAK9C,gBAAgBG,UACxB3qF,KAAKkwF,kBAAoB/B,EAAYsB,EAAO,CAAEhB,iBAAgB2E,cACnC,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBhB,EAAUM,EAAO,CAAEhB,iBAAgB2E;AAE5D;AACF,KAAK9F,EAAK9C,gBAAgBI,UAAW,CACnC,MAAMoK,EAlSd,SAAkBxI,EAAWkB,GAG3B,OAFAh6E,EAAM83E,aAAa,EAAGlsF,WA/ExB,SAAkBktF,EAAWkB,GAI3B,OAHAh6E,EAAM83E,aAAa,EAAGlsF,WAlDxB,SAAiBktF,EAAWkB,GAC1Bh6E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBmB,EAASj6E,EAAMq4E,UAAU2B;AAC7B,OAAIvZ,MAAMwZ,GACe,IAAIrmF,KAAKm9E,KAE7BkJ,GAGLzxE,EAAK6yE,QAAQ7yE,EAAK2xE,UAAYF,GACvBzxE,GAHEA,CAIX,CAZA,CAqDiBswE,EADK,EADP94E,EAAMq4E,UAAU2B,GAG/B,CALA,CAiFkBlB,GADH94E,EAAMq4E,UAAU2B,GAE/B,CAJA,CAkSsC+B,EAAO;AACrCzvF,KAAKkwF,kBAAoB/B,EAAY6G,EAAc,CAAEvG,iBAAgB2E,cAC1C,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBhB,EAAU6F,EAAc,CAAEvG,iBAAgB2E;AAEnE,KACF,CACA,KAAK9F,EAAK9C,gBAAgBK,WACxB7qF,KAAKkwF,kBAAoBlB,EAAaS,GAAO2D,cAClB,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBf,EAAeK,GAAO2D;AAE/C;AACF,KAAK9F,EAAK9C,gBAAgBM,WAAY,CACpC,MAAMmK,EArTd,SAAmBzI,EAAWkB,GAG5B,OAFAh6E,EAAM83E,aAAa,EAAGlsF,WAEfmuF,EAAUjB,GADJ94E,EAAMq4E,UAAU2B,GAE/B,CAJA,CAqTwC+B,EAAO;AACvCzvF,KAAKkwF,kBAAoBlB,EAAaiG,GAAe7B,cAC1B,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBf,EAAe6F,GAAe7B;AAEvD,KACF,CACA,KAAK9F,EAAK9C,gBAAgBO,UACxB/qF,KAAKkwF,kBAAoBjB,EAAYQ,GAAO2D,cACjB,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBb,EAAcG,GAAO2D;AAE9C;AACF,KAAK9F,EAAK9C,gBAAgBQ,UAAW,CACnC,MAAMkK,EAzTd,SAAkB1I,EAAWkB,GAG3B,OAFAh6E,EAAM83E,aAAa,EAAGlsF,WA9ExB,SAAkBktF,EAAWkB,GAG3B,OAFAh6E,EAAM83E,aAAa,EAAGlsF,WAEfmuF,EAAUjB,EAAoB,GADxB94E,EAAMq4E,UAAU2B,GAE/B,CAJA,CAgFkBlB,GADH94E,EAAMq4E,UAAU2B,GAE/B,CAJA,CAyTsC+B,EAAO;AACrCzvF,KAAKkwF,kBAAoBjB,EAAYiG,GAAc9B,cACxB,UAAvBpzF,KAAKiwF,gBACPjwF,KAAKmwF,gBAAkBb,EAAc4F,GAAc9B;AAErD,KACF,CACA,KAAK9F,EAAK9C,gBAAgBS,WAAY,CACpC,MAAM2J,EAAY,IAAIttF,KAAKtH,KAAKowF,oBAC1ByE,EAAU,IAAIvtF,KAAKtH,KAAKqwF;AAC9BrwF,KAAKkwF,kBAAoB1C,EAAQjB,WAAWqI,GAAWxB,cACvDpzF,KAAKmwF,gBA5Yb,SAAkB3D,GAChB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY;AAExB,OADAtwE,EAAKuwE,SAAS,GAAI,GAAI,GAAI,KACnBvwE,CACT,CALA,CA4YwC24E,GAASzB;AACzC,KACF,EA1VN,IACMjlF,EACAohF,EACAF,EACAT,EACA1yE;AAuVEq4E,IAAejH,EAAK9C,gBAAgBU,SACtClrF,KAAK6wF,cAAgB7wF,KAAKkwF,kBAE9B,CACA4D,YAAY5vF,GACV,IAAIwB;AACJ,MAAM+uF,EAAgBz0F,KAAKkwF,kBACrBwE,EAAc10F,KAAKmwF,gBACnB0C,EAAuB,IAAIvrF,KAAKtH,KAAK6wF,eACrCsE,EAAwC,QAAxBzvF,EAAKxB,EAAQmrF,iBAAmB3pF,EAAgBA,EAAKmtF,EAAqB7E,WAC1FY,EAAM,IAAItnF,KAAKpD,EAAQqrF,MAAQsD,EAAqB3E,cAAeiH,EAAcjxF,EAAQ0qF,KAAOiE,EAAqBhF,UAAW3pF,EAAQ0vF,MAAQf,EAAqBuC,WAAYlxF,EAAQ2vF,QAAUhB,EAAqBwC,cAAcjC;AACxOpzF,KAAKuwF,cAAgB/C,EAAQV,UAAU,IAAIxlF,KAAKtH,KAAKkwF,mBAAoB,IAAI5oF,KAAKsnF,KACtE5uF,KAAKgtD,GAAG/9B,WAAWY,cAAc09D,EAAQnjB,oBAAoB,4BACrEkrB,mBAEmB,WAAvBt1F,KAAKiwF,eACPjwF,KAAKizF,sBACLjzF,KAAKkwF,kBAAoBtB,GAErB5uF,KAAKkwF,oBAAsBlwF,KAAKmwF,iBAAmBvB,GAAO5uF,KAAKkwF,kBACjElwF,KAAKmwF,gBAAkBvB,EAEnB1qF,EAAQg3B,OACY,UAAlBh3B,EAAQg3B,QACVl7B,KAAKkwF,kBAAoBtB,GACL,QAAlB1qF,EAAQg3B,QACVl7B,KAAKmwF,gBAAkBvB,KAEzB5uF,KAAKizF,sBACLjzF,KAAKkwF,kBAAoBtB,GAI/B5uF,KAAK6vF,uBAAuBtzB,KAAK,CAC/Bk4B,gBACAC,cACAE,UAAW50F,KAAKkwF,kBAChB2E,QAAS70F,KAAKmwF,gBACdqE,cAAelH,EAAK9C,gBAAgBU,QAExC,CAEAqK,cACEv1F,KAAKixF,gBAAkBjxF,KAAKixF,cAC9B,CACAuE,sBAAsBt5E,GACc,iBAA9B,IAAI5U,KAAK4U,GAAMxS,aACjB1J,KAAK6wF,mBAAqCvpF,MAAQ8rF,cAEtD,CACAqC,uBACEz1F,KAAKw1F,sBAAsBx1F,KAAK6wF;AAChC,MACM6E,EADuB,IAAIpuF,KAAKtH,KAAK6wF,eACF3C;AACzCluF,KAAKoxF,kBAAoB,EAAEsE,EAAc,GAAGhsF,WAAYgsF,EAAYhsF,YAAagsF,EAAc,GAAGhsF;AAClG,IAAK,IAAIzI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,MAAM00F,EAAY,IAAIruF,KAAK,KAAMrG,GAAG4wF,mBAAmB7xF,KAAK0uF,OAAQ,CAAEW,MAAO;AAC7ErvF,KAAKgwF,kBAAkBhvF,KAAK20F,EAC9B,CACF,CACAC,wBAAwBzC,GACtBnzF,KAAKoxF,kBAAoBpxF,KAAKoxF,kBAAkB9vF,KAAKiuF,IAC3ClxE,OAAOkxE,GAAQ4D,GAAWzpF,YAEtC,CACAwqF,sBAAsB9hF,EAAMrN,GAC1B,IAAIW;AACJ,IAAImwF;AAIJ,GAHa,SAATzjF,IACFyjF,EAAc,CAAEtG,KAAMxqF,IAEX,UAATqN,EAAkB,CACpB,MACM0jF,EAD4B,IAAIxuF,KAAM,GAAEvC,OACjB8sF,mBAAmB7xF,KAAK0uF,OAAQ,CAAEW,MAAO;AACtEwG,EAAc,CAAExG,MAAOhxE,OAAOy3E,GAAc,GAC5C91F,KAAKu1F,aACP,CACA,MAAM1C,EAAuB,IAAIvrF,KAAKtH,KAAK6wF,eACrCsE,EAAsG,QAAtFzvF,EAAKmwF,eAA0DA,EAAYxG,iBAAmB3pF,EAAgBA,EAAKmtF,EAAqB7E,WACxJY,EAAM,IAAItnF,KAAKuuF,EAAYtG,MAAQsD,EAAqB3E,cAAeiH,EAAc,GAAG/B;AAC9FpzF,KAAK6wF,cAAgBjC,CACvB,CACAmH,uBACE,MAA2B,UAAvB/1F,KAAKiwF,eAA6BjwF,KAAKowF,oBAAsBpwF,KAAKqwF,iBAC7DrwF,KAAKywF,iBAEP,IAAoB,IAAI3vF,IAAI,IAAId,KAAKywF,iBAAiB5gF,MAAM,KAAMy9E,EAAK9C,gBAAgBS,cAAcljF,KAAK,IACnH,CACAiuF,oBACMh2F,KAAKswF,kBACPtwF,KAAK20F,kBAAkB30F,KAAKswF,kBAE9BtwF,KAAKy1F,uBACLz1F,KAAKi2F,gBAAmB,qBAAoBjmB,EAAGA,MACjD,CAIAkmB,sBACEl2F,KAAKw1F,sBAAsBx1F,KAAK6wF,eAChC7wF,KAAKkxF,eAAiB,IAAI5pF,KAAKtH,KAAK6wF,eAAesF,eAAen2F,KAAK0uF,OAAQ,CAAEW,MAAO,QAASE,KAAM,YACvGvvF,KAAKyxF,gBACLzxF,KAAK4yF,eACP,CACAwD,SACE,MAAMC,EAA8B9I,EAAQnjB,oBAAoB,2BAC1DksB,EAA8B/I,EAAQnjB,oBAAoB,2BAC1DmsB,EAAmChJ,EAAQnjB,oBAAoB,iCAC/DosB,EAAsBjJ,EAAQnjB,oBAAoB,iBAClDqsB,EAAoBlJ,EAAQnjB,oBAAoB,eAChDssB,EAAuBnJ,EAAQnjB,oBAAoB;AAKzD,OAAOgjB,EAAQh4D,EAAEg4D,EAAQuJ,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,sBAAwB52F,KAAKuwF,aAAenD,EAAQh4D,EAAE,YAAa,CAAE7zB,IAAK,4CAA8C6rF,EAAQh4D,EAAEihE,EAA6B,CAAE90F,IAAK,2CAA4CmvF,UAAW1wF,KAAK0wF,UAAWD,iBAAkBzwF,KAAK+1F,uBAAwBzF,iBAAkBtwF,KAAKswF,kBAAoBlD,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBC,MAAOoM,KAAMvJ,EAAK9C,gBAAgBC,OAAS,SAAU2C,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBE,UAAWmM,KAAMvJ,EAAK9C,gBAAgBE,WAAa,aAAc0C,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBG,UAAWkM,KAAMvJ,EAAK9C,gBAAgBG,WAAa,aAAcyC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBI,UAAWiM,KAAMvJ,EAAK9C,gBAAgBI,WAAa,aAAcwC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBK,WAAYgM,KAAMvJ,EAAK9C,gBAAgBK,YAAc,cAAeuC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBM,WAAY+L,KAAMvJ,EAAK9C,gBAAgBM,YAAc,cAAesC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBO,UAAW8L,KAAMvJ,EAAK9C,gBAAgBO,WAAa,aAAcqC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBQ,UAAW6L,KAAMvJ,EAAK9C,gBAAgBQ,WAAa,aAAcoC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBS,WAAY4L,KAAMvJ,EAAK9C,gBAAgBS,YAAc,cAAemC,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBU,OAAQ2L,KAAMvJ,EAAK9C,gBAAgBU,QAAU,YAAakC,EAAQh4D,EAAE,WAAY,CAAE7zB,IAAK,4CAA8C6rF,EAAQh4D,EAAE,SAAU,CAAE7zB,IAAK,4CAA8C6rF,EAAQh4D,EAAE,MAAO,CAAE7zB,IAAK,6CAA+CvB,KAAKixF,gBAAkB7D,EAAQh4D,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4Cq1F,MAAO,WAAYzzF,KAAM,QAAS,aAAc,iBAAkB2zF,QAASA,IAAM92F,KAAKkzF,eAAe,IAAM9F,EAAQh4D,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4Cs1F,KAAM,OAAQj4F,KAFx7E,iBAEi/EoB,KAAKgxF,mBAAqB5D,EAAQh4D,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4Cq1F,MAAO,mBAAoB,aAAc,mBAAoBE,QAASA,IAAM92F,KAAKu1F,cAAewB,MAAO/2F,KAAKixF,eAAiB,KAAO,OAAQ+F,KAAM,YAAc5J,EAAQh4D,EAAE,KAAM,CAAE7zB,IAAK,2CAA4CiZ,GAAIxa,KAAKi2F,iBAAmBj2F,KAAKkxF,iBAAkBlxF,KAAKgxF,mBAAqB5D,EAAQh4D,EAAE,KAAM,CAAE7zB,IAAK,2CAA4CiZ,GAAIxa,KAAKi2F,iBAAmBj2F,KAAKkxF,iBAAkBlxF,KAAKixF,gBAAkB7D,EAAQh4D,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4C4B,KAAM,QAAS,aAAc,aAAc2zF,QAASA,IAAM92F,KAAKkzF,cAAc,IAAM9F,EAAQh4D,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4Cs1F,KAAM,OAAQj4F,KADjyG,oBACw1GoB,KAAKixF,gBAAkB7D,EAAQh4D,EACt6G,aACA,CAAE7zB,IAAK,2CAA4C01F,KAAM,OAAQ,kBAAmBj3F,KAAKi2F,iBAEzFj2F,KAAKmxF,kBAAkB7vF,KAAKqiC,GAASypD,EAAQh4D,EAAEkhE,EAA6B,CAAEM,MAAO,iBAAkB/rC,YAAgB+jC,IAAKjrD,MAE5H3jC,KAAKgzF,KAAK1xF,KAAKstF,GAAQxB,EAAQh4D,EAAEkhE,EAA6B,CAAEzrC,SAAU+jC,EAAI/jC,SAAUliB,UAAWimD,EAAIjmD,UAAW8mD,MAAOb,EAAIa,MAAOhiC,SAAUmhC,EAAInhC,SAAUmhC,IAAKA,EAAI1yE,MAAQ,KAAM9J,KAAM,WACxLpS,KAAKixF,gBAAkB7D,EAAQh4D,EAAE,YAAa,CAAE7zB,IAAK,2CAA4C,kBAAmBvB,KAAKi2F,iBAAmB7I,EAAQh4D,EAAE,eAAgB,CAAE7zB,IAAK,4CAA8C6rF,EAAQh4D,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4C4B,KAAM,QAAS6zF,KAAM,WAAY,aAAc,gBAAiBF,QAASA,IAAM92F,KAAK41F,yBAAyB,IAAMxI,EAAQh4D,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4Cs1F,KAAM,OAAQj4F,KAX7c,kBAWogBoB,KAAKoxF,kBAAkB9vF,KAAKiuF,GAASnC,EAAQh4D,EAAEkhE,EAA6B,CAAE1H,IAAKW,EAAMn9E,KAAM,WAAYg7E,EAAQh4D,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4C4B,KAAM,QAAS6zF,KAAM,WAAY,aAAc,YAAaF,QAASA,IAAM92F,KAAK41F,wBAAwB,IAAMxI,EAAQh4D,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4Cs1F,KAAM,OAAQj4F,KAVj5B,oBAUq8BwuF,EAAQh4D,EAAEshE,EAAsB,CAAEn1F,IAAK,2CAA4C4B,KAAM,SAAWiqF,EAAQh4D,EAAE,gBAAiB,CAAE7zB,IAAK,2CAA4C01F,KAAM,QAAUj3F,KAAKgwF,kBAAkB1uF,KAAKq0F,GAAcvI,EAAQh4D,EAAEkhE,EAA6B,CAAE1H,IAAK+G,EAAWvjF,KAAM,cAAepS,KAAK8wF,YAAc1D,EAAQh4D,EAAEmhE,EAAkC,CAAEh1F,IAAK,2CAA4Cq1F,MAAO,wBAAyBM,MAA8B,UAAvBl3F,KAAKiwF,cAA2BU,eAAgB3wF,KAAK2wF,eAAgBT,kBAAmBlwF,KAAKkwF,kBAAmBC,gBAAiBnwF,KAAKmwF,gBAAiBgH,SAA8B,kBAApBn3F,KAAK8wF,WAAgCJ,UAAW1wF,KAAK0wF,WAAatD,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAAci4F,KAAM,cAAuC,UAAvB72F,KAAKiwF,cAA4B,SAAW,GAAI,QAAS7C,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,WAAYi4F,KAAM,YAAc,YAAazJ,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAAci4F,KAAM,cAAuC,UAAvB72F,KAAKiwF,cAA4B,SAAW,GAAI,QAAS7C,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,WAAYi4F,KAAM,YAAc,YAAazJ,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,cAAei4F,KAAM,eAAiB,8BAC91E,CACI7pC,SACF,OAAOogC,EAAQgK,WAAWp3F,KAC5B;AAIF,OAFA0vF,EAAiB9d,MAncW,ihEAoc5ByY,GAA2BgN,mBAAqB3H,EACzCrF,EACR,CAEA,IAEIiN,GAgFAC,GA2rBAC,GA7wBAC,GAAiC,CAAC,EA8ElCC,GAAsC,CAAC,EAEvCC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIL,GAA0B,OAAOI;AACrCJ,GAA2B;AAC3B,MAAM7jF,EAAQ23E;AAoBd,SAASwM,EAAkBrL,GACzB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IACI4c,EAAOxI,EAAMk4E,OAAOY,GACpBoC,EAAM1yE,EAAK47E,YACXhJ,GAAQF,EAHO,EAGc,EAAI,GAAKA,EAHvB;AAMnB,OAFA1yE,EAAK67E,WAAW77E,EAAK87E,aAAelJ,GACpC5yE,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,CACA,SAASg8E,EAAkB1L,GACzB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpB+C,EAAOrzE,EAAKi8E,iBACZC,EAA4C,IAAI9wF,KAAK;AACzD8wF,EAA0BC,eAAe9I,EAAO,EAAG,EAAG,GACtD6I,EAA0BH,YAAY,EAAG,EAAG,EAAG;AAC/C,IAAIK,EAAkBT,EAAkBO,GACpCG,EAA4C,IAAIjxF,KAAK;AACzDixF,EAA0BF,eAAe9I,EAAM,EAAG,GAClDgJ,EAA0BN,YAAY,EAAG,EAAG,EAAG;AAC/C,IAAIO,EAAkBX,EAAkBU;AACxC,OAAIr8E,EAAK3U,WAAa+wF,EAAgB/wF,UAC7BgoF,EAAO,EACLrzE,EAAK3U,WAAaixF,EAAgBjxF,UACpCgoF,EAEAA,EAAO,CAElB,CAiBA,SAASkJ,EAAejM,EAAWtoF,GACjC,IAAI4wE,EAAMmF,EAAO8B,EAAOqS,EAAuBC,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIosF,EAAiBh4E,EAAMi4E,oBACvB8C,EAAe/6E,EAAMq4E,UAA+0B,QAAp0BjX,EAA8hB,QAAthBmF,EAAkd,QAAzc8B,EAA6G,QAApGqS,EAAwBlqF,eAAkDA,EAAQuqF,wBAA0BL,EAAmCA,EAAwBlqF,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBG,wBAA0B1S,EAAmBA,EAAQ2P,EAAe+C,wBAA0BxU,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBC,wBAA0B3Z,EAAkBA,EAAO;AACz4B,KAAM2Z,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,IAAIzyE,EAAOxI,EAAMk4E,OAAOY,GACpBoC,EAAM1yE,EAAK47E,YACXhJ,GAAQF,EAAMH,EAAe,EAAI,GAAKG,EAAMH;AAGhD,OAFAvyE,EAAK67E,WAAW77E,EAAK87E,aAAelJ,GACpC5yE,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,CACA,SAASw8E,EAAelM,EAAWtoF,GACjC,IAAI4wE,EAAMmF,EAAO8B,EAAO4c,EAAuBtK,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpB+C,EAAOrzE,EAAKi8E,iBACZzM,EAAiBh4E,EAAMi4E,oBACvBiN,EAAwBllF,EAAMq4E,UAAm3B,QAAx2BjX,EAAyjB,QAAjjBmF,EAAoe,QAA3d8B,EAAsH,QAA7G4c,EAAwBz0F,eAAkDA,EAAQ00F,iCAAmCD,EAAmCA,EAAwBz0F,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBsK,iCAAmC7c,EAAmBA,EAAQ2P,EAAekN,iCAAmC3e,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBoK,iCAAmC9jB,EAAkBA,EAAO;AACt7B,KAAM8jB,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIjK,WAAW;AAEvB,IAAIkK,EAAsC,IAAIvxF,KAAK;AACnDuxF,EAAoBR,eAAe9I,EAAO,EAAG,EAAGqJ,GAChDC,EAAoBZ,YAAY,EAAG,EAAG,EAAG;AACzC,IAAIK,EAAkBG,EAAeI,EAAqB30F,GACtD40F,EAAsC,IAAIxxF,KAAK;AACnDwxF,EAAoBT,eAAe9I,EAAM,EAAGqJ,GAC5CE,EAAoBb,YAAY,EAAG,EAAG,EAAG;AACzC,IAAIO,EAAkBC,EAAeK,EAAqB50F;AAC1D,OAAIgY,EAAK3U,WAAa+wF,EAAgB/wF,UAC7BgoF,EAAO,EACLrzE,EAAK3U,WAAaixF,EAAgBjxF,UACpCgoF,EAEAA,EAAO,CAElB,CAoBA,IAAIwJ,EAAoB,SAA4BC,EAASC,GAC3D,OAAQD,GACN,IAAK,IACH,OAAOC,EAAY/8E,KAAK,CACtBquB,MAAO;AAEX,IAAK,KACH,OAAO0uD,EAAY/8E,KAAK,CACtBquB,MAAO;AAEX,IAAK,MACH,OAAO0uD,EAAY/8E,KAAK,CACtBquB,MAAO;AAGX,QACE,OAAO0uD,EAAY/8E,KAAK,CACtBquB,MAAO,SAGf,EACI2uD,EAAoB,SAA4BF,EAASC,GAC3D,OAAQD,GACN,IAAK,IACH,OAAOC,EAAYplD,KAAK,CACtBtJ,MAAO;AAEX,IAAK,KACH,OAAO0uD,EAAYplD,KAAK,CACtBtJ,MAAO;AAEX,IAAK,MACH,OAAO0uD,EAAYplD,KAAK,CACtBtJ,MAAO;AAGX,QACE,OAAO0uD,EAAYplD,KAAK,CACtBtJ,MAAO,SAGf;AAsCA,MAAM4uD,EAJe,CACnB5+C,EAAG2+C,EACHE,EAnC0B,SAAgCJ,EAASC,GACnE,IAMII,EANAC,EAAcN,EAAQjvF,MAAM,cAAgB,GAC5CwvF,EAAcD,EAAY,GAC1BE,EAAcF,EAAY;AAC9B,IAAKE,EACH,OAAOT,EAAkBC,EAASC;AAGpC,OAAQM,GACN,IAAK,IACHF,EAAiBJ,EAAYQ,SAAS,CACpClvD,MAAO;AAET;AACF,IAAK,KACH8uD,EAAiBJ,EAAYQ,SAAS,CACpClvD,MAAO;AAET;AACF,IAAK,MACH8uD,EAAiBJ,EAAYQ,SAAS,CACpClvD,MAAO;AAET;AAEF,QACE8uD,EAAiBJ,EAAYQ,SAAS,CACpClvD,MAAO,SAIb,OAAO8uD,EAAej+E,QAAQ,WAAY29E,EAAkBQ,EAAaN,IAAc79E,QAAQ,WAAY89E,EAAkBM,EAAaP,GAC5I;AAMA,IAAIS,EAA2B,CAAC,IAAK,MACjCC,EAA0B,CAAC,KAAM,QAkBjCC,EAAuB,CACzBC,iBAAkB,CAChBC,IAAK,qBACLjvF,MAAO,+BAETkvF,SAAU,CACRD,IAAK,WACLjvF,MAAO,qBAETmvF,YAAa,gBACbC,iBAAkB,CAChBH,IAAK,qBACLjvF,MAAO,+BAETqvF,SAAU,CACRJ,IAAK,WACLjvF,MAAO,qBAETsvF,YAAa,CACXL,IAAK,eACLjvF,MAAO,yBAETuvF,OAAQ,CACNN,IAAK,SACLjvF,MAAO,mBAETwvF,MAAO,CACLP,IAAK,QACLjvF,MAAO,kBAETyvF,YAAa,CACXR,IAAK,eACLjvF,MAAO,yBAET0vF,OAAQ,CACNT,IAAK,SACLjvF,MAAO,mBAET2vF,aAAc,CACZV,IAAK,gBACLjvF,MAAO,0BAET4vF,QAAS,CACPX,IAAK,UACLjvF,MAAO,oBAET6vF,YAAa,CACXZ,IAAK,eACLjvF,MAAO,yBAET8vF,OAAQ,CACNb,IAAK,SACLjvF,MAAO,mBAET+vF,WAAY,CACVd,IAAK,cACLjvF,MAAO,wBAETgwF,aAAc,CACZf,IAAK,gBACLjvF,MAAO;AAuBX,SAASiwF,EAAkB17F,GACzB,OAAO,WACL,IAAI8E,EAAU5E,UAAUC,OAAS,YAAKD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAC5EirC,EAAQrmC,EAAQqmC,MAAQ36B,OAAO1L,EAAQqmC,OAASnrC,EAAK27F;AAEzD,OADa37F,EAAK47F,QAAQzwD,IAAUnrC,EAAK47F,QAAQ57F,EAAK27F,aAExD,CACF,CAiCA,MAAME,EAdW,CACf/+E,KAAM4+E,EAAkB,CACtBE,QApBc,CAChBE,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAiBLN,aAAc,SAEhBlnD,KAAMinD,EAAkB,CACtBE,QAlBc,CAChBE,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAeLN,aAAc,SAEhBtB,SAAUqB,EAAkB,CAC1BE,QAhBkB,CACpBE,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAaLN,aAAc;AAIlB,IAAIO,EAAuB,CACzBC,SAAU,qBACVC,UAAW,mBACX/L,MAAO,eACPgM,SAAU,kBACVC,SAAU,cACV7wF,MAAO;AAMT,SAAS8wF,EAAgBv8F,GACvB,OAAO,SAASw8F,EAAY13F,GAC1B,IACI23F;AACJ,GAAgB,gBAFF33F,SAA0CA,EAAQjE,QAAU2P,OAAO1L,EAAQjE,SAAW,eAEpEb,EAAK08F,iBAAkB,CACrD,IAAIf,EAAe37F,EAAK28F,wBAA0B38F,EAAK27F,aACnDxwD,EAAQrmC,SAA0CA,EAAQqmC,MAAQ36B,OAAO1L,EAAQqmC,OAASwwD;AAC9Fc,EAAcz8F,EAAK08F,iBAAiBvxD,IAAUnrC,EAAK08F,iBAAiBf,EACtE,KAAO,CACL,IAAIiB,EAAgB58F,EAAK27F,aACrBkB,EAAS/3F,SAA0CA,EAAQqmC,MAAQ36B,OAAO1L,EAAQqmC,OAASnrC,EAAK27F;AACpGc,EAAcz8F,EAAK8pF,OAAO+S,IAAW78F,EAAK8pF,OAAO8S,EACnD,CAEA,OAAOH,EADMz8F,EAAK88F,iBAAmB98F,EAAK88F,iBAAiBN,GAAcA,EAE3E,CACF,CAiIA,MAAMO,EA5BS,CACbC,cAhBkB,SAAwBpQ,EAAaqQ,GACvD,IAAIpQ,EAAS5tE,OAAO2tE,GAChBsQ,EAASrQ,EAAS;AACtB,GAAIqQ,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAOrQ,EAAS;AAClB,KAAK,EACH,OAAOA,EAAS;AAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAClB,EAGEsQ,IAAKZ,EAAgB,CACnBzS,OAvGY,CACdsT,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBAqGtB3B,aAAc,SAEhB4B,QAAShB,EAAgB,CACvBzS,OAtGgB,CAClBsT,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBAoGlD3B,aAAc,OACdmB,iBAAkB,SAA0BS,GAC1C,OAAOA,EAAU,CACnB,IAEFtN,MAAOsM,EAAgB,CACrBzS,OAxGc,CAChBsT,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAsGnH3B,aAAc,SAEhBnM,IAAK+M,EAAgB,CACnBzS,OAvGY,CACdsT,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvCnB,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CoB,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAoGvE3B,aAAc,SAEhB6B,UAAWjB,EAAgB,CACzBzS,OArGkB,CACpBsT,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UAyEPrC,aAAc,OACde,iBAvE4B,CAC9BU,OAAQ,CACNK,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETX,YAAa,CACXI,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETV,KAAM,CACJG,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aA2CPrB,uBAAwB;AAI5B,SAASsB,EAAaj+F,GACpB,OAAO,SAASulF,GACd,IAAIzgF,EAAU5E,UAAUC,OAAS,YAAKD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAC5EirC,EAAQrmC,EAAQqmC,MAChB+yD,EAAe/yD,GAASnrC,EAAKm+F,cAAchzD,IAAUnrC,EAAKm+F,cAAcn+F,EAAKo+F,mBAC7ElE,EAAc3U,EAAO56E,MAAMuzF;AAC/B,IAAKhE,EACH,OAAO;AAET,IAOIv0F,EAPA04F,EAAgBnE,EAAY,GAC5BoE,EAAgBnzD,GAASnrC,EAAKs+F,cAAcnzD,IAAUnrC,EAAKs+F,cAAct+F,EAAKu+F,mBAC9Ep8F,EAAMZ,MAAMiG,QAAQ82F,GAuB5B,SAAmB78F,EAAOM,GACxB,IAAK,IAAII,EAAM,EAAGA,EAAMV,EAAMtB,OAAQgC,IACpC,GAAcV,EAAMU,GAxBHwB,KAAK06F,GAyBpB,OAAOl8F,CAIb,CAPA,CAvBuDm8F,GAevD,SAAiBr8F,EAAQF,GACvB,IAAK,IAAII,KAAOF,EACd,GAAIA,EAAOW,eAAeT,IAAkBF,EAAOE,GAdlCwB,KAAK06F,GAepB,OAAOl8F,CAIb,CAPA,CAbiBm8F;AAOb,OAHA34F,EAAQ3F,EAAKw+F,cAAgBx+F,EAAKw+F,cAAcr8F,GAAOA,EAGhD,CACLwD,MAHFA,EAAQb,EAAQ05F,cAAgB15F,EAAQ05F,cAAc74F,GAASA,EAI7D84F,KAHSlZ,EAAOjjF,MAAM+7F,EAAcl+F,QAKxC,CACF,CAkCA,IAjB6BH,EAsEzB2K,EAAQ,CACVqyF,eAvE2Bh9F,EAuEQ,CACjCk+F,aAvD4B,wBAwD5BQ,aAvD4B,OAwD5BF,cAAe,SAAuB74F,GACpC,OAAOoW,SAASpW,EAAO,GACzB,GA3EK,SAAS4/E,GACd,IAAIzgF,EAAU5E,UAAUC,OAAS,YAAKD,UAAU,GAAgBA,UAAU,GAAK,CAAC,EAC5Eg6F,EAAc3U,EAAO56E,MAAM3K,EAAKk+F;AACpC,IAAKhE,EAAa,OAAO;AACzB,IAAImE,EAAgBnE,EAAY,GAC5ByE,EAAcpZ,EAAO56E,MAAM3K,EAAK0+F;AACpC,IAAKC,EAAa,OAAO;AACzB,IAAIh5F,EAAQ3F,EAAKw+F,cAAgBx+F,EAAKw+F,cAAcG,EAAY,IAAMA,EAAY;AAGlF,MAAO,CACLh5F,MAHFA,EAAQb,EAAQ05F,cAAgB15F,EAAQ05F,cAAc74F,GAASA,EAI7D84F,KAHSlZ,EAAOjjF,MAAM+7F,EAAcl+F,QAKxC,GA+DAg9F,IAAKc,EAAa,CAChBE,cA5DmB,CACrBf,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DA0DJc,kBAAmB,OACnBE,cAzDmB,CACrBM,IAAK,CAAC,MAAO,YAyDXL,kBAAmB,QAErBhB,QAASU,EAAa,CACpBE,cA1DuB,CACzBf,OAAQ,WACRC,YAAa,YACbC,KAAM,kCAwDJc,kBAAmB,OACnBE,cAvDuB,CACzBM,IAAK,CAAC,KAAM,KAAM,KAAM,OAuDtBL,kBAAmB,MACnBC,cAAe,SAAwBK,GACrC,OAAOA,EAAS,CAClB,IAEF5O,MAAOgO,EAAa,CAClBE,cA3DqB,CACvBf,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FAyDJc,kBAAmB,OACnBE,cAxDqB,CACvBlB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtFwB,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QAuD5FL,kBAAmB,QAErB/O,IAAKyO,EAAa,CAChBE,cAxDmB,CACrBf,OAAQ,YACRnB,MAAO,2BACPoB,YAAa,kCACbC,KAAM,gEAqDJc,kBAAmB,OACnBE,cApDmB,CACrBlB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnDwB,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAmDjDL,kBAAmB,QAErBf,UAAWS,EAAa,CACtBE,cApDyB,CAC3Bf,OAAQ,6DACRwB,IAAK,kFAmDHR,kBAAmB,MACnBE,cAlDyB,CAC3BM,IAAK,CACHnB,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WA0CPO,kBAAmB;AAgBvB,MAAMO,EAZO,CACXnhE,KAAM,QACNohE,eAxXmB,SAAyBC,EAAOv6E,EAAO3f,GAC1D,IAAIqN,EACA8sF,EAAazE,EAAqBwE;AAQtC,OANE7sF,EADwB,iBAAf8sF,EACAA,EACU,IAAVx6E,EACAw6E,EAAWvE,IAEXuE,EAAWxzF,MAAMuQ,QAAQ,YAAayI,EAAMna,YAEnDxF,SAA0CA,EAAQo6F,UAChDp6F,EAAQq6F,YAAcr6F,EAAQq6F,WAAa,EACtC,MAAQhtF,EAERA,EAAS,OAGbA,CACT,EAuWEitF,WAAYvD,EACZwD,eArTmB,SAAyBL,EAAOM,EAAOC,EAAWtC,GACrE,OAAOf,EAAqB8C,EAC9B,EAoTEQ,SAAUzC,EACVpyF,MAPcA,EAQd7F,QAAS,CACPuqF,aAAc,EACdmK,sBAAuB;AAoB3B,OAhBAjB,GAAcuG,cAAgBA,EAC9BvG,GAAckH,gCA7pBd,SAAyC3iF,GACvC,IAAI4iF,EAAU,IAAIx3F,KAAKA,KAAKy3F,IAAI7iF,EAAKgyE,cAAehyE,EAAK8xE,WAAY9xE,EAAK2xE,UAAW3xE,EAAKk5E,WAAYl5E,EAAKm5E,aAAcn5E,EAAK8iF,aAAc9iF,EAAK+iF;AAEjJ,OADAH,EAAQzG,eAAen8E,EAAKgyE,eACrBhyE,EAAK3U,UAAYu3F,EAAQv3F,SAClC,EA0pBAowF,GAAcuH,cAzmBd,SAAuB1S,GACrB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBsC,EAAO+I,EAAkB37E,GAAM3U,UAbrC,SAA+BilF,GAC7B94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIiwF,EAAO2I,EAAkB1L,GACzB2S,EAAkC,IAAI73F,KAAK;AAI/C,OAHA63F,EAAgB9G,eAAe9I,EAAM,EAAG,GACxC4P,EAAgBlH,YAAY,EAAG,EAAG,EAAG,GAC1BJ,EAAkBsH,EAE/B,CARA,CAauEjjF,GAAM3U;AAC3E,OAAOyF,KAAKE,MAAM4hF,EALS,QAKwB,CACrD,EAqmBA6I,GAAcO,kBAAoBA,EAClCP,GAAcyH,WA/iBd,SAAoB5S,EAAWtoF,GAC7BwP,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBsC,EAAO2J,EAAev8E,EAAMhY,GAASqD,UAhB3C,SAA4BilF,EAAWtoF,GACrC,IAAI4wE,EAAMmF,EAAO8B,EAAO4c,EAAuBtK,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIosF,EAAiBh4E,EAAMi4E,oBACvBiN,EAAwBllF,EAAMq4E,UAAm3B,QAAx2BjX,EAAyjB,QAAjjBmF,EAAoe,QAA3d8B,EAAsH,QAA7G4c,EAAwBz0F,eAAkDA,EAAQ00F,iCAAmCD,EAAmCA,EAAwBz0F,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBsK,iCAAmC7c,EAAmBA,EAAQ2P,EAAekN,iCAAmC3e,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBoK,iCAAmC9jB,EAAkBA,EAAO,GACl7Bya,EAAOmJ,EAAelM,EAAWtoF,GACjCm7F,EAA4B,IAAI/3F,KAAK;AAIzC,OAHA+3F,EAAUhH,eAAe9I,EAAM,EAAGqJ,GAClCyG,EAAUpH,YAAY,EAAG,EAAG,EAAG,GACpBQ,EAAe4G,EAAWn7F,EAEvC,CAXA,CAgB0EgY,EAAMhY,GAASqD;AACvF,OAAOyF,KAAKE,MAAM4hF,EALO,QAKwB,CACnD,EA2iBA6I,GAAce,eAAiBA,EAC/Bf,GAAc2H,0BAzdd,SAAmClB,GACjC,OAAoD,IAA7C1E,EAAyBl5F,QAAQ49F,EAC1C,EAwdAzG,GAAc4H,yBAvdd,SAAkCnB,GAChC,OAAmD,IAA5CzE,EAAwBn5F,QAAQ49F,EACzC,EAsdAzG,GAAc6H,eAAiBrG,EAC/BxB,GAAc8H,mBA/pBW,KAgqBzB9H,GAAc+H,qBAjqBa,IAkqB3B/H,GAAcgI,qBAhqBa,IAiqB3BhI,GAAcE,kBAAoBA,EAClCF,GAAcc,eAAiBA,EAC/Bd,GAAciI,gBAlqBd,SAAyBpT,EAAWkB,GAGlC,OAFAh6E,EAAM83E,aAAa,EAAGlsF,WAfxB,SAAyBktF,EAAWkB,GAClCh6E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI6P,EAAYuE,EAAMk4E,OAAOY,GAAWjlF,UACpComF,EAASj6E,EAAMq4E,UAAU2B;AAC7B,OAAO,IAAIpmF,KAAK6H,EAAYw+E,EAC9B,CALA,CAiByBnB,GADV94E,EAAMq4E,UAAU2B,GAE/B,EA+pBAiK,GAAckI,oBA5dd,SAA6BzB,EAAO0B,EAAQ5kE,GAC1C,GAAc,SAAVkjE,EACF,MAAM,IAAIzP,WAAW,qCAAqCllF,OAAOq2F,EAAQ,0CAA0Cr2F,OAAOyxB,EAAO;AAC5H,GAAc,OAAVkjE,EACT,MAAM,IAAIzP,WAAW,iCAAiCllF,OAAOq2F,EAAQ,0CAA0Cr2F,OAAOyxB,EAAO;AACxH,GAAc,MAAVkjE,EACT,MAAM,IAAIzP,WAAW,+BAA+BllF,OAAOq2F,EAAQ,sDAAsDr2F,OAAOyxB,EAAO;AAClI,GAAc,OAAVkjE,EACT,MAAM,IAAIzP,WAAW,iCAAiCllF,OAAOq2F,EAAQ,sDAAsDr2F,OAAOyxB,EAAO,kFAE7I,EAmdOy8D,EACR,CAIA,SAASoI,KACR,GAAIvI,GAAgD,OAAOE;AAC3DF,GAAiD,EACjD/4F,OAAO2D,eAAes1F,GAAqC,aAAc,CAAE3yF;AAC3E,MAAMyoF,EAAUH,KACV2S,EAAU/1B,EAAcC,uBACxBx2D,EAAQ23E,KACR+B,EAAUwK,KACVrK,EAAUjB;AAKhB,SAASvjB,EAAQyjB,GAEf,GADA94E,EAAM83E,aAAa,EAAGlsF,YALxB,SAAgByF,GAEd,OADA2O,EAAM83E,aAAa,EAAGlsF,WACfyF,aAAiBuC,MAAiC,WAAzBoM,EAAM43E,QAAQvmF,IAAiE,kBAA1CtG,OAAOsD,UAAU2H,SAASzH,KAAK8C,EACtG,CAHA,CAMcynF,IAAmC,iBAAdA,EAC/B;AAEF,IAAItwE,EAAOxI,EAAMk4E,OAAOY;AACxB,OAAQrY,MAAM91D,OAAOnC,GACvB,CAYA,SAAS+jF,EAAgBhU,EAAQiU,GAG/B,IAFA,IAAIC,EAAOlU,EAAS,EAAI,IAAM,GAC1BtzE,EAAS3L,KAAKkjD,IAAI+7B,GAAQviF,WACvBiP,EAAOpZ,OAAS2gG,GACrBvnF,EAAS,IAAMA;AAEjB,OAAOwnF,EAAOxnF,CAChB,CA0DA,IAQIynF,EAAa,CAEfC,EAAG,SAAWnkF,EAAMkiF,EAAOQ,GACzB,IAAIrC,EAAMrgF,EAAKi8E,iBAAmB,EAAI,EAAI;AAC1C,OAAQiG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOQ,EAASrC,IAAIA,EAAK,CACvBhyD,MAAO;AAGX,IAAK,QACH,OAAOq0D,EAASrC,IAAIA,EAAK,CACvBhyD,MAAO;AAIX,QACE,OAAOq0D,EAASrC,IAAIA,EAAK,CACvBhyD,MAAO,SAGf,EAEAM,EAAG,SAAY3uB,EAAMkiF,EAAOQ,GAC1B,GAAc,OAAVR,EAAgB,CAClB,IAAIkC,EAAapkF,EAAKi8E,iBAClB5I,EAAO+Q,EAAa,EAAIA,EAAa,EAAIA;AAC7C,OAAO1B,EAASxC,cAAc7M,EAAM,CAClCgR,KAAM,QAEV,CACA,OAjGC,SAAWrkF,EAAMkiF,GAClB,IAAIkC,EAAapkF,EAAKi8E,iBAClB5I,EAAO+Q,EAAa,EAAIA,EAAa,EAAIA;AAC7C,OAAOL,EAA0B,OAAV7B,EAAiB7O,EAAO,IAAMA,EAAM6O,EAAM7+F,OACnE,CA6FSihG,CAAetkF,EAAMkiF,EAC9B,EAEAqC,EAAG,SAAWvkF,EAAMkiF,EAAOQ,EAAU16F,GACnC,IAAIw8F,EAAiBtT,EAAQsL,eAAex8E,EAAMhY,GAC9Cy8F,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA;AACzD,MAAc,OAAVtC,EAEK6B,EADYU,EAAW,IACO,GAEzB,OAAVvC,EACKQ,EAASxC,cAAcuE,EAAU,CACtCJ,KAAM,SAGHN,EAAgBU,EAAUvC,EAAM7+F,OACzC,EAEAqhG,EAAG,SAAW1kF,EAAMkiF,GAElB,OAAO6B,EADW7S,EAAQ8K,kBAAkBh8E,GACRkiF,EAAM7+F,OAC5C,EAUA41B,EAAG,SAAWjZ,EAAMkiF,GAElB,OAAO6B,EADI/jF,EAAKi8E,iBACaiG,EAAM7+F,OACrC,EAEAshG,EAAG,SAAW3kF,EAAMkiF,EAAOQ,GACzB,IAAIjC,EAAU3vF,KAAKk/E,MAAMhwE,EAAK4kF,cAAgB,GAAK;AACnD,OAAQ1C,GAEN,IAAK,IACH,OAAOxuF,OAAO+sF;AAEhB,IAAK,KACH,OAAOsD,EAAgBtD,EAAS;AAElC,IAAK,KACH,OAAOiC,EAASxC,cAAcO,EAAS,CACrC4D,KAAM;AAGV,IAAK,MACH,OAAO3B,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,OACPtqC,QAAS,eAGjB,EAEAypE,EAAG,SAAWxtD,EAAMkiF,EAAOQ,GACzB,IAAIjC,EAAU3vF,KAAKk/E,MAAMhwE,EAAK4kF,cAAgB,GAAK;AACnD,OAAQ1C,GAEN,IAAK,IACH,OAAOxuF,OAAO+sF;AAEhB,IAAK,KACH,OAAOsD,EAAgBtD,EAAS;AAElC,IAAK,KACH,OAAOiC,EAASxC,cAAcO,EAAS,CACrC4D,KAAM;AAGV,IAAK,MACH,OAAO3B,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAASjC,QAAQA,EAAS,CAC/BpyD,MAAO,OACPtqC,QAAS,eAGjB,EAEA8gG,EAAG,SAAY7kF,EAAMkiF,EAAOQ,GAC1B,IAAIvP,EAAQnzE,EAAK4kF;AACjB,OAAQ1C,GACN,IAAK,IACL,IAAK,KACH,OA5MH,SAAWliF,EAAMkiF,GAClB,IAAI/O,EAAQnzE,EAAK4kF;AACjB,MAAiB,MAAV1C,EAAgBxuF,OAAOy/E,EAAQ,GAAK4Q,EAAgB5Q,EAAQ,EAAG,EACxE,CAyMamR,CAAetkF,EAAMkiF;AAE9B,IAAK,KACH,OAAOQ,EAASxC,cAAc/M,EAAQ,EAAG,CACvCkR,KAAM;AAGV,IAAK,MACH,OAAO3B,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,OACPtqC,QAAS,eAGjB,EAEA+gG,EAAG,SAAW9kF,EAAMkiF,EAAOQ,GACzB,IAAIvP,EAAQnzE,EAAK4kF;AACjB,OAAQ1C,GAEN,IAAK,IACH,OAAOxuF,OAAOy/E,EAAQ;AAExB,IAAK,KACH,OAAO4Q,EAAgB5Q,EAAQ,EAAG;AAEpC,IAAK,KACH,OAAOuP,EAASxC,cAAc/M,EAAQ,EAAG,CACvCkR,KAAM;AAGV,IAAK,MACH,OAAO3B,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAASvP,MAAMA,EAAO,CAC3B9kD,MAAO,OACPtqC,QAAS,eAGjB,EAEA06C,EAAG,SAAWz+B,EAAMkiF,EAAOQ,EAAU16F,GACnC,IAAI+8F,EAAO7T,EAAQgS,WAAWljF,EAAMhY;AACpC,MAAc,OAAVk6F,EACKQ,EAASxC,cAAc6E,EAAM,CAClCV,KAAM,SAGHN,EAAgBgB,EAAM7C,EAAM7+F,OACrC,EAEA2hG,EAAG,SAAWhlF,EAAMkiF,EAAOQ,GACzB,IAAIuC,EAAU/T,EAAQ8R,cAAchjF;AACpC,MAAc,OAAVkiF,EACKQ,EAASxC,cAAc+E,EAAS,CACrCZ,KAAM,SAGHN,EAAgBkB,EAAS/C,EAAM7+F,OACxC,EAEA+6C,EAAG,SAAYp+B,EAAMkiF,EAAOQ,GAC1B,MAAc,OAAVR,EACKQ,EAASxC,cAAclgF,EAAK87E,aAAc,CAC/CuI,KAAM,SA9RT,SAAWrkF,EAAMkiF,GAClB,OAAO6B,EAAgB/jF,EAAK87E,aAAcoG,EAAM7+F,OAClD,CA+RSihG,CAAetkF,EAAMkiF,EAC9B,EAEAgD,EAAG,SAAWllF,EAAMkiF,EAAOQ,GACzB,IAAIyC,EApUR,SAAyB7U,GACvB94E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpBr9E,EAAY+M,EAAK3U;AACrB2U,EAAKolF,YAAY,EAAG,GACpBplF,EAAK+7E,YAAY,EAAG,EAAG,EAAG;AAC1B,IACIsJ,EAAapyF,EADU+M,EAAK3U;AAEhC,OAAOyF,KAAKqa,MAAMk6E,EATM,OAS8B,CACxD,CATA,CAoUoCrlF;AAChC,MAAc,OAAVkiF,EACKQ,EAASxC,cAAciF,EAAW,CACvCd,KAAM,cAGHN,EAAgBoB,EAAWjD,EAAM7+F,OAC1C,EAEAiiG,EAAG,SAAWtlF,EAAMkiF,EAAOQ,GACzB,IAAI6C,EAAYvlF,EAAK47E;AACrB,OAAQsG,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOQ,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,QACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAC,EAAG,SAAWgc,EAAMkiF,EAAOQ,EAAU16F,GACnC,IAAIu9F,EAAYvlF,EAAK47E,YACjB4J,GAAkBD,EAAYv9F,EAAQuqF,aAAe,GAAK,GAAK;AACnE,OAAQ2P,GAEN,IAAK,IACH,OAAOxuF,OAAO8xF;AAEhB,IAAK,KACH,OAAOzB,EAAgByB,EAAgB;AAEzC,IAAK,KACH,OAAO9C,EAASxC,cAAcsF,EAAgB,CAC5CnB,KAAM;AAEV,IAAK,MACH,OAAO3B,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,QACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAo6C,EAAG,SAAWn+B,EAAMkiF,EAAOQ,EAAU16F,GACnC,IAAIu9F,EAAYvlF,EAAK47E,YACjB4J,GAAkBD,EAAYv9F,EAAQuqF,aAAe,GAAK,GAAK;AACnE,OAAQ2P,GAEN,IAAK,IACH,OAAOxuF,OAAO8xF;AAEhB,IAAK,KACH,OAAOzB,EAAgByB,EAAgBtD,EAAM7+F;AAE/C,IAAK,KACH,OAAOq/F,EAASxC,cAAcsF,EAAgB,CAC5CnB,KAAM;AAEV,IAAK,MACH,OAAO3B,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,QACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAgB,EAAG,SAAWib,EAAMkiF,EAAOQ,GACzB,IAAI6C,EAAYvlF,EAAK47E,YACjB6J,EAA6B,IAAdF,EAAkB,EAAIA;AACzC,OAAQrD,GAEN,IAAK,IACH,OAAOxuF,OAAO+xF;AAEhB,IAAK,KACH,OAAO1B,EAAgB0B,EAAcvD,EAAM7+F;AAE7C,IAAK,KACH,OAAOq/F,EAASxC,cAAcuF,EAAc,CAC1CpB,KAAM;AAGV,IAAK,MACH,OAAO3B,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,cACPtqC,QAAS;AAGb,IAAK,QACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,QACPtqC,QAAS;AAIb,QACE,OAAO2+F,EAAShQ,IAAI6S,EAAW,CAC7Bl3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAgP,EAAG,SAAYiN,EAAMkiF,EAAOQ,GAC1B,IACIgD,EADQ1lF,EAAK2lF,cACgB,IAAM,EAAI,KAAO;AAClD,OAAQzD,GACN,IAAK,IACL,IAAK,KACH,OAAOQ,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,cACPtqC,QAAS;AAEb,IAAK,MACH,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,cACPtqC,QAAS,eACRgjC;AACL,IAAK,QACH,OAAO27D,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAiP,EAAG,SAAWgN,EAAMkiF,EAAOQ,GACzB,IACIgD,EADAE,EAAQ5lF,EAAK2lF;AASjB,OANED,EADY,KAAVE,EAhcA,OAkciB,IAAVA,EAncH,WAsceA,EAAQ,IAAM,EAAI,KAAO,KAExC1D,GACN,IAAK,IACL,IAAK,KACH,OAAOQ,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,cACPtqC,QAAS;AAEb,IAAK,MACH,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,cACPtqC,QAAS,eACRgjC;AACL,IAAK,QACH,OAAO27D,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,OACPtqC,QAAS,eAGjB,EAEA8hG,EAAG,SAAW7lF,EAAMkiF,EAAOQ,GACzB,IACIgD,EADAE,EAAQ5lF,EAAK2lF;AAWjB,OARED,EADEE,GAAS,GAjeN,UAmeIA,GAAS,GApeX,YAseEA,GAAS,EAveb,UAGF,QAyeG1D,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOQ,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,cACPtqC,QAAS;AAEb,IAAK,QACH,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO2+F,EAAShC,UAAUgF,EAAoB,CAC5Cr3D,MAAO,OACPtqC,QAAS,eAGjB,EAEAm1B,EAAG,SAAYlZ,EAAMkiF,EAAOQ,GAC1B,GAAc,OAAVR,EAAgB,CAClB,IAAI0D,EAAQ5lF,EAAK2lF,cAAgB;AAEjC,OADc,IAAVC,IAAaA,EAAQ,IAClBlD,EAASxC,cAAc0F,EAAO,CACnCvB,KAAM,QAEV,CACA,OAriBC,SAAWrkF,EAAMkiF,GAClB,OAAO6B,EAAgB/jF,EAAK2lF,cAAgB,IAAM,GAAIzD,EAAM7+F,OAC9D,CAmiBSihG,CAAetkF,EAAMkiF,EAC9B,EAEA4D,EAAG,SAAY9lF,EAAMkiF,EAAOQ,GAC1B,MAAc,OAAVR,EACKQ,EAASxC,cAAclgF,EAAK2lF,cAAe,CAChDtB,KAAM,SAviBT,SAAWrkF,EAAMkiF,GAClB,OAAO6B,EAAgB/jF,EAAK2lF,cAAezD,EAAM7+F,OACnD,CAwiBSihG,CAAetkF,EAAMkiF,EAC9B,EAEA6D,EAAG,SAAW/lF,EAAMkiF,EAAOQ,GACzB,IAAIkD,EAAQ5lF,EAAK2lF,cAAgB;AACjC,MAAc,OAAVzD,EACKQ,EAASxC,cAAc0F,EAAO,CACnCvB,KAAM,SAGHN,EAAgB6B,EAAO1D,EAAM7+F,OACtC,EAEA2iG,EAAG,SAAWhmF,EAAMkiF,EAAOQ,GACzB,IAAIkD,EAAQ5lF,EAAK2lF;AAEjB,OADc,IAAVC,IAAaA,EAAQ,IACX,OAAV1D,EACKQ,EAASxC,cAAc0F,EAAO,CACnCvB,KAAM,SAGHN,EAAgB6B,EAAO1D,EAAM7+F,OACtC,EAEAi7C,EAAG,SAAYt+B,EAAMkiF,EAAOQ,GAC1B,MAAc,OAAVR,EACKQ,EAASxC,cAAclgF,EAAKimF,gBAAiB,CAClD5B,KAAM,WAjkBT,SAAWrkF,EAAMkiF,GAClB,OAAO6B,EAAgB/jF,EAAKimF,gBAAiB/D,EAAM7+F,OACrD,CAkkBSihG,CAAetkF,EAAMkiF,EAC9B,EAEAx+D,EAAG,SAAY1jB,EAAMkiF,EAAOQ,GAC1B,MAAc,OAAVR,EACKQ,EAASxC,cAAclgF,EAAKkmF,gBAAiB,CAClD7B,KAAM,WAtkBT,SAAWrkF,EAAMkiF,GAClB,OAAO6B,EAAgB/jF,EAAKkmF,gBAAiBhE,EAAM7+F,OACrD,CAukBSihG,CAAetkF,EAAMkiF,EAC9B,EAEAiE,EAAG,SAAYnmF,EAAMkiF,GACnB,OAzkBC,SAAWliF,EAAMkiF,GAClB,IAAIkE,EAAiBlE,EAAM7+F,OACvBgjG,EAAermF,EAAKsmF;AAExB,OAAOvC,EADiBjzF,KAAKqa,MAAMk7E,EAAev1F,KAAKu/B,IAAI,GAAI+1D,EAAiB,IACtClE,EAAM7+F,OAClD,CAokBSihG,CAAetkF,EAAMkiF,EAC9B,EAEAqE,EAAG,SAAWvmF,EAAMkiF,EAAOsE,EAAWx+F,GACpC,IACIy+F,GADez+F,EAAQ0+F,eAAiB1mF,GACV2mF;AAClC,GAAuB,IAAnBF,EACF,MAAO;AAET,OAAQvE,GAEN,IAAK,IACH,OAAO0E,EAAkCH;AAI3C,IAAK,OACL,IAAK,KACH,OAAOI,EAAeJ;AAOxB,QACE,OAAOI,EAAeJ,EAAgB,KAE5C,EAEAj4D,EAAG,SAAWxuB,EAAMkiF,EAAOsE,EAAWx+F,GACpC,IACIy+F,GADez+F,EAAQ0+F,eAAiB1mF,GACV2mF;AAClC,OAAQzE,GAEN,IAAK,IACH,OAAO0E,EAAkCH;AAI3C,IAAK,OACL,IAAK,KACH,OAAOI,EAAeJ;AAOxB,QACE,OAAOI,EAAeJ,EAAgB,KAE5C,EAEAK,EAAG,SAAW9mF,EAAMkiF,EAAOsE,EAAWx+F,GACpC,IACIy+F,GADez+F,EAAQ0+F,eAAiB1mF,GACV2mF;AAClC,OAAQzE,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ6E,EAAoBN,EAAgB;AAGrD,QACE,MAAO,MAAQI,EAAeJ,EAAgB,KAEpD,EAEAO,EAAG,SAAWhnF,EAAMkiF,EAAOsE,EAAWx+F,GACpC,IACIy+F,GADez+F,EAAQ0+F,eAAiB1mF,GACV2mF;AAClC,OAAQzE,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ6E,EAAoBN,EAAgB;AAGrD,QACE,MAAO,MAAQI,EAAeJ,EAAgB,KAEpD,EAEA1oF,EAAG,SAAWiC,EAAMkiF,EAAOsE,EAAWx+F,GACpC,IAAIi/F,EAAej/F,EAAQ0+F,eAAiB1mF;AAE5C,OAAO+jF,EADSjzF,KAAKqa,MAAM87E,EAAa57F,UAAY,KAClB62F,EAAM7+F,OAC1C,EAEA6jG,EAAG,SAAWlnF,EAAMkiF,EAAOsE,EAAWx+F,GAGpC,OAAO+7F,GAFY/7F,EAAQ0+F,eAAiB1mF,GACf3U,UACK62F,EAAM7+F,OAC1C;AAEF,SAAS0jG,EAAoB37E,EAAQ+7E,GACnC,IAAIlD,EAAO74E,EAAS,EAAI,IAAM,IAC1Bg8E,EAAYt2F,KAAKkjD,IAAI5oC,GACrBw6E,EAAQ90F,KAAKqa,MAAMi8E,EAAY,IAC/BC,EAAUD,EAAY;AAC1B,GAAgB,IAAZC,EACF,OAAOpD,EAAOvwF,OAAOkyF;AAEvB,IAAI0B,EAAYH;AAChB,OAAOlD,EAAOvwF,OAAOkyF,GAAS0B,EAAYvD,EAAgBsD,EAAS,EACrE,CACA,SAAST,EAAkCx7E,EAAQ+7E,GACjD,OAAI/7E,EAAS,IAAO,GACPA,EAAS,EAAI,IAAM,KAChB24E,EAAgBjzF,KAAKkjD,IAAI5oC,GAAU,GAAI,GAEhDy7E,EAAez7E,EAAQ+7E,EAChC,CACA,SAASN,EAAez7E,EAAQ+7E,GAC9B,IAAIG,EAAYH,GAAkB,GAC9BlD,EAAO74E,EAAS,EAAI,IAAM,IAC1Bg8E,EAAYt2F,KAAKkjD,IAAI5oC;AAGzB,OAAO64E,EAFKF,EAAgBjzF,KAAKqa,MAAMi8E,EAAY,IAAK,GAElCE,EADRvD,EAAgBqD,EAAY,GAAI,EAEhD,CACA,MAAMG,EAAerD;AACrB,IAAIsD,EAAyB,wDACzBC,EAA6B,oCAC7BC,EAAsB,eACtBC,EAAoB,MACpBC,EAAgC,WAkHhCC,EAAW,CACbC,kBAAmB,OACnBC,kBAAmB,QACnBC,SAAU,cAERC,EAAY,gEACZC,EAAY,4EACZC,EAAgB;AAmEpB,SAASC,EAAcv/F,GACrB,OAAOA,EAAQoW,SAASpW,GAAS,CACnC,CAYA,SAASw/F,EAAcx/F,GACrB,OAAOA,GAASy/F,WAAWz/F,EAAMqW,QAAQ,IAAK,OAAS,CACzD,CAqBA,IAAIqpF,EAAe,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI;AAClE,SAASC,EAAgBnV,GACvB,OAAOA,EAAO,KAAQ,GAAKA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC9D,CAmBA,MAEMoV,EAAsB,MAC1Bn5E,YAAYmkE,GACVnC,EAAQoC,iBAAiB5vF,KAAM2vF,GAC/B3vF,KAAK4kG,6BAA+BpX,EAAQsC,YAAY9vF,KAAM,+BAAgC,GAC9FA,KAAK6kG,6CAA+CrX,EAAQsC,YAAY9vF,KAAM,+CAAgD,GAC9HA,KAAKm3F,YACLn3F,KAAKkwF,yBACLlwF,KAAKmwF,uBACLnwF,KAAK2wF,sBACL3wF,KAAK0wF,UAAY,UACjB1wF,KAAKk3F,SACLl3F,KAAK8kG,iBACP,CACAC,wBACE/kG,KAAK6kG,6CAA6CtoC,KAAK,CACrDw0B,QAAS/wF,KAAK8kG,gBAElB,CACAE,WAAW9oF,GAAuB,IAAjB+oF,EAAM3lG,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA;AACrB,IAAK4c,EACH,MAAO;AACT,MAAMgpF,EAAU,IAAI59F,KAAK4U;AACzB,OAAK6sD,EAAQm8B,GA9QjB,SAAgB1Y,EAAW2Y,EAAgBjhG,GACzC,IAAI4wE,EAAuBmF,EAAO8B,EAAqCwS,EAAuBC,EAAwB9R,EAAO0oB,EAAqCC,EAAwBC;AAC1L5xF,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIimG,EAAY31F,OAAOu1F,GACnBzZ,EAAiBh4E,EAAMi4E,oBACvB+C,EAAmI,QAAzH5Z,EAA8F4W,EAAegD,kBAAoB5Z,EAAkBA,EAAOsY,EAAQ8Q,cAC5KtF,EAAwBllF,EAAMq4E,UAAuhB,QAA5gB9R,EAA6N,QAApN8B,EAA0K2P,EAAekN,iCAAmC7c,EAAmBA,EAA4D,QAAnDwS,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBoK,iCAAmC3e,EAAmBA,EAAQ;AAC5lB,KAAM2e,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIjK,WAAW;AAEvB,IAAIF,EAAe/6E,EAAMq4E,UAAwgB,QAA7frP,EAAoN,QAA3M0oB,EAA0K1Z,EAAe+C,wBAA0B2W,EAAmBA,EAA6D,QAApDC,EAAyB3Z,EAAegD,kBAAoB2W,GAA2G,QAA7DC,EAAyBD,EAAuBnhG,mBAAqBohG,SAA6CA,EAAuB7W,wBAA0B/R,EAAmBA,EAAQ;AACpkB,KAAM+R,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,IAAKD,EAAOkQ,SACV,MAAM,IAAIjQ,WAAW;AAEvB,IAAKD,EAAO8P,WACV,MAAM,IAAI7P,WAAW;AAEvB,IAAIwU,EAAezvF,EAAMk4E,OAAOY;AAChC,IAAKzjB,EAAQo6B,GACX,MAAM,IAAIxU,WAAW;AAEvB,IAAIgU,EAAiBvV,EAAQyR,gCAAgCsE,GACzDrE,EAAU1R,EAAQwS,gBAAgBuD,EAAcR,GAChD6C,EAAmB,CACrB5M,wBACAnK,eACAC,SACAkU,cAAeO;AAgCjB,OA9BaoC,EAAUx7F,MAAM45F,GAA4BriG,cAAaitB,GACpE,IAAIk3E,EAAiBl3E,EAAU;AAC/B,MAAuB,MAAnBk3E,GAA6C,MAAnBA,KACRrY,EAAQoS,eAAeiG,IACtBl3E,EAAWmgE,EAAO8P,YAElCjwE,CACT,IAAGxmB,KAAK,IAAIgC,MAAM25F,GAAwBpiG,cAAaitB,GACrD,GAAkB,OAAdA,EACF,MAAO;AAET,IAqBwB2M,EACtBwqE,EAtBED,EAAiBl3E,EAAU;AAC/B,GAAuB,MAAnBk3E,EACF,OAoBAC,GADsBxqE,EAnBI3M,GAoBVxkB,MAAM65F,IAInB8B,EAAQ,GAAGtqF,QAAQyoF,EAAmB,KAFpC3oE;AApBP,IAAIyqE,EAAYlC,EAAagC;AAC7B,GAAIE,EAOF,OANIvY,EAAQmS,yBAAyBhxE,IACnC6+D,EAAQyS,oBAAoBtxE,EAAW42E,EAAgBv1F,OAAO48E,IAE5DY,EAAQkS,0BAA0B/wE,IACpC6+D,EAAQyS,oBAAoBtxE,EAAW42E,EAAgBv1F,OAAO48E,IAEzDmZ,EAAU7G,EAASvwE,EAAWmgE,EAAOkQ,SAAU4G;AAExD,GAAIC,EAAe17F,MAAM+5F,GACvB,MAAM,IAAInV,WAAW,iEAAmE8W,EAAiB;AAE3G,OAAOl3E,CACT,IAAGxmB,KAAK,GAEV,CA/DA,CAkRkBm9F,EADID,EAAS,QAAU,cAF5B,EAIX,CACAW,0BAA0BV,GAA8C,IAArCzV,EAAKnwF,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAmB,IAAIgI;AAC7D,MAAMu+F,EAAkC,WAAnB7lG,KAAK0wF,WAA0BnD,EAAQV,SAASqY,EAASzV,KAAWlC,EAAQT,UAAUoY,EAASzV,GAC9GqW,EAAgC,SAAnB9lG,KAAK0wF,WAAwBnD,EAAQb,QAAQwY,EAASzV,KAAWlC,EAAQT,UAAUoY,EAASzV;AAC/G,OAAOoW,GAAgBC,CACzB,CAEAC,qBAAgF,IAA7Dh3F,EAAKzP,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAGU,KAAKkwF,kBAAmBlhF,EAAG1P,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAGU,KAAKmwF;AACxDnwF,KAAKgmG,cAAcj3F,IAAU/O,KAAKgmG,cAAch3F,GAClDhP,KAAK8kG,kBAIL9kG,KAAK8kG,iBADH91F,GACoBu+E,EAAQb,QAAQ,IAAIplF,KAAKyH,GAAQ,IAAIzH,KAAK0H,GAIpE,CACAg3F,cAAc9pF,GACZ,IAAKA,EACH;AACF,MAAMgpF,EAjOV,SAAkBrZ,EAAU3nF,GAE1BwP,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI2mG,EAAmBvyF,EAAMq4E,UAAmH;AAChJ,GAAyB,IAArBka,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAItX,WAAW;AAEvB,GAA0B,iBAAb9C,GAAsE,oBAA7CptF,OAAOsD,UAAU2H,SAASzH,KAAK4pF,GACnE,OAAuB,IAAIvkF,KAAKm9E;AAElC,IACIvoE,EADAgqF,EAwCN,SAAyBC,GACvB,IAEIC,EAFAF,EAAc,CAAC,EACfrlG,EAAQslG,EAAWt2F,MAAMk0F,EAASC;AAEtC,GAAInjG,EAAMtB,OAAS,EACjB,OAAO2mG;AAYT,GAVI,IAAInjG,KAAKlC,EAAM,IACjBulG,EAAavlG,EAAM,IAEnBqlG,EAAYhqF,KAAOrb,EAAM,GACzBulG,EAAavlG,EAAM,GACfkjG,EAASE,kBAAkBlhG,KAAKmjG,EAAYhqF,QAC9CgqF,EAAYhqF,KAAOiqF,EAAWt2F,MAAMk0F,EAASE,mBAAmB,GAChEmC,EAAaD,EAAWp2B,OAAOm2B,EAAYhqF,KAAK3c,OAAQ4mG,EAAW5mG,UAGnE6mG,EAAY,CACd,IAAIhI,EAAQ2F,EAASG,SAASh0F,KAAKk2F;AAC/BhI,GACF8H,EAAYryD,KAAOuyD,EAAWhrF,QAAQgjF,EAAM,GAAI,IAChD8H,EAAYhC,SAAW9F,EAAM,IAE7B8H,EAAYryD,KAAOuyD,CAEvB,CACA,OAAOF,CACT,CA3BA,CAxCoCra;AAElC,GAAIqa,EAAYhqF,KAAM,CACpB,IAAImqF,EAiER,SAAmBF,EAAYF,GAC7B,IAAIjd,EAAQ,IAAIxhF,OAAO,wBAA0B,EAAIy+F,GAAoB,uBAAyB,EAAIA,GAAoB,QACtHK,EAAWH,EAAWp8F,MAAMi/E;AAChC,IAAKsd,EAAU,MAAO,CACpB/W,KAAM9K,IACN8hB,eAAgB;AAElB,IAAIhX,EAAO+W,EAAS,GAAKnrF,SAASmrF,EAAS,IAAM,KAC7CE,EAAUF,EAAS,GAAKnrF,SAASmrF,EAAS,IAAM;AACpD,MAAO,CACL/W,KAAkB,OAAZiX,EAAmBjX,EAAiB,IAAViX,EAChCD,eAAgBJ,EAAWzkG,OAAO4kG,EAAS,IAAMA,EAAS,IAAI/mG,QAElE,CAbA,CAjEoC2mG,EAAYhqF,KAAM+pF;AAClD/pF,EA8EJ,SAAmBiqF,EAAY5W,GAC7B,GAAa,OAATA,EAAe,OAAuB,IAAIjoF,KAAKm9E;AACnD,IAAI6hB,EAAWH,EAAWp8F,MAAMo6F;AAChC,IAAKmC,EAAU,OAAuB,IAAIh/F,KAAKm9E;AAC/C,IAAIgiB,IAAeH,EAAS,GACxBjF,EAAYiD,EAAcgC,EAAS,IACnCjX,EAAQiV,EAAcgC,EAAS,IAAM,EACrC1X,EAAM0V,EAAcgC,EAAS,IAC7BrF,EAAOqD,EAAcgC,EAAS,IAC9B7E,EAAY6C,EAAcgC,EAAS,IAAM;AAC7C,GAAIG,EACF,OA4DJ,SAA0BC,EAAOzF,EAAMrS,GACrC,OAAOqS,GAAQ,GAAKA,GAAQ,IAAMrS,GAAO,GAAKA,GAAO,CACvD,CAFA,CA5D0BW,EAAM0R,EAAMQ,GA0CtC,SAA0BkF,EAAa1F,EAAMrS,GAC3C,IAAI1yE,EAAuB,IAAI5U,KAAK;AACpC4U,EAAKm8E,eAAesO,EAAa,EAAG;AACpC,IACI7X,EAAoB,GAAZmS,EAAO,GAASrS,EAAM,GADT1yE,EAAK47E,aAAe;AAG7C,OADA57E,EAAK67E,WAAW77E,EAAK87E,aAAelJ,GAC7B5yE,CACT,CAPA,CAvC4BqzE,EAAM0R,EAAMQ,GAFX,IAAIn6F,KAAKm9E;AAIlC,IAAIvoE,EAAuB,IAAI5U,KAAK;AACpC,OAgDJ,SAAsBioF,EAAMF,EAAOnzE,GACjC,OAAOmzE,GAAS,GAAKA,GAAS,IAAMnzE,GAAQ,GAAKA,IAASuoF,EAAapV,KAAWqV,EAAgBnV,GAAQ,GAAK,IACjH,CAFA,CAhDsBA,EAAMF,EAAOT,IAmDnC,SAA+BW,EAAM8R,GACnC,OAAOA,GAAa,GAAKA,IAAcqD,EAAgBnV,GAAQ,IAAM,IACvE,CAFA,CAnDkEA,EAAM8R,IAGpEnlF,EAAKm8E,eAAe9I,EAAMF,EAAOriF,KAAKipC,IAAIorD,EAAWzS,IAC9C1yE,GAHkB,IAAI5U,KAAKm9E,IAKtC,CAvBA,CA9EqB4hB,EAAgBE,eAAgBF,EAAgB9W,KACnE,CACA,IAAKrzE,GAAQi4D,MAAMj4D,EAAK3U,WACtB,OAAuB,IAAID,KAAKm9E;AAElC,IAEIn9D,EAFAnY,EAAY+M,EAAK3U,UACjBssC,EAAO;AAEX,GAAIqyD,EAAYryD,OACdA,EAgGJ,SAAmBuyD,GACjB,IAAIE,EAAWF,EAAWr8F,MAAMq6F;AAChC,IAAKkC,EAAU,OAAO7hB;AACtB,IAAIqd,EAAQyC,EAAc+B,EAAS,IAC/B/C,EAAUgB,EAAc+B,EAAS,IACjCM,EAAUrC,EAAc+B,EAAS;AACrC,OAyCF,SAAsBxE,EAAOyB,EAASqD,GACpC,OAAc,KAAV9E,EACiB,IAAZyB,GAA6B,IAAZqD,EAEnBA,GAAW,GAAKA,EAAU,IAAMrD,GAAW,GAAKA,EAAU,IAAMzB,GAAS,GAAKA,EAAQ,EAC/F,CALA,CAzCoBA,EAAOyB,EAASqD,GAG3B9E,EAAQ1U,EAAQqS,mBAAqB8D,EAAUnW,EAAQsS,qBAAiC,IAAVkH,EAF5EniB,GAGX,CAVA,CAhGqByhB,EAAYryD,MACzBsgC,MAAMtgC,IACR,OAAuB,IAAIvsC,KAAKm9E;AAGpC,IAAIyhB,EAAYhC,SAKT,CACL,IAAI1X,EAAY,IAAIllF,KAAK6H,EAAY0kC,GACjCtiC,EAAyB,IAAIjK,KAAK;AAGtC,OAFAiK,EAAO08E,YAAYzB,EAAU2L,iBAAkB3L,EAAUsU,cAAetU,EAAUwL,cAClFzmF,EAAOk7E,SAASD,EAAUqV,cAAerV,EAAU2V,gBAAiB3V,EAAU4V,gBAAiB5V,EAAUgW,sBAClGjxF,CACT,CATE,OADA+V,EAwGJ,SAAuBu/E,GACrB,GAAuB,MAAnBA,EAAwB,OAAO;AACnC,IAAIP,EAAWO,EAAe98F,MAAMs6F;AACpC,IAAKiC,EAAU,OAAO;AACtB,IAAInG,EAAuB,MAAhBmG,EAAS,IAAc,EAAI,EAClCxE,EAAQ3mF,SAASmrF,EAAS,IAC1B/C,EAAU+C,EAAS,IAAMnrF,SAASmrF,EAAS,KAAO;AACtD,OAgCF,SAA0BQ,EAAQvD,GAChC,OAAOA,GAAW,GAAKA,GAAW,EACpC,CAFA,CAhCwBzB,EAAOyB,GAGtBpD,GAAQ2B,EAAQ1U,EAAQqS,mBAAqB8D,EAAUnW,EAAQsS,sBAF7Djb,GAGX,CAXA,CAxG2ByhB,EAAYhC,UAC/B/vB,MAAM7sD,GACe,IAAIhgB,KAAKm9E,KAS7B,IAAIn9E,KAAK6H,EAAY0kC,EAAOvsB,EACrC,CAzCA,CAiO6BpL;AACzB,MAA2B,iBAAvBgpF,EAAQx7F,eAER1J,KAAK2wF,iBAAkB3wF,KAAK2wF,eAAeuU,QAG3CllG,KAAK0wF,YAAa1wF,KAAK4lG,0BAA0BV,GAIvD,CACA6B,iBAAiBC,GACfhnG,KAAKinG,YAAYD,EAAI,QACvB,CACAE,eAAeF,GACbhnG,KAAKinG,YAAYD,EAAI,MACvB,CACAG,qBAAqBH,GACnBhnG,KAAKinG,YAAYD,EAAI,WACvB,CACAI,mBAAmBJ,GACjBhnG,KAAKinG,YAAYD,EAAI,SACvB,CACAC,YAAYD,EAAI9rE,GAA2B,IAApBmsE,EAAS/nG,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA;AAC9B0nG,EAAG9pB,iBACH8pB,EAAGM;AACH,MAAMviG,MAAEA,GAAUiiG,EAAGplG;AACrB,IAAI2lG,EAAgBxiG;AAChB/E,KAAKm3F,WAILoQ,EAHEF,EAGe,GAFJrnG,KAAKglG,WAAqB,UAAV9pE,EAAoBl7B,KAAKkwF,kBAAoBlwF,KAAKmwF,oBAClEprF,EAAMrD,MAAM,EAAG,KAIX,GAAEqD,KADN/E,KAAKglG,WAAqB,UAAV9pE,EAAoBl7B,KAAKkwF,kBAAoBlwF,KAAKmwF;AAInF,MAAMqX,EAAaD,EAAcnsF,QAAQ,MAAO,IAAI7b;AACjC,KAAfioG,GAAoC,KAAfA,GACvBxnG,KAAK4kG,6BAA6BroC,KAAK,CAAErgD,KAAMqrF,EAAersE,SAElE,CACAg7D,sBACEl2F,KAAK+lG,oBACP,CACA3P,SACE,MAAMqR,EAAyBzH,EAAQ51B,oBAAoB,qBACrDs9B,EAAsB1H,EAAQ51B,oBAAoB,iBAClDu9B,EAAgBv1F,GAASo7E,EAAQp4D,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAQ,kBAAyB,UAATxkF,EAAmB,cAAgB,KAAiB,UAATA,GAAoBw1F,EAAU,SAAmB,UAATx1F,GAAoBpS,KAAKm3F,UAAYkQ,EAAU,SAAmB,QAATj1F,GAAkBw1F,EAAU,OAAiB,QAATx1F,GAAkBpS,KAAKm3F,UAAYkQ,EAAU,QAClVO,EAAax1F,GAASo7E,EAAQp4D,EAAEqyE,EAAwB,CAAElmG,IAAK,2CAA4C6Q,KAAM,OAAQwkF,MAAQ,aAAah4F,KAAO,oBAAmBwT,IAAQ2+E,QAAS/wF,KAAK8kG,eAAgB//F,MAAO/E,KAAKglG,WAAoB,UAAT5yF,EAAmBpS,KAAKkwF,kBAAoBlwF,KAAKmwF,iBAAkB0X,QAAkB,UAATz1F,EAAmBpS,KAAK+mG,iBAAiBhoG,KAAKiB,MAAQA,KAAKknG,eAAenoG,KAAKiB,OAASwtF,EAAQp4D,EAAE,QAAS,CAAE7zB,IAAK,2CAA4C8jC,QAAU,eAAcjzB,KAAUo7E,EAAQp4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAO,GAAEwT,UAAepS,KAAKk3F,QAAmB,UAAT9kF,EAAmB,QAAU,OAAQ,WACloBi1F,EAAaj1F,GAASo7E,EAAQp4D,EAAEqyE,EAAwB,CAAElmG,IAAK,2CAA4C6Q,KAAM,OAAQwkF,MAAQ,aAAah4F,KAAO,oBAAmBwT,IAAQ2+E,QAAS/wF,KAAK8kG,eAAgB//F,MAAO/E,KAAKglG,WAAoB,UAAT5yF,EAAmBpS,KAAKkwF,kBAAoBlwF,KAAKmwF,oBAAwB0X,QAAkB,UAATz1F,EAAmBpS,KAAKmnG,qBAAqBpoG,KAAKiB,MAAQA,KAAKonG,mBAAmBroG,KAAKiB,OAASwtF,EAAQp4D,EAAE,QAAS,CAAE7zB,IAAK,2CAA4C8jC,QAAU,oBAAmBjzB,KAAUo7E,EAAQp4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAO,GAAEwT,UAAepS,KAAKk3F,QAAmB,UAAT9kF,EAAmB,QAAU,OAAQ;AAC3pB,OAAOo7E,EAAQp4D,EAAEo4D,EAAQmJ,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,iCAAmC52F,KAAKk3F,MAAQ1J,EAAQp4D,EAAE,MAAO,CAAEwhE,MAAO,aAAe+Q,EAAa,SAAUA,EAAa,QAAUna,EAAQp4D,EAAE,MAAO,KAAMuyE,EAAa,UAAW3nG,KAAK8kG,gBAAkBtX,EAAQp4D,EAAEsyE,EAAqB,CAAEnmG,IAAK,2CAA4CumG,QAAS,YAActa,EAAQp4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,eAAiB,6BAC7e,CACWmpG,sBACT,MAAO,CACLjD,eAAkB,CAAC,yBAEvB;AAIF,OAFAH,EAAoB/yB,MA9GiB,+SA+GrC8lB,GAAoCsQ,8BAAgCrD,EAC7DjN,EACR,CAEA,IAEIuQ,GAuDAC,GAqJAC,GA0BAC,GAqEAC,GA7SAC,GAAiC,CAAC,EAuDlCC,GAAyB,CAAC,EAqJ1BC,GAA0B,CAAC,EA0B3BC,GAA6B,CAAC,EAqE9BC,GAA2B,CAAC;AAIhC,SAASC,KACR,GAAIN,GAAqC,OAAOK;AAChDL,GAAsC,EACtC5pG,OAAO2D,eAAesmG,GAA0B,aAAc,CAAE3jG;AAChE,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IACP4oB,EAAWlnB,IACXyL,EAAUnjB,EAAcC,uBACxB8F,EAAKN;AACX,IAAI3kC,EAAM,MACN+9D,EAAS,SACTC,EAAQ,QACRn+D,EAAO,OACPo+D,EAAO,OACPC,EAAiB,CAACl+D,EAAK+9D,EAAQC,EAAOn+D,GACtC77B,EAAQ,QACRC,EAAM,MAENo3D,EAAW,WACX8iC,EAAS,SAETC,EAAsCF,EAAe5vC,iBAAgByd,EAAKsyB,GAC5E,OAAOtyB,EAAIrtE,OAAO,CAAC2/F,EAAY,IAAMr6F,EAAOq6F,EAAY,IAAMp6F,GAChE,GAAG,IACCq6F,EAA6B,GAAG5/F,OAAOw/F,EAAgB,CAACD,IAAO3vC,iBAAgByd,EAAKsyB,GACtF,OAAOtyB,EAAIrtE,OAAO,CAAC2/F,EAAWA,EAAY,IAAMr6F,EAAOq6F,EAAY,IAAMp6F,GAC3E,GAAG,IAUCs6F,EAAiB,CATJ,aACN,OACK,YACC,aACN,OACK,YACE,cACN,QACK;AAEjB,SAASC,EAAY1oE,GACnB,OAAOA,GAAWA,EAAQ8B,UAAY,IAAIM,cAAgB,IAC5D,CACA,SAASumE,EAAU96E,GACjB,GAAY,MAARA,EACF,OAAOhsB;AAET,GAAwB,oBAApBgsB,EAAKhlB,WAAkC,CACzC,IAAIy7B,EAAgBzW,EAAKyW;AACzB,OAAOA,GAAgBA,EAAcskE,aAAwB/mG,MAC/D,CACA,OAAOgsB,CACT,CACA,SAASg7E,EAAUh7E,GAEjB,OAAOA,aADU86E,EAAU96E,GAAMqa,SACIra,aAAgBqa,OACvD,CACA,SAAS4gE,EAAcj7E,GAErB,OAAOA,aADU86E,EAAU96E,GAAM+V,aACI/V,aAAgB+V,WACvD,CACA,SAAS+nB,EAAa99B,GACpB,MAA0B,oBAAfk7E,aAIJl7E,aADU86E,EAAU96E,GAAMk7E,YACIl7E,aAAgBk7E,WACvD,CA2DA,MAAMC,EAAgB,CACpBjrG,KAAM,cACNulE,WACA2lC,MAAO,QACP5qG,GA9DF,SAAqB41E,GACnB,IAAIn6C,EAAQm6C,EAAKn6C;AACjBl8B,OAAOC,KAAKi8B,EAAM24C,UAAU30E,kBAAiBC,GAC3C,IAAIgzE,EAAQj3C,EAAMovE,OAAOnrG,IAAS,CAAC,EAC/BuuD,EAAaxyB,EAAMwyB,WAAWvuD,IAAS,CAAC,EACxCiiC,EAAUlG,EAAM24C,SAAS10E;AACxB+qG,EAAc9oE,IAAa0oE,EAAY1oE,KAG5CpiC,OAAOkD,OAAOk/B,EAAQ+wC,MAAOA,GAC7BnzE,OAAOC,KAAKyuD,GAAYxuD,kBAAiBqrG,GACvC,IAAIjlG,EAAQooD,EAAW68C;CAAAA,IACnBjlG,EACF87B,EAAQopE,gBAAgBD,GAExBnpE,EAAQ0/C,aAAaypB,OAAOjlG,EAAiB,GAAKA,EAEtD,IACF,GACF,EA4CEmlG,OA3CF,SAAkBjwB,GAChB,IAAIt/C,EAAQs/C,EAAMt/C,MACdwvE,EAAgB,CAClBjB,OAAQ,CACNz+D,SAAU9P,EAAMz2B,QAAQ86D,SACxBp0B,KAAM,IACNG,IAAK,IACLq/D,OAAQ,KAEVC,MAAO,CACL5/D,SAAU,YAEZ6/D,UAAW,CAAC;AAOd,OALA7rG,OAAOkD,OAAOg5B,EAAM24C,SAAS41B,OAAOt3B,MAAOu4B,EAAcjB,QACzDvuE,EAAMovE,OAASI,EACXxvE,EAAM24C,SAAS+2B,OACjB5rG,OAAOkD,OAAOg5B,EAAM24C,SAAS+2B,MAAMz4B,MAAOu4B,EAAcE,OAEnD,WACL5rG,OAAOC,KAAKi8B,EAAM24C,UAAU30E,kBAAiBC,GAC3C,IAAIiiC,EAAUlG,EAAM24C,SAAS10E,GACzBuuD,EAAaxyB,EAAMwyB,WAAWvuD,IAAS,CAAC,EAExCgzE,EADkBnzE,OAAOC,KAAKi8B,EAAMovE,OAAO/nG,eAAepD,GAAQ+7B,EAAMovE,OAAOnrG,GAAQurG,EAAcvrG,IAC7Ey6D,iBAAgBkxC,EAAQv+F,GAElD,OADAu+F,EAAOv+F,GAAY,GACZu+F,CACT,GAAG,CAAC;AACCZ,EAAc9oE,IAAa0oE,EAAY1oE,KAG5CpiC,OAAOkD,OAAOk/B,EAAQ+wC,MAAOA,GAC7BnzE,OAAOC,KAAKyuD,GAAYxuD,kBAAiB6rG,GACvC3pE,EAAQopE,gBAAgBO,EAC1B,IACF,GACF,CACF,EAOEC,SAAU,CAAC;AAEb,SAASC,EAAiBtB,GACxB,OAAOA,EAAUv5F,MAAM,KAAK,EAC9B,CACA,IAAIomC,EAAMjpC,KAAKipC,IACXqB,EAAMtqC,KAAKsqC,IACXpqC,EAAQF,KAAKE;AACjB,SAASy9F,IACP,IAAIC,EAAS13F,UAAU23F;AACvB,OAAc,MAAVD,GAAkBA,EAAOE,QAAUnqG,MAAMiG,QAAQgkG,EAAOE,QACnDF,EAAOE,OAAOxpG,cAAaP,GAChC,OAAOA,EAAKgqG,MAAQ,IAAMhqG,EAAKunB,OACjC,IAAGvgB,KAAK,KAEHmL,UAAUoK,SACnB,CACA,SAAS0tF,IACP,OAAQ,iCAAiCjoG,KAAK4nG,IAChD,CACA,SAASrgE,EAAsBzJ,EAASoqE,EAAcC,YAChDD,IACFA,WAAe,IAEbC,IACFA;AAEF,IAAIC,EAAatqE,EAAQyJ,wBACrB8gE,EAAS,EACTC,EAAS;AACTJ,GAAgBtB,EAAc9oE,KAChCuqE,EAASvqE,EAAQyqE,YAAc,GAAIp+F,EAAMi+F,EAAW5gE,OAAS1J,EAAQyqE,aAAmB,EACxFD,EAASxqE,EAAQ0qE,aAAe,GAAIr+F,EAAMi+F,EAAW3gE,QAAU3J,EAAQ0qE,cAAoB;AAE7F,IAA6D/2D,GAAlDk1D,EAAU7oE,GAAW2oE,EAAU3oE,GAAWn+B,QAA8B8xC,eAC/Eg3D,GAAoBR,KAAsBE,EAC1CxgE,GAAKygE,EAAWvgE,MAAQ4gE,GAAoBh3D,EAAiBA,EAAeE,WAAa,IAAM02D,EAC/FvgE,GAAKsgE,EAAWpgE,KAAOygE,GAAoBh3D,EAAiBA,EAAeO,UAAY,IAAMs2D,EAC7F9gE,EAAQ4gE,EAAW5gE,MAAQ6gE,EAC3B5gE,EAAS2gE,EAAW3gE,OAAS6gE;AACjC,MAAO,CACL9gE,QACAC,SACAO,IAAKF,EACLk+D,MAAOr+D,EAAIH,EACXu+D,OAAQj+D,EAAIL,EACZI,KAAMF,EACNA,IACAG,IAEJ,CACA,SAAS4gE,EAAc5qE,GACrB,IAAIsqE,EAAa7gE,EAAsBzJ,GACnC0J,EAAQ1J,EAAQyqE,YAChB9gE,EAAS3J,EAAQ0qE;AAOrB,OANIv+F,KAAKkjD,IAAIi7C,EAAW5gE,MAAQA,IAAU,IACxCA,EAAQ4gE,EAAW5gE,OAEjBv9B,KAAKkjD,IAAIi7C,EAAW3gE,OAASA,IAAW,IAC1CA,EAAS2gE,EAAW3gE,QAEf,CACLE,EAAG7J,EAAQ6T,WACX7J,EAAGhK,EAAQkU,UACXxK,QACAC,SAEJ,CACA,SAAStD,EAASuB,EAAQpZ,GACxB,IAAI8lD,EAAW9lD,EAAMsjD,aAAetjD,EAAMsjD;AAC1C,GAAIlqC,EAAOvB,SAAS7X,GAClB;AACK,GAAI8lD,GAAY3oB,EAAa2oB,GAAW,CAC7C,IAAIn1D,EAAOqP;AACX,EAAG,CACD,GAAIrP,GAAQyoB,EAAOijE,WAAW1rF,GAC5B;AAEFA,EAAOA,EAAKyP,YAAczP,EAAKiD,IACjC,OAASjD,EACX,CACA,QACF,CACA,SAAS0xD,EAAiB7wC,GACxB,OAAO2oE,EAAU3oE,GAAS6wC,iBAAiB7wC,EAC7C,CACA,SAAS8qE,EAAe9qE,GACtB,MAAO,CAAC,QAAS,KAAM,MAAMrgC,QAAQ+oG,EAAY1oE,KAAa,CAChE,CACA,SAAS+qE,EAAmB/qE,GAC1B,QAAS6oE,EAAU7oE,GAAWA,EAAQsE,cAEpCtE,EAAQlkB,WACJja,OAAOia,UAAUsqB,eACzB,CACA,SAASzX,EAAcqR,GACrB,MAA6B,SAAzB0oE,EAAY1oE,GACPA,EAMPA,EAAQu0C,cACRv0C,EAAQpR,aACP+8B,EAAa3rB,GAAWA,EAAQ5d,KAAO,OAExC2oF,EAAmB/qE,EAEvB,CACA,SAASgrE,EAAoBhrE,GAC3B,OAAK8oE,EAAc9oE,IACoB,UAAvC6wC,EAAiB7wC,GAAS4J,SAGnB5J,EAAQirE,aAFN,IAGX,CAwBA,SAASC,EAAgBlrE,GAGvB,IAFA,IAAImrE,EAAUxC,EAAU3oE,GACpBirE,EAAeD,EAAoBhrE,GAChCirE,GAAgBH,EAAeG,IAA6D,WAA5Cp6B,EAAiBo6B,GAAcrhE,UACpFqhE,EAAeD,EAAoBC;AAErC,OAAIA,IAA+C,SAA9BvC,EAAYuC,IAA0D,SAA9BvC,EAAYuC,IAAwE,WAA5Cp6B,EAAiBo6B,GAAcrhE,UAC3HuhE,EAEFF,GAhCT,SAA4BjrE,GAC1B,IAAIorE,EAAY,WAAWlpG,KAAK4nG;AAEhC,GADW,WAAW5nG,KAAK4nG,MACfhB,EAAc9oE,IAEI,UADX6wC,EAAiB7wC,GACnB4J,SACb,OAAO;AAGX,IAAIyhE,EAAc18E,EAAcqR;AAIhC,IAHI2rB,EAAa0/C,KACfA,EAAcA,EAAYjpF,MAErB0mF,EAAcuC,IAAgB,CAAC,OAAQ,QAAQ1rG,QAAQ+oG,EAAY2C,IAAgB,GAAG,CAC3F,IAAIC,EAAMz6B,EAAiBw6B;AAC3B,GAAsB,SAAlBC,EAAIzhC,WAA4C,SAApByhC,EAAIC,aAA0C,UAAhBD,EAAIE,UAAiF,IAA1D,CAAC,YAAa,eAAe7rG,QAAQ2rG,EAAIG,aAAsBL,GAAgC,WAAnBE,EAAIG,YAA2BL,GAAaE,EAAIvhG,QAAyB,SAAfuhG,EAAIvhG,OACjO,OAAOshG;AAEPA,EAAcA,EAAYz8E,UAE9B,CACA,OAAO,IACT,CAtBA,CAgC4CoR,IAAYmrE,CACxD,CACA,SAASO,EAAyBnD,GAChC,MAAO,CAAC,MAAO,UAAU5oG,QAAQ4oG,IAAc,EAAI,IAAM,GAC3D,CACA,SAASoD,EAAOC,EAAO1nG,EAAO2nG,GAC5B,OAAOz2D,EAAIw2D,EAAOn1D,EAAIvyC,EAAO2nG,GAC/B,CAaA,SAASC,EAAmBC,GAC1B,OAAOnuG,OAAOkD,OAAO,CAAC,EARf,CACLopC,IAAK,EACLg+D,MAAO,EACPD,OAAQ,EACRl+D,KAAM,GAIuCgiE,EACjD,CACA,SAASC,EAAgB9nG,EAAOrG,GAC9B,OAAOA,EAAK26D,iBAAgByzC,EAASvrG,GAEnC,OADAurG,EAAQvrG,GAAOwD,EACR+nG,CACT,GAAG,CAAC,EACN,CA6DA,SAASC,EAAa3D,GACpB,OAAOA,EAAUv5F,MAAM,KAAK,EAC9B,CACA,IAAIm9F,EAAa,CACfjiE,IAAK,OACLg+D,MAAO,OACPD,OAAQ,OACRl+D,KAAM;AAUR,SAASqiE,EAAYhzB,GACnB,IAAIizB,EACAC,EAAUlzB,EAAMivB,OAAQkE,EAAanzB,EAAMmzB,WAAYhE,EAAYnvB,EAAMmvB,UAAWiE,EAAYpzB,EAAMozB,UAAWC,EAAUrzB,EAAMqzB,QAAS7iE,EAAWwvC,EAAMxvC,SAAU8iE,EAAkBtzB,EAAMszB,gBAAiBC,EAAWvzB,EAAMuzB,SAAUC,EAAexzB,EAAMwzB,aAAcC,EAAUzzB,EAAMyzB,QAC5RC,EAAaL,EAAQ5iE,EAAGA,WAAIijE,EAAwB,EAAIA,EAAYC,EAAaN,EAAQziE,EAAGA,WAAI+iE,EAAwB,EAAIA,EAC5H7xB,EAAgC,mBAAjB0xB,EAA8BA,EAAa,CAC5D/iE,IACAG,MACG,CACHH,IACAG;AAEFH,EAAIqxC,EAAMrxC,EACVG,EAAIkxC,EAAMlxC;AACV,IAAIgjE,EAAOP,EAAQtrG,eAAe,KAC9B8rG,EAAOR,EAAQtrG,eAAe,KAC9B+rG,EAAQnjE,EACRojE,EAAQjjE,EACRkjE,EAAMvrG;AACV,GAAI8qG,EAAU,CACZ,IAAI1B,EAAeC,EAAgBoB,GAC/Be,EAAa,eACbC,EAAY;AACZrC,IAAiBtC,EAAU2D,IAEmB,WAA5Cz7B,EADJo6B,EAAeF,EAAmBuB,IACC1iE,UAAsC,aAAbA,IAC1DyjE,EAAa,eACbC,EAAY,gBAIZ/E,IAAcr+D,IAAQq+D,IAAcx+D,GAAQw+D,IAAcL,IAAUsE,IAAcr+F,KACpFg/F,EAAQlF,EAKRj+D,IAJc6iE,GAAW5B,IAAiBmC,GAAOA,EAAIz5D,eAAiBy5D,EAAIz5D,eAAehK,OAEvFshE,EAAaoC,IAEAd,EAAW5iE,OAC1BK,GAAK0iE,EAAkB,GAAK,GAE1BnE,IAAcx+D,IAASw+D,IAAcr+D,GAAOq+D,IAAcN,GAAWuE,IAAcr+F,KACrF++F,EAAQhF,EAKRr+D,IAJcgjE,GAAW5B,IAAiBmC,GAAOA,EAAIz5D,eAAiBy5D,EAAIz5D,eAAejK,MAEvFuhE,EAAaqC,IAEAf,EAAW7iE,MAC1BG,GAAK6iE,EAAkB,GAAK,EAEhC,CACA,IAaMa,EAbFC,EAAe5vG,OAAOkD,OAAO,CAC/B8oC,YACC+iE,GAAYR,GACX1wB,OAAQmxB,EA5Dd,SAA2B34B,EAAMm5B,GAC/B,IAAIvjE,EAAIoqC,EAAKpqC,EAAGG,EAAIiqC,EAAKjqC,EACrByjE,EAAML,EAAIM,kBAAoB;AAClC,MAAO,CACL7jE,EAAGx9B,EAAMw9B,EAAI4jE,GAAOA,GAAO,EAC3BzjE,EAAG39B,EAAM29B,EAAIyjE,GAAOA,GAAO,EAE/B,CAPA,CA4DwD,CACpD5jE,IACAG,KACC2+D,EAAU2D,IAAY,CACvBziE,IACAG;AAIF,OAFAH,EAAI4xC,EAAM5xC,EACVG,EAAIyxC,EAAMzxC,EACN0iE,EAEK9uG,OAAOkD,OAAO,CAAC,EAAG0sG,IAAeD,EAAiB,CAAC,GAAkBJ,GAASF,EAAO,IAAM,GAAIM,EAAeL,GAASF,EAAO,IAAM,GAAIO,EAAe1jC,WAAaujC,EAAIM,kBAAoB,IAAM,EAAI,aAAe7jE,EAAI,OAASG,EAAI,MAAQ,eAAiBH,EAAI,OAASG,EAAI,SAAUujE,IAE5R3vG,OAAOkD,OAAO,CAAC,EAAG0sG,IAAenB,EAAkB,CAAC,GAAmBc,GAASF,EAAOjjE,EAAI,KAAO,GAAIqiE,EAAgBa,GAASF,EAAOnjE,EAAI,KAAO,GAAIwiE,EAAgBxiC,UAAY,GAAIwiC,GAC9L,CAuCA,IAAIz3F,EAAU,CACZA,YAmCE+4F,EAAS,CACX5jE,KAAM,QACNm+D,MAAO,OACPD,OAAQ,MACR/9D,IAAK;AAEP,SAAS0jE,EAAqBrF,GAC5B,OAAOA,EAAUhuF,QAAQ,mCAAmCsqF,GAC1D,OAAO8I,EAAO9I,EAChB,GACF,CACA,IAAI3rD,EAAO,CACThrC,MAAO,MACPC,IAAK;AAEP,SAAS0/F,GAA8BtF,GACrC,OAAOA,EAAUhuF,QAAQ,uBAAuBsqF,GAC9C,OAAO3rD,EAAK2rD,EACd,GACF,CACA,SAASiJ,GAAgBjgF,GACvB,IAAIu/E,EAAMzE,EAAU96E;AAGpB,MAAO,CACLo/B,WAHemgD,EAAIt5D,YAInB8B,UAHcw3D,EAAIj5D,YAKtB,CACA,SAAS45D,GAAoB/tE,GAC3B,OAAOyJ,EAAsBshE,EAAmB/qE,IAAU+J,KAAO+jE,GAAgB9tE,GAASitB,UAC5F,CA4CA,SAAS+gD,GAAehuE,GACtB,IAAIiuE,EAAoBp9B,EAAiB7wC,GAAUkuE,EAAWD,EAAkBC,SAAUC,EAAYF,EAAkBE,UAAWC,EAAYH,EAAkBG;AACjK,MAAO,6BAA6BlsG,KAAKgsG,EAAWE,EAAYD,EAClE,CACA,SAASE,GAAgBxgF,GACvB,MAAI,CAAC,OAAQ,OAAQ,aAAaluB,QAAQ+oG,EAAY76E,KAAU,EACvDA,EAAKyW,cAAc3iB,KAExBmnF,EAAcj7E,IAASmgF,GAAengF,GACjCA,EAEFwgF,GAAgB1/E,EAAcd,GACvC,CACA,SAASygF,GAAkBtuE,EAAS1b,GAClC,IAAIiqF;KAAAA,IACAjqF,IACFA,EAAO;AAET,IAAIkqF,EAAeH,GAAgBruE,GAC/ByuE,EAASD,KAAqE,OAAlDD,EAAwBvuE,EAAQsE,sBAAkCiqE,EAAsB5sF,MACpHyrF,EAAMzE,EAAU6F,GAChBztG,EAAS0tG,EAAS,CAACrB,GAAKxkG,OAAOwkG,EAAIz5D,gBAAkB,GAAIq6D,GAAeQ,GAAgBA,EAAe,IAAMA,EAC7GE,EAAcpqF,EAAK1b,OAAO7H;AAC9B,OAAO0tG,EAASC,EAEdA,EAAY9lG,OAAO0lG,GAAkB3/E,EAAc5tB,IAEvD,CACA,SAAS4tG,GAAiBnlE,GACxB,OAAO5rC,OAAOkD,OAAO,CAAC,EAAG0oC,EAAM,CAC7BO,KAAMP,EAAKK,EACXK,IAAKV,EAAKQ,EACVk+D,MAAO1+D,EAAKK,EAAIL,EAAKE,MACrBu+D,OAAQz+D,EAAKQ,EAAIR,EAAKG,QAE1B,CAaA,SAASilE,GAA2B5uE,EAAS6uE,EAAgB1wC,GAC3D,OAAO0wC,IAAmBtpC,EAAWopC,GA5FvC,SAAyB3uE,EAASm+B,GAChC,IAAIivC,EAAMzE,EAAU3oE,GAChB8uE,EAAO/D,EAAmB/qE,GAC1B2T,EAAiBy5D,EAAIz5D,eACrBjK,EAAQolE,EAAKC,YACbplE,EAASmlE,EAAKE,aACdnlE,EAAI,EACJG,EAAI;AACR,GAAI2J,EAAgB,CAClBjK,EAAQiK,EAAejK,MACvBC,EAASgK,EAAehK;AACxB,IAAIslE,EAAiB9E,KACjB8E,IAAmBA,GAA+B,UAAb9wC,KACvCt0B,EAAI8J,EAAeE,WACnB7J,EAAI2J,EAAeO,UAEvB,CACA,MAAO,CACLxK,QACAC,SACAE,EAAGA,EAAIkkE,GAAoB/tE,GAC3BgK,IAEJ,CAvBA,CA4FwEhK,EAASm+B,IAAa0qC,EAAUgG,GAbxG,SAAoC7uE,EAASm+B,GAC3C,IAAI30B,EAAOC,EAAsBzJ,KAA6B,UAAbm+B;AASjD,OARA30B,EAAKU,IAAMV,EAAKU,IAAMlK,EAAQkvE,UAC9B1lE,EAAKO,KAAOP,EAAKO,KAAO/J,EAAQmvE,WAChC3lE,EAAKy+D,OAASz+D,EAAKU,IAAMlK,EAAQgvE,aACjCxlE,EAAK0+D,MAAQ1+D,EAAKO,KAAO/J,EAAQ+uE,YACjCvlE,EAAKE,MAAQ1J,EAAQ+uE,YACrBvlE,EAAKG,OAAS3J,EAAQgvE,aACtBxlE,EAAKK,EAAIL,EAAKO,KACdP,EAAKQ,EAAIR,EAAKU,IACPV,CACT,CAXA,CAaqJqlE,EAAgB1wC,GAAYwwC,GApEjL,SAAyB3uE,GACvB,IAAIuuE,EACAO,EAAO/D,EAAmB/qE,GAC1BovE,EAAYtB,GAAgB9tE,GAC5Bre,EAA0D,OAAlD4sF,EAAwBvuE,EAAQsE,sBAAkCiqE,EAAsB5sF,KAChG+nB,EAAQ0L,EAAI05D,EAAKO,YAAaP,EAAKC,YAAaptF,EAAOA,EAAK0tF,YAAc,EAAG1tF,EAAOA,EAAKotF,YAAc,GACvGplE,EAASyL,EAAI05D,EAAKj5D,aAAci5D,EAAKE,aAAcrtF,EAAOA,EAAKk0B,aAAe,EAAGl0B,EAAOA,EAAKqtF,aAAe,GAC5GnlE,GAAKulE,EAAUniD,WAAa8gD,GAAoB/tE,GAChDgK,GAAKolE,EAAUx5D;AAInB,MAHiD,QAA7Ci7B,EAAiBlvD,GAAQmtF,GAAMQ,YACjCzlE,GAAKuL,EAAI05D,EAAKC,YAAaptF,EAAOA,EAAKotF,YAAc,GAAKrlE,GAErD,CACLA,QACAC,SACAE,IACAG,IAEJ,CAlBA,CAoEkN+gE,EAAmB/qE,IACrO,CA8BA,SAASuvE,GAAet7B,GACtB,IAKIw4B,EALA+C,EAAav7B,EAAKw1B,UAAWzpE,EAAUi0C,EAAKj0C,QAASuoE,EAAYt0B,EAAKs0B,UACtEkH,EAAgBlH,EAAYsB,EAAiBtB,GAAa,KAC1DiE,EAAYjE,EAAY2D,EAAa3D,GAAa,KAClDmH,EAAUF,EAAW3lE,EAAI2lE,EAAW9lE,MAAQ,EAAI1J,EAAQ0J,MAAQ,EAChEimE,EAAUH,EAAWxlE,EAAIwlE,EAAW7lE,OAAS,EAAI3J,EAAQ2J,OAAS;AAEtE,OAAQ8lE,GACN,KAAKvlE,EACHuiE,EAAU,CACR5iE,EAAG6lE,EACH1lE,EAAGwlE,EAAWxlE,EAAIhK,EAAQ2J;AAE5B;AACF,KAAKs+D,EACHwE,EAAU,CACR5iE,EAAG6lE,EACH1lE,EAAGwlE,EAAWxlE,EAAIwlE,EAAW7lE;AAE/B;AACF,KAAKu+D,EACHuE,EAAU,CACR5iE,EAAG2lE,EAAW3lE,EAAI2lE,EAAW9lE,MAC7BM,EAAG2lE;AAEL;AACF,KAAK5lE,EACH0iE,EAAU,CACR5iE,EAAG2lE,EAAW3lE,EAAI7J,EAAQ0J,MAC1BM,EAAG2lE;AAEL;AACF,QACElD,EAAU,CACR5iE,EAAG2lE,EAAW3lE,EACdG,EAAGwlE,EAAWxlE,GAGpB,IAAI4lE,EAAWH,EAAgB/D,EAAyB+D,GAAiB;AACzE,GAAgB,MAAZG,EAAkB,CACpB,IAAIC,EAAmB,MAAbD,EAAmB,SAAW;AACxC,OAAQpD,GACN,KAAKt+F,EACHu+F,EAAQmD,GAAYnD,EAAQmD,IAAaJ,EAAWK,GAAO,EAAI7vE,EAAQ6vE,GAAO;AAC9E;AACF,KAAK1hG,EACHs+F,EAAQmD,GAAYnD,EAAQmD,IAAaJ,EAAWK,GAAO,EAAI7vE,EAAQ6vE,GAAO,GAGpF,CACA,OAAOpD,CACT,CACA,SAASqD,GAAeh2E,EAAOz2B,YACzBA,IACFA,EAAU,CAAC;AAEb,IAAIm4F,EAAWn4F,EAAS0sG,EAAqBvU,EAAS+M,UAAWA,WAAYwH,EAAgCj2E,EAAMyuE,UAAYwH,EAAoBC,EAAoBxU,EAASr9B,SAAUA,WAAW6xC,EAA+Bl2E,EAAMqkC,SAAW6xC,EAAmBC,EAAoBzU,EAAS0U,SAAUA,WAAWD,EA/sBtS,kBA+sBuVA,EAAmBE,EAAwB3U,EAAS4U,aAAcA,WAAeD,EAAmC5qC,EAAW4qC,EAAuBE,EAAwB7U,EAAS8U,eAAgBA,WAAiBD,EAAmChI,EAASgI,EAAuBE,EAAuB/U,EAASgV,YAAaA,WAAcD,GAA0CA,EAAsBE,EAAmBjV,EAASkV,QAASA,WAAUD,EAA8B,EAAIA,EAC90B1E,EAAgBD,EAAsC,iBAAZ4E,EAAuBA,EAAU1E,EAAgB0E,EAAStI,IACpGuI,EAAaL,IAAmBjI,EA9sBtB,YA8sB2CA,EACrDkE,EAAazyE,EAAM82E,MAAMvI,OACzBroE,EAAUlG,EAAM24C,SAAS+9B,EAAcG,EAAaL,GACpDO,EA/EN,SAAyB7wE,EAASkwE,EAAUE,EAAcjyC,GACxD,IAAI2yC,EAAmC,oBAAbZ,EAZ5B,SAA4BlwE,GAC1B,IAAI+wE,EAAmBzC,GAAkB3/E,EAAcqR,IAEnDgxE,EADoB,CAAC,WAAY,SAASrxG,QAAQkxE,EAAiB7wC,GAAS4J,WAAa,GACnDk/D,EAAc9oE,GAAWkrE,EAAgBlrE,GAAWA;AAC9F,OAAK6oE,EAAUmI,GAGRD,EAAiBhnG,iBAAgB8kG,GACtC,OAAOhG,EAAUgG,IAAmBxoE,EAASwoE,EAAgBmC,IAAmD,SAAhCtI,EAAYmG,EAC9F,IAJS,EAKX,CAVA,CAYgF7uE,GAAW,GAAGp3B,OAAOsnG,GAC/Fa,EAAmB,GAAGnoG,OAAOkoG,EAAqB,CAACV,IACnDa,EAAsBF,EAAiB,GACvCG,EAAeH,EAAiBv4C,iBAAgB24C,EAAStC,GAC3D,IAAIrlE,EAAOolE,GAA2B5uE,EAAS6uE,EAAgB1wC;AAK/D,OAJAgzC,EAAQjnE,IAAMkL,EAAI5L,EAAKU,IAAKinE,EAAQjnE,KACpCinE,EAAQjJ,MAAQzxD,EAAIjN,EAAK0+D,MAAOiJ,EAAQjJ,OACxCiJ,EAAQlJ,OAASxxD,EAAIjN,EAAKy+D,OAAQkJ,EAAQlJ,QAC1CkJ,EAAQpnE,KAAOqL,EAAI5L,EAAKO,KAAMonE,EAAQpnE,MAC/BonE,CACT,GAAGvC,GAA2B5uE,EAASixE,EAAqB9yC;AAK5D,OAJA+yC,EAAaxnE,MAAQwnE,EAAahJ,MAAQgJ,EAAannE,KACvDmnE,EAAavnE,OAASunE,EAAajJ,OAASiJ,EAAahnE,IACzDgnE,EAAarnE,EAAIqnE,EAAannE,KAC9BmnE,EAAalnE,EAAIknE,EAAahnE,IACvBgnE,CACT,CAjBA,CA+E2CrI,EAAU7oE,GAAWA,EAAUA,EAAQoxE,gBAAkBrG,EAAmBjxE,EAAM24C,SAAS41B,QAAS6H,EAAUE,EAAcjyC,GACjKkzC,EAAsB5nE,EAAsB3P,EAAM24C,SAASg3B,WAC3D6H,EAAiB/B,GAAe,CAClC9F,UAAW4H,EACXrxE,QAASusE,EACThE,cAEEgJ,EAAmB5C,GAAiB/wG,OAAOkD,OAAO,CAAC,EAAGyrG,EAAY+E,IAClEE,EAAoBlB,IAAmBjI,EAASkJ,EAAmBF,EACnEI,EAAkB,CACpBvnE,IAAK2mE,EAAmB3mE,IAAMsnE,EAAkBtnE,IAAM6hE,EAAc7hE,IACpE+9D,OAAQuJ,EAAkBvJ,OAAS4I,EAAmB5I,OAAS8D,EAAc9D,OAC7El+D,KAAM8mE,EAAmB9mE,KAAOynE,EAAkBznE,KAAOgiE,EAAchiE,KACvEm+D,MAAOsJ,EAAkBtJ,MAAQ2I,EAAmB3I,MAAQ6D,EAAc7D,OAExEwJ,EAAa53E,EAAM63E,cAAclrF;AACrC,GAAI6pF,IAAmBjI,GAAUqJ,EAAY,CAC3C,IAAIE,EAAUF,EAAWnJ;AACzB3qG,OAAOC,KAAK4zG,GAAiB3zG,kBAAiB4C,GAC5C,IAAImxG,EAAW,CAAC3J,EAAOD,GAAQtoG,QAAQe,IAAQ,EAAI,GAAK,EACpDoxG,EAAO,CAAC5nE,EAAK+9D,GAAQtoG,QAAQe,IAAQ,EAAI,IAAM;AACnD+wG,EAAgB/wG,IAAQkxG,EAAQE,GAAQD,CAC1C,GACF,CACA,OAAOJ,CACT,CAoIA,SAASM,GAAe7D,EAAU1kE,EAAMwoE,GAOtC,gBANIA,IACFA,EAAmB,CACjBnoE,EAAG,EACHG,EAAG,IAGA,CACLE,IAAKgkE,EAAShkE,IAAMV,EAAKG,OAASqoE,EAAiBhoE,EACnDk+D,MAAOgG,EAAShG,MAAQ1+D,EAAKE,MAAQsoE,EAAiBnoE,EACtDo+D,OAAQiG,EAASjG,OAASz+D,EAAKG,OAASqoE,EAAiBhoE,EACzDD,KAAMmkE,EAASnkE,KAAOP,EAAKE,MAAQsoE,EAAiBnoE,EAExD,CACA,SAASooE,GAAsB/D,GAC7B,MAAO,CAAChkE,EAAKg+D,EAAOD,EAAQl+D,GAAM7kC,eAAcgtG,GAC9C,OAAOhE,EAASgE,IAAS,CAC3B,GACF,CAuMA,SAASC,GAAiBC,EAAyBnH,EAAc4B,YAC3DA,IACFA;AAEF,IAjBqBh/E,EANOmS,EAuBxBqyE,EAA0BvJ,EAAcmC,GACxCqH,EAAuBxJ,EAAcmC,IAX3C,SAAyBjrE,GACvB,IAAIwJ,EAAOxJ,EAAQyJ,wBACf8gE,EAASl+F,EAAMm9B,EAAKE,OAAS1J,EAAQyqE,aAAe,EACpDD,EAASn+F,EAAMm9B,EAAKG,QAAU3J,EAAQ0qE,cAAgB;AAC1D,OAAkB,IAAXH,GAA2B,IAAXC,CACzB,CALA,CAW4ES,GACtE7kE,EAAkB2kE,EAAmBE,GACrCzhE,EAAOC,EAAsB2oE,EAAyBE,EAAsBzF,GAC5ErkE,EAAS,CACXykB,WAAY,EACZrX,UAAW,GAET62D,EAAU,CACZ5iE,EAAG,EACHG,EAAG;AAeL,OAbIqoE,IAA4BA,IAA4BxF,MACxB,SAA9BnE,EAAYuC,IAChB+C,GAAe5nE,MACboC,GAhCiB3a,EAgCMo9E,KA/BdtC,EAAU96E,IAAUi7E,EAAcj7E,GANxC,CACLo/B,YAF0BjtB,EAUEnS,GARRo/B,WACpBrX,UAAW5V,EAAQ4V,WAKZk4D,GAAgBjgF,IAgCnBi7E,EAAcmC,KAChBwB,EAAUhjE,EAAsBwhE,OACxBphE,GAAKohE,EAAakE,WAC1B1C,EAAQziE,GAAKihE,EAAaiE,WACjB9oE,IACTqmE,EAAQ5iE,EAAIkkE,GAAoB3nE,KAG7B,CACLyD,EAAGL,EAAKO,KAAOvB,EAAOykB,WAAaw/C,EAAQ5iE,EAC3CG,EAAGR,EAAKU,IAAM1B,EAAOoN,UAAY62D,EAAQziE,EACzCN,MAAOF,EAAKE,MACZC,OAAQH,EAAKG,OAEjB,CACA,SAAS4oE,GAAMC,GACb,IAAI/xG,EAAsB,IAAIyb,IAC1Bu2F,EAA0B,IAAIxyG,IAC9ByQ,EAAS;AAIb,SAAS4nC,EAAKphB,GACZu7E,EAAQlsG,IAAI2wB,EAASn5B,MACN,GAAG6K,OAAOsuB,EAAS0yE,UAAY,GAAI1yE,EAASw7E,kBAAoB,IACtE50G,kBAAiB60G,GACxB,IAAKF,EAAQnsG,IAAIqsG,GAAM,CACrB,IAAIC,EAAcnyG,EAAIe,IAAImxG;AACtBC,GACFt6D,EAAKs6D,EAET,CACF,IACAliG,EAAOvQ,KAAK+2B,EACd,CAMA,OArBAs7E,EAAU10G,kBAAiBo5B,GACzBz2B,EAAI4I,IAAI6tB,EAASn5B,KAAMm5B,EACzB,IAcAs7E,EAAU10G,kBAAiBo5B,GACpBu7E,EAAQnsG,IAAI4wB,EAASn5B,OACxBu6C,EAAKphB,EAET,IACOxmB,CACT,CAoCA,IAAImiG,GAAkB,CACpBtK,UAAW,SACXiK,UAAW,GACXr0C,SAAU;AAEZ,SAAS20C,KACP,IAAK,IAAI1hC,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAEzB,OAAQ9yE,EAAK2G,eAAc86B,GACzB,QAASA,GAAoD,mBAAlCA,EAAQyJ,sBACrC,GACF,CA8HA,IACIspE,GA9HJ,SAAyBC,YACnBA,IACFA,EAAmB,CAAC;AAEtB,IAAIC,EAAoBD,EAAkBE,EAAwBD,EAAkBE,iBAAkBC,WAAoBF,EAAmC,GAAKA,EAAuBG,EAAyBJ,EAAkBpoB,eAAgBA,WAAiBwoB,EAAoCR,GAAkBQ;AAC3T,OAAO,SAAuB7D,EAAYlD,EAASjpG,YAC7CA,IACFA,EAAUwnF;AAEZ,IAjDcyoB,EACZC,EAgDEz5E,EAAQ,CACVyuE,UAAW,SACXiL,iBAAkB,GAClBnwG,QAASzF,OAAOkD,OAAO,CAAC,EAAG+xG,GAAiBhoB,GAC5C8mB,cAAe,CAAC,EAChBl/B,SAAU,CACRg3B,UAAW+F,EACXnH,OAAQiE,GAEVhgD,WAAY,CAAC,EACb48C,OAAQ,CAAC,GAEPuK,EAAmB,GACnBC,KACAC,EAAW,CACb75E,QACA85E,WAAY,SAAoBC,GAC9B,IAAIC,EAAuC,mBAArBD,EAAkCA,EAAiB/5E,EAAMz2B,SAAWwwG;AAC1FE,IACAj6E,EAAMz2B,QAAUzF,OAAOkD,OAAO,CAAC,EAAG+pF,EAAgB/wD,EAAMz2B,QAASywG,GACjEh6E,EAAMk6E,cAAgB,CACpBvK,UAAWZ,EAAU2G,GAAclB,GAAkBkB,GAAcA,EAAW4B,eAAiB9C,GAAkBkB,EAAW4B,gBAAkB,GAC9I/I,OAAQiG,GAAkBhC;AAE5B,IA3DakG,EACfprG,EA0DMosG,EAjFZ,SAAwBhB,GACtB,IAAIgB,EAAmBjB,GAAMC;AAC7B,OAAO/J,EAAejwC,iBAAgByd,EAAKgzB,GACzC,OAAOhzB,EAAIrtE,OAAO4qG,EAAiBzpG,iBAAgBmtB,GACjD,OAAOA,EAAS+xE,QAAUA,CAC5B,IACF,GAAG,GACL,CAPA,EAsBqBuJ,EA2DqC,GAAG5pG,OAAOwqG,EAAmBt5E,EAAMz2B,QAAQmvG,WA1D/FprG,EAASorG,EAAUh6C,iBAAgBy7C,EAAS5gF,GAC9C,IAAI6gF,EAAWD,EAAQ5gF,EAAQt1B;AAK/B,OAJAk2G,EAAQ5gF,EAAQt1B,MAAQm2G,EAAWt2G,OAAOkD,OAAO,CAAC,EAAGozG,EAAU7gF,EAAS,CACtEhwB,QAASzF,OAAOkD,OAAO,CAAC,EAAGozG,EAAS7wG,QAASgwB,EAAQhwB,SACrD6G,KAAMtM,OAAOkD,OAAO,CAAC,EAAGozG,EAAShqG,KAAMmpB,EAAQnpB,QAC5CmpB,EACE4gF,CACT,GAAG,CAAC,GACGr2G,OAAOC,KAAKuJ,GAAQ3G,cAAaC,GACtC,OAAO0G,EAAO1G,EAChB;AAqDM,OAJAo5B,EAAM05E,iBAAmBA,EAAiBzpG,iBAAgB4vC,GACxD,OAAOA,EAAE2pB,OACX,IAiEFxpC,EAAM05E,iBAAiB11G,kBAAiBm2E,GACtC,IAAIl2E,EAAOk2E,EAAKl2E,KAAMo2G,EAAelgC,EAAK5wE,QAASywG,WAAWK,EAA0B,CAAC,EAAIA,EAAcC,EAAUngC,EAAKo1B;AAC1H,GAAuB,mBAAZ+K,EAAwB,CACjC,IAAIC,EAAYD,EAAQ,CACtBt6E,QACA/7B,OACA41G,WACAtwG,QAASywG;AAIXL,EAAiBtzG,KAAKk0G,GAFT,WACb,EAEF,CACF,IA5ESV,EAASz8D,QAClB,EAMAo9D,YAAa,WACX,IAAIZ,EAAJ,CAGA,IAAIa,EAAkBz6E,EAAM24C,SAAU+hC,EAAaD,EAAgB9K,UAAWgL,EAAUF,EAAgBlM;AACxG,GAAKyK,GAAiB0B,EAAYC,GAAlC,CAGA36E,EAAM82E,MAAQ,CACZnH,UAAW0I,GAAiBqC,EAAYtJ,EAAgBuJ,GAAqC,UAA3B36E,EAAMz2B,QAAQ86D,UAChFkqC,OAAQuC,EAAc6J,IAExB36E,EAAMpB,SACNoB,EAAMyuE,UAAYzuE,EAAMz2B,QAAQklG,UAChCzuE,EAAM05E,iBAAiB11G,kBAAiBo5B,GACtC,OAAO4C,EAAM63E,cAAcz6E,EAASn5B,MAAQH,OAAOkD,OAAO,CAAC,EAAGo2B,EAAShtB,KACzE;AACA,IAAK,IAAIkzF,EAAS,EAAGA,EAAStjE,EAAM05E,iBAAiB90G,OAAQ0+F,IAC3D,QAAItjE,EAAMpB,MAAV,CAKA,IAAIg8E,EAAwB56E,EAAM05E,iBAAiBpW,GAASkW,EAAMoB,EAAsBr2G,GAAIs2G,EAAyBD,EAAsBrxG,QAASm4F,WAAWmZ,EAAoC,CAAC,EAAIA,EAAwB52G,EAAO22G,EAAsB32G;AAC1O,mBAARu1G,IACTx5E,EAAQw5E,EAAI,CACVx5E,QACAz2B,QAASm4F,EACTz9F,OACA41G,cACI75E,EARR,MAHEA,EAAMpB,SACN0kE,GAAU,CAbd,CAJA,CA8BF,EAGAlmD,QAzHYo8D,EAyHK,WACf,OAAO,IAAIhyB,kBAAiBC,GAC1BoyB,EAASW,cACT/yB,EAAQznD,EACV,GACF,EA5HG,WASL,OARKy5E,IACHA,EAAU,IAAIjyB,kBAAiBC,GAC7BD,QAAQC,UAAUllD,iBAChBk3E,SACAhyB,EAAQ+xB,IACV,GACF,KAEKC,CACT,GAmHIqB,QAAS,WACPb,IACAL,IACF;AAEF,IAAKZ,GAAiBtD,EAAYlD,GAChC,OAAOqH;AAuBT,SAASI,IACPN,EAAiB31G,kBAAiBw1G,GAChC,OAAOA,GACT,IACAG,EAAmB,EACrB,CACA,OA3BAE,EAASC,WAAWvwG,GAASg5B,eAAcw4E,IACpCnB,GAAerwG,EAAQyxG,eAC1BzxG,EAAQyxG,cAAcD,EAE1B,IAuBOlB,CACT,CACF,CAEmCoB,CAAgB,CACjD5B,iBAFqB,CAn0BA,CACrBp1G,KAAM,iBACNulE,WACA2lC,MAAO,QACP5qG,GAAI,WACJ,EACAgrG,OA9BF,SAAgBp1B,GACd,IAAIn6C,EAAQm6C,EAAKn6C,MAAO65E,EAAW1/B,EAAK0/B,SAAUtwG,EAAU4wE,EAAK5wE,QAC7D2xG,EAAkB3xG,EAAQmlC,OAAQA,WAASwsE,GAAoCA,EAAiBC,EAAkB5xG,EAAQ6xG,OAAQA,WAASD,GAAoCA,EAC/K9J,EAAUxC,EAAU7uE,EAAM24C,SAAS41B,QACnC2L,EAAgB,GAAGprG,OAAOkxB,EAAMk6E,cAAcvK,UAAW3vE,EAAMk6E,cAAc3L;AASjF,OARI7/D,GACFwrE,EAAcl2G,kBAAiB0wG,GAC7BA,EAAat6F,iBAAiB,SAAUy/F,EAASz8D,OAAQtiC,EAC3D,IAEEsgG,GACF/J,EAAQj3F,iBAAiB,SAAUy/F,EAASz8D,OAAQtiC,GAE/C,WACD4zB,GACFwrE,EAAcl2G,kBAAiB0wG,GAC7BA,EAAalxB,oBAAoB,SAAUq2B,EAASz8D,OAAQtiC,EAC9D,IAEEsgG,GACF/J,EAAQ7tB,oBAAoB,SAAUq2B,EAASz8D,OAAQtiC,EAE3D,CACF,EAQE1K,KAAM,CAAC,GAwde,CACtBnM,KAAM,gBACNulE,WACA2lC,MAAO,OACP5qG,GAZF,SAAuB41E,GACrB,IAAIn6C,EAAQm6C,EAAKn6C,MAAO/7B,EAAOk2E,EAAKl2E;AACpC+7B,EAAM63E,cAAc5zG,GAAQwxG,GAAe,CACzC9F,UAAW3vE,EAAM82E,MAAMnH,UACvBzpE,QAASlG,EAAM82E,MAAMvI,OACrBE,UAAWzuE,EAAMyuE,WAErB,EAMEr+F,KAAM,CAAC,GAtgBe,CACtBnM,KAAM,gBACNulE,WACA2lC,MAAO,cACP5qG,GAnCF,SAAuBw9E,GACrB,IAAI/hD,EAAQ+hD,EAAM/hD,MAAOz2B,EAAUw4E,EAAMx4E,QACrC8xG,EAAwB9xG,EAAQqpG,gBAAiBA,WAAkByI,GAA0CA,EAAuBC,EAAoB/xG,EAAQspG,SAAUA,WAAWyI,GAAsCA,EAAmBC,EAAwBhyG,EAAQupG,aAAcA,WAAeyI,GAA0CA,EACrV7H,EAAe,CACjBjF,UAAWsB,EAAiB/vE,EAAMyuE,WAClCiE,UAAWN,EAAapyE,EAAMyuE,WAC9BF,OAAQvuE,EAAM24C,SAAS41B,OACvBkE,WAAYzyE,EAAM82E,MAAMvI,OACxBqE,kBACAG,QAAoC,UAA3B/yE,EAAMz2B,QAAQ86D;AAEgB,MAArCrkC,EAAM63E,cAAc2D,gBACtBx7E,EAAMovE,OAAOb,OAASzqG,OAAOkD,OAAO,CAAC,EAAGg5B,EAAMovE,OAAOb,OAAQ+D,EAAYxuG,OAAOkD,OAAO,CAAC,EAAG0sG,EAAc,CACvGf,QAAS3yE,EAAM63E,cAAc2D,cAC7B1rE,SAAU9P,EAAMz2B,QAAQ86D,SACxBwuC,WACAC,oBAG6B,MAA7B9yE,EAAM63E,cAAcnI,QACtB1vE,EAAMovE,OAAOM,MAAQ5rG,OAAOkD,OAAO,CAAC,EAAGg5B,EAAMovE,OAAOM,MAAO4C,EAAYxuG,OAAOkD,OAAO,CAAC,EAAG0sG,EAAc,CACrGf,QAAS3yE,EAAM63E,cAAcnI,MAC7B5/D,SAAU,WACV+iE,YACAC,oBAGJ9yE,EAAMwyB,WAAW+7C,OAASzqG,OAAOkD,OAAO,CAAC,EAAGg5B,EAAMwyB,WAAW+7C,OAAQ,CACnE,wBAAyBvuE,EAAMyuE,WAEnC,EAMEr+F,KAAM,CAAC,GAg2BiE8+F,EAnXzD,CACfjrG,KAAM,SACNulE,WACA2lC,MAAO,OACPW,SAAU,CAAC,iBACXvrG,GAnBF,SAAgB+6E,GACd,IAAIt/C,EAAQs/C,EAAMt/C,MAAOz2B,EAAU+1E,EAAM/1E,QAAStF,EAAOq7E,EAAMr7E,KAC3Dw3G,EAAkBlyG,EAAQojB,OAAQmrF,WAAU2D,EAA6B,CAAC,EAAG,GAAKA,EAClFrrG,EAAOs+F,EAAWhwC,iBAAgByd,EAAKsyB,GAEzC,OADAtyB,EAAIsyB,GApBR,SAAiCA,EAAWqI,EAAOgB,GACjD,IAAInC,EAAgB5F,EAAiBtB,GACjCiN,EAAiB,CAACzrE,EAAMG,GAAKvqC,QAAQ8vG,IAAkB,GAAK,EAAI,EAChEx7B,EAA0B,mBAAZ29B,EAAyBA,EAAQh0G,OAAOkD,OAAO,CAAC,EAAG8vG,EAAO,CAC1ErI,eACIqJ,EAAS6D,EAAWxhC,EAAK,GAAIyhC,EAAWzhC,EAAK;AAGnD,OAFAwhC,EAAWA,GAAY,EACvBC,GAAYA,GAAY,GAAKF,EACtB,CAACzrE,EAAMm+D,GAAOvoG,QAAQ8vG,IAAkB,EAAI,CACjD5lE,EAAG6rE,EACH1rE,EAAGyrE,GACD,CACF5rE,EAAG4rE,EACHzrE,EAAG0rE,EAEP,CAfA,CAoB6CnN,EAAWzuE,EAAM82E,MAAOgB,GAC1D37B,CACT,GAAG,CAAC,GACA0/B,EAAwBzrG,EAAK4vB,EAAMyuE,WAAY1+D,EAAI8rE,EAAsB9rE,EAAGG,EAAI2rE,EAAsB3rE;AACjE,MAArClQ,EAAM63E,cAAc2D,gBACtBx7E,EAAM63E,cAAc2D,cAAczrE,GAAKA,EACvC/P,EAAM63E,cAAc2D,cAActrE,GAAKA,GAEzClQ,EAAM63E,cAAc5zG,GAAQmM,CAC9B,GA3Fe,CACbnM,KAAM,OACNulE,WACA2lC,MAAO,OACP5qG,GA1FF,SAAc41E,GACZ,IAAIn6C,EAAQm6C,EAAKn6C,MAAOz2B,EAAU4wE,EAAK5wE,QAAStF,EAAOk2E,EAAKl2E;AAC5D,IAAI+7B,EAAM63E,cAAc5zG,GAAM63G,MAA9B,CAuBA,IApBA,IAAIC,EAAoBxyG,EAAQusG,SAAUkG,WAAgBD,GAAsCA,EAAmBE,EAAmB1yG,EAAQ2yG,QAASC,WAAeF,GAAqCA,EAAkBG,EAA8B7yG,EAAQ8yG,mBAAoBzF,EAAUrtG,EAAQqtG,QAASR,EAAW7sG,EAAQ6sG,SAAUE,EAAe/sG,EAAQ+sG,aAAcI,EAAcntG,EAAQmtG,YAAa4F,EAAwB/yG,EAAQgzG,eAAgBA,WAAiBD,GAA0CA,EAAuBE,EAAwBjzG,EAAQizG,sBACrjBC,EAAqBz8E,EAAMz2B,QAAQklG,UACnCkH,EAAgB5F,EAAiB0M,GAEjCJ,EAAqBD,IADHzG,IAAkB8G,GACqCF,EAhB/E,SAAuC9N,GACrC,GAAIsB,EAAiBtB,KAAeJ,EAClC,MAAO;AAET,IAAIqO,EAAoB5I,EAAqBrF;AAC7C,MAAO,CAACsF,GAA8BtF,GAAYiO,EAAmB3I,GAA8B2I,GACrG,CANA,CAgB2KD,GAA3E,CAAC3I,EAAqB2I,KAChHE,EAAc,CAACF,GAAoB3tG,OAAOutG,GAAoB39C,iBAAgByd,EAAKygC,GACrF,OAAOzgC,EAAIrtE,OAAOihG,EAAiB6M,KAAgBvO,EA9CvD,SAA8BruE,EAAOz2B,YAC/BA,IACFA,EAAU,CAAC;AAEb,IAAIm4F,EAAWn4F,EAASklG,EAAY/M,EAAS+M,UAAW2H,EAAW1U,EAAS0U,SAAUE,EAAe5U,EAAS4U,aAAcM,EAAUlV,EAASkV,QAAS2F,EAAiB7a,EAAS6a,eAAgBM,EAAwBnb,EAAS8a,sBAAuBA,WAAwBK,EAAmCnO,EAAamO,EAC9TnK,EAAYN,EAAa3D,GACzBqO,EAAepK,EAAY6J,EAAiB/N,EAAsBA,EAAoBv+F,iBAAgB2sG,GACxG,OAAOxK,EAAawK,KAAgBlK,CACtC,IAAKpE,EACDyO,EAAoBD,EAAa7sG,iBAAgB2sG,GACnD,OAAOJ,EAAsB32G,QAAQ+2G,IAAe,CACtD;AACiC,IAA7BG,EAAkBn4G,SACpBm4G,EAAoBD;AAEtB,IAAIE,EAAYD,EAAkBr+C,iBAAgByd,EAAKygC,GAOrD,OANAzgC,EAAIygC,GAAc5G,GAAeh2E,EAAO,CACtCyuE,UAAWmO,EACXxG,WACAE,eACAM,YACC7G,EAAiB6M,IACbzgC,CACT,GAAG,CAAC;AACJ,OAAOr4E,OAAOC,KAAKi5G,GAAWx+D,eAAclqC,EAAGC,GAC7C,OAAOyoG,EAAU1oG,GAAK0oG,EAAUzoG,EAClC,GACF,CA3BA,CA8CmFyrB,EAAO,CACpFyuE,UAAWmO,EACXxG,WACAE,eACAM,UACA2F,iBACAC,0BACGI,EACP,GAAG,IACCK,EAAgBj9E,EAAM82E,MAAMnH,UAC5B8C,EAAazyE,EAAM82E,MAAMvI,OACzB2O,EAA4B,IAAI96F,IAChC+6F,KACAC,EAAwBT,EAAY,GAC/Br2G,EAAI,EAAGA,EAAIq2G,EAAY/3G,OAAQ0B,IAAK,CAC3C,IAAImoG,EAAYkO,EAAYr2G,GACxB+2G,EAAiBtN,EAAiBtB,GAClC6O,EAAmBlL,EAAa3D,KAAer6F,EAC/CmpG,EAAa,CAACntE,EAAK+9D,GAAQtoG,QAAQw3G,IAAmB,EACtDtH,EAAMwH,EAAa,QAAU,SAC7BnJ,EAAW4B,GAAeh2E,EAAO,CACnCyuE,YACA2H,WACAE,eACAI,cACAE,YAEE4G,EAAoBD,EAAaD,EAAmBlP,EAAQn+D,EAAOqtE,EAAmBnP,EAAS/9D;AAC/F6sE,EAAclH,GAAOtD,EAAWsD,KAClCyH,EAAoB1J,EAAqB0J;AAE3C,IAAIC,EAAmB3J,EAAqB0J,GACxCE,EAAS;AAOb,GANI1B,GACF0B,EAAOr3G,KAAK+tG,EAASiJ,IAAmB,GAEtClB,GACFuB,EAAOr3G,KAAK+tG,EAASoJ,IAAsB,EAAGpJ,EAASqJ,IAAqB,GAE1EC,EAAOnsE,gBAAeosE,GACxB,OAAOA,CACT,IAAI,CACFP,EAAwB3O,EACxB0O;AACA,KACF,CACAD,EAAU3tG,IAAIk/F,EAAWiP,EAC3B,CACA,GAAIP,EAgBF,IAfA,IACIS,EAAQ,SAAgBC,GAC1B,IAAIC,EAAmBnB,EAAYp2G,eAAcq2G,GAC/C,IAAImB,EAAUb,EAAUx1G,IAAIk1G;AAC5B,GAAImB,EACF,OAAOA,EAAQh3G,MAAM,EAAG82G,GAAKtsE,gBAAeosE,GAC1C,OAAOA,CACT,GAEJ;AACA,GAAIG,EAEF,OADAV,EAAwBU,EACjB,OAEX,EACSp5G,EAfY63G,EAAiB,EAAI,EAeZ73G,EAAK,GAEpB,UADFk5G,EAAMl5G,GADmBA,KAKpCs7B,EAAMyuE,YAAc2O,IACtBp9E,EAAM63E,cAAc5zG,GAAM63G,SAC1B97E,EAAMyuE,UAAY2O,EAClBp9E,EAAMpB,SA/ER,CAiFF,EAMEg6E,iBAAkB,CAAC,UACnBxoG,KAAM,CACJ0rG,WAkMsB,CACxB73G,KAAM,kBACNulE,WACA2lC,MAAO,OACP5qG,GAxFF,SAAyB41E,GACvB,IAAIn6C,EAAQm6C,EAAKn6C,MAAOz2B,EAAU4wE,EAAK5wE,QAAStF,EAAOk2E,EAAKl2E,KACxD83G,EAAoBxyG,EAAQusG,SAAUkG,WAAgBD,GAAsCA,EAAmBE,EAAmB1yG,EAAQ2yG,QAASC,WAAeF,GAAsCA,EAAkB7F,EAAW7sG,EAAQ6sG,SAAUE,EAAe/sG,EAAQ+sG,aAAcI,EAAcntG,EAAQmtG,YAAaE,EAAUrtG,EAAQqtG,QAASoH,EAAkBz0G,EAAQ00G,OAAQA,WAASD,GAAoCA,EAAiBE,EAAwB30G,EAAQ40G,aAAcA,WAAeD,EAAmC,EAAIA,EAC9hB9J,EAAW4B,GAAeh2E,EAAO,CACnCo2E,WACAE,eACAM,UACAF,gBAEEf,EAAgB5F,EAAiB/vE,EAAMyuE,WACvCiE,EAAYN,EAAapyE,EAAMyuE,WAC/B2P,GAAmB1L,EACnBoD,EAAWlE,EAAyB+D,GACpCuG,EAfY,MAeSpG,EAfH,IAAM,IAgBxB0B,EAAiBx3E,EAAM63E,cAAc2D,cACrCyB,EAAgBj9E,EAAM82E,MAAMnH,UAC5B8C,EAAazyE,EAAM82E,MAAMvI,OACzB8P,EAA4C,mBAAjBF,EAA8BA,EAAar6G,OAAOkD,OAAO,CAAC,EAAGg5B,EAAM82E,MAAO,CACvGrI,UAAWzuE,EAAMyuE,aACb0P,EACFG,EAA2D,iBAAtBD,EAAiC,CACxEvI,SAAUuI,EACVnC,QAASmC,GACPv6G,OAAOkD,OAAO,CAChB8uG,SAAU,EACVoG,QAAS,GACRmC,GACCE,EAAsBv+E,EAAM63E,cAAclrF,OAASqT,EAAM63E,cAAclrF,OAAOqT,EAAMyuE,WAAa,KACjGr+F,EAAO,CACT2/B,EAAG,EACHG,EAAG;AAEL,GAAKsnE,EAAL,CAGA,GAAIwE,EAAe,CACjB,IAAIwC,EACAC,EAAwB,MAAb3I,EAAmB1lE,EAAMH,EACpCyuE,EAAuB,MAAb5I,EAAmB3H,EAASC,EACtC2H,EAAmB,MAAbD,EAAmB,SAAW,QACpCgC,EAAUN,EAAe1B,GACzBhE,EAAQgG,EAAU1D,EAASqK,GAC3B1M,EAAQ+F,EAAU1D,EAASsK,GAC3BC,EAAWV,GAAUxL,EAAWsD,GAAO,EAAI,EAC3C6I,EAASlM,IAAct+F,EAAQ6oG,EAAclH,GAAOtD,EAAWsD,GAC/D8I,EAASnM,IAAct+F,GAASq+F,EAAWsD,IAAQkH,EAAclH,GACjE+I,EAAe9+E,EAAM24C,SAAS+2B,MAC9BqP,EAAYd,GAAUa,EAAehO,EAAcgO,GAAgB,CACrElvE,MAAO,EACPC,OAAQ,GAENmvE,GAAqBh/E,EAAM63E,cAAc,oBAAsB73E,EAAM63E,cAAc,oBAAoBjB,QA7vBtG,CACLxmE,IAAK,EACLg+D,MAAO,EACPD,OAAQ,EACRl+D,KAAM,GA0vBFgvE,GAAkBD,GAAmBP,GACrCS,GAAkBF,GAAmBN,GACrCS,GAAWtN,EAAO,EAAGoL,EAAclH,GAAMgJ,EAAUhJ,IACnDqJ,GAAYhB,EAAkBnB,EAAclH,GAAO,EAAI4I,EAAWQ,GAAWF,GAAkBX,EAA4BxI,SAAW8I,EAASO,GAAWF,GAAkBX,EAA4BxI,SACxMuJ,GAAYjB,GAAmBnB,EAAclH,GAAO,EAAI4I,EAAWQ,GAAWD,GAAkBZ,EAA4BxI,SAAW+I,EAASM,GAAWD,GAAkBZ,EAA4BxI,SACzMwJ,GAAoBt/E,EAAM24C,SAAS+2B,OAAS0B,EAAgBpxE,EAAM24C,SAAS+2B,OAC3E6P,GAAeD,GAAiC,MAAbxJ,EAAmBwJ,GAAkBlK,WAAa,EAAIkK,GAAkBjK,YAAc,EAAI,EAC7HmK,GAAwH,OAAjGhB,EAA+C,MAAvBD,SAAuCA,EAAoBzI,IAAqB0I,EAAwB,EAEvJiB,GAAY3H,EAAUuH,GAAYG,GAClCE,GAAkB7N,EAAOoM,EAASthE,EAAIm1D,EAF1BgG,EAAUsH,GAAYI,GAAsBD,IAEEzN,EAAOgG,EAASmG,EAAS3iE,EAAIy2D,EAAO0N,IAAa1N;AAC/GyF,EAAe1B,GAAY4J,GAC3BtvG,EAAK0lG,GAAY4J,GAAkB5H,CACrC,CACA,GAAIqE,EAAc,CAChB,IAAIwD,GACAC,GAAyB,MAAb9J,EAAmB1lE,EAAMH,EACrC4vE,GAAwB,MAAb/J,EAAmB3H,EAASC,EACvC0R,GAAUtI,EAAe0E,GACzB5kC,GAAmB,MAAZ4kC,EAAkB,SAAW,QACpC6D,GAAOD,GAAU1L,EAASwL,IAC1BI,GAAOF,GAAU1L,EAASyL,IAC1BI,IAAuD,IAAxC,CAAC7vE,EAAKH,GAAMpqC,QAAQ8vG,GACnCuK,GAAyH,OAAjGP,GAAgD,MAAvBpB,SAAuCA,EAAoBrC,IAAoByD,GAAyB,EACzJQ,GAAaF,GAAeF,GAAOD,GAAU7C,EAAc3lC,IAAQm7B,EAAWn7B,IAAQ4oC,GAAuB5B,EAA4BpC,QACzIkE,GAAaH,GAAeH,GAAU7C,EAAc3lC,IAAQm7B,EAAWn7B,IAAQ4oC,GAAuB5B,EAA4BpC,QAAU8D,GAC5IK,GAAmBpC,GAAUgC,IA5xB/BlgE,GAAI8xD,EA4xByDsO,GAAYL,GA7xB1CQ,GA6xBmDF,KA3xB3EE,GAAOA,GAAOvgE,GA2xB2E8xD,EAAOoM,EAASkC,GAAaJ,GAAMD,GAAS7B,EAASmC,GAAaJ;AACpKxI,EAAe0E,GAAWmE,GAC1BjwG,EAAK8rG,GAAWmE,GAAmBP,EACrC,CAhyBF,IAAqCQ,GAC/BvgE;AAgyBJ/f,EAAM63E,cAAc5zG,GAAQmM,CAhD5B,CAiDF,EAMEwoG,iBAAkB,CAAC,WAhuBL,CACd30G,KAAM,QACNulE,WACA2lC,MAAO,OACP5qG,GAjDF,SAAe41E,GACb,IAAIomC,EACAvgF,EAAQm6C,EAAKn6C,MAAO/7B,EAAOk2E,EAAKl2E,KAAMsF,EAAU4wE,EAAK5wE,QACrDu1G,EAAe9+E,EAAM24C,SAAS+2B,MAC9B8H,EAAiBx3E,EAAM63E,cAAc2D,cACrC7F,EAAgB5F,EAAiB/vE,EAAMyuE,WACvCuJ,EAAOpG,EAAyB+D,GAEhCI,EADa,CAAC9lE,EAAMm+D,GAAOvoG,QAAQ8vG,IAAkB,EAClC,SAAW;AAClC,GAAKmJ,GAAiBtH,EAAtB,CAGA,IAAIvF,EAlBgB,SAA0B2E,EAAS52E,GAIvD,OAAOgyE,EAAsC,iBAH7C4E,EAA6B,mBAAZA,EAAyBA,EAAQ9yG,OAAOkD,OAAO,CAAC,EAAGg5B,EAAM82E,MAAO,CAC/ErI,UAAWzuE,EAAMyuE,aACbmI,GACkDA,EAAU1E,EAAgB0E,EAAStI,GAC7F,CALsB,CAkBgB/kG,EAAQqtG,QAAS52E,GACjD++E,EAAYjO,EAAcgO,GAC1B0B,EAAmB,MAATxI,EAAe5nE,EAAMH,EAC/BwwE,EAAmB,MAATzI,EAAe7J,EAASC,EAClCsS,EAAU1gF,EAAM82E,MAAMnH,UAAUoG,GAAO/1E,EAAM82E,MAAMnH,UAAUqI,GAAQR,EAAeQ,GAAQh4E,EAAM82E,MAAMvI,OAAOwH,GAC/G4K,EAAYnJ,EAAeQ,GAAQh4E,EAAM82E,MAAMnH,UAAUqI,GACzDsH,EAAoBlO,EAAgB0N,GACpC8B,EAAatB,EAA6B,MAATtH,EAAesH,EAAkBpK,cAAgB,EAAIoK,EAAkBrK,aAAe,EAAI,EAC3H4L,EAAoBH,EAAU,EAAIC,EAAY,EAC9CG,EAAO7O,EAAcuO,GACrBF,EAAOM,EAAa7B,EAAUhJ,GAAO9D,EAAcwO,GACnDM,EAASH,EAAa,EAAI7B,EAAUhJ,GAAO,EAAI8K,EAC/C/I,EAAUjG,EAAOiP,EAAMC,EAAQT,GAC/BU,EAAWhJ;AACfh4E,EAAM63E,cAAc5zG,KAASs8G,EAAwB,CAAC,GAAyBS,GAAYlJ,EAASyI,EAAsBU,aAAenJ,EAAUiJ,EAAQR,EAf3J,CAgBF,EAuBEhR,OAtBF,SAAkBjwB,GAChB,IAAIt/C,EAAQs/C,EAAMt/C,MACdkhF,EAD+B5hC,EAAM/1E,QACV28B,QAAS44E,WAAeoC,EAA8B,sBAAwBA;AACzF,MAAhBpC,IAGwB,iBAAjBA,IACTA,EAAe9+E,EAAM24C,SAAS41B,OAAOr5E,cAAc4pF,MAKhDvyE,EAASvM,EAAM24C,SAAS41B,OAAQuQ,KAGrC9+E,EAAM24C,SAAS+2B,MAAQoP,EACzB,EAOEhP,SAAU,CAAC,iBACX8I,iBAAkB,CAAC,oBAkkBN,CACb30G,KAAM,OACNulE,WACA2lC,MAAO,OACPyJ,iBAAkB,CAAC,mBACnBr0G,GA/BF,SAAc41E,GACZ,IAAIn6C,EAAQm6C,EAAKn6C,MAAO/7B,EAAOk2E,EAAKl2E,KAChCg5G,EAAgBj9E,EAAM82E,MAAMnH,UAC5B8C,EAAazyE,EAAM82E,MAAMvI,OACzB2J,EAAmBl4E,EAAM63E,cAAcsJ,gBACvCC,EAAoBpL,GAAeh2E,EAAO,CAC5Cw2E,eAAgB,cAEd6K,EAAoBrL,GAAeh2E,EAAO,CAC5C02E,iBAEE4K,EAA2BrJ,GAAemJ,EAAmBnE,GAC7DsE,EAAsBtJ,GAAeoJ,EAAmB5O,EAAYyF,GACpEsJ,EAAoBrJ,GAAsBmJ,GAC1CG,EAAmBtJ,GAAsBoJ;AAC7CvhF,EAAM63E,cAAc5zG,GAAQ,CAC1Bq9G,2BACAC,sBACAC,oBACAC,oBAEFzhF,EAAMwyB,WAAW+7C,OAASzqG,OAAOkD,OAAO,CAAC,EAAGg5B,EAAMwyB,WAAW+7C,OAAQ,CACnE,+BAAgCiT,EAChC,sBAAuBC,GAE3B;AA6ZA,MAEMC,GAAiB,MACrB7wF,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKs8G,qBAAuB5oG,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAKu8G,qBAAuB7oG,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAKw8G,eAAiB,KACtBx8G,KAAKy8G,qBACLz8G,KAAKohF,mBAAsBC,IACzBrhF,KAAKqhF,eAAiBA,GAExBrhF,KAAKs5C,YAAc,QACnBt5C,KAAK6qD,YACL7qD,KAAKqgF,YACLrgF,KAAK08G,iBAAmB,SACxB18G,KAAK28G,gBAAkB,WACvB38G,KAAK48G,uBACL58G,KAAK68G,gBAAkB,EACvB78G,KAAKqhF,qBACP,CAKAy7B,YAAY58G,GACNF,KAAKqgF,WAAangF,EAAE+uD,eAAe5uD,SAASL,KAAKgtD,KACnDhtD,KAAK+8G,eAET,CAIAC,iBAAiB7kF,EAAUq+B,GACrBr+B,IAAaq+B,IAGbx2D,KAAKqgF,UACFrgF,KAAKy8G,oBACRz8G,KAAKi9G,mBACLj9G,KAAKy8G,sBAEPz8G,KAAKk9G,gBAELl9G,KAAK+8G,gBAET,CACAI,oBACiCn9G,KAAKgtD,GAAG5nB,iBAAiByjE,EAASjnB,0BAA0BtgF,KAAK87G,GAAWhwB,EAAQhjB,oBAAoBgzC,KAASr1G,KAAK,MAC9HpJ,SAASkiC,IAC9BA,EAAQgqB,SAAW7qD,KAAK6qD,QAAQ,GAEpC,CAIAwyD,iBACE,OAAIr9G,KAAKqgF,SACArgF,KAAK+8G,gBAEL/8G,KAAKk9G,cAEhB,CAIAA,eACE,GAAIl9G,KAAKqgF,SACP,OAAO8B,QAAQC;AAEjB,MAAMk7B,iBAAEA,GAAqBt9G,KAAKs8G,qBAAqB//C;AAIvD,OAHK+gD,GAAqBt9G,KAAKqgF,WAC7BrgF,KAAKqgF,aAEA8B,QAAQC,SACjB,CAIA26B,gBACE,IAAK/8G,KAAKqgF,SACR,OAAO8B,QAAQC;AAEjB,MAAMk7B,iBAAEA,GAAqBt9G,KAAKu8G,qBAAqBhgD;AAIvD,OAHK+gD,GAAoBt9G,KAAKqgF,WAC5BrgF,KAAKqgF,aAEA8B,QAAQC,SACjB,CAKAm7B,+BACE,IAAI73G;AAEJ,aADsC,QAA9BA,EAAK1F,KAAKw8G,0BAA4B92G,SAAyBA,EAAGqyC,UACnEoqC,QAAQC,SACjB,CACAo7B,wBAAwBt9G,GACP,cAAXA,EAAEkS,MAAmC,UAAXlS,EAAEkS,MAC9BpS,KAAKk9G,eAEQ,aAAXh9G,EAAEkS,MAAkC,SAAXlS,EAAEkS,MAC7BpS,KAAK+8G,eAET,CACAQ,wBAAwBr9G,GACtB,GAAIF,KAAK6qD,UAAiC,SAArB7qD,KAAKs5C,YACxB;AAEuB,UAArBt5C,KAAKs5C,aAAsC,UAAXp5C,EAAEkS,MACpCpS,KAAKq9G,iBAEkB,UAArBr9G,KAAKs5C,aAA2Bp5C,aAAau9G,eAA2B,UAAVv9G,EAAEqB,KAClEvB,KAAKq9G,iBAEkB,UAArBr9G,KAAKs5C,aACPt5C,KAAKw9G,wBAAwBt9G;AAE/B,MAAMw9G,EAAU19G,KAAKgtD,GAAGn9B,cAAc;AACb,eAArB7vB,KAAKs5C,aAA2C,UAAXp5C,EAAEkS,MAAoBlS,EAAE+uD,eAAe5uD,SAASq9G,IACvF19G,KAAKq9G,iBAEkB,eAArBr9G,KAAKs5C,aAAgCp5C,aAAau9G,eAA2B,UAAVv9G,EAAEqB,KACzErB,EAAE+uD,eAAe5uD,SAASq9G,IACxB19G,KAAKq9G,iBAEHn9G,aAAau9G,eAA2B,WAAVv9G,EAAEqB,KAC9BvB,KAAKqgF,WACPrgF,KAAK+8G,gBACL78G,EAAEonG,mBAGFtnG,KAAKw8G,sBACDx8G,KAAKw8G,eAAezkE,QAE9B,CACAklE,mBACE,MAAMjwD,GAAEA,EAAEwvD,eAAEA,EAAgBE,iBAAkBtT,EAAWuT,gBAAiB39C,EAAU49C,gBAAiBtG,EAAUuG,gBAAiBtG,GAAav2G;AACzIw8G,IACFA,EAAe/G,UACfz1G,KAAKw8G,eAAiB;AAExB,MAAMkB,EAAU1wD,EACV2wD,EAAU3wD,EAAGn9B,cAAc;AACjB,OAAZ8tF,IAGJ39G,KAAKw8G,eAAiB5I,GAAa8J,EAASC,EAAS,CAEnDvU,YACApqC,WACAq0C,UAAW,CACT,CACEz0G,KAAM,SACNsF,QAAS,CACPojB,OAAQ,CAACgvF,EAAUC,QAK7B,CACAqH,sBACE,MAAMpB,eAAEA,EAAgBI,gBAAiBtG,EAAUuG,gBAAiBtG,GAAav2G;AACjFw8G,EAAe/H,WAAW,CACxBpB,UAAW,CACT,CACEz0G,KAAM,SACNsF,QAAS,CACPojB,OAAQ,CAACgvF,EAAUC,OAK7B,CACAsH,oBACO79G,KAAKgtD,GAAGhmB,aAGThnC,KAAKqgF,WAAargF,KAAKy8G,oBACzBz8G,KAAKi9G,mBACLj9G,KAAKy8G,qBAET,CACAqB,uBACM99G,KAAKgtD,GAAGhmB,cAGRhnC,KAAKw8G,iBACPx8G,KAAKw8G,eAAe/G,UACpBz1G,KAAKw8G,eAAiB,MAExBx8G,KAAKy8G,qBACP,CACAsB,kBACE/9G,KAAKg+G,iBAAmBh+G,KAAKgtD,GAAGn9B,cAAcg5E,EAASjnB,0BAA0B75E,KAAK,MACtF/H,KAAKm9G,mBACP,CACAnnB,oBACEh2F,KAAKo+E,iBAAmBwqB,EAAKznB,sBAAsBnhF,KAAKgtD,GAAIhtD,KAAKohF,mBACnE,CACA8U,sBACE,GAAIl2F,KAAKg+G,iBAAkB,CACzB,MAAML,EAAU39G,KAAKgtD,GAAGn9B,cAAc;AACjC8tF,EAAQnjG,KACXmjG,EAAQnjG,GAAM,WAAUw1D,EAAGA,QAE7B44B,EAAK1oB,4BAA4BlgF,KAAKg+G,iBAAkB,CACtD39B,SAAUrgF,KAAKqgF,SAAS32E,WACxB42E,UAAWq9B,EAAQnjG,IAEvB,CACF,CACA47E,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,kBAAmBvW,SAAUrgF,KAAKqgF,SAAUyW,QAAU52F,IACzIF,KAAKi+G,kBAAkB/9G,IACtBg+G,YAAch+G,IACfF,KAAKi+G,kBAAkB/9G,IACtBi+G,WAAaj+G,IACdF,KAAKi+G,kBAAkB/9G,IACtBk+G,UAAYl+G,IACbF,KAAKi+G,kBAAkB/9G,IACtBm+G,QAAUn+G,IACXF,KAAKi+G,kBAAkB/9G,IACtBo+G,OAASp+G,IACVF,KAAKi+G,kBAAkB/9G,KACpBwT,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAW2/G,aAAcA,IAAMv+G,KAAK+9G,oBAAsBrqG,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,YACnN,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACL1nB,SAAY,CAAC,oBACbx1B,SAAY,CAAC,qBACb+xD,gBAAmB,CAAC,uBACpBC,gBAAmB,CAAC,uBAExB;AAIF,OAFAR,GAAezqC,MAhPW,2gBAiP1B82B,GAAyB8V,gBAAkBnC,GACpC3T,EACR,CAEA,IAEI+V,GAkCAC,GA8FAC,GAmNAC,GAqEAC,GA1ZAC,GAA6B,CAAC,EAkC9BC,GAAwB,CAAC,EA8FzBC,GAA6B,CAAC,EAiN9BC,GAAyB,CAAC,EAE1BC,GAAgB,CAAC;AAIrB,SAASC,KACR,OAAIP,KACJA,GAA2B,EAC1B,SAAUh1C,GACV,MAAMl2D,EAAQu2D,EAAcC;AAE5B,IAAUk1C;AAsBV,SAASC,EAAqB7tB,GAC5B,IAAKA,EAAI8tB,aAA+B,UAAhB9tB,EAAIsW,SAAuB3qF,QAAQq0E,EAAI7vE,OAAS6vE,EAAI8tB,aAAe9tB,EAAI+tB,UAC7F;AAEF,MAAMC,EAAiBhuB,EAAI3hE,cAAc;AACzC,OAAK2vF,EAGD9rG,EAAM82D,qBAAqBg1C,EAAgB,mBACtC51C,EAAQw1C,uBAAuBK,SAEpC/rG,EAAM82D,qBAAqBg1C,EAAgB,gBACtC51C,EAAQw1C,uBAAuBM,MAEpChsG,EAAM82D,qBAAqBg1C,EAAgB,iBACtC51C,EAAQw1C,uBAAuBO,cAT/B/1C,EAAQw1C,uBAAuBQ,0BAY1C,CAzCAh2C,EAAQw1C,+BACEA,EAKPx1C,EAAQw1C,yBAA2Bx1C,EAAQw1C,uBAAyB,CAAC,IAJ/CA,EAA8BM,MAAI,GAAK,QAC9DN,EAAuBA,EAAiCK,SAAI,GAAK,WACjEL,EAAuBA,EAA+BO,OAAI,GAAK,SAC/DP,EAAuBA,EAAmDQ,2BAAI,GAAK,6BAkDrFh2C,EAAQi2C,sBAbR,SAA+B9+G,GAC7B,GAAI2S,EAAM82D,qBAAqBzpE,EAAM,sBAAuB,CAC1D,MAAM++G,EAAW/+G,EAAK8uB,cAAcnc,EAAM02D,oBAAoB;AAC9D,OAAI01C,EACKT,EAAqBS,GAEvBl2C,EAAQw1C,uBAAuBQ,0BACxC,CACA,GAAIlsG,EAAM82D,qBAAqBzpE,EAAM,cACnC,OAAOs+G,EAAqBt+G,EAGhC,EAEA6oE,EAAQm2C,eA9CR,SAAwBC,GACtB,IAAIt6G;AACJ,IAAKs6G,EACH;AAEF,MAAMj7F,EAAqC,QAA1Brf,EAAKs6G,EAAQj7F,mBAAqBrf,SAAyBA,EAAGu6G;AAM/E,MALyB,CACvBvsG,EAAM02D,oBAAoB,mBAAmB61C,oBAC7CvsG,EAAM02D,oBAAoB,gBAAgB61C,oBAC1CvsG,EAAM02D,oBAAoB,iBAAiB61C,qBAErB5/G,SAAS0kB,EACnC,EAmCA6kD,EAAQs2C,aAlDR,SAAsBn7G,GACpB,MAAiB,KAAVA,SAAgBA,GAAsCpE,MAAMiG,QAAQ7B,IAA2B,IAAjBA,EAAMxF,MAC7F,CAiDA,CA5DA,CA4DE2/G,KA9DkCA,EAgEtC,CAmWA,IAEIiB,GAwEAC,GAuNAC,GAuUAC,GAwBAC,GAkJAC,GAmwBAC,GAwBAC,GAiDAC,GAkBAC,GAhnDAC,GAA+B,CAAC,EAwEhCC,GAAqC,CAAC,EAuNtCC,GAA8B,CAAC,EAuU/BC,GAAyB,CAAC,EAwB1BC,GAAyB,CAAC,EAkJ1BC,GAAuB,CAAC,EAmwBxBC,GAAsC,CAAC,EAwBvCC,GAA+B,CAAC,EA+ChCC,GAAgC,CAAC,EAEjCC,GAAgB,CAAC;AAIrB,SAASC,KACR,OAAIZ,KACJA,GAA2B,EAU3BW,GAAcE,qBATd,SAA8B9D,GAC5B,MAAMvnC,EAAOunC,EAAQh5E,QAAQ;AAC7B,GAAIyxC,EAAM,CACR,MAAMsrC,EAAetrC,EAAKtmD,cAAc;AACpC4xF,GACFA,EAAav4E,OAEjB,CACF,GAVqCo4E,EAatC,CAkHA,IAIII,GAgCAC,GApCAC,GAA8B,CAAC,EAE/BC,GAAuB,CAAC;AAI5B,SAASC,KACR,OAAIJ,KACJA,GAAkC,GAExBK,EAKPC,IAAiBA,EAAe,CAAC,IAJdC,KAAI,OACxBF,EAAqBG,MAAI,QACzBH,EAAkBI,GAAI,KACtBJ,EAAmBK,IAAI,MAkBzBP,GAAqBQ,oBAhBrB,SAA6BlqF,GAC3B,OAAQA,GACN,IAAK,GACL,OACA,KAAK6pF,EAAaG,GAClB,KAAKH,EAAaC,KAChB,OAAOD,EAAaG;AACtB,OAEA,KAAKH,EAAaI,IAClB,KAAKJ,EAAaE,MAChB,OAAOF,EAAaI;AACtB,QACE,OAAOjqF,EAEb,GAxB4C0pF;AAE5C,IAAIG,EACMD,CAwBX,CAmRA,IAEIO,GA+OAC,GA6DAC,GAYAC,GAoWAC,GA9pBAC,GAA4B,CAAC,EA+O7BC,GAAuB,CAAC,EAuDxBC,GAAuB,CAAC,EAExBC,GAAsB,CAAC,EAEvBC,GAAoB,CAAC,EAErBC,GAAoB,CAAC;AAIzB,SAASC,KACR,OAAIT,KACJA,GAA+B,EAI/BQ,GAAkBE,aAHlB,SAAsBppC,GACpB,OAAO9sE,KAAKipC,OAAO,IAAI6jC,EAAU10C,iBAAiB,MAAM9jC,KAAK0rD,GAAO3uC,OAAOmmF,WAAW9hG,OAAOgvE,iBAAiB1kB,GAAIm2D,UAASv4G,QAAQu4G,IAAY9kG,OAAO81D,MAAMgvC,KAAU,EACxK,GAJyCH,EAO1C,CAIA,SAASI,KACR,GAAIX,GAA8B,OAAOM;AACzCN,GAA+B;AAC/B,MAAMY,EAAYJ,KACZK,EAAMrhC,IACNvuE,EAAQu2D,EAAcC;AAC5BqzC,eAAegG,EAAoBv2D,EAAI+8C,GACrC,MAAMyZ,EAAgB9xC,iBAAiB1kB,IACjCy2D,mBAAEA,GAAuBD,EACzBE,EAAaD,EAAmB5zG,MAAM;AAC5C,OAAOsyE,QAAQwhC,IAAIllH,OAAOC,KAAKqrG,GAAQzoG,KAAK0K,IAC1C,MAAMjH,EAAQglG,EAAO/9F;AACrB,OAAO,IAAIm2E,SAASC,IACbr9E,GACHq9E,IACEr9E,IAAUioD,EAAG4kB,MAAM5lE,IACrBo2E,IACGshC,EAAWrjH,SAAS2L,KACvBghD,EAAG4kB,MAAM5lE,GAAYjH,EACrBq9E;AAEF,MAAMwhC,EAAmB1jH,IACnBA,EAAE2jH,eAAiB73G,IAEvBghD,EAAGmxB,oBAAoB,gBAAiBylC,GACxCxhC;AAEFp1B,EAAGj4C,iBAAiB,gBAAiB6uG,GACrC52D,EAAG4kB,MAAM5lE,GAAYjH,CAAK,GAC1B,IAEN,CACA,SAAS++G,EAAmB/+G,GAC1B,MAAMggB,EAAUhgB,eAA8CA,EAAMggB,QAAQke;AAC5E,OAAO9lB,QAAQpY,GAASggB,IAAYrR,EAAM02D,oBAAoB,uBAChE,CACA,SAAS25C,EAAqBh/G,GAC5B,MAAMggB,EAAUhgB,eAA8CA,EAAMggB,QAAQke;AAC5E,OAAO9lB,QAAQpY,GAASggB,IAAYrR,EAAM02D,oBAAoB,yBAChE,CAIA,MAAM45C,EAAeh3G,KAAKsqC,IAAI,IAAM,IAE9B2sE,EAAwBvwG,EAAM02D,oBAAoB;AAmSxD,SAAS85C,EAAel3D,GACtB,MAAM3iB,EAAO2iB,EAAG1iB;AAChB,MAAO,CACLS,IAAK/9B,KAAKE,MAAMm9B,EAAKU,KACrBg+D,MAAO/7F,KAAKE,MAAMm9B,EAAK0+D,OACvBD,OAAQ97F,KAAKE,MAAMm9B,EAAKy+D,QACxBl+D,KAAM59B,KAAKE,MAAMm9B,EAAKO,MACtBL,MAAOv9B,KAAKE,MAAMm9B,EAAKE,OACvBC,OAAQx9B,KAAKE,MAAMm9B,EAAKG,QAE5B,CAKA,OAJAu4E,GAAkBoB,UA7SlB,MAEE34F,YAAYwhC,EAAIqH,GACdr0D,KAAKgtD,GAAKA,EACVhtD,KAAKokH,QAAU/vD,eAA4CA,EAAK+vD,SAAW,MAC7E,CAKA7G,YAAY8G,GACVrkH,KAAKskH;AACL,MAAM55E,EAAEA,EAACG,EAAEA,GAAMw5E;AACjBrkH,KAAKukH,YAAcvkH,KAAKwkH,eAAiBH;AACzC,MAAMr3D,GAAEA,EAAEo3D,OAAEA,GAAWpkH,KACjBykH,EAAmBV,EAAqB/2D,GAAMA,EAAGn9B,cAAc,mBAAqBm9B,GAClFjiB,IAAK25E,EAAU3b,MAAO4b,EAAY/5E,KAAMg6E,EAAWr6E,MAAOs6E,EAAYr6E,OAAQs6E,GAAgBZ,EAAeO,GAC/G3iH,EAASkrD,EAAG/rB,cACZr/B,EAAS+a,SAASooG,kBAAkBr6E,EAAGG,GAAG,GAC1C7S,EAAQysF,EAAiBO;AAgB/B,GAfAhtF,EAAM4O,UAAUx/B,IAAI,oBAAqB,6BACzCpH,KAAK8B,OAASA,EACd9B,KAAK4B,OAASA,EACd5B,KAAKg4B,MAAQA,GACag1B,EAAGi4D,cAAc,IAAIC,YAAY,kBAAmB,CAC5EC,WACAjyF,cACAqgE,OAAQ90F,OAAOkD,OAAOlD,OAAOkD,OAAO,CAAC,EAAG0iH,GAAS,CAC/Cr3D,KAEAlrD,SACAF,SACAo2B,aAKF,YADAh4B,KAAKskH;AAGPtkH,KAAKqvG,aAyNT,SAAyBxuE,GACvB,IAAI4H,EAAS5H,EAAQI;AACrB,KAAOwH,IAAW9rB,SAASsqB,iBAAiB,CAC1C,MAAMgoE,UAAEA,EAASD,UAAEA,GAAct9B,iBAAiBjpC,GAC5C28E,EAAc,gBAAgBriH,KAAKksG,IAAcxmE,EAAOiO,aAAejO,EAAO8iE,aAC9E8Z,EAAc,gBAAgBtiH,KAAKisG,IAAcvmE,EAAOynE,YAAcznE,EAAO6iE;AACnF,GAAI8Z,GAAeC,EACjB,OAAO58E;AACTA,EAASA,EAAOxH,aAClB,CACA,OAAOtkB,SAASsqB,eAClB,CAXA,CAzNwC+lB,GACpCA,EAAGpmB,UAAUx/B,IAAI,2BACjB3I,OAAOkD,OAAOq2B,EAAM45C,MAAO,CACzBnnC,SAAU,QACV66E,QAAS,EAET7B,mBAAoB,SAGtB9mG,SAAS6F,KAAK8Y,OAAOtD,SACfsrF,EAAIphC;AACV,MAAQ33C,MAAOg7E,EAAY/6E,OAAQg7E,GAAgBtB,EAAelsF;AAClEv5B,OAAOkD,OAAOq2B,EAAM45C,MAAO,CACzB0zC,QAAS,GAET/6E,MAAQ,GAAEs6E,MACVr6E,OAAS,GAAEs6E,MACX/5E,IAAM,GAAE25E,MACR95E,KAAiB,UAAXw5E,EAAsB,GAAEQ,MAAgB,OAC9C7b,MAAkB,SAAXqb,EAAuB1hH,OAAO2yC,WAAasvE,EAAtB,KAAuC,OACnExB,OAAS,GAAEE,EAAUH,aAAavmG,SAAS6F,MAAQ,YAE/C8gG,EAAIphC,6BACVlqD,EAAM45C,MAAM6xC,mBAAqB,GAC7BK,EAAmB9rF,IACrBA,EAAMnI,cAAc,wBAAwB+W,UAAUx/B,IAAI,gCAE5D4wB,EAAM45C,MAAM6zC,YAAY,qCAAsC,KAC9DlC,EAAoBvrF,EAAO,CACzB+S,IAAM,GAAE25E,GAAYI,EAAcU,GAAe,MACjDh7E,OAAS,GAAEg7E,MACXj7E,MAAkB,SAAX65E,EAAqB,GAAES,MAAkB,GAAEU,QACjDroF,WACDlF,EAAM4O,UAAU7yB,OAAO,4BAA4B,GAEvD,CAIA2xG,KAAKrB,GACH,MAAMr3D,GAAEA,EAAEh1B,MAAEA,EAAKl2B,OAAEA,EAAMF,OAAEA,EAAM2iH,YAAEA,EAAWC,eAAEA,EAAcF,SAAEA,GAAatkH,MACvE0qC,EAAEA,EAACG,EAAEA,GAAMw5E;AACjB,GAAIC,EACF;AACF,IAAKtsF,EACH;AACF,GAAI0S,IAAM85E,EAAe95E,GAAKG,IAAM25E,EAAe35E,EACjD;AACF7qC,KAAKwkH,eAAiBH;AACtB,MAAMsB,EAAY,IAAIhpG,SAASooG,kBAAkBr6E,EAAGG,IAAI3pC,MAAM0kH,IACpD5tF,EAAMkP,SAAS0+E;AAErBD,IAAc/jH,IAChBA,SAAgDA,EAAOqjH,cAAc,IAAIC,YAAY,kBAAmB,CACtGC,WACA5xB,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,SACAo2B,YAGJ2tF,SAAsDA,EAAUV,cAAc,IAAIC,YAAY,kBAAmB,CAC/GC,WACA5xB,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,OAAQ+jH,EACR3tF,YAGJh4B,KAAK4B,OAAS+jH,GAEhBA,SAAsDA,EAAUV,cAAc,IAAIC,YAAY,iBAAkB,CAC9GC,WACA5xB,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,OAAQ+jH,EACR3tF;AAGJ,MAAM6tF,EAASn7E,EAAI65E,EAAY75E,EACzBo7E,EAASj7E,EAAI05E,EAAY15E;AAC/BpsC,OAAOkD,OAAOq2B,EAAM45C,MAAO,CACzBlH,UAAY,aAAYm7C,QAAaC,SAEvC9lH,KAAKqpC,QACP,CAMAk0E,UAAU8G,GACR,GAAIrkH,KAAKskH,SACP;AACF,MAAMt3D,GAAEA,EAAElrD,OAAEA,EAAMk2B,MAAEA,EAAKosF,OAAEA,EAAM2B,eAAEA,GAAmB/lH,MAChD0qC,EAAEA,EAACG,EAAEA,GAAMw5E;AAEjB,GADAtgH,cAAcgiH,IACT/tF,EACH;AACF,MAAMp2B,EAAS,IAAI+a,SAASooG,kBAAkBr6E,EAAGG,IAAI3pC,MAAM0kH,IACjD5tF,EAAMkP,SAAS0+E;CAEC54D,EAAGi4D,cAAc,IAAIC,YAAY,gBAAiB,CAC1EC,WACAjyF,cACAqgE,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,SACAo2B,aAIFp2B,SAAgDA,EAAOqjH,cAAc,IAAIC,YAAY,iBAAkB,CACrGC,WACAjyF,cACAqgE,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,SACAo2B;AAIN,MAAMguF,EAuGV,SAAkBh5D,EAAIlsB,GACpB,IAAImlF,EACAC,EAAUl5D;AACd,KAAOk5D,IAAYvpG,SAAS6F,MAAM,CAChC,MAAM2jG,EAAcD,EAAQxhF,QAAQ5D;AAChCqlF,IACFF,EAAYE,GACdD,EAAUA,EAAQjlF,aACpB,CACA,OAAOglF,CACT,CAVA,CAvGyCj5D,EAAK,GAAEi3D,gBACtCmC,EAA4BJ,GAAuBA,IAAwBh5D,EAC3Ey3D,EAAmB2B,EAA4BJ,EAAoBn2F,cAAc,mBAAqBk0F,EAAqB/2D,GAAMA,EAAGn9B,cAAc,mBAAqBm9B;MACvKs2D,EAAIphC;AACV,MAAQn3C,IAAKs7E,EAAUtd,MAAOud,EAAY17E,KAAM27E,EAAWh8E,MAAOg7E,EAAY/6E,OAAQg7E,GAAgBtB,EAAeO,IAC7G15E,IAAK25E,EAAU3b,MAAO4b,EAAY/5E,KAAMg6E,EAAWr6E,MAAOs6E,EAAYr6E,OAAQs6E,GAAgBZ,EAAelsF,GAC/G6tF,EAAoB,SAAXzB,EAAoBQ,EAAY2B,EAAY5B,EAAa2B,EAClER,EAASpB,EAAW2B;AAC1B5nH,OAAOkD,OAAOq2B,EAAM45C,MAAO,CACzB40C,cAAe,OAEf/C,mBAAoB,OAEpB14E,IAAM,GAAEs7E,MACRz7E,KAAiB,UAAXw5E,EAAsB,GAAEmC,MAAgB,OAC9Cxd,MAAkB,SAAXqb,EAAuB1hH,OAAO2yC,WAAaixE,EAAtB,KAAuC,OACnE/7E,MAAQ,GAAEs6E,MACVr6E,OAAS,GAAEs6E,MACXp6C,UAAY,aAAYm7C,QAAaC,eAEjCxC,EAAIphC,6BACVlqD,EAAM45C,MAAM6xC,mBAAqB,GAC7BK,EAAmB9rF,IAAU8rF,EAAmBW,IAClDzsF,EAAMnI,cAAc,wBAAwB+W,UAAU7yB,OAAO,gCAE/DikB,EAAM4O,UAAUx/B,IAAI,uBAAwB,6BACxCg/G,GACFpuF,EAAM4O,UAAUx/B,IAAI,oCACtB4wB,EAAM45C,MAAM60C,eAAe,4CACrBnD,EAAIphC,mCACJqhC,EAAoBvrF,EAAO,CAC/BuS,MAAQ,GAAEg7E,MACV/6E,OAAS,GAAEg7E,MACX96C,UAAWm7C,GAAUC,EAAS,kBAAoB,OAEpD94D,EAAGpmB,UAAU7yB,OAAO,2BACpBikB,EAAMjkB,SACNi5C,SAAwCA,EAAGi4D,cAAc,IAAIC,YAAY,qBAAsB,CAC7FC,WACAjyF,cACAqgE,OAAQ,CACN7oD,IACAG,IACAmiB,KACAlrD,SACAF,SACAo2B,WAGN,CACAqR,SACE,MAAMrR,MAAEA,EAAKq3E,aAAEA,EAAY0W,eAAEA,GAAmB/lH;AAChD+D,cAAcgiH;AACd,MAAQjd,OAAQ4d,EAAa37E,IAAK47E,EAAU5d,MAAO6d,EAAYh8E,KAAMi8E,GAAc3C,EAAelsF,IAC1F8wE,OAAQge,EAAoB/7E,IAAKg8E,EAAiBhe,MAAOie,EAAmBp8E,KAAMq8E,GAsC9F,SAA6BpmF,GAC3B,MAAMkK,IAAEA,EAAGg+D,MAAEA,EAAKD,OAAEA,EAAMl+D,KAAEA,GAASs5E,EAAerjF;AACpD,OAAIA,IAAYlkB,SAASsqB,gBAKhB,CAAE8D,IAJI,EAIOg+D,MAHLrmG,OAAO2yC,WAGayzD,OAFnBpmG,OAAO4yC,YAE6B1K,KADtC,GAGT,CAAEG,MAAKg+D,QAAOD,SAAQl+D,OAC/B,CAVA,CAtCuIykE,GAC7H6X,EAAcR,EAAcI,EAC5BK,EAAWR,EAAWI,EACtBh8E,EAAMm8E,EAAc,EAAIl6G,KAAKsqC,IAAI4vE,EAAc,EA3OjC,IA2OuDC,EAAW,EAAIn6G,KAAKipC,IAAIkxE,EAAW,GA3O1F,IA2OiH,EAC/HC,EAAaR,EAAaI,EAC1BK,EAAYR,EAAYI,EACxBr8E,EAAOw8E,EAAa,EAAIp6G,KAAKsqC,IAAI8vE,EAAa,EA9OhC,IA8OsDC,EAAY,EAAIr6G,KAAKipC,IAAIoxE,EAAY,GA9O3F,IA8OkH;AAC1H,IAARt8E,GAAsB,IAATH,IACf5qC,KAAK+lH,eAAiBjiH,kBACpBurG,EAAaiY,SAAS,CAAEv8E,MAAKH,QAAO,GACnCo5E,GAEP,CAEAvO,UACEz1G,KAAKgtD,GAAK,KACVhtD,KAAKg4B,MAAQ,KACbh4B,KAAK8B,OAAS,KACd9B,KAAK4B,OAAS,KACd5B,KAAKukH,YAAc,KACnBvkH,KAAKskH,SAAW,KAChBtkH,KAAKqvG,aAAe,KACpBrvG,KAAK+lH,eAAiB,KACtB/lH,KAAKokH,OAAS,IAChB,GAgDFrB,GAAkBwE,YApTlB,SAAqBxiH,GACnB,OAAOoY,QAAQpY,YAASA,EAAMyiH,YAChC,EAmTAzE,GAAkBgB,qBAAuBA,EACzChB,GAAkBe,mBAAqBA,EAChCf,EACR,CAIA,SAAS0E,KACR,GAAI/E,GAAgC,OAAOI;AAC3CJ,GAAiC;AACjC,MAAMgF,EAAYtE,KACZE,EAAMrhC;AACZ,IAAIv8E;AACJ,SAASiiH,EAAc5iH,GACrB,OAAOoY,QAAQpY,GAAS,CAAC,WAAY,YAAY1E,SAAS0E,EAAM6iH,aAClE,CAEA,MAAMC,EACJC,sBACE,MAAMC,EAASprG,SAASuF,cAAc;AAEtC,OADA6lG,EAAOnhF,UAAUx/B,IAAI,sBACd2gH,CACT,CACAv8F,YAAWw8F,GAAgC,IAA/Bh7D,GAAEA,EAAEi7D,QAAEA,EAAO1zG,MAAEA,EAAKgxC,KAAEA,GAAMyiE;AACtChoH,KAAKgtD,GAAKA,EACVhtD,KAAKioH,QAAUA,EACfjoH,KAAKuU,MAAQA,EACbvU,KAAKulD,KAAOA,CACd,CACA2iE,YAAYC,EAASrmH,EAAQF,GAC3B,MAAMorD,GAAEA,EAAEi7D,QAAEA,GAAYjoH,KAClBooH,EAAoBtmH,eAAgDA,EAAO4iC,QAAQ,sDACnF2jF,EAAoBzmH,eAAgDA,EAAO8iC,QAAQ;AACzF,IAAKgjF,EAAUH,YAAYY,GACzB;AACF,IAAKR,EAAcS,GACjB;AACF,IAAKT,EAAcU,GACjB;AACF,GAAIF,EAAQzjF,QAAQujF,EAAQlgH,KAAK,QAAUogH,EACzC;AACF,GAAIn7D,IAAOo7D,GAAqBp7D,IAAOq7D,EACrC;AACF,GAAID,IAAsBC,EAAmB,CAC3C,MAAMC,EAAiD,aAAlCF,EAAkBR,aAAgE,aAAlCS,EAAkBT,YACjFW,EA6KZ,SAA2BC,EAAOC,GAChC,IAAI/5F,EAAO85F;AACX,KAAO95F,GAAM,CACX,GAAIA,EAAKwY,SAASuhF,GAChB,OAAO/5F;AAETA,EAAOA,EAAKuS,aACd,CACA,OAAO,IACT,CATA,CA7KmDmnF,EAAmBC,GAAmB3jF,QAAQ;AAC3F,IAAK4jF,IAAiBC,EACpB,QACJ,CACA,QACF,CAIAG,SAASxoH,GACP,IAAIoV,EAAIoT;AACR,MAAMskC,GAAEA,EAAEi7D,QAAEA,EAAOU,wBAAEA,GAA4B3oH,MAC3C6qC,EAAEA,EAAGmiB,GAAIm7D,EAAOrmH,OAAEA,EAAMF,OAAEA,GAAW1B,EAAEqzF,QACvCw0B,OAAEA,GAAWriH;AACnB,IAAK1F,KAAKkoH,YAAYC,EAASrmH,EAAQF,GACrC;AAGF,GAFAgC,aAAa+kH,GACmB,QAA/BrzG,EAAKyyG,EAAO9mF,yBAA2B3rB,GAAyBA,EAAGsxB,UAAU7yB,OAAO,6BACjFnS,IAAWorD,EAGb,OAFAA,EAAG1xB,OAAOysF,QACV/6D,EAAGpmB,UAAUx/B,IAAI;AAGnB,MAAMwhH,EAAgBhnH,EAAO8iC,QAAQujF,EAAQlgH,KAAK;AAClD,GAAK6gH,GAEDA,IAAkBT,EAAtB,CAEA,GAAIT,EAAU3D,qBAAqB6E,GAAgB,CACjD,MAAMngF,EAAS,IAAImgF,EAAcj1C,UAAUzyE,MAAM2nH,GAAQnB,EAAU5D,mBAAmB+E,IAAqB,WAAbA,EAAIhyB,QAC5F9rD,IAAEA,EAAGP,OAAEA,GAAW/B,EAAO6B;AAC/B,GAAIs+E,EAAcE,aAAeF,EAAcG,UAAW,CACxD,MAAMC,EAAWh8G,KAAKE,MAAM69B,EAAMP,EAAS,GACrCy+E,EAAYj8G,KAAKE,MAAM69B,EAAe,EAATP,EAAa;AAC5CK,EAAIm+E,EACNJ,EAAcM,OAAOnB,GACZl9E,EAAIo+E,EACbL,EAAcvoG,MAAM0nG,IAEpBt/E,EAAOpoB,MAAM0nG,GACI,IAAIa,EAAcj1C,UAAU/oE,QAAQi+G,IAASnB,EAAU5D,mBAAmB+E,IAAQnB,EAAU3D,qBAAqB8E,MAAUA,EAAIhyB,OACnIt3F,OAAS,IACpBS,KAAK2oH,wBAA0BllH,4BACvBmlH,EAAcO,uBACd7F,EAAIphC,6BACVz5C,EAAOpoB,MAAM0nG,EAAO,GA1EU,MA8EtC,MAEMl9E,EADY79B,KAAKE,MAAM69B,EAAMP,EAAS,GAExCo+E,EAAcM,OAAOnB,GAErBt/E,EAAOpoB,MAAM0nG,EAGnB,KAAO,CACL,MAAMh9E,IAAEA,EAAGP,OAAEA,GAAWo+E,EAAct+E;AAElCO,EADY79B,KAAKE,MAAM69B,EAAMP,EAAS,GAExCo+E,EAAcM,OAAOnB,GAErBa,EAAcvoG,MAAM0nG,EAExB,CACgC,QAA/Br/F,EAAKq/F,EAAO9mF,yBAA2BvY,GAAyBA,EAAGke,UAAUx/B,IAAI,4BAvC1E,CAwCV,CAIAgiH,YACE,IAAI9zG;AACJ,MAAMqzG,wBAAEA,GAA4B3oH,MAC9B+nH,OAAEA,GAAWriH;AACa,QAA/B4P,EAAKyyG,EAAO9mF,yBAA2B3rB,GAAyBA,EAAGsxB,UAAU7yB,OAAO,6BACrFg0G,EAAOh0G,SACPnQ,aAAa+kH,EACf,CAKAU,QAAQnpH,GACN,MAAM8sD,GAAEA,EAAEi7D,QAAEA,EAAO1zG,MAAEA,EAAKo0G,wBAAEA,GAA4B3oH,MAChDgtD,GAAIm7D,EAAOrmH,OAAEA,GAAW5B,EAAEqzF,QAC5Bw0B,OAAEA,GAAWriH;AACnB9B,aAAa+kH;AACb,MAAM/mH,EAASmmH,EAAO9mF;AACtB,IAAKjhC,KAAKkoH,YAAYC,EAASrmH,EAAQF,GACrC;AAGF,IAF0BE,eAAgDA,EAAO4iC,QAAQ,0DAC/D9iC,eAAgDA,EAAO8iC,QAAQ,uDAEvF;AACFxkC,EAAEq9E;AACF,MACM+rC,EADQC,EAAoBv8D,EAAIi7D,GACfznH,QAAQ2nH,IAEzB7K,iBAAEA,GAAqB/oG,EAAMgoD,KAAK,CACtCx7D,KAAMonH,EACNmB,WACAE,UAJgB;AAMdlM,IACFp9G,EAAEg9E,iBACF6qC,EAAOh0G,SAEX,CAIAwpG,eAAer9G,GACb,MAAM8sD,GAAEA,EAAEi7D,QAAEA,EAAO1zG,MAAEA,EAAKgxC,KAAEA,EAAIojE,wBAAEA,GAA4B3oH,MACtDgtD,GAAIm7D,EAAOrmH,OAAEA,GAAW5B,EAAEqzF,QAC5Bw0B,OAAEA,GAAWriH;AACnB9B,aAAa+kH;AACb,MAAMN,EAAoBN,EAAO9mF;AACjC,GAAI+rB,IAAOq7D,EACT;AACF,IAAKroH,KAAKkoH,YAAYC,EAASrmH,EAAQumH,GACrC;AAGF,GAFAnoH,EAAEq9E,2BACF8qC,SAAsEA,EAAkBzhF,UAAU7yB,OAAO,6BACrG,CAACg0G,EAAO0B,uBAAwB1B,EAAO9/E,oBAAoB5nC,SAAS8nH,GAEtE,YADAJ,EAAOh0G;AAGT,MAAM21G,EAAQH,EAAoBlB,EAAmBJ,GAC/CqB,EAAWI,EAAMlpH,QAAQ2nH,GACzBwB,EAAwB,IAAID;AAC9BJ,GAAY,GACdK,EAAsBh2G,OAAO21G,EAAU;AAEzC,MAAME,EAAWG,EAAsBnpH,QAAQunH,EAAO0B,wBAA0B;AAChF,GAAID,IAAaF,EAEf,YADAvB,EAAOh0G;AAGT,MAAM61G,EAAmBjtG,SAASuF,cAAc;AAChDimG,EAAQ0B,YAAYD,GACpB7B,EAAO8B,YAAY1B,SACb,IAAIhmC,SAASC,GAAY+lC,EAAQpzG,iBAAiB,qBAAsBqtE,EAAS,CAAE7sE,YAC5E,cAATgwC,GACFqkE,EAAiBC,YAAY1B;AAC/B,MAAM7K,iBAAEA,GAAqB/oG,EAAMgoD,KAAK,CACtCx7D,KAAMonH,EACNmB,WACAE;AAEElM,GAA6B,YAAT/3D,GACtBqkE,EAAiBC,YAAY1B,GAC/ByB,EAAiB71G,QACnB,CAEA0hG,UACE/vG,EAAGqiH,OAAOh0G,SACVnQ,aAAa5D,KAAK2oH,yBAClB3oH,KAAKgtD,GAAK,KACVhtD,KAAKioH,QAAU,KACfjoH,KAAKuU,MAAQ,KACbvU,KAAKulD,KAAO,KACZvlD,KAAK2oH,wBAA0B,IACjC,EAIF,SAASY,EAAoBv8D,EAAIi7D,GAC/B,MAAO,IAAIj7D,EAAG2mB,UAAU/oE,QAAQykB,GACN44F,EAAQliH,MAAM+6B,GAAazR,EAAMzQ,QAAQkiB,MACvC4mF,EAAUH,YAAYl4F,IAEpD,CAYA,OAnBA3pB,EAAKmiH,EACLA,EAAYE,OAASriH,EAAGokH,eAiBxBhH,GAAoB+E,YAAcA,EAC3B/E,EACR,CAEA,IAMIiH,GANAC,GAAuB,CAAC,EAExBC,GAAqB,CAAC,EAEtBC,GAAqB,CAAC;AAI1B,SAASC,KACR,GAAIJ,GAA+B,OAAOG;AAC1CH,GAAgC;AAChC,MAAMvmC,EAAWhB;AAEjB,SAAS4nC,EAAWrlH,GAClB,IAAKy+E,EAASA,SAASz+E,GACrB;AAEF,IAAI+f,EAAM0+D,EAASJ,WAAWr+E;AAC9B,MANiD,qBAM1C+f,GANwE,8BAMtDA,GANZ,0BAM6BA,GAN8E,kBAM3DA,CAC/D,CAEA,MAAMulG,EADW7mC,EAASE,KAAK;AAE/B,IACM4mC,EADFC,GACED,EAAM,SAASp6G,KAAKm6G,GAAgBA,EAAa3rH,MAAQ2rH,EAAa3rH,KAAK8rH,UAAY,KAC9E,iBAAmBF,EAAM,GAMpCG,EADc7nC,SAAS7gF,UACM2H;AACjC,SAASghH,EAASl6G,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOi6G,EAAexoH,KAAKuO,EAE7B,CADE,MAAOtQ,GACT,CACA,IACE,OAAOsQ,EAAO,EAEhB,CADE,MAAOtQ,GACT,CACF,CACA,MAAO,EACT,CACA,IACIyqH,EAAe,8BACfC,EAAYhoC,SAAS7gF,UAAW8oH,EAAcpsH,OAAOsD,UACrD+oH,EAAeF,EAAUlhH,SACzB1H,EAAiB6oH,EAAY7oH,eAC7B+oH,EAAavjH,OACf,IAAMsjH,EAAa7oH,KAAKD,GAAgBoZ,QANvB,sBAM6C,QAAQA,QAAQ,yDAA0D,SAAW;AAmBrJ,OAHA8uG,GAAmBc,UAJnB,SAAmB3pH,EAAQE,GACzB,IAAIwD,EAJN,SAAkB1D,EAAQE,GACxB,OAAiB,MAAVF,SAA0BA,EAAOE,EAC1C,CAFA,CAIuBF,EAAQE;AAC7B,OAZF,SAAsBwD,GACpB,SAAKy+E,EAASA,SAASz+E,KA3BPyL,EA2B0BzL,EA1BjCwlH,GAAcA,KAAc/5G,MA6BvB45G,EAAWrlH,GAASgmH,EAAaJ,GAChC5nH,KAAK2nH,EAAS3lH;AA/B/B,IAAkByL,CAgClB,CANA,CAYsBzL,GAASA,QAC/B,EAEAmlH,GAAmBE,WAAaA,EAChCF,GAAmBQ,SAAWA,EACvBR,EACR,CAEA,IAEIe,GAmCAC,GArCAC,GAAe,CAAC;AAIpB,SAASC,KACR,GAAIH,GAAyB,OAAOE;AACpCF,GAA0B;AAC1B,MAAMznC,EAAWhB,KACX6oC,EAAalB,KAEbmB,EADQ3qH,MAAMiG;AAOpB,SAAS2kH,EAAgBxmH,GACvB,OAAOy+E,EAASC,aAAa1+E,IAFjB,sBAE2By+E,EAASJ,WAAWr+E,EAC7D,CACA,IAAI8lH,EAAcpsH,OAAOsD,UACrBC,EAAiB6oH,EAAY7oH,eAC7BwpH,EAAuBX,EAAYW,qBACnCC,EAAcF,EAAgC,WAChD,OAAOjsH,SACT,CAFkD,IAE3CisH,EAAkB,SAASxmH,GAChC,OAAOy+E,EAASC,aAAa1+E,IAAU/C,EAAeC,KAAK8C,EAAO,YAAcymH,EAAqBvpH,KAAK8C,EAAO,SACnH;AACA,MAAM2mH,EAAgBD,EAEhBE,EADIN,EAAWL,UAAUxnC,EAASE,KAAM;AAM9C,OAJAynC,GAAapuG,IAAM4uG,EACnBR,GAAaM,YAAcC,EAC3BP,GAAavkH,QAAU0kH,EACvBH,GAAaS,SArBb,SAAkB7mH,GAChB,MAAuB,iBAATA,GAAqBA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAF9C,gBAGvB,EAoBOomH,EACR,CAIA,SAASU,KACR,GAAIX,GAA+B,OAAOjB;AAC1CiB,GAAgC;AAChC,MAAMG,EAAalB,KACb2B,EAAOV;AACb,IACIW,EAAW;AAMf,SAASC,EAAGjnH,EAAO8F,GACjB,OAAO9F,IAAU8F,GAAS9F,GAAUA,GAAS8F,GAAUA,CACzD,CAEA,MAAMohH,EADaZ,EAAWL,UAAUvsH,OAAQ;AAWhD,IAEIytH,EADgBztH,OAAOsD,UACUC,eAUjCA,EADcvD,OAAOsD,UACQC;AAYjC,SAASmqH,EAAKx6F,GACZ,IAAIje,GAAS,EAAGnU,EAAoB,MAAXoyB,EAAkB,EAAIA,EAAQpyB;AAEvD,IADAS,KAAK0+D,UACIhrD,EAAQnU,GAAQ,CACvB,IAAIof,EAAQgT,EAAQje;AACpB1T,KAAKkK,IAAIyU,EAAM,GAAIA,EAAM,GAC3B,CACF,CAUA,SAASytG,EAAavrH,EAAOU,GAE3B,IADA,IAAIhC,EAASsB,EAAMtB,OACZA,KACL,GAAIysH,EAAGnrH,EAAMtB,GAAQ,GAAIgC,GACvB,OAAOhC;AAGX,OAAQ,CACV,CAjBA4sH,EAAKpqH,UAAU28D,MAzCf,WACE1+D,KAAKqsH,SAAWJ,EAAiBA,EAAe,MAAQ,CAAC,EACzDjsH,KAAKmD,KAAO,CACd,EAuCAgpH,EAAKpqH,UAAkBo/B,OAtCvB,SAAoB5/B,GAClB,IAAIgQ,EAASvR,KAAKmH,IAAI5F,WAAevB,KAAKqsH,SAAS9qH;AAEnD,OADAvB,KAAKmD,MAAQoO,EAAS,EAAI,EACnBA,CACT,EAmCA46G,EAAKpqH,UAAUM,IA/Bf,SAAiBd,GACf,IAAIwJ,EAAO/K,KAAKqsH;AAChB,GAAIJ,EAAgB,CAClB,IAAI16G,EAASxG,EAAKxJ;AAClB,MAPmB,8BAOZgQ,SAAuCA,CAChD,CACA,OAAO26G,EAAiBjqH,KAAK8I,EAAMxJ,GAAOwJ,EAAKxJ,SACjD,EAyBA4qH,EAAKpqH,UAAUoF,IAtBf,SAAiB5F,GACf,IAAIwJ,EAAO/K,KAAKqsH;AAChB,OAAOJ,WAAiBlhH,EAAKxJ,GAAkBS,EAAeC,KAAK8I,EAAMxJ,EAC3E,EAoBA4qH,EAAKpqH,UAAUmI,IAlBf,SAAiB3I,EAAKwD,GACpB,IAAIgG,EAAO/K,KAAKqsH;AAGhB,OAFArsH,KAAKmD,MAAQnD,KAAKmH,IAAI5F,GAAO,EAAI,EACjCwJ,EAAKxJ,GAAO0qH,YAAkBlnH,EAJX,4BAI+CA,EAC3D/E,IACT;AA2BA,IACI2T,EADahT,MAAMoB,UACC4R;AAgCxB,SAAS24G,EAAU36F,GACjB,IAAIje,GAAS,EAAGnU,EAAoB,MAAXoyB,EAAkB,EAAIA,EAAQpyB;AAEvD,IADAS,KAAK0+D,UACIhrD,EAAQnU,GAAQ,CACvB,IAAIof,EAAQgT,EAAQje;AACpB1T,KAAKkK,IAAIyU,EAAM,GAAIA,EAAM,GAC3B,CACF,CAkBA,SAAS4tG,EAAWjrH,EAAKC,GACvB,IALiBwD,EACbqN,EAIArH,EAAOzJ,EAAI+qH;AACf,OAJe,WADXj6G,SADarN,EAMAxD,KAJkB,UAAR6Q,GAA4B,UAARA,GAA4B,WAARA,EAA8B,cAAVrN,EAAkC,OAAVA,GAIvFgG,EAAmB,iBAAPxJ,EAAkB,SAAW,QAAUwJ,EAAKzJ,GAClF,CAkBA,SAASkrH,EAAS76F,GAChB,IAAIje,GAAS,EAAGnU,EAAoB,MAAXoyB,EAAkB,EAAIA,EAAQpyB;AAEvD,IADAS,KAAK0+D,UACIhrD,EAAQnU,GAAQ,CACvB,IAAIof,EAAQgT,EAAQje;AACpB1T,KAAKkK,IAAIyU,EAAM,GAAIA,EAAM,GAC3B,CACF,CAkBA,OA/DA2tG,EAAUvqH,UAAU28D,MAtDpB,WACE1+D,KAAKqsH,SAAW,GAChBrsH,KAAKmD,KAAO,CACd,EAoDAmpH,EAAUvqH,UAAkBo/B,OAxC5B,SAAyB5/B,GACvB,IAAIwJ,EAAO/K,KAAKqsH,SAAU34G,EAAQ04G,EAAarhH,EAAMxJ;AACrD,QAAImS,EAAQ,IAIRA,GADY3I,EAAKxL,OAAS,EAE5BwL,EAAKoW,MAELxN,EAAO1R,KAAK8I,EAAM2I,EAAO,KAEzB1T,KAAKmD,KACA,GACT,EA4BAmpH,EAAUvqH,UAAUM,IA3BpB,SAAsBd,GACpB,IAAIwJ,EAAO/K,KAAKqsH,SAAU34G,EAAQ04G,EAAarhH,EAAMxJ;AACrD,OAAOmS,EAAQ,SAAa3I,EAAK2I,GAAO,EAC1C,EAyBA44G,EAAUvqH,UAAUoF,IAxBpB,SAAsB5F,GACpB,OAAO6qH,EAAapsH,KAAKqsH,SAAU9qH,IAAQ,CAC7C,EAuBA+qH,EAAUvqH,UAAUmI,IAtBpB,SAAsB3I,EAAKwD,GACzB,IAAIgG,EAAO/K,KAAKqsH,SAAU34G,EAAQ04G,EAAarhH,EAAMxJ;AAOrD,OANImS,EAAQ,KACR1T,KAAKmD,KACP4H,EAAK/J,KAAK,CAACO,EAAKwD,KAEhBgG,EAAK2I,GAAO,GAAK3O,EAEZ/E,IACT,EAuDAwsH,EAASzqH,UAAU28D,MAzCnB,WACE1+D,KAAKmD,KAAO,EACZnD,KAAKqsH,SAAW,CACdtyE,KAAQ,IAAIoyE,EACZ7qH,IAAO,IAAKwqH,EAAK/uG,KAAOuvG,GACxB3nC,OAAU,IAAIwnC,EAElB,EAmCAK,EAASzqH,UAAkBo/B,OA1B3B,SAAwB5/B,GACtB,IAAIgQ,EAASg7G,EAAWvsH,KAAMuB,GAAa4/B,OAAE5/B;AAE7C,OADAvB,KAAKmD,MAAQoO,EAAS,EAAI,EACnBA,CACT,EAuBAi7G,EAASzqH,UAAUM,IAtBnB,SAAqBd,GACnB,OAAOgrH,EAAWvsH,KAAMuB,GAAKc,IAAId,EACnC,EAqBAirH,EAASzqH,UAAUoF,IApBnB,SAAqB5F,GACnB,OAAOgrH,EAAWvsH,KAAMuB,GAAK4F,IAAI5F,EACnC,EAmBAirH,EAASzqH,UAAUmI,IAlBnB,SAAqB3I,EAAKwD,GACxB,IAAIgG,EAAOwhH,EAAWvsH,KAAMuB,GAAM4B,EAAO4H,EAAK5H;AAG9C,OAFA4H,EAAKb,IAAI3I,EAAKwD,GACd/E,KAAKmD,MAAQ4H,EAAK5H,MAAQA,EAAO,EAAI,EAC9BnD,IACT,EAqBAiqH,GAAmBqC,UAAYA,EAC/BrC,GAAmBuC,SAAWA,EAC9BvC,GAAmBwC,UATnB,SAAmB5rH,EAAOqoF,GAExB,IADA,IAAIx1E,GAAS,EAAGnU,EAAS2pF,EAAO3pF,OAAQ+nB,EAASzmB,EAAMtB,SAC9CmU,EAAQnU,GACfsB,EAAMymB,EAAS5T,GAASw1E,EAAOx1E;AAEjC,OAAO7S,CACT,EAIAopH,GAAmB+B,GAAKA,EACxB/B,GAAmByC,QA5KnB,SAAiB3nH,EAAOxF,GACtB,IAAI6S,SAAcrN;AAElB,SADAxF,EAAmB,MAAVA,EAJY,iBAIwBA,KACjB,UAAR6S,GAA4B,UAARA,GAAoB25G,EAAShpH,KAAKgC,KAAYA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQxF,CAChI,EAyKO0qH,EACR,CAEA,IAII0C,GA2HAC,GA/HAC,GAAkB,CAACjjD,QAAS,CAAC;AAMjC,SAASkjD,KACR,OAAIH,KACJA,GAA6B,EAC5B,SAAUI,EAAQnjD,GAClB,MAAMyhD,EAAalB,KACb2B,EAAOV,KACP5nC,EAAWhB,KAEXwqC,EADQ3B,EAAWL,UAAUxnC,EAASE,KAAM;AAKlD,IAAIZ,EAAgBrkF,OAAOsD;AAC3B,SAASkrH,EAAYloH,GACnB,IAAImoH,EAAOnoH,GAASA,EAAMymB;AAC1B,OAAOzmB,KADuD,mBAARmoH,GAAsBA,EAAKnrH,WAAa+gF,EAEhG,CAIA,IAAIqqC,EAAgBvjD,IAAYA,EAAQj7C,UAAYi7C,EAChDwjD,EAAeD,GAAyCJ,IAAWA,EAAOp+F,UAAYo+F,EAEtFM,EADkBD,GAAgBA,EAAaxjD,UAAYujD,EAChC3pC,EAASE,KAAK2pC;AAG7C,MAAMC,GAFeD,EAASA,EAAOE,kBAPrC,WACE,QACF;AAQA,IAEIC,EAAiB,CAAC;AACtBA,EAF+F,yBAElEA,EAFwG,yBAE3EA,EAF8G,sBAEpFA,EAFqH,uBAE1FA,EAF4H,uBAEjGA,EAFmI,uBAExGA,EAFiJ,8BAE/GA,EAFyJ,wBAE7HA,EAFiK,2BAGpYA,EAJc,sBAIYA,EAJqB,kBAIMA,EAHhC,wBAGiEA,EAJX,oBAIqCA,EAHnD,qBAGmFA,EAJvC,iBAIiEA,EAJrC,kBAIgEA,EAJpC,qBAI8DA,EAJ9B,gBAIyDA,EAJ7B,mBAIyDA,EAJxB,mBAIsDA,EAJvB,mBAImDA,EAJrB,gBAIgDA,EAJpB,mBAIgDA,EAJd;AAazX,IALmBh9G,EAKfi9G,EAAc7jD,IAAYA,EAAQj7C,UAAYi7C,EAC9C8jD,EAAaD,GAAuCV,IAAWA,EAAOp+F,UAAYo+F,EAElFY,EADgBD,GAAcA,EAAW9jD,UAAY6jD,GACtBjqC,EAASD,WAAWnjE,QACnDwtG,EAAW,WACb,IAEE,OADYF,GAAcA,EAAW3iD,SAAW2iD,EAAW3iD,QAAQ,QAAQ56B,OAIpEw9E,GAAeA,EAAYE,SAAWF,EAAYE,QAAQ,OAEnE,CADE,MAAO3tH,GACT,CACF,CATe,GAWX4tH,EADeF,KAC6BG;AAEhD,MAAMC,EADaF,GArBAt9G,EAqB6Bs9G,EApBvC,SAAS/oH,GACd,OAAOyL,EAAKzL,EACd,GANF,SAA0BA,GACxB,OAAOy+E,EAASC,aAAa1+E,IAAU+mH,EAAKF,SAAS7mH,EAAMxF,WAAaiuH,EAAehqC,EAASJ,WAAWr+E,GAC7G;AA6BA,IAAIkpH,EALJ,SAAiBz9G,EAAMk6D,GACrB,OAAO,SAASz2D,GACd,OAAOzD,EAAKk6D,EAAUz2D,GACxB,CACF,CAJA,CAKyBxV,OAAOC,KAAMD;AACtC,MAAMyvH,EAAeD;AACrB,IACIjsH,EADcvD,OAAOsD,UACQC;AAcjC,MAAMmsH,EADS9C,EAAWL,UAAUxnC,EAASE,KAAM,YAG7C0qC,EADU/C,EAAWL,UAAUxnC,EAASE,KAAM,WAG9C2qC,EADIhD,EAAWL,UAAUxnC,EAASE,KAAM;AAE9C,IAAI4qC,EAAS,eAA+CC,EAAa,mBAAoBC,EAAS,eAAgBC,EAAa,mBAC/HC,EAAc,oBACdC,EAAqBtD,EAAWX,SAASyD,GAAaS,EAAgBvD,EAAWX,SAASoB,EAAK/uG,KAAM8xG,EAAoBxD,EAAWX,SAAS0D,GAAYU,EAAgBzD,EAAWX,SAAS2D,GAAQU,EAAoB1D,EAAWX,SAASsC,GAC7OgC,EAASxrC,EAASJ,YAClB+qC,GAAca,EAAO,IAAIb,EAAW,IAAIc,YAAY,MAAQP,GAAe5C,EAAK/uG,KAAOiyG,EAAO,IAAIlD,EAAK/uG,MAAUuxG,GAAUF,GAAaY,EAAOZ,EAAUhsC,YAAcmsC,GAAcF,GAASW,EAAO,IAAIX,IAAYG,GAAUxB,GAAagC,EAAO,IAAIhC,IAAgByB,KACzQO,EAAS,SAASjqH,GAChB,IAAIwM,EAASiyE,EAASJ,WAAWr+E,GAAQmoH,EANJ,mBAMW37G,EAAsBxM,EAAMymB,mBAAsB0jG,EAAahC,EAAO7B,EAAWX,SAASwC,GAAQ;AAClJ,GAAIgC,EACF,OAAQA,GACN,KAAKP,EACH,OAAOD;AACT,KAAKE,EACH,OAAON;AACT,KAAKO,EACH,OAAON;AACT,KAAKO,EACH,OAAON;AACT,KAAKO,EACH,OAAON,EAGb,OAAOl9G,CACT;AAEF,MAAM49G,EAAWH;AACjBplD,EAAQ9oE,IAAMutH,EACdzkD,EAAQwlD,SA5CR,SAAkB/tH,GAChB,IAAK4rH,EAAY5rH,GACf,OAAO6sH,EAAa7sH;AAEtB,IAAIkQ,EAAS;AACb,IAAK,IAAIhQ,KAAO9C,OAAO4C,GACjBW,EAAeC,KAAKZ,EAAQE,IAAe,eAAPA,GACtCgQ,EAAOvQ,KAAKO;AAGhB,OAAOgQ,CACT,EAkCAq4D,EAAQolD,OAASG,EACjBvlD,EAAQylD,YAxGR,SAAqBtqH,GACnB,OAAgB,MAATA,GAAiB+mH,EAAKF,SAAS7mH,EAAMxF,UAAY8rH,EAAWjB,WAAWrlH,EAChF,EAuGA6kE,EAAQ2jD,SAAWD,EACnB1jD,EAAQqjD,YAAcA,EACtBrjD,EAAQmkD,aAAeC,CACvB,CAlHA,CAkHEnB,GAAiBA,GAAgBjjD,UApHGijD,GAAgBjjD,OAsHxD,CAIA,SAAS0lD,KACR,GAAI1C,GAAiC,OAAO5C;AAC5C4C,GAAkC;AAClC,MAAM2C,EAAa1D,KACbC,EAAOV,KACP5nC,EAAWhB,KACXgtC,EAAU1C;AAQhB,IACI2C,EADgBhxH,OAAOsD,UACUC;AAcrC,SAAStD,EAAK2C,GACZ,OAAOmuH,EAAQH,YAAYhuH,GAd7B,SAAuB0D,EAAO2qH,GAC5B,IAAIC,EAAQ7D,EAAKllH,QAAQ7B,GAAQ6qH,GAASD,GAAS7D,EAAKL,YAAY1mH,GAAQ8qH,GAAUF,IAAUC,GAASJ,EAAQjC,SAASxoH,GAAQ+qH,GAAUH,IAAUC,IAAUC,GAAUL,EAAQzB,aAAahpH,GAAQgrH,EAAcJ,GAASC,GAASC,GAAUC,EAAQv+G,EAASw+G,EAVpQ,SAAmBxwG,EAAGywG,GAEpB,IADA,IAAIt8G,GAAS,EAAGnC,EAAS5Q,MAAM4e,KACtB7L,EAAQ6L,GACfhO,EAAOmC,GAASs8G,EAASt8G;AAE3B,OAAOnC,CACT,CANA,CAU4RxM,EAAMxF,OAAQqQ,QAAU,GAAIrQ,EAASgS,EAAOhS;AACtU,IAAK,IAAIgC,KAAOwD,GACT0qH,EAAiBxtH,KAAK8C,EAAOxD,IAAWwuH,IACrC,UAAPxuH,GACDsuH,IAAkB,UAAPtuH,GAA0B,UAAPA,IAC9BuuH,IAAkB,UAAPvuH,GAA0B,cAAPA,GAA8B,cAAPA,IACrDguH,EAAW7C,QAAQnrH,EAAKhC,KACtBgS,EAAOvQ,KAAKO;AAGhB,OAAOgQ,CACT,CAZA,CAcqDlQ,GAAUmuH,EAAQJ,SAAS/tH,EAChF,CAgCA,SAAS4uH,EAAMt+F,GACb,IAAI5mB,EAAO/K,KAAKqsH,SAAW,IAAIkD,EAAWjD,UAAU36F;AACpD3xB,KAAKmD,KAAO4H,EAAK5H,IACnB,CACA8sH,EAAMluH,UAAU28D,MAnChB,WACE1+D,KAAKqsH,SAAW,IAAIkD,EAAWjD,UAC/BtsH,KAAKmD,KAAO,CACd,EAiCA8sH,EAAMluH,UAAkBo/B,OAhCxB,SAAqB5/B,GACnB,IAAIwJ,EAAO/K,KAAKqsH,SAAU96G,EAASxG,EAAao2B,OAAE5/B;AAElD,OADAvB,KAAKmD,KAAO4H,EAAK5H,KACVoO,CACT,EA6BA0+G,EAAMluH,UAAUM,IA5BhB,SAAkBd,GAChB,OAAOvB,KAAKqsH,SAAShqH,IAAId,EAC3B,EA2BA0uH,EAAMluH,UAAUoF,IA1BhB,SAAkB5F,GAChB,OAAOvB,KAAKqsH,SAASllH,IAAI5F,EAC3B,EAyBA0uH,EAAMluH,UAAUmI,IAvBhB,SAAkB3I,EAAKwD,GACrB,IAAIgG,EAAO/K,KAAKqsH;AAChB,GAAIthH,aAAgBwkH,EAAWjD,UAAW,CACxC,IAAI4D,EAAQnlH,EAAKshH;AACjB,IAAKP,EAAK/uG,KAAOmzG,EAAM3wH,OAAS4wH,IAG9B,OAFAD,EAAMlvH,KAAK,CAACO,EAAKwD,IACjB/E,KAAKmD,OAAS4H,EAAK5H,KACZnD;AAET+K,EAAO/K,KAAKqsH,SAAW,IAAIkD,EAAW/C,SAAS0D,EACjD,CAGA,OAFAnlH,EAAKb,IAAI3I,EAAKwD,GACd/E,KAAKmD,KAAO4H,EAAK5H,KACVnD,IACT;AAuBA,IACIwrH,EADgB/sH,OAAOsD,UACcypH,qBACrC4E,EAAmB3xH,OAAOg5E;AAU9B,MAAM44C,EATYD,EAA+B,SAAS/uH,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS5C,OAAO4C,GApBlB,SAAqBR,EAAOM,GAE1B,IADA,IAAIuS,GAAS,EAAGnU,EAAkB,MAATsB,EAAgB,EAAIA,EAAMtB,OAAQ+wH,EAAW,EAAG/+G,EAAS,KACzEmC,EAAQnU,GAAQ,CACvB,IAAIwF,EAAQlE,EAAM6S;AAkBkC68G,EAjBtCxrH,EAkBPymH,EAAqBvpH,KAAKZ,EAAQkvH,KAjBvCh/G,EAAO++G,KAAcvrH,EAEzB,CAc6C,IAASwrH;AAbtD,OAAOh/G,CACT,CATA,CAqBqB6+G,EAAiB/uH,IAGtC,EAdA,WACE,MAAO,EACT;AAkBA,SAASmvH,EAAWnvH,GAClB,OALF,SAAwBA,EAAQovH,EAAUC,GACxC,IAAIn/G,EAASk/G,EAASpvH;AACtB,OAAOyqH,EAAKllH,QAAQvF,GAAUkQ,EAASg+G,EAAW9C,UAAUl7G,EAAQm/G,EAAYrvH,GAClF,CAHA,CAKwBA,EAAQ3C,EAAM2xH,EACtC,CAEA,MAAMM,EADWntC,EAASE,KAAK78D;AAU/B,SAAS+pG,EAAS1nC,GAChB,IAAIx1E,GAAS,EAAGnU,EAAmB,MAAV2pF,EAAiB,EAAIA,EAAO3pF;AAErD,IADAS,KAAKqsH,SAAW,IAAIkD,EAAW/C,WACtB94G,EAAQnU,GACfS,KAAKoH,IAAI8hF,EAAOx1E,GAEpB,CAGA,SAASm9G,EAAUhwH,EAAOM,GAExB,IADA,IAAIuS,GAAS,EAAGnU,EAAkB,MAATsB,EAAgB,EAAIA,EAAMtB,SAC1CmU,EAAQnU,GACf,GAAI4B,EAAUN,EAAM6S,GAAQA,EAAO7S,GACjC;AAGJ,QACF,CACA,SAASiwH,EAAS7uF,EAAO1gC,GACvB,OAAO0gC,EAAM96B,IAAI5F,EACnB,CAbAqvH,EAAS7uH,UAAUqF,IAAMwpH,EAAS7uH,UAAUf,KAd5C,SAAqB+D,GAEnB,OADA/E,KAAKqsH,SAASniH,IAAInF,EAFC,6BAGZ/E,IACT,EAYA4wH,EAAS7uH,UAAUoF,IAXnB,SAAqBpC,GACnB,OAAO/E,KAAKqsH,SAASllH,IAAIpC,EAC3B;AAuBA,SAASgsH,EAAYlwH,EAAOgK,EAAOmmH,EAASC,EAAYC,EAAW1hH,GACjE,IAAI2hH,EAFuB,EAEXH,EAAkCI,EAAYvwH,EAAMtB,OAAQ8xH,EAAYxmH,EAAMtL;AAC9F,GAAI6xH,GAAaC,KAAeF,GAAaE,EAAYD,GACvD;AAEF,IAAIE,EAAa9hH,EAAMnN,IAAIxB,GACvB0wH,EAAa/hH,EAAMnN,IAAIwI;AAC3B,GAAIymH,GAAcC,EAChB,OAAOD,GAAczmH,GAAS0mH,GAAc1wH;AAE9C,IAAI6S,GAAS,EAAGnC,KAAeigH,EAX0B,EAWnBR,EAAqC,IAAIJ;AAG/E,IAFAphH,EAAMtF,IAAIrJ,EAAOgK,GACjB2E,EAAMtF,IAAIW,EAAOhK,KACR6S,EAAQ09G,GAAW,CAC1B,IAAIK,EAAW5wH,EAAM6S,GAAQg+G,EAAW7mH,EAAM6I;AAC9C,GAAIu9G,EACF,IAAIU,EAAWR,EAAYF,EAAWS,EAAUD,EAAU/9G,EAAO7I,EAAOhK,EAAO2O,GAASyhH,EAAWQ,EAAUC,EAAUh+G,EAAO7S,EAAOgK,EAAO2E;AAE9I,YAAImiH,EAAqB,CACvB,GAAIA,EACF;AAEFpgH;AACA,KACF,CACA,GAAIigH,GACF,IAAKX,EAAUhmH,YAAgB+mH,EAAWC,GACxC,IAAKf,EAASU,EAAMK,KAAcJ,IAAaG,GAAaV,EAAUO,EAAUG,EAAWZ,EAASC,EAAYzhH,IAC9G,OAAOgiH,EAAKxwH,KAAK6wH,EAErB,IAAI,CACFtgH;AACA,KACF,OACK,GAAMkgH,IAAaC,IAAYR,EAAUO,EAAUC,EAAUV,EAASC,EAAYzhH,GAAS,CAChG+B;AACA,KACF,CACF,CAGA,OAFA/B,EAAc2xB,OAAEtgC,GAChB2O,EAAc2xB,OAAEt2B,GACT0G,CACT,CACA,SAASugH,EAAWxwH,GAClB,IAAIoS,GAAS,EAAGnC,EAAS5Q,MAAMW,EAAI6B;AAInC,OAHA7B,EAAI3C,kBAAiBoG,EAAOxD,GAC1BgQ,IAASmC,GAAS,CAACnS,EAAKwD,EAC1B,IACOwM,CACT,CACA,SAASwgH,EAAW7nH,GAClB,IAAIwJ,GAAS,EAAGnC,EAAS5Q,MAAMuJ,EAAI/G;AAInC,OAHA+G,EAAIvL,kBAAiBoG,GACnBwM,IAASmC,GAAS3O,CACpB,IACOwM,CACT,CACA,IAGIygH,EAAcxuC,EAASnM,OAASmM,EAASnM,OAAOt1E,iBAAoBkwH,EAAgBD,EAAcA,EAAYttC,eAiD9GwnC,EADgBztH,OAAOsD,UACUC,eA6CjCkwH,EAAU,qBAAsBC,EAAW,iBAAkBC,EAAY,kBAEzEpwH,EADcvD,OAAOsD,UACQC;AA8CjC,OANAgoH,GAAqB4G,SAAWA,EAChC5G,GAAqBiG,MAAQA,EAC7BjG,GAAqBqI,YAXrB,SAASA,EAAYttH,EAAO8F,EAAOmmH,EAASC,EAAYzhH,GACtD,OAAIzK,IAAU8F,IAGD,MAAT9F,GAA0B,MAAT8F,IAAkB24E,EAASC,aAAa1+E,KAAWy+E,EAASC,aAAa54E,GACrF9F,GAAUA,GAAS8F,GAAUA,EAnCxC,SAAyBxJ,EAAQwJ,EAAOmmH,EAASC,EAAYC,EAAW1hH,GACtE,IAAI8iH,EAAWxG,EAAKllH,QAAQvF,GAASkxH,EAAWzG,EAAKllH,QAAQiE,GAAQ2nH,EAASF,EAAWH,EAAW3C,EAAQR,OAAO3tH,GAASoxH,EAASF,EAAWJ,EAAW3C,EAAQR,OAAOnkH,GAGtK6nH,GAFJF,EAASA,GAAUN,EAAUE,EAAYI,IAEhBJ,EAAWO,GADpCF,EAASA,GAAUP,EAAUE,EAAYK,IACgBL,EAAWQ,EAAYJ,GAAUC;AAC1F,GAAIG,GAAapD,EAAQjC,SAASlsH,GAAS,CACzC,IAAKmuH,EAAQjC,SAAS1iH,GACpB;AAEFynH,KACAI,IACF,CACA,GAAIE,IAAcF,EAEhB,OADAljH,IAAUA,EAAQ,IAAIygH,GACfqC,GAAY9C,EAAQzB,aAAa1sH,GAAU0vH,EAAY1vH,EAAQwJ,EAAOmmH,EAASC,EAAYC,EAAW1hH,GA9GjH,SAAoBnO,EAAQwJ,EAAOia,EAAKksG,EAASC,EAAYC,EAAW1hH,GACtE,OAAQsV,GACN,IAJuD,oBAKrD,GAAIzjB,EAAO43D,YAAcpuD,EAAMouD,YAAc53D,EAAOwxH,YAAchoH,EAAMgoH,WACtE;AAEFxxH,EAASA,EAAOyS,OAChBjJ,EAAQA,EAAMiJ;AAChB,IAViB,uBAWf,QAAIzS,EAAO43D,YAAcpuD,EAAMouD,aAAei4D,EAAU,IAAIP,EAAatvH,GAAS,IAAIsvH,EAAa9lH;AAIrG,IAhBU,mBAiBV,IAjBwC,gBAkBxC,IAlB2H,kBAmBzH,OAAO0kH,EAAWvD,IAAI3qH,GAASwJ;AACjC,IApBoE,iBAqBlE,OAAOxJ,EAAOzC,MAAQiM,EAAMjM,MAAQyC,EAAOyP,SAAWjG,EAAMiG;AAC9D,IAtB0J,kBAuB1J,IAvBkN,kBAwBhN,OAAOzP,GAAUwJ,EAAQ;AAC3B,IAzB+F,eA0B7F,IAAIioH,EAAUhB;AAChB,IA3BsL,eA4BpL,IAAIX,EA7BmB,EA6BPH;AAEhB,GADA8B,IAAYA,EAAUf,GAClB1wH,EAAO8B,MAAQ0H,EAAM1H,OAASguH,EAChC;AAEF,IAAI4B,EAAUvjH,EAAMnN,IAAIhB;AACxB,GAAI0xH,EACF,OAAOA,GAAWloH;AAEpBmmH,GAtCmD,EAuCnDxhH,EAAMtF,IAAI7I,EAAQwJ;AAClB,IAAI0G,EAASw/G,EAAY+B,EAAQzxH,GAASyxH,EAAQjoH,GAAQmmH,EAASC,EAAYC,EAAW1hH;AAE1F,OADAA,EAAc2xB,OAAE9/B,GACTkQ;AACT,IA1CiP,kBA2C/O,GAAI0gH,EACF,OAAOA,EAAchwH,KAAKZ,IAAW4wH,EAAchwH,KAAK4I,GAG9D,QACF,CA7CA,CA8GqIxJ,EAAQwJ,EAAO2nH,EAAQxB,EAASC,EAAYC,EAAW1hH;AAE1L,KApByB,EAoBnBwhH,GAAiC,CACrC,IAAIgC,EAAeN,GAAY1wH,EAAeC,KAAKZ,EAAQ,eAAgB4xH,EAAeN,GAAY3wH,EAAeC,KAAK4I,EAAO;AACjI,GAAImoH,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAe3xH,EAAO0D,QAAU1D,EAAQ8xH,EAAeF,EAAepoH,EAAM9F,QAAU8F;AAEzG,OADA2E,IAAUA,EAAQ,IAAIygH,GACfiB,EAAUgC,EAAcC,EAAcnC,EAASC,EAAYzhH,EACpE,CACF,CACA,QAAKojH,IAGLpjH,IAAUA,EAAQ,IAAIygH,GA1ExB,SAAsB5uH,EAAQwJ,EAAOmmH,EAASC,EAAYC,EAAW1hH,GACnE,IAAI2hH,EAJuB,EAIXH,EAAkCoC,EAAW5C,EAAWnvH,GAASgyH,EAAYD,EAAS7zH;AACtG,GAAI8zH,GADqH7C,EAAW3lH,GAA6BtL,SAClI4xH,EAC7B;AAGF,IADA,IAAIz9G,EAAQ2/G,EACL3/G,KAAS,CACd,IAAInS,EAAM6xH,EAAS1/G;AACnB,KAAMy9G,EAAY5vH,KAAOsJ,EAAQqhH,EAAiBjqH,KAAK4I,EAAOtJ,IAC5D,QAEJ,CACA,IAAI+xH,EAAa9jH,EAAMnN,IAAIhB,GACvBkwH,EAAa/hH,EAAMnN,IAAIwI;AAC3B,GAAIyoH,GAAc/B,EAChB,OAAO+B,GAAczoH,GAAS0mH,GAAclwH;AAE9C,IAAIkQ;AACJ/B,EAAMtF,IAAI7I,EAAQwJ,GAClB2E,EAAMtF,IAAIW,EAAOxJ;AAEjB,IADA,IAAIkyH,EAAWpC,IACNz9G,EAAQ2/G,GAAW,CAE1B,IAAIG,EAAWnyH,EADfE,EAAM6xH,EAAS1/G,IACag+G,EAAW7mH,EAAMtJ;AAC7C,GAAI0vH,EACF,IAAIU,EAAWR,EAAYF,EAAWS,EAAU8B,EAAUjyH,EAAKsJ,EAAOxJ,EAAQmO,GAASyhH,EAAWuC,EAAU9B,EAAUnwH,EAAKF,EAAQwJ,EAAO2E;AAE5I,cAAMmiH,EAAsB6B,IAAa9B,GAAYR,EAAUsC,EAAU9B,EAAUV,EAASC,EAAYzhH,GAASmiH,GAAW,CAC1HpgH;AACA,KACF,CACAgiH,IAAaA,EAAkB,eAAPhyH,EAC1B,CACA,GAAIgQ,IAAWgiH,EAAU,CACvB,IAAIE,EAAUpyH,EAAOmqB,YAAakoG,EAAU7oH,EAAM2gB;AAC9CioG,GAAWC,KAAY,gBAAiBryH,MAAU,gBAAiBwJ,IAA8B,mBAAX4oH,GAAyBA,aAAmBA,GAA6B,mBAAXC,GAAyBA,aAAmBA,IAClMniH,KAEJ,CAGA,OAFA/B,EAAc2xB,OAAE9/B,GAChBmO,EAAc2xB,OAAEt2B,GACT0G,CACT,CA1CA,CA2EsBlQ,EAAQwJ,EAAOmmH,EAASC,EAAYC,EAAW1hH,GACrE,CA7BA,CAqCyBzK,EAAO8F,EAAOmmH,EAASC,EAAYoB,EAAa7iH,GACzE,EAIAw6G,GAAqB8G,SAAWA,EAChC9G,GAAqBtrH,KAAOA,EAC5BsrH,GAAqB+H,WAAaA,EAC3B/H,EACR,CAEA,IAEI2J,GAFAC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAIF,GAA0B,OAAOC;AACrCD,GAA2B;AAC3B,MAAM7H,EAAOV,KACPpnC,EAAWD,KACXwrC,EAAa1D,KACbroC,EAAWhB;AAQjB,IAAIwvC,EAAcxuC,EAASnM,OAASmM,EAASnM,OAAOt1E,iBAAoB+xH,EAAiB9B,EAAcA,EAAYtoH;AACnH,SAASqqH,EAAahvH,GACpB,GAAoB,iBAATA,EACT,OAAOA;AAET,GAAI+mH,EAAKllH,QAAQ7B,GACf,OAbJ,SAAkBlE,EAAOmvH,GAEvB,IADA,IAAIt8G,GAAS,EAAGnU,EAAkB,MAATsB,EAAgB,EAAIA,EAAMtB,OAAQgS,EAAS5Q,MAAMpB,KACjEmU,EAAQnU,GACfgS,EAAOmC,GAASs8G,EAASnvH,EAAM6S,GAAQA,EAAO7S;AAEhD,OAAO0Q,CACT,CANA,CAaoBxM,EAAOgvH,GAAgB;AAEzC,GAAI/vC,EAASA,SAASj/E,GACpB,OAAO+uH,EAAiBA,EAAe7xH,KAAK8C,GAAS;AAEvD,IAAIwM,EAASxM,EAAQ;AACrB,MAAiB,KAAVwM,GAAiB,EAAIxM,QAAqB,KAAOwM,CAC1D,CACA,IAAIyiH,EAAe,mDAAoDC,EAAgB;AACvF,SAASC,EAAMnvH,EAAO1D,GACpB,GAAIyqH,EAAKllH,QAAQ7B,GACf;AAEF,IAAIqN,SAAcrN;AAClB,QAAY,UAARqN,GAA4B,UAARA,GAA4B,WAARA,GAA8B,MAATrN,IAAiBi/E,EAASA,SAASj/E,KAG7FkvH,EAAclxH,KAAKgC,KAAWivH,EAAajxH,KAAKgC,IAAoB,MAAV1D,GAAkB0D,KAAStG,OAAO4C,EACrG,CAEA,SAAS8yH,EAAQ3jH,EAAM4jH,GACrB,GAAmB,mBAAR5jH,GAAkC,MAAZ4jH,GAAuC,mBAAZA,EAC1D,MAAM,IAAI9jD,UAHQ;AAKpB,IAAI+jD,EAAW,SAAXA,IACF,IAAIj1H,EAAOE,UAAWiC,EAAM6yH,EAAWA,EAAS50H,MAAMQ,KAAMZ,GAAQA,EAAK,GAAI6iC,EAAQoyF,EAASpyF;AAC9F,GAAIA,EAAM96B,IAAI5F,GACZ,OAAO0gC,EAAM5/B,IAAId;AAEnB,IAAIgQ,EAASf,EAAKhR,MAAMQ,KAAMZ;AAE9B,OADAi1H,EAASpyF,MAAQA,EAAM/3B,IAAI3I,EAAKgQ,IAAW0wB,EACpC1wB,CACT;AAEA,OADA8iH,EAASpyF,MAAQ,IAAKkyF,EAAQG,OAAS/E,EAAW/C,UAC3C6H,CACT,CACAF,EAAQG,MAAQ/E,EAAW/C;AAY3B,IAVuBh8G,EACjBe,EAMA0wB,EAGFsyF,EAAa,mGACbC,EAAe,WACfC,GAZmBjkH,EAYU,SAASm0E,GACxC,IAAIpzE,EAAS;AAOb,OAN6B,KAAzBozE,EAAO7oE,WAAW,IACpBvK,EAAOvQ,KAAK,IAEd2jF,EAAOvpE,QAAQm5G,YAAqBxqH,EAAOkiF,EAAQngC,EAAO4oE,GACxDnjH,EAAOvQ,KAAK8qD,EAAQ4oE,EAAUt5G,QAAQo5G,EAAc,MAAQvoC,GAAUliF,EACxE,IACOwH,CACT,EApBMA,EAAS4iH,EAAQ3jH,YAAejP,GAIlC,OANmB,MAGf0gC,EAAM9+B,MACR8+B,EAAMy8B,QAEDn9D,CACT,IACI0gC,EAAQ1wB,EAAO0wB,MACZ1wB;AAcT,MAAMojH,EAAiBF;AAIvB,SAASG,EAAS7vH,EAAO1D,GACvB,OAAIyqH,EAAKllH,QAAQ7B,GACRA,EAEFmvH,EAAMnvH,EAAO1D,GAAU,CAAC0D,GAAS4vH,EAP1C,SAAkB5vH,GAChB,OAAgB,MAATA,EAAgB,GAAKgvH,EAAahvH,EAC3C,CAFA,CAOkEA,GAClE,CACA,SAAS8vH,EAAM9vH,GACb,GAAoB,iBAATA,GAAqBi/E,EAASA,SAASj/E,GAChD,OAAOA;AAET,IAAIwM,EAASxM,EAAQ;AACrB,MAAiB,KAAVwM,GAAiB,EAAIxM,QAAqB,KAAOwM,CAC1D,CASA,SAASujH,EAAUzzH,EAAQE,GACzB,OAAiB,MAAVF,GAAkBE,KAAO9C,OAAO4C,EACzC,CAyBA,OALAuyH,GAAcmB,QA9Bd,SAAiB1zH,EAAQ+H,GAGvB,IADA,IAAIsK,EAAQ,EAAGnU,GADf6J,EAAOwrH,EAASxrH,EAAM/H,IACO9B,OACZ,MAAV8B,GAAkBqS,EAAQnU,GAC/B8B,EAASA,EAAOwzH,EAAMzrH,EAAKsK;AAE7B,OAAOA,GAASA,GAASnU,EAAS8B,QACpC,EAwBAuyH,GAAcgB,SAAWA,EACzBhB,GAAcoB,MALd,SAAe3zH,EAAQ+H,GACrB,OAAiB,MAAV/H,GAjBT,SAAiBA,EAAQ+H,EAAM6rH,GAG7B,IADA,IAAIvhH,GAAS,EAAGnU,GADhB6J,EAAOwrH,EAASxrH,EAAM/H,IACQ9B,OAAQgS,OAC7BmC,EAAQnU,GAAQ,CACvB,IAAIgC,EAAMszH,EAAMzrH,EAAKsK;AACrB,KAAMnC,EAAmB,MAAVlQ,GAAkB4zH,EAAQ5zH,EAAQE,IAC/C;AAEFF,EAASA,EAAOE,EAClB,CACA,OAAIgQ,KAAYmC,GAASnU,EAChBgS,KAEThS,EAAmB,MAAV8B,EAAiB,EAAIA,EAAO9B,SAClBusH,EAAKF,SAASrsH,IAAWgwH,EAAW7C,QAAQnrH,EAAKhC,KAAYusH,EAAKllH,QAAQvF,IAAWyqH,EAAKL,YAAYpqH,GAC3H,CAfA,CAiBmCA,EAAQ+H,EAAM0rH,EACjD,EAIAlB,GAAcM,MAAQA,EACtBN,GAAciB,MAAQA,EACfjB,EACR,CAEA,IAEIsB,GAYAC,GAdAC,GAAmB,CAAC;AAIxB,SAASC,KACR,OAAIH,KACJA,GAA8B,EAI9BE,GAAiBE,SAHjB,SAAkBvwH,GAChB,OAAOA,CACT,GAJwCqwH,EAOzC,CAIA,SAASG,KACR,GAAIJ,GAAiC,OAAOtS;AAC5CsS,GAAkC,EAClC12H,OAAO2D,eAAeygH,GAAsB,aAAc,CAAE99G;AAC5D,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxBo5C,EAAMrhC,IACN2lC,EAAcH,KACdC,EAAYtE,KACZoS,EAAQrW,KACRsW,EAAenG,KACf9rC,EAAWhB,KACXwyC,EAAQnB,KACRyB,EAAWD,KACXvJ,EAAOV,KACPoE,EAAU1C;AAgBhB,SAAS4I,EAAU3wH,GACjB,OAAOA,GAAUA,CACnB,CAaA,SAAS4wH,EAAc90H,EAAOkE,GAE5B,QADsB,MAATlE,IAAoBA,EAAMtB,SAJzC,SAAqBsB,EAAOkE,EAAO6wH,GACjC,OAAO7wH,GAAUA,EAVnB,SAAuBlE,EAAOkE,EAAO6wH,GAEnC,IADA,IAAI33B,GAAS23B,EAAer2H,EAASsB,EAAMtB,SAClC0+F,EAAS1+F,GAChB,GAAIsB,EAAMo9F,KAAYl5F,EACpB,OAAOk5F;AAGX,OAAQ,CACV,CARA,CAUyCp9F,EAAOkE,GAtBhD,SAAuBlE,EAAOM,EAAWy0H,EAAWC,GAElD,IADA,IAAIt2H,EAASsB,EAAMtB,OAAQ0+F,GAAS23B,IAC3B33B,EAAS1+F,GAChB,GAAI4B,EAAUN,EAAMo9F,GAASA,EAAQp9F,GACnC,OAAOo9F;AAGX,OAAQ,CACV,CARA,CAsBkFp9F,EAAO60H,EACzF,CAFA,CAKiC70H,EAAOkE,IAAa,CACrD,CAjCAk+G,KACA4I,KACA1B,KACApmC;AAiEA,SAAS+xC,EAAmB/wH,GAC1B,OAAOA,GAAUA,IAAUy+E,EAASA,SAASz+E,EAC/C,CASA,SAASgxH,EAAwBx0H,EAAKy0H,GACpC,OAAO,SAAS30H,GACd,OAAc,MAAVA,GAGGA,EAAOE,KAASy0H,aAAaA,GAAuBz0H,KAAO9C,OAAO4C,GAC3E,CACF,CAiDA,MAAM40H,EAHYzG,EAAQ1uH,KAAO,EAAI20H,EAAa1D,WAAW,IAAIvC,EAAQ1uH,IAAI,CAAC,EAAG,KAAK,IADvE,IACgG,SAASooF,GACtH,OAAO,IAAIsmC,EAAQ1uH,IAAIooF,EACzB,EAlIA,WACA;AA4KA,MAEMgtC,EAAa,MACjB1qG,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKm2H,8BAAgCziH,EAAMo8E,YAAY9vF,KAAM,gCAAiC,GAC9FA,KAAKo2H,qBAAuB1iH,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAKq2H,yBAA2B3iH,EAAMo8E,YAAY9vF,KAAM,2BAA4B,GACpFA,KAAKs2H,wBAA0B5iH,EAAMo8E,YAAY9vF,KAAM,0BAA2B,GAClFA,KAAKu2H,8BAAgC7iH,EAAMo8E,YAAY9vF,KAAM,gCAAiC,GAC9FA,KAAKsK,UAAY,CAAC,EAClBtK,KAAK+E,MAAQ,GACb/E,KAAKs/G,eACLt/G,KAAKu/G,aACLv/G,KAAKw2H,eACLx2H,KAAKpB,YACLoB,KAAKy2H,eAAiB,cACtBz2H,KAAK4nH,YAAc,MACnB5nH,KAAK02H,YAAc,UACnB12H,KAAK22H,uBACL32H,KAAK42H,aACL52H,KAAK0pH,aACL1pH,KAAK62H,WAA6B,IAAI/1H,IACtCd,KAAK82H,oBACP,CACAC,qBACE/2H,KAAKg3H,gBACP,CACAC,eACEj3H,KAAKu2H,8BAA8Bh6D,OACnCv8D,KAAKk3H,wBACP,CACAC,6BACEn3H,KAAKo3H,yBACP,CAGAC,wBAAwBn3H,GACtBF,KAAKs3H,wBAAwBp3H,EAAE0B,OACjC,CAGA21H,0BAA0Br3H,GACxBF,KAAKw3H,0BAA0Bt3H,EAAE0B,OACnC,CAGA61H,yBAAyBv3H,GACvBF,KAAKs3H,wBAAwBp3H,EAAE0B,OACjC,CAGA81H,2BAA2Bx3H,GACzBF,KAAKw3H,0BAA0Bt3H,EAAE0B,OACnC,CAIA+1H,wCAAuCC,GAAc,IAAbrkC,OAAEA,GAAQqkC;AAChD53H,KAAK63H,YAAYtkC,EAAOxuF,MAC1B,CACA+yH,2BACE,MAAMC,EAAsB,KACA,iBAAf/3H,KAAK+E,MACP/E,KAAK+E,MAAQ/E,KAAK+E,MAAM8K,MAAM,KAAKjF,QAAQ7F,IAAWywH,EAAMtV,aAAan7G,KAAU,GACjFpE,MAAMiG,QAAQ5G,KAAK+E,OACrB/E,KAAK+E,MAAM6F,QAAQ7F,IAAWywH,EAAMtV,aAAan7G,KAEnD/E,KAAK+E,MANc,GAQtBizH,EAzEV,SAAgBn3H,EAAOmvH,GACrB,OAAOnvH,GAASA,EAAMtB,OAtCxB,SAAkBsB,EAAOmvH,EAAUiI,GACjC,IAAIh6B,GAAU,EAAG59F,EAAWs1H,EAAep2H,EAASsB,EAAMtB,OAAQ24H,KAAiB3mH,EAAS,GAAIigH,EAAOjgH;AACvG,GAAIhS,GAHiB,IAGW,CAC9B,IAAI2K,EAAM8lH,EAAW,KAAOiG,EAAYp1H;AACxC,GAAIqJ,EACF,OAAOurH,EAAa1D,WAAW7nH;AAEjCguH,KACA73H,EAAWo1H,EAAa3E,SACxBU,EAAO,IAAIiE,EAAa7E,QAC1B,MACEY,EAAOxB,EAAW,GAAKz+G;AAEzB4mH,EACE,OAASl6B,EAAS1+F,GAAQ,CACxB,IAAIwF,EAAQlE,EAAMo9F,GAASm6B,EAAWpI,EAAWA,EAASjrH,GAASA;AAEnE,GADAA,EAAkB,IAAVA,EAAcA,EAAQ,EAC1BmzH,GAAYE,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAY7G,EAAKjyH,OACd84H,KACL,GAAI7G,EAAK6G,KAAeD,EACtB,SAASD;AAGTnI,GACFwB,EAAKxwH,KAAKo3H,GAEZ7mH,EAAOvQ,KAAK+D,EACd,MAAY1E,EAASmxH,EAAM4G,OAUAE,KATrB9G,IAASjgH,GACXigH,EAAKxwH,KAAKo3H,GAEZ7mH,EAAOvQ,KAAK+D,GAEhB,CACF,OAAOwM,CACT,CApCA,CAsC0C1Q,EAvDpB,mBADAkE,EAwDwCirH,GAtDnDjrH,EAEI,MAATA,EACKuwH,EAASA,SAEE,iBAATvwH,EACF+mH,EAAKllH,QAAQ7B,IA9BKqE,EA8BwBrE,EAAM,GA9BxBixH,EA8B4BjxH,EAAM,GA7B/DiwH,EAAMd,MAAM9qH,IAAS0sH,EAAmBE,GACnCD,EAAwBf,EAAMH,MAAMzrH,GAAO4sH,GAE7C,SAAS30H,GACd,IAAImyH,EApER,SAAanyH,EAAQ+H,EAAMmvH,GACzB,IAAIhnH,EAAmB,MAAVlQ,SAA0B2zH,EAAMD,QAAQ1zH,EAAQ+H;AAC7D,gBAAOmI,SAAmCA,CAC5C,CAHA,CAoEuBlQ,EAAQ+H;AAC3B,gBAAOoqH,GAAuBA,IAAawC,EAAWhB,EAAMA,MAAM3zH,EAAQ+H,GAAQqsH,EAAapD,YAAY2D,EAAUxC,EAAUgF,EACjI,IAhBIC,EAjBN,SAAsBp3H,GAEpB,IADA,IAAIkQ,EAASkkH,EAAa/2H,KAAK2C,GAAS9B,EAASgS,EAAOhS,OACjDA,KAAU,CACf,IAAIgC,EAAMgQ,EAAOhS,GAASwF,EAAQ1D,EAAOE;AACzCgQ,EAAOhS,GAAU,CAACgC,EAAKwD,EAAO+wH,EAAmB/wH,GACnD,CACA,OAAOwM,CACT,CAPA,CAgBqBzP,EAwCkEiD,GAtC7D,GAApB0zH,EAAUl5H,QAAek5H,EAAU,GAAG,GACjC1C,EAAwB0C,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASp3H,GACd,OAAOA,IAAWS,GAtDtB,SAAqBT,EAAQS,EAAQ22H,EAAWxH,GAC9C,IAAIhzB,EAASw6B,EAAUl5H,OAAQA,EAAS0+F;AACxC,GAAc,MAAV58F,EACF,OAAQ9B;AAGV,IADA8B,EAAS5C,OAAO4C,GACT48F,KAAU,CACf,IAAIlzF,EAAO0tH,EAAUx6B;AACrB,GAAIlzF,EAAK,GAAKA,EAAK,KAAO1J,EAAO0J,EAAK,MAAQA,EAAK,KAAM1J,GACvD,QAEJ,CACA,OAAS48F,EAAS1+F,GAAQ,CAExB,IAAIgC,GADJwJ,EAAO0tH,EAAUx6B,IACF,GAAIu1B,EAAWnyH,EAAOE,GAAMy0H,EAAWjrH,EAAK;AAC3D,GAAIA,EAAK,IACP,YAAIyoH,KAAyBjyH,KAAOF,GAClC,aAEG,CACL,IAAImO,EAAQ,IAAIimH,EAAaxF;AAE7B,IAA0BwF,EAAapD,YAAY2D,EAAUxC,EAAUkF,OAAyBC,EAAsCnpH,GACpI,QAEJ,CACF,CACA,QACF,CA5BA,CAsD4CnO,EAAQS,EAAQ22H,EAC1D,GAsBF,SAAkBrvH,GAChB,OAAO4rH,EAAMd,MAAM9qH,IAXC7H,EAWoByzH,EAAMH,MAAMzrH,GAV7C,SAAS/H,GACd,OAAiB,MAAVA,SAA0BA,EAAOE,EAC1C,GAEF,SAA0B6H,GACxB,OAAO,SAAS/H,GACd,OAAO2zH,EAAMD,QAAQ1zH,EAAQ+H,EAC/B,CACF,CAJA,CAMgFA;AAXhF,IAAsB7H,CAYtB,CAFA,CAakBwD,IA8CyD;AAxF3E,IAAqBjD,EACf22H,EASuBrvH,EAAM4sH,EAsBbjxH,CAyDtB,CAuE8B6zH,CAAO,IAAI54H,KAAK62H,YAAYjsH,QAAQ7J,GAASA,IAASf,KAAK64H,cAAc93H,GAASA,EAAKgE,QAC3G+zH,EAAyBd,EAAkB3+D,SAAQqwD,EAAO3oH,KACzDy0H,EAAMtV,aAAan/G,EAAKgE,QAC3B2kH,EAAM1oH,KAAKD,EAAKgE,OAEX2kH,IACN;AACH,MAAO,CAAEsO,oBAAmBc,yBAAwBf,sBACtD,CACAT,wBAAwByB,GAClBA,IAAiB/4H,KAAK64H,WACxB74H,KAAKg5H,iBAELh5H,KAAKi5H,WAAWF;AAElB,MAAMf,kBAAEA,EAAiBc,uBAAEA,EAAsBf,oBAAEA,GAAwB/3H,KAAK83H;AAChF93H,KAAK+E,MAAQ+zH,EAAuB/wH,KAAK,KACzC/H,KAAKm2H,8BAA8B55D,KAAK,CACtC28D,aAAcH,EACdI,kBAAmBJ,EAAah0H,MAEhCq0H,eAAgB,KAEhBC,oBAAqB,KACrBrB,oBACAc,yBACAf,uBAEJ,CACAP,0BAA0B8B,GACxB,IAAKt5H,KAAK62H,WAAW1vH,IAAImyH,GACvB;AAEEA,IAAmBt5H,KAAK64H,WACF,MACtB,IAAInzH,EAAI4P;AAGR,OAFoG,QAApFA,EAAmC,QAA7B5P,EAAK1F,KAAK82H,yBAA2BpxH,SAAyBA,EAAG6zH,mBAAqBjkH,EAAgBA,EAAKtV,KAAK0pH,OAAO9+G,QAAQ7J,GAASA,IAASf,KAAK64H,aAC7IjuH,QAAQ7J,IAAUA,EAAK8pD,WAC9B3e,OAAOnrC,IAAUA,EAAK0sD,UAC/C,EALuB,GAOtBztD,KAAKg5H,iBAELh5H,KAAKw5H,mBAGPx5H,KAAKy5H,aAAaH;AAEpB,MAAMtB,kBAAEA,EAAiBc,uBAAEA,EAAsBf,oBAAEA,GAAwB/3H,KAAK83H;AAChF93H,KAAK+E,MAAQ+zH,EAAuB/wH,KAAK,KACzC/H,KAAKm2H,8BAA8B55D,KAAK,CAEtC28D,aAAc,KAEdC,kBAAmB,KACnBC,eAAgBE,EAChBD,oBAAqBC,EAAev0H,MACpCizH,oBACAc,yBACAf,uBAEJ,CAKAkB,WAAWF,GACL/4H,KAAKs/G,cACFt/G,KAAKw2H,YAIRx2H,KAAK62H,WAAWzvH,IAAI2xH,IAHpB/4H,KAAK05H,cAAc,CAACX,IACpB/4H,KAAK62H,WAA6B,IAAI/1H,IAAI,CAACi4H,KAKjD,CAIAC,iBACE,IAAItzH;AACJ,IAAK1F,KAAK0pH,QAAU1pH,KAAKs/G,cAAgBt/G,KAAKw2H,YAC5C;AAEF,MAAMmD,IAAkD,QAA7Bj0H,EAAK1F,KAAK82H,yBAA2BpxH,SAAyBA,EAAG6zH,UAAYv5H,KAAK0pH,OAAO9+G,QAAQ7J,IAAUA,EAAK8pD;AAC3I7qD,KAAK62H,WAA6B,IAAI/1H,IAAI,IAAId,KAAK62H,WAAW3tC,YAAaywC,GAC7E,CAIAF,aAAaH,GACXt5H,KAAK62H,WAAW11F,OAAOm4F,EACzB,CAIAI,cAAcE,GACP55H,KAAK0pH,OAGV1pH,KAAK0pH,MAAM/qH,SAASoC,KACb64H,EAAcv5H,SAASU,IAASA,EAAK0sD,UACxC1sD,EAAK84H,UACP,GAEJ,CAIAL,mBACE,IAAI9zH,EAAI4P;AACR,IAAKtV,KAAK62H,aAAe72H,KAAKs/G,YAC5B;AAEF,MAAMwa,EAAkB,IAAIh5H,IAAyF,QAApFwU,EAAmC,QAA7B5P,EAAK1F,KAAK82H,yBAA2BpxH,SAAyBA,EAAG6zH,mBAAqBjkH,EAAgBA,EAAKtV,KAAK0pH,OACjJqQ,EAAsB,IAAI/5H,KAAK62H,YAAYjsH,QAAQmuH,GAChDA,EAAaluE,WAAaivE,EAAgB3yH,IAAI4xH;AAEvD/4H,KAAK62H,WAAa,IAAI/1H,IAAIi5H,EAC5B,CAIAC,+BACMh6H,KAAK0pH,MAAMnqH,OAAS,IAAMS,KAAK0pH,MAAM,GAAG3kG,UAAYqoE,EAAQhjB,oBAAoB,sBAAsBxvC,eAAiB56B,KAAK0pH,MAAM,GAAG3kG,UAAYqoE,EAAQhjB,oBAAoB,cAAcxvC,oBAAiB56B,KAAK0pH,MAAM,GAAGpK,eAA0Bt/G,KAAKs/G,cAC3Pt/G,KAAKs/G,eAET,CAKA2a,eACEj6H,KAAK0pH,MAAM/qH,SAASoC,IAClB,GAAIA,EAAKgkB,UAAYqoE,EAAQhjB,oBAAoB,sBAAsBxvC,cAAe,CACpF75B,EAAKw+G,UAAYv/G,KAAKu/G;AACtB,MAAM2a,EAAUn5H,EAAK8uB,cAAcu9D,EAAQhjB,oBAAoB;AAC3D8vD,GACFl6H,KAAKm6H,iBAAiBD,EAE1B,MACEl6H,KAAKm6H,iBAAiBp5H,EACxB,GAEJ,CACAq5H,4BACE,OAAIz5H,MAAMiG,QAAQ5G,KAAK+E,OACd,IAAIjE,IAAId,KAAK+E,OAEf,IAAIjE,IAAId,KAAKw2H,YAAcx2H,KAAK+E,MAAM8K,MAAM,KAAO,CAAC7P,KAAK+E,OAClE,CACAo1H,iBAAiB3oC,GACfA,EAAI8tB,YAAct/G,KAAKs/G,YACvB9tB,EAAI+tB,UAAYv/G,KAAKu/G,UACrB/tB,EAAI6oC,UAAYr6H,KAAKw2H,WACvB,CAIAU,yBACE,IAAIxxH;AACJ,GAAI1F,KAAK+E,OAAwB,KAAf/E,KAAK+E,MAAc,CACnC,MAAMmkF,EAASlpF,KAAKo6H;AACE,QAArB10H,EAAK1F,KAAK0pH,iBAAmBhkH,GAAyBA,EAAG/G,SAASoC,IAC7DA,IAASf,KAAK64H,cAGbrD,EAAMtV,aAAalgH,KAAK+E,QAAUmkF,EAAO/hF,IAAIpG,EAAKgE,QACrDhE,EAAKu5H,iBACLt6H,KAAKi5H,WAAWl4H,KAEhBA,EAAKw5H,mBACLv6H,KAAKy5H,aAAa14H,IACpB,GAEJ,CACF,CAIAy5H,iCACE,MAAMC,EAAoC,IAAI35H;AAC9Cd,KAAK0pH,MAAM/qH,SAASoC,IACdA,EAAK0sD,UACPgtE,EAAkBrzH,IAAIrG,EACxB,IAEFf,KAAK62H,WAAa4D,CACpB,CACAC,uBACE,MAAMC,EAAsB36H,KAAK0pH,MAAMpoH,KAAKP,GAASy0H,EAAM3V,sBAAsB9+G;AAC1C45H,EAAoBzuF,OAAO95B,GAASA,IAASojH,EAAMpW,uBAAuBK,YAAakb,EAAoBzuF,OAAO95B,GAASA,IAASojH,EAAMpW,uBAAuBM,SAAUib,EAAoBzuF,OAAO95B,GAASA,IAASojH,EAAMpW,uBAAuBO,UAAWgb,EAAoBzuF,OAAO95B,GAASA,IAASojH,EAAMpW,uBAAuBQ,8BAE/W5/G,KAAKgtD,GAAGuzB,aAAa,OAAQ,WAC7BvgF,KAAK0pH,MAAM/qH,SAASoC,IAClBA,EAAKw/E,aAAa,OAAQ,SAAS,IAErCvgF,KAAKgtD,GAAGuzB,aAAa,uBAAwBvgF,KAAKw2H,YAAc,OAAS,WAEzEx2H,KAAKgtD,GAAGuzB,aAAa,OAAQ,QAC7BvgF,KAAK0pH,MAAM/qH,SAASoC,IAClBA,EAAKw/E,aAAa,OAAQ,WAAW,KAGrCvgF,KAAK+E,MACP/E,KAAKk3H,yBAELl3H,KAAKw6H,gCAET,CAKAI,mBACE56H,KAAK0pH,MAAQ,IAAI1pH,KAAKgtD,GAAG2mB,UAAU/oE,QAAQykB,IACzC,MAAMtK,EAAUsK,EAAMtK,QAAQke;AAC9B,OAAOle,IAAYqoE,EAAQhjB,oBAAoB,cAAcnnC,eAAiBle,IAAYqoE,EAAQhjB,oBAAoB,sBAAsBnnC,aAAa,IAEjI,IAAtBjjC,KAAK0pH,MAAMnqH,SAGfS,KAAKg6H,+BACLh6H,KAAKi6H,eACLj6H,KAAK06H,uBACD16H,KAAK+E,MACP/E,KAAKk3H,yBAELl3H,KAAKw6H,iCAET,CAKAjd,qCACE,IAAI73G,EAAI4P;AACR,IAAKtV,KAAK64H,WACR;AAEF,MAAMrZ,EAAiBx/G,KAAK64H,WAAWhpG,cAAc,oBAC/CgrG,EAAarb,EAAez6F,QAAQke,gBAAkBmqD,EAAQhjB,oBAAoB,mBAClFs/C,GAA8F,QAApFp0G,EAAmC,QAA7B5P,EAAK1F,KAAK82H,yBAA2BpxH,SAAyBA,EAAG6zH,mBAAqBjkH,EAAgBA,EAAKtV,KAAK0pH,OAAO9+G,QAAQ7J,GAASA,IAASf,KAAK64H;AAU5K,OARMnP,EAAMx9E,OAAOnrC,GAASA,EAAK0sD,WACtB,UACEi8D,EAAM3jH,MAAMhF,GAASA,EAAK0sD,WAC5B,gBAEA,aAIT,IAAK,YACHztD,KAAKy5H,aAAaz5H,KAAK64H,kBACjB74H,KAAK64H,WAAW0B,yBAChBjX,EAAIphC,6BACVs9B,EAAevV,gBAAgB;AAC/B;AACF,IAAK,gBACGjqG,KAAK64H,WAAWyB,iBACtBt6H,KAAKi5H,WAAWj5H,KAAK64H,YACrBrZ,EAAevV,gBAAgB;AAC/B;AACF,IAAK,gBACC4wB,SACI76H,KAAK64H,WAAWyB,iBACtBt6H,KAAKi5H,WAAWj5H,KAAK64H,kBACfvV,EAAIphC,6BACVs9B,EAAej/B,aAAa,gBAAiB,YAEvCvgF,KAAK64H,WAAW0B,mBACtBv6H,KAAKy5H,aAAaz5H,KAAK64H,aAI7B74H,KAAKo3H,yBACP,CASAA,0BACE,IAAKp3H,KAAK64H,WACR;AAEF,MAAMiC,EAAmB96H,KAAK64H,WAAWhpG,cAAc;AACvD,GAAI7vB,KAAK22H,oBAIP,YAHImE,GACF96H,KAAK64H,WAAWrwC,YAAYsyC;AAIhC,MAAMj3G,EAAQ7jB,KAAK82H,cAAcyC,QAAQ3uH,QAAQ7J,IAAUA,EAAK8pD,WAAUtrD;AAC1E,GAAIu7H,EACFA,EAAiBr3F,YAAe,GAAE5f;IAC7B,CACL,MAAMk3G,EAAQp+G,SAASuF,cAAc;AACrC64G,EAAMn0F,UAAUx/B,IAAI,SACpB2zH,EAAMx6C,aAAa,OAAQ,sBAC3Bw6C,EAAMt3F,YAAe,GAAE5f,IACvB7jB,KAAK64H,WAAWt2G,YAAYw4G,EAC9B,CACF,CAIAlD,YAAY1xF,GACV,IAAIzgC;AACJ,MAAMoxH,EAAgB92H,KAAK0pH,MAAMrwD,SAAQ2hE,EAAgBj6H,KACvD,IAAIk6H,EAAK3lH,EAAIoT,EAAIC,EAAIC,EAAI8yB,EAAIE,EAAIG,EAAIE;AACrC,GAAkC,gBAA9Bl7C,EAAK0hC,aAAa,QACpB,OAAOu4F;AACF,IAAK70F,EAEV,OADA60F,EAAezB,QAAQv4H,KAAKD,GACrBi6H;AACF,GAAmC,mBAAxBh7H,KAAKy2H,gBAUrB,GATuBz2H,KAAKy2H,eAAe,CACzC11H,OAEAmkC,MAAwD,QAAhD+1F,EAAMl6H,EAAK8uB,cAAc,6BAA+BorG,SAA0BA,EAAIx3F,YAC9F0C,QAEA1C,YAAa1iC,EAAK0iC,YAClB1+B,MAAOhE,EAAKgE,QAIZ,OADAi2H,EAAezB,QAAQv4H,KAAKD,GACrBi6H,OAEJ,GAAuJ,iBAAlD,QAA/FtyG,EAAoC,QAA9BpT,EAAKtV,KAAKy2H,0BAA4BnhH,SAAyBA,EAAG2qG,6BAA+Bv3F,SAAyBA,EAAGzmB,KAAKqT,KAEnJ,IADyF,QAAvEqT,EAAK5nB,eAA4CA,EAAK0iC,uBAAyB9a,SAAyBA,EAAGpoB,OAAO,IAAIiH,OAAO2+B,EAAO,QAAU,EAG9J,OADA60F,EAAezB,QAAQv4H,KAAKD,GACrBi6H,OAEJ,GAAuJ,WAAlD,QAA/Ft/E,EAAoC,QAA9B9yB,EAAK5oB,KAAKy2H,0BAA4B7tG,SAAyBA,EAAGq3F,6BAA+BvkE,SAAyBA,EAAGz5C,KAAK2mB,IAAkB,CACrK,MAAMsyG,EAAUn6H,EAAK8uB,cAAc;AAEnC,IADkG,QAAhF+rB,EAAKs/E,eAAkDA,EAAQz3F,uBAAyBmY,SAAyBA,EAAGr7C,OAAO,IAAIiH,OAAO2+B,EAAO,QAAU,EAGvK,OADA60F,EAAezB,QAAQv4H,KAAKD,GACrBi6H,CAEX,MAAO,GAAuJ,WAAlD,QAA/F/+E,EAAoC,QAA9BF,EAAK/7C,KAAKy2H,0BAA4B16E,SAAyBA,EAAGkkE,6BAA+BhkE,SAAyBA,EAAGh6C,KAAK85C,KACrInsC,OAAO7O,EAAKgE,OACJxE,OAAO,IAAIiH,OAAO2+B,KAAW,EAGjD,OADA60F,EAAezB,QAAQv4H,KAAKD,GACrBi6H;AAIX,OADAA,EAAeG,OAAOn6H,KAAKD,GACpBi6H,CAAc,GACpB,CACDzB,QAAS,GACT4B,OAAQ,GACRC,gBAAiB,GACjB3tE,SAAU;AAEZgH,4BACE,IAAIwmE;AACJnE,EAAcyC,QAAQ56H,SAASoC,GAASA,EAAK6lC,UAAU7yB,OAAO,YAC9D+iH,EAAcqE,OAAOx8H,SAASoC,GAASA,EAAK6lC,UAAUx/B,IAAI,YAC1DpH,KAAK0pH,MAAM/qH,SAASoC,GAASA,EAAK6lC,UAAU7yB,OAAO,wBAC/C+iH,EAAcyC,QAAQh6H,OAAS,GACTu3H,EAAcyC,QAAQzC,EAAcyC,QAAQh6H,OAAS,GAC7DqnC,UAAUx/B,IAAI,sBAEJ,QAA3B6zH,EAAMj7H,KAAK64H,sBAAwBoC,GAA0BA,EAAIr0F,UAAUy0F,OAAO,SAA2C,IAAjCvE,EAAcyC,QAAQh6H,OAAa,KAE9HS,KAAK82H,gBAAkB92H,KAAK82H,eAAiB3wF,IAC/CnmC,KAAKs2H,wBAAwB/5D,KAAK,CAChCmtD,MAAOoN,EAAcyC,QACrB+B,UAAyC,QAA7B51H,EAAK1F,KAAK82H,yBAA2BpxH,SAAyBA,EAAG6zH,UAGjFv5H,KAAK82H,cAAgBA,EACrB92H,KAAKu7H,oCACP,CACAA,qCACOv7H,KAAK82H,gBAGV92H,KAAK82H,cAAcrpE,SAAWztD,KAAK0pH,MAAM9+G,QAAQ7J,GAAuC,gBAA9BA,EAAK0hC,aAAa,SAA6B1hC,EAAK0sD,WAC9GztD,KAAK82H,cAAcsE,gBAAkBp7H,KAAK82H,cAAcyC,QAAQ3uH,QAAQ7J,GAAuC,gBAA9BA,EAAK0hC,aAAa,SAA6B1hC,EAAK0sD,WACvI,CAEA+tE,yBACE,IAAI91H;AACJ1F,KAAKy7H,cAAgBz7H,KAAKgtD,GAAGn9B,cAAc,mBAC3C7vB,KAAK42H,UAAYz5G,QAAQnd,KAAKy7H,eAC9Bz7H,KAAK63H,YAA0C,QAA7BnyH,EAAK1F,KAAKy7H,yBAA2B/1H,SAAyBA,EAAGX,MACrF,CACA22H,2BACE,IAAIh2H;AACJ1F,KAAK46H,mBACL56H,KAAK63H,YAA0C,QAA7BnyH,EAAK1F,KAAKy7H,yBAA2B/1H,SAAyBA,EAAGX,OACnF/E,KAAKg3H,iBACLh3H,KAAKo2H,qBAAqB75D,MAC5B,CAKAo/D,8BACE,IAAK37H,KAAKs/G,cAAgBt/G,KAAKw2H,YAC7B;AAEF,MAAMoF,EAAa57H,KAAKgtD,GAAGn9B,cAAc,wBACnC2vF,EAAiBoc,eAAwDA,EAAW/rG,cAAc;AACxG7vB,KAAK64H,WAAarD,EAAMzV,eAAeP,GAAkBoc,QAC3D,CAOAC,0BACE,IAAIn2H,EAAI4P;AACR,MAAMwmH,EAAe97H,KAAKgtD,GAAGn9B,cAAc,yBAC3C7vB,KAAKgtD,GAAG/9B,WAAWY,cAAcu9D,EAAQhjB,oBAAoB,uBACvD2xD,GAAoD,QAA7Br2H,EAAK1F,KAAKy7H,yBAA2B/1H,SAAyBA,EAAGX,UAA0C,QAA7BuQ,EAAKtV,KAAK82H,yBAA2BxhH,SAAyBA,EAAGikH,QAAQh6H;AACpLu8H,SAA4DA,EAAal1F,UAAUy0F,OAAO,UAAWU,EACvG,CAKAC,oCACMh8H,KAAKsK,UAAU2xH,wBAGnBj8H,KAAKsK,UAAU2xH,sBAAwB,IAAIxwG,kBAAkB2oC,IAC3D,IAAK,MAAMU,KAAYV,EACjBU,EAASlzD,OAAOq/B,gBAAkBjhC,KAAKgtD,IAAwB,eAAlB8H,EAAS1iD,MAAoD,aAA3B0iD,EAASjtB,eAC1F7nC,KAAKo3H,yBAET,IAEFp3H,KAAKsK,UAAU2xH,sBAAsB7pG,QAAQpyB,KAAKgtD,GAAI,CACpDG,cACA+uE,gBAAiB,CAAC,YAClB7kE,aACAC,aAEJ,CAEAumD,oBACE79G,KAAKm8H,8BACP,CACAnmC,oBACE,IAAItwF;AACJ1F,KAAK46H,mBACL56H,KAAK63H,YAA0C,QAA7BnyH,EAAK1F,KAAKy7H,yBAA2B/1H,SAAyBA,EAAGX,MACrF,CACAmxF,sBACEl2F,KAAKg6H,+BACLh6H,KAAKi6H,eACLj6H,KAAK06H,uBACL16H,KAAKu7H,qCACLv7H,KAAK27H,8BACL37H,KAAKm8H,+BACLn8H,KAAK67H,yBACP,CACAO,mBACEp8H,KAAKg8H,mCACP,CACAle,uBACE,IAAIp4G;AAC4C,QAA/CA,EAAK1F,KAAKsK,UAAU2xH,iCAAmCv2H,GAAyBA,EAAG6sB,YACtF,CAaA8pG,cAAcn8H,GACZ,OAAQA,EAAEqB,KACR,IAAK,YACHvB,KAAKs8H,gBAAgBp8H;AACrB;AACF,IAAK,UACHF,KAAKu8H,cAAcr8H,GAGzB,CACAo8H,gBAAgBp8H,GACd,MAAMs8H,EAAUx8H,KAAKgtD,GAAGn9B,cAAc,UAChC4sG,EAAsB,IAAIz8H,KAAK0pH,OAAOlpH,QAAQg8H;AACpD,IAA6B,IAAzBC,EAAJ,CAGA,IAAK,IAAIx7H,EAAIw7H,EAAsB,EAAGx7H,EAAIjB,KAAK0pH,MAAMnqH,OAAQ0B,IAC3D,IAAKjB,KAAK0pH,MAAMzoH,GAAG4pD,SAAU,CAC3B7qD,KAAK0pH,MAAMzoH,GAAGw6E;AACd,KACF,CAEFv7E,EAAEg9E,gBAPF,CAQF,CACAq/C,cAAcr8H,GACZ,MAAMs8H,EAAUx8H,KAAKgtD,GAAGn9B,cAAc,UAChC4sG,EAAsB,IAAIz8H,KAAK0pH,OAAOlpH,QAAQg8H;AACpD,IAA6B,IAAzBC,EAAJ,CAGA,IAAK,IAAIx7H,EAAIw7H,EAAsB,EAAGx7H,GAAK,EAAGA,IAC5C,IAAKjB,KAAK0pH,MAAMzoH,GAAG4pD,SAAU,CAC3B7qD,KAAK0pH,MAAMzoH,GAAGw6E;AACd,KACF,CAEFv7E,EAAEg9E,gBAPF,CAQF,CAMAqgC,sBAAsBtf,GACpB,MAAMzM,EAAMxxF,KAAK0pH,MAAMzrB;AACvB,OAAIzM,GACFA,EAAI/V,QACG0G,QAAQC,WAERD,QAAQu6C,OAAO,IAAItrH,MAAO,gBAAe6sF,eAEpD,CACA+4B,iBACE,MAAMhqE,GAAEA,EAAE08D,MAAEA,EAAKmP,WAAEA,EAAYjR,YAAa+U,EAAajG,YAAEA,EAAWkG,QAAEA,EAAOvG,yBAAEA,GAA6Br2H;AACxF,QAAlB28H,GACFC,SAAkDA,EAAQnnB,UAC1Dz1G,KAAK48H,QAAU,MACLA,IACV58H,KAAK48H,QAAU,IAAIhV,EAAYC,YAAY,CACzC76D,KACAi7D,QAAS,CAAE,GAAE76B,EAAQhjB,oBAAoB,uCACzC71D,MAAO8hH,EACP9wE,KAAMmxE,KAGVhN,SAA8CA,EAAM/qH,SAASoC,IACtD2mH,EAAUH,YAAYxmH,IAEvBA,IAAS83H,IAEb93H,EAAKymH,YAAgC,QAAlBmV,EAAuB,GAE9C,CACAE,WAAW38H,GACT,IAAIwF;AACoB,QAAvBA,EAAK1F,KAAK48H,mBAAqBl3H,GAAyBA,EAAGgjH,SAASxoH,EACvE,CACA48H,cACE,IAAIp3H;AACoB,QAAvBA,EAAK1F,KAAK48H,mBAAqBl3H,GAAyBA,EAAG0jH,WAC9D,CACA2T,UAAU78H,GACR,IAAIwF;AACoB,QAAvBA,EAAK1F,KAAK48H,mBAAqBl3H,GAAyBA,EAAG2jH,QAAQnpH,EACtE,CACA88H,WAAW98H,GACT,IAAIwF;AACoB,QAAvBA,EAAK1F,KAAK48H,mBAAqBl3H,GAAyBA,EAAGu3H,SAAS/8H,EACvE,CACAg9H,qBACEl9H,KAAKg3H,gBACP,CACA5gC,SACE,IAAI1wF;AACJ,MAAMy3H,EAAmB/vC,EAAQhjB,oBAAoB;AACrD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,cAAe,kBAAmB52F,KAAKpB,KAAM,aAAcoB,KAAK42H,UAAWwG,UAAYl9H,GAAMF,KAAKq8H,cAAcn8H,GAAIm9H,iBAAmBn9H,GAAMF,KAAK68H,WAAW38H,GAAIo9H,kBAAmBA,IAAMt9H,KAAK88H,cAAeS,gBAAkBr9H,GAAMF,KAAK+8H,UAAU78H,GAAIs9H,iBAAmBt9H,GAAMF,KAAKg9H,WAAW98H,IAAMwT,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAU2/G,aAAcA,IAAMv+G,KAAKw7H,2BAA6B9nH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,cAAe2/G,aAAcA,IAAMv+G,KAAK27H,gCAAkCjoH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAK07H,6BAA+BhoH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,eAAiB8U,EAAM0hB,EAAE+nG,EAAkB,CAAE57H,IAAK,2CAA4Cq1F,MAAO,UAAYljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CipC,OAAQ,KAAMqsD,KAAM,QAAS4mC,QAAS,YAAalzF,MAAO,KAAMmzF,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C+4C,EAAG,04CAA24CqjF,KAAM,4BAA6B,eAAgB,SAAWjqH,EAAM0hB,EAAE,KAAM,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,gBAAkBnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,4BAA8B,0BAA8D,QAA7B8G,EAAK1F,KAAKy7H,yBAA2B/1H,SAAyBA,EAAGX,MAAO,MAAY2O,EAAM0hB,EAAE,IAAK,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,kBAAoBnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,8BAAgC,8BAChoG,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACL6f,YAAe,CAAC,sBAChB7iH,MAAS,CAAC,gBACV4xH,oBAAuB,CAAC,8BAE5B;AAIF,OAFAT,EAAWtkD,MA1pBW,8kCA2pBtBixC,GAAqB+a,YAAc1H,EAC5BrT,EACR,CAEA,IAEIgb,GA8KAC,GAyJAC,GAuDAC,GAwFAC,GAuCAC,GAiCAC,GAgDAC,GAqFAC,GArqBAC,GAA4B,CAAC,EA8K7BC,GAA+B,CAAC,EAyJhCC,GAA6B,CAAC,EAuD9BC,GAAgC,CAAC,EAwFjCC,GAAqC,CAAC,EAuCtCC,GAAuB,CAAC,EAiCxBC,GAA0B,CAAC,EA8C3BC,GAAkC,CAAC,EAEnCC,GAAoB,CAAC;AAIzB,SAASC,KACR,GAAIX,GAA8B,OAAOU;AACzCV,GAA+B;AAC/B,MAAM/S,EAAalB,KACbmL,EAAWD;AAcjB,IACI2J,EAAY13H,KAAK6G,IAqBjB/L,EAAiB,WACnB,IACE,IAAIoO,EAAO66G,EAAWL,UAAUvsH,OAAQ;AAExC,OADA+R,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CAET,CADE,MAAOtQ,GACT,CACF,CAPqB;AAQrB,MAAM++H,EAAmB78H;AACzB,IA7BkBoO,EACZqT,EAAWq7G,EA4BbC,EAAmBF,EAAuC,SAASzuH,EAAMm0E,GAC3E,OAAOs6C,EAAiBzuH,EAAM,WAAY,CACxClO,cAAA,EACAknE,YAAA,EACAzkE,OAlBcA,EAkBI4/E,EAjBb,WACL,OAAO5/E,CACT,GAgBEwyE,UAAA;AAnBJ,IAAkBxyE,CAqBlB,EAP0CuwH,EAASA,SAS/C8J,GAtCc5uH,EAqCQ2uH,EApCpBt7G,EAAQ,EAAGq7G,EAAa,EACrB,WACL,IAAIG,EAAQL,IAAaM,EALG,IAKqBD,EAAQH;AAEzD,GADAA,EAAaG,EACTC,EAAY,GACd,KAAMz7G,GARI,IASR,OAAOvkB,UAAU,QAGnBukB,EAAQ;AAEV,OAAOrT,EAAKhR,aAAcF,UAC5B;AA0BF,MAAMigI,EAAgBH;AACtB,IAAIr6C,EAAY/3E,KAAKipC;AAoBrB,OAHA6oF,GAAkB18H,eAAiB68H,EACnCH,GAAkBU,SAjBlB,SAAkBhvH,EAAMzB,EAAO27D,GAE7B,OADA37D,EAAQg2E,WAAUh2E,EAAmByB,EAAKjR,OAAS,EAAIwP,EAAO,GACvD,WAEL,IADA,IAAI3P,EAAOE,UAAWoU,GAAS,EAAGnU,EAASwlF,EAAU3lF,EAAKG,OAASwP,EAAO,GAAIlO,EAAQF,MAAMpB,KACnFmU,EAAQnU,GACfsB,EAAM6S,GAAStU,EAAK2P,EAAQ2E;AAE9BA,GAAS;AAET,IADA,IAAI+rH,EAAY9+H,MAAMoO,EAAQ,KACrB2E,EAAQ3E,GACf0wH,EAAU/rH,GAAStU,EAAKsU;AAG1B,OADA+rH,EAAU1wH,GAAS27D,EAAU7pE,GApEjC,SAAe2P,EAAM85D,EAASlrE,GAC5B,OAAQA,EAAKG,QACX,KAAK,EACH,OAAOiR,EAAKvO,KAAKqoE;AACnB,KAAK,EACH,OAAO95D,EAAKvO,KAAKqoE,EAASlrE,EAAK;AACjC,KAAK,EACH,OAAOoR,EAAKvO,KAAKqoE,EAASlrE,EAAK,GAAIA,EAAK;AAC1C,KAAK,EACH,OAAOoR,EAAKvO,KAAKqoE,EAASlrE,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErD,OAAOoR,EAAKhR,MAAM8qE,EAASlrE,EAC7B,CAZA,CAqEiBoR,EAAMxQ,KAAMy/H,EAC3B,CACF,EAGAX,GAAkBM,YAAcG,EACzBT,EACR,CAIA,SAASY,KACR,GAAIrB,GAA4C,OAAOQ;AACvDR,GAA6C,EAC7C5/H,OAAO2D,eAAey8H,GAAiC,aAAc,CAAE95H;AACvE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxB8qD,EAAQnB,KACR8L,EAAYZ,KACZxP,EAAa1D,KACbroC,EAAWhB,KACXspC,EAAOV;AACbrnC,KACAomC,KACAkL;AAaA,IACIrzH,EADcvD,OAAOsD,UACQC;AACjC,SAAS49H,EAAYv+H,EAAQE,EAAKwD,GAChC,IAAIyuH,EAAWnyH,EAAOE;AAChBS,EAAeC,KAAKZ,EAAQE,IAAQguH,EAAWvD,GAAGwH,EAAUzuH,cAAWA,GAAsBxD,KAAOF,IAhB5G,SAAyBA,EAAQE,EAAKwD,GACzB,aAAPxD,GAAsBo+H,EAAUv9H,eAClCu9H,EAAUv9H,eAAef,EAAQE,EAAK,CACpCe,cAAA,EACAknE,YAAA,EACAzkE,MAASA,EACTwyE,UAAA,IAGFl2E,EAAOE,GAAOwD,CAElB,CAXA,CAiBoB1D,EAAQE,EAAKwD,EAEjC,CACA,IAwBkByL,EAxBdqvH,EAAmBr8C,EAASnM,OAASmM,EAASnM,OAAOyoD;AACzD,SAASC,EAAch7H,GACrB,OAAO+mH,EAAKllH,QAAQ7B,IAAU+mH,EAAKL,YAAY1mH,OAAa86H,GAAoB96H,GAASA,EAAM86H,GACjG,CAwBA,SAASG,EAAQ3+H,EAAQ+H,EAAMrE,EAAOksH,GACpC,IAAKztC,EAASA,SAASniF,GACrB,OAAOA;AAIT,IADA,IAAI48F,GAAU,EAAG1+F,GADjB6J,EAAO4rH,EAAMJ,SAASxrH,EAAM/H,IACG9B,OAAQmc,EAAYnc,EAAS,EAAG0gI,EAAS5+H,EACvD,MAAV4+H,KAAoBhiC,EAAS1+F,GAAQ,CAC1C,IAAIgC,EAAMyzH,EAAMH,MAAMzrH,EAAK60F,IAAU9lE,EAAWpzB;AAChD,GAAY,cAARxD,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOF;AAET,GAAI48F,GAAUviF,EAAW,CACvB,IAAI83G,EAAWyM,EAAO1+H;KAAAA,KACtB42B,YAEEA,EAAWqrD,EAASA,SAASgwC,GAAYA,EAAWjE,EAAW7C,QAAQtjH,EAAK60F,EAAS,IAAM,GAAK,CAAC,EAErG,CACA2hC,EAAYK,EAAQ1+H,EAAK42B,GACzB8nG,EAASA,EAAO1+H,EAClB,CACA,OAAOF,CACT,CAmBA,MAAM6+H,GA5CY1vH,EAyCE,SAASnP,EAAQ8+H,GACnC,OAAiB,MAAV9+H,EAAiB,CAAC,EAN3B,SAAkBA,EAAQ8+H,GACxB,OAXF,SAAoB9+H,EAAQ8+H,EAAOh/H,GAEjC,IADA,IAAI88F,GAAU,EAAG1+F,EAAS4gI,EAAM5gI,OAAQgS,EAAS,CAAC,IACzC0sF,EAAS1+F,GAAQ,CACxB,IAAI6J,EAAO+2H,EAAMliC,GAASl5F,EAAQiwH,EAAMD,QAAQ1zH,EAAQ+H;AACpDjI,EAAU4D,EAAOqE,IACnB42H,EAAQzuH,EAAQyjH,EAAMJ,SAASxrH,EAAM/H,GAAS0D,EAElD,CACA,OAAOwM,CACT,CATA,CAWoBlQ,EAAQ8+H,YAAgBp7H,EAAOqE,GAC/C,OAAO4rH,EAAMA,MAAM3zH,EAAQ+H,EAC7B,GACF,CAJA,CAMwC/H,EAAQ8+H,EAChD,EA1CSR,EAAUP,YAAYO,EAAUH,SAAShvH,UAAM,SALvC3P,GAEf,OADsB,MAATA,GAAoBA,EAAMtB,OAjBzC,SAAqBsB,EAAOu/H,EAAOj/H,EAAWk/H,EAAU9uH,GACtD,IAAI0sF,GAAU,EAAG1+F,EAASsB,EAAMtB;AAGhC,IAFA4B,IAAcA,EAAY4+H,GAC1BxuH,IAAWA,EAAS,MACX0sF,EAAS1+F,GAAQ,CACxB,IAAIwF,EAAQlE,EAAMo9F;AACd98F,EAAU4D,GAEVwqH,EAAW9C,UAAUl7G,EAAQxM,GAG/BwM,EAAOA,EAAOhS,QAAUwF,CAE5B,CACA,OAAOwM,CACT,CAfA,CAkB8B1Q,GAAS,EACvC,IAE0E2P,EAAO,KA8C3E8vH,EAAwB,MAC5B90G,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKoxE,WACLpxE,KAAKugI,iBACLvgI,KAAKwgI,wBACLxgI,KAAKygI,iBACLzgI,KAAKs/G,eACLt/G,KAAK0gI,YAAc,WACnB1gI,KAAK2gI,YACL3gI,KAAKmD,KAAO,QACd,CACAy9H,2CAA2CrsH,GACzC,MAAM+oG,iBAAEA,EAAkB/pB,QAAU7/E,MAAOuqF,IAAa1pF;AACnD+oG,YAAoBt9G,KAAKwgI,mBAC5BxgI,KAAKwgI,iBAAmBviC,EAE5B,CACA4iC,0BACE7gI,KAAK8gI,iBACP,CACAC,kBACE/gI,KAAK8gI,iBACP,CACAE,kBAAkB7oG,EAAU8oG,GAC1BjhI,KAAKkhI,sBAAsB,CAAEjnH,CAACgnH,GAAU9oG,GAC1C,CACIgpG,cACF,MAAO,IAAInhI,KAAKgtD,GAAG2mB,UAAU/oE,QAAQw2H,GAAYh0C,EAAQ5iB,qBAAqB42D,EAAS,iCACzF,CACAN,kBACE,IAAIp7H;AACJ,MAAM66H,cAAEA,EAAaC,iBAAEA,EAAgBG,SAAEA,EAAQQ,QAAEA,GAAYnhI,KACzDqhI,EAAeV,EAAW,IAAIQ,GAASp9G,UAAYo9G;AACzDE,EAAa1iI,UAAS2iI,EAAQrjC,KAC5BqjC,EAAOC,QAAQC,UAAa,GAAEvjC,GAAQ,aAEpCuiC,GACFa,EAAa1iI,UAAS2iI,EAAQrjC,KAC5BqjC,EAAOG,UAAYxjC,EAASuiC,EAC5Bc,EAAOjoD,OAAS4kB,IAAWuiC,CAAgB;AAG/C,MAAMkB,EAAyJ,QAA1Ih8H,EAAK86H,QAA2DA,EAAmBa,EAAahoF,WAAWioF,GAAWA,EAAOjoD,oBAAqB3zE,EAAgBA,GAAM;AAC7Ly7H,EAAQxiI,UAAS2iI,EAAQrjC,KACnBA,EAASkjC,EAAQ5hI,OAAS,EACxBghI,EACFe,EAAOK,UAAY,KACVhB,GAAY1iC,GAAUkjC,EAAQ5hI,OAASmiI,EAAc,IAAMf,GAAY1iC,EAASyjC,EACzFJ,EAAOK,UAAY,SAEnBL,EAAOK,UAAY,WAGrBL,EAAOK,UAAYpB,EAAgB,KAAO,QAC5C,GAEJ,CAIAW,sBAAsBU,GACpB5hI,KAAKmhI,QAAQxiI,SAAS2iI,IACpB,IAAI57H,EAAI4P,EAAIoT,EAAIC,EAAIC;AACpB04G,EAAOlwD,QAAgG,QAArF1rE,EAAKk8H,eAAwDA,EAAWxwD,mBAAqB1rE,EAAgBA,EAAK47H,EAAOlwD,QAC3IkwD,EAAOb,UAAoG,QAAvFnrH,EAAKssH,eAAwDA,EAAWnB,qBAAuBnrH,EAAgBA,EAAKgsH,EAAOb,UAC/Ia,EAAOhiB,YAAwG,QAAzF52F,EAAKk5G,eAAwDA,EAAWtiB,uBAAyB52F,EAAgBA,EAAK44G,EAAOhiB,YACnJgiB,EAAOZ,YAAwG,QAAzF/3G,EAAKi5G,eAAwDA,EAAWlB,uBAAyB/3G,EAAgBA,EAAK24G,EAAOZ,YACnJY,EAAOn+H,KAA0F,QAAlFylB,EAAKg5G,eAAwDA,EAAWz+H,gBAAkBylB,EAAgBA,EAAK04G,EAAOn+H,IAAI,GAE7I,CACA0+H,0BACE7hI,KAAKkhI,sBAAsBhB,EAAOlgI,KAAM,UAAW,YAAa,cAAe,cAAe,SAC9FA,KAAK8gI,iBACP,CACAjjB,oBACE79G,KAAKkhI,sBAAsBhB,EAAOlgI,KAAM,UAAW,YAAa,cAAe,cAAe,SAC9FA,KAAK8gI,iBACP,CACA1qC,SACE,MAAMyrC,wBAAEA,EAAuBviB,YAAEA,GAAgBt/G;AACjD,OAAO0T,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,0BAA2BK,KAAMqoB,EAAc,UAAY,QAAU5rG,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcsjB,EAAwB9iI,KAAKiB,QAC1Q,CACIgtD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLy4B,iBAAoB,CAAC,2BACrBG,SAAY,CAAC,mBACbvvD,QAAW,CAAC,qBACZqvD,UAAa,CAAC,qBACdnhB,YAAe,CAAC,qBAChBohB,YAAe,CAAC,qBAChBv9H,KAAQ,CAAC,qBAEb;AAIF,OAFAm9H,EAAsB1uD,MApGW,2sDAqGjCitD,GAAgCiD,wBAA0BxB,EACnDzB,EACR,CAEA,IAEIkD,GAFAC,GAAsC,CAAC;AAI3C,SAASC,KACR,GAAIF,GAAgD,OAAOC;AAC3DD,GAAiD,EACjDtjI,OAAO2D,eAAe4/H,GAAqC,aAAc,CAAEj9H;AAC3E,MAAM2O,EAAQ25E,KACR60C,EAAahzD,IACbke,EAAUnjB,EAAcC,uBA2ExBi4D,EAA4B,MAChC32G,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKoiI,+BAAiC1uH,EAAMo8E,YAAY9vF,KAAM,iCAAkC,GAChGA,KAAKq5E,UACLr5E,KAAKoxE,WACLpxE,KAAK2hI,iBACL3hI,KAAKyhI,aACLzhI,KAAKygI,UAAY,SACjBzgI,KAAKs/G,eACLt/G,KAAKpB,YACLoB,KAAK0gI,YAAc,WACnB1gI,KAAKmD,KAAO,SACZnD,KAAKqiI,kBACP,CAIAC,oBACE,MAAMjpD,OAAEA,EAAMooD,UAAEA,EAASz0E,GAAEA,EAAEyzE,UAAEA,EAASC,YAAEA,GAAgB1gI,KACpDuiI,EAAc,IAAIv1E,EAAG2mB,UAAU5tE,MAAM7F,GAAiB,SAAXA,EAAE22F;AAEjD72F,KAAKqiI,YADHE,EACiB,KAxDzB,SAAgBC,GAAiD,IAAhDnpD,OAAEA,EAAMooD,UAAEA,EAAShB,UAAEA,EAASC,YAAEA,GAAa8B;AAC5D,GAAoB,aAAhB9B,EAA4B,CAC9B,GAAkB,UAAdD,EACF,OAAIgB,EA3CgB/tH,EAAM0hB,EAC9B,MACA,CAAEwhE,MAAO,4BAA6BrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAC9FhqH,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,igBAEK5mC,EAAM0hB,EAChC,MACA,CAAEwhE,MAAO,8BAA+BrsD,MAAO,KAAMC,OAAQ,KAAMkzF,MAAO,8BAC1EhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG;AAwC5D,GAAkB,WAAdmmF,EACT,OAAIpnD,EA7BqB3lE,EAAM0hB,EACnC,MACA,CAAEwhE,MAAO,kCAAmCrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BACpGhqH,EAAM0hB,EAAE,SAAU,CAAEqtG,GAAI,IAAKC,GAAI,IAAKl6H,EAAG,IAAK,eAAgB,OAE/BkL,EAAM0hB,EACrC,MACA,CAAEwhE,MAAO,oCAAqCrsD,MAAO,IAAKC,OAAQ,IAAKizF,QAAS,UAAWC,MAAO,8BAClGhqH,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,sCA2BrB,MAAO,GAAoB,eAAhBomF,EAA8B,CACvC,GAAkB,UAAdD,EACF,OAAIgB,EA/CuB/tH,EAAM0hB,EACrC,MACA,CAAEwhE,MAAO,kCAAmCrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BACpGhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,+TAEpC5mC,EAAM0hB,EACvC,MACA,CAAEwhE,MAAO,oCAAqCrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BACtGhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG;AA4C5D,GAAkB,WAAdmmF,EACT,OAAIpnD,EAjC4B3lE,EAAM0hB,EAC1C,MACA,CAAEwhE,MAAO,wCAAyCrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAC1GhqH,EAAM0hB,EAAE,SAAU,CAAEqtG,GAAI,IAAKC,GAAI,IAAKl6H,EAAG,IAAK,iBAAkB,MAAO,eAAgB,OAEjDkL,EAAM0hB,EAC5C,MACA,CAAEwhE,MAAO,0CAA2CrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAC5GhqH,EAAM0hB,EAAE,SAAU,CAAEqtG,GAAI,IAAKC,GAAI,IAAKl6H,EAAG,MA+BzC,CAEF,CA/BA,CA0DiC,CAAE6wE,SAAQooD,YAAWhB,YAAWC,eAE/D,CACAiC,cACE,MAAM31E,GAAEA,EAAEsyD,YAAEA,EAAW8iB,+BAAEA,EAA8BxjI,KAAEA,GAASoB;AAC9Ds/G,GACF8iB,EAA+B7lE,KAAK,CAElC7oD,eAAOs5C,EAAGu0E,QAAQC,UAAuBnjH,OAAOlD,SAAS6xC,EAAGu0E,QAAQC,UAAW,IAAM,KACrF5iI,KAAMA,QAAmCA,EAAO,MAGtD,CACAi/G,oBACE79G,KAAKsiI,mBACP,CACAlsC,SACE,MAAMisC,YAAEA,EAAWM,YAAEA,EAAWrjB,YAAEA,EAAWohB,YAAEA,EAAW4B,kBAAEA,GAAsBtiI,KAC5E4iI,EAAyBx1C,EAAQhjB,oBAAoB,oBACrDy4D,EAA2BvjB,EAAc,SAAW,MACpDwjB,EAAgBA,IACbpvH,EAAM0hB,EAAE1hB,EAAMqvH,SAAU,KAAMrvH,EAAM0hB,EAAE,MAAO,CAAEwhE,MAAOsrC,EAAW/yD,WAAW,OAAQ,CAAE,cAAehyD,SAASklH,KAAiBW,KAAM,QAAUtvH,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,OAAQ2/G,aAAc+jB,EAAkBvjI,KAAKiB,OAAS0T,EAAM0hB,EAAEwtG,EAAwB,KAAMP,KAAgB3uH,EAAM0hB,EAAE,MAAO,CAAEwhE,MAAO,UAAWosC,KAAM,WAAatvH,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,UAAY8U,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,YAAc8U,EAAM0hB,EAAE,OAAQ;AAE5a,OAAO1hB,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEC,MAAO,+BAAgCK,KAAsB,eAAhBypC,EAA+B,eAAiB,YAA8B,eAAhBA,EAA+BhtH,EAAM0hB,EAAEytG,EAA0B,CACvMjsC,MAAO0oB,EAAc,SAAW,QAChCxoB,QAASwoB,EAAcqjB,EAAY5jI,KAAKiB,MAAQ,KAEhDgjI,KAAM1jB,EAAc,SAAW,KAC/BroB,KAAMqoB,EAAc,MAAQ,YAC3BwjB,KAAmBA,IACxB,CACI91E,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACL1uB,OAAU,CAAC,qBACXooD,UAAa,CAAC,qBACdhB,UAAa,CAAC,qBACdC,YAAe,CAAC,qBAEpB;AAIF,OAFAyB,EAA0BvwD,MArEW,4/cAsErCowD,GAAoCiB,6BAA+Bd,EAC5DH,EACR,CAEA,IAEIkB,GA49GAC,GAqIAC,GA0SAC,GAgDAC,GAyHAC,GAtjIAC,GAAyB,CAAC,EA49G1BC,GAAwB,CAAC,EAqIzBC,GAAsB,CAAC,EA0SvBC,GAA0B,CAAC,EAgD3BC,GAAmC,CAAC,EAyHpCC,GAAyB,CAAC;AAI9B,SAASC,KACR,GAAIP,GAAmC,OAAOM;AAC9CN,GAAoC;AACpC,IAAIQ,EAAYtlI,OAAO2D,eACnB4hI,EAAavlI,OAAOo5E,iBACpBosD,EAAoBxlI,OAAOm5E,0BAC3BssD,EAAsBzlI,OAAOg5E,sBAC7B0sD,EAAe1lI,OAAOsD,UAAUC,eAChCoiI,EAAe3lI,OAAOsD,UAAUypH,qBAChC6Y,EAAkBA,CAACC,EAAK/iI,EAAKwD,IAAUxD,KAAO+iI,EAAMP,EAAUO,EAAK/iI,EAAK,CAAEioE,cAAkBlnE,gBAAoBi1E,YAAgBxyE,UAAWu/H,EAAI/iI,GAAOwD,EACtJw/H,EAAiBA,CAACt1H,EAAGC,KACvB,IAAK,IAAIs1H,KAAQt1H,IAAMA,EAAI,CAAC,GACtBi1H,EAAaliI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAC/B,GAAIN,EACF,IAAK,IAAIM,KAAQN,EAAoBh1H,GAC/Bk1H,EAAaniI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAEjC,OAAOv1H,GAELw1H,EAAgBA,CAACx1H,EAAGC,IAAM80H,EAAW/0H,EAAGg1H,EAAkB/0H,IAC1Dw1H,EAAYA,CAAC5iI,EAAQ6iI,KACvB,IAAI/iI,EAAS,CAAC;AACd,IAAK,IAAI4iI,KAAQ1iI,EACXqiI,EAAaliI,KAAKH,EAAQ0iI,IAASG,EAAQnkI,QAAQgkI,GAAQ,IAC7D5iI,EAAO4iI,GAAQ1iI,EAAO0iI;AAC1B,GAAc,MAAV1iI,GAAkBoiI,EACpB,IAAK,IAAIM,KAAQN,EAAoBpiI,GAC/B6iI,EAAQnkI,QAAQgkI,GAAQ,GAAKJ,EAAaniI,KAAKH,EAAQ0iI,KACzD5iI,EAAO4iI,GAAQ1iI,EAAO0iI;AAE5B,OAAO5iI;AAETnD,OAAO2D,eAAeyhI,GAAwB,aAAc,CAAE9+H;AAC9D,MAAM2O,EAAQ25E,KACRG,EAAUliB,IACVs9B,EAAO3oB,IACP2kD,EAAQrjB,KACRn0B,EAAUnjB,EAAcC,uBACxBg4D,EAAahzD,IACbm0C,EAAYJ,KACZjzC,EAAKN,IAELm1D,EAAa,CAAC,QAAS,OACvBx7B,EAFQ,CAAC,MAAO,QAAS,SAAU,QAEAhwC,SAAQyd,EAAKi8B,IAASj8B,EAAIrtE,OAAOspG,EAAMA,EAAO,IAAM8xB,EAAW,GAAI9xB,EAAO,IAAM8xB,EAAW,KAAK,IACnIvtF,EAAMtqC,KAAKsqC,IACXrB,EAAMjpC,KAAKipC,IACX/oC,EAAQF,KAAKE,MACbma,EAAQra,KAAKqa,MACby9G,EAAgBpqF,KACpBhQ,EAAGgQ,EACH7P,EAAG6P,IAECqqF,EAAkB,CACtBn6F,KAAM,QACNm+D,MAAO,OACPD,OAAQ,MACR/9D,IAAK,UAEDi6F,EAAuB,CAC3Bj2H,MAAO,MACPC,IAAK;AAEP,SAASi2H,EAAMl2H,EAAOhK,EAAOiK,GAC3B,OAAOinC,EAAIlnC,EAAOuoC,EAAIvyC,EAAOiK,GAC/B,CACA,SAASk2H,EAASngI,EAAOgqC,GACvB,MAAwB,mBAAVhqC,EAAuBA,EAAMgqC,GAAShqC,CACtD,CACA,SAASogI,EAAQ/7B,GACf,OAAOA,EAAUv5F,MAAM,KAAK,EAC9B,CACA,SAASu1H,EAAah8B,GACpB,OAAOA,EAAUv5F,MAAM,KAAK,EAC9B,CACA,SAASw1H,EAAgB1yB,GACvB,MAAgB,MAATA,EAAe,IAAM,GAC9B,CACA,SAAS2yB,EAAc3yB,GACrB,MAAgB,MAATA,EAAe,SAAW,OACnC,CACA,MAAM4yB,EAA6B,IAAIzkI,IAAI,CAAC,MAAO;AACnD,SAAS0kI,EAAYp8B,GACnB,OAAOm8B,EAAWp+H,IAAIg+H,EAAQ/7B,IAAc,IAAM,GACpD,CACA,SAASq8B,EAAiBr8B,GACxB,OAAOi8B,EAAgBG,EAAYp8B,GACrC,CAiBA,SAASqF,EAAqBrF,GAC5B,OAAOA,EAAUhuF,QAAQ,0BAA2B23F,GAASgyB,EAAgBhyB,IAC/E,CAiBA,SAASvD,EAAiBnlE,GACxB,MAAMK,EACJA,EAACG,EACDA,EAACN,MACDA,EAAKC,OACLA,GACEH;AACJ,MAAO,CACLE,QACAC,SACAO,IAAKF,EACLD,KAAMF,EACNq+D,MAAOr+D,EAAIH,EACXu+D,OAAQj+D,EAAIL,EACZE,IACAG,IAEJ,CACA,SAAS66F,EAA2B5wD,EAAMs0B,EAAWu8B,GACnD,IAAIr7B,UACFA,EAASs7B,SACTA,GACE9wD;AACJ,MAAM+wD,EAAWL,EAAYp8B,GACvB08B,EAAgBL,EAAiBr8B,GACjC28B,EAAcT,EAAcQ,GAC5B/yB,EAAOoyB,EAAQ/7B,GACf8O,EAA0B,MAAb2tB,EACbt1B,EAAUjG,EAAU5/D,EAAI4/D,EAAU//D,MAAQ,EAAIq7F,EAASr7F,MAAQ,EAC/DimE,EAAUlG,EAAUz/D,EAAIy/D,EAAU9/D,OAAS,EAAIo7F,EAASp7F,OAAS,EACjEw7F,EAAc17B,EAAUy7B,GAAe,EAAIH,EAASG,GAAe;AACzE,IAAI1hB;AACJ,OAAQtR,GACN,IAAK,MACHsR,EAAS,CACP35E,EAAG6lE,EACH1lE,EAAGy/D,EAAUz/D,EAAI+6F,EAASp7F;AAE5B;AACF,IAAK,SACH65E,EAAS,CACP35E,EAAG6lE,EACH1lE,EAAGy/D,EAAUz/D,EAAIy/D,EAAU9/D;AAE7B;AACF,IAAK,QACH65E,EAAS,CACP35E,EAAG4/D,EAAU5/D,EAAI4/D,EAAU//D,MAC3BM,EAAG2lE;AAEL;AACF,IAAK,OACH6T,EAAS,CACP35E,EAAG4/D,EAAU5/D,EAAIk7F,EAASr7F,MAC1BM,EAAG2lE;AAEL;AACF,QACE6T,EAAS,CACP35E,EAAG4/D,EAAU5/D,EACbG,EAAGy/D,EAAUz/D,GAGnB,OAAQu6F,EAAah8B,IACnB,IAAK,QACHib,EAAOyhB,IAAkBE,GAAeL,GAAOztB,GAAc,EAAI;AACjE;AACF,IAAK,MACHmM,EAAOyhB,IAAkBE,GAAeL,GAAOztB,GAAc,EAAI,GAGrE,OAAOmM,CACT,CAgFA9G,eAAe5M,EAAeh2E,EAAOz2B,GACnC,IAAI+hI;KAAAA,IACA/hI,IACFA,EAAU,CAAC;AAEb,MAAMwmC,EACJA,EAACG,EACDA,EACAq7F,SAAUC,EAAS10B,MACnBA,EAAKn+B,SACLA,EAAQtU,SACRA,GACErkC,GACEo2E,SACJA,EAAW,oBAAmBE,aAC9BA,EAAe,WAAUE,eACzBA,EAAiB,WAAUE,YAC3BA,KAAmBE,QACnBA,EAAU,GACR2zB,EAAShhI,EAASy2B,GAChBiyE,EApLR,SAA0B2E,GACxB,MAA0B,iBAAZA,EAThB,SAA6BA,GAC3B,OAAOgzB,EAAe,CACpBx5F,IAAK,EACLg+D,MAAO,EACPD,OAAQ,EACRl+D,KAAM,GACL2mE,EACL,CAPA,CAS2DA,GAAW,CAClExmE,IAAKwmE,EACLxI,MAAOwI,EACPzI,OAAQyI,EACR3mE,KAAM2mE,EAEV,CAPA,CAoLyCA,GAEjC1wE,EAAUyyC,EAAS+9B,EADa,aAAnBF,EAAgC,YAAc,WACbA,GAC9CO,EAAqBlC,QAAuB22B,EAAUC,gBAAgB,CAC1EvlG,QAAmH,OAAxGolG,QAAsD,MAAvBE,EAAUz8B,iBAA6By8B,EAAUz8B,UAAU7oE,MAAqBolG,EAAgCplG,EAAUA,EAAQoxE,sBAAyD,MAAhCk0B,EAAUv6B,0BAAsCu6B,EAAUv6B,mBAAmBt4B,EAASsyD,WAC3R70B,WACAE,eACAjyC,cAEI30B,EAA0B,aAAnB8mE,EAAgC,CAC3CzmE,IACAG,IACAN,MAAOknE,EAAMm0B,SAASr7F,MACtBC,OAAQinE,EAAMm0B,SAASp7F,QACrBinE,EAAMnH,UACJwB,QAAmD,MAA7Bq6B,EAAUp6B,uBAAmCo6B,EAAUp6B,gBAAgBz4B,EAASsyD,WACtGS,QAA4C,MAAvBF,EAAUz8B,iBAA6By8B,EAAUz8B,UAAUoC,WAA8C,MAAtBq6B,EAAUG,gBAA4BH,EAAUG,SAASx6B,KAGnK,CACFphE,EAAG,EACHG,EAAG,GAECwnE,EAAoB7C,EAAiB22B,EAAUI,4DAA8DJ,EAAUI,sDAAsD,CACjLjzD,WACAjpC,OACAyhE,eACA9sC,aACG30B;AACL,MAAO,CACLU,KAAM2mE,EAAmB3mE,IAAMsnE,EAAkBtnE,IAAM6hE,EAAc7hE,KAAOs7F,EAAYx7F,EACxFi+D,QAASuJ,EAAkBvJ,OAAS4I,EAAmB5I,OAAS8D,EAAc9D,QAAUu9B,EAAYx7F,EACpGD,MAAO8mE,EAAmB9mE,KAAOynE,EAAkBznE,KAAOgiE,EAAchiE,MAAQy7F,EAAY37F,EAC5Fq+D,OAAQsJ,EAAkBtJ,MAAQ2I,EAAmB3I,MAAQ6D,EAAc7D,OAASs9B,EAAY37F,EAEpG,CAUA,MA2FM87F,EAA8B,IAAI1lI,IAAI,CAAC,OAAQ;AA0NrD,SAAS2lI,IACP,MAAyB,oBAAX/jI,MAChB,CACA,SAAS6mG,EAAY76E,GACnB,OAAIg4G,EAAOh4G,IACDA,EAAKiU,UAAY,IAAIM,cAExB,WACT,CACA,SAASumE,EAAU96E,GACjB,IAAI8mD;AACJ,OAAgB,MAAR9mD,GAA8D,OAA7C8mD,EAAsB9mD,EAAKyW,sBAAkCqwC,EAAoBi0B,cAAgB/mG,MAC5H,CACA,SAASkpG,EAAmBl9E,GAC1B,IAAIomD;AACJ,OAA0F,OAAlFA,GAAQ4xD,EAAOh4G,GAAQA,EAAKyW,cAAgBzW,EAAK/R,WAAaja,OAAOia,iBAA6Bm4D,EAAK7tC,eACjH,CACA,SAASy/F,EAAO3hI,GACd,QAAK0hI,MAGE1hI,aAAiB6pB,MAAQ7pB,aAAiBykG,EAAUzkG,GAAO6pB,KACpE,CACA,SAAS86E,EAAU3kG,GACjB,QAAK0hI,MAGE1hI,aAAiBgkC,SAAWhkC,aAAiBykG,EAAUzkG,GAAOgkC,QACvE,CACA,SAAS4gE,EAAc5kG,GACrB,QAAK0hI,MAGE1hI,aAAiB0/B,aAAe1/B,aAAiBykG,EAAUzkG,GAAO0/B,YAC3E,CACA,SAAS+nB,EAAaznD,GACpB,SAAK0hI,KAAqC,oBAAf78B,cAGpB7kG,aAAiB6kG,YAAc7kG,aAAiBykG,EAAUzkG,GAAO6kG,WAC1E,CACA,MAAM+8B,GAA+C,IAAI7lI,IAAI,CAAC,SAAU;AACxE,SAAS8lI,GAAkB/lG,GACzB,MAAMkuE,SACJA,EAAQC,UACRA,EAASC,UACTA,EAASnwG,QACTA,GACE4yE,GAAiB7wC;AACrB,MAAO,kCAAkC99B,KAAKgsG,EAAWE,EAAYD,KAAe23B,GAA6Bx/H,IAAIrI,EACvH,CACA,MAAM+nI,GAAgC,IAAI/lI,IAAI,CAAC,QAAS,KAAM;AAC9D,SAAS6qG,GAAe9qE,GACtB,OAAOgmG,GAAc1/H,IAAIoiG,EAAY1oE,GACvC,CACA,MAAMimG,GAAoB,CAAC,gBAAiB;AAC5C,SAASC,GAAWlmG,GAClB,OAAOimG,GAAkB/gI,MAAM+6B,IAC7B,IACE,OAAOD,EAAQjiB,QAAQkiB,EAGzB,CAFE,MAAOlY,GACP,QACF,IAEJ,CACA,MAAMo+G,GAAsB,CAAC,YAAa,YAAa,QAAS,SAAU,eACpEC,GAAmB,CAAC,YAAa,YAAa,QAAS,SAAU,cAAe,UAChFC,GAAgB,CAAC,QAAS,SAAU,SAAU;AACpD,SAASC,GAAkBC,GACzB,MAAMC,EAASC,KACTn7B,EAAMzC,EAAU09B,GAAgB11D,GAAiB01D,GAAgBA;AACvE,OAAOJ,GAAoBjhI,MAAMhB,KAAUonG,EAAIpnG,IAAwB,SAAfonG,EAAIpnG,QAA+BonG,EAAIo7B,eAAsC,WAAtBp7B,EAAIo7B,gBAAwCF,KAAWl7B,EAAIq7B,gBAAwC,SAAvBr7B,EAAIq7B,iBAAuCH,KAAWl7B,EAAIvhG,QAAwB,SAAfuhG,EAAIvhG,QAA8Bq8H,GAAiBlhI,MAAMhB,IAAWonG,EAAIG,YAAc,IAAIjsG,SAAS0E,MAAWmiI,GAAcnhI,MAAMhB,IAAWonG,EAAIE,SAAW,IAAIhsG,SAAS0E,IACza,CAaA,SAASuiI,KACP,QAAmB,oBAAR9mG,MAAwBA,IAAIinG,WAChCjnG,IAAIinG,SAAS,0BAA2B,OACjD,CACA,MAAMC,GAA2C,IAAI5mI,IAAI,CAAC,OAAQ,OAAQ;AAC1E,SAAS6mI,GAAsBj5G,GAC7B,OAAOg5G,GAAyBvgI,IAAIoiG,EAAY76E,GAClD,CACA,SAASgjD,GAAiB7wC,GACxB,OAAO2oE,EAAU3oE,GAAS6wC,iBAAiB7wC,EAC7C,CACA,SAAS+mG,GAAc/mG,GACrB,OAAI6oE,EAAU7oE,GACL,CACLitB,WAAYjtB,EAAQitB,WACpBrX,UAAW5V,EAAQ4V,WAGhB,CACLqX,WAAYjtB,EAAQyT,QACpBmC,UAAW5V,EAAQgU,QAEvB,CACA,SAASrlB,GAAcd,GACrB,GAA0B,SAAtB66E,EAAY76E,GACd,OAAOA;AAET,MAAMnd,EAEJmd,EAAK0mD,cACL1mD,EAAKe,YACL+8B,EAAa99B,IAASA,EAAKzL,MAC3B2oF,EAAmBl9E;AAErB,OAAO89B,EAAaj7C,GAAUA,EAAO0R,KAAO1R,CAC9C,CACA,SAASs2H,GAA2Bn5G,GAClC,MAAMe,EAAaD,GAAcd;AACjC,OAAIi5G,GAAsBl4G,GACjBf,EAAKyW,cAAgBzW,EAAKyW,cAAc3iB,KAAOkM,EAAKlM,KAEzDmnF,EAAcl6E,IAAem3G,GAAkBn3G,GAC1CA,EAEFo4G,GAA2Bp4G,EACpC,CACA,SAASq4G,GAAqBp5G,EAAMvJ,EAAM4iH,GACxC,IAAIC;KAAAA,IACA7iH,IACFA,EAAO,aAEL4iH,IACFA;AAEF,MAAME,EAAqBJ,GAA2Bn5G,GAChD4gF,EAAS24B,KAAuE,OAA9CD,EAAuBt5G,EAAKyW,sBAAkC6iG,EAAqBxlH,MACrHyrF,EAAMzE,EAAUy+B;AACtB,GAAI34B,EAAQ,CACV,MAAM44B,EAAeC,GAAgBl6B;AACrC,OAAO9oF,EAAK1b,OAAOwkG,EAAKA,EAAIz5D,gBAAkB,GAAIoyF,GAAkBqB,GAAsBA,EAAqB,GAAIC,GAAgBH,EAAkBD,GAAqBI,GAAgB,GAC5L,CACA,OAAO/iH,EAAK1b,OAAOw+H,EAAoBH,GAAqBG,EAAoB,GAAIF,GACtF,CACA,SAASI,GAAgBl6B,GACvB,OAAOA,EAAIxlE,QAAUhqC,OAAO+G,eAAeyoG,EAAIxlE,QAAUwlE,EAAIi6B,aAAe,IAC9E,CACA,SAASE,GAAiBvnG,GACxB,MAAMsrE,EAAMz6B,GAAiB7wC;AAC7B,IAAI0J,EAAQi6D,WAAW2H,EAAI5hE,QAAU,EACjCC,EAASg6D,WAAW2H,EAAI3hE,SAAW;AACvC,MAAM69F,EAAY1+B,EAAc9oE,GAC1ByqE,EAAc+8B,EAAYxnG,EAAQyqE,YAAc/gE,EAChDghE,EAAe88B,EAAYxnG,EAAQ0qE,aAAe/gE,EAClD89F,EAAiBp7H,EAAMq9B,KAAW+gE,GAAep+F,EAAMs9B,KAAY+gE;AAKzE,OAJI+8B,IACF/9F,EAAQ+gE,EACR9gE,EAAS+gE,GAEJ,CACLhhE,QACAC,SACA+9F,EAAGD,EAEP,CACA,SAASE,GAAc3nG,GACrB,OAAQ6oE,EAAU7oE,GAAoCA,EAAzBA,EAAQoxE,cACvC,CACA,SAASq0B,GAASzlG,GAChB,MAAM4nG,EAAaD,GAAc3nG;AACjC,IAAK8oE,EAAc8+B,GACjB,OAAO3D,EAAa;AAEtB,MAAMz6F,EAAOo+F,EAAWn+F,yBAClBC,MACJA,EAAKC,OACLA,EAAM+9F,EACNA,GACEH,GAAiBK;AACrB,IAAI/9F,GAAK69F,EAAIr7H,EAAMm9B,EAAKE,OAASF,EAAKE,OAASA,EAC3CM,GAAK09F,EAAIr7H,EAAMm9B,EAAKG,QAAUH,EAAKG,QAAUA;AAOjD,OANKE,GAAMrsB,OAAO+xC,SAAS1lB,KACzBA,EAAI,GAEDG,GAAMxsB,OAAO+xC,SAASvlB,KACzBA,EAAI,GAEC,CACLH,IACAG,IAEJ,CACA,MAAM69F,GAA4B5D,EAAa;AAC/C,SAAS6D,GAAiB9nG,GACxB,MAAMotE,EAAMzE,EAAU3oE;AACtB,OAAKymG,MAAer5B,EAAIz5D,eAGjB,CACL9J,EAAGujE,EAAIz5D,eAAeE,WACtB7J,EAAGojE,EAAIz5D,eAAeO,WAJf2zF,EAMX,CAUA,SAASp+F,GAAsBzJ,EAASoqE,EAAcC,EAAiBY,YACjEb,IACFA,WAAe,IAEbC,IACFA;AAEF,MAAMC,EAAatqE,EAAQyJ,wBACrBm+F,EAAaD,GAAc3nG;AACjC,IAAIuU,EAAQ0vF,EAAa;AACrB75B,IACEa,EACEpC,EAAUoC,KACZ12D,EAAQkxF,GAASx6B,IAGnB12D,EAAQkxF,GAASzlG;AAGrB,MAAM+nG,EA5BR,SAAgC/nG,EAAS6sE,EAASm7B,GAIhD,gBAHIn7B,IACFA,SAEGm7B,GAAwBn7B,GAAWm7B,IAAyBr/B,EAAU3oE,KAGpE6sE,CACT,CARA,CA4B+C+6B,EAAYv9B,EAAiBY,GAAgB68B,GAAiBF,GAAc3D,EAAa;AACtI,IAAIp6F,GAAKygE,EAAWvgE,KAAOg+F,EAAcl+F,GAAK0K,EAAM1K,EAChDG,GAAKsgE,EAAWpgE,IAAM69F,EAAc/9F,GAAKuK,EAAMvK,EAC/CN,EAAQ4gE,EAAW5gE,MAAQ6K,EAAM1K,EACjCF,EAAS2gE,EAAW3gE,OAAS4K,EAAMvK;AACvC,GAAI49F,EAAY,CACd,MAAMx6B,EAAMzE,EAAUi/B,GAChBK,EAAYh9B,GAAgBpC,EAAUoC,GAAgBtC,EAAUsC,GAAgBA;AACtF,IAAIi9B,EAAa96B,EACb+6B,EAAgBb,GAAgBY;AACpC,KAAOC,GAAiBl9B,GAAgBg9B,IAAcC,GAAY,CAChE,MAAME,EAAc3C,GAAS0C,GACvBE,EAAaF,EAAc1+F,wBAC3B6hE,EAAMz6B,GAAiBs3D,GACvBp+F,EAAOs+F,EAAWt+F,MAAQo+F,EAAch5B,WAAaxL,WAAW2H,EAAIg9B,cAAgBF,EAAYv+F,EAChGK,EAAMm+F,EAAWn+F,KAAOi+F,EAAcj5B,UAAYvL,WAAW2H,EAAIt6B,aAAeo3D,EAAYp+F;AAClGH,GAAKu+F,EAAYv+F,EACjBG,GAAKo+F,EAAYp+F,EACjBN,GAAS0+F,EAAYv+F,EACrBF,GAAUy+F,EAAYp+F,EACtBH,GAAKE,EACLC,GAAKE,EACLg+F,EAAav/B,EAAUw/B,GACvBA,EAAgBb,GAAgBY,EAClC,CACF,CACA,OAAOv5B,EAAiB,CACtBjlE,QACAC,SACAE,IACAG,KAEJ,CACA,SAAS+jE,GAAoB/tE,EAASwJ,GACpC,MAAM++F,EAAaxB,GAAc/mG,GAASitB;AAC1C,OAAKzjB,EAGEA,EAAKO,KAAOw+F,EAFV9+F,GAAsBshE,EAAmB/qE,IAAU+J,KAAOw+F,CAGrE,CACA,SAASC,GAAcpiG,EAAiBoC,EAAQigG,YAC1CA,IACFA;AAEF,MAAMC,EAAWtiG,EAAgBqD;AAMjC,MAAO,CACLI,EANQ6+F,EAAS3+F,KAAOvB,EAAOykB,YAAcw7E,EAAmB,EAEhE16B,GAAoB3nE,EAAiBsiG,IAKrC1+F,EAHQ0+F,EAASx+F,IAAM1B,EAAOoN,UAKlC,CAqFA,MAAM+yF,GAAkC,IAAI1oI,IAAI,CAAC,WAAY;AAiB7D,SAAS2oI,GAAkC5oG,EAAS6oG,EAAkB1qE,GACpE,IAAI30B;AACJ,GAAyB,aAArBq/F,EACFr/F,EA5CJ,SAAyBxJ,EAASm+B,GAChC,MAAMivC,EAAMzE,EAAU3oE,GAChB8uE,EAAO/D,EAAmB/qE,GAC1B2T,EAAiBy5D,EAAIz5D;AAC3B,IAAIjK,EAAQolE,EAAKC,YACbplE,EAASmlE,EAAKE,aACdnlE,EAAI,EACJG,EAAI;AACR,GAAI2J,EAAgB,CAClBjK,EAAQiK,EAAejK,MACvBC,EAASgK,EAAehK;AACxB,MAAMm/F,EAAsBrC,OACvBqC,GAAuBA,GAAoC,UAAb3qE,KACjDt0B,EAAI8J,EAAeE,WACnB7J,EAAI2J,EAAeO,UAEvB,CACA,MAAO,CACLxK,QACAC,SACAE,IACAG,IAEJ,CAvBA,CA4C2BhK,EAASm+B;KAC3B,GAAyB,aAArB0qE,EACTr/F,EAhEJ,SAAyBxJ,GACvB,MAAM8uE,EAAO/D,EAAmB/qE,GAC1BwI,EAASu+F,GAAc/mG,GACvBre,EAAOqe,EAAQsE,cAAc3iB,KAC7B+nB,EAAQ0L,EAAI05D,EAAKO,YAAaP,EAAKC,YAAaptF,EAAK0tF,YAAa1tF,EAAKotF,aACvEplE,EAASyL,EAAI05D,EAAKj5D,aAAci5D,EAAKE,aAAcrtF,EAAKk0B,aAAcl0B,EAAKqtF;AACjF,IAAInlE,GAAKrB,EAAOykB,WAAa8gD,GAAoB/tE;AACjD,MAAMgK,GAAKxB,EAAOoN;AAIlB,MAHyC,QAArCi7B,GAAiBlvD,GAAM2tF,YACzBzlE,GAAKuL,EAAI05D,EAAKC,YAAaptF,EAAKotF,aAAerlE,GAE1C,CACLA,QACAC,SACAE,IACAG,IAEJ,CAjBA,CAgE2B+gE,EAAmB/qE;KACrC,GAAI6oE,EAAUggC,GACnBr/F,EAvBJ,SAAoCxJ,EAASm+B,GAC3C,MAAMmsC,EAAa7gE,GAAsBzJ,KAA4B,UAAbm+B,GAClDj0B,EAAMogE,EAAWpgE,IAAMlK,EAAQkvE,UAC/BnlE,EAAOugE,EAAWvgE,KAAO/J,EAAQmvE,WACjC56D,EAAQu0D,EAAc9oE,GAAWylG,GAASzlG,GAAWikG,EAAa;AAKxE,MAAO,CACLv6F,MALY1J,EAAQ+uE,YAAcx6D,EAAM1K,EAMxCF,OALa3J,EAAQgvE,aAAez6D,EAAMvK,EAM1CH,EALQE,EAAOwK,EAAM1K,EAMrBG,EALQE,EAAMqK,EAAMvK,EAOxB,CAfA,CAuBsC6+F,EAAkB1qE;IAC/C,CACL,MAAM4pE,EAAgBD,GAAiB9nG;AACvCwJ,EAAO,CACLK,EAAGg/F,EAAiBh/F,EAAIk+F,EAAcl+F,EACtCG,EAAG6+F,EAAiB7+F,EAAI+9F,EAAc/9F,EACtCN,MAAOm/F,EAAiBn/F,MACxBC,OAAQk/F,EAAiBl/F,OAE7B,CACA,OAAOglE,EAAiBnlE,EAC1B,CACA,SAASu/F,GAAyB/oG,EAASgpG,GACzC,MAAMp6G,EAAaD,GAAcqR;AACjC,QAAIpR,IAAeo6G,IAAangC,EAAUj6E,IAAek4G,GAAsBl4G,MAG9B,UAA1CiiD,GAAiBjiD,GAAYgb,UAAwBm/F,GAAyBn6G,EAAYo6G,GACnG,CA8DA,SAASC,GAA8BjpG,EAASirE,EAAc9sC,GAC5D,MAAMk0C,EAA0BvJ,EAAcmC,GACxC7kE,EAAkB2kE,EAAmBE,GACrC4B,EAAuB,UAAb1uC,EACV30B,EAAOC,GAAsBzJ,KAAe6sE,EAAS5B;AAC3D,IAAIziE,EAAS,CACXykB,WAAY,EACZrX,UAAW;AAEb,MAAM62D,EAAUw3B,EAAa;AAC7B,SAASiF,IACPz8B,EAAQ5iE,EAAIkkE,GAAoB3nE,EAClC,CACA,GAAIisE,IAA4BA,IAA4BxF,EAI1D,IAHkC,SAA9BnE,EAAYuC,IAA4B86B,GAAkB3/F,MAC5DoC,EAASu+F,GAAc97B,IAErBoH,EAAyB,CAC3B,MAAM82B,EAAa1/F,GAAsBwhE,KAAoB4B,EAAS5B;AACtEwB,EAAQ5iE,EAAIs/F,EAAWt/F,EAAIohE,EAAakE,WACxC1C,EAAQziE,EAAIm/F,EAAWn/F,EAAIihE,EAAaiE,SAC1C,MAAW9oE,GACT8iG;AAGAr8B,IAAYwF,GAA2BjsE,GACzC8iG;AAEF,MAAME,GAAahjG,GAAoBisE,GAA4BxF,EAAmDo3B,EAAa,GAAtDuE,GAAcpiG,EAAiBoC;AAG5G,MAAO,CACLqB,EAHQL,EAAKO,KAAOvB,EAAOykB,WAAaw/C,EAAQ5iE,EAAIu/F,EAAWv/F,EAI/DG,EAHQR,EAAKU,IAAM1B,EAAOoN,UAAY62D,EAAQziE,EAAIo/F,EAAWp/F,EAI7DN,MAAOF,EAAKE,MACZC,OAAQH,EAAKG,OAEjB,CACA,SAAS0/F,GAAmBrpG,GAC1B,MAA8C,WAAvC6wC,GAAiB7wC,GAAS4J,QACnC,CACA,SAASohE,GAAoBhrE,EAASspG,GACpC,IAAKxgC,EAAc9oE,IAAmD,UAAvC6wC,GAAiB7wC,GAAS4J,SACvD,OAAO;AAET,GAAI0/F,EACF,OAAOA,EAAStpG;AAElB,IAAIupG,EAAkBvpG,EAAQirE;AAI9B,OAHIF,EAAmB/qE,KAAaupG,IAClCA,EAAkBA,EAAgBjlG,cAAc3iB,MAE3C4nH,CACT,CACA,SAASr+B,GAAgBlrE,EAASspG,GAChC,MAAMl8B,EAAMzE,EAAU3oE;AACtB,GAAIkmG,GAAWlmG,GACb,OAAOotE;AAET,IAAKtE,EAAc9oE,GAAU,CAC3B,IAAIwpG,EAAkB76G,GAAcqR;AACpC,KAAOwpG,IAAoB1C,GAAsB0C,IAAkB,CACjE,GAAI3gC,EAAU2gC,KAAqBH,GAAmBG,GACpD,OAAOA;AAETA,EAAkB76G,GAAc66G,EAClC,CACA,OAAOp8B,CACT,CACA,IAAInC,EAAeD,GAAoBhrE,EAASspG;AAChD,KAAOr+B,GAAgBH,GAAeG,IAAiBo+B,GAAmBp+B,IACxEA,EAAeD,GAAoBC,EAAcq+B;AAEnD,OAAIr+B,GAAgB67B,GAAsB77B,IAAiBo+B,GAAmBp+B,KAAkBq7B,GAAkBr7B,GACzGmC,EAEFnC,GAjeT,SAA4BjrE,GAC1B,IAAIqrE,EAAc18E,GAAcqR;AAChC,KAAO8oE,EAAcuC,KAAiBy7B,GAAsBz7B,IAAc,CACxE,GAAIi7B,GAAkBj7B,GACpB,OAAOA;AACF,GAAI66B,GAAW76B,GACpB,OAAO;AAETA,EAAc18E,GAAc08E,EAC9B,CACA,OAAO,IACT,CAXA,CAie4CrrE,IAAYotE,CACxD,CAkBA,MAAMi4B,GAAW,CACfK,sDA5RF,SAA+DzxD,GAC7D,IAAIxB,SACFA,EAAQjpC,KACRA,EAAIyhE,aACJA,EAAY9sC,SACZA,GACE8V;AACJ,MAAM44B,EAAuB,UAAb1uC,EACV/3B,EAAkB2kE,EAAmBE,GACrCw+B,IAAWh3D,GAAWyzD,GAAWzzD,EAASsyD;AAChD,GAAI95B,IAAiB7kE,GAAmBqjG,GAAY58B,EAClD,OAAOrjE;AAET,IAAIhB,EAAS,CACXykB,WAAY,EACZrX,UAAW,GAETrB,EAAQ0vF,EAAa;AACzB,MAAMx3B,EAAUw3B,EAAa,GACvB5xB,EAA0BvJ,EAAcmC;AAC9C,IAAIoH,IAA4BA,IAA4BxF,MACxB,SAA9BnE,EAAYuC,IAA4B86B,GAAkB3/F,MAC5DoC,EAASu+F,GAAc97B,IAErBnC,EAAcmC,IAAe,CAC/B,MAAMk+B,EAAa1/F,GAAsBwhE;AACzC12D,EAAQkxF,GAASx6B,GACjBwB,EAAQ5iE,EAAIs/F,EAAWt/F,EAAIohE,EAAakE,WACxC1C,EAAQziE,EAAIm/F,EAAWn/F,EAAIihE,EAAaiE,SAC1C,CAEF,MAAMk6B,GAAahjG,GAAoBisE,GAA4BxF,EAAyDo3B,EAAa,GAA5DuE,GAAcpiG,EAAiBoC;AAC5G,MAAO,CACLkB,MAAOF,EAAKE,MAAQ6K,EAAM1K,EAC1BF,OAAQH,EAAKG,OAAS4K,EAAMvK,EAC5BH,EAAGL,EAAKK,EAAI0K,EAAM1K,EAAIrB,EAAOykB,WAAa1Y,EAAM1K,EAAI4iE,EAAQ5iE,EAAIu/F,EAAWv/F,EAC3EG,EAAGR,EAAKQ,EAAIuK,EAAMvK,EAAIxB,EAAOoN,UAAYrB,EAAMvK,EAAIyiE,EAAQziE,EAAIo/F,EAAWp/F,EAE9E,EAuPE+gE,qBACAw6B,gBArIF,SAAyBtxD,GACvB,IAAIj0C,QACFA,EAAOkwE,SACPA,EAAQE,aACRA,EAAYjyC,SACZA,GACE8V;AACJ,MACMy1D,EAAoB,IADoB,sBAAbx5B,EAAmCg2B,GAAWlmG,GAAW,GAjC5F,SAAqCA,EAASoB,GAC5C,MAAMuoG,EAAevoG,EAAM5/B,IAAIw+B;AAC/B,GAAI2pG,EACF,OAAOA;AAET,IAAIj5H,EAASu2H,GAAqBjnG,EAAS,OAAWj2B,QAAQoiD,GAAO08C,EAAU18C,IAA2B,SAApBu8C,EAAYv8C,KAC9Fy9E,EAAsC;AAC1C,MAAMC,EAAwD,UAAvCh5D,GAAiB7wC,GAAS4J;AACjD,IAAIyhE,EAAcw+B,EAAiBl7G,GAAcqR,GAAWA;AAC5D,KAAO6oE,EAAUwC,KAAiBy7B,GAAsBz7B,IAAc,CACpE,MAAMsX,EAAgB9xC,GAAiBw6B,GACjCy+B,EAA0BxD,GAAkBj7B;AAC7Cy+B,GAAsD,UAA3BnnB,EAAc/4E,WAC5CggG,EAAsC,OAEVC,GAAkBC,IAA4BF,GAAuCE,GAAsD,WAA3BnnB,EAAc/4E,UAA2BggG,GAAuCjB,GAAgBriI,IAAIsjI,EAAoChgG,WAAam8F,GAAkB16B,KAAiBy+B,GAA2Bf,GAAyB/oG,EAASqrE,IAEjY36F,EAASA,EAAO3G,QAAQggI,GAAaA,IAAa1+B,IAElDu+B,EAAsCjnB,EAExCtX,EAAc18E,GAAc08E,EAC9B,CAEA,OADAjqE,EAAM/3B,IAAI22B,EAAStvB,GACZA,CACT,CAzBA,CAiC6HsvB,EAAS7gC,KAAK0oB,IAAM,GAAGjf,OAAOsnG,GACjGE,GAClD45B,EAAwBN,EAAkB,GAC1Cx4B,EAAew4B,EAAkBlxE,SAAQ24C,EAAS03B,KACtD,MAAMr/F,EAAOo/F,GAAkC5oG,EAAS6oG,EAAkB1qE;AAK1E,OAJAgzC,EAAQjnE,IAAMkL,EAAI5L,EAAKU,IAAKinE,EAAQjnE,KACpCinE,EAAQjJ,MAAQzxD,EAAIjN,EAAK0+D,MAAOiJ,EAAQjJ,OACxCiJ,EAAQlJ,OAASxxD,EAAIjN,EAAKy+D,OAAQkJ,EAAQlJ,QAC1CkJ,EAAQpnE,KAAOqL,EAAI5L,EAAKO,KAAMonE,EAAQpnE,MAC/BonE,CAAO,GACby3B,GAAkC5oG,EAASgqG,EAAuB7rE;AACrE,MAAO,CACLz0B,MAAOwnE,EAAahJ,MAAQgJ,EAAannE,KACzCJ,OAAQunE,EAAajJ,OAASiJ,EAAahnE,IAC3CL,EAAGqnE,EAAannE,KAChBC,EAAGknE,EAAahnE,IAEpB,EA8GEghE,mBACA++B,gBAtBsBvtB,eAAexyG,GACrC,MAAMggI,EAAoB/qI,KAAK+rG,iBAAmBA,GAC5Ci/B,EAAkBhrI,KAAKirI,cACvBC,QAA2BF,EAAgBjgI,EAAK66H;AACtD,MAAO,CACLt7B,UAAWw/B,GAA8B/+H,EAAKu/F,gBAAiBygC,EAAkBhgI,EAAK66H,UAAW76H,EAAKi0D,UACtG4mE,SAAU,CACRl7F,EAAG,EACHG,EAAG,EACHN,MAAO2gG,EAAmB3gG,MAC1BC,OAAQ0gG,EAAmB1gG,QAGjC,EAUEurC,eA1PF,SAAwBl1C,GACtB,OAAOlgC,MAAMC,KAAKigC,EAAQk1C,iBAC5B,EAyPEk1D,cAhHF,SAAuBpqG,GACrB,MAAM0J,MACJA,EAAKC,OACLA,GACE49F,GAAiBvnG;AACrB,MAAO,CACL0J,QACAC,SAEJ,EAwGE87F,YACA58B,YACAyhC,MAbF,SAAetqG,GACb,MAA+C,QAAxC6wC,GAAiB7wC,GAASsvE,SACnC;AAaA,SAASi7B,GAAcn8H,EAAGC,GACxB,OAAOD,EAAEy7B,IAAMx7B,EAAEw7B,GAAKz7B,EAAE47B,IAAM37B,EAAE27B,GAAK57B,EAAEs7B,QAAUr7B,EAAEq7B,OAASt7B,EAAEu7B,SAAWt7B,EAAEs7B,MAC7E,CA8IA,MACM6gG,GA/gCkB,SAASnnI,GAI/B,gBAHIA,IACFA,EAAU,CAAC,GAEN,CACLtF,KAAM,gBACNsF,UACAq5G,SAAS5iF,GACP,IAAI2wG,EAAuBC,EAAwBC;AACnD,MAAM/5B,MACJA,EAAKg6B,eACLA,EAAcriC,UACdA,EACA88B,SAAUC,EAAS7yD,SACnBA,GACE34C,EACEj1B,EAAKw/H,EAAShhI,EAASy2B,IAAQ+wG,UACnCA,KAAiBC,UACjBA,EAASj0B,kBACTA,EAAoBrO,EAAUuiC,cAC9BA,MACElmI,EAAImmI,EAAwBnH,EAAUh/H,EAAI,CAC5C,YACA,YACA,oBACA,kBAEI+xG,WAAek0B,GAAwBj0B,IAAsBrO,EApCzE,SAA0BsiC,EAAWC,EAAel0B,GAElD,OAD2Ci0B,EAAY,IAAIj0B,EAAkB9sG,QAAQw+F,GAAcg8B,EAAah8B,KAAeuiC,OAAej0B,EAAkB9sG,QAAQw+F,GAAcg8B,EAAah8B,KAAeuiC,KAAcj0B,EAAkB9sG,QAAQw+F,GAAc+7B,EAAQ/7B,KAAeA,KACrPx+F,QAAQw+F,IAC5CuiC,GACKvG,EAAah8B,KAAeuiC,KAAcC,GA1OvD,SAAuCxiC,GACrC,OAAOA,EAAUhuF,QAAQ,cAAeuwH,GAAc3G,EAAqB2G,IAC7E,CAFA,CA0OqGviC,KAAeA,GAIpH,CARA,CAoCuGuiC,GAAa,KAAMC,EAAel0B,GAAqBA,EAClJ3I,QAAiB4B,EAAeh2E,EAAOkxG,GACvCC,GAA0E,OAAzDR,EAAwBG,EAAeJ,sBAAkCC,EAAsB53H,QAAU,EAC1Hq4H,EAAmBt0B,EAAaq0B;AACtC,GAAwB,MAApBC,EACF,MAAO,CAAC;AAEV,MAAMC,EA9RZ,SAA2B5iC,EAAWqI,EAAOk0B,YACvCA,IACFA;AAEF,MAAMgG,EAAYvG,EAAah8B,GACzB08B,EAAgBL,EAAiBr8B,GACjC7pG,EAAS+lI,EAAcQ;AAC7B,IAAImG,EAAsC,MAAlBnG,EAAwB6F,KAAehG,EAAM,MAAQ,SAAW,QAAU,OAAuB,UAAdgG,EAAwB,SAAW;AAI9I,OAHIl6B,EAAMnH,UAAU/qG,GAAUkyG,EAAMm0B,SAASrmI,KAC3C0sI,EAAoBx9B,EAAqBw9B,IAEpC,CAACA,EAAmBx9B,EAAqBw9B,GAClD,CAZA,CA8R+CF,EAAkBt6B,QAAiC,MAAnB00B,EAAUgF,aAAyBhF,EAAUgF,MAAM73D,EAASsyD;AACrI,GAAIx8B,IAAc2iC,EAChB,MAAO,CACLxyG,MAAO,CACL6vE,UAAWqO,EAAa;AAI9B,MAAMy0B,EAAmB,CAACn9B,EAASo2B,EAAQ4G,IAAoBh9B,EAASi9B,EAAe,IAAKj9B,EAASi9B,EAAe,KAC9GG,EAAe,KAAgE,OAA1DZ,EAAyBE,EAAeJ,sBAAkCE,EAAuB5zB,YAAc,GAAI,CAC5IvO,UAAW2iC,EACXp0B,UAAWu0B,IAEPE,EAAgB30B,EAAaq0B,EAAe;AAClD,GAAIM,EACF,MAAO,CACLrhI,KAAM,CACJ2I,MAAOo4H,EAAe,EACtBn0B,UAAWw0B,GAEb5yG,MAAO,CACL6vE,UAAWgjC;AAIjB,MAAMC,EAA8BF,EAAa7qI,KAAKg5C,IACpD,MAAMgyF,EAAalH,EAAa9qF,EAAE8uD;AAClC,MAAO,CAAC9uD,EAAE8uD,UAAWkjC,GAAcZ,EAEjCpxF,EAAEq9D,UAAUj2G,MAAM,EAAG,GAAG23D,SAAQyd,EAAKp8B,IAAMo8B,EAAMp8B,GAAG,GAGpDJ,EAAEq9D,UAAU,GACXr9D,EAAEq9D,UAAU,IACdx+D,OAAMlqC,EAAGC,IAAMD,EAAE,GAAKC,EAAE,KAOrBq9H,GAA8E,OAA3Df,EANWa,EAA4BzhI,QAAQ0vC,GAAMA,EAAE,GAAG54C,MACjF,EAGA0jI,EAAa9qF,EAAE,IAAM,EAAI,GACzBpO,OAAOwO,GAAMA,GAAK,MACyD,WAAuB8wF,EAAsB,KAAOa,EAA4B,GAAG;AAChK,OAAIE,IAAmBnjC,EACd,CACLr+F,KAAM,CACJ2I,MAAOo4H,EAAe,EACtBn0B,UAAWw0B,GAEb5yG,MAAO,CACL6vE,UAAWmjC,IAIV,CAAC,CACV,EAEJ,EAs7BMtjI,GAl3BU,SAAS/E,GAIvB,gBAHIA,IACFA,EAAU,CAAC,GAEN,CACLtF,KAAM,QACNsF,UACAq5G,SAAS5iF,GACP,MAAM+P,EACJA,EAACG,EACDA,EAACu+D,UACDA,GACEzuE,EACEj1B,EAAKw/H,EAAShhI,EAASy2B,IAC3B81E,SAAUkG,KACV+0B,UAAWc,KAAsBC,QACjCA,EAAU,CACRvtI,GAAK41E,IACH,IACEpqC,EAAGgiG,EACH7hG,EAAG8hG,GACD73D;AACJ,MAAO,CACLpqC,EAAGgiG,EACH7hG,EAAG8hG,MAIPjnI,EAAImmI,EAAwBnH,EAAUh/H,EAAI,CAC5C,WACA,YACA,YAEI2+G,EAAS,CACb35E,IACAG,KAEIkkE,QAAiB4B,EAAeh2E,EAAOkxG,GACvCH,EAAYlG,EAAYL,EAAQ/7B,IAChCqH,EAAW40B,EAAgBqG;AACjC,IAAIkB,EAAgBvoB,EAAO5T,GACvBo8B,EAAiBxoB,EAAOqnB;AAC5B,GAAI/0B,EAAe,CACjB,MACMm2B,EAAuB,MAAbr8B,EAAmB,SAAW;AAG9Cm8B,EAAgB3H,EAFH2H,EAAgB79B,EAFA,MAAb0B,EAAmB,MAAQ,QAIfm8B,EADfA,EAAgB79B,EAAS+9B,GAExC,CACA,GAAIN,EAAgB,CAClB,MACMM,EAAwB,MAAdpB,EAAoB,SAAW;AAG/CmB,EAAiB5H,EAFJ4H,EAAiB99B,EAFA,MAAd28B,EAAoB,MAAQ,QAIfmB,EADhBA,EAAiB99B,EAAS+9B,GAEzC,CACA,MAAMC,EAAgBN,EAAQvtI,GAAGulI,EAAcF,EAAe,CAAC,EAAG5pG,GAAQ,CACxE8f,CAACg2D,GAAWm8B,EACZpyF,CAACkxF,GAAYmB;AAEf,OAAOpI,EAAcF,EAAe,CAAC,EAAGwI,GAAgB,CACtDhiI,KAAM,CACJ2/B,EAAGqiG,EAAcriG,EAAIA,EACrBG,EAAGkiG,EAAcliG,EAAIA,EACrBs5B,QAAS,CACP1pB,CAACg2D,GAAWkG,EACZn8D,CAACkxF,GAAYc,KAIrB,EAEJ,EA2yBMrpI,GA1yBS,SAASe,GAItB,gBAHIA,IACFA,EAAU,CAAC,GAEN,CACLtF,KAAM,OACNsF,UACAq5G,SAAS5iF,GACP,IAAIqyG,EAAuBC;AAC3B,MAAM7jC,UACJA,EAASqI,MACTA,EACAy0B,SAAUC,EAAS7yD,SACnBA,GACE34C,EACEj1B,EAAKw/H,EAAShhI,EAASy2B,IAAQn7B,MACnCA,EAAQA,UAENkG,EAAImmI,EAAwBnH,EAAUh/H,EAAI,CAC5C,UAEIqpG,QAAiB4B,EAAeh2E,EAAOkxG,GACvC94B,EAAOoyB,EAAQ/7B,GACfuiC,EAAYvG,EAAah8B,GACzB8jC,EAAqC,MAA3B1H,EAAYp8B,IACtB7+D,MACJA,EAAKC,OACLA,GACEinE,EAAMm0B;AACV,IAAIuH,EACAC;AACS,QAATr6B,GAA2B,WAATA,GACpBo6B,EAAap6B,EACbq6B,EAAYzB,WAAyC,MAAnBxF,EAAUgF,aAAyBhF,EAAUgF,MAAM73D,EAASsyD,WAAa,QAAU,OAAS,OAAS,UAEvIwH,EAAYr6B,EACZo6B,EAA2B,QAAdxB,EAAsB,MAAQ;AAE7C,MAAM0B,EAAwB7iG,EAASukE,EAAShkE,IAAMgkE,EAASjG,OACzDwkC,EAAuB/iG,EAAQwkE,EAASnkE,KAAOmkE,EAAShG,MACxDwkC,EAA0Bj2F,EAAI9M,EAASukE,EAASo+B,GAAaE,GAC7DG,EAAyBl2F,EAAI/M,EAAQwkE,EAASq+B,GAAYE,GAC1DG,GAAW9yG,EAAM8wG,eAAexiI;AACtC,IAAIykI,EAAkBH,EAClBI,EAAiBH;AAOrB,GAN4D,OAAvDR,EAAwBryG,EAAM8wG,eAAexiI,QAAkB+jI,EAAsB7oE,QAAQz5B,IAChGijG,EAAiBL,GAE0C,OAAxDL,EAAyBtyG,EAAM8wG,eAAexiI,QAAkBgkI,EAAuB9oE,QAAQt5B,IAClG6iG,EAAkBL,GAEhBI,IAAY9B,EAAW,CACzB,MAAMiC,EAAO33F,EAAI84D,EAASnkE,KAAM,GAC1BijG,EAAO53F,EAAI84D,EAAShG,MAAO,GAC3B+kC,EAAO73F,EAAI84D,EAAShkE,IAAK,GACzBgjG,EAAO93F,EAAI84D,EAASjG,OAAQ;AAC9BokC,EACFS,EAAiBpjG,EAAQ,GAAc,IAATqjG,GAAuB,IAATC,EAAaD,EAAOC,EAAO53F,EAAI84D,EAASnkE,KAAMmkE,EAAShG,QAEnG2kC,EAAkBljG,EAAS,GAAc,IAATsjG,GAAuB,IAATC,EAAaD,EAAOC,EAAO93F,EAAI84D,EAAShkE,IAAKgkE,EAASjG,QAExG,OACMtpG,EAAMilI,EAAcF,EAAe,CAAC,EAAG5pG,GAAQ,CACnDgzG,iBACAD;AAEF,MAAMM,QAAuB7H,EAAU8E,cAAc33D,EAASsyD;AAC9D,OAAIr7F,IAAUyjG,EAAezjG,OAASC,IAAWwjG,EAAexjG,OACvD,CACLjR,MAAO,CACLk4E,WAIC,CAAC,CACV,EAEJ,EAgwBMw8B,GAAe,MACnBziH,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKkuI,2BAA6Bx6H,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKmuI,mBAAqBz6H,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAKouI,mBAAqB16H,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAKquI,SAAW,GAChBruI,KAAKsuI,WAAa,GAClBtuI,KAAKuuI,cAAgB,IACrBvuI,KAAKwuI,gBA/BQC,EAAC/qI,EAAUO,KAC1B,IAAI0wD;AACJ,OAAO,WAAc,IAAD,IAAA+5E,EAAApvI,UAAAC,OAATH,EAAI,IAAAuB,MAAA+tI,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvvI,EAAIuvI,GAAArvI,UAAAqvI;AAKb/qI,aAAa+wD,GACbA,EAAUlxD,iBAJRkxD,EAAU,KACVjxD,EAASlE,aAAcJ,EAAK,GAGF6E,EAC9B,CAAC,EATcwqI,EA+BUA,KACrB,MAAMG,EAAe5uI,KAAKsuI,WAAWvmI,KAAK;AAC1C/H,KAAK6uI;AACL,MAAMC,EAAY,IACb9uI,KAAKquI,SAAS3sI,MAAM1B,KAAK+uI,gBAAkB,MAC3C/uI,KAAKquI,SAAS3sI,MAAM,EAAG1B,KAAK+uI,gBAAkB,IACjD7tI,MAAMyiC,GAASA,EAAKliC,WAAWmtI,KAC3BI,EAAahvI,KAAKquI,SAASh1F,WAAW1V,GACnCA,EAAKliC,WAAWqtI,KAEnBG,EAAcjvI,KAAKkvI,KAAKF;AAC1BC,IAAgBA,EAAYpkF,WAC9B7qD,KAAK+uI,gBAAkBC,EAClBhvI,KAAKmvI,cAAiBnvI,KAAKw2H,cAC9Bx2H,KAAK+E,MAAQkqI,EAAYlqI,MACzB/E,KAAKkuI,2BAA2B3xE,KAAK,CACnCx3D,MAAO/E,KAAK+E,MACZqqI,kBAAmBH,EAEnBI,oBAAqB,KACrBC,uBAAwB,CAACL,OAI/BjvI,KAAKsuI,WAAa,EAAE,GACnBtuI,KAAKuuI,eACRvuI,KAAKmlB,KAAO,KACZnlB,KAAKkvI,KAAO,KACZlvI,KAAKuvI,eAAiB,KACtBvvI,KAAKpB,YACLoB,KAAK+E,MAAQ,GACb/E,KAAKmD,KAAO,QACZnD,KAAKkb,mBACLlb,KAAKwvI,YACLxvI,KAAK6qD,YACL7qD,KAAKw8H,WACLx8H,KAAK+wF,WACL/wF,KAAKyrF,YACLzrF,KAAKw2H,eACLx2H,KAAKyvI,wBACLzvI,KAAK28G,gBAAkB,WACvB38G,KAAKmvI,gBACLnvI,KAAK+uI,iBAAmB,EACxB/uI,KAAK6uI,wBACL7uI,KAAK0vI,uBACL1vI,KAAK2vI,uBACP,CACA1Y,eACEj3H,KAAK4vI,gBACP,CACAC,qBACE7vI,KAAKmlB,KAAKqxG,YAAcx2H,KAAKw2H,WAC/B,CACAsZ,yBACE,IAAIpqI;AACJ,GAAI1F,KAAKkvI,KAAM,CACb,MAAMa,EAAa/vI,KAAKkvI,KAAKlvI,KAAK+uI;AAClC/uI,KAAKkvI,KAAKvwI,SAAS6J,GAAMA,EAAEo+B,UAAU7yB,OAAO,kBACxCg8H,GAAc/vI,KAAK6uI,uBACsB,QAA1CnpI,EAAK1F,KAAKkvI,KAAKlvI,KAAK+uI,4BAA8BrpI,GAAyBA,EAAGkhC,UAAUx/B,IAAI,gBAC7FpH,KAAKgwI,oBAAoBD,GAE7B,CACF,CACAC,oBAAoBx+C,GAClB,IAAKxxF,KAAKuvI,iBAAmB/9C,EAC3B;AACF,MAAMy+C,EAAUz+C,EAAIlnD,wBACd4lG,EAAclwI,KAAKuvI,eAAejlG,wBAClC6lG,EAAkB3iD,EAAQ5f,2BAAkE,EAArC4f,EAAQ3f;AACjEoiE,EAAQllG,IAAMmlG,EAAYnlG,IAAMolG,EAClCnwI,KAAKuvI,eAAe94F,WAAay5F,EAAYnlG,IAAMolG,EAAkBF,EAAQllG,IACpEklG,EAAQnnC,OAASonC,EAAYpnC,OAASqnC,IAC/CnwI,KAAKuvI,eAAe94F,WAAaw5F,EAAQnnC,QAAUonC,EAAYpnC,OAASqnC,GAE5E,CAEAC,oBAAmBC,GAA2F,IAAxF98C,QAAQulC,uBAAEA,EAAsBd,kBAAEA,EAAiBoB,eAAEA,EAAcF,aAAEA,IAAgBmX;AACzG,MAAMtrI,EAAQ+zH,EAAuB/wH,KAAK;AAC1C/H,KAAK+E,MAAQA,EACT/E,KAAKw2H,YACPx2H,KAAKswI,cAAclX,GAAkBF,GAErCl5H,KAAKswI,cAAcpX,GAErBl5H,KAAKkuI,2BAA2B3xE,KAAK,CACnCx3D,QACAqqI,kBAAmBlW,EACnBmW,oBAAqBjW,EACrBkW,uBAAwBtX,GAE5B,CACAuY,0BACE7tI,OAAO+xD,4BACDz0D,KAAKmvI,cACPnvI,KAAKwwI,cACP,GAEJ,CACA1zB,YAAY58G,GACV,IAAIwF;AACA1F,KAAKgtD,GAAG9lB,SAAShnC,EAAE0B,UAA2C,QAA9B8D,EAAK1F,KAAKuvI,0BAA4B7pI,SAAyBA,EAAGwhC,SAAShnC,EAAE0B,WAGjH5B,KAAKw8H,WACDx8H,KAAKmvI,cACPnvI,KAAKywI,YAET,CACAC,YACE,OAAI/vI,MAAMiG,QAAQ5G,KAAK+E,OACd,IAAIjE,IAAId,KAAK+E,OAEf,IAAIjE,IAAId,KAAKw2H,YAAcx2H,KAAK+E,MAAM8K,MAAM,KAAO,CAAC7P,KAAK+E,OAClE,CACA4rI,iBACE,OAAO3wI,KAAK0wI,YAAYvtI,IAC1B,CAOAytI,kBACE,GAAkB,OAAd5wI,KAAKkvI,KACP,MAAO;AACF,CACL,MAAMhmD,EAASlpF,KAAK0wI;AACpB,MAAO,IAAI1wI,KAAKkvI,MAAMtkI,QAAQ4mF,GAAQtI,EAAO/hF,IAAIqqF,EAAIzsF,QACvD,CACF,CACI8rI,4BACF,OAAO7wI,KAAKw2H,aAAex2H,KAAK0wI,YAAYvtI,KAAO,CACrD,CACA2tI,6BACE,MAAM5nD,EAASlpF,KAAK0wI;AACpB,OAAOxnD,EAAO/lF,KAAO,EAAK,GAAE+lF,EAAO/lF,gBAAkB,EACvD,CACA4tI,2BACE,OAAO/wI,KAAKgtD,GAAGn9B,cAAe,GAAEu9D,EAAQhjB,oBAAoB,4CAC9D,CAIAwlE,iBACE,IAAK5vI,KAAKmlB,OAASnlB,KAAKkvI,KACtB;AACF,MAAM8B,EAAehxI,KAAK4wI;AACE,IAAxBI,EAAazxI,QACfS,KAAKmlB,KAAKpgB,MAAQ/E,KAAK+E,MAAQ,GAC/B/E,KAAK+uI,iBAAmB,IAExB/uI,KAAKmlB,KAAKpgB,MAAQ/E,KAAK+E,MACvB/E,KAAKswI,cAAcU,EAAa,KAElChxI,KAAKixI,iBAAiBD,EACxB,CAKAC,mBAAqC,IAApBC,EAAY5xI,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG;AAC9B,IAAIoG,EAAI4P,EAAIoT;AAEZ,GADiG,QAAhGpT,EAAgD,QAA1C5P,EAAK1F,KAAK+wI,sCAAwCrrI,SAAyBA,EAAGqO,kBAAoBuB,GAAyBA,EAAGrT,KAAKyD,GAC9G,IAAxBwrI,EAAa3xI,OAAc,CAC7B,MAAM4xI,EAAYD,EAAa,GAAGlsB;AAClCmsB,EAAU7xB,eACV6xB,EAAUlnC,gBAAgB,YAC1BknC,EAAUlnC,gBAAgB,QAC1BknC,EAAUlnC,gBAAgB,MAC1BknC,EAAU/rG,iBAAiB,QAAQzmC,SAASquD,GAAOA,EAAGi9C,gBAAgB,QACtEknC,EAAUvqG,UAAU7yB,OAAO,gBAC3Bo9H,EAAU5wD,aAAa,OAAQ,uBAC/B4wD,EAAUhuI,KAAqB,UAAdnD,KAAKmD,KAAmB,QAAU,SACnDnD,KAAKgtD,GAAG1xB,OAAO61G,EACjB,MAAO,GAAID,EAAa3xI,OAAS,EAAG,CAClC,MAAM6xI,EAAwBz0H,SAASuF,cAAe,GAAEkrE,EAAQhjB,oBAAoB;AACpFgnE,EAAsB7wD,aAAa,OAAQ,uBAC3C6wD,EAAsBnrG,UAAa,GAAEjmC,KAAK2wI,iBAAiBx6C,oBAC3Di7C,EAAsBjuI,KAAqB,UAAdnD,KAAKmD,KAAmB,QAAU;AAC/D,MAAMkuI,EAA0B10H,SAASuF,cAAc;AACvDmvH,EAAwB9wD,aAAa,OAAQ;AAC7C,MAAM+wD,EAAsBtxI,KAAKgtD,GAAGn9B,cAAc;AAClDwhH,EAAwBnwD,UAA+H,QAAlHx4D,EAAK4oH,eAA0EA,EAAoBpwD,qBAAuBx4D,EAAgBA,EAAK,WACpL0oH,EAAsB7uH,YAAY8uH,GAC9BC,GACe,IAAI7lH,uBACnB4lH,EAAwBnwD,UAAYowD,eAA0EA,EAAoBpwD,SAAS,IAEpI9uD,QAAQk/G,EAAqB,CAAEn6E,iBAAqBG,aAE/Dt3D,KAAKgtD,GAAG1xB,OAAO81G,EACjB,CACF,CAKAG,mBACmB,IAAI9lH,iBAAiBzrB,KAAKwxI,aAAazyI,KAAKiB,OACpDoyB,QAAQpyB,KAAKmlB,KAAM,CAAEkyC,aAAiBF,iBAAqBG,YACtE,CACAk6E,eACExxI,KAAKyxI,WACLzxI,KAAK4vI,iBACL5vI,KAAKwwI,cACP,CAIAF,cAAc9+C,GACZxxF,KAAK+uI,gBAAkBpuI,MAAMoB,UAAUvB,QAAQyB,KAAKjC,KAAKkvI,KAAM19C,EACjE,CAIA+rB,iBACE,IAAI73G;AACJ,GAAI1F,KAAKmvI,eAAiBnvI,KAAKuvI,eAC7B,OAAOptD,QAAQC;AAEjBpiF,KAAK6uI,wBACgB,QAApBnpI,EAAK1F,KAAKkvI,gBAAkBxpI,GAAyBA,EAAG/G,SAAS6J,GAAMA,EAAEo+B,UAAU7yB,OAAO;AAC3F,MAAM+lE,EAAY95E,KAAKgtD,GAAGtoB,QAAQ1kC,KAAKyvI,mBAAqB9yH,SAAS6F;AAQrE,OAPA/jB,OAAOkD,OAAO3B,KAAKuvI,eAAe39D,MAAO,CACvCuxC,OAAS,GAAEE,EAAUH,aAAappC,GAAa,IAC/C9E,WAAY,WAEdh1E,KAAK0xI,oBACL53D,EAAUx+C,OAAOt7B,KAAKuvI,gBACtBvvI,KAAK2xI,sBACE,IAAIxvD,SAASC,IAClB3+E,iBACEzD,KAAKwwI,eACLxwI,KAAKuvI,eAAe39D,MAAMoD,WAAa,UACvCh1E,KAAKmvI,gBACLnvI,KAAKmuI,mBAAmB5xE,OACxB6lB,GAAS,GACR,GAAG,GAEV,CAIAquD,YACE,OAAKzwI,KAAKmvI,cAGVnvI,KAAKuvI,eAAex7H,SACpB/T,KAAK4xI,yBACL5xI,KAAK6xI,mBACL7xI,KAAKmvI,gBACLnvI,KAAKouI,mBAAmB7xE,OACjB4lB,QAAQC,WAPND,QAAQC,SAQnB,CAIAm7B,mBACEv9G,KAAKmvI,mBAAqBnvI,KAAKywI,kBAAoBzwI,KAAK8xI,UAC1D,CAGAC,qBAAqB/qC,GACnB,OAAQA,EAAGzlG,KACT,IAAK,YACHvB,KAAKgyI,eAAehrC,EArRL;AAsRf;AACF,IAAK,UACHhnG,KAAKgyI,eAAehrC,GAzRP;AA0Rb;AACF,IAAK,IACHhnG,KAAKiyI,eAAejrC;AACpB;AACF,IAAK,QACHhnG,KAAKkyI;AACL;AACF,IAAK,SACHlyI,KAAKmyI;AACL;AACF,IAAK,MACHnyI,KAAKoyI,UAAUprC;AACf;AACF,IAAK,OACHhnG,KAAKqyI,cAAcrrC;AACnB;AACF,IAAK,MACHhnG,KAAKsyI,aAAatrC;AAClB;AACF,QACEhnG,KAAKuyI,iBAAiBvrC,GAG1BA,EAAGM,iBACL,CAUAiW,qBAAqBvW,EAAImJ,GAGvB,GAFAnJ,EAAG9pB,iBACHl9E,KAAK6uI,wBACD7uI,KAAKmvI,cACP,IAAK,IAAIluI,EAAIjB,KAAK+uI,gBAAkB5+B,EAAWlvG,GAAK,GAAKA,EAAIjB,KAAKkvI,KAAK3vI,OAAQ0B,GAAKkvG,EAClF,IAAKnwG,KAAKkvI,KAAKjuI,GAAG4pD,SAAU,CAC1B7qD,KAAK+uI,gBAAkB9tI;AACvB,KACF,aAGIjB,KAAK8xI,UAEf,CAQAv0B,qBAAqBvW,GACnB,IAAIthG;AACJshG,EAAG9pB,iBACCl9E,KAAKmvI,aACoC,QAA1CzpI,EAAK1F,KAAKkvI,KAAKlvI,KAAK+uI,4BAA8BrpI,GAAyBA,EAAG21H,eAEzEr7H,KAAK8xI,UAEf,CAIAI,iBACE,IAAIxsI;AACA1F,KAAKmvI,cACoC,QAA1CzpI,EAAK1F,KAAKkvI,KAAKlvI,KAAK+uI,4BAA8BrpI,GAAyBA,EAAGi2E,SAC/E37E,KAAKywI,aAEL7L,EAAMpjB,qBAAqBxhH,KAAKgtD,GAEpC,CAIAmlF,eACMnyI,KAAKmvI,cACPnvI,KAAKywI,WAET,CAKA2B,UAAUprC,GACJhnG,KAAKmvI,aACPnoC,EAAG9pB,iBAEHl9E,KAAKw8H,UAET,CAEA6V,cAAcrrC,GACRhnG,KAAKmvI,eACPnoC,EAAG9pB,iBACHl9E,KAAK6uI,wBACL7uI,KAAK+uI,gBAAkB,EAE3B,CAEAuD,aAAatrC,GACPhnG,KAAKmvI,eACPnoC,EAAG9pB,iBACHl9E,KAAK6uI,wBACL7uI,KAAK+uI,gBAAkB/uI,KAAKkvI,KAAK3vI,OAAS,EAE9C,CAEAizI,kBAAkBxrC,GAChB,OAAQA,EAAGzlG,KACT,IAAK,QACHvB,KAAKyyI;AACL;AACF,IAAK,SACHzyI,KAAKmyI;AACL;AACF,IAAK,MACHnyI,KAAKoyI,UAAUprC;AACf;AACF,IAAK,IACHhnG,KAAK0yI,mBAAmB1rC;AACxB;AACF,QACEhnG,KAAKuyI,iBAAiBvrC,GAG1BA,EAAGM,iBACL,CAKAorC,mBAAmB1rC,GACbhnG,KAAKw2H,aAAexvB,EAAGplG,OAAOohC,aAAa,OAAQ,YAGvDgkE,EAAG9pB,iBACHl9E,KAAKywI,YACLzwI,KAAKgtD,GAAGyuB,QACV,CAKAg3D,kBACOzyI,KAAKw2H,cACRx2H,KAAKywI,YACLzwI,KAAKgtD,GAAGyuB,QAEZ,CACA82D,iBAAiBvrC,GACf,IAAIthG,GACqB,QAApBA,EAAK1F,KAAKmlB,gBAAkBzf,SAAyBA,EAAGs9B,aAAa,gBAGtEgkE,EAAGzlG,IAAIhC,OAAS,GAAKynG,EAAGzlG,IAAIq5B,gBAAkBosE,EAAGzlG,IAAI0hC,gBAGzDjjC,KAAK2yI,gBAAgB3rC,GACrBhnG,KAAKwuI,kBACP,CACAmE,gBAAgB3rC,GACdhnG,KAAKsuI,WAAa,IAAItuI,KAAKsuI,WAAYtnC,EAAGzlG,IAC5C,CAEAqxI,cACM5yI,KAAKwvI,UAAYxvI,KAAK6qD,WAG1B7qD,KAAKw8H,WACP,CACAqW,mBAAmB7rC,GACbA,EAAGplG,OAAOmjB,QAAQke,gBAAkBmqD,EAAQhjB,oBAAoB,oBAGhEpqE,KAAKwvI,UAAYxvI,KAAK6qD,UAG1B7qD,KAAK8yI,aACP,CACAC,kBACO/yI,KAAKw2H,cACRx2H,KAAKywI,YACLzwI,KAAKgtD,GAAGyuB,QAEZ,CACAk2D,sBACE,MAAM3kF,GAAEA,EAAEuiF,eAAEA,EAAciB,aAAEA,GAAiBxwI;AAC7CA,KAAK4xI,uBAlkBT,SAAoBtnC,EAAWs7B,EAAU7tF,EAAQ7zC,YAC3CA,IACFA,EAAU,CAAC;AAEb,MAAM8uI,eACJA,KAAqBC,eACrBA,KAAqBC,cACrBA,EAA0C,mBAAnB38F,eAA6B48F,YACpDA,EAA8C,mBAAzBC,qBAAmCC,eACxDA,MACEnvI,EACEovI,EAAc9K,GAAcl+B,GAC5BipC,EAAYP,GAAkBC,EAAiB,IAAIK,EAAcxL,GAAqBwL,GAAe,MAAOxL,GAAqBlC,IAAa;AACpJ2N,EAAU50I,SAASisI,IACjBoI,GAAkBpI,EAAS71H,iBAAiB,SAAUgjC,EAAQ,CAC5DtiC,aAEFw9H,GAAkBrI,EAAS71H,iBAAiB,SAAUgjC,EAAO;AAE/D,MAAMy7F,EAAYF,GAAeH,EA5FnC,SAAqBtyG,EAAS4yG,GAC5B,IACI5vI,EADA6vI,EAAK;AAET,MAAMhwD,EAAOkoB,EAAmB/qE;AAChC,SAAS8yG,IACP,IAAIC;AACJhwI,aAAaC,GACC,OAAb+vI,EAAMF,IAAeE,EAAIrhH,aAC1BmhH,EAAK,IACP,CA8DA,OA7DA,SAASG,EAAQC,EAAM/mI,YACjB+mI,IACFA,WAAO,IAEL/mI,IACFA,EAAY,GAEd4mI;AACA,MAAMI,EAA2BlzG,EAAQyJ,yBACnCM,KACJA,EAAIG,IACJA,EAAGR,MACHA,EAAKC,OACLA,GACEupG;AAIJ,GAHKD,GACHL,KAEGlpG,IAAUC,EACb;AAEF,MAKMtmC,EAAU,CACd8vI,YANe3sH,EAAM0jB,GAIQ,OAHZ1jB,EAAMq8D,EAAKksB,aAAehlE,EAAOL,IAGC,OAFjCljB,EAAMq8D,EAAKmsB,cAAgB9kE,EAAMP,IAEuB,OAD1DnjB,EAAMujB,GACyE,KAG/F79B,UAAWkpC,EAAI,EAAGqB,EAAI,EAAGvqC,KAAe;AAE1C,IAAIknI;AACJ,SAASC,EAAcviH,GACrB,MAAMwiH,EAAQxiH,EAAQ,GAAGyiH;AACzB,GAAID,IAAUpnI,EAAW,CACvB,IAAKknI,EACH,OAAOJ;AAEJM,EAKHN,KAAeM,GAJftwI,EAAYJ,iBACVowI,KAAe,KAAK,GACnB,IAIP,CACc,IAAVM,GAAgB/I,GAAc2I,EAA0BlzG,EAAQyJ,0BAClEupG,IAEFI,IACF,CACA,IACEP,EAAK,IAAIN,qBAAqBc,EAAezP,EAAcF,EAAe,CAAC,EAAGrgI,GAAU,CAEtFw/E,KAAMA,EAAKv+C,gBAIf,CAFE,MAAOvc,GACP8qH,EAAK,IAAIN,qBAAqBc,EAAehwI,EAC/C,CACAwvI,EAAGthH,QAAQyO,EACb,CA3DA,EA4DAgzG,GACOF,CACT,CAxEA,CA4F6DL,EAAav7F,GAAU;AAClF,IAoBIg6B,EApBAsiE,GAAkB,EAClBC,EAAiB;AACjBpB,IACFoB,EAAiB,IAAI/9F,gBAAgBu+B,IACnC,IAAKy/D,GAAcz/D;AACfy/D,GAAcA,EAAW3yI,SAAW0xI,GAAegB,IACrDA,EAAet9F,UAAU4uF,GACzBlxE,qBAAqB2/E,GACrBA,EAAiB5/E,4BACf,IAAI+/E;AACkC,OAArCA,EAAkBF,IAA2BE,EAAgBpiH,QAAQwzG,EAAS,KAGnF7tF,GAAQ,IAENu7F,IAAgBD,GAClBiB,EAAeliH,QAAQkhH,GAEzBgB,EAAeliH,QAAQwzG;AAGzB,IAAI6O,EAAcpB,EAAiB/oG,GAAsBggE,GAAa;AAatE,OAZI+oC,GAGJ,SAASqB,IACP,MAAMC,EAAcrqG,GAAsBggE;AACtCmqC,IAAgBrJ,GAAcqJ,EAAaE,IAC7C58F,IAEF08F,EAAcE,EACd5iE,EAAUtd,sBAAsBigF,EAClC,CAPA,GAQA38F,IACO,KACL,IAAI68F;AACJrB,EAAU50I,SAASisI,IACjBoI,GAAkBpI,EAASzsD,oBAAoB,SAAUpmC,GACzDk7F,GAAkBrI,EAASzsD,oBAAoB,SAAUpmC,EAAO,IAErD,MAAby7F,GAAqBA,IACkB,OAAtCoB,EAAmBN,IAA2BM,EAAiBriH,aAChE+hH,EAAiB,KACbjB,GACF3+E,qBAAqBqd,GAG3B,CAnEA,CAkkB6C/kB,EAAIuiF,EAAgBiB,EAAazxI,KAAKiB,MACjF,CACAwwI,eACE,MAAMxjF,GAAEA,EAAEuiF,eAAEA,EAAc5yB,gBAAEA,GAAoB38G;AA94CnC,IAASkE,EAi5BF2wI,EAACvqC,EAAWs7B,EAAU1hI,KAC5C,MAAM+9B,EAAwB,IAAIllB,IAC5B+3H,EAAgBvQ,EAAe,CACnC2B,aACChiI,GACG6wI,EAAoBtQ,EAAcF,EAAe,CAAC,EAAGuQ,EAAc5O,UAAW,CAClFx9G,GAAIuZ;AAEN,MA1qCwBs7E,OAAOjT,EAAWs7B,EAAUhtD,KACpD,MAAMwwB,UACJA,EAAY,SAAQpqC,SACpBA,EAAW,WAAUg2E,WACrBA,EAAa,GACb9O,SAAUC,GACRvtD,EACEq8D,EAAkBD,EAAWpqI,OAAOuS,SACpCwoH,QAAgC,MAAnBQ,EAAUgF,aAAyBhF,EAAUgF,MAAMvF;AACtE,IAAIn0B,QAAc00B,EAAU2E,gBAAgB,CAC1CxgC,YACAs7B,WACA5mE,cAEEt0B,EACFA,EAACG,EACDA,GACE66F,EAA2Bj0B,EAAOrI,EAAWu8B,GAC7CuP,EAAoB9rC,EACpBqiC,EAAiB,CAAC,EAClB0J,EAAa;AACjB,IAAK,IAAIl0I,EAAI,EAAGA,EAAIg0I,EAAgB11I,OAAQ0B,IAAK,CAC/C,MAAMrC,KACJA,EAAIM,GACJA,GACE+1I,EAAgBh0I,IAElBypC,EAAG0qG,IACHvqG,EAAQ9/B,KACRA,EAAIwuB,MACJA,SACQr6B,EAAG,CACXwrC,IACAG,IACAwqG,iBAAkBjsC,EAClBA,UAAW8rC,EACXl2E,WACAysE,iBACAh6B,QACAy0B,SAAUC,EACV7yD,SAAU,CACRg3B,YACAs7B;AAGJl7F,EAAa,MAAT0qG,EAAgBA,EAAQ1qG,EAC5BG,EAAa,MAATyqG,EAAgBA,EAAQzqG,EAC5B4gG,EAAiBhH,EAAcF,EAAe,CAAC,EAAGkH,GAAiB,CACjExqI,CAACrC,GAAO2lI,EAAeA,EAAe,CAAC,EAAGkH,EAAe7sI,IAAQmM,KAE/DwuB,GAAS47G,GAAc,KACzBA,IACqB,iBAAV57G,IACLA,EAAM6vE,YACR8rC,EAAoB37G,EAAM6vE,WAExB7vE,EAAMk4E,QACRA,OAAQl4E,EAAMk4E,YAAuB00B,EAAU2E,gBAAgB,CAC7DxgC,YACAs7B,WACA5mE,aACGzlC,EAAMk4E,SAGX/mE,IACAG,KACE66F,EAA2Bj0B,EAAOyjC,EAAmBvP,KAE3D1kI,GAAK,EAET,CACA,MAAO,CACLypC,IACAG,IACAu+D,UAAW8rC,EACXl2E,WACAysE,iBACD,EA7EuBluB,CA0qCCjT,EAAWs7B,EAAUnB,EAAcF,EAAe,CAAC,EAAGuQ,GAAgB,CAC7F5O,SAAU6O,IACT,EAVmBF,CAggBJ7nF,EAAIuiF,EAAgB,CAClCvwE,SAAU29C,EACVq4B,WAAY,EAn5CQ9wI,EA+4CA,WA94CpBA,IACFA,EAAU,GAEL,CACLtF,KAAM,SACNsF,UACAq5G,SAAS5iF,GACP,IAAI46G,EAAuBC;AAC3B,MAAM9qG,EACJA,EAACG,EACDA,EAACu+D,UACDA,EAASqiC,eACTA,GACE9wG,EACE86G,QApDZl4B,eAAoC5iF,EAAOz2B,GACzC,MAAMklG,UACJA,EACA88B,SAAUC,EAAS7yD,SACnBA,GACE34C,EACEgrG,QAAgC,MAAnBQ,EAAUgF,aAAyBhF,EAAUgF,MAAM73D,EAASsyD,WACzE7yB,EAAOoyB,EAAQ/7B,GACfuiC,EAAYvG,EAAah8B,GACzB8O,EAAwC,MAA3BstB,EAAYp8B,GACzBssC,EAAgBlP,EAAYr/H,IAAI4rG,IAAS,EAAI,EAC7C4iC,EAAiBhQ,GAAOztB,GAAc,EAAI,EAC1C/zF,EAAW+gH,EAAShhI,EAASy2B;AACnC,IAAI81E,SACFA,EAAQi7B,UACRA,EAAS5F,cACTA,GACsB,iBAAb3hH,EAAwB,CACjCssF,SAAUtsF,EACVunH,UAAW,EACX5F,cAAe,MACb,CACFr1B,SAAUtsF,EAASssF,UAAY,EAC/Bi7B,UAAWvnH,EAASunH,WAAa,EACjC5F,cAAe3hH,EAAS2hH;AAK1B,OAHI6F,GAAsC,iBAAlB7F,IACtB4F,EAA0B,QAAdC,GAAuC,EAAjB7F,EAAqBA,GAElD5tB,EAAa,CAClBxtE,EAAGghG,EAAYiK,EACf9qG,EAAG4lE,EAAWilC,GACZ,CACFhrG,EAAG+lE,EAAWilC,EACd7qG,EAAG6gG,EAAYiK,EAEnB,CApCAp4B,CAoDoD5iF,EAAOz2B;AACrD,OAAIklG,KAAkE,OAAlDmsC,EAAwB9J,EAAenkH,eAA2BiuH,EAAsBnsC,YAAgE,OAAjDosC,EAAwB/J,EAAephC,QAAkBmrC,EAAsBI,gBACjM,CAAC,EAEH,CACLlrG,EAAGA,EAAI+qG,EAAW/qG,EAClBG,EAAGA,EAAI4qG,EAAW5qG,EAClB9/B,KAAM05H,EAAcF,EAAe,CAAC,EAAGkR,GAAa,CAClDrsC,cAGN,IA23CIiiC,GAAc,CACZ3zB,kBAAmB,CAAC,MAAO,YAE7Bv0G,GAAK,CACH3D,MAAKq2I,GAA8B,IAA7BpkC,MAAEA,EAAKi8B,gBAAEA,GAAiBmI;AAC9Bp3I,OAAOkD,OAAO4tI,EAAe39D,MAAO,CAClCrnC,MAAQ,GAAEknE,EAAMnH,UAAU//D,UAC1BurG,UAAY,GAAE9oI,KAAKsqC,IAAIo2F,EAbX,EACH,UAcb,IAEFzkI,GAAM,CAAEsoG,QAjBU,OAmBnBr0E,MAAK64G,IAAe,IAAdrrG,EAAEA,EAACG,EAAEA,GAAGkrG;AACft3I,OAAOkD,OAAO4tI,EAAe39D,MAAO,CAClChnC,KAAO,GAAEF,MACTK,IAAM,GAAEF,OACR,GAEN,CACAmrG,cACEh2I,KAAKuvI,eAAiBvvI,KAAKuvI,gBAAkB5yH,SAASuF,cAAckrE,EAAQhjB,oBAAoB,mBAChGpqE,KAAKuvI,eAAe/0H,GAAKxa,KAAKsgF,UAC9BtgF,KAAKuvI,eAAe39D,MAAMnnC,SAAWzqC,KAAK28G,eAC5C,CACAs5B,WACEj2I,KAAKmlB,KAAOnlB,KAAKgtD,GAAGn9B,cAAc,iBAClC7vB,KAAKmlB,KAAKm6F,eACVt/G,KAAKmlB,KAAKqxG,YAAcx2H,KAAKw2H,YAC7Bx2H,KAAKmlB,KAAKpQ,iBAAiB,gCAAiC/U,KAAKowI,oBAAoBrxI,KAAKiB,OAC1FA,KAAKmlB,KAAKpQ,iBAAiB,0BAA2B/U,KAAKuwI,wBAAwBxxI,KAAKiB,OACxFA,KAAKmlB,KAAKpQ,iBAAiB,UAAW/U,KAAKwyI,kBAAkBzzI,KAAKiB,OAClEA,KAAKmlB,KAAKpQ,iBAAiB,QAAS/U,KAAK+yI,gBAAgBh0I,KAAKiB,MAChE,CACAyxI,WACEzxI,KAAKkvI,KAAOlvI,KAAKmlB,KAAKigB,iBAAkB,GAAEgoD,EAAQhjB,oBAAoB,iBACtEpqE,KAAKkvI,KAAKvwI,SAAS6yF,IACZA,EAAIh3E,KACPg3E,EAAIh3E,GAAM,cAAaw1D,EAAGA,OAC5B,IAEFhwE,KAAKquI,SAAW,IAAIruI,KAAKkvI,MAAM5tI,KAAKkwF,IAClC,MAAM7tD,EAAO6tD,EAAI/tD;AACjB,OAAOE,EAAOA,EAAKD,OAAOT,cAAgB,EAAE,IAC3Cr4B,QAAQ+4B,GAAkB,KAATA,GACtB,CACA+tG,oBACE1xI,KAAKmlB,KAAK8kF,gBAAgB,QAC1BjqG,KAAKuvI,eAAej0G,OAAOt7B,KAAKmlB,KAClC,CACA0sH,mBACE7xI,KAAKmlB,KAAKo7D,aAAa,OAAQ,QAC/BvgF,KAAKgtD,GAAG1xB,OAAOt7B,KAAKmlB,KACtB,CAEA+wH,6BACE,MAAMC,EAAmB,IAAIn2I,KAAKgtD,GAAG2mB,UAAU/oE,iBAAgBykB,GAC7D,OAAOA,EAAMzQ,QAAQ,6BACvB,IACMw3H,EAAoB,IAAIp2I,KAAKgtD,GAAG2mB,UAAU/oE,iBAAgBykB,GAC9D,OAAOA,EAAMzQ,QAAQ,8BACvB;AACA5e,KAAK0vI,oBAAsByG,EAAiB52I,OAAS,EACrDS,KAAK2vI,qBAAuByG,EAAkB72I,OAAS,CACzD,CACAy2F,oBACEh2F,KAAKk2I,6BACLl2I,KAAKsgF,UAAYtgF,KAAKsgF,WAAc,WAAUtQ,EAAGA,MACnD,CACAosD,mBACEp8H,KAAKi2I,WACLj2I,KAAKyxI,WACLzxI,KAAKg2I,cACLh2I,KAAKuxI,mBACLvxI,KAAK4vI,gBACP,CACA15C,sBACE,MAAMi5C,aAAEA,EAAYhqH,KAAEA,GAASnlB;AAC3BmlB,GAAQgqH,GACVhqH,EAAK8kF,gBAAgB,OAEzB,CACA6T,uBACE99G,KAAKywI,WACP,CACAr6C,SACE,MAAMigD,EAAWr2I,KAAK6qD,SAAW,KAAO;AACxC,OAAOn3C,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAiBK,KAAM,WAAY,aAAc2R,EAAK7nB,sBAAsB/gF,KAAKgtD,IAAK,gBAAiBhtD,KAAKmvI,aAAazlI,WAAY,gBAAiB1J,KAAKsgF,UAAW,wBAAyBtgF,KAAK+uI,iBAAmB,EAAI/uI,KAAKkvI,KAAKlvI,KAAK+uI,iBAAiBv0H,GAAK,KAAM,gBAAiBxa,KAAKyrF,SAAS/hF,WAAY2sI,WAAUv/C,QAAU52F,IACxZF,KAAK6yI,mBAAmB3yI,IACvBm+G,QAASA,KACVr+G,KAAK4yI,eACJx0B,UAAYl+G,IACbF,KAAK+xI,qBAAqB7xI,KACvBwT,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,oBAAqB2/G,aAAcA,IAAMv+G,KAAKk2I,+BAAiCxiI,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,wBAAyB,CACnR,wBAAyBnvE,KAAK0vI,oBAC9B,yBAA0B1vI,KAAK2vI,wBAC3Bj8H,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,uBAAyB8U,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,eAAiB52F,KAAKkb,eAAgBxH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAW8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,qBAAsB2/G,aAAcA,IAAMv+G,KAAKk2I,+BAAiCxiI,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,QAASrsD,MAAO,KAAMC,OAAQ,IAAKizF,QAAS,WAAYC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,sKAAuKqjF,KAAM,WACv9B,CACI3wE,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLhjG,MAAS,CAAC,gBACVyxH,YAAe,CAAC,sBAChBuY,gBAAmB,CAAC,0BAExB;AAIF,OAFAd,GAAar8D,MA1lBY,+qXA2lBzBiyD,GAAuByS,cAAgBrI,GAChCpK,EACR,CAEA,IAEI0S,GAgYAC,GA8KAC,GAyFAC,GAgIAC,GA4BAC,GA8SAC,GAgEAC,GAgHAC,GAqIAC,GAyYAC,GAk4EAC,GAnpIAC,GAAwB,CAAC,EAgYzBC,GAA0B,CAAC,EA8K3BC,GAAsB,CAAC,EAyFvBC,GAA0B,CAAC,EAgI3BC,GAA2B,CAAC,EA4B5BC,GAAwB,CAAC,EA8SzBC,GAA4B,CAAC,EAgE7BC,GAA4B,CAAC,EAgH7BC,GAA8B,CAAC,EAqI/BC,GAA2B,CAAC,EAuY5BC,GAA0B,CAAC,EAE3BC,GAAgB,CAAC;AAIrB,SAASC,KACR,GAAId,GAA0B,OAAOa;AACrCb,GAA2B;AAC3B,MAAMvvB,EAAYtE,KACZ1vG,EAAQ23E,KACR+B,EAAUwK;AAChB,SAASj2F,EAAOC,EAAQP,GACtB,GAAc,MAAVO,EACF,MAAM,IAAI0uE,UAAU;AAEtB,IAAK,IAAItkE,KAAY3K,EACf5C,OAAOsD,UAAUC,eAAeC,KAAKZ,EAAQ2K,KAC/CpK,EAAOoK,GAAY3K,EAAO2K;AAG9B,OAAOpK,CACT,CACA,SAASu1E,EAAkB/G,EAAKsgC,IACnB,MAAPA,GAAeA,EAAMtgC,EAAI7wE,UAAQmxG,EAAMtgC,EAAI7wE;AAC/C,IAAK,IAAI0B,EAAI,EAAG+2I,EAAO,IAAIr3I,MAAM+vG,GAAMzvG,EAAIyvG,EAAKzvG,IAAK+2I,EAAK/2I,GAAKmvE,EAAInvE;AACnE,OAAO+2I,CACT,CASA,SAASC,EAA2BhwH,EAAGiwH,GACrC,IAAIC,EAAuB,oBAAX9gE,QAA0BpvD,EAAEovD,OAAOiD,WAAaryD,EAAE;AAClE,IAAKkwH,EAAI,CACP,GAAIx3I,MAAMiG,QAAQqhB,KAAOkwH,EAX7B,SAAqClwH,EAAGsxF,GACtC,GAAKtxF,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAOkvD,EAAkBlvD,EAAGsxF;AACvD,IAAIh6F,EAAI9gB,OAAOsD,UAAU2H,SAASzH,KAAKgmB,GAAGvmB,MAAM,GAAI;AAEpD,MADU,WAAN6d,GAAkB0I,EAAEuD,cAAajM,EAAI0I,EAAEuD,YAAY5sB,MAC7C,QAAN2gB,GAAqB,QAANA,EAAoB5e,MAAMC,KAAKqnB,GACxC,cAAN1I,GAAqB,2CAA2Cxc,KAAKwc,GAAW43D,EAAkBlvD,EAAGsxF,SAL3F,CAMhB,CAPA,CAW8DtxF,KAAOiwH,EAAgB,CAC3EC,IAAIlwH,EAAIkwH;AACZ,IAAIl3I,EAAI,EACJm3I,EAAI,WACR;AACA,MAAO,CACLx4G,EAAGw4G,EACH74H,EAAG,WACD,OAAIte,GAAKgnB,EAAE1oB,OAAe,CACxB2+B,SAEK,CACLA,QACAn5B,MAAOkjB,EAAEhnB,KAEb,EACAf,EAAG,SAAW0oB,GACZ,MAAMA,CACR,EACApe,EAAG4tI,EAEP,CACA,MAAM,IAAI9nE,UAAU,wIACtB,CACA,IAA6C7wE,EAAzC44I,KAAyBC;AAC7B,MAAO,CACL14G,EAAG,WACDu4G,EAAKA,EAAGl2I,KAAKgmB,EACf,EACA1I,EAAG,WACD,IAAIg5H,EAAOJ,EAAGn4H;AAEd,OADAq4H,EAAmBE,EAAKr6G,KACjBq6G,CACT,EACAr4I,EAAG,SAAWs4I,GACZF,KACA74I,EAAM+4I,CACR,EACAhuI,EAAG,WACD,IACO6tI,GAAoC,MAAhBF,EAAWM,QAAWN,EAAWM,QAG5D,CAFC,QACC,GAAIH,EAAQ,MAAM74I,CACpB,CACF,EAEJ,CACA,SAASi5I,EAAuBj2I,GAC9B,YAAIA,EACF,MAAM,IAAIk2I,eAAe;AAE3B,OAAOl2I,CACT,CACA,SAASm2I,EAAgB3wH,EAAGsyB,GAK1B,OAJAq+F,EAAkBn6I,OAAOo6I,eAAiBp6I,OAAOo6I,eAAe95I,OAAS,SAA0BwsF,EAAIutD,GAErG,OADAvtD,EAAGwtD,UAAYD,EACRvtD,CACT,GACuBtjE,EAAGsyB,EAC5B,CACA,SAASy+F,EAAUC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI5oE,UAAU;AAEtB2oE,EAASl3I,UAAYtD,OAAO06I,OAAOD,GAAcA,EAAWn3I,UAAW,CACrEypB,YAAa,CACXzmB,MAAOk0I,EACP1hE,YACAj1E,mBAGJ7D,OAAO2D,eAAe62I,EAAU,YAAa,CAC3C1hE,cAEE2hE,GAAYN,EAAgBK,EAAUC,EAC5C,CACA,SAASE,EAAgBnxH,GAIvB,OAHAmxH,EAAkB36I,OAAOo6I,eAAiBp6I,OAAO+G,eAAezG,OAAS,SAA0BwsF,GACjG,OAAOA,EAAGwtD,WAAat6I,OAAO+G,eAAe+lF,EAC/C,GACuBtjE,EACzB,CACA,SAASoxH,IACP,IACE,IAAIp/H,GAAKkD,QAAQpb,UAAU2iF,QAAQziF,KAAKsoE,QAAQ+uE,UAAUn8H,QAAS,eACnE,IAEF,CADE,MAAOo8H,GACT,CACA,OAAQF,EAA4B,WAClC,QAASp/H,CACX,IACF,CASA,SAASu/H,EAAaC,GACpB,IAAIC,EAA4BL;AAChC,OAAO,WACL,IAAsC9nI,EAAlCooI,EAAQP,EAAgBK;AAC5B,GAAIC,EAA2B,CAC7B,IAAIE,EAAYR,EAAgBp5I,MAAMwrB;AACtCja,EAASg5D,QAAQ+uE,UAAUK,EAAOr6I,UAAWs6I,EAC/C,MACEroI,EAASooI,EAAMn6I,MAAMQ,KAAMV;AAE7B,OAlBJ,SAAoCmD,EAAMR,GACxC,GAAIA,IAAiC,WAAxByR,EAAM43E,QAAQrpF,IAAsC,mBAATA,GACtD,OAAOA;AACF,YAAIA,EACT,MAAM,IAAIquE,UAAU;AAEtB,OAAOooE,EAAuBj2I,EAChC,CAPA,CAkBsCzC,KAAMuR,EAC1C,CACF,CACA,SAASsoI,EAAgBrlC,EAAUslC,GACjC,KAAMtlC,aAAoBslC,GACxB,MAAM,IAAIxpE,UAAU,oCAExB,CAWA,SAASypE,EAAc9/H,GACrB,IAAIhZ,EAXN,SAAqBgZ,EAAGzR,GACtB,GAAI,UAAYkL,EAAM43E,QAAQrxE,KAAOA,EAAG,OAAOA;AAC/C,IAAI/Z,EAAI+Z,EAAEo9D,OAAOC;AACjB,YAAep3E,EAAG,CAChB,IAAIe,EAAIf,EAAE+B,KAAKgY,EAOM;AANrB,GAAI,UAAYvG,EAAM43E,QAAQrqF,GAAI,OAAOA;AACzC,MAAM,IAAIqvE,UAAU,+CACtB,CACA,OAAyB1gE,OAAiBqK,EAC5C,CATA,CAWsBA;AACpB,MAAO,UAAYvG,EAAM43E,QAAQrqF,GAAKA,EAAIA,EAAI,EAChD,CAUA,SAAS+4I,EAAaF,EAAaG,EAAYC,GAK7C,OAJID,GAVN,SAA2Br4I,EAAQu4I,GACjC,IAAK,IAAIl5I,EAAI,EAAGA,EAAIk5I,EAAM56I,OAAQ0B,IAAK,CACrC,IAAIm5I,EAAaD,EAAMl5I;AACvBm5I,EAAW5wE,WAAa4wE,EAAW5wE,eACnC4wE,EAAW93I,gBACP,UAAW83I,IAAYA,EAAW7iE,aACtC94E,OAAO2D,eAAeR,EAAQm4I,EAAcK,EAAW74I,KAAM64I,EAC/D,CACF,CARA,CAUoCN,EAAY/3I,UAAWk4I,GACzDx7I,OAAO2D,eAAe03I,EAAa,YAAa,CAC9CviE,cAEKuiE,CACT,CACA,SAAS1iE,EAAgBktD,EAAK/iI,EAAKwD,GAYjC,OAXAxD,EAAMw4I,EAAcx4I,MACT+iI,EACT7lI,OAAO2D,eAAekiI,EAAK/iI,EAAK,CAC9BwD,QACAykE,cACAlnE,gBACAi1E,cAGF+sD,EAAI/iI,GAAOwD,EAENu/H,CACT,CACA,IACI+V,EAAyB,WAC3B,SAASC,IACPT,EAAgB75I,KAAMs6I,GACtBljE,EAAgBp3E,KAAM,mBACtBo3E,EAAgBp3E,KAAM,cAAe,EACvC,CAOA,OANAg6I,EAAaM,EAAS,CAAC,CACrB/4I,IAAK,WACLwD,MAAO,SAAkBw1I,EAAUl+C,GACjC,QACF,KAEKi+C,CACT,CAb6B,GAczBE,EAA8B,SAASC,GACzCzB,EAAU0B,EAAcD;AACxB,IAAIE,EAASnB,EAAakB;AAC1B,SAASA,EAAa31I,EAAO61I,EAAeC,EAAUC,EAAUC,GAC9D,IAAItwI;AAUJ,OATAovI,EAAgB75I,KAAM06I,IACtBjwI,EAAQkwI,EAAO14I,KAAKjC,OACd+E,MAAQA,EACd0F,EAAMmwI,cAAgBA,EACtBnwI,EAAMowI,SAAWA,EACjBpwI,EAAMqwI,SAAWA,EACbC,IACFtwI,EAAMswI,YAAcA,GAEftwI,CACT,CAYA,OAXAuvI,EAAaU,EAAc,CAAC,CAC1Bn5I,IAAK,WACLwD,MAAO,SAAkB+5F,EAAS56F,GAChC,OAAOlE,KAAK46I,cAAc97C,EAAS9+F,KAAK+E,MAAOb,EACjD,GACC,CACD3C,IAAK,MACLwD,MAAO,SAAa+5F,EAASr3F,EAAOvD,GAClC,OAAOlE,KAAK66I,SAAS/7C,EAASr3F,EAAOzH,KAAK+E,MAAOb,EACnD,KAEKw2I,CACT,CA5BkC,CA4BhCL,GACEW,EAA6C,SAASC,GACxDjC,EAAUkC,EAA6BD;AACvC,IAAIE,EAAU3B,EAAa0B;AAC3B,SAASA,IACP,IAAIE;AACJvB,EAAgB75I,KAAMk7I;AACtB,IAAK,IAAIjpE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhB0C,EAASD,EAAQl5I,KAAKzC,MAAM27I,EAAS,CAACn7I,MAAMyJ,OAAOrK,KACH,WAtDvB,IAuDzBg4E,EAAgBshE,EAAuB0C,GAAS,eAAgB,GACzDA,CACT,CAaA,OAZApB,EAAakB,EAA6B,CAAC,CACzC35I,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,GACxB,GAAIA,EAAM4zI,eACR,OAAOn/H;AAET,IAAIo/H,EAAgC,IAAIh0I,KAAK;AAG7C,OAFAg0I,EAAcrtD,YAAY/xE,EAAKi8E,iBAAkBj8E,EAAK4kF,cAAe5kF,EAAK87E,cAC1EsjD,EAAc7uD,SAASvwE,EAAK2lF,cAAe3lF,EAAKimF,gBAAiBjmF,EAAKkmF,gBAAiBlmF,EAAKsmF,sBACrF84C,CACT,KAEKJ,CACT,CA3BiD,CA2B/Cb,GACEkB,EAAyB,WAC3B,SAASC,IACP3B,EAAgB75I,KAAMw7I,GACtBpkE,EAAgBp3E,KAAM,6BACtBo3E,EAAgBp3E,KAAM,mBACtBo3E,EAAgBp3E,KAAM,qBACxB,CAmBA,OAlBAg6I,EAAawB,EAAS,CAAC,CACrBj6I,IAAK,MACLwD,MAAO,SAAaohG,EAAY/H,EAAOr0F,EAAO7F,GAC5C,IAAIqN,EAASvR,KAAKwY,MAAM2tF,EAAY/H,EAAOr0F,EAAO7F;AAClD,OAAKqN,EAGE,CACLkqI,OAAQ,IAAIjB,EAAYjpI,EAAOxM,MAAO/E,KAAK8sC,SAAU9sC,KAAKkK,IAAKlK,KAAK86I,SAAU96I,KAAK+6I,aACnFl9C,KAAMtsF,EAAOssF,MAJN,IAMX,GACC,CACDt8F,IAAK,WACLwD,MAAO,SAAkBw1I,EAAUlxF,EAAQgzC,GACzC,QACF,KAEKm/C,CACT,CA1B6B,GA2BzBE,EAA4B,SAASC,GACvC3C,EAAU4C,EAAYD;AACtB,IAAIhB,EAASnB,EAAaoC;AAC1B,SAASA,IACP,IAAInxI;AACJovI,EAAgB75I,KAAM47I;AACtB,IAAK,IAAI3pE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAwCA,OAvCAuvI,EAAa4B,EAAY,CAAC,CACxBr6I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOr0F,EAAMwyF,IAAI4J,EAAY,CAC3B57D,MAAO,iBACHxgC,EAAMwyF,IAAI4J,EAAY,CAC1B57D,MAAO;AAGX,IAAK,QACH,OAAOxgC,EAAMwyF,IAAI4J,EAAY,CAC3B57D,MAAO;AAIX,QACE,OAAOxgC,EAAMwyF,IAAI4J,EAAY,CAC3B57D,MAAO,UACHxgC,EAAMwyF,IAAI4J,EAAY,CAC1B57D,MAAO,iBACHxgC,EAAMwyF,IAAI4J,EAAY,CAC1B57D,MAAO,WAGf,GACC,CACDhpC,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,EAAO1C,GAI/B,OAHA0C,EAAM80F,IAAMx3F,EACZmX,EAAKm8E,eAAetzF,EAAO,EAAG,GAC9BmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK0/H,CACT,CAtDgC,CAsD9BL,GACEM,EACK,iBADLA,EAGI,qBAHJA,EAKS,kCALTA,EAOI,qBAPJA,EASO,qBATPA,EAWO,qBAXPA,EAaO,iBAbPA,EAeO,iBAfPA,EAiBM,YAjBNA,EAmBM,YAnBNA,EAqBW,MArBXA,EAuBS,WAvBTA,EAyBW,WAzBXA,EA2BU,WA3BVA,EA6Be,SA7BfA,EA8BiB,QA9BjBA,EAgCe,aAhCfA,EAkCiB,aAlCjBA,EAoCgB,aAGhBC,EACoB,2BADpBA,EAEK,0BAFLA,EAGoB,oCAHpBA,EAIQ,2BAJRA,EAKuB;AAE3B,SAASC,EAASC,EAAeC,GAC/B,OAAKD,EAGE,CACLj3I,MAAOk3I,EAAMD,EAAcj3I,OAC3B84F,KAAMm+C,EAAcn+C,MAJbm+C,CAMX,CACA,SAASE,EAAoBljD,EAASmN,GACpC,IAAI7M,EAAc6M,EAAWp8F,MAAMivF;AACnC,OAAKM,EAGE,CACLv0F,MAAOoW,SAASm+E,EAAY,GAAI,IAChCuE,KAAMsI,EAAWzkG,MAAM43F,EAAY,GAAG/5F,SAJ/B,IAMX,CACA,SAAS48I,EAAqBnjD,EAASmN,GACrC,IAAI7M,EAAc6M,EAAWp8F,MAAMivF;AACnC,IAAKM,EACH,OAAO;AAET,GAAuB,MAAnBA,EAAY,GACd,MAAO,CACLv0F,MAAO,EACP84F,KAAMsI,EAAWzkG,MAAM;AAG3B,IAAIy+F,EAA0B,MAAnB7G,EAAY,GAAa,GAAK,EACrCwI,EAAQxI,EAAY,GAAKn+E,SAASm+E,EAAY,GAAI,IAAM,EACxDiK,EAAUjK,EAAY,GAAKn+E,SAASm+E,EAAY,GAAI,IAAM,EAC1DsN,EAAUtN,EAAY,GAAKn+E,SAASm+E,EAAY,GAAI,IAAM;AAC9D,MAAO,CACLv0F,MAAOo7F,GAAQ2B,EAAQ1U,EAAQqS,mBAAqB8D,EAAUnW,EAAQsS,qBAAuBkH,EAAUxZ,EAAQuS,sBAC/G9B,KAAMsI,EAAWzkG,MAAM43F,EAAY,GAAG/5F,QAE1C,CACA,SAAS68I,EAAqBj2C,GAC5B,OAAO+1C,EAAoBL,EAAiC11C,EAC9D,CACA,SAASk2C,EAAa98H,EAAG4mF,GACvB,OAAQ5mF,GACN,KAAK,EACH,OAAO28H,EAAoBL,EAA6B11C;AAC1D,KAAK,EACH,OAAO+1C,EAAoBL,EAA2B11C;AACxD,KAAK,EACH,OAAO+1C,EAAoBL,EAA6B11C;AAC1D,KAAK,EACH,OAAO+1C,EAAoBL,EAA4B11C;AACzD,QACE,OAAO+1C,EAAoB,IAAI10I,OAAO,UAAY+X,EAAI,KAAM4mF,GAElE,CACA,SAASm2C,EAAmB/8H,EAAG4mF,GAC7B,OAAQ5mF,GACN,KAAK,EACH,OAAO28H,EAAoBL,EAAmC11C;AAChE,KAAK,EACH,OAAO+1C,EAAoBL,EAAiC11C;AAC9D,KAAK,EACH,OAAO+1C,EAAoBL,EAAmC11C;AAChE,KAAK,EACH,OAAO+1C,EAAoBL,EAAkC11C;AAC/D,QACE,OAAO+1C,EAAoB,IAAI10I,OAAO,YAAc+X,EAAI,KAAM4mF,GAEpE,CACA,SAASo2C,EAAqB3/C,GAC5B,OAAQA,GACN,IAAK,UACH,OAAO;AACT,IAAK,UACH,OAAO;AACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO;AAIT,QACE,OAAO,EAEb,CACA,SAAS4/C,EAAsBC,EAAc/mD,GAC3C,IAEInkF,EAFAmrI,EAAchnD,EAAc,EAC5BinD,EAAiBD,EAAchnD,EAAc,EAAIA;AAErD,GAAIinD,GAAkB,GACpBprI,EAASkrI,GAAgB;IACpB,CACL,IAAIG,EAAWD,EAAiB;AAGhCprI,EAASkrI,EAF0C,IAA7BzvI,KAAKqa,MAAMu1H,EAAW,MACpBH,GAAgBG,EAAW,IACY,IAAM,EACvE,CACA,OAAOF,EAAcnrI,EAAS,EAAIA,CACpC,CACA,SAASmzF,EAAgBnV,GACvB,OAAOA,EAAO,KAAQ,GAAKA,EAAO,GAAM,GAAKA,EAAO,KAAQ,CAC9D,CACA,IAAIstD,GAA6B,SAASlB,GACxC3C,EAAU8D,EAAanB;AACvB,IAAIhB,EAASnB,EAAasD;AAC1B,SAASA,IACP,IAAIryI;AACJovI,EAAgB75I,KAAM88I;AACtB,IAAK,IAAI7qE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC5GA,CACT,CA0CA,OAzCAuvI,EAAa8C,EAAa,CAAC,CACzBv7I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,IAAI6zF,EAAgB,SAAwBrO,GAC1C,MAAO,CACLA,OACAwtD,eAA0B,OAAV3+C,EAEpB;AACA,OAAQA,GACN,IAAK,IACH,OAAO29C,EAASM,EAAa,EAAGl2C,GAAavI;AAC/C,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,SACJ3C;AACN,QACE,OAAOm+C,EAASM,EAAaj+C,EAAM7+F,OAAQ4mG,GAAavI,GAE9D,GACC,CACDr8F,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,EAAMg4I,gBAAkBh4I,EAAMwqF,KAAO,CAC9C,GACC,CACDhuF,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,EAAO1C,GAC/B,IAAI2wF,EAAcx5E,EAAKi8E;AACvB,GAAIpzF,EAAMg4I,eAAgB,CACxB,IAAIC,EAAyBR,EAAsBz3I,EAAMwqF,KAAMmG;AAG/D,OAFAx5E,EAAKm8E,eAAe2kD,EAAwB,EAAG,GAC/C9gI,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,CACA,IAAIqzE,EAAS,QAAS9nF,GAAwB,IAAdA,EAAM80F,IAAyB,EAAIx3F,EAAMwqF,KAAvBxqF,EAAMwqF;AAGxD,OAFArzE,EAAKm8E,eAAe9I,EAAM,EAAG,GAC7BrzE,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK4gI,CACT,CAxDiC,CAwD/BvB,GACE0B,GAAsC,SAAStB,GACjD3C,EAAUkE,EAAsBvB;AAChC,IAAIhB,EAASnB,EAAa0D;AAC1B,SAASA,IACP,IAAIzyI;AACJovI,EAAgB75I,KAAMk9I;AACtB,IAAK,IAAIjrE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0CA,OAzCAuvI,EAAakD,EAAsB,CAAC,CAClC37I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,IAAI6zF,EAAgB,SAAwBrO,GAC1C,MAAO,CACLA,OACAwtD,eAA0B,OAAV3+C,EAEpB;AACA,OAAQA,GACN,IAAK,IACH,OAAO29C,EAASM,EAAa,EAAGl2C,GAAavI;AAC/C,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,SACJ3C;AACN,QACE,OAAOm+C,EAASM,EAAaj+C,EAAM7+F,OAAQ4mG,GAAavI,GAE9D,GACC,CACDr8F,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,EAAMg4I,gBAAkBh4I,EAAMwqF,KAAO,CAC9C,GACC,CACDhuF,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,EAAO1C,EAAOb,GACtC,IAAIwxF,EAActI,EAAQsL,eAAex8E,EAAMhY;AAC/C,GAAIa,EAAMg4I,eAAgB,CACxB,IAAIC,EAAyBR,EAAsBz3I,EAAMwqF,KAAMmG;AAG/D,OAFAx5E,EAAKm8E,eAAe2kD,EAAwB,EAAG94I,EAAQ00F,uBACvD18E,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB7K,EAAQqL,eAAev8E,EAAMhY,EACtC,CACA,IAAIqrF,EAAS,QAAS9nF,GAAwB,IAAdA,EAAM80F,IAAyB,EAAIx3F,EAAMwqF,KAAvBxqF,EAAMwqF;AAGxD,OAFArzE,EAAKm8E,eAAe9I,EAAM,EAAGrrF,EAAQ00F,uBACrC18E,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB7K,EAAQqL,eAAev8E,EAAMhY,EACtC,KAEKg5I,CACT,CAxD0C,CAwDxC3B,GACE4B,GAAoC,SAASxB,GAC/C3C,EAAUoE,EAAoBzB;AAC9B,IAAIhB,EAASnB,EAAa4D;AAC1B,SAASA,IACP,IAAI3yI;AACJovI,EAAgB75I,KAAMo9I;AACtB,IAAK,IAAInrE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAkBA,OAjBAuvI,EAAaoD,EAAoB,CAAC,CAChC77I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,GACjC,OACSk+C,EADK,MAAVl+C,EACwB,EAEFA,EAAM7+F,OAFD4mG,EAGjC,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAa25F,EAAO2+C,EAAQt4I,GACjC,IAAIu4I,EAAkC,IAAIh2I,KAAK;AAG/C,OAFAg2I,EAAgBjlD,eAAetzF,EAAO,EAAG,GACzCu4I,EAAgBrlD,YAAY,EAAG,EAAG,EAAG,GAC9B7K,EAAQyK,kBAAkBylD,EACnC,KAEKF,CACT,CAhCwC,CAgCtC7B,GACEgC,GAAqC,SAAS5B,GAChD3C,EAAUwE,EAAqB7B;AAC/B,IAAIhB,EAASnB,EAAagE;AAC1B,SAASA,IACP,IAAI/yI;AACJovI,EAAgB75I,KAAMw9I;AACtB,IAAK,IAAIvrE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACjHA,CACT,CAiBA,OAhBAuvI,EAAawD,EAAqB,CAAC,CACjCj8I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,GACjC,OACSk+C,EADK,MAAVl+C,EACwB,EAEFA,EAAM7+F,OAFD4mG,EAGjC,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKm8E,eAAetzF,EAAO,EAAG,GAC9BmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKshI,CACT,CA/ByC,CA+BvCjC,GACEkC,GAAgC,SAAS9B,GAC3C3C,EAAU0E,EAAgB/B;AAC1B,IAAIhB,EAASnB,EAAakE;AAC1B,SAASA,IACP,IAAIjzI;AACJovI,EAAgB75I,KAAM09I;AACtB,IAAK,IAAIzrE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CAyDA,OAxDAuvI,EAAa0D,EAAgB,CAAC,CAC5Bn8I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GAEN,IAAK,IACL,IAAK,KACH,OAAOi+C,EAAaj+C,EAAM7+F,OAAQ4mG;AAEpC,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAGV,IAAK,MACH,OAAOx2F,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKolF,YAA0B,GAAbv8F,EAAQ,GAAQ,GAClCmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKwhI,CACT,CAvEoC,CAuElCnC,GACEoC,GAA0C,SAAShC,GACrD3C,EAAU4E,EAA0BjC;AACpC,IAAIhB,EAASnB,EAAaoE;AAC1B,SAASA,IACP,IAAInzI;AACJovI,EAAgB75I,KAAM49I;AACtB,IAAK,IAAI3rE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CAyDA,OAxDAuvI,EAAa4D,EAA0B,CAAC,CACtCr8I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GAEN,IAAK,IACL,IAAK,KACH,OAAOi+C,EAAaj+C,EAAM7+F,OAAQ4mG;AAEpC,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAGV,IAAK,MACH,OAAOx2F,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAM4yF,QAAQwJ,EAAY,CAC/B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM4yF,QAAQwJ,EAAY,CAC9B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKolF,YAA0B,GAAbv8F,EAAQ,GAAQ,GAClCmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK0hI,CACT,CAvE8C,CAuE5CrC,GACEsC,GAA8B,SAASlC,GACzC3C,EAAU8E,EAAcnC;AACxB,IAAIhB,EAASnB,EAAasE;AAC1B,SAASA,IACP,IAAIrzI;AACJovI,EAAgB75I,KAAM89I;AACtB,IAAK,IAAI7rE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAClIg4E,EAAgBshE,EAAuBjuI,GAAQ,WAAY,KACpDA,CACT,CA8DA,OA7DAuvI,EAAa8D,EAAc,CAAC,CAC1Bv8I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,IAAI6zF,EAAgB,SAAwB74F,GAC1C,OAAOA,EAAQ,CACjB;AACA,OAAQq5F,GAEN,IAAK,IACH,OAAO29C,EAASG,EAAoBL,EAAuB11C,GAAavI;AAE1E,IAAK,KACH,OAAOm+C,EAASM,EAAa,EAAGl2C,GAAavI;AAE/C,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,UACJ3C;AAEN,IAAK,MACH,OAAO7zF,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKolF,YAAYv8F,EAAO,GACxBmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK4hI,CACT,CA5EkC,CA4EhCvC,GACEwC,GAAwC,SAASpC,GACnD3C,EAAUgF,EAAwBrC;AAClC,IAAIhB,EAASnB,EAAawE;AAC1B,SAASA,IACP,IAAIvzI;AACJovI,EAAgB75I,KAAMg+I;AACtB,IAAK,IAAI/rE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA8DA,OA7DAuvI,EAAagE,EAAwB,CAAC,CACpCz8I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,IAAI6zF,EAAgB,SAAwB74F,GAC1C,OAAOA,EAAQ,CACjB;AACA,OAAQq5F,GAEN,IAAK,IACH,OAAO29C,EAASG,EAAoBL,EAAuB11C,GAAavI;AAE1E,IAAK,KACH,OAAOm+C,EAASM,EAAa,EAAGl2C,GAAavI;AAE/C,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,UACJ3C;AAEN,IAAK,MACH,OAAO7zF,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAMslF,MAAM8W,EAAY,CAC7B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAMslF,MAAM8W,EAAY,CAC5B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKolF,YAAYv8F,EAAO,GACxBmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK8hI,CACT,CA5E4C,CA4E1CzC,GASE0C,GAAkC,SAAStC,GAC7C3C,EAAUkF,EAAkBvC;AAC5B,IAAIhB,EAASnB,EAAa0E;AAC1B,SAASA,IACP,IAAIzzI;AACJovI,EAAgB75I,KAAMk+I;AACtB,IAAK,IAAIjsE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC3HA,CACT,CA0BA,OAzBAuvI,EAAakE,EAAkB,CAAC,CAC9B38I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAsB11C;AACnD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,EAAOb,GACvC,OAAOkpF,EAAQqL,eA5CrB,SAAoBjM,EAAW2xD,EAAWj6I,GACxCwP,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpByU,EAAOvtF,EAAMq4E,UAAUoyD,GACvBrvD,EAAO1B,EAAQgS,WAAWljF,EAAMhY,GAAW+8F;AAE/C,OADA/kF,EAAK67E,WAAW77E,EAAK87E,aAAsB,EAAPlJ,GAC7B5yE,CACT,CAPA,CA4C+CA,EAAMnX,EAAOb,GAAUA,EAClE,KAEKg6I,CACT,CAxCsC,CAwCpC3C,GASE6C,GAAgC,SAASzC,GAC3C3C,EAAUqF,EAAgB1C;AAC1B,IAAIhB,EAASnB,EAAa6E;AAC1B,SAASA,IACP,IAAI5zI;AACJovI,EAAgB75I,KAAMq+I;AACtB,IAAK,IAAIpsE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,KAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAChIA,CACT,CA0BA,OAzBAuvI,EAAaqE,EAAgB,CAAC,CAC5B98I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAsB11C;AACnD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAChC,OAAOqoF,EAAQyK,kBA5CrB,SAAuBrL,EAAW8xD,GAChC5qI,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI4c,EAAOxI,EAAMk4E,OAAOY,GACpB2U,EAAUztF,EAAMq4E,UAAUuyD,GAC1BxvD,EAAO1B,EAAQ8R,cAAchjF,GAAQilF;AAEzC,OADAjlF,EAAK67E,WAAW77E,EAAK87E,aAAsB,EAAPlJ,GAC7B5yE,CACT,CAPA,CA4CqDA,EAAMnX,GACvD,KAEKs5I,CACT,CAxCoC,CAwClC9C,GACEgD,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACvEC,GAA6B,SAAS9C,GACxC3C,EAAU0F,EAAa/C;AACvB,IAAIhB,EAASnB,EAAakF;AAC1B,SAASA,IACP,IAAIj0I;AACJovI,EAAgB75I,KAAM0+I;AACtB,IAAK,IAAIzsE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAMzB,OAHAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,cAAe,GAC9D2sE,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACtHA,CACT,CAmCA,OAlCAuvI,EAAa0E,EAAa,CAAC,CACzBn9I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAsB11C;AACnD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkBmX,EAAMnX,GAC7B,IACI45I,EAAaj6C,EADNxoF,EAAKi8E,kBAEZ9I,EAAQnzE,EAAK4kF;AACjB,OAAI69C,EACK55I,GAAS,GAAKA,GAASy5I,GAAwBnvD,GAE/CtqF,GAAS,GAAKA,GAASw5I,GAAclvD,EAEhD,GACC,CACD9tF,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAK67E,WAAWhzF,GAChBmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKwiI,CACT,CAlDiC,CAkD/BnD,GACEqD,GAAkC,SAASjD,GAC7C3C,EAAU6F,EAAkBlD;AAC5B,IAAIhB,EAASnB,EAAaqF;AAC1B,SAASA,IACP,IAAIp0I;AACJovI,EAAgB75I,KAAM6+I;AACtB,IAAK,IAAI5sE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAMzB,OAHAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,cAAe,GAC9D2sE,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CAmCA,OAlCAuvI,EAAa6E,EAAkB,CAAC,CAC9Bt9I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACL,IAAK,KACH,OAAO89C,EAAoBL,EAA2B11C;AACxD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkBmX,EAAMnX,GAG7B,OADiB2/F,EADNxoF,EAAKi8E,kBAGPpzF,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAElC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EAAKolF,YAAY,EAAGv8F,GACpBmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK2iI,CACT,CAlDsC,CAkDpCtD;AACF,SAASuD,GAAUtyD,EAAWuyD,EAAU76I,GACtC,IAAI4wE,EAAMmF,EAAO8B,EAAOqS,EAAuBC,EAAiBC,EAAuBC,EAAuBC;AAC9G96E,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIosF,EAAiBh4E,EAAMi4E,oBACvB8C,EAAe/6E,EAAMq4E,UAA+0B,QAAp0BjX,EAA8hB,QAAthBmF,EAAkd,QAAzc8B,EAA6G,QAApGqS,EAAwBlqF,eAAkDA,EAAQuqF,wBAA0BL,EAAmCA,EAAwBlqF,SAAyF,QAAtCmqF,EAAkBnqF,EAAQwqF,kBAAoBL,GAA4F,QAArDC,EAAwBD,EAAgBnqF,mBAAqBoqF,SAA4CA,EAAsBG,wBAA0B1S,EAAmBA,EAAQ2P,EAAe+C,wBAA0BxU,EAAmBA,EAA4D,QAAnDsU,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBC,wBAA0B3Z,EAAkBA,EAAO;AACz4B,KAAM2Z,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,IAAIzyE,EAAOxI,EAAMk4E,OAAOY,GACpBoC,EAAMl7E,EAAMq4E,UAAUgzD,GAItBjwD,IAFYF,EAAM,EACM,GAAK,EACVH,EAAe,EAAI,GAAKG,EAH9B1yE,EAAK47E;AAKtB,OADA57E,EAAK67E,WAAW77E,EAAK87E,aAAelJ,GAC7B5yE,CACT,CACA,IAAI8iI,GAA4B,SAASrD,GACvC3C,EAAUiG,EAAYtD;AACtB,IAAIhB,EAASnB,EAAayF;AAC1B,SAASA,IACP,IAAIx0I;AACJovI,EAAgB75I,KAAMi/I;AACtB,IAAK,IAAIhtE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAiEA,OAhEAuvI,EAAaiF,EAAY,CAAC,CACxB19I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOr0F,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,EAAOb,GAGvC,OAFAgY,EAAO4iI,GAAU5iI,EAAMnX,EAAOb,IACzB+zF,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEK+iI,CACT,CA/EgC,CA+E9B1D,GACE2D,GAAiC,SAASvD,GAC5C3C,EAAUmG,EAAiBxD;AAC3B,IAAIhB,EAASnB,EAAa2F;AAC1B,SAASA,IACP,IAAI10I;AACJovI,EAAgB75I,KAAMm/I;AACtB,IAAK,IAAIltE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA4EA,OA3EAuvI,EAAamF,EAAiB,CAAC,CAC7B59I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,EAAO7F,GAC/C,IAAI05F,EAAgB,SAAwB74F,GAC1C,IAAIq6I,EAA8C,EAA9BpyI,KAAKqa,OAAOtiB,EAAQ,GAAK;AAC7C,OAAQA,EAAQb,EAAQuqF,aAAe,GAAK,EAAI2wD,CAClD;AACA,OAAQhhD,GAEN,IAAK,IACL,IAAK,KACH,OAAO29C,EAASM,EAAaj+C,EAAM7+F,OAAQ4mG,GAAavI;AAE1D,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,QACJ3C;AAEN,IAAK,MACH,OAAO7zF,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,EAAOb,GAGvC,OAFAgY,EAAO4iI,GAAU5iI,EAAMnX,EAAOb,IACzB+zF,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKijI,CACT,CA1FqC,CA0FnC5D,GACE8D,GAA2C,SAAS1D,GACtD3C,EAAUsG,EAA2B3D;AACrC,IAAIhB,EAASnB,EAAa8F;AAC1B,SAASA,IACP,IAAI70I;AACJovI,EAAgB75I,KAAMs/I;AACtB,IAAK,IAAIrtE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA4EA,OA3EAuvI,EAAasF,EAA2B,CAAC,CACvC/9I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,EAAO7F,GAC/C,IAAI05F,EAAgB,SAAwB74F,GAC1C,IAAIq6I,EAA8C,EAA9BpyI,KAAKqa,OAAOtiB,EAAQ,GAAK;AAC7C,OAAQA,EAAQb,EAAQuqF,aAAe,GAAK,EAAI2wD,CAClD;AACA,OAAQhhD,GAEN,IAAK,IACL,IAAK,KACH,OAAO29C,EAASM,EAAaj+C,EAAM7+F,OAAQ4mG,GAAavI;AAE1D,IAAK,KACH,OAAOm+C,EAAShyI,EAAMqyF,cAAc+J,EAAY,CAC9C5F,KAAM,QACJ3C;AAEN,IAAK,MACH,OAAO7zF,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,QACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,SACPtqC,QAAS;AAGb,IAAK,SACH,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS;AAIb,QACE,OAAO8J,EAAM6kF,IAAIuX,EAAY,CAC3B57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,EAAOb,GAGvC,OAFAgY,EAAO4iI,GAAU5iI,EAAMnX,EAAOb,IACzB+zF,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKojI,CACT,CA1F+C,CA0F7C/D,GAgBEgE,GAA+B,SAAS5D,GAC1C3C,EAAUwG,EAAe7D;AACzB,IAAIhB,EAASnB,EAAagG;AAC1B,SAASA,IACP,IAAI/0I;AACJovI,EAAgB75I,KAAMw/I;AACtB,IAAK,IAAIvtE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACrIA,CACT,CA8EA,OA7EAuvI,EAAawF,EAAe,CAAC,CAC3Bj+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,IAAI6zF,EAAgB,SAAwB74F,GAC1C,OAAc,IAAVA,EACK,EAEFA,CACT;AACA,OAAQq5F,GAEN,IAAK,IACL,IAAK,KACH,OAAOi+C,EAAaj+C,EAAM7+F,OAAQ4mG;AAEpC,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAGV,IAAK,MACH,OAAOw7C,EAAShyI,EAAM6kF,IAAIuX,EAAY,CACpC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eACP29F;AAEN,IAAK,QACH,OAAOm+C,EAAShyI,EAAM6kF,IAAIuX,EAAY,CACpC57D,MAAO,SACPtqC,QAAS,eACP29F;AAEN,IAAK,SACH,OAAOm+C,EAAShyI,EAAM6kF,IAAIuX,EAAY,CACpC57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eACP29F;AAGN,QACE,OAAOm+C,EAAShyI,EAAM6kF,IAAIuX,EAAY,CACpC57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,QACPtqC,QAAS,gBACL8J,EAAM6kF,IAAIuX,EAAY,CAC1B57D,MAAO,SACPtqC,QAAS,eACP29F,GAEV,GACC,CACDr8F,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,CAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAGhC,OAFAmX,EArGN,SAAsBswE,EAAWuyD,GAC/BrrI,EAAM83E,aAAa,EAAGlsF;AACtB,IAAIsvF,EAAMl7E,EAAMq4E,UAAUgzD;AACtBnwD,EAAM,GAAM,IACdA,GAAY;AAEd,IACI1yE,EAAOxI,EAAMk4E,OAAOY,GAIpBsC,IAFYF,EAAM,EACM,GAAK,EAJd,EAKmB,EAAI,GAAKA,EAH9B1yE,EAAK47E;AAKtB,OADA57E,EAAK67E,WAAW77E,EAAK87E,aAAelJ,GAC7B5yE,CACT,CAdA,CAqG0BA,EAAMnX,GAC1BmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GACnB/7E,CACT,KAEKsjI,CACT,CA5FmC,CA4FjCjE,GACEkE,GAA6B,SAAS9D,GACxC3C,EAAU0G,EAAa/D;AACvB,IAAIhB,EAASnB,EAAakG;AAC1B,SAASA,IACP,IAAIj1I;AACJovI,EAAgB75I,KAAM0/I;AACtB,IAAK,IAAIztE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCAuvI,EAAa0F,EAAa,CAAC,CACzBn+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOr0F,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS;AAEb,IAAK,QACH,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK+7E,YAAYskD,EAAqBx3I,GAAQ,EAAG,EAAG,GAC7CmX,CACT,KAEKwjI,CACT,CAvDiC,CAuD/BnE,GACEoE,GAAqC,SAAShE,GAChD3C,EAAU4G,EAAqBjE;AAC/B,IAAIhB,EAASnB,EAAaoG;AAC1B,SAASA,IACP,IAAIn1I;AACJovI,EAAgB75I,KAAM4/I;AACtB,IAAK,IAAI3tE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MACxFA,CACT,CAyCA,OAxCAuvI,EAAa4F,EAAqB,CAAC,CACjCr+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOr0F,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS;AAEb,IAAK,QACH,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK+7E,YAAYskD,EAAqBx3I,GAAQ,EAAG,EAAG,GAC7CmX,CACT,KAEK0jI,CACT,CAvDyC,CAuDvCrE,GACEsE,GAAkC,SAASlE,GAC7C3C,EAAU8G,EAAkBnE;AAC5B,IAAIhB,EAASnB,EAAasG;AAC1B,SAASA,IACP,IAAIr1I;AACJovI,EAAgB75I,KAAM8/I;AACtB,IAAK,IAAI7tE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,MAC9EA,CACT,CAyCA,OAxCAuvI,EAAa8F,EAAkB,CAAC,CAC9Bv+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAOr0F,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS;AAEb,IAAK,QACH,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,SACPtqC,QAAS;AAGb,QACE,OAAO8J,EAAM6yF,UAAUuJ,EAAY,CACjC57D,MAAO,OACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,cACPtqC,QAAS,gBACL8J,EAAM6yF,UAAUuJ,EAAY,CAChC57D,MAAO,SACPtqC,QAAS,eAGjB,GACC,CACDsB,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK+7E,YAAYskD,EAAqBx3I,GAAQ,EAAG,EAAG,GAC7CmX,CACT,KAEK4jI,CACT,CAvDsC,CAuDpCvE,GACEwE,GAAkC,SAASpE,GAC7C3C,EAAUgH,EAAkBrE;AAC5B,IAAIhB,EAASnB,EAAawG;AAC1B,SAASA,IACP,IAAIv1I;AACJovI,EAAgB75I,KAAMggJ;AACtB,IAAK,IAAI/tE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAkCA,OAjCAuvI,EAAagG,EAAkB,CAAC,CAC9Bz+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAyB11C;AACtD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAChC,IAAIk7I,EAAO/jI,EAAK2lF,eAAiB;AAQjC,OAPIo+C,GAAQl7I,EAAQ,GAClBmX,EAAK+7E,YAAYlzF,EAAQ,GAAI,EAAG,EAAG,GACzBk7I,GAAkB,KAAVl7I,EAGlBmX,EAAK+7E,YAAYlzF,EAAO,EAAG,EAAG,GAF9BmX,EAAK+7E,YAAY,EAAG,EAAG,EAAG,GAIrB/7E,CACT,KAEK8jI,CACT,CAhDsC,CAgDpCzE,GACE2E,GAAkC,SAASvE,GAC7C3C,EAAUmH,EAAkBxE;AAC5B,IAAIhB,EAASnB,EAAa2G;AAC1B,SAASA,IACP,IAAI11I;AACJovI,EAAgB75I,KAAMmgJ;AACtB,IAAK,IAAIluE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA2BA,OA1BAuvI,EAAamG,EAAkB,CAAC,CAC9B5+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAyB11C;AACtD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK+7E,YAAYlzF,EAAO,EAAG,EAAG,GACvBmX,CACT,KAEKikI,CACT,CAzCsC,CAyCpC5E,GACE6E,GAAkC,SAASzE,GAC7C3C,EAAUqH,EAAkB1E;AAC5B,IAAIhB,EAASnB,EAAa6G;AAC1B,SAASA,IACP,IAAI51I;AACJovI,EAAgB75I,KAAMqgJ;AACtB,IAAK,IAAIpuE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,MACnFA,CACT,CAgCA,OA/BAuvI,EAAaqG,EAAkB,CAAC,CAC9B9+I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAyB11C;AACtD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAOhC,OANWmX,EAAK2lF,eAAiB,IACrB98F,EAAQ,GAClBmX,EAAK+7E,YAAYlzF,EAAQ,GAAI,EAAG,EAAG,GAEnCmX,EAAK+7E,YAAYlzF,EAAO,EAAG,EAAG,GAEzBmX,CACT,KAEKmkI,CACT,CA9CsC,CA8CpC9E,GACE+E,GAAkC,SAAS3E,GAC7C3C,EAAUuH,EAAkB5E;AAC5B,IAAIhB,EAASnB,EAAa+G;AAC1B,SAASA,IACP,IAAI91I;AACJovI,EAAgB75I,KAAMugJ;AACtB,IAAK,IAAItuE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7FA,CACT,CA4BA,OA3BAuvI,EAAauG,EAAkB,CAAC,CAC9Bh/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAyB11C;AACtD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAChC,IAAI+8F,EAAQ/8F,GAAS,GAAKA,EAAQ,GAAKA;AAEvC,OADAmX,EAAK+7E,YAAY6J,EAAO,EAAG,EAAG,GACvB5lF,CACT,KAEKqkI,CACT,CA1CsC,CA0CpChF,GACEiF,GAA+B,SAAS7E,GAC1C3C,EAAUyH,EAAe9E;AACzB,IAAIhB,EAASnB,EAAaiH;AAC1B,SAASA,IACP,IAAIh2I;AACJovI,EAAgB75I,KAAMygJ;AACtB,IAAK,IAAIxuE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BAuvI,EAAayG,EAAe,CAAC,CAC3Bl/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAwB11C;AACrD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAKwkI,cAAc37I,EAAO,EAAG,GACtBmX,CACT,KAEKukI,CACT,CAzCmC,CAyCjClF,GACEoF,GAA+B,SAAShF,GAC1C3C,EAAU4H,EAAejF;AACzB,IAAIhB,EAASnB,EAAaoH;AAC1B,SAASA,IACP,IAAIn2I;AACJovI,EAAgB75I,KAAM4gJ;AACtB,IAAK,IAAI3uE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CA2BA,OA1BAuvI,EAAa4G,EAAe,CAAC,CAC3Br/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,EAAOr0F,GACxC,OAAQq0F,GACN,IAAK,IACH,OAAO89C,EAAoBL,EAAwB11C;AACrD,IAAK,KACH,OAAOp8F,EAAMqyF,cAAc+J,EAAY,CACrC5F,KAAM;AAEV,QACE,OAAO87C,EAAaj+C,EAAM7+F,OAAQ4mG,GAExC,GACC,CACD5kG,IAAK,WACLwD,MAAO,SAAkB25F,EAAO35F,GAC9B,OAAOA,GAAS,GAAKA,GAAS,EAChC,GACC,CACDxD,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK2kI,cAAc97I,EAAO,GACnBmX,CACT,KAEK0kI,CACT,CAzCmC,CAyCjCrF,GACEuF,GAAyC,SAASnF,GACpD3C,EAAU+H,EAAyBpF;AACnC,IAAIhB,EAASnB,EAAauH;AAC1B,SAASA,IACP,IAAIt2I;AACJovI,EAAgB75I,KAAM+gJ;AACtB,IAAK,IAAI9uE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,MACpEA,CACT,CAgBA,OAfAuvI,EAAa+G,EAAyB,CAAC,CACrCx/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,GAIjC,OAAO29C,EAASM,EAAaj+C,EAAM7+F,OAAQ4mG,aAHCphG,GAC1C,OAAOiI,KAAKqa,MAAMtiB,EAAQiI,KAAKu/B,IAAI,GAAoB,EAAf6xD,EAAM7+F,QAChD,GAEF,GACC,CACDgC,IAAK,MACLwD,MAAO,SAAamX,EAAMmhI,EAAQt4I,GAEhC,OADAmX,EAAK8kI,mBAAmBj8I,GACjBmX,CACT,KAEK6kI,CACT,CA9B6C,CA8B3CxF,GACE0F,GAAyC,SAAStF,GACpD3C,EAAUkI,EAAyBvF;AACnC,IAAIhB,EAASnB,EAAa0H;AAC1B,SAASA,IACP,IAAIz2I;AACJovI,EAAgB75I,KAAMkhJ;AACtB,IAAK,IAAIjvE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BAuvI,EAAakH,EAAyB,CAAC,CACrC3/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,GACjC,OAAQA,GACN,IAAK,IACH,OAAO+9C,EAAqBL,EAAuC31C;AACrE,IAAK,KACH,OAAOg2C,EAAqBL,EAAwB31C;AACtD,IAAK,OACH,OAAOg2C,EAAqBL,EAAuC31C;AACrE,IAAK,QACH,OAAOg2C,EAAqBL,EAA0C31C;AAExE,QACE,OAAOg2C,EAAqBL,EAA2B31C,GAE7D,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,EAAO1C,GAC/B,OAAI0C,EAAM4zI,eACDn/H,EAEF,IAAI5U,KAAK4U,EAAK3U,UAAYxC,EACnC,KAEKm8I,CACT,CAzC6C,CAyC3C3F,GACE4F,GAAoC,SAASxF,GAC/C3C,EAAUoI,EAAoBzF;AAC9B,IAAIhB,EAASnB,EAAa4H;AAC1B,SAASA,IACP,IAAI32I;AACJovI,EAAgB75I,KAAMohJ;AACtB,IAAK,IAAInvE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,CAAC,IAAK,IAAK,MACzEA,CACT,CA2BA,OA1BAuvI,EAAaoH,EAAoB,CAAC,CAChC7/I,IAAK,QACLwD,MAAO,SAAgBohG,EAAY/H,GACjC,OAAQA,GACN,IAAK,IACH,OAAO+9C,EAAqBL,EAAuC31C;AACrE,IAAK,KACH,OAAOg2C,EAAqBL,EAAwB31C;AACtD,IAAK,OACH,OAAOg2C,EAAqBL,EAAuC31C;AACrE,IAAK,QACH,OAAOg2C,EAAqBL,EAA0C31C;AAExE,QACE,OAAOg2C,EAAqBL,EAA2B31C,GAE7D,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAamX,EAAMzU,EAAO1C,GAC/B,OAAI0C,EAAM4zI,eACDn/H,EAEF,IAAI5U,KAAK4U,EAAK3U,UAAYxC,EACnC,KAEKq8I,CACT,CAzCwC,CAyCtC7F,GACE8F,GAAyC,SAAS1F,GACpD3C,EAAUsI,EAAyB3F;AACnC,IAAIhB,EAASnB,EAAa8H;AAC1B,SAASA,IACP,IAAI72I;AACJovI,EAAgB75I,KAAMshJ;AACtB,IAAK,IAAIrvE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbAuvI,EAAasH,EAAyB,CAAC,CACrC//I,IAAK,QACLwD,MAAO,SAAgBohG,GACrB,OAAOi2C,EAAqBj2C,EAC9B,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAa25F,EAAO2+C,EAAQt4I,GACjC,MAAO,CAAC,IAAIuC,KAAa,IAARvC,GAAc,CAC7Bs2I,mBAEJ,KAEKiG,CACT,CA5B6C,CA4B3C/F,GACEgG,GAA8C,SAAS5F,GACzD3C,EAAUwI,EAA8B7F;AACxC,IAAIhB,EAASnB,EAAagI;AAC1B,SAASA,IACP,IAAI/2I;AACJovI,EAAgB75I,KAAMwhJ;AACtB,IAAK,IAAIvvE,EAAO3yE,UAAUC,OAAQH,EAAO,IAAIuB,MAAMsxE,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E9yE,EAAK8yE,GAAQ5yE,UAAU4yE;AAKzB,OAFAkF,EAAgBshE,EADhBjuI,EAAQkwI,EAAO14I,KAAKzC,MAAMm7I,EAAQ,CAAC36I,MAAMyJ,OAAOrK,KACD,WAAY,IAC3Dg4E,EAAgBshE,EAAuBjuI,GAAQ,qBAAsB,KAC9DA,CACT,CAcA,OAbAuvI,EAAawH,EAA8B,CAAC,CAC1CjgJ,IAAK,QACLwD,MAAO,SAAgBohG,GACrB,OAAOi2C,EAAqBj2C,EAC9B,GACC,CACD5kG,IAAK,MACLwD,MAAO,SAAa25F,EAAO2+C,EAAQt4I,GACjC,MAAO,CAAC,IAAIuC,KAAKvC,GAAQ,CACvBs2I,mBAEJ,KAEKmG,CACT,CA5BkD,CA4BhDjG,GACEkG,GAAU,CACZphD,EAAG,IAAIq7C,EACP7wG,EAAG,IAAIgyG,GACPp8C,EAAG,IAAIw8C,GACPr8C,EAAG,IAAIu8C,GACPhoH,EAAG,IAAIooH,GACP18C,EAAG,IAAI48C,GACP/zE,EAAG,IAAIi0E,GACP58C,EAAG,IAAI88C,GACP78C,EAAG,IAAI+8C,GACPpjG,EAAG,IAAIsjG,GACP/8C,EAAG,IAAIk9C,GACP9jG,EAAG,IAAImkG,GACPr9C,EAAG,IAAIw9C,GACPp9C,EAAG,IAAIw9C,GACP9+I,EAAG,IAAIg/I,GACP7kG,EAAG,IAAIglG,GACPp+I,EAAG,IAAIs+I,GACPtwI,EAAG,IAAIwwI,GACPvwI,EAAG,IAAIywI,GACP59C,EAAG,IAAI89C,GACPzqH,EAAG,IAAI2qH,GACP/9C,EAAG,IAAIk+C,GACPj+C,EAAG,IAAIm+C,GACPl+C,EAAG,IAAIo+C,GACP9lG,EAAG,IAAIgmG,GACP5gH,EAAG,IAAI+gH,GACPt+C,EAAG,IAAIy+C,GACPr+C,EAAG,IAAIw+C,GACPv2G,EAAG,IAAIy2G,GACPlnI,EAAG,IAAIonI,GACPj+C,EAAG,IAAIm+C,IAEL79C,GAAyB,wDACzBC,GAA6B,oCAC7BC,GAAsB,eACtBC,GAAoB,MACpB69C,GAAsB,KACtB59C,GAAgC;AACpC,SAAStrF,GAAMmpI,EAAiBC,EAAmBC,EAAoB39I,GACrE,IAAI4wE,EAAuBmF,EAAO8B,EAAqCwS,EAAuBC,EAAwB9R,EAAO0oB,EAAqCC,EAAwBC;AAC1L5xF,EAAM83E,aAAa,EAAGlsF;AACtB,IAAI6mG,EAAav2F,OAAO+xI,GACpBG,EAAelyI,OAAOgyI,GACtBl2D,EAAiBh4E,EAAMi4E,oBACvB+C,EAAmI,QAAzH5Z,EAA8F4W,EAAegD,kBAAoB5Z,EAAkBA,EAAOsY,EAAQ8Q;AAChL,IAAKxP,EAAO3kF,MACV,MAAM,IAAI4kF,WAAW;AAEvB,IAAIiK,EAAwBllF,EAAMq4E,UAAuhB,QAA5gB9R,EAA6N,QAApN8B,EAA0K2P,EAAekN,iCAAmC7c,EAAmBA,EAA4D,QAAnDwS,EAAwB7C,EAAegD,kBAAoBH,GAAyG,QAA5DC,EAAyBD,EAAsBrqF,mBAAqBsqF,SAA6CA,EAAuBoK,iCAAmC3e,EAAmBA,EAAQ;AAC5lB,KAAM2e,GAAyB,GAAKA,GAAyB,GAC3D,MAAM,IAAIjK,WAAW;AAEvB,IAAIF,EAAe/6E,EAAMq4E,UAAwgB,QAA7frP,EAAoN,QAA3M0oB,EAA0K1Z,EAAe+C,wBAA0B2W,EAAmBA,EAA6D,QAApDC,EAAyB3Z,EAAegD,kBAAoB2W,GAA2G,QAA7DC,EAAyBD,EAAuBnhG,mBAAqBohG,SAA6CA,EAAuB7W,wBAA0B/R,EAAmBA,EAAQ;AACpkB,KAAM+R,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAIE,WAAW;AAEvB,GAAqB,KAAjBmzD,EACF,MAAmB,KAAf37C,EACKzyF,EAAMk4E,OAAOi2D,GAEG,IAAIv6I,KAAKm9E;AAGpC,IAeoDs9D,EAfhDC,EAAe,CACjBppD,wBACAnK,eACAC,UAEEuzD,EAAU,CAAC,IAAIjH,GACfkH,EAASJ,EAAa/3I,MAAM45F,IAA4BriG,cAAaitB,GACvE,IAAIk3E,EAAiBl3E,EAAU;AAC/B,OAAIk3E,KAAkBrY,EAAQoS,kBACRpS,EAAQoS,eAAeiG,IACtBl3E,EAAWmgE,EAAO8P,YAElCjwE,CACT,IAAGxmB,KAAK,IAAIgC,MAAM25F,IACdy+C,EAAa,GACbC,EAAYnK,EAA2BiK;AAC3C,IACE,IAAI3pC,EAAQ,WACV,IAAIna,EAAQ2jD,EAAMh9I;AACZb,SAA0CA,EAAQm+I,8BAAgCj1D,EAAQmS,yBAAyBnB,IACvHhR,EAAQyS,oBAAoBzB,EAAO0jD,EAAcH,GAE7Cz9I,SAA0CA,EAAQo+I,+BAAiCl1D,EAAQkS,0BAA0BlB,IACzHhR,EAAQyS,oBAAoBzB,EAAO0jD,EAAcH;AAEnD,IAAIl8C,EAAiBrH,EAAM,GACvBmkD,EAASd,GAAQh8C;AACrB,GAAI88C,EAAQ,CACV,IAAIC,EAAqBD,EAAOC;AAChC,GAAI7hJ,MAAMiG,QAAQ47I,GAAqB,CACrC,IAAIC,EAAoBN,EAAWjhJ,eAAcwhJ,GAC/C,OAAOF,EAAmBniJ,SAASqiJ,EAAUtkD,QAAUskD,EAAUtkD,QAAUqH,CAC7E;AACA,GAAIg9C,EACF,MAAM,IAAI9zD,WAAW,sCAAsCllF,OAAOg5I,EAAkBE,UAAW,WAAWl5I,OAAO20F,EAAO,sBAE5H,MAAO,GAAkC,MAA9BmkD,EAAOC,oBAA8BL,EAAW5iJ,OAAS,EAClE,MAAM,IAAIovF,WAAW,sCAAsCllF,OAAO20F,EAAO;AAE3E+jD,EAAWnhJ,KAAK,CACdo9F,MAAOqH,EACPk9C,UAAWvkD;AAEb,IAAIL,EAAcwkD,EAAOK,IAAIz8C,EAAY/H,EAAO1P,EAAO3kF,MAAOi4I;AAC9D,IAAKjkD,EACH,MAAO,CACLrjD,EAAmB,IAAIpzC,KAAKm9E;AAGhCw9D,EAAQjhJ,KAAK+8F,EAAY09C,QACzBt1C,EAAapI,EAAYF,IAC3B,KAAO,CACL,GAAI4H,EAAe17F,MAAM+5F,IACvB,MAAM,IAAInV,WAAW,iEAAmE8W,EAAiB;AAO3G,GALc,OAAVrH,EACFA,EAAQ,IACoB,MAAnBqH,IACTrH,EAA2BA,EAmEtBr0F,MAAM65F,IAAqB,GAAGxoF,QAAQyoF,GAAmB,MAjE9B,IAA9BsC,EAAW3lG,QAAQ49F,GAGrB,MAAO,CACL1jD,EAAmB,IAAIpzC,KAAKm9E;AAH9B0hB,EAAaA,EAAWzkG,MAAM08F,EAAM7+F,OAMxC,CACF;AACA,IAAK6iJ,EAAUxiH,MAAOmiH,EAAQK,EAAU7iI,KAAK2e,MAAQ,CACnD,IAAI2kH,EAAOtqC;AACX,GAA4B,WAAxB7kG,EAAM43E,QAAQu3D,GAAoB,OAAOA,EAAKnoG,CACpD,CAKF,CAJE,MAAOj7C,GACP2iJ,EAAUliJ,EAAET,EACd,CAAC,QACC2iJ,EAAU53I,GACZ,CACA,GAAI27F,EAAW5mG,OAAS,GAAKmiJ,GAAoB3+I,KAAKojG,GACpD,OAAuB,IAAI7+F,KAAKm9E;AAElC,IAAIq+D,EAAwBb,EAAQ3gJ,cAAayhJ,GAC/C,OAAOA,EAAQjI,QACjB,IAAG3hG,eAAclqC,EAAGC,GAClB,OAAOA,EAAID,CACb,IAAGrE,iBAAgBkwI,EAAU78C,EAAQp9F,GACnC,OAAOA,EAAML,QAAQs6I,KAAc78C,CACrC,IAAG38F,cAAaw5I,GACd,OAAOmH,EAAQr3I,iBAAgBm4I,GAC7B,OAAOA,EAAQjI,WAAaA,CAC9B,IAAG3hG,eAAclqC,EAAGC,GAClB,OAAOA,EAAE6rI,YAAc9rI,EAAE8rI,WAC3B,GACF,IAAGz5I,cAAa0hJ,GACd,OAAOA,EAAY,EACrB,IACI9mI,EAAOxI,EAAMk4E,OAAOi2D;AACxB,GAAI1tE,MAAMj4D,EAAK3U,WACb,OAAuB,IAAID,KAAKm9E;AAElC,IAEoEw+D,EAFhEnkD,EAAU1R,EAAQwS,gBAAgB1jF,EAAMkxE,EAAQyR,gCAAgC3iF,IAChFzU,EAAQ,CAAC,EACTy7I,EAAajL,EAA2B6K;AAC5C,IACE,IAAKI,EAAWtjH,MAAOqjH,EAASC,EAAW3jI,KAAK2e,MAAQ,CACtD,IAAIu9G,EAASwH,EAAOl+I;AACpB,IAAK02I,EAAO3uG,SAASgyD,EAASkjD,GAC5B,OAAuB,IAAI16I,KAAKm9E;AAElC,IAAIlzE,EAASkqI,EAAOvxI,IAAI40F,EAASr3F,EAAOu6I;AACpCrhJ,MAAMiG,QAAQ2K,IAChButF,EAAUvtF,EAAO,GACjB5P,EAAO8F,EAAO8J,EAAO,KAErButF,EAAUvtF,CAEd,CAKF,CAJE,MAAO9R,GACPyjJ,EAAWhjJ,EAAET,EACf,CAAC,QACCyjJ,EAAW14I,GACb,CACA,OAAOs0F,CACT,CAuEA,OADAg5C,GAAcqL,UAlEIC,IAAiD,IAAhD15B,MAAEA,EAAKtW,MAAEA,EAAK7iG,OAAEA,EAAMyuD,SAAEA,EAAQ8gC,OAAEA,GAAQsjD;AAC3D,MAAMC,EAAc,IAAI35B;AAexB,OAdA25B,EAAYlqG,OAAMmqG,EAAQC,KACxB,MAEMz0G,EAAS,CAAE00G,KAFJ97B,EAAU3D,qBAAqBu/B,GAAUA,EAAOzzH,cAAc,mBAAqByzH,EAEzEG,KADV/7B,EAAU3D,qBAAqBw/B,GAAUA,EAAO1zH,cAAc,mBAAqB0zH,EACnEnwC,QAAO7iG;AACpC,MAAwB,mBAAbyuD,EACFA,EAASlwB,GACM,WAAbkwB,EAUM0kF,KAAoC,IAAnCF,KAAEA,EAAIC,KAAEA,EAAIrwC,MAAEA,EAAK7iG,OAAEA,GAAQmzI;AACjD,IAAIh+I,EAAI4P,EAAIoT,EAAIC;AAChB,MAAMg7H,EAAUtlI,OAAOmmF,WAAmJ,QAAvIlvF,EAAkF,QAA5E5P,EAAK89I,eAA4CA,EAAK7vE,SAASpjE,cAAqB7K,SAAyBA,EAAG+9B,uBAAyBnuB,SAAyBA,EAAGouB,QACxMkgH,EAAUvlI,OAAOmmF,WAAmJ,QAAvI77E,EAAkF,QAA5ED,EAAK+6H,eAA4CA,EAAK9vE,SAASpjE,cAAqBmY,SAAyBA,EAAG+a,uBAAyB9a,SAAyBA,EAAG+a;AAC9M,MAAc,cAAV0vE,EACKuwC,EAAUC,EAEVA,EAAUD,CACnB,EARmBD,CATK50G,GACE,aAAbkwB,GAA2B8gC,EAoCnB+jD,KAA4C,IAA3CL,KAAEA,EAAIC,KAAEA,EAAIrwC,MAAEA,EAAK7iG,OAAEA,EAAMuvF,OAAEA,GAAQ+jD;AAC3D,IAAIn+I,EAAI4P,EAAIoT,EAAIC;AAChB,MAAMm7H,EAAmJ,QAAvIxuI,EAAkF,QAA5E5P,EAAK89I,eAA4CA,EAAK7vE,SAASpjE,cAAqB7K,SAAyBA,EAAG+9B,uBAAyBnuB,SAAyBA,EAAGouB,OACvLqgH,EAAmJ,QAAvIp7H,EAAkF,QAA5ED,EAAK+6H,eAA4CA,EAAK9vE,SAASpjE,cAAqBmY,SAAyBA,EAAG+a,uBAAyB9a,SAAyBA,EAAG+a,OACvLsgH,EAAQxrI,GAAMsrI,EAAUhkD,EAAwB,IAAIx4F,MACpD28I,EAAQzrI,GAAMurI,EAAUjkD,EAAwB,IAAIx4F;AAC1D,MAAc,cAAV8rG,EACE4wC,EAAQC,GACF,EACND,EAAQC,EACH,EACF,EAEHD,EAAQC,EACH,EACLD,EAAQC,GACF,EACH,CACT,EAlBqBJ,CAnCKplJ,OAAOkD,OAAOlD,OAAOkD,OAAO,CAAC,EAAGmtC,GAAS,CAAEgxD,YAiBlDokD,KAAoC,IAAnCV,KAAEA,EAAIC,KAAEA,EAAIrwC,MAAEA,EAAK7iG,OAAEA,GAAQ2zI;AACjD,IAAIx+I,EAAI4P,EAAIoT,EAAIC,EAAIC,EAAI8yB;AACxB,MAAMooG,EAAyM,QAA7Lp7H,EAA6I,QAAvIpT,EAAkF,QAA5E5P,EAAK89I,eAA4CA,EAAK7vE,SAASpjE,cAAqB7K,SAAyBA,EAAG+9B,uBAAyBnuB,SAAyBA,EAAGouB,kBAAoBhb,SAAyBA,EAAGkS,cAC7OmpH,EAAyM,QAA7LroG,EAA6I,QAAvI9yB,EAAkF,QAA5ED,EAAK86H,eAA4CA,EAAK9vE,SAASpjE,cAAqBoY,SAAyBA,EAAG8a,uBAAyB7a,SAAyBA,EAAG8a,kBAAoBgY,SAAyBA,EAAG9gB;AACnP,MAAc,cAAVw4E,EACE0wC,EAAWC,GACL,EACND,EAAWC,EACN,EACF,EAEHD,EAAWC,EACN,EACLD,EAAWC,GACL,EACH,CACT,EAhBmBG,CAfKp1G,EACtB,IAEKu0G,GAmDFvL,EACR,CAqNA,IAEIqM,GAFAC,GAA8B,CAAC;AAInC,SAASC,KACR,GAAIF,GAAwC,OAAOC;AACnDD,GAAyC,EACzC1lJ,OAAO2D,eAAegiJ,GAA6B,aAAc,CAAEr/I;AACnE,MAAMqoF,EAAUC,KACV35E,EAAQu2D,EAAcC;AAC5B,SAASo6E,EAAiBv/I,GACxB,IAAIW;AACJ,MAAMqf,EAAiF,QAAtErf,EAAKX,eAA8CA,EAAMggB,mBAAqBrf,SAAyBA,EAAGu9B;AAC3H,OAAO9lB,QAAQpY,GAASggB,IAAYrR,EAAM02D,oBAAoB,mBAChE,CASA,MAEMm6E,EAAoB,MACxB/4H,YAAYmkE,GACVvC,EAAQwC,iBAAiB5vF,KAAM2vF,GAC/B3vF,KAAKwkJ,8BAAgCp3D,EAAQ0C,YAAY9vF,KAAM,gCAAiC,GAChGA,KAAKykJ,6BAA+Br3D,EAAQ0C,YAAY9vF,KAAM,+BAAgC,GAC9FA,KAAK0kJ,yCAA2Ct3D,EAAQ0C,YAAY9vF,KAAM,2CAA4C,GACtHA,KAAKq5E,UACLr5E,KAAK2kJ,aACL3kJ,KAAK+2F,aACL/2F,KAAK4kJ,uBAAyB,+CAC9B5kJ,KAAK6kJ,wBAA0B,8CAC/B7kJ,KAAK6qD,YACL7qD,KAAK8kJ,cACL9kJ,KAAKs/G,eACLt/G,KAAK+kJ,UACL/kJ,KAAKytD,SAAW,QAChBztD,KAAK6H,cACL7H,KAAK+2E,gBACL/2E,KAAKglJ,uBAAyB,6CAC9BhlJ,KAAKilJ,wBAA0B,6CAC/BjlJ,KAAKklJ,kBAAoB,sCACzBllJ,KAAKmlJ,UAAY,OACjBnlJ,KAAKolJ,oBACLplJ,KAAKqlJ,0BACLrlJ,KAAKslJ,aACP,CACAloB,UAAUl9H,GACR,MAAM0B,OAAEA,EAAML,IAAEA,GAAQrB,GAClB8sD,GAAEA,EAAEnC,SAAEA,EAAQy0D,YAAEA,GAAgBt/G;AAClC6qD,GAECy0D,GAED19G,IAAWorD,IAEH,UAARzrD,GAA2B,MAARA,IACrBrB,EAAEg9E,iBACFlwB,EAAG9jB,SAEP,CACAq0E,qCAAqCr9G,GACnC,MAAM8/G,QAAEA,GAAYhgH,MACd4B,OAAEA,EAAM2xF,OAAEA,GAAWrzF;AAC3B,GAAI0B,IAAWo+G,EACb;AACF,MAAMvyD,EAAW8lC,EAAOr/D,QAAU,OAAS;MACrCl0B,KAAKulJ,YAAY93F,EACzB,CAKA8vD,kBAAkB9vD,GAAoC,IAA1B+3F,OAAEA,MAAgBlmJ,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC;AAChD,MAAMolJ,yCAAEA,EAA0Cj3F,SAAUg4F,GAAiBzlJ;AAC7E,OAAIylJ,IAAiBh4F,IAEhB+3F,GACHd,EAAyCnoF,KAAK,CAC5CroC,QAASu5B,EACTi4F,SAAUD,IAGdzlJ,KAAKytD,SAAWA,QACVztD,KAAK2lJ,mBAAmBl4F,IARrB00B,QAAQC,SAUnB,CACAm7B,yBAAyB9vD,GACvB,MAAMuyD,QAAEA,GAAYhgH;AACfggH,UAECA,EAAQ4lC,aAA0B,SAAbn4F,EAAqB,CAAE+3F,YAC9ClB,EAAiBtkC,UACbA,EAAQ6lC,iBAA8B,kBAAbp4F,GACnC,CACA2mB,cACE,MAAMvpB,SAAEA,EAAQy0D,YAAEA,GAAgBt/G;AAClC,OAAOs/G,IAAgBz0D,EAAW,IAAM,IAC1C,CACAi7F,YACE,MAAMhB,OAAEA,GAAW9kJ;AACnB,OAAK8kJ,GAAUA,EAAS,EACf,CAAC,EACH,CAAE,4BAA6BA,EAAOp7I,WAC/C,CACAq8I,qBACE,MAAMZ,UAAEA,EAASH,uBAAEA,EAAsBC,wBAAEA,EAAuBC,kBAAEA,GAAsBllJ;AAC1F,OAAQmlJ,GACN,IAAK,YACH,OAAOH;AACT,IAAK,aACH,OAAOC;AACT,QACE,OAAOC,EAEb,CACAc,aAAa9lJ,GACXA,EAAEonG,kBACFtnG,KAAKwkJ,8BAA8BjoF,MACrC,CACA0pF,cACE,MAAMd,UAAEA,EAASV,6BAAEA,GAAiCzkJ,KAC9C0lJ,EAAWP,GAAa,OACxBjxH,EAAuB,cAAbwxH,EAA2B,aAAe,aACpDpoC,iBAAEA,GAAqBmnC,EAA6BloF,KAAK,CAC7DroC,UACAwxH;AAEGpoC,IACHt9G,KAAKmlJ,UAAYjxH,EACrB,CACAqpF,yBACE,MAAMvwD,GAAEA,EAAES,SAAEA,GAAaztD,KACnBggH,EAAU,IAAIhzD,EAAG2mB,UAAUzyE,MAAMmuB,GAAyB,YAAfA,EAAMwnE;AArH3D,IAAuC9xF,GAC9Bu/I,EAD8Bv/I,EAsHDi7G,IA3HtC,SAAwBj7G,GACtB,IAAIW;AACJ,MAAMqf,EAAiF,QAAtErf,EAAKX,eAA8CA,EAAMggB,mBAAqBrf,SAAyBA,EAAGu9B;AAC3H,OAAO9lB,QAAQpY,GAASggB,IAAYrR,EAAM02D,oBAAoB,iBAChE,CAJA,CAMmDrlE,MAsH7C/E,KAAKggH,QAAUA,EACXvyD,SACIztD,KAAK2lJ,mBAAmBl4F,GAEpC,CACA8vD,gCACQv9G,KAAKkmJ,kBACb,CACAC,oBACE,OAIE/4D,EAAQh4D,EAAE,SAAU,CAAEwhE,MAAO,eAAgB,aAA6B,SAAf52F,KAAK+2F,MAAmB/2F,KAAK6kJ,wBAA0B7kJ,KAAK4kJ,uBAAwB9tD,QAAU52F,GAAMF,KAAKgmJ,aAAa9lJ,IAAMktF,EAAQh4D,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgCtwC,EAAQh4D,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,uKAE7W,CACA8rG,yBACE,OAAOh5D,EAAQh4D,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgCtwC,EAAQh4D,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,sMAC3L,CACA+rG,yBACE,OAAOj5D,EAAQh4D,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgCtwC,EAAQh4D,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,mNAC3L,CACAgsG,oBACE,OAAOl5D,EAAQh4D,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgCtwC,EAAQh4D,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,4YAC3L,CACAisG,gBACE,OAAQvmJ,KAAKmlJ,WACX,IAAK,YACH,OAAOnlJ,KAAKomJ;AACd,IAAK,aACH,OAAOpmJ,KAAKqmJ;AACd,QACE,OAAOrmJ,KAAKsmJ,oBAElB,CACAlwD,SACE,IAAI1wF;AACJ,MAAMsnD,GAAEA,EAAE+pC,MAAEA,EAAKhgB,SAAEA,EAAQouE,UAAEA,GAAcnlJ;AAC3C,OAAOotF,EAAQh4D,EAAEg4D,EAAQuJ,KAAM,CAAEp1F,IAAK,2CAA4C01F,KAAyB,QAAlBvxF,EAAKsnD,EAAGiqC,gBAAkBvxF,EAAgBA,EAAK,OAAQ2wI,SAAUr2I,KAAKo0E,cAAexC,MAAO5xE,KAAK8lJ,YAAalvD,MAAO,uBAAwB,aAA4B,SAAduuD,EAAuBA,EAAY,KAAM,YAA2B,SAAdA,EAAuBA,EAAY,MAAQ/3D,EAAQh4D,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,iBAAmBG,GAAS/2F,KAAKmmJ,oBAAqB/4D,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAW2/G,aAAcA,IAAMv+G,KAAKkmJ,qBAAuB94D,EAAQh4D,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,iBAAmBxJ,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,sBAAwBwuF,EAAQh4D,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,iBAAmB7f,GAAYqW,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+Cw1E,GAAYqW,EAAQh4D,EAAE,SAAU,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,cAAe,mBAAoB,oBAAqBE,QAASA,IAAM92F,KAAKimJ,eAAiB74D,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CvB,KAAKumJ,gBAAiBn5D,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4CiZ,GAAI,oBAAqB2gH,WAAgBn7H,KAAK+lJ,wBAAyB34D,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,yBAC77C,CACIouD,SACF,OAAOogC,EAAQgK,WAAWp3F,KAC5B;AAIF,OAFAukJ,EAAkB3yE,MAhKW,stLAiK7BwyE,GAA4BoC,qBAAuBjC,EAC5CH,EACR,CAEA,IAEIqC,GAqUAC,GAoKAC,GAuEAC,GAuDAC,GAkIAC,GAgIAC,GA6EAC,GA2EAC,GA4HAC,GAoGAC,GA6CAC,GAhxCAC,GAA+B,CAAC,EAqUhCC,GAA6B,CAAC,EAoK9BC,GAAuB,CAAC,EAuExBC,GAAsB,CAAC,EAuDvBC,GAA2B,CAAC,EAkI5BC,GAAuB,CAAC,EAgIxBC,GAAwB,CAAC,EA6EzBC,GAA0B,CAAC,EA2E3BC,GAAyB,CAAC,EA4H1BC,GAA0B,CAAC,EAoG3BC,GAA8B,CAAC;AAiDnC,SAAS16D,KACR,GAAI+5D,GAA0B,OAAOl8E;AACrCk8E,GAA2B;AAC3B,IAAIY,EAAavpJ,OAAO2D,eACpB8hI,EAAsBzlI,OAAOg5E,sBAC7B0sD,EAAe1lI,OAAOsD,UAAUC,eAChCoiI,EAAe3lI,OAAOsD,UAAUypH,qBAChC6Y,EAAkBA,CAACC,EAAK/iI,EAAKwD,IAAUxD,KAAO+iI,EAAM0jB,EAAW1jB,EAAK/iI,EAAK,CAAEioE,cAAkBlnE,gBAAoBi1E,YAAgBxyE,UAAWu/H,EAAI/iI,GAAOwD;AAY3J,SAASkjJ,EAAkB/nJ,GACzB,GAAIA,GAAKA,EAAE4pE,WAAY,OAAO5pE;AAC9B,IAAIqf,EAAoB9gB,OAAO06I,OAAO;AAetC,OAdIj5I,GACFzB,OAAOC,KAAKwB,GAAGvB,kBAAiBujG,GAC9B,GAAU,YAANA,EAAiB,CACnB,IAAI5nD,EAAI77C,OAAO27B,yBAAyBl6B,EAAGgiG;AAC3CzjG,OAAO2D,eAAemd,EAAG2iF,EAAG5nD,EAAEj4C,IAAMi4C,EAAI,CACtCkvB,cACAnnE,IAAK,WACH,OAAOnC,EAAEgiG,EACX,GAEJ,CACF,IAEF3iF,EAAWwqD,QAAI7pE,EACRzB,OAAOojF,OAAOtiE,EACvB,CACA,MAAM2oI,EAAY;AAKlB,IAAInkB,EAAYtlI,OAAO2D,eAKnB+lJ,EAAY,CAAC,EAIbC,EAAiBngI,GAEN,WADbA,SAAWA,IACoB,aAANA;AAE3B,SAASogI,EAAyBC,GAChC,IAAI5iJ,EAAI4P,EAAIoT;AACZ,OAAqJ,OAA7IA,EAA8F,OAAxFpT,EAAyB,OAAnB5P,EAAK4iJ,EAAKhmI,aAAyB5c,EAAGmqB,cAAc,kCAA8Cva,EAAGmtB,aAAa,YAAsB/Z,QAC9J,CAfe6/H,EAAC3mJ,EAAQ+hH,KACtB,IAAK,IAAI/kH,KAAQ+kH,EACfogB,EAAUniI,EAAQhD,EAAM,CAAEyD,IAAKshH,EAAI/kH,GAAO4qE,eAAmB,EAFlD++E,CAgBM,CAAC,EACG,CACvB9oJ,IAAKA,IAAMA,EACX6B,IAAKA,IAAMA,EACXknJ,GAAIA,IAAMA,EACVC,OAAQA,IAAMA,EACdC,UAAWA,IAAMA;AAEnB,IAAIF,EAAMzjJ,KACR4jJ,QACAC,SACA7jJ,UAEEtF,EAAOsF,KACT4jJ,QACAC,SACA7jJ;AAEF,SAASzD,EAAIiQ,EAAQrS,GACnB,GAAIqS,EAAOo3I,KAAM,CACf,MAAME,EAAM3pJ,EAAGqS,EAAOxM;AACtB,OAAI8jJ,aAAe1mE,QACV0mE,EAAI3rH,MAAM4rH,GAAWN,EAAGM,KAExBN,EAAGK,EAEd,CACA,GAAIt3I,EAAOq3I,MAAO,CAChB,MAAM7jJ,EAAQwM,EAAOxM;AACrB,OAAOtF,EAAIsF,EACb,CACA,KAAM,uBACR,CACA,IAgkBIgkJ,EACAC,EACAC,EAlkBAR,EAAUl3I,IACZ,GAAIA,EAAOo3I,KACT,OAAOp3I,EAAOxM;AAEd,MAAMwM,EAAOxM,OAGb2jJ,EAAan3I,IACf,GAAIA,EAAOq3I,MACT,OAAOr3I,EAAOxM;AAEd,MAAMwM,EAAOxM,OAqBbmkJ,EAAa,OACbC,EAAoB,SACpBC,EAAmB,OAEnBC,EAAc,yDACdC,GAAW,+BACXC,GAA2C,CAC7C,yBACA,oBACA,uBACA,4BAEEn0H,GAAI,SAACuN,EAAU6mH,GACjB,IAAIn6H,EAAQ,KACR9tB,EAAM,KACNkoJ,EAAW,KACXC,KACAC;AACJ,MAAMC,EAAgB,GAChBC,EAAQxvG,IACZ,IAAK,IAAI81B,EAAK,EAAGA,EAAK91B,EAAE96C,OAAQ4wE,IAC9B9gD,EAAQgrB,EAAE81B,GACNxvE,MAAMiG,QAAQyoB,GAChBw6H,EAAKx6H,GACa,MAATA,GAAkC,kBAAVA,KAC7Bq6H,EAA6B,mBAAb/mH,IAA4BylH,EAAc/4H,MAC5DA,EAAQzf,OAAOyf,IAEbq6H,GAAUC,EACZC,EAAcA,EAAcrqJ,OAAS,GAAGuqJ,QAAUz6H,EAElDu6H,EAAc5oJ,KAAK0oJ,EAASK,GAAS,KAAM16H,GAASA,GAEtDs6H,EAAaD;AAGjB,QAAAM,EAAA1qJ,UAAAC,OAxB6Bo0E,EAAQ,IAAAhzE,MAAAqpJ,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAARt2E,EAAQs2E,EAAA,GAAA3qJ,UAAA2qJ;AA0BvC,GADAJ,EAAKl2E,GACD61E,EAAW,CACTA,EAAUjoJ,MACZA,EAAMioJ,EAAUjoJ,KAEdioJ,EAAU5qJ,OACZ6qJ,EAAWD,EAAU5qJ;AAEvB,CACE,MAAMsrJ,EAAYV,EAAU1iH,WAAa0iH,EAAU5yD;AAC/CszD,IACFV,EAAU5yD,MAA6B,iBAAdszD,EAAyBA,EAAYzrJ,OAAOC,KAAKwrJ,GAAWt/I,QAAQs3F,GAAMgoD,EAAUhoD,KAAIn6F,KAAK,KAE1H,CACF,CACA,GAAwB,mBAAb46B,EACT,OAAOA,EACS,OAAd6mH,EAAqB,CAAC,EAAIA,EAC1BI,EACAO;AAGJ,MAAMC,EAAQL,GAASpnH,EAAU;AAWjC,OAVAynH,EAAMC,QAAUb,EACZI,EAAcrqJ,OAAS,IACzB6qJ,EAAME,WAAaV,GAGnBQ,EAAMG,MAAQhpJ,EAGd6oJ,EAAMI,OAASf,EAEVW,CACT,EACIL,GAAWA,CAACjlI,EAAK6e,MAEjB8mH,QAAS,EACTC,MAAO5lI,EACPglI,OAAQnmH,EACRgnH,MAAO,KACPL,WAAY,KAGZF,QAAgB,KAGhBA,MAAc,KAGdA,OAAe,OAIfzzD,GAAO,CAAC,EAERwzD,GAAc,CAChBxrJ,QAASA,CAACg1E,EAAU5xB,IAAO4xB,EAASryE,IAAIspJ,IAAiBjsJ,QAAQojD,GACjEzgD,IAAKA,CAACqyE,EAAU5xB,IAAO4xB,EAASryE,IAAIspJ,IAAiBtpJ,IAAIygD,GAAIzgD,IAAIupJ,KAE/DD,GAAmBl8H,KACrBo8H,OAAQp8H,EAAK27H,QACbU,UAAWr8H,EAAK47H,WAChBU,KAAMt8H,EAAK67H,MACXU,MAAOv8H,EAAK87H,OACZU,KAAMx8H,EAAKg8H,MACXS,MAAOz8H,EAAKo7H,SAEVe,GAAoBn8H,IACtB,GAAyB,mBAAdA,EAAKw8H,KAAqB,CACnC,MAAM1B,EAhOWjlB,EAACt1H,EAAGC,KACvB,IAAK,IAAIs1H,KAAQt1H,IAAMA,EAAI,CAAC,GACtBi1H,EAAaliI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAC/B,GAAIN,EACF,IAAK,IAAIM,KAAQN,EAAoBh1H,GAC/Bk1H,EAAaniI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAEjC,OAAOv1H,CAAC,EATWs1H,CAgOgB,CAAC,EAAG71G,EAAKo8H;AAO1C,OANIp8H,EAAKs8H,OACPxB,EAAUjoJ,IAAMmtB,EAAKs8H,MAEnBt8H,EAAKu8H,QACPzB,EAAU5qJ,KAAO8vB,EAAKu8H,OAEjB71H,GAAE1G,EAAKw8H,KAAM1B,KAAc96H,EAAKq8H,WAAa,GACtD,CACA,MAAMX,EAAQL,GAASr7H,EAAKw8H,KAAMx8H,EAAKy8H;AAKvC,OAJAf,EAAMC,QAAU37H,EAAKo8H,OACrBV,EAAME,WAAa57H,EAAKq8H,UACxBX,EAAMG,MAAQ77H,EAAKs8H,KACnBZ,EAAMI,OAAS97H,EAAKu8H,MACbb,GAwCLgB,GAAgBA,CAACC,EAAaC,EAAkBC,EAAWC,EAAiBC,EAAS/8H,EAAMg9H,KAC7F,IAAIC,EACAC,EACAC,EACA17E;AACJ,GAAsB,IAAlBzhD,EAAKC,SAAgB,CA+BvB,IA9BAg9H,EAAgBj9H,EAAK+T,aAAa2mH,GAC9BuC,IACFC,EAAcD,EAAc97I,MAAM,KAC9B+7I,EAAY,KAAOF,GAA6B,MAAnBE,EAAY,KAC3CC,EAAa,CACXpB,QAAS,EACTqB,SAAUF,EAAY,GACtBG,SAAUH,EAAY,GACtBI,QAASJ,EAAY,GACrBK,QAASL,EAAY,GACrBlB,MAAOh8H,EAAK3J,QAAQke,cACpB0nH,MAAOj8H,EACP27H,QAAS,KACTC,WAAY,KACZC,MAAO,KACPC,OAAQ,KACRV,OAAQ,MAEVwB,EAAiBtqJ,KAAK6qJ,GACtBn9H,EAAKu7E,gBAAgBm/C,GAChBiC,EAAYf,aACfe,EAAYf,WAAa,IAE3Be,EAAYf,WAAWuB,EAAWI,SAAWJ,EAC7CR,EAAcQ,EACVL,GAA0C,MAAvBK,EAAWG,UAChCR,EAAgBK,EAAWI,SAAWJ,EAAWlB,SAIlDx6E,EAAKzhD,EAAKwB,WAAW3wB,OAAS,EAAG4wE,GAAM,EAAGA,IAC7Ci7E,GACEC,EACAC,EACAC,EACAC,EACAC,EACA/8H,EAAKwB,WAAWigD,GAChBu7E;AAGJ,GAAIh9H,EAAKO,WACP,IAAKkhD,EAAKzhD,EAAKO,WAAWiB,WAAW3wB,OAAS,EAAG4wE,GAAM,EAAGA,IACxDi7E,GACEC,EACAC,EACAC,EACAC,EACAC,EACA/8H,EAAKO,WAAWiB,WAAWigD,GAC3Bu7E,EAIR,MAAO,GAAsB,IAAlBh9H,EAAKC,SACdi9H,EAAcl9H,EAAKw9H,UAAUr8I,MAAM,KAC/B+7I,EAAY,KAAOF,GAA6B,MAAnBE,EAAY,KAC3CD,EAAgBC,EAAY,GAC5BC,EAAa,CACXpB,QAAS,EACTqB,SAAUF,EAAY,GACtBG,SAAUH,EAAY,GACtBI,QAASJ,EAAY,GACrBK,QAASL,EAAY,GACrBjB,MAAOj8H,EACP27H,QAAS,KACTC,WAAY,KACZC,MAAO,KACPC,OAAQ,KACRE,MAAO,KACPZ,OAAQ,MA9OG,MAgPT6B,GACFE,EAAWlB,MAAQj8H,EAAKa,YACpBs8H,EAAWlB,OAAuC,IAA9BkB,EAAWlB,MAAMh8H,WACvCk9H,EAAW/B,OAAS+B,EAAWlB,MAAMlnH,YACrC6nH,EAAiBtqJ,KAAK6qJ,GACtBn9H,EAAK3a,SACAs3I,EAAYf,aACfe,EAAYf,WAAa,IAE3Be,EAAYf,WAAWuB,EAAWI,SAAWJ,EACzCL,GAA0C,MAAvBK,EAAWG,UAChCR,EAAgBK,EAAWI,SAAWJ,EAAWlB,SAG5CkB,EAAWC,WAAaJ,IA/PtB,MAgQPC,GACFE,EAAWnB,MAAQ,OACfkB,EAAY,GACdl9H,EAAK,QAAUm9H,EAAWrB,OAASoB,EAAY,GAE/Cl9H,EAAK,QAAU,GAEjBA,EAAK,WACD88H,IACFK,EAAWlB,MAAQ3oI,GAAIE,cAAc2pI,EAAWnB,OAC5CmB,EAAWrB,QACbqB,EAAWlB,MAAMpqE,aAAa,OAAQsrE,EAAWrB,QAEnD97H,EAAKe,WAAW08H,aAAaN,EAAWlB,MAAOj8H,GAC/CA,EAAK3a,SACsB,MAAvB83I,EAAWG,UACbR,EAAgBK,EAAWI,SAAWJ,EAAWlB,QAGrDY,EAAUvqJ,KAAK6qJ,GACVR,EAAYf,aACfe,EAAYf,WAAa,IAE3Be,EAAYf,WAAWuB,EAAWI,SAAWJ,GAzRlC,MA0RFF,IACLH,EACF98H,EAAK3a,UAEL03I,EAAQ,QAAU/8H,EAClBA,EAAK;KAKR,GAAI28H,GAAqC,UAAtBA,EAAYX,MAAmB,CACvD,MAAMN,EAAQL,GAAS,KAAMr7H,EAAK+U;AAClC2mH,EAAMO,MAAQj8H,EACd07H,EAAM6B,QAAU,IAChBZ,EAAYf,WAAa,CAACF,EAC5B,GAEEgC,GAA4BA,CAAC19H,EAAM29H,KACrC,GAAsB,IAAlB39H,EAAKC,SAAgB,CACvB,IAAIwhD,EAAK;AACT,KAAOA,EAAKzhD,EAAKwB,WAAW3wB,OAAQ4wE,IAClCi8E,GAA0B19H,EAAKwB,WAAWigD,GAAKk8E;AAEjD,GAAI39H,EAAKO,WACP,IAAKkhD,EAAK,EAAGA,EAAKzhD,EAAKO,WAAWiB,WAAW3wB,OAAQ4wE,IACnDi8E,GAA0B19H,EAAKO,WAAWiB,WAAWigD,GAAKk8E,EAGhE,MAAO,GAAsB,IAAlB39H,EAAKC,SAAgB,CAC9B,MAAMi9H,EAAcl9H,EAAKw9H,UAAUr8I,MAAM;AAtTvB,MAuTd+7I,EAAY,KACdS,EAAYniJ,IAAI0hJ,EAAY,GAAK,IAAMA,EAAY,GAAIl9H,GACvDA,EAAKw9H,UAAY,GACjBx9H,EAAK,QAAUk9H,EAAY,GAE/B,GAiBEx0D,GAAck1D,GAAQC,GAAWD,GAAKE,cActCC,GAAYA,CAACC,EAAK9tJ,EAAMy1D,KAC1B,MAAM2yC,EAAK2lD,GAAIC,GAAGhuJ,EAAMy1D;AAExB,OADAq4F,EAAIznC,cAAcje,GACXA,GAEL6lD,GAAoC,IAAIlkJ,QACxCmkJ,GAAgBA,CAACC,EAAUniG,EAASoiG,KACtC,IAAIp7E,EAAQm4B,GAAO1nG,IAAI0qJ;AACnBE,IAAoCD,GACtCp7E,EAAQA,GAAS,IAAIpgB,cACA,iBAAVogB,EACTA,EAAQhnB,EAERgnB,EAAMs7E,YAAYtiG,IAGpBgnB,EAAQhnB,EAEVm/C,GAAO7/F,IAAI6iJ,EAAUn7E,IAEnBu7E,GAAWA,CAACC,EAAoBC,EAAS9nG,KAC3C,IAAI7/C;AACJ,MAAMqnJ,EAAWO,GAAWD,GACtBz7E,EAAQm4B,GAAO1nG,IAAI0qJ;AAEzB,GADAK,EAAqD,KAAhCA,EAAmBz+H,SAAkBy+H,EAAqBprI,GAC3E4vD,EACF,GAAqB,iBAAVA,EAAoB,CAC7Bw7E,EAAqBA,EAAmB9qI,MAAQ8qI;AAChD,IACIG,EADAC,EAAgBX,GAAkBxqJ,IAAI+qJ;AAK1C,GAHKI,GACHX,GAAkB3iJ,IAAIkjJ,EAAoBI,EAAgC,IAAI1sJ,MAE3E0sJ,EAAcrmJ,IAAI4lJ,GAAW,CAChC,GAAIK,EAAmBnqI,OAASsqI,EAAWH,EAAmBv9H,cAAe,IAAGs5H,MAAsB4D,QACpGQ,EAASrsE,UAAYtP;IAChB,CACL27E,EAAWvrI,GAAIE,cAAc,SAC7BqrI,EAASrsE,UAAYtP;AACrB,MAAM67E,EAA8B,OAArB/nJ,EAAKinJ,GAAIe,SAAmBhoJ,EAAK2iJ,EAAyBrmI;AAC5D,MAATyrI,GACFF,EAAShtE,aAAa,QAASktE,GAEjCL,EAAmBjB,aAAaoB,EAAUH,EAAmBv9H,cAAc,QAC7E,CACsB,EAAlBw9H,EAAQ5C,UACV8C,EAASrsE,WAAamoE,GAEpBmE,GACFA,EAAcpmJ,IAAI2lJ,EAEtB,CACF,MAAYK,EAAmB7gG,mBAAmBlsD,SAASuxE,KACzDw7E,EAAmB7gG,mBAAqB,IAAI6gG,EAAmB7gG,mBAAoBqlB;AAGvF,OAAOm7E,GAiBLO,GAAaA,CAACK,EAAKpoG,IAAS,MAAQooG,EAAIC,UAExCC,GAAcA,CAACnB,EAAKoB,EAAYt3F,EAAUr+B,EAAU41H,EAAOtmJ,KAC7D,GAAI+uD,IAAar+B,EAAU,CACzB,IAAI61H,EAASC,GAAkBvB,EAAKoB,GAChCI,EAAKJ,EAAW7qH;AACpB,GAAmB,UAAf6qH,EAAwB,CAC1B,MAAMlnH,EAAY8lH,EAAI9lH,UAChBunH,EAAaC,GAAe53F,GAC5B63F,EAAaD,GAAej2H;AAClCyO,EAAU7yB,UAAUo6I,EAAWvjJ,QAAQyvC,GAAMA,IAAMg0G,EAAWhuJ,SAASg6C,MACvEzT,EAAUx/B,OAAOinJ,EAAWzjJ,QAAQyvC,GAAMA,IAAM8zG,EAAW9tJ,SAASg6C,KACtE,MAAO,GAAmB,UAAfyzG,EAAwB,CAE/B,IAAK,MAAMtpB,KAAQhuE,EACZr+B,GAA8B,MAAlBA,EAASqsG,KACpBA,EAAKnkI,SAAS,KAChBqsJ,EAAI96E,MAAM60C,eAAe+d,GAEzBkoB,EAAI96E,MAAM4yD,GAAQ;AAK1B,IAAK,MAAMA,KAAQrsG,EACZq+B,GAAYr+B,EAASqsG,KAAUhuE,EAASguE,KACvCA,EAAKnkI,SAAS,KAChBqsJ,EAAI96E,MAAM6zC,YAAY+e,EAAMrsG,EAASqsG,IAErCkoB,EAAI96E,MAAM4yD,GAAQrsG,EAASqsG,GAInC,MAAO,GAAmB,QAAfspB,QACN,GAAmB,QAAfA,EACH31H,GACFA,EAASu0H;KAEN,GAAKsB,GAA4B,MAAlBF,EAAW,IAAgC,MAAlBA,EAAW,GAkBnD,CACL,MAAMQ,EAAYlG,EAAcjwH;AAChC,IAAK61H,GAAUM,GAA0B,OAAbn2H,KAAuB41H,EACjD,IACE,GAAKrB,EAAI3nI,QAAQ1kB,SAAS,KAQxBqsJ,EAAIoB,GAAc31H;IARY,CAC9B,MAAM5Y,EAAgB,MAAZ4Y,EAAmB,GAAKA;AACf,SAAf21H,EACFE,KACqB,MAAZx3F,GAAoBk2F,EAAIoB,IAAevuI,IAChDmtI,EAAIoB,GAAcvuI,EAEtB,CAIF,CADE,MAAOrf,GACT,CAEF,IAAIquJ;AAEEL,KAAQA,EAAKA,EAAG9yI,QAAQ,YAAa,OACvC0yI,EAAaI,EACbK,MAGY,MAAZp2H,QAAoBA,OAClBA,GAAuD,KAAjCu0H,EAAIjqH,aAAaqrH,KACrCS,EACF7B,EAAI8B,kBAAkBlF,GAAUwE,GAEhCpB,EAAIziD,gBAAgB6jD,MAGbE,GAAkB,EAARvmJ,GAAasmJ,KAAWO,IAC7Cn2H,OAAWA,EAAoB,GAAKA,EAChCo2H,EACF7B,EAAI+B,eAAenF,GAAUwE,EAAY31H,GAEzCu0H,EAAInsE,aAAautE,EAAY31H,GAGnC,MAlDE,GANE21H,EADoB,MAAlBA,EAAW,GACAA,EAAWpsJ,MAAM,GACrBusJ,GAAkBhgD,GAAKigD,GACnBA,EAAGxsJ,MAAM,GAETwsJ,EAAG,GAAKJ,EAAWpsJ,MAAM,GAEpC80D,GAAYr+B,EAAU,CACxB,MAAM3iB,EAAUs4I,EAAWY,SAASC;AACpCb,EAAaA,EAAW1yI,QAAQwzI,GAAqB,IACjDp4F,GACFm2F,GAAIkC,IAAInC,EAAKoB,EAAYt3F,EAAUhhD,GAEjC2iB,GACFw0H,GAAImC,IAAIpC,EAAKoB,EAAY31H,EAAU3iB,EAEvC,CA0CJ,GAEEu5I,GAAsB,KACtBX,GAAkBrpJ,GAAWA,EAAaA,EAAM8K,MAAMk/I,IAAjB,GACrCJ,GAAuB,UACvBC,GAAsB,IAAIpnJ,OAAOmnJ,GAAuB,KACxDK,GAAgBA,CAACC,EAAUC,EAAUC,KACvC,MAAMzC,EAAkC,KAA5BwC,EAASvE,MAAMh8H,UAAmBugI,EAASvE,MAAM1nI,KAAOisI,EAASvE,MAAM1nI,KAAOisI,EAASvE,MAC7FyE,EAAgBH,GAAYA,EAAS5E,SAAWlC,EAChDkH,EAAgBH,EAAS7E,SAAWlC;AAExC,IAAK,MAAM2F,KAAcwB,GAAgB7wJ,OAAOC,KAAK0wJ,IAC7CtB,KAAcuB,GAClBxB,GAAYnB,EAAKoB,EAAYsB,EAActB,UAAqBqB,EAAYD,EAASzE;AAI3F,IAAK,MAAMqD,KAAcwB,GAAgB7wJ,OAAOC,KAAK2wJ,IACnDxB,GAAYnB,EAAKoB,EAAYsB,EAActB,GAAauB,EAAcvB,GAAaqB,EAAYD,EAASzE;AAG5G,SAAS6E,GAAgBC,GACvB,OAAOA,EAAUlvJ,SAAS,OAExB,IAAIkvJ,EAAU3kJ,QAAQ81E,GAAkB,QAATA,IAAiB,OAGhD6uE,CAEJ,CAIA,IAAIC,MACAC,MACAC,MACAC,MACAC,GAAYA,CAACC,EAAgBC,EAAgBC,EAAYC,KAC3D,IAAIrnI;AACJ,MAAMsnI,EAAYH,EAAexF,WAAWyF;AAC5C,IACIrD,EACAh+F,EACAwhG,EAHA//E,EAAK;AAsBT,GAlBKq/E,KACHE,MACwB,SAApBO,EAAUvF,QACR3B,GACFiH,EAAUppH,UAAUx/B,IAAI2hJ,EAAU,MAEpCkH,EAAUxF,SAAWwF,EAAU3F,WAG7B,EAKA,IAImB,OAArB2F,EAAUnG,OACZ4C,EAAMuD,EAAUtF,MAAQ3oI,GAAImuI,eAAeF,EAAUnG;KAChD,GAAwB,EAApBmG,EAAUxF,QACnBiC,EAAMuD,EAAUtF,MAAQ3oI,GAAImuI,eAAe;IACtC,CAiBL,GAhBKR,KACHA,GAAgC,QAApBM,EAAUvF,OAExBgC,EAAMuD,EAAUtF,MAAQ3oI,GAAIouI,gBAC1BT,GArpBO,6BACC,+BAqpBY,EAApBM,EAAUxF,QAAc,UAAYwF,EAAUvF,OAE5CiF,IAAiC,kBAApBM,EAAUvF,QACzBiF,OAGAX,GAAc,KAAMiB,EAAWN,IA1pBb,MA4pBV5G,GAAY2D,EAAI,UAAY3D,GACpC2D,EAAI9lH,UAAUx/B,IAAIslJ,EAAI,QAAU3D,GAE9BkH,EAAU3F,WACZ,IAAKn6E,EAAK,EAAGA,EAAK8/E,EAAU3F,WAAW/qJ,SAAU4wE,EAC/CzhB,EAAYkhG,GAAUC,EAAgBI,EAAW9/E,EAAIu8E,GACjDh+F,GACFg+F,EAAInqI,YAAYmsC;AAKI,QAApBuhG,EAAUvF,MACZiF,MACyB,kBAAhBjD,EAAI3nI,UACb4qI,MAGN,CAgBA,OAfAjD,EAAI,QAAUzD,EAES,EAAjBgH,EAAUxF,UACZiC,EAAI,WACJA,EAAI,QAAU1D,EACd0D,EAAI,QAAUuD,EAAUzF,QAAU,GAClCkC,EAAI,QAAsC,OAA3B/jI,EAAKsnI,EAAU5F,gBAA4B1hI,EAAG2jI,IAC7D4D,EAAWL,GAAkBA,EAAevF,YAAcuF,EAAevF,WAAWyF,GAChFG,GAAYA,EAASxF,QAAUuF,EAAUvF,OAASmF,EAAelF,OAEjE0F,GAA0BR,EAAelF,WAK1C+B,GAEL2D,GAA4BA,CAACL,EAAWM,KAC1C3D,GAAIlC,SAAW;AACf,MAAM8F,EAAoB5vJ,MAAMC,KAAKovJ,EAAU9/H;AAC3C8/H,EAAU;AACd,IAAK,IAAI7/E,EAAKogF,EAAkBhxJ,OAAS,EAAG4wE,GAAM,EAAGA,IAAM,CACzD,MAAMzhB,EAAY6hG,EAAkBpgF;AAChCzhB,EAAU,UAAYu6F,GAAev6F,EAAU,UACjD8hG,GAAoB9hG,GAAWy9F,aAAaz9F,EAAW+hG,GAAc/hG,IACrEA,EAAU,QAAQ36C,SAClB26C,EAAU,eACVA,EAAU,eACVghG,OAEEY,GACFD,GAA0B3hG,EAAW4hG,EAEzC,CACA3D,GAAIlC,UAAY,GAEdiG,GAAYA,CAACV,EAAW9mC,EAAQmiC,EAAasF,EAAQC,EAAUC,KACjE,IACIniG,EADAoiG,EAAed,EAAU,SAAWA,EAAU,QAAQvgI,YAAcugI;AAKxE,IAHIc,EAAa7hI,YAAc6hI,EAAa/rI,UAAYkkI,IACtD6H,EAAeA,EAAa7hI,YAEvB2hI,GAAYC,IAAUD,EACvBD,EAAOC,KACTliG,EAAYkhG,GAAU,KAAMvE,EAAauF,EAAUZ,GAC/CthG,IACFiiG,EAAOC,GAAUjG,MAAQj8F,EACzBoiG,EAAa3E,aAAaz9F,EAAW+hG,GAAcvnC,OAKvD6nC,GAAeA,CAACJ,EAAQC,EAAUC,KACpC,IAAK,IAAIn9I,EAAQk9I,EAAUl9I,GAASm9I,IAAUn9I,EAAO,CACnD,MAAM02I,EAAQuG,EAAOj9I;AACrB,GAAI02I,EAAO,CACT,MAAMsC,EAAMtC,EAAMO;AAClBqG,GAAiB5G,GACbsC,IAEA+C,MACI/C,EAAI,QACNA,EAAI,QAAQ34I,SAEZs8I,GAA0B3D,MAG9BA,EAAI34I,SAER,CACF,GA4FEk9I,GAAc,SAACC,EAAWC,GAAyC,IAA7BC,EAAe9xJ,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA;AACvD,OAAI4xJ,EAAUxG,QAAUyG,EAAWzG,QACT,SAApBwG,EAAUxG,MACLwG,EAAU1G,SAAW2G,EAAW3G,SAEpC4G,GACIF,EAAU3G,QAAU4G,EAAW5G,MAK5C,EACIkG,GAAiB/hI,GACZA,GAAQA,EAAK,SAAWA,EAE7B8hI,GAAuB9hI,IAAUA,EAAK,QAAUA,EAAK,QAAUA,GAAMe,WACrE4hI,GAAQ,SAACnB,EAAUD,GAAwC,IAA7BmB,EAAe9xJ,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA;AAC/C,MAAMotJ,EAAMuD,EAAUtF,MAAQuF,EAASvF,MACjC2G,EAAcpB,EAAS5F,WACvBiH,EAActB,EAAU3F,WACxBxlI,EAAMmrI,EAAUvF,MAChB/mH,EAAOssH,EAAUnG;AACvB,IAAI0H;AACS,OAAT7tH,GAEAgsH,GAAoB,QAAR7qI,GAA+B,kBAARA,GAAkC6qI,IAGzD,SAAR7qI,GAAmB0qI,KAErBR,GAAckB,EAAUD,EAAWN,IAGnB,OAAhB2B,GAAwC,OAAhBC,EA3HX,SAACvB,EAAWyB,EAAOxB,EAAWyB,GAAoC,IAWjFhjI,EACAijI,EAZoDP,EAAe9xJ,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA,GACnEsyJ,EAAc,EACdC,EAAc,EACdC,EAAW,EACX3hF,EAAK,EACL4hF,EAAYN,EAAMlyJ,OAAS,EAC3ByyJ,EAAgBP,EAAM,GACtBQ,EAAcR,EAAMM,GACpBG,EAAYR,EAAMnyJ,OAAS,EAC3B4yJ,EAAgBT,EAAM,GACtBU,EAAcV,EAAMQ;AAGxB,KAAON,GAAeG,GAAaF,GAAeK,GAChD,GAAqB,MAAjBF,EACFA,EAAgBP,IAAQG;KACnB,GAAmB,MAAfK,EACTA,EAAcR,IAAQM;KACjB,GAAqB,MAAjBI,EACTA,EAAgBT,IAAQG;KACnB,GAAmB,MAAfO,EACTA,EAAcV,IAAQQ;KACjB,GAAIjB,GAAYe,EAAeG,EAAef,GACnDC,GAAMW,EAAeG,EAAef,GACpCY,EAAgBP,IAAQG,GACxBO,EAAgBT,IAAQG;KACnB,GAAIZ,GAAYgB,EAAaG,EAAahB,GAC/CC,GAAMY,EAAaG,EAAahB,GAChCa,EAAcR,IAAQM,GACtBK,EAAcV,IAAQQ;KACjB,GAAIjB,GAAYe,EAAeI,EAAahB,GACrB,SAAxBY,EAActH,OAA0C,SAAtB0H,EAAY1H,OAChD2F,GAA0B2B,EAAcrH,MAAMl7H,eAEhD4hI,GAAMW,EAAeI,EAAahB,GAClCpB,EAAU7D,aAAa6F,EAAcrH,MAAOsH,EAAYtH,MAAMp7H,aAC9DyiI,EAAgBP,IAAQG,GACxBQ,EAAcV,IAAQQ;KACjB,GAAIjB,GAAYgB,EAAaE,EAAef,GACrB,SAAxBY,EAActH,OAA0C,SAAtB0H,EAAY1H,OAChD2F,GAA0B4B,EAAYtH,MAAMl7H,eAE9C4hI,GAAMY,EAAaE,EAAef,GAClCpB,EAAU7D,aAAa8F,EAAYtH,MAAOqH,EAAcrH,OACxDsH,EAAcR,IAAQM,GACtBI,EAAgBT,IAAQG;IACnB,CAGH,IAFFC,GAAY,EAEL3hF,EAAKyhF,EAAazhF,GAAM4hF,IAAa5hF,EACxC,GAAIshF,EAAMthF,IAA2B,OAApBshF,EAAMthF,GAAIo6E,OAAkBkH,EAAMthF,GAAIo6E,QAAU4H,EAAc5H,MAAO,CACpFuH,EAAW3hF;AACX,KACF,CAGA2hF,GAAY,GACdH,EAAYF,EAAMK,GACdH,EAAUjH,QAAUyH,EAAczH,MACpCh8H,EAAOkhI,GAAU6B,GAASA,EAAMI,GAAc5B,EAAW6B,EAAU9B,IAEnEqB,GAAMM,EAAWQ,EAAef,GAChCK,EAAMK,UACNpjI,EAAOijI,EAAUhH,OAEnBwH,EAAgBT,IAAQG,KAExBnjI,EAAOkhI,GAAU6B,GAASA,EAAMI,GAAc5B,EAAW4B,EAAa7B,GACtEmC,EAAgBT,IAAQG,IAEtBnjI,GAEA8hI,GAAoBwB,EAAcrH,OAAOwB,aAAaz9H,EAAM+hI,GAAcuB,EAAcrH,OAG9F,CAEEiH,EAAcG,EAChBrB,GACEV,EACwB,MAAxB0B,EAAMQ,EAAY,GAAa,KAAOR,EAAMQ,EAAY,GAAGvH,MAC3DsF,EACAyB,EACAG,EACAK,GAEOL,EAAcK,GACvBnB,GAAaU,EAAOG,EAAaG,EAErC,CAzFqB,CA4HArF,EAAK4E,EAAarB,EAAWsB,EAAaH,GAChC,OAAhBG,GACe,OAApBrB,EAASpG,SACX4C,EAAIjpH,YAAc,IAEpBitH,GAAUhE,EAAK,KAAMuD,EAAWsB,EAAa,EAAGA,EAAYhyJ,OAAS,IAC5C,OAAhB+xJ,GACTP,GAAaO,EAAa,EAAGA,EAAY/xJ,OAAS,GAEhDowJ,IAAqB,QAAR7qI,IACf6qI,SAEO6B,EAAgB9E,EAAI,SAC7B8E,EAAc/hI,WAAWgU,YAAcE,EAC9BusH,EAASpG,SAAWnmH,IAC7B+oH,EAAI3hJ,KAAO44B,EAEf,EACI0uH,GAAgC3F,IAClC,MAAMx8H,EAAaw8H,EAAIx8H;AACvB,IAAK,MAAMw+B,KAAax+B,EACtB,GAA2B,IAAvBw+B,EAAU//B,SAAgB,CAC5B,GAAI+/B,EAAU,QAAS,CACrB,MAAM+6F,EAAW/6F,EAAU;AAC3BA,EAAUysE;AACV,IAAK,MAAMm3B,KAAepiI,EACxB,GAAIoiI,IAAgB5jG,EAClB,GAAI4jG,EAAY,UAAY5jG,EAAU,SAAwB,KAAb+6F,GAC/C,GAA6B,IAAzB6I,EAAY3jI,WAAmB86H,IAAa6I,EAAY7vH,aAAa,SAAWgnH,IAAa6I,EAAY,UAAqC,IAAzBA,EAAY3jI,UAAkB86H,IAAa6I,EAAY,QAAS,CACvL5jG,EAAUysE;AACV,KACF,OAEA,GAA6B,IAAzBm3B,EAAY3jI,UAA2C,IAAzB2jI,EAAY3jI,UAAqD,KAAnC2jI,EAAY7uH,YAAYC,OAAe,CACrGgrB,EAAUysE;AACV,KACF,CAIR,CACAk3B,GAA6B3jG,EAC/B,GAGA6jG,GAAgB,GAChBC,GAAgC9F,IAClC,IAAIh+H,EACA+jI,EACAC;AACJ,IAAK,MAAMhkG,KAAag+F,EAAIx8H,WAAY,CACtC,GAAIw+B,EAAU,UAAYhgC,EAAOggC,EAAU,UAAYhgC,EAAKe,WAAY,CACtEgjI,EAAmB/jI,EAAKe,WAAWS;AACnC,MAAMu5H,EAAW/6F,EAAU;AAC3B,IAAKgkG,EAAID,EAAiBlzJ,OAAS,EAAGmzJ,GAAK,EAAGA,IAE5C,GADAhkI,EAAO+jI,EAAiBC,IACnBhkI,EAAK,UAAYA,EAAK,SAAWA,EAAK,UAAYggC,EAAU,QAC/D,GAAIikG,GAAoBjkI,EAAM+6H,GAAW,CACvC,IAAImJ,EAAmBL,GAAcrxJ,MAAMsH,GAAMA,EAAEqqJ,mBAAqBnkI;AACxE+gI,MACA/gI,EAAK,QAAUA,EAAK,SAAW+6H,EAC3BmJ,GACFA,EAAiBC,iBAAiB,QAAUnkG,EAAU,QACtDkkG,EAAiBE,cAAgBpkG,IAEjChgC,EAAK,QAAUggC,EAAU,QACzB6jG,GAAcvxJ,KAAK,CACjB8xJ,cAAepkG,EACfmkG,iBAAkBnkI,KAGlBA,EAAK,SACP6jI,GAAcjxJ,KAAKyxJ,IACbJ,GAAoBI,EAAaF,iBAAkBnkI,EAAK,WAC1DkkI,EAAmBL,GAAcrxJ,MAAMsH,GAAMA,EAAEqqJ,mBAAqBnkI,IAChEkkI,IAAqBG,EAAaD,gBACpCC,EAAaD,cAAgBF,EAAiBE,eAElD,GAGN,MAAYP,GAAcxsJ,MAAMyC,GAAMA,EAAEqqJ,mBAAqBnkI,KAC3D6jI,GAAcvxJ,KAAK,CACjB6xJ,iBAAkBnkI,GAK5B,CAC2B,IAAvBggC,EAAU//B,UACZ6jI,GAA6B9jG,EAEjC,GAEEikG,GAAsBA,CAACK,EAAgBvJ,IACT,IAA5BuJ,EAAerkI,SAC2B,OAAxCqkI,EAAevwH,aAAa,SAAiC,KAAbgnH,GAGhDuJ,EAAevwH,aAAa,UAAYgnH,EAK1CuJ,EAAe,UAAYvJ,GAGX,KAAbA,EAELuH,GAAoBiC,IAEpBA,EAAM5I,SAAW4I,EAAM5I,QAAQiC,KAAO2G,EAAM5I,QAAQiC,IAAI,MACxD2G,EAAM3I,YAAc2I,EAAM3I,WAAWhpJ,IAAI0vJ,KAqGzCkC,GAAmBA,CAACvjE,EAASwjE,KAC3BA,IAAsBxjE,EAAQyjE,mBAAqBD,EAAkB,QACvEA,EAAkB,OAAOnyJ,KAAK,IAAImhF,SAAS35E,GAAMmnF,EAAQyjE,kBAAoB5qJ,MAG7E6qJ,GAAiBA,CAAC1jE,EAAS2jE,KAI7B,GAFE3jE,EAAQ86D,SAAW,KAEC,EAAlB96D,EAAQ86D,SAMZ,OAFAyI,GAAiBvjE,EAASA,EAAQ4jE,qBAE3BC,QADgBC,GAAc9jE,EAAS2jE;AAJ5C3jE,EAAQ86D,SAAW,KAOnBgJ,GAAgBA,CAAC9jE,EAAS2jE,KAC5B,MAAM5G,EAAM/8D,EAAQ68D,cACdkH,GAA2C/jE,EAAQgkE,UAAU/F,UAjiC1D,QAkiCHp5C,EAAW7kB,EAAQikE;AACzB,IAAIC;AAwBJ,OAvBIP,GAEA3jE,EAAQ86D,SAAW,IACf96D,EAAQmkE,oBACVnkE,EAAQmkE,kBAAkBxyJ,KAAIyyJ,IAAA,IAAEjyF,EAAYvtD,GAAMw/I;AAAA,OAAKC,GAASx/C,EAAU1yC,EAAYvtD,EAAM,IAC5Fo7E,EAAQmkE,0BAGZG,GAAmBvH,EAAK,qBAEtBmH,EAAeG,GAASx/C,EAAU,uBAGpCy/C,GAAmBvH,EAAK,uBAEtBmH,EAAeG,GAASx/C,EAAU,wBAGtCy/C,GAAmBvH,EAAK,uBAEtBmH,EAAevvG,GAAQuvG,OAAoBG,GAASx/C,EAAU,yBAEhEk/C,IACOpvG,GAAQuvG,OAAoBK,GAAgBvkE,EAAS6kB,EAAU8+C,MAEpEhvG,GAAUA,CAACuvG,EAAc30J,IAAOi1J,GAAWN,GAAgBA,EAAa32H,KAAKh+B,GAAMA,IACnFi1J,GAAcN,GAAiBA,aAAwB1xE,SAAW0xE,GAAgBA,EAAa32H,MAAqC,mBAAtB22H,EAAa32H,KAC3Hg3H,GAAkB32C,MAAO5tB,EAAS6kB,EAAU8+C,KAC9C,IAAI5tJ;AACJ,MAAMgnJ,EAAM/8D,EAAQ68D,cACd4H,GAAiCzkE,EAAQgkE,UAAU/F,UAlkChD,QAmkCHyG,EAAK3H,EAAI;AACX4G,GAlqBc3jE,KAClB,MAAM09D,EAAU19D,EAAQgkE,UAClBjH,EAAM/8D,EAAQ68D,cACd/kJ,EAAQ4lJ,EAAQ5C,QAChB6J,GAA6CjH,EAAQO,UAtalD,QAuaHb,EAAWI,GACfT,EAAIz9H,WAAay9H,EAAIz9H,WAAay9H,EAAI/5E,cACtC06E;AAEU,GAAR5lJ,IACFilJ,EAAI,QAAUK,EACdL,EAAI9lH,UAAUx/B,IAAI2lJ,EAAW,OAE/BuH,GAAiB,EAbC3kE,CAmqBHA;AAEf,MAAM4kE,GAAiC5kE,EAAQgkE,UAAU/F,UAvkChD;AAykCP4G,GAAW7kE,EAAS6kB,EAAUk4C,EAAK4G,GAEjCe,IACFA,EAAG/yJ,KAAKygD,GAAOA,MACf2qG,EAAI,gBAEN6H,IACAH;AACA,CACE,MAAMK,EAAwC,OAApB/uJ,EAAKgnJ,EAAI,QAAkBhnJ,EAAK,GACpDgvJ,EAAaA,IAAMC,GAAoBhlE;AACb,IAA5B8kE,EAAiBl1J,OACnBm1J,KAEAvyE,QAAQwhC,IAAI8wC,GAAkBv3H,KAAKw3H,GACnC/kE,EAAQ86D,SAAW,EACnBgK,EAAiBl1J,OAAS,EAE9B,GAEEi1J,GAAaA,CAAC7kE,EAAS6kB,EAAUk4C,EAAK4G,KACxC,IACE9+C,EAAWA,EAASpe,SAElBzG,EAAQ86D,UAAW,GAGnB96D,EAAQ86D,SAAW,EAxLR,SAAC96D,EAASilE,GAA4C,IAA3BtB,EAAah0J,UAAAC,OAAA,YAAAD,UAAA,IAAAA,UAAA;AACvD,IAAIoG,EAAI4P,EAAIoT,EAAIC;AAChB,MAAM8iI,EAAU97D,EAAQ68D,cAClBa,EAAU19D,EAAQgkE,UAClBzD,EAAWvgE,EAAQklE,SAAW9K,GAAS,KAAM,MAC7C+K,GAr0BMpmI,EAq0BakmI,IAr0BIlmI,EAAKg8H,QAAU/zD,GAq0BAi+D,EAAkBx/H,GAAE,KAAM,KAAMw/H;AAr0BhElmI;AA60BZ,GAPAu6H,EAAcwC,EAAQ1mI,QAClBsoI,EAAQ0H,mBACVD,EAAUzK,QAAUyK,EAAUzK,SAAW,CAAC,EAC1CgD,EAAQ0H,iBAAiBzzJ,KACvB0zJ,IAAA,IAAEC,EAAUzqD,GAAUwqD;AAAA,OAAKF,EAAUzK,QAAQ7/C,GAAaihD,EAAQwJ,EAAS,KAG3E3B,GAAiBwB,EAAUzK,QAC7B,IAAK,MAAM9oJ,KAAO9C,OAAOC,KAAKo2J,EAAUzK,SAClCoB,EAAQzoH,aAAazhC,KAAS,CAAC,MAAO,MAAO,QAAS,SAASlB,SAASkB,KAC1EuzJ,EAAUzK,QAAQ9oJ,GAAOkqJ,EAAQlqJ;AAmBrC,GAfFuzJ,EAAUpK,MAAQ,KAClBoK,EAAUrK,SAAW,EACrB96D,EAAQklE,QAAUC,EAClBA,EAAUnK,MAAQuF,EAASvF,MAAQc,EAAQx8H,YAAcw8H,EAEvD1C,EAAU0C,EAAQ,QAEpB+D,GAA+C,IAAP,EAAlBnC,EAAQ5C,SAE5BzB,EAAayC,EAAQ,QACrBgE,MAEF4B,GAAMnB,EAAU4E,EAAWxB,GAEzB3G,GAAIlC,SAAW,EACXiF,GAAmB,CACrB8C,GAA6BsC,EAAUnK;AACvC,IAAK,MAAMuK,KAAgB3C,GAAe,CACxC,MAAMS,EAAiBkC,EAAarC;AACpC,IAAKG,EAAe,QAAS,CAC3B,MAAMmC,EAAkBnzI,GAAImuI,eAAe;AAC3CgF,EAAgB,QAAUnC,EAC1BA,EAAevjI,WAAW08H,aAAa6G,EAAe,QAAUmC,EAAiBnC,EACnF,CACF,CACA,IAAK,MAAMkC,KAAgB3C,GAAe,CACxC,MAAMS,EAAiBkC,EAAarC,iBAC9BuC,EAAcF,EAAapC;AACjC,GAAIsC,EAAa,CACf,MAAMC,EAAgBD,EAAY3lI;AAClC,IAAI6lI,EAAmBF,EAAY7lI;AACnC,CACE,IAAI4lI,EAAmD,OAAhCzvJ,EAAKstJ,EAAe,gBAA4BttJ,EAAG6vJ;AAC1E,KAAOJ,GAAiB,CACtB,IAAIK,EAA4C,OAAjClgJ,EAAK6/I,EAAgB,SAAmB7/I,EAAK;AAC5D,GAAIkgJ,GAAWA,EAAQ,UAAYxC,EAAe,SAAWqC,IAAkBG,EAAQ/lI,WAAY,CAEjG,IADA+lI,EAAUA,EAAQjmI,YACXimI,IAAYxC,IAA8B,MAAXwC,SAA2BA,EAAQ,UACvEA,EAAqB,MAAXA,SAA2BA,EAAQjmI;AAE/C,IAAKimI,IAAYA,EAAQ,QAAS,CAChCF,EAAmBE;AACnB,KACF,CACF,CACAL,EAAkBA,EAAgBI,eACpC,CACF,GACKD,GAAoBD,IAAkBrC,EAAevjI,YAAcujI,EAAezjI,cAAgB+lI,IACjGtC,IAAmBsC,KAChBtC,EAAe,SAAWA,EAAe,UAC5CA,EAAe,QAAUA,EAAe,QAAQvjI,WAAWkT,UAE7D0yH,EAAclJ,aAAa6G,EAAgBsC,GACX,IAA5BtC,EAAerkI,WACjBqkI,EAAe73B,OAA0C,OAAhCzyG,EAAKsqI,EAAe,UAAmBtqI,IAItEsqI,GAAiD,mBAAxBoC,EAAY,SAA0BA,EAAY,QAAQpC,EACrF,MACkC,IAA5BA,EAAerkI,WACb2kI,IACFN,EAAe,QAA0C,OAA/BrqI,EAAKqqI,EAAe73B,SAAkBxyG,GAElEqqI,EAAe73B,UAGrB,CACF,CACIs0B,IACF4C,GAA6ByC,EAAUnK,OAEzCgC,GAAIlC,UAAY,EAChB8H,GAAchzJ,OAAS,EAEzBypJ,QACF,CAjGiB,CA6LIr5D,EAAS6kB,EAAU8+C,EAMtC,CAFE,MAAOpzJ,GACP+uC,GAAa/uC,EAAGyvF,EAAQ68D,cAC1B,CACA,OAAO,MAELmI,GAAuBhlE,IACTA,EAAQgkE,UAAU/F;AAAlC,MACMlB,EAAM/8D,EAAQ68D,cAEdh4C,EAAW7kB,EAAQikE,eACnBT,EAAoBxjE,EAAQ4jE;AAEhCS,GAASx/C,EAAU,sBAErBy/C,GAAmBvH,EAAK,sBACA,GAAlB/8D,EAAQ86D,SAkBVuJ,GAASx/C,EAAU,sBAErBy/C,GAAmBvH,EAAK,wBAnBxB/8D,EAAQ86D,SAAW,GAEjBgL,GAAgB/I,GAGhBsH,GAASx/C,EAAU,oBAErBy/C,GAAmBvH,EAAK,oBAGtB/8D,EAAQ+lE,iBAAiBhJ,GACpByG,GACHwC,MAWJhmE,EAAQimE,oBAAoBlJ,GAGxB/8D,EAAQyjE,oBACVzjE,EAAQyjE,oBACRzjE,EAAQyjE,0BAEY,IAAlBzjE,EAAQ86D,SACVoL,QAAexC,GAAe1jE,QAEhCA,EAAQ86D,UAAY,KAGpBkL,GAAcG,IAEdL,GAAgBzzI,GAAIilB,iBAEtB4uH,QAAepJ,GAAUx+C,GAAK,UAAW,CAAE1a,OAAQ,CAAEwiE,UAAW7N,QAE9D8L,GAAWA,CAACx/C,EAAU76E,EAAQ1lB,KAChC,GAAIugG,GAAYA,EAAS76E,GACvB,IACE,OAAO66E,EAAS76E,GAAQ1lB,EAG1B,CAFE,MAAO/T,GACP+uC,GAAa/uC,EACf,GAIA+zJ,GAAqBA,CAACvH,EAAKsJ,KAE3BvJ,GAAUC,EAAK,WAAasJ,EAAe,CACzC7wC,WACAn2D,YACAukC,OAAQ,CACNwiE,UAAW7N,MAKfuN,GAAmB/I,GAAQA,EAAInsE,aAAa,WAAY,IAgCxD01E,GAAiBA,CAACC,EAAM7I,EAAS5lJ,KACnC,IAAI/B;AACJ,MAAM3D,EAAYm0J,EAAKn0J;AAoBvB,GAnBsB,GAAlBsrJ,EAAQ5C,SAAwB,EAARhjJ,GAC1B8hJ,GAAyC5qJ,SACtCw3J,GAAW13J,OAAO2D,eAAeL,EAAWo0J,EAAQ,CACnDpxJ,QAAgB,IAAD,IAAAqxJ,EAAA92J,UAAAC,OAANH,EAAI,IAAAuB,MAAAy1J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJj3J,EAAIi3J,GAAA/2J,UAAA+2J;AACX,MAAM1mE,EAAU48D,GAAWvsJ,MACrBw0G,EAAW7kB,EAAQikE;AACzB,GAAKp/C,EAKE,CACL,MAAMzyD,EAAKyyD,EAAS2hD;AACN,mBAAPp0G,GAAqBA,EAAG9/C,KAAKuyG,KAAap1G,EACnD,MAPEuwF,EAAQ2mE,iBAAiBp5H,MAAMq5H,IAC7B,MAAMx0G,EAAKw0G,EAAUJ;AACP,mBAAPp0G,GAAqBA,EAAG9/C,KAAKs0J,KAAcn3J,EAAK,GAM7D,MAIFiuJ,EAAQmJ,UAAW,CACjBN,EAAKnuD,WACPslD,EAAQoJ,WAAaP,EAAKnuD;AAE5B,MAAM2uD,EAAUj4J,OAAOkzB,QAAQ07H,EAAQmJ;AA0BvC,GAzBAE,EAAQp1J,KAAIq1J,IAAkC,IAAhC7I,GAAa8I,IAAaD;AACpB,GAAdC,GAA4B,EAARnvJ,GAA2B,GAAdmvJ,EACnCn4J,OAAO2D,eAAeL,EAAW+rJ,EAAY,CAC3CzrJ,MACE,OA9DS4yJ,EA8DanH,EA9DAvB,GA8DNvsJ,MA9DsB62J,iBAAiBx0J,IAAI4yJ;AAAxD6B,IAAM7B,CA+DX,EACA/qJ,IAAIiuB,GA/DC0iH,EAACyR,EAAK2I,EAAUnM,EAAQuE,KACrC,MAAM19D,EAAU48D,GA+DGvsJ,MA9Db0sJ,EAAM/8D,EAAQ68D,cACduK,EAASpnE,EAAQknE,iBAAiBx0J,IAAI4yJ,GACtCxtJ,EAAQkoF,EAAQ86D,QAChBj2C,EAAW7kB,EAAQikE;AAx3BFoD,IAACC,EAAWC;AAAXD,EAy3BInO,EAz3BOoO,EAy3BC7J,EAAQmJ,UAAUvB,GAAU,GAAhEnM,EAx3BiB,MAAbmO,GAAsB7O,EAAc6O,GAYjCA,EAXU,EAAXC,EACmB,UAAdD,IAA8C,KAAdA,KAAsBA,GAEhD,EAAXC,EACK1yD,WAAWyyD,GAEL,EAAXC,EACKtnJ,OAAOqnJ,GAETA;AA+2BT,MAAME,EAAa94I,OAAO81D,MAAM4iF,IAAW14I,OAAO81D,MAAM20E;AAExD,MAAe,EAARrhJ,aAAcsvJ,IADEjO,IAAWiO,IAAWI,IAE3CxnE,EAAQknE,iBAAiB3sJ,IAAI+qJ,EAAUnM,GACnCt0C,GAAU,CACZ,GAAI64C,EAAQoJ,YAAsB,IAARhvJ,EAAa,CACrC,MAAM2vJ,EAAe/J,EAAQoJ,WAAWxB;AACpCmC,GACFA,EAAa91J,KAAK+1J,IAChB,IACE7iD,EAAS6iD,GAAiBvO,EAAQiO,EAAQ9B,EAG5C,CAFE,MAAO/0J,GACP+uC,GAAa/uC,EAAGwsJ,EAClB,IAGN,CAC2B,IAAjB,GAALjlJ,IACH4rJ,GAAe1jE,KAEnB,CACF,EA5BakrD,CAgEM76I,EAAM8tJ,EAAY31H,EAAUk1H,EACvC,EACA/qJ,gBACAknE,gBAEe,EAAR/hE,GAA2B,GAAdmvJ,GACtBn4J,OAAO2D,eAAeL,EAAW+rJ,EAAY,CAC3C/oJ,QAAgB,IAAD,IAAAuyJ,EAAAh4J,UAAAC,OAANH,EAAI,IAAAuB,MAAA22J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJn4J,EAAIm4J,GAAAj4J,UAAAi4J;AACX,IAAIt8B;AACJ,MAAMqxB,EAAMC,GAAWvsJ;AACvB,OAAiE,OAAzDi7H,EAAa,MAAPqxB,SAAuBA,EAAIkL,4BAAwCv8B,EAAI/9F,WACnF,IAAIu6H;AACJ,OAAqC,OAA7BA,EAAMnL,EAAIsH,uBAAmC6D,EAAI3J,MAAe1uJ,EAAK,GAEjF,GAEJ,IAEU,EAARqI,EAAW,CACb,MAAMiwJ,EAAqC,IAAI36I;AAC/Chb,EAAU41J,yBAA2B,SAASC,EAAUphG,EAAUr+B,GAChEw0H,GAAIkL,UACF,IAAI58B;AACJ,MAAMg6B,EAAWyC,EAAmBr1J,IAAIu1J;AACxC,GAAI53J,KAAKgC,eAAeizJ,GACtB98H,EAAWn4B,KAAKi1J,UACTj1J,KAAKi1J;IACP,IAAIlzJ,EAAUC,eAAeizJ,IAAuC,iBAAnBj1J,KAAKi1J,IAA0Bj1J,KAAKi1J,IAAa98H,EACvG;AACK,GAAgB,MAAZ88H,EAAkB,CAC3B,MAAMtlE,EAAU48D,GAAWvsJ,MACrB83J,EAAoB,MAAXnoE,SAA2BA,EAAQ86D;AAClD,GAAIqN,KAAqB,EAATA,IAAwB,IAATA,GAAgB3/H,IAAaq+B,EAAU,CACpE,MAAMg+C,EAAW7kB,EAAQikE,eACnBj1I,EAAsC,OAA7Bs8G,EAAMoyB,EAAQoJ,mBAA+Bx7B,EAAI28B;AACvD,MAATj5I,GAAyBA,EAAMhgB,SAASo5J,IACR,MAA1BvjD,EAASujD,IACXvjD,EAASujD,GAAc91J,KAAKuyG,EAAUr8E,EAAUq+B,EAAUohG,EAC5D,GAEJ,CACA,MACF,EACA53J,KAAKi1J,IAAyB,OAAb98H,GAA+C,kBAAnBn4B,KAAKi1J,KAAkC98H,CAAQ,GAEhG,EACA+9H,EAAK8B,mBAAqBr3J,MAAMC,KACd,IAAIE,IAAI,IACnBrC,OAAOC,KAAkC,OAA5BgH,EAAK2nJ,EAAQoJ,YAAsB/wJ,EAAK,CAAC,MACtDgxJ,EAAQ9rJ,QACTqtJ,IAAA,IAAEhsI,EAAGuuB,GAAEy9G;AAAA,OAAY,GAAPz9G,EAAE,EAAO,IAErBl5C,KAAI42J,IAAoB,IAAlBjD,EAAUz6G,GAAE09G;AAClB,IAAIj9B;AACJ,MAAM28B,EAAWp9G,EAAE,IAAMy6G;AAKzB,OAJAyC,EAAmBxtJ,IAAI0tJ,EAAU3C,GACtB,IAAPz6G,EAAE,KACgC,OAAnCygF,EAAMoyB,EAAQ0H,mBAAqC95B,EAAIj6H,KAAK,CAACi0J,EAAU2C,KAEnEA,CAAQ,MAIvB,CACF,CACA,OAAO1B,GAoELiC,GAAyB3jD,IAEzBw/C,GAASx/C,EAAU,sBA6DnB4jD,GAAuB1L,IACzB,MAAM2L,EAAgB3L,EAAI,QAAU1qI,GAAIs2I,cACtC;AAEFD,EAAc,WACd3L,EAAIP,aAAakM,EAAe3L,EAAIp9H,aAElCipI,GAAsB/jD,IAEtBw/C,GAASx/C,EAAU,yBAqJnBgkD,GAAwBA,CAAC9L,EAAK/8D,EAAS1lD,EAAWwuH,KAChDxuH,GACFA,EAAU3oC,KAAIo3J,IAA4B,IAA1BjxJ,EAAO7I,EAAM+6B,GAAO++H;AAClC,MAAM92J,EAAS+2J,GAAsBjM,EAAKjlJ,GACpCmxJ,EAAUC,GAAkBlpE,EAASh2D,GACrC06B,EAAOykG,GAAiBrxJ;AAC9BklJ,GAAImC,IAAIltJ,EAAQhD,EAAMg6J,EAASvkG,IAC9Bs7B,EAAQopE,cAAgBppE,EAAQopE,eAAiB,IAAI/3J,UAAW2rJ,GAAIkC,IAAIjtJ,EAAQhD,EAAMg6J,EAASvkG,IAAM,KAIxGwkG,GAAoBA,CAAClpE,EAAS7tB,IAAgBklC,IAChD,IAE0B,IAAlBrX,EAAQ86D,QACV96D,EAAQikE,eAAe9xF,GAAYklC,IAElCrX,EAAQmkE,kBAAoBnkE,EAAQmkE,mBAAqB,IAAI9yJ,KAAK,CAAC8gE,EAAYklC,GAKtF,CAFE,MAAO9mG,GACP+uC,GAAa/uC,EACf,GAEEy4J,GAAwBA,CAACjM,EAAKjlJ,IACpB,EAARA,EACKwmG,GACFy+C,EAELoM,GAAoBrxJ,GAAUuxJ,GAA0B,CAC1DvjJ,QAAyB,IAAP,EAARhO,GACV+N,QAAyB,IAAP,EAAR/N,IACQ,IAAP,EAARA,GAEDwxJ,GAA2B,IAAItwJ,QAC/B4jJ,GAAcD,GAAQ2M,GAAS52J,IAAIiqJ,GAoBnC2B,GAAoBA,CAACvB,EAAKoB,IAAeA,KAAcpB,EACvDz9G,GAAeA,CAAC/uC,EAAG8sD,OAAWzuD,QAAQF,OAAO6B,EAAG8sD,GAChDksG,GAA6B,IAAIn8I,IACjCo8I,GAAaA,CAAC9L,EAAS19D,EAASypE,KAClC,MAAMC,EAAahM,EAAQO,UAAUxyI,QAAQ,KAAM,KAC7Ck+I,EAAWjM,EAAQkM,eACnBxsC,EAASmsC,GAAW72J,IAAIi3J;AAC9B,GAAIvsC,EACF,OAAOA,EAAOssC;AAEhB,CACE,MAAMG,EAAcC,IAClBP,GAAWhvJ,IAAIovJ,EAAUG,GAClBA,EAAeJ;AAExB,OAAQC,GACN,IAAK,uBACH,OAAOn3E,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7p5BlC,WACC,GAAIt9E,EAAsC,OAAOQ;AACjDR,EAAuC,EACvClsE,OAAO2D,eAAe+oE,EAA2B,aAAc,CAAEpmE;AACjE,MAAM2O,EAAQ25E,KAGRqsE,EAAkB,MACtBluI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmD,WACP,CAEAizF,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,mBAAoBzzF,KAAMnD,KAAKmD,MAAQuQ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACrJ;AAIF,OAFAm4J,EAAgB9nF,MAZW,omCAa3BzG,EAA0BwuF,iBAAmBD,EACtCvuF,CACR,CApBA,GA8p5BS,IAAGjuC,KAAKs8H,EAAYvqH;AACtB,IAAK,4BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAvi5BlC,WACC,GAAIp9E,EAA0C,OAAOO;AACrDP,EAA2C,EAC3CpsE,OAAO2D,eAAegpE,EAA+B,aAAc,CAAErmE;AACrE,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVkiB,EAAUvjB,EAAcC,uBAGxB0vF,EAAoB,CACxBC,MAAO,IACPz+D,OAAQ,IACR0+D,MAAO,KAEHC,EAAsB,MAC1BvuI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKg6J,kCAAoCtmJ,EAAMo8E,YAAY9vF,KAAM,oCAAqC,GACtGA,KAAKpB,YACLoB,KAAKqgF,YACLrgF,KAAK6qD,YACL7qD,KAAKmD,KAAO,SACZnD,KAAKi6J,oBACP,CACAC,6BAA6Bh6J,GAC3BA,EAAEonG,kBACFtnG,KAAKm6J,aAAan6J,KAAKqgF,SACzB,CAIA85E,YAAYC,GAEV,GAAIA,IADgBp6J,KAAKqgF,SACQ,CAC/B,MAAMi9B,iBAAEA,GAAqBt9G,KAAKg6J,kCAAkCz9F,KAAK,CACvE8jB,SAAU+5E;AAEP98C,IACHt9G,KAAKqgF,SAAW+5E,EACZp6J,KAAKi6J,gBACPj6J,KAAKi6J,cAAc55E,SAAW+5E,GAGpC,CACA,OAAOj4E,QAAQC,SACjB,CAIAi4E,YAAYt1J,GAEV,OADA/E,KAAK6qD,SAAW9lD,EACTo9E,QAAQC,SACjB,CACAk4E,mBACE,OAAQt6J,KAAKmD,MACX,IAAK,QACH,OAAOiqF,EAAQ7hB;AACjB,IAAK,QACH,OAAO6hB,EAAQ3hB;AACjB,QACE,OAAO2hB,EAAQ5hB,uDAErB,CACAwqB,oBACEh2F,KAAKi6J,cAAgBj6J,KAAKgtD,GAAGn9B,cAAc,2BACvC7vB,KAAKi6J,gBACPj6J,KAAKi6J,cAAc55E,SAAWrgF,KAAKqgF,SAEvC,CACA+V,SACE,MAAMmkE,EAAW,IAAGX,EAAkB55J,KAAKmD,QACrCszF,EAAoBjJ,EAAQpjB,oBAAoB;AACtD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,yBAA2B52F,KAAKi6J,cAAgBvmJ,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,mBAAsB8U,EAAM0hB,EAAEmlI,EAAS,KAAM7mJ,EAAM0hB,EAAE,SAAU,CAAE5a,GAAK,GAAExa,KAAKpB,eAAgBwT,KAAM,SAAU,gBAAiBpS,KAAKqgF,SAAU,gBAAkB,GAAErgF,KAAKpB,gBAAiB,gBAAiBoB,KAAK6qD,SAAUA,SAAU7qD,KAAK6qD,SAAUisC,QAASA,IAAM92F,KAAKm6J,aAAan6J,KAAKqgF,WAAa3sE,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,UAAY8U,EAAM0hB,EAAEqhE,EAAmB,CAAE73F,KAAMoB,KAAKs6J,uBAAyB5mJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CiZ,GAAK,GAAExa,KAAKpB,gBAAiBg4F,MAAO,oBAAqBK,KAAM,SAAU,kBAAoB,GAAEj3F,KAAKpB,eAAgBu8H,QAASn7H,KAAKqgF,UAAY3sE,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,8CAC9wB,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA+5J,EAAoBnoF,MAvEW,2yFAwE/BxG,EAA8BovF,sBAAwBT,EAC/C3uF,CACR,CAjFA,GAwi5BS,IAAGluC,KAAKs8H,EAAYvqH;AACtB,IAAK,yBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAz74BlC,WACC,GAAI95E,EAAuC,OAAOC;AAClDD,EAAwC,EACxC1vE,OAAO2D,eAAegsE,EAA4B,aAAc,CAAErpE;AAClE,MAAM2O,EAAQ25E,KACRotE,EAAmBnsF;AACzBrE,EAAcC;AAOd,MAEMwwF,EAAmB,MACvBlvI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK26J,mBAAqBjnJ,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK46J,qBAAuBlnJ,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAKytD,YACLztD,KAAK6qD,YACL7qD,KAAK+E,aACL/E,KAAKu/G,YACP,CAMAs7C,mBAAmB36J,GACjBF,KAAK27E,SACLz7E,EAAEonG,iBACJ,CAMAwzD,qBAAqB56J,GACnBF,KAAK65H,WACL35H,EAAEonG,iBACJ,CAQAiW,eACE,IAAI73G,EAAI4P;AACRtV,KAAKytD,kBACwB,QAArB/nD,EAAK1F,KAAK+6J,iBAAmBr1J,SAAyBA,EAAG40H;AACjE,MAAMhd,iBAAEA,GAAqBt9G,KAAK26J,mBAAmBp+F,KAAK,CAAEx3D,MAAO/E,KAAK+E;AACpEu4G,IACFt9G,KAAKytD,kBACwB,QAArBn4C,EAAKtV,KAAK+6J,iBAAmBzlJ,SAAyBA,EAAGilH,oBAErE,CAQAhd,iBACE,IAAI73G,EAAI4P;AACRtV,KAAKytD,kBACwB,QAArB/nD,EAAK1F,KAAK+6J,iBAAmBr1J,SAAyBA,EAAG60H;AACjE,MAAMjd,iBAAEA,GAAqBt9G,KAAK46J,qBAAqBr+F,KAAK,CAAEx3D,MAAO/E,KAAK+E;AACtEu4G,IACFt9G,KAAKytD,kBACwB,QAArBn4C,EAAKtV,KAAK+6J,iBAAmBzlJ,SAAyBA,EAAGglH,kBAErE,CAMA/c,uBACE,IAAI73G;AAGJ,OAFA1F,KAAKytD,kBACwB,QAArB/nD,EAAK1F,KAAK+6J,iBAAmBr1J,SAAyBA,EAAG40H,kBAC1Dn4C,QAAQC,SACjB,CAQAm7B,yBACE,IAAI73G;AAGJ,OAFA1F,KAAKytD,kBACwB,QAArB/nD,EAAK1F,KAAK+6J,iBAAmBr1J,SAAyBA,EAAG60H,oBAC1Dp4C,QAAQC,SACjB,CACAr8C,kBAAkBinB,GAEhB,MADsB,CAAC,QAAS,YACXjnD,MAAMohB,GAAQ6lC,EAAGjoC,QAAQ1kB,SAAS8mB,MAAS6lC,EAAGjnB,iBACrE,CACA48F,YAAYziI,GACNF,KAAK+lC,kBAAkB7lC,EAAE0B,SAGzB5B,KAAK6qD,UAAY7qD,KAAKu/G,WAAav/G,KAAK+6J,QAGvC/6J,KAAKytD,SAGRztD,KAAK65H,WAFL75H,KAAK27E,SAIT,CACA0gD,cAAcn8H,GACRF,KAAK+lC,kBAAkB7lC,EAAE0B,SAGf,UAAV1B,EAAEqB,KAA6B,MAAVrB,EAAEqB,MACzBrB,EAAEg9E,iBACEl9E,KAAK+6J,MACP/6J,KAAK+6J,MAAM7xH,QAEXlpC,KAAKgtD,GAAG9jB,QAGd,CAKA8xH,oBACOh7J,KAAK+6J,OAGVtmG,4BACE,IAAI/uD;AACJ1F,KAAK+6J,MAAM9wD,gBAAgB;AAC3B,MAAMgxD,EAA+C,QAAhCv1J,EAAK1F,KAAK+6J,MAAM9rI,sBAAwBvpB,SAAyBA,EAAGmqB,cAAc;AACnGorI,GACFA,EAAYhxD,gBAAgB,WAC9B,GAEJ,CACAixD,oBACOl7J,KAAK+6J,QAGV/6J,KAAK+6J,MAAMz7C,eACXt/G,KAAK+6J,MAAMttG,SAAWztD,KAAKytD,SAC3BztD,KAAKg7J,oBACP,CACAG,0BArJF,IAA4BC;AAsJxBp7J,KAAK+6J,OArJDK,OADoBA,EAsJQp7J,KAAKgtD,WArJ2BouG,EAAaznF,UAGxE,IAAIynF,EAAaznF,UAAUzyE,KAAKu5J,EAAiBhsF,cAF/C,KAqJPzuE,KAAKgtD,GAAGpmB,UAAUy0F,OAAO,kBAAmBl+G,QAAQnd,KAAK+6J,QACzD/6J,KAAKk7J,mBACP,CACAh+B,qBACEl9H,KAAKg7J,mBACP,CACA5kE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4C,gBAAiBvB,KAAKytD,SAAS/jD,WAAYktF,MAAO,qBAAsBE,QAAS92F,KAAK2iI,YAAY5jI,KAAKiB,MAAOo9H,UAAWp9H,KAAKq8H,cAAct9H,KAAKiB,MAAOi3F,KAAM,SAAUo/C,SAAUr2I,KAAK6qD,SAAW,KAAO,KAAOn3C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAKm7J,4BAC5X,CACInuG,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA06J,EAAiB9oF,MA9JW,yrJA+J5BxD,EAA2BitF,mBAAqBX,EACzCtsF,CACR,CA9KA,GA074BS,IAAGlxC,KAAKs8H,EAAYvqH;AACtB,IAAK,gCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAzw4BlC,WACC,GAAIt5E,EAA8C,OAAOG;AACzDH,EAA+C,EAC/ClwE,OAAO2D,eAAe0sE,EAAmC,aAAc,CAAE/pE;AACzE,MAAM2O,EAAQ25E,KAGRiuE,EAA0B,MAC9B9vI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmD,KAAO,OACd,CACAizF,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,6BAA+BljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,8OACtY;AAIF,OAFAghH,EAAwB1pF,MAXW,yqFAYnC9C,EAAkCysF,0BAA4BD,EACvDxsF,CACR,CAnBA,GA0w4BS,IAAG5xC,KAAKs8H,EAAYvqH;AACtB,IAAK,oCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EApv4BlC,WACC,GAAIr5E,EAAiD,OAAOG;AAC5DH,EAAkD,EAClDnwE,OAAO2D,eAAe2sE,EAAsC,aAAc,CAAEhqE;AAC5E,MAAM2O,EAAQ25E,KAGRmuE,EAA6B,MACjChwI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK+E,MAAQ,EACb/E,KAAKi2C,IAAM,CACb,CACAmgD,SACE,MAAMngD,EAAMj2C,KAAKi2C,IAAM,EAAIj2C,KAAKi2C,IAAM,EAChClxC,EAAQ/E,KAAK+E,MAAQ,EAAIiI,KAAKsqC,IAAIt3C,KAAK+E,MAAO/E,KAAKi2C,KAAO,EAC1DwlH,EAAkB12J,EAAQkxC,EAAM;AACtC,OAAOviC,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gCAAiCK,KAAM,cAAe,gBAAiBlyF,EAAO,gBAAiB,IAAK,gBAAiBkxC,EAAK,iBAAmB,GAAEwlH,MAAsB/nJ,EAAM0hB,EAAE,WAAY,CAAE7zB,IAAK,2CAA4CwD,QAAOkxC,OAAOviC,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,gBAAkBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4CqwE,MAAO,CAAErnC,MAAQ,GAAEkxH,UAClgB,CACIzuG,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAw7J,EAA2B5pF,MAlBW,m2DAmBtC7C,EAAqC2sF,8BAAgCF,EAC9DzsF,CACR,CA1BA,GAqv4BS,IAAG7xC,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA3o4BlC,WACC,GAAIz4E,EAAmC,OAAOR;AAC9CQ,EAAoC,EACpC/wE,OAAO2D,eAAe4sE,EAAwB,aAAc,CAAEjqE;AAC9D,MAAM2O,EAAQ25E,KACR60C,EAAahzD,IACbke,EAAUnjB,EAAcC,uBACxB8F,EAAKN,IAGLisF,EAAe,MACnBnwI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK47J,sBAAwBloJ,EAAMo8E,YAAY9vF,KAAM,wBAAyB,GAC9EA,KAAK67J,iBAAmB7rF,EAAGA,KAC3BhwE,KAAK8nG,QAAU,OACf9nG,KAAK87J,eACL97J,KAAK+7J,uBAAyB,UAC9B/7J,KAAKg8J,eAAiB,GACtBh8J,KAAKi8J,YACLj8J,KAAKk8J,YACP,CACAC,aACE,MAAqB,YAAjBn8J,KAAK8nG,QACAp0F,EAAM0hB,EAAE,MAAO,CAAE6hE,KAAM,MAAO,kBAAmBj3F,KAAK67J,iBAAkBtxH,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,QAAS,CAAE5a,GAAIxa,KAAK67J,kBAAoB77J,KAAKg8J,gBAAkB,WAAYtoJ,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,0VACrS,SAAjBt6C,KAAK8nG,QACPp0F,EAAM0hB,EAAE,MAAO,CAAE6hE,KAAM,MAAO,kBAAmBj3F,KAAK67J,iBAAkBtxH,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,QAAS,CAAE5a,GAAIxa,KAAK67J,kBAAoB77J,KAAKg8J,gBAAkB,QAAStoJ,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,wWAClS,YAAjBt6C,KAAK8nG,QACPp0F,EAAM0hB,EAAE,MAAO,CAAE6hE,KAAM,MAAO,kBAAmBj3F,KAAK67J,iBAAkBtxH,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,QAAS,CAAE5a,GAAIxa,KAAK67J,kBAAoB77J,KAAKg8J,gBAAkB,WAAYtoJ,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,4IACrP,YAAjBt6C,KAAK8nG,QACPp0F,EAAM0hB,EAAE,MAAO,CAAE6hE,KAAM,MAAO,kBAAmBj3F,KAAK67J,iBAAkBtxH,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,QAAS,CAAE5a,GAAIxa,KAAK67J,kBAAoB77J,KAAKg8J,gBAAkB,WAAYtoJ,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,oCAAsC5mC,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,0JAA4J5mC,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,0VAEpiB5mC,EAAM0hB,EAAE,MAAO,CAAE6hE,KAAM,MAAO,kBAAmBj3F,KAAK67J,iBAAkBtxH,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,QAAS,CAAE5a,GAAIxa,KAAK67J,kBAAoB77J,KAAKg8J,gBAAkB,YAAatoJ,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,sWAEpU,CACA8hH,wBACEp8J,KAAKi8J,SAAW9+I,QAAQnd,KAAKgtD,GAAGn9B,cAAc,kBAChD,CACAwsI,yBACEr8J,KAAKk8J,UAAY/+I,QAAQnd,KAAKgtD,GAAGn9B,cAAc,mBACjD,CACAmmE,oBACEh2F,KAAKo8J,wBACLp8J,KAAKq8J,wBACP,CACAC,UACE,MAAMh/C,iBAAEA,GAAqBt9G,KAAK47J,sBAAsBr/F;AACpD+gD,GAGJt9G,KAAKgtD,GAAGj5C,QACV,CACAqiF,SACE,MAAMmmE,EAAqBnvE,EAAQhjB,oBAAoB;AACvD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAiBK,KAAM,SAAU,aAAc,gBAAkBvjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,kBAAoBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAU8U,EAAM0hB,EAAEmnI,EAAoB,CAAEh7J,IAAK,4CAA8CvB,KAAKm8J,gBAAiBzoJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,OAAQ,CAAE,YAAanvE,KAAKi8J,YAAevoJ,EAAM0hB,EAAE,UAAW,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,SAAWljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAS2/G,aAAcA,IAAMv+G,KAAKo8J,2BAA6B1oJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,8CAAgDmS,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,UAAW,CAAEgsD,QAASn7H,KAAKk8J,aAAgBxoJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAU2/G,aAAcA,IAAMv+G,KAAKq8J,6BAA+Br8J,KAAK87J,aAAepoJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,qBAAuBljF,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4C6Q,KAAM,SAAU,aAAcpS,KAAK+7J,uBAAwBjlE,QAASA,IAAM92F,KAAKs8J,WAAa5oJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4C01F,KAAM,eAAgB,cAAe,OAAQ1sD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C+4C,EAAG,2KAC/tD,CACI0S,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA27J,EAAa/pF,MApDW,okMAqDxB5C,EAAuBwtF,cAAgBb,EAChC3sF,CACR,CA/DA,GA4o4BS,IAAG9xC,KAAKs8H,EAAYvqH;AACtB,IAAK,mBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA771BlC,WACC,GAAI71E,EAAkC,OAAO5B;AAC7C4B,EAAmC,EACnC3zE,OAAO2D,eAAeouE,EAAuB,aAAc,CAAEzrE;AAC7D,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVyF,EAASL,IACT8c,EAAUvjB,EAAcC,uBACxBuyF,EAAYnqF,IACZ4vD,EAAahzD,IAGbwtF,EAAc,MAClBlxI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK28J,mBAAqBjpJ,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK48J,sBAAwBlpJ,EAAMo8E,YAAY9vF,KAAM,wBAAyB,GAC9EA,KAAK68J,uBAAyBnpJ,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKoS,KAAO,QACZpS,KAAK88J,iBACL98J,KAAKm7H,UACLn7H,KAAK+8J,gBACL/8J,KAAK0T,aACL1T,KAAKg9J,kBAAoB5vE,EAAQxhB,wDACjC5rE,KAAKi9J,uBAAyB7vE,EAAQxhB,wDACtC5rE,KAAKk9J,sBAAwB9vE,EAAQthB,uDACrC9rE,KAAKm9J,YACP,CACAC,oBACEp9J,KAAK88J,gBACP,CAKAO,2BAA2B9oJ,GACzB,MAAMg/E,OAAEA,EAAM3xF,OAAEA,GAAW2S;AACL,UAAlBg/E,EAAOj+D,QACL1zB,EAAO8iC,QAAQqsC,EAAOC,uBAAyBhxE,KAAKgtD,IACtDhtD,KAAKs8J,SAGX,CAOAA,QAAQgB,GACN,MAAMhgD,iBAAEA,GAAqBt9G,KAAK48J,sBAAsBrgG,KAAK,CAC3DwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,QAAS0vI,eAAgEA,EAAe1vI,SAAW5tB,KAAKgtD;AAY1G,OAVKswD,IACHt9G,KAAKm7H,UACL13H,iBACEzD,KAAK68J,uBAAuBtgG,KAAK,CAC/BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,OAAQ5tB,KAAKgtD,IACb,GACDhtD,KAAKk9J,wBAEH/6E,QAAQC,SACjB,CACAm7E,mBAAmBplI,EAAUq+B,GACvBr+B,IAAaq+B,IACXr+B,EACFn4B,KAAKw9J,oBAELx9J,KAAKy9J,sBAGX,CASAD,kBAAkBt5J,EAASs0E,GAazB,OAZIx4E,KAAKy8J,WACPz8J,KAAKy8J,UAAUn+E,SAAS9F,QAAyDA,EAAkB,CAAC,GAC/Fx4E,KAAKm9J,YACRn9J,KAAKm9J,eAGPn9J,KAAKy8J,UAAYA,EAAUnkF,2BAA2B,CACpDE,kBACAxrB,GAAIhtD,KAAKgtD,GACT9oD,YAGGi+E,QAAQC,SACjB,CAMAq7E,oBAAoB9+E,GAWlB,OAVI3+E,KAAKy8J,YACPz8J,KAAKy8J,UAAU1/E,WAAWt+E,OAAOkD,OAAO,CAAEq7E,eAAmB8B,oBAAsB4+B,GAAY,IAAIv7B,SAASC,IACtB,mBAAxEs7B,eAAkDA,EAAQggD,UACpEhgD,EAAQggD,WAERt7E,GACF,KACIzD,IACN3+E,KAAKy8J,kBAEAt6E,QAAQC,SACjB,CAMAy7B,oBACEp6G,iBACEzD,KAAK28J,mBAAmBpgG,KAAK,CAC3BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,OAETpS,KAAKm9J,WACPn9J,KAAKw9J,mBACP,GACCx9J,KAAKi9J,uBACV,CACAjnE,oBACE,MAAMv6D,EAASz7B,KAAKgtD,GAAGn9B,cAAc29D,EAAQpjB,oBAAoB;AAC7D3uC,IACFA,EAAOkiI,mBAEL39J,KAAKm7H,SACPn7H,KAAK88J,kBAEP/rF,EAAOE,0BAA0BjxE,KAAKgtD,GACxC,CACA8wD,uBACE99G,KAAKy9J,qBACP,CACArnE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4C01F,KAAM,SAAUL,MAAOsrC,EAAW/yD,WAAW,eAAgB,CACzI,iBAAkBnvE,KAAK88J,iBACnBppJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAC/B,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLozB,OAAU,CAAC,qBACXgiC,UAAa,CAAC,sBAElB;AAIF,OAFAT,EAAY9qF,MAvJW,2sHAwJvBpB,EAAsBotF,aAAelB,EAC9BlsF,CACR,CApKA,GA871BS,IAAGtzC,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7t1BlC,WACC,GAAInoE,EAAmC,OAAOC;AAC9CD,EAAoC,EACpCrhF,OAAO2D,eAAe29E,EAAwB,aAAc,CAAEh7E;AAC9D,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IACPmN,EAAUnjB,EAAcC,uBAGxB2zF,EAAe,MACnBryI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK89J,yBAA2B,KAC9B,GAAkB,WAAd99J,KAAKoS,KAAmB,CAC1B,MAAM+jE,EAAOn2E,KAAKgtD,GAAGtoB,QAAQ;AAC7B,GAAIyxC,EAAM,CACR,MAAM4nF,EAAaphJ,SAASuF,cAAc;AAC1C67I,EAAW3rJ,KAAOpS,KAAKoS,KACvB2rJ,EAAWnsF,MAAM9yE,QAAU,OAC3Bq3E,EAAK5zD,YAAYw7I,GACjBA,EAAW70H,QACX60H,EAAWhqJ,QACb,CACF,GAEF/T,KAAKohF,mBAAsBC,IACzBrhF,KAAKqhF,eAAiBA,GAExBrhF,KAAK+2F,MAAQ,OACb/2F,KAAK6qD,YACL7qD,KAAKktB,gBACLltB,KAAKw8H,WACLx8H,KAAK2hB,YACL3hB,KAAKg+J,YACLh+J,KAAKi+J,qBACLj+J,KAAKk+J,aACLl+J,KAAKg3F,KAAO,YACZh3F,KAAK6uJ,WACL7uJ,KAAKmD,KAAO,SACZnD,KAAK4B,cACL5B,KAAKoS,KAAO,SACZpS,KAAK8nG,QAAU,UACf9nG,KAAKqhF,qBACP,CACA88E,qBAAqBhmI,GACdn4B,KAAKo+J,UAGNjmI,GACFn4B,KAAKo+J,SAAS3iF,OAElB,CAOAknD,YAAYpuH,IACNvU,KAAK6qD,UAAY7qD,KAAKk+J,YACxB3pJ,EAAMgpE,0BAEV,CAKAmgF,WAAwB,IAAf34J,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACZ,OAAIU,KAAK6qD,WAGT7qD,KAAKw8H,QAAUz3H,GACVA,GAAS/E,KAAKo+J,UACjBp+J,KAAKo+J,SAASC,QAJPl8E,QAAQC,SAOnB,CAKAk8E,4BAA4Bz9H,IACO,QAApBA,EAAQ9b,QAAoB,CAAC8b,GAAW,IAAIA,EAAQuE,iBAAiB,SAC7EzmC,SAAS4/J,IACZ,MAAMC,EAAmBD,EAAIn5H,iBAAiB,sCACxCq5H,EAAqBF,EAAIn5H,iBAAiB;AAChDo5H,EAAiB7/J,SAASquD,IACxBA,EAAGuzB,aAAa,OAAQ,eAAe,IAEzCk+E,EAAmB9/J,SAASquD,IAC1BA,EAAGuzB,aAAa,SAAU,eAAe,GACzC,GAEN,CACAm+E,mBACE,IAAIh5J,EAAI4P,EAAIoT,EAAIC;AAChB,MAAMg2I,EAAW3+J,KAAKgtD,GAAGn9B,cAAc,iBACjC+uI,EAAUzhJ,QAAQwhJ;AACpBC,GACF5+J,KAAKs+J,4BAA4BK;AAEnC,MAAME,EAAkG,QAApFvpJ,EAAoC,QAA9B5P,EAAK1F,KAAKgtD,GAAGvpB,uBAAyB/9B,SAAyBA,EAAGg+B,kBAAoBpuB,EAAgBA,EAAK,GAC/HwpJ,EAAqJ,QAAzIn2I,EAAyF,QAAnFD,EAAKi2I,eAAoDA,EAASl7H,uBAAyB/a,SAAyBA,EAAGgb,kBAAoB/a,EAAgBA,EAAK,GAClLo2I,EAAeF,EAAWt/J,OAASu/J,EAASv/J;AAClDS,KAAKg+J,SAAWY,IAAYG,CAC9B,CACA/oE,oBACEh2F,KAAKo+E,iBAAmBwqB,EAAKznB,sBAAsBnhF,KAAKgtD,GAAIhtD,KAAKohF,oBACjEphF,KAAK0+J,kBACP,CACAtoE,SACE,MAAMW,MAEJA,EAAKlsC,SACLA,EAAQlpC,KACRA,EAAIs8I,cACJA,EAAaC,UACbA,EAASt8J,OACTA,EAAMwQ,KACNA,EAAIy8I,IACJA,EAAG3hI,SACHA,EAAQm0D,eAERA,EAAcy8E,yBAEdA,GACE99J,KACEg/J,WAAUr9I,EAAkB,SAAW,IACvCs9I,EAA2B,WAAZD,EAAuB,CAAE5sJ,OAAMy4C,YAAa,CAAElpC,OAAM/f,SAAQitJ,MAAK3hI,YAChFgyI,EAAiC9xE,EAAQhjB,oBAAoB,6BAC7DqsB,EAAoBrJ,EAAQhjB,oBAAoB;AACtD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAiBE,QAASgnE,GAA4BpqJ,EAAM0hB,EAAE4pI,EAASvgK,OAAOkD,OAAO,CAAEJ,IAAK,2CAA4Cq1F,MAAO,aAAeqoE,EAAc59E,EAAgB,CAAEg1D,SAAUxrF,GAAY,EAAIozG,EAAe5/C,QAASA,KACnUr+G,KAAKw8H,UAAU,EACdle,OAAQA,KACTt+G,KAAKw8H,UAAU,EACd8vB,IAAMt/F,GAAOhtD,KAAKo+J,SAAWpxG,IAAOt5C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,OAAQ2/G,aAAcA,IAAMv+G,KAAK0+J,qBAAuBhrJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,cAAeosC,KAAM,eAAiBtvH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAK0+J,sBAAkC,SAAV3nE,GAAoBrjF,EAAM0hB,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4C3C,KAAM,WAAuB,OAAVm4F,GAAkBrjF,EAAM0hB,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4C3C,KAAM,cAAgBs/J,GAAaxqJ,EAAM0hB,EAAE8pI,EAAgC,CAAE39J,IAAK,2CAA4C4B,KAAM,UACvuB,CACA26G,uBACE,IAAIp4G;AAC6B,QAAhCA,EAAK1F,KAAKo+E,4BAA8B14E,GAAyBA,EAAG6sB,YACvE,CACIy6B,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLy0B,QAAW,CAAC,wBAEhB;AAIF,OAFAqhC,EAAajsF,MA/IW,w7gBAgJxBmO,EAAuBo/E,cAAgBtB,EAChC99E,CACR,CAzJA,GA8t1BS,IAAG7iD,KAAKs8H,EAAYvqH;AACtB,IAAK,6BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAjj1BlC,WACC,GAAIzmE,EAA2C,OAAOC;AACtDD,EAA4C,EAC5C/iF,OAAO2D,eAAeq/E,EAAgC,aAAc,CAAE18E;AACtE,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IACP4oB,EAAWlnB,IACXyL,EAAUnjB,EAAcC,uBACxB8F,EAAKN,IAML0vF,EAAuB,MAC3B5zI,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKq/J,2BAA6B3rJ,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKs/J,2BAA6B5rJ,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKohF,mBAAsBC,IACzBrhF,KAAKqhF,eAAiBA,GAExBrhF,KAAKs5C,YAAc,QACnBt5C,KAAK6qD,YACL7qD,KAAKu/J,WACLv/J,KAAK08G,iBAAmB,aACxB18G,KAAK28G,gBAAkB,WACvB38G,KAAKw/J,yBACLx/J,KAAKy/J,oBACLz/J,KAAKqhF,qBACP,CACAq+E,2BAA2Bx/J,GACrBA,EAAE0B,SAAW5B,KAAKgtD,KAEtBhtD,KAAKy/J,oBACLz/J,KAAK2/J,WACL3/J,KAAKq/J,2BAA2B9iG,OAClC,CACAqjG,2BAA2B1/J,GACrBA,EAAE0B,SAAW5B,KAAKgtD,KAEtBhtD,KAAKy/J,oBACLz/J,KAAK2/J,WACL3/J,KAAKs/J,2BAA2B/iG,OAClC,CACAsjG,2BACM7/J,KAAK8/J,gBACP9/J,KAAK8/J,cAAcj1G,SAAW7qD,KAAK6qD,SAEvC,CACA80G,WACM3/J,KAAKu/J,SAA2Bv/J,KAAK8/J,cAvCjC/6I,QAAQke,gBAAkBmqD,EAAQhjB,oBAAoB,mBA0C1DpqE,KAAKy/J,iBACPz/J,KAAK8/J,cAAc/oE,MAAQ,KAE3B/2F,KAAK8/J,cAAc/oE,MAAQ,OAE/B,CACAgnB,kBACE/9G,KAAK8/J,cAAgB9/J,KAAKgtD,GAAGn9B,cAAcg5E,EAASjnB,0BAA0B75E,KAAK,MACnF/H,KAAK6/J,2BACL7/J,KAAK2/J,UACP,CACA3pE,oBACEh2F,KAAKo+E,iBAAmBwqB,EAAKznB,sBAAsBnhF,KAAKgtD,GAAIhtD,KAAKohF,mBACnE,CACA8U,sBACE,MAAM6pE,EAAoB3yE,EAAQhjB,oBAAoB,eAChDjlD,EAAOnlB,KAAKgtD,GAAGn9B,cAAckwI,GAC7BC,EAAiBhgK,KAAKgtD,GAAGn9B,cAAe;AAC1C1K,IACFA,EAAKm6F,eACLn6F,EAAKo6F,WAAav/G,KAAKw/J,uBAErBx/J,KAAK8/J,gBACFE,EAAexlJ,KAClBwlJ,EAAexlJ,GAAM,WAAUw1D,EAAGA,QAEpC44B,EAAK1oB,4BAA4BlgF,KAAK8/J,cAAe,CACnDz/E,SAAUrgF,KAAKy/J,iBAAiB/1J,WAEhC42E,UAAW0/E,EAAexlJ,KAGhC,CACA47E,SACE,MAAM6pE,EAAwB7yE,EAAQhjB,oBAAoB,mBACpD81F,EAAuB9yE,EAAQhjB,oBAAoB;AACzD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,0BAA4BljF,EAAM0hB,EAAE6qI,EAAuB,CAAE1+J,IAAK,2CAA4C+3C,YAAat5C,KAAKs5C,YAAa,mBAAoBt5C,KAAK28G,gBAAiB,oBAAqB38G,KAAK08G,iBAAkB7xD,SAAU7qD,KAAK6qD,UAAYn3C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAWi4F,KAAM,UAAW0nB,aAAcA,IAAMv+G,KAAK+9G,oBAAsBrqG,EAAM0hB,EAAE8qI,EAAsB,CAAE3+J,IAAK,2CAA4Cs1F,KAAM,UAAWmsC,KAAM,WAAatvH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,cACvqB,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLl9C,SAAY,CAAC,4BAEjB;AAIF,OAFAu0G,EAAqBxtF,MA5FW,+FA6FhC6P,EAA+B0+E,uBAAyBf,EACjD39E,CACR,CAxGA,GAkj1BS,IAAGvkD,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA/s0BlC,WACC,GAAIpkE,GAAwC,OAAO9B;AACnD8B,GAAyC,EACzCplF,OAAO2D,eAAe2/E,EAA6B,aAAc,CAAEh9E;AACnE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxBsjB,EAAUliB,IACVg4C,EAAMrhC,IACNj+E,EAAWigF;AACjBzB,KACAuB;AACA,MAKMq8E,EAAoB,MACxB50I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKqgK,WAAa,GAClBrgK,KAAKsgK,WAAa,CAAC,EACnBtgK,KAAKugK,sBAAwBv8J,EAASA,SAAShE,KAAKwgK,aAAazhK,KAAKiB,MANzC,IAO7BA,KAAK2rI,UAAY,QACjB3rI,KAAK28G,gBAAkB,WACvB38G,KAAKygK,iBAAmB,CACtB1xD,SAAU,GACVwqB,QAAS,GAEb,CACAmnC,iBAAiB1zG,GACf,OAAO3uC,OAAOmmF,WAAW9hG,OAAOgvE,iBAAiB1kB,GAAIziB,MACvD,CAKAgzE,8BACE,GAAuB,UAAnBv9G,KAAK2rI,UACP,OAAO3rI,KAAKqgK,WAAW9gK;AAEzB,MAAMohK,EAAmB3gK,KAAK0gK,iBAAiB1gK,KAAKgtD,IAC9C4zG,EAASjkJ,SAASuF,cAAc;AACtC0+I,EAAOhvF,MAAMrnC,MAAQ,OACrBq2H,EAAOhvF,MAAMnnC,SAAW,WACxBm2H,EAAOhvF,MAAMoD,WAAa,SAC1Bh1E,KAAKgtD,GAAG/9B,WAAW1M,YAAYq+I;AAC/B,IAAI3iE,EAAS,EACT4iE,EAAe;AACnB,IAAK,MAAMC,KAAY9gK,KAAKqgK,WAAY,CACtC,GApCsB,IAoClBpiE,EACF;AAEF,MAAM8iE,EAA0B9iE,EAAS,IAAMj+F,KAAKqgK,WAAW9gK,OAAS,EAAIiuF,EAAQ7hB,qBAtCvD,GAuCvBq1F,EAAiBF,EAAS97C;AAChCg8C,EAAepvF,MAAM9yE,QAAU,QAC/B8hK,EAAOr+I,YAAYy+I,SACb19C,EAAIphC;AACV,MAAM++E,EAAgBjhK,KAAK0gK,iBAAiBE;AAI5C,GAHAA,EAAOp4E,YAAYw4E,GACnBH,IAAiB5iE,EAAS,EAAIzQ,EAAQ7hB,qBAAuB,GAAKs1F,EAC3CJ,EAAeE,GAChBJ,EACpB,QAEA1iE,CACJ,CAGA,OAFAj+F,KAAKgtD,GAAG/9B,WAAWu5D,YAAYo4E,GAC/BA,EAAO7sJ,SACAkqF,CACT,CAOAijE,gCACElhK,KAAKygK,iBAAmB,CACtBlnC,QAASv5H,KAAKqgK,WAAW3+J,MAAM,EAAG1B,KAAKmhK,oBACvCpyD,SAAU/uG,KAAKqgK,WAAW3+J,MAAM1B,KAAKmhK,qBAEvCnhK,KAAKygK,iBAAiBlnC,QAAQ56H,SAASmiK,IACC,qBAAlCA,EAASr+H,aAAa,SACxBq+H,EAAS72D,gBAAgB,OAC3B,IAEFjqG,KAAKygK,iBAAiB1xD,SAASpwG,SAASmiK,IACA,qBAAlCA,EAASr+H,aAAa,SACxBq+H,EAASvgF,aAAa,OAAQ,mBAChC,GAEJ,CAIAg9B,qBACE,IAAKv9G,KAAK0gK,iBAAiB1gK,KAAKgtD,IAC9B;AAEF,MAAMixC,QAAej+F,KAAKohK;AACInjE,IAAWj+F,KAAKmhK,qBAE5CnhK,KAAKmhK,mBAAqBljE,QACpBqlB,EAAIphC,6BACVliF,KAAKkhK,iCAEPlhK,KAAKgtD,GAAG4kB,MAAMoD,WAAa,EAC7B,CACAqsF,yBACE,MAAM7qE,EAAsBpJ,EAAQhjB,oBAAoB;AACxDpqE,KAAKqgK,WAAa,IAAIrgK,KAAKgtD,GAAG5nB,iBAAiBoxD,GACjD,CACA8qE,eAAet0G,GACRhtD,KAAKsgK,WAAWtwI,UACnBhwB,KAAKsgK,WAAWtwI,QAAU,IAAIumB,eAAev2C,KAAKugK,uBAClDvgK,KAAKsgK,WAAWtwI,QAAQoC,QAAQ46B,GAEpC,CACA6wD,oBACO79G,KAAKsgK,WAAWr9I,OACnBjjB,KAAKsgK,WAAWr9I,KAAO,IAAIszB,eAAev2C,KAAKugK,uBAC/CvgK,KAAKsgK,WAAWr9I,KAAKmP,QAAQpyB,KAAKgtD,IAEtC,CACAgpC,oBACEh2F,KAAKgtD,GAAG4kB,MAAMoD,WAAa,SAC3Bh1E,KAAKqhK,yBACLrhK,KAAKwgK,cACP,CACA1iD,uBACEr/G,OAAOkzB,QAAQ3xB,KAAKsgK,YAAY3hK,SAAQ4iK,IAAsB,IAApBhgK,EAAKyJ,GAASu2J;AAClDv2J,IACFA,EAASunB,aACTvyB,KAAKsgK,WAAW/+J,UAClB,GAEJ,CACA60F,SACE,MAAMorE,EAA8Bp0E,EAAQhjB,oBAAoB,0BAC1DosB,EAAsBpJ,EAAQhjB,oBAAoB,iBAClDqsB,EAAoBrJ,EAAQhjB,oBAAoB;AACtD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAyBljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,UAAW01D,IAAMt/F,GAEtMhtD,KAAKshK,eAAet0G,IACjBt5C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAKqhK,2BAA6BrhK,KAAKygK,iBAAiB1xD,SAASxvG,OAAS,GAAKmU,EAAM0hB,EAAEosI,EAA6B,CAAEjgK,IAAK,2CAA4C,cAAkB,mBAAoBvB,KAAK28G,iBAAmBjpG,EAAM0hB,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4Cs1F,KAAM,WAAanjF,EAAM0hB,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4Cs1F,KAAM,OAAQj4F,KAAM4uF,EAAQ9hB,2CAA6Ch4D,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,WAAanjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,mBAAoBi4F,KAAM,wBACrvB,CACI7pC,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAogK,EAAkBxuF,MA3IW,wsCA4I7BmQ,EAA4B0/E,oBAAsBrB,EAC3Cr+E,CACR,CAzJA,GAgt0BS,IAAG7kD,KAAKs8H,EAAYvqH;AACtB,IAAK,sBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EApj0BlC,WACC,GAAIliE,GAAqC,OAAOM;AAChDN,GAAsC,EACtCtnF,OAAO2D,eAAeikF,GAA0B,aAAc,CAAEthF;AAChE,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IAGPyhF,EAAiB,MACrBl2I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK2hK,0BAA4BjuJ,EAAMo8E,YAAY9vF,KAAM,4BAA6B,GACtFA,KAAK+tD,WACL/tD,KAAK6qD,YACL7qD,KAAK4hK,iBACL5hK,KAAK+wF,WACL/wF,KAAKw8H,WACLx8H,KAAK6hK,WACL7hK,KAAKq5E,SACP,CAKAusE,aAAaztH,GAAoC,IAA1BqtH,OAAEA,MAAgBlmJ,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC;AAC3C,MAAMqiK,0BAAEA,EAA2B5zG,QAAS+zG,EAASC,WAAEA,GAAe/hK;AACtE,GAAwB,kBAAbm4B,EACT,OAAOgqD,QAAQC;AAEjB,GADApiF,KAAK4hK,iBACDE,IAAc3pI,EAChB,OAAOgqD,QAAQC;AACjB,IAAKojE,EAAQ,CACX,MAAMloC,iBAAEA,GAAqBqkD,EAA0BplG,KAAK,CAC1DroC,QAASiE,EACTutH,SAAUoc;AAEZ,GAAIxkD,EACF,OAAOn7B,QAAQC,SAEnB,CAKA,OAJApiF,KAAK+tD,QAAU51B,EACX4pI,IACFA,EAAWh0G,QAAU51B,GAEhBgqD,QAAQC,SACjB,CAKAyjE,iBAAiB1tH,GAEf,OADAn4B,KAAK4hK,cAAgBzpI,EACdgqD,QAAQC,SACjB,CAIAy4D,SAAS1iH,GAGP,OAFA55B,QAAQH,KAAK,uFAAwF4B,KAAKgtD,IAC1GhtD,KAAK4lJ,aAAaztH,GACXgqD,QAAQC,SACjB,CAKA4/E,UAAUj9J,GAER,OADA/E,KAAKq5E,OAASt0E,EACPo9E,QAAQC,SACjB,CAKA6/E,SAASl9J,GAEP,OADA/E,KAAK6hK,QAAU98J,EACRo9E,QAAQC,SACjB,CAKAi4E,YAAYt1J,GAEV,OADA/E,KAAK6qD,SAAW9lD,EACTo9E,QAAQC,SACjB,CAMAs7E,WAAwB,IAAf34J,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACZ,OAAIU,KAAK6qD,WAGT7qD,KAAKw8H,QAAUz3H,GAFNo9E,QAAQC,SAInB,CACAugD,YAAYpuH,GACVA,EAAM2oE,iBACFl9E,KAAK6qD,WAGT7qD,KAAK09J,WACL19J,KAAK4lJ,cAAc5lJ,KAAK+tD,SAC1B,CACAm0G,kBACE,OAAOliK,KAAK4hK,cAAgB,gBAAkB5hK,KAAK+tD,OACrD,CACAmvE,qBACOl9H,KAAK+hK,aACR/hK,KAAK+hK,WAAa/hK,KAAKgtD,GAAG/9B,WAAWY,cAAc,SAEvD,CACAumE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,kBAAmB0nB,OAAQA,KAC9Gt+G,KAAK09J,YAAS,EACb5mE,QAAS92F,KAAK2iI,YAAatkB,QAASA,KACrCr+G,KAAK09J,aACFhqJ,EAAM0hB,EAAE,QAAS,CACpB7zB,IAAK,2CAEL+qJ,IAAMt/F,GAAOhtD,KAAK+hK,WAAa/0G,EAC/B56C,KAAM,WACN,aAAcw2F,EAAKpoB,yBAAyBxgF,KAAKgtD,IACjDe,QAAS/tD,KAAK+tD,QACd6zG,cAAe5hK,KAAK4hK,cACpB/2G,SAAU7qD,KAAK6qD,WACb7qD,KAAK+tD,UAAY/tD,KAAK4hK,eAAiBluJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaE,KAAM,OAAQD,MAAO,6BAA8B,cAAe,SAAWhqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C+4C,EAAG,wBAAyB6nH,OAAQ,QAAS,eAAgB,IAAK,iBAAkB,QAAS,kBAAmB,WAAaniK,KAAK4hK,eAAiBluJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaE,KAAM,OAAQD,MAAO,6BAA8B,cAAe,iBAAmBhqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C+4C,EAAG,WAAY,eAAgB,IAAK,iBAAkB,QAAS,kBAAmB,WAChyB,CACI0S,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA0hK,EAAe9vF,MAhIW,qmSAiI1ByU,GAAyB+7E,gBAAkBV,EACpCr7E,EACR,CAzIA,GAqj0BS,IAAGnpD,KAAKs8H,EAAYvqH;AACtB,IAAK,2BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAz6zBlC,WACC,GAAIjiE,GAAyC,OAAOM;AACpDN,GAA0C,EAC1CvnF,OAAO2D,eAAekkF,GAA8B,aAAc,CAAEvhF;AACpE,MAAM2O,EAAQ25E,KAGRg1E,EAAqB,MACzB72I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKsiK,2BAA6B5uJ,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKuiK,6BAA+B7uJ,EAAMo8E,YAAY9vF,KAAM,+BAAgC,GAC5FA,KAAK6qD,YACL7qD,KAAKytD,YACLztD,KAAKmD,KAAO,QACd,CACA2zF,QAAQ52F,GACN,GAAIF,KAAK6qD,SAEP,YADA3qD,EAAEq9E;AAGJ,MAAM+/B,iBAAEA,GAAqBt9G,KAAKytD,SAAWztD,KAAKuiK,6BAA6BhmG,OAASv8D,KAAKsiK,2BAA2B/lG;AACpH+gD,IAGJt9G,KAAKytD,UAAYztD,KAAKytD,SACxB,CACA2oC,SACE,MAAMvrC,SAAEA,GAAa7qD;AACrB,OAAO0T,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAwBy/C,SAAUxrF,GAAY,SAAYisC,QAAU52F,IACvJF,KAAK82F,QAAQ52F,KACVwT,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4C,gBAAiBspD,GAAYn3C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,oBACxP,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAqiK,EAAmBzwF,MAhCW,+mLAiC9B0U,GAA6Bk8E,qBAAuBH,EAC7C/7E,EACR,CAxCA,GA06zBS,IAAGppD,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA/3zBlC,WACC,GAAIhiE,GAAwC,OAAOM;AACnDN,GAAyC,EACzCxnF,OAAO2D,eAAemkF,GAA6B,aAAc,CAAExhF;AACnE,MAAM2O,EAAQ25E,KAIRo1E,EAAoB,MACxBj3I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK0iK,iBAAmBhvJ,EAAMo8E,YAAY9vF,KAAM,mBAAoB,GACpEA,KAAK+8B,KAAO,GACZ/8B,KAAK2iK,UAAY,GACjB3iK,KAAK6qD,YACL7qD,KAAKw8H,UACP,CAMAxmC,oBACE,MAAM4sE,EAAiB5iK,KAAKgtD,GAAGn9B,cAAc,eACvCkN,EAAO6lI,EAAen/H;AAU5B,GATAzjC,KAAK+8B,KAAOA,EAAK3hB,QAAQ,MAAO,IAChCpb,KAAK6iK,cAAc7iK,KAAK+8B,MACxB/8B,KAAK8iK,WAAanmJ,SAASuF,cAAc,UACzCzjB,OAAOkD,OAAO3B,KAAK8iK,WAAY,CAC7BjsE,KAAM,UACNzkF,KAAM,SACNiiE,SAAUr0E,KAAK6qD,UAAY,EAAI,EAC/Bk4G,QAASA,IAAM/iK,KAAKgjK,oBAElBhjK,KAAKgtD,GAAGn9B,cAAc,oBAAqB,CAC7C,MAAMozI,EAAkBjjK,KAAKgtD,GAAGn9B,cAAc,oBACxCqzI,EAAWD,EAAgBx/H;AACjCzjC,KAAK8iK,WAAW5hF,UAAYgiF,EAC5BD,EAAgBE,sBAAsB,WAAYnjK,KAAK8iK,WACzD,MACE9iK,KAAK8iK,WAAW5hF,UAAa,OAC7B0hF,EAAeO,sBAAsB,WAAYnjK,KAAK8iK,WAE1D,CAYAD,cAAc9lI,GACZ,MAAMqmI,EAAUrmI,EAAKx9B,OACf8jK,EAAkB3vJ,EAAM0hB,EAAE,OAAQ,CAAEwhE,MAAO;AACjD,GAnDmB,IAmDfwsE,GAA8BA,EAnDf,GAmD4C,EAC7D,IAAK,IAAIniK,EAAI,EAAGA,EAAImiK,EAASniK,IACvBA,EArDW,GAqDY,GACzBjB,KAAK2iK,UAAU3hK,KAAKqiK,GACtBrjK,KAAK2iK,UAAU3hK,KAAK0S,EAAM0hB,EAAE,OAAQ,CAAEwhE,MAAO,aAAe75D,EAAK97B;IAE9D,CACLjB,KAAK2iK,UAAU3hK,KAAKqiK;AACpB,IAAK,IAAIpiK,EAAI,EAAGA,EAAImiK,EAASniK,IAC3BjB,KAAK2iK,UAAU3hK,KAAK0S,EAAM0hB,EAAE,OAAQ,CAAEwhE,MAAO,aAAe75D,EAAK97B,IAErE,CACAjB,KAAK2iK,UAAU3hK,KAAKqiK,EACtB,CAIAL,kBACE9vJ,UAAUowJ,UAAUC,UAAUvjK,KAAK+8B,MACnC/8B,KAAK0iK,iBAAiBnmG,MACxB,CACA65B,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,sBAAuBviB,SAAUr0E,KAAK6qD,SAAW,KAAO,EAAG,aAAc7qD,KAAK+8B,MAAQrpB,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,kBAAoB52F,KAAK2iK,WAAYjvJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,qBAAuBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aACtc,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAyiK,EAAkB7wF,MAjFW,y7GAkF7B2U,GAA4Bi9E,oBAAsBf,EAC3Cl8E,EACR,CAzFA,GAg4zBS,IAAGrpD,KAAKs8H,EAAYvqH;AACtB,IAAK,wBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EApyzBlC,WACC,GAAI/hE,GAAsC,OAAOM;AACjDN,GAAuC,EACvCznF,OAAO2D,eAAeokF,GAA2B,aAAc,CAAEzhF;AACjE,MAAM2O,EAAQ25E,KAIRo2E,EAAkB,MACtBj4I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK0jK,2BAA6BhwJ,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKoS,KAAO,SACZpS,KAAKpB,YACLoB,KAAKT,OAAS,EACdS,KAAKw8H,WACLx8H,KAAK+E,MAAQ,GACb/E,KAAKwvI,YACLxvI,KAAK+wF,WACL/wF,KAAK6qD,YACL7qD,KAAK2jK,YACP,CACAC,mBAAmB7+J,GACjB,MAAM+5C,EAAY9+C,KAAK6jK,cAAc9+J;AACjC/E,KAAK+E,QAAU+5C,IACjB9+C,KAAK+E,MAAQ+5C,GAEf9+C,KAAK8jK,mBAAmB9jK,KAAK+E,MAC/B,CAKA24J,WAAwB,IAAf34J,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACZ,IAAIoG;AAOJ,OANA1F,KAAKw8H,QAAUz3H,EACXA,EACF/E,KAAK+jK,uBAEuC,QAA3Cr+J,EAAK1F,KAAKgtD,GAAG/9B,WAAWyrD,yBAA2Bh1E,GAAyBA,EAAG24J,OAE3El8E,QAAQC,SACjB,CACA70E,SAASxI,GACP,MAAO,QAAQhC,KAAKgC,EACtB,CACAi/J,YAAYC,GACV,OAAI,KAAKlhK,KAAKkhK,KAEP,CAAC,OAAQ,YAAY5jK,SAASL,KAAKoS,OAASpS,KAAKuN,SAAS02J,GACnE,CACAF,uBACE,MAAMG,EAASlkK,KAAKgtD,GAAG/9B,WAAWmW,iBAAiB;AACnD,IAAIlK;AACJgpI,EAAOvlK,SAASsC,IACTA,EAAE8D,OAAUm2B,IACfA,EAAQj6B,EAAC,IAERi6B,IACHA,EAAQgpI,EAAOlkK,KAAKT,OAAS,IAC/B27B,EAAMugD,OACR,CAMA0oF,SAASp/J,GACP,GAAIA,EAEF,GADA/E,KAAK2jK,MAAQ5+J,EAAM8K,MAAM,IACrB7P,KAAK2jK,MAAMpkK,OAASS,KAAKT,OAAQ,CACnC,MAAMgyG,EAAU5wG,MAAMC,KAAK,CAAErB,OAAQS,KAAKT,OAASS,KAAK2jK,MAAMpkK,SAAUo+H,KAAK;AAC7E39H,KAAK2jK,MAAQ,IAAI3jK,KAAK2jK,SAAUpyD,EAClC,MAAWvxG,KAAK2jK,MAAMpkK,OAASS,KAAKT,SAClCS,KAAK2jK,MAAQ3jK,KAAK2jK,MAAMjiK,MAAM,EAAG1B,KAAKT;KAGxCS,KAAK2jK,MAAQhjK,MAAMC,KAAK,CAAErB,OAAQS,KAAKT,SAAUo+H,KAAK,GAE1D,CACAkmC,cAAc9+J,GACZ,OAAOA,EAAM8K,MAAM,IAAIjF,QAAQq5J,GAASjkK,KAAKgkK,YAAYC,KAAOl8J,KAAK,IAAIrG,MAAM,EAAG1B,KAAKT,OACzF,CACA6kK,qBACE,IAAIr/J,EAAQ;AAIZ,OAHA/E,KAAKgtD,GAAG/9B,WAAWmW,iBAAiB,SAASzmC,SAASu8B,IACpDn2B,GAASm2B,EAAMn2B,KAAK,IAEfA,CACT,CACA++J,mBAAmB/+J,GACF/E,KAAKgtD,GAAG/9B,WAAWmW,iBAAiB,SAC5CzmC,UAASu8B,EAAOj6B,KACrB,MAAMgjK,EAAOl/J,EAAM9D,GACbojK,EAAWt/J,EAAM9D,EAAI;AAC3Bi6B,EAAMn2B,MAAQk/J,GAAQ,GACZ,IAANhjK,GAAWojK,EACbnpI,EAAM+uE,gBAAgB,YAEtB/uE,EAAMm5C,UAAY,CACpB,GAEJ,CACAiwF,YAAYpkK,GACV,MAAM0B,OAAEA,EAAMmJ,KAAEA,GAAS7K,EACnBqkK,EAAQx5J,GAAQnJ,EAAOmD;AAC7B,IAAKw/J,EACH;AACF,MAAMzlH,EAAY9+C,KAAK6jK,cAAcU;AACjCzlH,EACF9+C,KAAKwkK,YAAY5iK,EAAQk9C,EAAUjvC,MAAM,KAEzCjO,EAAOmD,MAAQ,EAEnB,CACAy/J,YAAYtpI,EAAOqpI,GACjB,MAAMt8H,mBAAEA,GAAuB/M,GACxBkR,KAAUyxD,GAAQ0mE;AACzBrpI,EAAMn2B,MAAQqnC,EACdnE,SAAwEA,EAAmBwzC,QACvFxzC,GAAsB41D,EAAKt+F,OAAS,GACtCS,KAAKwkK,YAAYv8H,EAAoB41D,EAEzC,CACA4mE,cACE,MAAMC,EAAgB1kK,KAAK+E,MACrBozB,EAAWn4B,KAAK6jK,cAAc7jK,KAAKokK;AACzC,GAAIM,IAAkBvsI,EAAU,CAC9B,MAAMmlF,iBAAEA,GAAqBt9G,KAAK0jK,2BAA2BnnG,KAAK,CAAEx/B,KAAM5E;AACtEmlF,EACFt9G,KAAK8jK,mBAAmBY,GAExB1kK,KAAK+E,MAAQozB,CAEjB,CACF,CACA0vE,QAAQ3nG,GACNF,KAAKskK,YAAYpkK,GACjBF,KAAKykK,aACP,CACApmD,QAAQn+G,GACN,MAAM0B,OAAEA,GAAW1B;AACnBF,KAAKw8H,WACD56H,EAAOmD,MACTnD,EAAO+5E,SAEP37E,KAAK+jK,sBAET,CACAzlD,SACEt+G,KAAKw8H,UACP,CACApe,UAAUl+G,GACR,MAAM0B,OAAEA,EAAML,IAAEA,GAAQrB,GAClB6E,MAAEA,EAAK0kH,uBAAEA,EAAsBxhF,mBAAEA,GAAuBrmC;AAC9D,OAAQL,GACN,IAAK,YACHrB,EAAEg9E,iBACFusC,SAAgFA,EAAuB9tC;AACvG;AACF,IAAK,aACHz7E,EAAEg9E,iBACFj1C,SAAwEA,EAAmB0zC;AAC3F;AACF,IAAK,YACE52E,GACH0kH,SAAgFA,EAAuB9tC,SAG/G,CACAgpF,QAAQzkK,GACN,MAAM0B,OAAEA,GAAW1B,GACb6E,MAAEA,GAAUnD;AACdmD,EAAMxF,OAAS,EACjBS,KAAKskK,YAAYpkK,GACPF,KAAKgkK,YAAYj/J,KAC3BnD,EAAOmD,MAAQ,GACfnD,EAAO65E,QAEX,CACAmpF,cACO5kK,KAAKgtD,GAAG/9B,WAAWyrD,eACtB16E,KAAK09J,UAET,CACA1nE,oBACEh2F,KAAK4jK,mBAAmB5jK,KAAK+E,OAC7B/E,KAAKmkK,SAASnkK,KAAK+E,MACrB,CACAqxF,SACE,MAAM8tE,EAAS;AA4Bf,OA3BAlkK,KAAK2jK,MAAMhlK,UAASslK,EAAM72E,KACxB,MAAMipD,EAAWr2I,KAAK2jK,MAAMv2E,EAAU,IAAkB,IAAZA,EAAgB,MAAQ;AACpE82E,EAAOljK,KAEL0S,EAAM0hB,EAAE,QAAS,CACfq2D,YACAr5E,KAAoB,aAAdpS,KAAKoS,KAAsB,WAAa,OAE9CyyJ,UAAyB,WAAd7kK,KAAKoS,KAAoB,UAAY,KAEhDowB,aAA0B,IAAZ4qD,EAAgB,gBAAkB,KAChDroF,MAAOk/J,EAEPa,UAAW13E,IAAYptF,KAAKT,OAAS,EAAI,IAAM,KAC/CwlK,SAAU/kK,KAAKwvI,SACf3kF,SAAU7qD,KAAK6qD,SACf3vC,YAAa,IAEbm7H,WACAh4B,QAAUn+G,GAAMF,KAAKq+G,QAAQn+G,GAC7Bo+G,OAAQA,IAAMt+G,KAAKs+G,SACnBzW,QAAU3nG,GAAMF,KAAK6nG,QAAQ3nG,GAC7Bk+G,UAAYl+G,GAAMF,KAAKo+G,UAAUl+G,GACjCykK,QAAUzkK,GAAMF,KAAK2kK,QAAQzkK,KAEhC,IAEIwT,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,oBAAqBh4F,KAAMoB,KAAKpB,KAAMk4F,QAASA,IAAM92F,KAAK4kK,eAAiBlxJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,wBAA0BstE,GAASxwJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,uBACxV,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLhjG,MAAS,CAAC,sBAEd;AAIF,OAFA0+J,EAAgB7xF,MAhOY,s+KAiO5B4U,GAA0Bw+E,kBAAoBvB,EACvCj9E,EACR,CAxOA,GAqyzBS,IAAGtpD,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAt3yBlC,WACC,GAAI7hE,GAAwC,OAAOK;AACnDL,GAAyC,EACzC3nF,OAAO2D,eAAeqkF,GAA6B,aAAc,CAAE1hF;AACnE,MAAM2O,EAAQ25E,KACRhF,EAAQ1B,KACRyG,EAAUnjB,EAAcC,uBAGxB+6F,EAAoB,MACxBz5I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKklK,6BAA+BxxJ,EAAMo8E,YAAY9vF,KAAM,+BAAgC,GAC5FA,KAAK+E,aACL/E,KAAK+2D,iBACP,CAMAouG,oBAAoB5wJ,GAClB,MAAMg/E,OAAEA,GAAWh/E,GACb+oG,iBAAEA,GAAqBt9G,KAAKklK,6BAA6B3oG,KAAK,CAClEx3D,MAAOwuF,EAAOxuF,MACd+8J,UAAW9hK,KAAK+E;AAEbu4G,IACHt9G,KAAK+E,MAAQwuF,EAAOxuF,MACpB/E,KAAK+2D,WAAaw8B,EAAOxuF,MACrB/E,KAAKolK,aACPplK,KAAKolK,WAAWrgK,MAAQ/E,KAAK+E,OAE3B/E,KAAKqlK,aACPrlK,KAAKqlK,WAAWtgK,MAAQ/E,KAAK+2D,YAGnC,CACAuuG,kBAAkB/wJ,GAChB,MAAMg/E,OAAEA,GAAWh/E,GACb+oG,iBAAEA,GAAqBt9G,KAAKklK,6BAA6B3oG,KAAK,CAClEx3D,MAAOwuF,EAAOxuF,MACd+8J,UAAW9hK,KAAK+E;AAEbu4G,IACHt9G,KAAK+2D,WAAa/2D,KAAKulK,iBAAiBhyE,EAAOxuF,OAC/C/E,KAAK+E,MAAQwuF,EAAOxuF,MAChB/E,KAAKwlK,iBACPxlK,KAAKwlK,eAAezgK,MAAQ/E,KAAK+E,OAE/B/E,KAAKqlK,aACPrlK,KAAKqlK,WAAWtgK,MAAQ/E,KAAK+2D,YAGnC,CACA0uG,iBAAiBlxJ,GACf,MAAMg/E,OAAEA,GAAWh/E,GACb+oG,iBAAEA,GAAqBt9G,KAAKklK,6BAA6B3oG,KAAK,CAClEx3D,MAAOwuF,EAAOxuF,MACd+8J,UAAW9hK,KAAK+E;AAEbu4G,IACHt9G,KAAK+E,MAAQwuF,EAAOxuF,MAChB/E,KAAKwlK,iBACPxlK,KAAKwlK,eAAezgK,MAAQ/E,KAAK+E,OAE/B/E,KAAKolK,aACPplK,KAAKolK,WAAWrgK,MAAQ/E,KAAK+E,OAGnC,CAMAwgK,iBAAiBG,GACf,MAAMC,EAAct9E,EAAMI,YAAYi9E;AACtC,OAAIC,EAAY58E,WAAuC,SAA1B48E,EAAY58E,UAC/B,IAAGV,EAAMJ,SAAS09E,EAAYz8E,OAAO,GAAIy8E,EAAYz8E,OAAO,GAAIy8E,EAAYz8E,OAAO,IAAInhF,KAAK,MAE/F29J,CACT,CACAE,wBACE5lK,KAAKwlK,eAAiBxlK,KAAKgtD,GAAGn9B,cAAcu9D,EAAQhjB,oBAAoB,iCACxEpqE,KAAKolK,WAAaplK,KAAKgtD,GAAGn9B,cAAcu9D,EAAQhjB,oBAAoB,6BACpEpqE,KAAKqlK,WAAarlK,KAAKgtD,GAAGn9B,cAAcu9D,EAAQhjB,oBAAoB,8BAChEpqE,KAAKwlK,iBACPxlK,KAAKwlK,eAAezgK,MAAQ/E,KAAK+E,OAE/B/E,KAAKolK,aACPplK,KAAKolK,WAAWrgK,MAAQ/E,KAAK+E,OAE3B/E,KAAKqlK,aACPrlK,KAAKqlK,WAAWtgK,MAAQ/E,KAAK+2D,WAEjC,CACA2nG,mBACE1+J,KAAK4lK,uBACP,CACA5vE,oBACEh2F,KAAK+2D,WAAa/2D,KAAKulK,iBAAiBvlK,KAAK+E,MAC/C,CACAq3H,mBACEp8H,KAAK4lK,uBACP,CACAxvE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAyBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAK0+J,qBAC5M,CACI1xG,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAilK,EAAkBrzF,MA1GW,qFA2G7B6U,GAA4Bo/E,oBAAsBZ,EAC3Cx+E,EACR,CApHA,GAu3yBS,IAAGvpD,KAAKs8H,EAAYvqH;AACtB,IAAK,mCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA5uyBlC,WACC,GAAI5+D,GAAgD,OAAOC;AAC3DD,GAAiD,EACjD5qF,OAAO2D,eAAeknF,GAAqC,aAAc,CAAEvkF;AAC3E,MAAM2O,EAAQ25E,KACRmoC,EAAQhsC,KACRnB,EAAQ1B,KACR3iF,EAAWigF;AACjBzB,KACAuB;AACA,MAGM+hF,EAAa,kBACbC,EAAe,oBACfC,EAAsB,CAAC,GAAI,IAC3BC,EAAwB,CAAC,GAAI,IAC7BC,EAA4B,MAChC16I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmmK,qCAAuCzyJ,EAAMo8E,YAAY9vF,KAAM,uCAAwC,GAC5GA,KAAKomK,4BAA8BH,EACnCjmK,KAAKqmK,gBAAkBrmK,KAAK68H,WAAW99H,KAAKiB,MAC5CA,KAAKsmK,eAAiBtmK,KAAK+8H,UAAUh+H,KAAKiB,MAC1CA,KAAKumK,6BAA+BviK,EAASA,SAAShE,KAAKwmK,oBAAoBznK,KAAKiB,MAZvD,IAa7BA,KAAK+E,YACP,CACA0hK,YAAYvmK,EAAGgmH,GAGb,GAFAhmH,EAAEg9E,iBACFh9E,EAAEonG,mBACGkuB,EAAM3mE,aAAa3uD,IAAmB,IAAbA,EAAEwmK,OAC9B;AACF,MAAMriD,EAASmR,EAAM/rC,mBAAmBvpF;AACxCF,KAAKwmK,oBAAoBniD,EAAO35E,EAAG25E,EAAOx5E,EAAGq7E,GAC7ClmH,KAAK2mK,iBAAmBzgD,EACxBvpG,SAAS5H,iBAAiB,YAAa/U,KAAKqmK,iBAC5C1pJ,SAAS5H,iBAAiB,UAAW/U,KAAKsmK,gBAC1C3pJ,SAAS5H,iBAAiB,YAAa/U,KAAKqmK,gBAAiB,CAAE5wJ,aAC/DkH,SAAS5H,iBAAiB,WAAY/U,KAAKsmK,eAAgB,CAAE7wJ,YAC/D,CACAonH,WAAW38H,GACTA,EAAEg9E;AACF,MAAMmnC,EAASmR,EAAM/rC,mBAAmBvpF;AACxCF,KAAKumK,6BAA6BliD,EAAO35E,EAAG25E,EAAOx5E,EAAG7qC,KAAK2mK,iBAC7D,CACA5pC,UAAU78H,GACRA,EAAEg9E,iBACFl9E,KAAK2mK,iBAAmB,KACxBhqJ,SAASwhE,oBAAoB,YAAan+E,KAAKqmK,iBAC/C1pJ,SAASwhE,oBAAoB,UAAWn+E,KAAKsmK,gBAC7C3pJ,SAASwhE,oBAAoB,YAAan+E,KAAKqmK,iBAC/C1pJ,SAASwhE,oBAAoB,WAAYn+E,KAAKsmK,eAChD,CAOAE,oBAAoBI,EAAMC,EAAM3gD,GAC9B,MAAM4gD,EAAO5gD,EAAQjlF;AACrB,IAAK6lI,EACH;AAEF,MAAMz8H,EAAOy8H,EAAKx8H,wBACZy8H,EAAc18H,EAAKO,KACnBo8H,EAAc38H,EAAKU;AAGzB,IAAIk8H,GAAYL,EAAOG,GAFN18H,EAAKE,MAGlB28H,GAAYL,EAAOG,GAFL38H,EAAKG;AAGvBy8H,EAAWj6J,KAAKipC,IAAIjpC,KAAKsqC,IAAI2vH,EAAU,GAAI,GAC3CC,EAAWl6J,KAAKipC,IAAIjpC,KAAKsqC,IAAI4vH,EAAU,GAAI,GAC3ClnK,KAAKmnK,sBAAsB,CACzBjhD,UACAx7E,EAAc,IAAXu8H,EACHp8H,EAAc,IAAXq8H,GAEP,CAWAC,sBAAsBjjK,GACpB,MAAMgiH,QAAEA,EAAOx7E,EAAEA,EAACG,EAAEA,EAAI,GAAE4hH,UAAEA,KAAgB1jE,UAAEA,EAAY,IAAO7kF,EAC3DkjK,EAAgBlhD,EAAQ5a,YAAc;AAC5C4a,EAAQt0C,MAAMhnC,KAAQ,QAAOF,QAAQ08H,OACjClhD,EAAQ1rG,KAAOsrJ,EACjB9lK,KAAKqnK,wBAAwB38H,EAAI,IAAK+hH,GAC7BvmC,EAAQ1rG,KAAOurJ,IACxB7/C,EAAQt0C,MAAM7mC,IAAO,QAAOF,QAAQu8H,OACpCpnK,KAAKsnK,0BAA0B58H,EAAI,IAAKG,EAAI,IAAK4hH,EAAW1jE,GAEhE,CAOAs+E,wBAAwB38H,GAAsB,IAAnB+hH,IAASntJ,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AAClCU,KAAKunK,WAAiB,IAAJ78H,EAClB1qC,KAAKwnK,eAAe51F,MAAM61F,WAAc,OAAMznK,KAAKunK,yBACnDvnK,KAAK0nK,wBAAwBjb,EAC/B,CASA6a,0BAA0B58H,EAAGG,GAAsC,IAAnC4hH,IAASntJ,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACvC,MAAMqoK,EAAiB,IAAJj9H,EACb3lC,EAAQ,IAAU,IAAJ8lC;AACpB,IAAI+8H,EACAlC;AACc,UALuCpmK,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG,KAM1DsoK,EAAav/E,EAAMzB,SAAS5mF,KAAKunK,WAAYI,EAAY5iK,GACzD2gK,EAAe,OAAMkC,EAAW,OAAOA,EAAW,OAAOA,EAAW,QAEpEA,EAAav/E,EAAMJ,SAASjoF,KAAKunK,WAAYI,EAAY5iK,GACzD2gK,EAAe,IAAGkC,EAAW7/J,KAAK,OAEpC/H,KAAK6nK,iBAAiBj2F,MAAM61F,WAAa/B,EACzC1lK,KAAKomK,4BAA8B,CAAC17H,EAAGG,GACnC4hH,GACFzsJ,KAAKmmK,qCAAqC5pG,KAAK,CAAEx3D,MAAO2gK,GAE5D,CAKAgC,0BAA2C,IAAnBjb,IAASntJ,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACdU,KAAKgtD,GAAG/9B,WAAWY,cAAc,uBACzC+hD,MAAM61F,WAAc,mGAEGznK,KAAKunK,oDAErCvnK,KAAKsnK,6BAA6BtnK,KAAKomK,4BAA6B3Z,EACtE,CAMAqb,yBACE,MAAMC,EAAiB1/E,EAAMI,YAAYzoF,KAAK+E;AAC9C,GAAIgjK,EAAe7+E,QAAUlpF,KAAKwnK,gBAAkBxnK,KAAK6nK,iBAAkB,CACzE,MAGMG,EAAW,IAHPD,EAAe7+E,OAAO,GAGL,IACrB++E,EAHIF,EAAe7+E,OAAO,GAI1Bg/E,EAAa,IAHTH,EAAe7+E,OAAO,GAI1Bi/E,EAAiB,CACrBjiD,QAASlmH,KAAKwnK,eACd98H,EAAGs9H,EACHvb,cAEI2b,EAAmB,CACvBliD,QAASlmH,KAAK6nK,iBACdn9H,EAAGu9H,EACHp9H,EAAGq9H,EACHn/E,UAAWg/E,EAAeh/E,UAC1B0jE;AAIF,OAFAzsJ,KAAKmnK,sBAAsBgB,GAC3BnoK,KAAKmnK,sBAAsBiB,KAE7B,CACA,QACF,CAIAC,qBACE,MAAMC,EAAW,CAACtoK,KAAKwnK,eAAgBxnK,KAAK6nK,kBACtCU,EAAqB,CAACvC,EAAqBC;AACjDqC,EAAS3pK,UAASunH,EAASjlH,KACzB,MAAMunK,EAAiB,CACrBtiD,UACAx7E,EAAG69H,EAAmBtnK,GAAG,GACzB4pC,EAAG09H,EAAmBtnK,GAAG,GACzBwrJ;AAEFzsJ,KAAKmnK,sBAAsBqB,EAAe,GAE9C,CACApsC,mBACEp8H,KAAKwnK,eAAiBxnK,KAAKgtD,GAAG/9B,WAAWY,cAAe,IAAGi2I,KAC3D9lK,KAAK6nK,iBAAmB7nK,KAAKgtD,GAAG/9B,WAAWY,cAAe,IAAGk2I,KAC7C/lK,KAAK8nK,0BAEnB9nK,KAAKqoK,oBAET,CAEAjyE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gCAAkCljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,mBAAoBK,KAAM,QAASwxE,YAAcvoK,GAAMF,KAAKymK,YAAYvmK,EAAGF,KAAKwnK,gBAAiBkB,aAAexoK,GAAMF,KAAKymK,YAAYvmK,EAAGF,KAAKwnK,iBAAmB9zJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CiZ,GAAIsrJ,EAAYlvE,MAAO,aAAeljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,qBAAsBK,KAAM,QAASwxE,YAAcvoK,GAAMF,KAAKymK,YAAYvmK,EAAGF,KAAK6nK,kBAAmBa,aAAexoK,GAAMF,KAAKymK,YAAYvmK,EAAGF,KAAK6nK,mBAAqBn0J,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CiZ,GAAIurJ,EAAcnvE,MAAO,aAC91B,CACI5pC,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLhjG,MAAS,CAAC,0BAEd;AAIF,OAFAmhK,EAA0Bt0F,MAhNW,qwCAiNrC0X,GAAoCq/E,6BAA+BzC,EAC5D58E,EACR,CA7NA,GA6uyBS,IAAGpsD,KAAKs8H,EAAYvqH;AACtB,IAAK,gCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7gyBlC,WACC,GAAIv+D,GAA6C,OAAOM;AACxDN,GAA8C,EAC9CjrF,OAAO2D,eAAe4nF,GAAkC,aAAc,CAAEjlF;AACxE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxBme,EAAQ1B,KAQRiiF,EAAyB,MAC7Bp9I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK6oK,kCAAoCn1J,EAAMo8E,YAAY9vF,KAAM,oCAAqC,GACtGA,KAAK+E,YACP,CACA+jK,0BACE,MAAMC,EAA2B37E,EAAQhjB,oBAAoB;AAE7D,OADoBie,EAAMI,YAAYzoF,KAAK+E,OAC3BmkF,OACPx1E,EAAM0hB,EAAE2zI,EAA0B,CAAEhkK,MAAO/E,KAAK+E,MAAO8lD,cAEzDn3C,EAAM0hB,EAAE,MAAO,CAAEwhE,MAAO,2BAnBHljF,EAAM0hB,EACpC,MACA,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaE,KAAM,OAAQD,MAAO,8BACxEhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,8dAiBrE,CACAmrH,iBAAiBlxJ,GACf,MAAMg/E,OAAEA,GAAWh/E,EACbutJ,EAAY9hK,KAAK+E;AACvB/E,KAAKgpK,qBAAqBz1E,EAAOxuF;AACjC,MAAMu4G,iBAAEA,GAAqBt9G,KAAK6oK,kCAAkCtsG,KAAK,CAAEulG,YAAW/8J,MAAO/E,KAAK+E;AAC9Fu4G,IACFt9G,KAAK+E,MAAQ+8J,EAEjB,CACAkH,uBAA0C,IAArBjkK,EAAKzF,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAGU,KAAK+E;AAChC,IAAKA,EACH;AACF,IAAIkkK,EAAelkK;AACK,MAApBkkK,EAAa,KACfA,EAAgB,IAAGA,KAErBjpK,KAAK+E,MAAQkkK,CACf,CACAjzE,oBACEh2F,KAAKgpK,sBACP,CACA5yE,SACE,MAAMqR,EAAyBra,EAAQhjB,oBAAoB;AAC3D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,6BAA+BljF,EAAM0hB,EAAEqyE,EAAwB,CAAElmG,IAAK,2CAA4CwD,MAAO/E,KAAK+E,MAAOyV,GAAI,0BAA2BsqJ,UAAW,GAAKpxJ,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,qBAAuB72F,KAAK8oK,2BAA4Bp1J,EAAM0hB,EAAE,QAAS,CAAE7zB,IAAK,2CAA4C8jC,QAAS,2BAA6B3xB,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAW,QAAS8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,8CACzmB;AAIF,OAFAqnK,EAAuBh3F,MA1CW,wiBA2ClCoY,GAAiCk/E,0BAA4BN,EACtD5+E,EACR,CAzDA,GA8gyBS,IAAG9sD,KAAKs8H,EAAYvqH;AACtB,IAAK,+BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAl9xBlC,WACC,GAAIt+D,GAA4C,OAAOM;AACvDN,GAA6C,EAC7ClrF,OAAO2D,eAAe6nF,GAAiC,aAAc,CAAEllF;AACvE,MAAMqoF,EAAUC,KACVG,EAAUvjB,EAAcC,uBACxBx2D,EAAQ43D,IAqBR69F,EAAwB,MAC5B39I,YAAYmkE,GACVvC,EAAQwC,iBAAiB5vF,KAAM2vF,GAC/B3vF,KAAKopK,iCAAmCh8E,EAAQ0C,YAAY9vF,KAAM,mCAAoC,GACtGA,KAAK+E,YACP,CACAkyH,eACEj3H,KAAKqpK,uBACP,CAGAC,gCAAgCppK,GAC9BF,KAAKs3H,wBAAwBp3H,EAAEqzF,OACjC,CACA+jC,wBAAwBiyC,GACtB,MAAMC,EAAgBD,EAAU97G,SAAW87G,EAAUxkK,MAAQ;AAC7D,GAAI/E,KAAK+E,QAAUykK,EACjB;AAEF,MAAMlsD,iBAAEA,GAAqBt9G,KAAKopK,iCAAiC7sG,KAAK,CACtEx3D,MAAOykK,EACP1H,UAAW9hK,KAAK+E;AAEbu4G,IACHt9G,KAAK+E,MAAQykK,EAEjB,CAEAH,wBACE,IAAI3/C,EAAQ,IACP1pH,KAAKgtD,GAAG5nB,iBAAiBooD,EAAQpjB,oBAAoB;AAErC,IAAjBs/C,EAAMnqH,SACRmqH,EAAQ,IAEH1pH,KAAKgtD,GAAG/9B,WAAWmW,iBAAiBooD,EAAQpjB,oBAAoB,0BAGvEs/C,EAAM/qH,SAASoC,GAASA,EAAK0sD,SAAWztD,KAAK+E,QAAUhE,EAAKgE,OAC9D,CACA25J,mBACE1+J,KAAKqpK,uBACP,CACAjzE,SACE,OAAOhJ,EAAQh4D,EAAEg4D,EAAQuJ,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,2BAA4BK,KAAM,QAAU7J,EAAQh4D,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAK0+J,oBA/D9N,CACLhrJ,EAAMw4D,yBACNx4D,EAAM+4D,oBACN/4D,EAAM44D,uBACN54D,EAAM04D,qBACN14D,EAAMu5D,uBACNv5D,EAAMi5D,sBACNj5D,EAAMu4D,sBACNv4D,EAAMy4D,uBACNz4D,EAAM24D,sBACN34D,EAAMk5D,qBACNl5D,EAAMq4D,qBACNr4D,EAAMg5D,oBACNh5D,EAAM84D,uBACN94D,EAAM64D,sBAiDmRjrE,KAAKmoK,GACrRr8E,EAAQh4D,EAAE,sBAAuB,CAAErwB,MAAO0kK,OAErD,CACIz8G,SACF,OAAOogC,EAAQgK,WAAWp3F,KAC5B,CACW+nG,sBACT,MAAO,CACLhjG,MAAS,CAAC,gBAEd;AAIF,OAFAokK,EAAsBv3F,MA3DW,+IA4DjCqY,GAAgCy/E,yBAA2BP,EACpDl/E,EACR,CAvFA,GAm9xBS,IAAG/sD,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAz3xBlC,WACC,GAAIr+D,GAAwC,OAAOM;AACnDN,GAAyC,EACzCnrF,OAAO2D,eAAe8nF,GAA6B,aAAc,CAAEnlF;AACnE,MAAM2O,EAAQ25E,KAGRs8E,EAAoB,MACxBn+I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,EAC/B,CACAyG,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAyBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACvI;AAIF,OAFAooK,EAAkB/3F,MAVW,4wBAW7BsY,GAA4B0/E,oBAAsBD,EAC3Cz/E,EACR,CAlBA,GA03xBS,IAAGhtD,KAAKs8H,EAAYvqH;AACtB,IAAK,qBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAr2xBlC,WACC,GAAIp+D,GAAoC,OAAOM;AAC/CN,GAAqC,EACrCprF,OAAO2D,eAAe+nF,GAAyB,aAAc,CAAEplF;AAC/D,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVyF,EAASL,IACT8c,EAAUvjB,EAAcC,uBAGxB2/F,EAAgB,MACpBr+I,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK8pK,6BAA+Bp2J,EAAMo8E,YAAY9vF,KAAM,+BAAgC,GAC5FA,KAAK+pK,qBAAuBr2J,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAKgqK,qBACLhqK,KAAKiqK,UACLjqK,KAAKm7H,UACLn7H,KAAKi9J,uBAAyB7vE,EAAQxhB,wDACtC5rE,KAAKk9J,sBAAwB9vE,EAAQthB,uDACrC9rE,KAAKwP,MAAQ,GACbxP,KAAKkqK,WAAa,EAClBlqK,KAAKmqK,WAAa,CAAC,CACrB,CACAC,qBAAqBC,GACnBrqK,KAAKwP,MAAMxO,KAAKqpK,GAChBrqK,KAAKwP,MAAQ,IAAIxP,KAAKwP,MACxB,CACA86J,aAAanyI,GACXA,EAASx5B,SAAS4rK,IAChBvqK,KAAKmqK,WAAWI,EAAQn4J,MAAMyR,OAAS,EACvC7jB,KAAKkqK,YAAc,CAAC,IAEE,IAApB/xI,EAAS54B,SACXS,KAAKm7H,UACL13H,iBACEzD,KAAK+pK,qBAAqBxtG,MAAM,GAC/Bv8D,KAAKk9J,wBAEVl9J,KAAKwqK,gBACP,CACAC,uCAAuCC,GAErC,OAD6BjsK,OAAOkzB,QAAQo/C,EAAOH,cAAchmE,QAAO+/J,IAAA,IAAE,CAAE/xF,GAAO+xF;AAAA,OAAK/xF,EAAO/H,IAAI,IAAEvvE,KAAIspK,IAAA,IAAEx4J,GAAKw4J;AAAA,OAAKp9E,EAAQpjB,oBAAqB,UAASh4D,IAAO,IACtI/R,SAASqqK,EAAS3lJ,QAAQke,cACxD,CACAunI,iBACMxqK,KAAKgtD,GAAGhqB,aAAa,YAAoC,IAAtBhjC,KAAKwP,MAAMjQ,SAGlDS,KAAKiqK,QAAUjqK,KAAKwP,MAAMzJ,MAAMwkK,GAAYvqK,KAAKyqK,uCAAuCF,EAAQv9G,MAClG,CACA69G,eAAeC,GACb,OAAO9qK,KAAKwP,MAAMzJ,MAAMwkK,GAAYA,EAAQv9G,KAAO89G,GACrD,CACAC,wBAAwB7qK,GACtB,MAAMqqK,EAAUrqK,EAAEqzF,OAAOxiB,OACnB3+D,EAAOlS,EAAEqzF,OAAOnhF;AACtB,GAAIm4J,EAAQtpI,gBAAkBjhC,KAAKgtD,GACjC;AACK,GAAIhtD,KAAK6qK,eAAeN,GAC7B;AAEF,MAAMS,EAAoBhrK,KAAKirK,iBAAiB74J;AAChDm4J,EAAQxN,SAAWiO,EACnBT,EAAQ/vJ,GAAK+vJ,EAAQ/vJ,IAAMwwJ,EAC3BhrK,KAAKgqK,cAAgB,CACnBh9G,GAAIu9G,EACJn4J,OACA2qJ,SAAUwN,EAAQxN,SAClBviJ,GAAI+vJ,EAAQ/vJ,GACZ9G,MAAO1T,KAAKwP,MAAMjQ,OAClB2rK,YAAalrK,KAAKmqK,WAAW/3J,GAAMyR,MAAQ,GAE7C7jB,KAAK8pK,6BAA6BvtG,KAAK,CACrCjnC,OAAQ,wBACR00I,cAAehqK,KAAKgqK,cACpBx6J,MAAOxP,KAAKwP,OAEhB,CAEA27J,4BAA4B52J,GACtBA,EAAM+oG,kBAGN/oG,EAAM3S,OAAOq/B,gBAAkBjhC,KAAKgtD,IACtChtD,KAAKi5B,MAAM1kB,EAAMg/E,OAAOxiB,OAAOgsF,SAEnC,CACAkO,iBAAiB74J,GACf,MAAQ,GAAEA,KAAQpS,KAAKmqK,WAAW/3J,GAAMyR,MAAQ,GAClD,CACAunJ,cAAcrO,GACZ,OAAO/8J,KAAKwP,MAAMtO,MAAMqpK,GAAYA,EAAQxN,WAAaA,GAC3D,CAIAl3G,KAAKwlH,GAKH,OAJ0B,IAAtBrrK,KAAKwP,MAAMjQ,SACbS,KAAKiqK,QAAUjqK,KAAKyqK,uCAAuCY,IAE7DrrK,KAAKgtD,GAAGzqC,YAAY8oJ,GACblpF,QAAQC,SACjB,CASAnpD,MAAM8jI,GACJ,IAAIwN;AACJ,MAAMjwH,EAAIt6C,KAAKwP,MAAMhP,QAAQ+pK;AAO7B,GANIxN,GACFwN,EAAUvqK,KAAKwP,MAAMtO,MAAMoqK,GAAYA,EAAQvO,WAAaA,KAC3DwN,GAAWhsK,QAAQH,KAAM,8CAA6C2+J,2BAEvEwN,EAAUvqK,KAAKgqK,cAEbO,EAAS,CACX,GAAqB,WAAjBA,EAAQn4J,MAAqBm4J,EAAQv9G,GAAGu+G,WAC1C,OAAOppF,QAAQC;AAEjB3+E,iBACE,IAAIiC;AACgI,mBAAhD,QAAvEA,EAAK6kK,eAAkDA,EAAQv9G,cAAgBtnD,SAAyBA,EAAGqO,SACtHw2J,EAAQv9G,GAAGj5C,SAEb/T,KAAKwP,MAAMmE,OAAO2mC,EAAG,GACrBt6C,KAAKwP,MAAQ,IAAIxP,KAAKwP,OACtBxP,KAAK8pK,6BAA6BvtG,KAAK,CACrCjnC,OAAQ,qBACR00I,cAAeO,EACf/6J,MAAOxP,KAAKwP,OACZ,GACD+6J,EAAQv9G,GAAGkwG,sBAChB,CACA,OAAO/6E,QAAQC,SACjB,CASAopF,eAEE,OADAxrK,KAAKi5B,QACEkpD,QAAQC,SACjB,CACAy7B,oBACE9sC,EAAOJ,iBAAiBhyE,SAAS8sK,IAC/BzrK,KAAKmqK,WAAWsB,GAAc,CAAE5nJ,MAAO,EAAG,GAE9C,CACAuyE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAQ,mBAAiB52F,KAAKiqK,OAAS,UAAY,KAAQv2J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAClK,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLiiE,cAAiB,CAAC,wBAClBx6J,MAAS,CAAC,gBAEd;AAIF,OAFAq6J,EAAcj4F,MAnKW,k5CAoKzBuY,GAAwBuhF,eAAiB7B,EAClC1/E,EACR,CA9KA,GAs2xBS,IAAGjtD,KAAKs8H,EAAYvqH;AACtB,IAAK,6BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EArrxBlC,WACC,GAAIn+D,GAA2C,OAAOM;AACtDN,GAA4C,EAC5CrrF,OAAO2D,eAAegoF,GAAgC,aAAc,CAAErlF;AACtE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxBo5C,EAAMrhC,IAGN0pF,EAAuB,MAC3BngJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK4rK,8BAAgCl4J,EAAMo8E,YAAY9vF,KAAM,gCAAiC,GAC9FA,KAAK6rK,gCAAkCn4J,EAAMo8E,YAAY9vF,KAAM,kCAAmC,GAClGA,KAAKq5E,UACLr5E,KAAKqkE,sBACLrkE,KAAKwP,MAAQ,EACf,CACAs8J,wBACE,GAAI9rK,KAAK+rK,kBACP;AACF,MAAMC,EAAkBA,KACtBhsK,KAAKwP,MAAQ,IAAIxP,KAAKgtD,GAAG2mB,UACzB3zE,KAAKqkE,eAAiBrkE,KAAKwP,MAAMjQ,OAAS,EAAIS,KAAKwP,MAAMxP,KAAKwP,MAAMjQ,OAAS,GAAK;AAEpFysK,IACAhsK,KAAK+rK,kBAAoB,IAAItgJ,iBAAiBugJ,GAC9ChsK,KAAK+rK,kBAAkB35I,QAAQpyB,KAAKgtD,GAAI,CAAEqK,cAC5C,CACAkmD,0BACE,MAAQv9G,KAAKqkE,sBACLi/C,EAAIphC;AAEZ,OAAOliF,KAAKqkE,cACd,CACA4nG,2BAA0BC,GAA8B,IAA3BtqK,OAAQuqK,GAAgBD;AACoD,mBAA3FC,eAAgEA,EAAep4J,SACzFo4J,EAAep4J,SAEjB/T,KAAKwP,MAAMmE,OAAO3T,KAAKwP,MAAMhP,QAAQ2rK,GAAiB,GAC5B,IAAtBnsK,KAAKwP,MAAMjQ,QACbS,KAAK+8E,YAET,CACAqvF,cAAclsK,GACZ,IAAIwF,EAAI4P;AACR,GAAc,WAAVpV,EAAEqB,KAA8B,QAAVrB,EAAEqB,IAAe,CACzC,MAAMyoK,EAA+C,QAA9BtkK,EAAK1F,KAAKqkE,0BAA4B3+D,SAAyBA,EAAGskK;AAC8D,mBAAjD,QAAzF10J,EAAK00J,eAA8DA,EAAch9G,cAAgB13C,SAAyBA,EAAGgnJ,UACxI0N,EAAch9G,GAAGsvG,QAAQ,CAAE1uI,OAAQ5tB,KAAKgtD,IAE5C,CACF,CAKAuwD,WAAWutD,EAAUuB,GACnB,IAAIC,EAAmBD;AAClBrsK,KAAKqkE,iBAAkBymG,IAC1BwB,MAEEA,GACFtsK,KAAKssK,yBAEDtsK,KAAKqkE,eAAexe,KAAKilH,EACjC,CAIA7xI,MAAM8jI,GAEJ,OADA/8J,KAAKqkE,eAAeprC,MAAM8jI,GACnB56E,QAAQC,SACjB,CAIAkqF,mBAIE,OAHAtsK,KAAKs+E,WACLt+E,KAAKgtD,GAAGzqC,YAAY5F,SAASuF,cAAckrE,EAAQhjB,oBAAoB,oBACvEpqE,KAAKqkE,eAAiBrkE,KAAKgtD,GAAGu/G,iBACvBpqF,QAAQC,SACjB,CAIArF,aAGE,OAFA/8E,KAAKq5E,UACLr5E,KAAK6rK,gCAAgCtvG,OAC9B4lB,QAAQC,SACjB,CAIA9D,WAKE,OAJKt+E,KAAKq5E,SACRr5E,KAAKq5E,UACLr5E,KAAK4rK,8BAA8BrvG,QAE9B4lB,QAAQC,SACjB,CACAoqF,kBAAkBtsK,GAChB,IAAIwF,EAAI4P;AACR,GAAe,cAAXpV,EAAEkS,KACJpS,KAAKysK,YAAcvsK,EAAE0B,OAAOmjB;KACvB,GAAe,YAAX7kB,EAAEkS,KAAoB,CAC/B,MAAMs6J,EAAYxsK,EAAE0B,OAAOmjB;AAC3B,GAAI/kB,KAAKysK,cAAgBC,GAAaxsK,EAAE0B,OAAOmjB,QAAQke,gBAAkBmqD,EAAQhjB,oBAAoB,oBAAsBlqE,EAAE0B,OAAOglC,UAAUM,SAAS,WAAY,CACjK,MAAM8iI,EAA+C,QAA9BtkK,EAAK1F,KAAKqkE,0BAA4B3+D,SAAyBA,EAAGskK;AAC8D,mBAAjD,QAAzF10J,EAAK00J,eAA8DA,EAAch9G,cAAgB13C,SAAyBA,EAAGgnJ,UACxI0N,EAAch9G,GAAGsvG,QAAQ,CAAE1uI,OAAQ5tB,KAAKgtD,IAE5C,CACF,CACF,CACAovE,mBACEp8H,KAAK8rK,uBACP,CACA11E,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,yBAA0B6xE,YAAcvoK,GAAMF,KAAKwsK,kBAAkBtsK,GAAIysK,UAAYzsK,GAAMF,KAAKwsK,kBAAkBtsK,IAAMwT,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACtO,CACAu8G,uBACE,IAAIp4G;AAC8B,QAAjCA,EAAK1F,KAAK+rK,6BAA+BrmK,GAAyBA,EAAG6sB,YACxE,CACIy6B,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA2rK,EAAqB/5F,MA1HW,opBA2HhCwY,GAA+BwiF,uBAAyBjB,EACjDvhF,EACR,CApIA,GAsrxBS,IAAGltD,KAAKs8H,EAAYvqH;AACtB,IAAK,yBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkB96D,KAC3C,IAAGjwD,KAAKs8H,EAAYvqH;AACtB,IAAK,8BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA31vBlC,WACC,GAAI3wD,GAA2C,OAAOG;AACtDH,GAA4C,EAC5C74F,OAAO2D,eAAeq1F,GAAgC,aAAc,CAAE1yF;AACtE,MAAM2O,EAAQ25E,KAiBRw/E,EAAuB,MAC3BrhJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK8sK,6BAA+Bp5J,EAAMo8E,YAAY9vF,KAAM,+BAAgC,GAC5FA,KAAK+sK,+BAAiCr5J,EAAMo8E,YAAY9vF,KAAM,iCAAkC,GAChGA,KAAKgtK,8BAAgCt5J,EAAMo8E,YAAY9vF,KAAM,gCAAiC,GAC9FA,KAAK6qD,YACL7qD,KAAK2oC,UAAY,OACjB3oC,KAAKyvF,SACLzvF,KAAKytD,YACLztD,KAAK4uF,WACL5uF,KAAKoS,WACP,CAIA6rG,kBAAkB/9G,GAChB,IAAIwF;AACJ,GAAI1F,KAAK6qD,UAAiF,KAAhD,QAAnBnlD,EAAK1F,KAAK4uF,eAAiBlpF,SAAyBA,EAAGnG,QAE5E,YADAW,EAAEq9E;AAGJ,MAAM0vF,EAAkB/sK,aAAau9G,eAA4B,YAAXv9G,EAAEkS,MAAgC,UAAVlS,EAAEqB,KACjE,UAAXrB,EAAEkS,MAAoB66J,IACxBjtK,KAAK8sK,6BAA6BvwG,KAAK,CAAErgD,KAAMlc,KAAKgtD,KAEvC,cAAX9sD,EAAEkS,MACJpS,KAAK+sK,+BAA+BxwG,KAAK,CAAErgD,KAAMlc,KAAKgtD,KAEzC,aAAX9sD,EAAEkS,MACJpS,KAAKgtK,8BAA8BzwG,MAEvC,CACA65B,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAQ,0BAA0BK,KAAMj3F,KAAK6qD,WAAa7qD,KAAK4uF,WAAe,SAAUynD,SAAUr2I,KAAK6qD,WAAa7qD,KAAK4uF,KAAO,EAAI,EAAG,gBAAiB5uF,KAAK6qD,SAAU,eAAgB7qD,KAAKytD,SAAW,OAAS,QAASqpC,QAAU52F,IAC/SF,KAAKi+G,kBAAkB/9G,IACtBg+G,YAAch+G,IACfF,KAAKi+G,kBAAkB/9G,IACtBi+G,WAAaj+G,IACdF,KAAKi+G,kBAAkB/9G,IACtBgtK,UAAYhtK,IACbF,KAAKi+G,kBAAkB/9G,KACpBwT,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,2CAA6C52F,KAAK4uF,KAClI,CACI5hC,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA6sK,EAAqBj7F,MAhEY,27JAiEjC6lB,GAA+B01E,wBAA0BN,EAClDp1E,EACR,CAxEA,GA41vBS,IAAGv6D,KAAKs8H,EAAYvqH;AACtB,IAAK,oCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkBloD,KAC3C,IAAG7iE,KAAKs8H,EAAYvqH;AACtB,IAAK,8BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAv8rBlC,WACC,GAAIhgD,GAA2C,OAAOK;AACtDL,GAA4C,EAC5CxpG,OAAO2D,eAAekmG,GAAgC,aAAc,CAAEvjG;AACtE,MAAM2O,EAAQ25E,KACRC,EAAO/C,KACP6C,EAAUnjB,EAAcC,uBAGxBkjG,EAAuB,MAC3B5hJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKqtK,qCAAuC35J,EAAMo8E,YAAY9vF,KAAM,uCAAwC,GAC5GA,KAAK0wF,UAAY,UACjB1wF,KAAKywF,iBAAmB,GACxBzwF,KAAKswF,uBACP,CACAg9E,oCAAoCptK,GAClCA,EAAEonG,kBACFtnG,KAAKqtK,qCAAqC9wG,KAAK,CAC7Ci4B,cAAet0F,EAAEqzF,OAAO4lC,mBAE5B,CAKA7jC,mBACE,MAAMi4E,EAAmBngF,EAAQhjB,oBAAoB;AAMrD,OALApqE,KAAKgtD,GAAG/9B,WAAWmW,iBAAiBmoI,GAAkB5uK,SAAS6yF,IACzDA,EAAI3hE,cAAc,QAAQjxB,OAAS0uF,EAAK9C,gBAAgBU,QAC1DsG,EAAItoD,OACN,IAEKi5C,QAAQC,SACjB,CACAgU,SACE,MAAM2pE,EAAoB3yE,EAAQhjB,oBAAoB,eAChDmjG,EAAmBngF,EAAQhjB,oBAAoB,cAC/CojG,EAAgBxtK,KAAKywF,iBAAiB5gF,MAAM;AAClD,OAAO6D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,2BAA6BljF,EAAM0hB,EAAE2qI,EAAmB,CAAEx+J,IAAK,2CAA4C+9G,gBAAwC,SAAnBt/G,KAAK0wF,YAAyB88E,EAAcntK,SAASitF,EAAK9C,gBAAgBC,QAAU/2E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBC,MAAOh9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBC,OAAS/2E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBC,OAAS,UAA8B,WAAnBzqF,KAAK0wF,YAA2B88E,EAAcntK,SAASitF,EAAK9C,gBAAgBE,YAAch3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBE,UAAWj9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBE,WAAah3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBE,WAAa,cAAkC,SAAnB1qF,KAAK0wF,YAAyB88E,EAAcntK,SAASitF,EAAK9C,gBAAgBG,YAAcj3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBG,UAAWl9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBG,WAAaj3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBG,WAAa,cAAkC,WAAnB3qF,KAAK0wF,YAA2B88E,EAAcntK,SAASitF,EAAK9C,gBAAgBI,YAAcl3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBI,UAAWn9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBI,WAAal3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBI,WAAa,cAAkC,SAAnB5qF,KAAK0wF,YAAyB88E,EAAcntK,SAASitF,EAAK9C,gBAAgBK,aAAen3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBK,WAAYp9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBK,YAAcn3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBK,YAAc,eAAmC,WAAnB7qF,KAAK0wF,YAA2B88E,EAAcntK,SAASitF,EAAK9C,gBAAgBM,aAAep3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBM,WAAYr9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBM,YAAcp3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBM,YAAc,eAAmC,SAAnB9qF,KAAK0wF,YAAyB88E,EAAcntK,SAASitF,EAAK9C,gBAAgBO,YAAcr3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBO,UAAWt9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBO,WAAar3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBO,WAAa,cAAkC,WAAnB/qF,KAAK0wF,YAA2B88E,EAAcntK,SAASitF,EAAK9C,gBAAgBQ,YAAct3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBQ,UAAWv9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBQ,WAAat3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBQ,WAAa,cAAkC,YAAnBhrF,KAAK0wF,YAA4B88E,EAAcntK,SAASitF,EAAK9C,gBAAgBS,aAAev3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBS,WAAYx9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBS,YAAcv3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBS,YAAc,gBAAiBuiF,EAAcntK,SAASitF,EAAK9C,gBAAgBU,SAAWx3E,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAK,2CAA4CwD,MAAOuoF,EAAK9C,gBAAgBU,OAAQz9B,SAAUztD,KAAKswF,mBAAqBhD,EAAK9C,gBAAgBU,QAAUx3E,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM0uF,EAAK9C,gBAAgBU,QAAU,YAC7hI,CACIl+B,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAotK,EAAqBx7F,MAvCW,+vBAwChC02B,GAA+BmlE,wBAA0BL,EAClD9kE,EACR,CAjDA,GAw8rBS,IAAGprE,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAp5rBlC,WACC,GAAI//C,GAAmC,OAAOK;AAC9CL,GAAoC,EACpCzpG,OAAO2D,eAAemmG,GAAwB,aAAc,CAAExjG;AAC9D,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVmxF,EAAYnqF,IACZkb,EAAUvjB,EAAcC,uBAGxBwjG,EAAe,MACnBliJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK28J,mBAAqBjpJ,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK48J,sBAAwBlpJ,EAAMo8E,YAAY9vF,KAAM,wBAAyB,GAC9EA,KAAK68J,uBAAyBnpJ,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKoS,KAAO,SACZpS,KAAKm7H,UACLn7H,KAAK+8J,gBACL/8J,KAAK0T,aACL1T,KAAKk+J,aACLl+J,KAAKurK,cACLvrK,KAAKm9J,aACLn9J,KAAKi9J,uBAAyB7vE,EAAQjgB,iDACtCntE,KAAKk9J,sBAAwB9vE,EAAQhgB,+CACvC,CAOAkvF,QAAQgB,GACN,IAAKt9J,KAAKurK,WAAY,CACpB,MAAMjuD,iBAAEA,GAAqBt9G,KAAK48J,sBAAsBrgG,KAAK,CAC3DwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,QAAS0vI,eAAgEA,EAAe1vI,SAAW5tB,KAAKgtD;AAErGswD,IACHt9G,KAAKm7H,UACL13H,iBACEzD,KAAK68J,uBAAuBtgG,KAAK,CAC/BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,OAAQ5tB,KAAKgtD,IACb,GACDhtD,KAAKk9J,uBAEZ,CACA,OAAO/6E,QAAQC,SACjB,CACAm7E,mBAAmBplI,EAAUq+B,GACvBr+B,IAAaq+B,IACXr+B,EACFn4B,KAAKw9J,oBAELx9J,KAAKy9J,sBAGX,CASAD,kBAAkBt5J,EAASs0E,GAazB,OAZIx4E,KAAKy8J,WACPz8J,KAAKy8J,UAAUn+E,SAAS9F,QAAyDA,EAAkB,CAAC,GAC/Fx4E,KAAKm9J,YACRn9J,KAAKm9J,eAGPn9J,KAAKy8J,UAAYA,EAAUnkF,2BAA2B,CACpDE,kBACAxrB,GAAIhtD,KAAKgtD,GACT9oD,YAGGi+E,QAAQC,SACjB,CAMAq7E,oBAAoB9+E,GAWlB,OAVI3+E,KAAKy8J,YACPz8J,KAAKy8J,UAAU1/E,WAAWt+E,OAAOkD,OAAO,CAAEq7E,eAAmB8B,oBAAsB4+B,GAAY,IAAIv7B,SAASC,IACtB,mBAAxEs7B,eAAkDA,EAAQggD,UACpEhgD,EAAQggD,WAERt7E,GACF,KACIzD,IACN3+E,KAAKy8J,kBAEAt6E,QAAQC,SACjB,CACAurF,gCACE,MAAMC,EAAW5tK,KAAKgtD,GAAG5nB,iBAAiB;AACtCwoI,EAASruK,OAAS,IACpBquK,EAAS,GAAGh8F,MAAMD,UAAY,IAElC,CACAk8F,mBACE7tK,KAAK2tK,+BACP,CACA9vD,oBACE79G,KAAK8tK,yBAA2BrqK,iBAC9BzD,KAAK28J,mBAAmBpgG,KAAK,CAC3BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,OAETpS,KAAKm9J,WACPn9J,KAAKw9J,mBACP,GACCx9J,KAAKi9J,wBACRj9J,KAAK6tK,kBACP,CACA/vD,uBACE99G,KAAKy9J,sBACL75J,aAAa5D,KAAK8tK,yBACpB,CACA13E,SACE,MAAM8oE,EAAiC1xE,EAAQpjB,oBAAoB;AACnE,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAiBK,KAAM,UAAYj3F,KAAKk+J,WAAaxqJ,EAAM0hB,EAAE8pI,EAAgC,CAAE39J,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcv+G,KAAK6tK,iBAAiB9uK,KAAKiB,QACtV,CACIgtD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLo1D,UAAa,CAAC,sBAElB;AAIF,OAFAuQ,EAAa97F,MApIW,srHAqIxB22B,GAAuBwlE,cAAgBL,EAChCnlE,EACR,CA/IA,GAq5rBS,IAAGrrE,KAAKs8H,EAAYvqH;AACtB,IAAK,qBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAnwrBlC,WACC,GAAI9/C,GAAoC,OAAOK;AAC/CL,GAAqC,EACrC1pG,OAAO2D,eAAeomG,GAAyB,aAAc,CAAEzjG;AAC/D,MAAM2O,EAAQ25E,KAGR2gF,EAAgB,MACpBxiJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKoqG,OAAS,SACdpqG,KAAKmD,KAAO,OACd,CACAizF,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,kBACvF;AAIF,OAFAo3E,EAAcp8F,MAZW,6dAazB42B,GAAwBylE,eAAiBD,EAClCxlE,EACR,CApBA,GAowrBS,IAAGtrE,KAAKs8H,EAAYvqH;AACtB,IAAK,yBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7urBlC,WACC,GAAI7/C,GAAuC,OAAOK;AAClDL,GAAwC,EACxC3pG,OAAO2D,eAAeqmG,GAA4B,aAAc,CAAE1jG;AAClE,MAAM2O,EAAQ25E,KACRmoC,EAAQhsC,KAGR0kF,EAAmB,MACvB1iJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmuK,0BAA4Bz6J,EAAMo8E,YAAY9vF,KAAM,4BAA6B,GACtFA,KAAKouK,yBAA2B16J,EAAMo8E,YAAY9vF,KAAM,2BAA4B,GACpFA,KAAKquK,wBAA0B36J,EAAMo8E,YAAY9vF,KAAM,0BAA2B,GAClFA,KAAKqmK,gBAAkBrmK,KAAK68H,WAAW99H,KAAKiB,MAC5CA,KAAKsmK,eAAiBtmK,KAAK+8H,UAAUh+H,KAAKiB,KAC5C,CACAymK,YAAYvmK,GAGV,GAFAA,EAAEg9E,iBACFh9E,EAAEonG,mBACGkuB,EAAM3mE,aAAa3uD,IAAmB,IAAbA,EAAEwmK,OAC9B;AACF,MAAMyH,0BAAEA,EAAyB9H,gBAAEA,EAAeC,eAAEA,GAAmBtmK,KACjEqkH,EAASmR,EAAM/rC,mBAAmBvpF,IAClCo9G,iBAAEA,GAAqB6wD,EAA0B5xG,KAAK8nD;AACxD/G,IAEJ3gG,SAAS5H,iBAAiB,YAAasxJ,GACvC1pJ,SAAS5H,iBAAiB,UAAWuxJ,GACrC3pJ,SAAS5H,iBAAiB,YAAasxJ,EAAiB,CAAE5wJ,aAC1DkH,SAAS5H,iBAAiB,WAAYuxJ,EAAgB,CAAE7wJ,aAC1D,CACAonH,WAAW38H,GACTA,EAAEg9E;AACF,MAAMkxF,yBAAEA,EAAwB/H,gBAAEA,EAAeC,eAAEA,GAAmBtmK,KAChEqkH,EAASmR,EAAM/rC,mBAAmBvpF,IAClCo9G,iBAAEA,GAAqB8wD,EAAyB7xG,KAAK8nD;AACvD/G,IACF3gG,SAASwhE,oBAAoB,YAAakoF,GAC1C1pJ,SAASwhE,oBAAoB,UAAWmoF,GACxC3pJ,SAASwhE,oBAAoB,YAAakoF,GAC1C1pJ,SAASwhE,oBAAoB,WAAYmoF,GAE7C,CACAvpC,UAAU78H,GACRA,EAAEg9E;AACF,MAAMmxF,wBAAEA,EAAuBhI,gBAAEA,EAAeC,eAAEA,GAAmBtmK,KAC/DqkH,EAASmR,EAAM/rC,mBAAmBvpF,IAClCo9G,iBAAEA,GAAqB+wD,EAAwB9xG,KAAK8nD;AACtD/G,IAEJ3gG,SAASwhE,oBAAoB,YAAakoF,GAC1C1pJ,SAASwhE,oBAAoB,UAAWmoF,GACxC3pJ,SAASwhE,oBAAoB,YAAakoF,GAC1C1pJ,SAASwhE,oBAAoB,WAAYmoF,GAC3C,CACAlwE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,qBAAsB6xE,YAAcvoK,GAAMF,KAAKymK,YAAYvmK,GAAIwoK,aAAexoK,GAAMF,KAAKymK,YAAYvmK,GAAI,cAAe,QAAUwT,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,+qBACze;AAIF,OAFA4zH,EAAiBt8F,MAtDW,mOAuD5B62B,GAA2B6lE,mBAAqBJ,EACzCzlE,EACR,CA/DA,GA8urBS,IAAGvrE,KAAKs8H,EAAYvqH;AACtB,IAAK,sBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkBt/C,KAC3C,IAAGzrE,KAAKs8H,EAAYvqH;AACtB,IAAK,yBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA5moBlC,WACC,GAAIxpC,GAAuC,OAAOK;AAClDL,GAAwC,EACxChgH,OAAO2D,eAAe08G,GAA4B,aAAc,CAAE/5G;AAClE,MAAM2O,EAAQ25E,KAGR8vC,EAAmB,MACvB3xG,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKuuK,cACP,CACAC,uBACExuK,KAAKuuK,YAAcpxJ,QAAQnd,KAAKgtD,GAAGn9B,cAAc,oBACnD,CACAqmE,sBACEl2F,KAAKwuK,sBACP,CACAp4E,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,sBAAwBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAY8U,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,QAAUljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,iBAAmB8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,oBAAsBoB,KAAKuuK,aAAe76J,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,WAAaljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAC3sB,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAm9H,EAAiBvrD,MApBW,ywDAqB5BktC,GAA2B2vD,mBAAqBtxC,EACzCre,EACR,CA5BA,GA6moBS,IAAG5hF,KAAKs8H,EAAYvqH;AACtB,IAAK,mBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA9koBlC,WACC,GAAIvpC,GAAkC,OAAOK;AAC7CL,GAAmC,EACnCjgH,OAAO2D,eAAe28G,GAAuB,aAAc,CAAEh6G;AAC7D,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBACxB8F,EAAKN,IAMLg/F,EAAc,MAClBljJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK2uK,YAAc3+F,EAAGA,KACtBhwE,KAAKpB,YACLoB,KAAKwvI,YACLxvI,KAAK6qD,YACL7qD,KAAK+wF,UACP,CACA69E,mBAaE,MAZ2B,CACzBxhF,EAAQhjB,oBAAoB,qBAC5BgjB,EAAQhjB,oBAAoB,yBAC5BgjB,EAAQhjB,oBAAoB,iBAC5BgjB,EAAQhjB,oBAAoB,mBAC5BgjB,EAAQhjB,oBAAoB,sBAEkBykG,SAAS/pJ,GAChD,IACF9kB,KAAKgtD,GAAG8hH,qBAAqBhqJ,KAItC,CACAiqJ,eACE,OAAO/uK,KAAKgtD,GAAGn9B,cAAc,iBAC/B,CACAm/I,yBACE,OAAOhvK,KAAKgtD,GAAGn9B,cAAc,4BAC/B,CACAo/I,4BACE,MAAMC,EAAc;AAOpB,OANIlvK,KAAK+uK,gBACPG,EAAYluK,KAAM,GAAEhB,KAAK2uK,qBAEvB3uK,KAAKgvK,0BACPE,EAAYluK,KAAM,GAAEhB,KAAK2uK,gCAEpBO,EAAYnnK,KAAK,IAC1B,CACAonK,wBACE,MAAMC,EAAcpvK,KAAK+uK;AACrBK,IACFA,EAAY7uF,aAAa,OAAQ,SACjC6uF,EAAY7uF,aAAa,KAAO,GAAEvgF,KAAK2uK,qBAE3C,CACAU,kCACE,MAAMC,EAAwBtvK,KAAKgvK;AAC/BM,GACFA,EAAsB/uF,aAAa,KAAO,GAAEvgF,KAAK2uK,+BAErD,CACAv4E,SAWE,OAVAp2F,KAAK4uK,mBAAmBjwK,SAASu8B,IAC/BA,EAAMt8B,KAAOoB,KAAKpB,KAClBs8B,EAAM2vB,SAAW7qD,KAAK6qD,SACtB3vB,EAAM61D,QAAU/wF,KAAK+wF,QACrB71D,EAAMs0G,SAAWxvI,KAAKwvI;AACtB,MAAM+/B,EAAyBvvK,KAAKivK;AAChCM,GACFr0I,EAAMqlD,aAAa,mBAAoBgvF,EACzC,IAEK77J,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAkBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CvB,KAAK+wF,UAAY/wF,KAAK6qD,UAGnMn3C,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAS2/G,aAAcA,IAAMv+G,KAAKmvK,2BAA6Bz7J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,mBAAoB2/G,aAAcA,IAAMv+G,KAAKqvK,oCAAsC37J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,WACnb,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFA0uK,EAAY98F,MA9EY,6tHA+ExBmtC,GAAsBywD,aAAed,EAC9B3vD,EACR,CAxFA,GA+koBS,IAAG7hF,KAAKs8H,EAAYvqH;AACtB,IAAK,yBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAp/nBlC,WACC,GAAItpC,GAAuC,OAAOK;AAClDL,GAAwC,EACxClgH,OAAO2D,eAAe48G,GAA4B,aAAc,CAAEj6G;AAClE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBAYxBulG,EAAmB,MACvBjkJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK0vK,4BAA8Bh8J,EAAMo8E,YAAY9vF,KAAM,8BAA+B,GAC1FA,KAAK2vK,OAAS,GACd3vK,KAAK+E,MAAQ,GACb/E,KAAK6qD,YACL7qD,KAAK+wF,WACL/wF,KAAK4vK,YACL5vK,KAAKoxE,WACLpxE,KAAK6vK,mBACL7vK,KAAK8vK,oBACL9vK,KAAK+vK,sBAAwB,SAC7B/vK,KAAKgwK,kBACLhwK,KAAKiwK,YACP,CACAC,kBAAkB/3I,GACZx3B,MAAMiG,QAAQuxB,KAChBn4B,KAAKiwK,MAAQjwK,KAAK4vK,SAAW,IAAIz3I,GAAY,CAACA,EAAS,IAE3D,CACAg4I,uBACEnwK,KAAKowK,sBAAsBzxK,SAASquD,GAAOA,EAAGnC,SAAW7qD,KAAK6qD,UAChE,CAIIwlH,4BACF,OAAQrwK,KAAK4vK,UAAkC,IAAtB5vK,KAAKiwK,MAAM1wK,MACtC,CAEI6wK,4BACF,MAAME,EAA6C,IAAIxvK,IAAI,CACzDssF,EAAQhjB,oBAAoB,iBAC5BgjB,EAAQhjB,oBAAoB;AAE9B,MAAO,IAAIpqE,KAAKgtD,GAAGn9B,cAAc,2BAA2B8jD,UAAU/oE,QAAQoiD,GAAOsjH,EAA2BnpK,IAAI6lD,EAAGjoC,QAAQke,gBACjI,CACAstI,aAAarwK,GACPF,KAAK6qD,UAAY7qD,KAAKqwK,wBAG1BrwK,KAAKgwK,kBACL9vK,EAAEg9E,iBACJ,CACAszF,QAAQtwK,GACNA,EAAEg9E,iBACEl9E,KAAK6qD,UAAY7qD,KAAKqwK,wBAG1BrwK,KAAKgwK,kBACU,SAAX9vK,EAAEkS,MAAmBlS,EAAEuwK,cACzBzwK,KAAK0wK,SAASxwK,EAAEuwK,aAAaR,OAEjC,CACAU,oBACE3wK,KAAK4wK,iBAAiB1nI,OACxB,CACA2nI,oBAAoB3wK,EAAG+9F,GACP,UAAV/9F,EAAEqB,KAAoBvB,KAAK6qD,UAC7B7qD,KAAK8wK,WAAW7yE,EAEpB,CACA6yE,WAAW7yE,GACTj+F,KAAKiwK,MAAMt8J,OAAOsqF,EAAQ,GAC1Bj+F,KAAKiwK,MAAQ,IAAIjwK,KAAKiwK,OACtBjwK,KAAK+wK,gBACP,CACAC,2BACE,MAAM7hG,EAAa;AAOnB,OANInvE,KAAKgwK,gBACP7gG,EAAWnuE,KAAK,oBAEdhB,KAAKqwK,uBACPlhG,EAAWnuE,KAAK,qBAEXmuE,CACT,CACA8hG,cAAc/wK,GACZF,KAAK0wK,SAASxwK,EAAE0B,OAAOquK,OACvBjwK,KAAK4wK,iBAAiB7rK,MAAQ,EAChC,CACA2rK,SAAST,GACHA,IACGjwK,KAAK4vK,SAGR5vK,KAAKiwK,MAAQ,IAAIA,KAAUjwK,KAAKiwK,OAFhCjwK,KAAKiwK,MAAQ,CAACA,EAAM,KAKxBjwK,KAAK+wK,gBACP,CACAA,iBACE/wK,KAAK0vK,4BAA4BnzG,KAAK,CAAEx3D,MAAO/E,KAAKiwK,OACtD,CACAiB,0BACElxK,KAAKowK,sBAAsBzxK,SAASquD,IAClCA,EAAGmxB,oBAAoB,QAASn+E,KAAK2wK,kBAAkB5xK,KAAKiB,OACvDA,KAAK6qD,UACRmC,EAAGj4C,iBAAiB,QAAS/U,KAAK2wK,kBAAkB5xK,KAAKiB,OAE3DgtD,EAAGnC,SAAW7qD,KAAK6qD,QAAQ,GAE/B,CACAmrC,oBACMh2F,KAAK+E,MACP/E,KAAKiwK,MAAQ,IAAIjwK,KAAK+E,OAEtB/E,KAAKiwK,MAAQ,EAEjB,CACA7zC,mBACEp8H,KAAKkxK,yBACP,CACAC,0BACE,MAAM5D,EAAmBngF,EAAQhjB,oBAAoB,cAC/Cw4D,EAAyBx1C,EAAQhjB,oBAAoB,oBACrDqsB,EAAoBrJ,EAAQhjB,oBAAoB;AACtD,OAAOpqE,KAAKiwK,MAAM3uK,MAAK8vK,EAAMC,KAC3B,IAAI3rK;AACJ,MAAM4rK,EAAyC,QAA5B5rK,EAAK1F,KAAK8vK,wBAA0BpqK,SAAyBA,EAAGxE,MAAMswF,GAAQA,EAAI+/E,WAAaH,EAAKxyK;AACvH,IAEI4yK,EAFAC,EAAcL,EAAKh/J,KAAK3Q,WAAW,UAAY,UAAY,OAC3DiwK,EAAe;AAEnB,OAAQ1xK,KAAK6vK,aACX,IAAK,OACH2B,EAzIkB,SAACG,GAAyB,IAAlBvkK,EAAQ9N,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG;AAC7C,IAAK+e,OAAOszJ,GACV,MAAO;AACT,MACMC,EAAKxkK,EAAW,EAAI,EAAIA,EAExBnM,EAAI+L,KAAKqa,MAAMra,KAAK/O,IAAI0zK,GAAS3kK,KAAK/O,IAHlC;AAIV,MAAQ,GAAEogB,OAAOmmF,YAAYmtE,EAAQ3kK,KAAKu/B,IAJhC,KAIuCtrC,IAAIoM,QAAQukK,OAF/C,CAAC,QAAS,KAAM,KAAM,KAAM,MAEiC3wK,IAC7E,CAR4B,CAyIkBmwK,EAAKpxK,KAAK6vK;AAC9C;AACF,IAAK,OACH2B,EAAgBJ,EAAKpxK,KAAK6vK,aAG9B,OAAQyB,eAAsDA,EAAUn+J,QACtE,IAAK,QACHs+J,EAAc,UACdC,EAAe,QACfF,EAAgBF,eAAsDA,EAAUxgK;AAChF;AACF,IAAK,UACH2gK,EAAc,UACdC,EAAe;AACf;AACF,IAAK,UACHD,EAAc,UAIlB,OADAA,GAAeH,eAAsDA,EAAUO,kBAAoBJ,EAC5F/9J,EAAM0hB,EAAEm4I,EAAkB,CAAE1iH,SAAU7qD,KAAK6qD,SAAUy0D,eAAmBC,aAAiB,aAAc8xD,EAAU,cAAeC,eAAsDA,EAAUn+J,QAAUO,EAAM0hB,EAAE,QAAS,CAAEyhE,KAAM,SAAWu6E,EAAKxyK,MAAO4yK,GAAiB99J,EAAM0hB,EAAE,IAAK,CAAEyhE,KAAM,WAAa26E,GAAgB99J,EAAM0hB,EAAEwtG,EAAwB,CAAE/rC,KAAM,oBAAqB1zF,KAAM,SAAWuQ,EAAM0hB,EAAEqhE,EAAmB,CAAE73F,KAAM6yK,EAAaK,SAAU,MAAQp+J,EAAM0hB,EAAEwtG,EAAwB,CAAE/rC,KAAM,qBAAsB1zF,KAAM,OAAQkzI,SAAUr2I,KAAK6qD,UAAY,EAAI,EAAGosC,KAAM,SAAU,aAAcj3F,KAAK+vK,sBAAuB3xD,UAAYl+G,GAAMF,KAAK6wK,oBAAoB3wK,EAAGmxK,GAAWv6E,QAASA,IAAM92F,KAAK8wK,WAAWO,IAAa39J,EAAM0hB,EAAEqhE,EAAmB,CAAE73F,KAAM8yK,EAAcI,SAAU,MAAO,GAEvyB,CACA17E,SACE,MAAM2pE,EAAoB3yE,EAAQhjB,oBAAoB,eAChDw4D,EAAyBx1C,EAAQhjB,oBAAoB,oBACrDqsB,EAAoBrJ,EAAQhjB,oBAAoB,eAChD2nG,EAAqB3kF,EAAQhjB,oBAAoB,gBACjDosB,EAAsBpJ,EAAQhjB,oBAAoB,iBAClD4nG,EAAiBhyK,KAAKmxK,0BACtBc,EAAkBjyK,KAAK4vK,UAAsC,IAA1BoC,EAAezyK,OAClD2yK,EAAWlyK,KAAK4vK,UAAYoC,EAAezyK,OAAS;AAC1D,OAAOmU,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,qBAAsBu7E,YAAcjyK,GAAMF,KAAKuwK,aAAarwK,GAAIkyK,WAAalyK,GAAMF,KAAKuwK,aAAarwK,GAAImyK,YAAcnyK,GAAMF,KAAKwwK,QAAQtwK,GAAIoyK,OAASpyK,GAAMF,KAAKwwK,QAAQtwK,IAAMwT,EAAM0hB,EAAE28I,EAAoB,CAAExwK,IAAK,2CAA4CspD,SAAU7qD,KAAK6qD,SAAUkmC,QAAS/wF,KAAK+wF,SAAWr9E,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAQ,mBAAkB52F,KAAKgxK,+BAAiCiB,GAAmBD,EAAe,GAAIC,GAE9iBv+J,EAAM0hB,EAAE,QAAS,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAEwtG,EAAwB,CAAErhI,IAAK,2CAA4C4B,KAAM,SAAWuQ,EAAM0hB,EAAEqhE,EAAmB,CAAEl1F,IAAK,2CAA4C3C,KAAM,OAAQkzK,SAAU,MAAQp+J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4Cu1F,QAASA,IAAM92F,KAAK2wK,qBAAuB,iBAAkB,8BAA+Bj9J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,iBAAkB2/G,aAAcA,IAAMv+G,KAAKkxK,2BAA6Bx9J,EAAM0hB,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4Cy1F,KAAM,UAAWnsC,SAAU7qD,KAAK6qD,SAAUisC,QAASA,IAAM92F,KAAK2wK,qBAAuB,gBAAiBj9J,EAAM0hB,EAAE,QAAS,CACz5B7zB,IAAK,2CAEL+qJ,IAAMt/F,GAAOhtD,KAAK4wK,iBAAmB5jH,EACrCzuB,SAAWr+B,GAAMF,KAAKixK,cAAc/wK,GACpCkS,KAAM,OACNxT,KAAM,UACNgxK,SAAU5vK,KAAK4vK,SACfD,OAAQ3vK,KAAK2vK,OACbx0C,cACIznH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,oBAAsB8U,EAAM0hB,EAAE,QAAS,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,sBAAwBnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAW8U,EAAM0hB,EAAE,QAAS,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,YAAcq7E,GAAYx+J,EAAM0hB,EAAE2qI,EAAmB,CAAEx+J,IAAK,2CAA4C+9G,eAAmBC,cAAmByyD,GACrf,CACIhlH,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLhjG,MAAS,CAAC,qBACV8lD,SAAY,CAAC,wBAEjB;AAIF,OAFA4kH,EAAiB79F,MAzLW,igOA0L5BotC,GAA2BuzD,mBAAqB9C,EACzCzwD,EACR,CA3MA,GAq/nBS,IAAG9hF,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAhunBlC,WACC,GAAIppC,GAAmC,OAAOI;AAC9CJ,GAAoC,EACpCpgH,OAAO2D,eAAe68G,GAAwB,aAAc,CAAEl6G;AAC9D,MAAM2O,EAAQ25E,KACR60C,EAAahzD,IACbke,EAAUnjB,EAAcC,uBACxBojB,EAAO/C,KACPirC,EAAQrW,KACRnvC,EAAKN,IAGL8iG,EAAe,MACnBhnJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKyyK,mBAAqB/+J,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK0yK,mBAAqBh/J,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK2yK,4BAA8Bj/J,EAAMo8E,YAAY9vF,KAAM,8BAA+B,GAC1FA,KAAK4yK,2BAA6Bl/J,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKpB,YACLoB,KAAK6qD,gBACL7qD,KAAKw8H,WACLx8H,KAAKmD,KAAO,SACZnD,KAAKqgF,YACLrgF,KAAK6yK,2BACL7yK,KAAK08G,iBAAmB,eACxB18G,KAAK28G,gBAAkB,WACvB38G,KAAK8yK,2BACP,CAMAv1D,sBACE,OAAOp7B,QAAQC,QAAQpiF,KAAK+yK,WAC9B,CAMAx1D,iBAA8B,IAAfx4G,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AAElB,OADAU,KAAKw8H,cAAgBx8H,KAAKgzK,eAAetV,SAAS34J,GAC3Co9E,QAAQC,QAAQpiF,KAAKw8H,QAC9B,CAUAjf,4BAA4BukD,EAAW3pI,GACrC,OAAKn4B,KAAKizK,QAGVjzK,KAAKizK,OAAOluK,MAAQozB,EACpBn4B,KAAK4yK,2BAA2Br2G,KAAK,CACnC39D,KAAMoB,KAAKpB,KACXkjK,UAAWA,QAA6CA,EAAY,KACpE/8J,MAAOozB,IAETn4B,KAAKkzK,oCACE/wF,QAAQC,WATND,QAAQu6C,OAAO,IAAItrH,MAAM,kBAUpC,CAUAmsG,kCAAkCx4G,GAChC,IAAK/E,KAAKmzK,aACR,OAAOhxF,QAAQu6C,OAAO,IAAItrH,MAAM;AAElC,MAAMqjF,EAAgBz0F,KAAKmzK,aAAajjF,kBAClCwE,EAAc10F,KAAKmzK,aAAahjF,gBAChCyE,EAAY7vF,eAA8CA,EAAM6vF,UAChEC,EAAU9vF,eAA8CA,EAAM8vF;AAepE,OAdA70F,KAAKmzK,aAAajjF,kBAAoB0E,EACtC50F,KAAKmzK,aAAahjF,gBAAkB0E,EACpC70F,KAAK4yK,2BAA2Br2G,KAAK,CACnC39D,KAAMoB,KAAKpB,KACXkjK,UAAW,CACTltE,UAAWH,EACXI,QAASH,GAEX3vF,MAAO,CACL6vF,YACAC,aAGJ70F,KAAKkzK,oCACE/wF,QAAQC,SACjB,CAIAgxF,wBACEpzK,KAAKkzK,mCACP,CAIAG,0BAA0B9+J,GACxB,IAAI7O,EAAI4P,EAAIoT,EAAIC;AAChB,MAAM4qE,OAAEA,EAAM3xF,OAAEA,GAAW2S,EACrB++J,EAA8F,QAA7E5tK,EAAK9D,eAAgDA,EAAO40H,uBAAyB9wH,GAAgBA,EACtHo8J,EAAYwR,EAAgB//E,EAAOwkC,oBAA4D,QAArCziH,EAAKi+E,EAAOwkC,+BAAiCziH,SAAyBA,EAAG,GACnI6iB,EAAWm7I,EAAgB//E,EAAOulC,uBAAkE,QAAxCpwG,EAAK6qE,EAAOulC,kCAAoCpwG,SAAyBA,EAAG;AAC9I1oB,KAAKmkB,SAAWgU,EAChBn4B,KAAK4yK,2BAA2Br2G,KAAK,CACnC39D,KAAMoB,KAAKpB,KACXkjK,UAAWA,QAA6CA,EAAY,KACpE/8J,MAAOozB,QAA2CA,EAAW,QAElC,QAAtBxP,EAAK3oB,KAAKizK,kBAAoBtqJ,SAAyBA,EAAG6tG,cAAiBx2H,KAAK6yK,sBACrF7yK,KAAKqgF,YAET,CAIAkzF,sBAAsBrzK,GACpB,MAAM00F,UAAEA,EAASC,QAAEA,EAAOJ,cAAEA,EAAaC,YAAEA,GAAgBx0F,EAAEqzF;AAC7DvzF,KAAKwzK,6BAA6BtzK,GAClCF,KAAK4yK,2BAA2Br2G,KAAK,CACnC39D,KAAMoB,KAAKpB,KACXkjK,UAAW,CACTltE,UAAWH,EACXI,QAASH,GAEX3vF,MAAO,CACL6vF,YACAC,YAGN,CAIA4+E,qBAAqBvzK,GACnB,GAAIA,EAAE0B,SAAW5B,KAAKgtD,GACpB;AACF,MAAMswD,iBAAEA,GAAqBt9G,KAAK2yK,4BAA4Bp2G;AAC1D+gD,GAIAt9G,KAAK0yK,mBAAmBn2G,OAAO+gD,iBAHjCp9G,EAAEg9E,iBAOCl9E,KAAK6yK,sBACR7yK,KAAKqgF,YAET,CAIAqzF,qBAAqBxzK,GACnB,GAAIA,EAAE0B,SAAW5B,KAAKgtD,GACpB;AACF,MAAMswD,iBAAEA,GAAqBt9G,KAAK2yK,4BAA4Bp2G;AAC1D+gD,GAIAt9G,KAAKyyK,mBAAmBl2G,OAAO+gD,iBAHjCp9G,EAAEg9E,iBAOCl9E,KAAK6yK,sBACR7yK,KAAKqgF,YAET,CAIAwhD,0BACE7hI,KAAKmzK,aAAenzK,KAAKgtD,GAAGn9B,cAAcu9D,EAAQhjB,oBAAoB,uBACtEpqE,KAAKizK,OAASjzK,KAAKgtD,GAAGn9B,cAAcu9D,EAAQhjB,oBAAoB;AAChE,MAAMupG,EAAU,WAAU3jG,EAAGA;AACzBhwE,KAAKmzK,cACFnzK,KAAKmzK,aAAa34J,GAIrBxa,KAAKsgF,UAAYtgF,KAAKmzK,aAAa34J,IAHnCxa,KAAKmzK,aAAa34J,GAAKm5J,EACvB3zK,KAAKsgF,UAAYqzF,GAInB3zK,KAAK+yK,WAAa,OAClB/yK,KAAKkzK,qCACIlzK,KAAKizK,SACTjzK,KAAKizK,OAAO3zD,cACft/G,KAAKizK,OAAO3zD,gBAETt/G,KAAKizK,OAAOz4J,GAIfxa,KAAKsgF,UAAYtgF,KAAKizK,OAAOz4J,IAH7Bxa,KAAKizK,OAAOz4J,GAAKm5J,EACjB3zK,KAAKsgF,UAAYqzF,GAInB3zK,KAAK+yK,WAAa,OAClB/yK,KAAK4zK,wBACL5zK,KAAKkzK,oCAET,CAKAW,mBACE,MAAMC,EAAkBtiF,IACO,iBAAlBxxF,KAAKmkB,UAAyBqtE,EAAIzsF,QAAU/E,KAAKmkB,WAC1DnkB,KAAK8yK,qBAAuB9yK,KAAK+zK,6BAA6BviF,EAAIzsF;AAGzD/E,KAAKgtD,GAAG5nB,iBAAkB,GAAEgoD,EAAQhjB,oBAAoB,kBAAkBgjB,EAAQhjB,oBAAoB,iBAC9GzrE,SAAS6yF,IACK,IAAI/lE,sBAAuBqoJ,EAAetiF,KAClDp/D,QAAQo/D,EAAK,CAAEr6B,iBAAqBG,YAAgB,GAEjE,CACAs8G,wBACM5zK,KAAKizK,QACU,IAAIxnJ,kBAAkB2oC,IACjCA,EAAUruD,MAAMy0C,GAA0B,UAApBA,EAAE3S,iBAC1B7nC,KAAKkzK,mCACP,IAEO9gJ,QAAQpyB,KAAKizK,OAAQ,CAC5B9lH,cACA+uE,gBAAiB,CAAC,UAGxB,CAKA63C,6BAA6BhvK,GAC3B,MAAMivK,EAAe5mF,EAAQhjB,oBAAoB,cAC3C8wD,EAAUl7H,KAAKizK,OAAOpjJ,cAAe,GAAEmkJ,YAAuBjvK;AACpE,OAAOm2H,eAAkDA,EAAQz3F,WACnE,CAIAyvI,oCACE,MAAMe,EAAiBj0K,KAAKgtD,GAAGn9B,cAAc;AAE7C,GADwB1S,QAAQ82J,GAE9Bj0K,KAAK8yK,qBAAuBmB,EAAexwI;KAG7C,GAAIzjC,KAAKizK,OAAQ,CACf,IAAKjzK,KAAKizK,OAAOluK,MAEf,YADA/E,KAAK8yK;AAIP,GADA9yK,KAAKmkB,SAAWnkB,KAAKizK,OAAOluK,MACxB/E,KAAKizK,OAAOz8C,YAAa,CAC3B,MAAM09C,EAAa,KACgB,iBAAtBl0K,KAAKizK,OAAOluK,MACd/E,KAAKizK,OAAOluK,MAAM8K,MAAM,KAAKtQ,OAC3BoB,MAAMiG,QAAQ5G,KAAKizK,OAAOluK,OAC5B/E,KAAKizK,OAAOluK,MAAMxF,cAJV;AAQnB,GAAI20K,EAAa,EAEf,YADAl0K,KAAK8yK,qBAAwB,GAAEoB,IAGnC,CACAl0K,KAAK8yK,qBAAuB9yK,KAAK+zK,6BAA6B/zK,KAAKizK,OAAOluK,MAC5E,MAAW/E,KAAKmzK,eACdnzK,KAAK8yK,qBAAuB9yK,KAAKglG,WAAW,CAC1CpQ,UAAW50F,KAAKmzK,aAAajjF,kBAC7B2E,QAAS70F,KAAKmzK,aAAahjF,kBAGjC,CACA6U,WAAUmvE,GAA0B,IAAzBv/E,UAAEA,EAASC,QAAEA,GAASs/E;AAC/B,IAAIzuK,EAAI4P;AACR,MAAMvG,EAAQ6lF,EAAY,IAAIttF,KAAKstF,UAC7B5lF,EAAM6lF,EAAU,IAAIvtF,KAAKutF;AAC/B,IAAK9lF,IAAUC,EACb,MAAO;AAET,MAAM0/E,EAAS1uF,KAAKmzK,aAAazkF,OAC3B0lF,EAA2Bj3J,QAAQpO,GAASC,GAAOD,EAAMm/E,gBAAkBl/E,EAAIk/E,eAC/EmmF,EAA6M,QAA1L3uK,EAAKqJ,eAA8CA,EAAM8iF,mBAAmBnD,EAAQ0lF,GAA4BplK,EAAM,CAAE4/E,IAAK,UAAWS,MAAO,WAAc,CAAEilF,UAAW,qBAAwB5uK,EAAgBA,EAAK,GAC1O6uK,EAA4H,QAA3Gj/J,EAAKtG,eAA0CA,EAAI6iF,mBAAmBnD,EAAQ,CAAE4lF,UAAW,qBAAwBh/J,EAAgBA,EAAK;AAC/J,MAAQ,GAAE++J,IAAkBE,EAAiB,IAAQA,IAAkB,IACzE,CAMAf,6BAA6BtzK,GAC3B,IAAIwF,EAAI4P,EAAIoT,EAAIC;AAChB,MAAM6rE,cAAEA,GAAkBt0F,EAAEqzF;AAC5B,GAAIiB,IAAkBlH,EAAK9C,gBAAgBU,OACzClrF,KAAK8yK,qBAAuB9yK,KAAKglG,WAAW9kG,EAAEqzF;KACzC,GAAIiB,EAAe,CACxB,MAAMggF,EAAkU,QAAzS7rJ,EAAoP,QAA9OD,EAA4F,QAAtFpT,EAAkC,QAA5B5P,EAAK1F,KAAKmzK,wBAA0BztK,SAAyBA,EAAGupB,sBAAwB3Z,SAAyBA,EAAGua,cAAe,GAAEu9D,EAAQhjB,oBAAoB,yCAAyCoqB,kBAAgC9rE,SAAyBA,EAAG+a,uBAAyB9a,SAAyBA,EAAG+a;AAC5W1jC,KAAK8yK,qBAAuB0B,CAC9B,CACF,CACA32D,oBACE79G,KAAK6zK,mBACL7zK,KAAK6hI,yBACP,CACAzrC,SACE,IAAI1wF;AACJ,MAAMytK,aAAEA,EAAYtoH,SAAEA,EAAQgoH,oBAAEA,EAAmBxyF,SAAEA,EAAQwhD,wBAAEA,EAAuBoxC,OAAEA,EAAM3yF,UAAEA,EAASo8B,iBAAEA,EAAgBC,gBAAEA,EAAem2D,qBAAEA,EAAoB3vK,KAAEA,GAASnD,KACvKy0K,EAAkG,QAA7E/uK,EAAKutK,eAAgDA,EAAOz8C,uBAAyB9wH,GAAgBA,EAC1HgvK,EAAgBv3J,QAAQg2J,GACxB75H,EAAcu5H,QAAiEA,EAAsB6B,GAAiBD,EAAoB,oBAC1IxU,EAAwB7yE,EAAQhjB,oBAAoB,mBACpD81F,EAAuB9yE,EAAQhjB,oBAAoB,kBACnDuqG,EAA4BvnF,EAAQhjB,oBAAoB;AAC9D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,iBAAmBljF,EAAM0hB,EAAE6qI,EAAuB,CAAE1+J,IAAK,2CAA4Cq1F,MAAO,WAAY/rC,WAAUw1B,WAAU/mC,cAAaojE,mBAAkBC,mBAAmBjpG,EAAM0hB,EAAEu/I,EAA2B,CACpTpzK,IAAK,2CACL83E,OAAQgH,EACRuW,MAAO,gBACP/rC,WAEAyhG,IAAMt/F,GAAOhtD,KAAKgzK,eAAiBhmH,EACnC6pC,KAAM,UACN1zF,OACAm9E,aACC5sE,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,WAAa42H,EAAMtV,aAAa4yD,IAAyBp/J,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,YAAcnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,iBAAmBk0K,KAAyBp/J,EAAM0hB,EAAE8qI,EAAsB,CAAE3+J,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,CAAE,eAAgBulG,IAAkB79E,KAAM,UAAWr8E,GAAI8lE,GAAa5sE,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcsjB,EAAwB9iI,KAAKiB,QAAU0T,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,OAAQ2/G,aAAcsjB,EAAwB9iI,KAAKiB,UAC3vB,CACIgtD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAwyK,EAAa5gG,MAhVW,6lBAiVxBqtC,GAAuB21D,cAAgBpC,EAChCvzD,EACR,CA7VA,GAiunBS,IAAG/hF,KAAKs8H,EAAYvqH;AACtB,IAAK,2BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAj4mBlC,WACC,GAAI9nC,GAAyC,OAAOU;AACpDV,GAA0C,EAC1C1hH,OAAO2D,eAAey+G,GAA8B,aAAc,CAAE97G;AACpE,MAAM2O,EAAQ25E,KAGRwnF,EAAqB,MACzBrpJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmD,KAAO,SACZnD,KAAK6qD,YACL7qD,KAAKw8H,WACLx8H,KAAKg+J,YACLh+J,KAAKq5E,UACLr5E,KAAKsgF,iBACLtgF,KAAKqhF,qBACP,CACAshD,YAAYpuH,GACNvU,KAAK6qD,UACPt2C,EAAMgpE,0BAEV,CACAu3F,qBAAqB38I,GACfA,GAAYn4B,KAAKw8H,UACnBx8H,KAAKw8H,WAET,CAMAjf,iBAA8B,IAAfx4G,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AAClB,OAAIU,KAAK6qD,SACAs3B,QAAQC,aAEjBpiF,KAAKw8H,QAAUz3H,EACX/E,KAAKw8H,QACPx8H,KAAK8gK,SAASrlF,QAEdz7E,KAAK8gK,SAASzC,OAETl8E,QAAQC,QAAQpiF,KAAKw8H,SAC9B,CACApmC,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,wBAA0BljF,EAAM0hB,EAAE,SAAU,CAC/H7zB,IAAK,2CACL,gBAAiBvB,KAAK6qD,SACtBA,SAAU7qD,KAAK6qD,SAEfyhG,IAAMt/F,GAAOhtD,KAAK8gK,SAAW9zG,EAC7B,gBAAiBhtD,KAAKq5E,OAAO3vE,WAC7B,gBAAiB1J,KAAKsgF,UACtBluE,KAAM,UACLsB,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaE,KAAM,OAAQD,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,qDAAuD5mC,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,SAAWljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,8CAAgDmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,cAC/jB,CACWmpG,sBACT,MAAO,CACLl9C,SAAY,CAAC,wBAEjB;AAIF,OAFAgqH,EAAmBjjG,MA1DW,khKA2D9BivC,GAA6Bk0D,qBAAuBF,EAC7Ch0D,EACR,CAlEA,GAk4mBS,IAAG3jF,KAAKs8H,EAAYvqH;AACtB,IAAK,kCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7zmBlC,WACC,GAAI7nC,GAA+C,OAAOU;AAC1DV,GAAgD,EAChD3hH,OAAO2D,eAAe0+G,GAAoC,aAAc,CAAE/7G;AAC1E,MAAM2O,EAAQ25E,KACR60C,EAAahzD,IACbke,EAAUnjB,EAAcC,uBACxBsrD,EAAQrW,KAGR61D,EAA2B,MAC/BxpJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmD,KAAO,SACZnD,KAAKi1K,gCACLj1K,KAAKk1K,yBACLl1K,KAAKm1K,uBACP,CAIA1B,qBAAqBvzK,GACfA,EAAE0B,SAAW5B,KAAKgtD,KAEtBhtD,KAAKo1K,iBACLp1K,KAAKm1K,oBACP,CAIAzB,qBAAqBxzK,GACfA,EAAE0B,SAAW5B,KAAKgtD,KAEtBhtD,KAAKm1K,oBACP,CAIAE,uBACEr1K,KAAKo1K,gBACP,CAIAA,iBACEp1K,KAAKk1K,oBACP,CAIAI,kCACEt1K,KAAKu1K,UAAYv1K,KAAKgtD,GAAGn9B,cAAc,6BAA6B2lJ,gBACpEx1K,KAAKy1K,wBACLz1K,KAAK01K,mCACP,CAIAD,wBACE,IAAI/vK,EAAI4P,EAAIoT,EAAIC;AAChB,KAAgC,QAAzBjjB,EAAK1F,KAAKu1K,qBAAuB7vK,SAAyBA,EAAGnG,QAIlE,YAH6B,QAA5B+V,EAAKtV,KAAK21K,wBAA0BrgK,GAAyBA,EAAG3W,SAASi3K,IACxEA,EAAY7hK,QAAQ;AAIxB,MAAM8hK,GAAoD,QAA5BntJ,EAAK1oB,KAAK21K,wBAA0BjtJ,EAAgBA,EAAK,IAAI2wC,SAAQ9nD,EAAQwpJ,KACzGxpJ,EAAOwpJ,EAAMh2J,OAASg2J,EACfxpJ,IACN,CAAC,GACEukK,EAA8B,IAAIh1K,IAClCi1K,EAAa,CAAC;AACpB/1K,KAAKu1K,UAAU52K,SAASq3K,IACtB,IAAI/6C;AACJ,MAAMr8H,EAAOo3K,EAASp3K;AACtBk3K,EAAY1uK,IAAIxI;AAChB,MAAMq3K,EAAeJ,EAAoBj3K;AACzC,GAAIq3K,EACFF,EAAWn3K,GAAQq3K;IACd,CACL,MAAMC,EAAWv5J,SAASuF,cAAckrE,EAAQhjB,oBAAoB;AACpE8rG,EAASpuE,QAAU,QACnBouE,EAAS52D,eACT42D,EAAS32D,aACT22D,EAASnxK,MAAQnG,EACjBs3K,EAAS/yK,KAAOnD,KAAKmD,KACrB+yK,EAASnhK,iBAAiB,yBAClB/U,KAAKm2K,sBAAsBD,EAAS,IAE5CH,EAAWn3K,GAAQs3K,CACrB,CACA,MAAMhxI,EAAqC,QAA5B+1F,EAAM86C,EAAWn3K,cAAmBq8H,SAA0BA,EAAIprG,cAAc;AAC/FqV,SAA8CA,EAAMnxB;AACpD,MAAMqiK,EAAgBJ,EAASnmJ,cAAc;AACzCumJ,GACFL,EAAWn3K,GAAM2jB,YAAY6zJ,EAAcpxD,eAEzCgxD,EAASnrH,WACXkrH,EAAWn3K,GAAMisD,aAEnBkrH,EAAWn3K,GAAM2hF,aAAa,OAAQ,aAAa,IAExB,QAA5B53D,EAAK3oB,KAAK21K,wBAA0BhtJ,GAAyBA,EAAGhqB,SAASi3K,IACnEE,EAAY3uK,IAAIyuK,EAAY7wK,QAC/B6wK,EAAY7hK,QACd,IAEF/T,KAAK21K,aAAe,IAAI31K,KAAKu1K,WAAWj0K,KAAI+0K,IAAA,IAACz3K,KAAEA,GAAMy3K;AAAA,OAAKN,EAAWn3K,EAAK,IAC1EoB,KAAK21K,aAAah3K,SAASi3K,IACzBA,EAAYr1F,aAAa,OAAQ,eACjCvgF,KAAKgtD,GAAGzqC,YAAYqzJ,EAAY,GAEpC,CAKAr4D,4BAA4Bw9C,GAC1B,IAAIr1J,EAAI4P,EAAIoT;AACZ,MAAM3jB,EAAQg2J,EAAMh2J;AACpB/E,KAAKk1K;AACL,MAAMc,EAAWh2K,KAAKu1K,UAAUr0K,MAAMo1K,GAAcA,EAAU13K,OAASmG,IAEjEwxK,EADUP,EAASnmJ,cAAc,SACTm1F;AAI9B,OAHAuxD,EAAch2F,aAAa,OAAQ,gBACuB,QAAzD76E,EAAK1F,KAAKgtD,GAAGn9B,cAAc,oCAAsCnqB,GAAyBA,EAAGqO,SAC9F/T,KAAKgtD,GAAGzqC,YAAYg0J,SACNP,EAASQ,iBACrB,IAAK,OAAQ,CACX,MACMC,EADeT,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB,uBAChC46C;AACxCyxD,EAAmBl2F,aAAa,OAAQ,kBACxCk2F,EAAmB1hK,iBAAiB,0BAA2B7U,IAC7DF,KAAK02K,gCAAgCx2K,EAAG81K,EAAS,IAES,QAA3D1gK,EAAKtV,KAAKgtD,GAAGn9B,cAAc,sCAAwCva,GAAyBA,EAAGvB,SAChG/T,KAAKgtD,GAAGzqC,YAAYk0J;AACpB,KACF,CACA,IAAK,OAAQ,CACX,MAAMxD,EAAS+C,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB,gBAC5DusG,EAAe1D,EAAOjuD;AAC5B2xD,EAAap2F,aAAa,OAAQ,kBAClCo2F,EAAa5hK,iBAAiB,iCAAkC7U,IAC9DF,KAAK42K,0BAA0B12K,EAAG81K,EAAU/C,EAAO,IAErD0D,EAAap2F,aAAa,cAAe,IACzC0yF,EAAOz8C,aAAe+/C,EAAch2F,aAAa,cAAe,IACJ,QAA3D73D,EAAK1oB,KAAKgtD,GAAGn9B,cAAc,sCAAwCnH,GAAyBA,EAAG3U,SAChG/T,KAAKgtD,GAAGzqC,YAAYo0J;AACpB,KACF,EAEJ,CACAp5D,sCAAsCr9G,EAAG81K,GACvC,MAAMphF,UAAEA,EAASC,QAAEA,GAAY30F,EAAEqzF;MAC3ByiF,EAASa,4BAA4B,CAAEjiF,YAAWC,YACxD70F,KAAK01K,mCACP,CACAn4D,gCAAgCr9G,EAAG81K,EAAU/C,GAC3C,MAAM1/E,OAAEA,GAAWrzF,GACb44H,uBAAEA,EAAsBf,oBAAEA,GAAwBxkC,EAClD+/E,EAAgBL,EAAOz8C,YACvBsrC,EAAYwR,EAAgBv7C,EAAsBA,EAAoB,GACtE5/F,EAAWm7I,EAAgBx6C,EAAyBA,EAAuB;MAC3Ek9C,EAASc,sBAAsBhV,EAAW3pI,GAC3C86I,EAAOz8C,aACVx2H,KAAKo1K,iBAEPp1K,KAAK01K,mCACP,CAKAA,oCACE11K,KAAKi1K,yBAA2B,IAAIj1K,KAAKu1K,WAAa,IAAIl8G,SAAQx1C,EAAOmyJ,KACvE,MAAM7wJ,EAAO6wJ,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB;AAChE,IAAKorD,EAAMtV,aAAa/6F,eAA4CA,EAAKpgB,OACvE,OAAO8e,EAAQ;AAEjB,MAAMkzJ,EAAaf,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB;AACtE,OAAI2sG,eAAwDA,EAAW7mF,mBAC9DrsE,EAAQ,EAEVA,CAAK,GACX,EACL,CACAu4G,mBACEp8H,KAAKs1K,iCACP,CACAl/E,SACE,MAAM6+E,yBAAEA,EAAwBK,gCAAEA,EAA+BJ,kBAAEA,EAAiBC,iBAAEA,EAAgBhyK,KAAEA,GAASnD,KAC3Gw2F,EAAsBpJ,EAAQhjB,oBAAoB,iBAClD61F,EAAwB7yE,EAAQhjB,oBAAoB,mBACpDuqG,EAA4BvnF,EAAQhjB,oBAAoB,wBACxD4sG,EAAsB5pF,EAAQhjB,oBAAoB,iBAClD21F,EAAoB3yE,EAAQhjB,oBAAoB,eAChD81F,EAAuB9yE,EAAQhjB,oBAAoB,kBACnDw4D,EAAyBx1C,EAAQhjB,oBAAoB;AAC3D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,8BAA+B,CAAE,eAAgB+lG,KAAwBxhK,EAAM0hB,EAAE6qI,EAAuB,CAAE1+J,IAAK,2CAA4C+3C,YAAa,aAAcojE,iBAAkB,cAAgBhpG,EAAM0hB,EAAEu/I,EAA2B,CAAEpzK,IAAK,2CAA4C83E,OAAQ87F,EAAkBnX,YAAgB76J,OAAM0zF,KAAM,WAAao+E,GAA4BvhK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,YAAco+E,IAA4BvhK,EAAM0hB,EAAE8qI,EAAsB,CAAE3+J,IAAK,2CAA4Cq1F,MAAO,UAAWC,KAAM,WAAcq+E,EAAwIxhK,EAAM0hB,EAAE1hB,EAAMqvH,SAAU,KAAMrvH,EAAM0hB,EAAE4hJ,EAAqB,CAAEpgF,MAAO,oBAAsBljF,EAAM0hB,EAAEohE,EAAqB,CAAEQ,KAAM,YAAa7zF,KAAM,QAAS0zF,KAAM,cAAgBnjF,EAAM0hB,EAAEwtG,EAAwB,CAAE/rC,KAAM,QAAUnjF,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,yMAA2M5mC,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,kBAAoB8U,EAAM0hB,EAAE,MAAO,CAAEwhE,MAAO,4BAA8BljF,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,qBAA10B8U,EAAM0hB,EAAE2qI,EAAmB,CAAEnpE,MAAO,cAAe0oB,gBAAqB5rG,EAAM0hB,EAAE,OAAQ,CAAEx2B,KAAM,mBAAmwB8U,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,oBAAsBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,mBAAoB2/G,aAAc+2D,EAAgCv2K,KAAKiB,SAC10D,CACIgtD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAg1K,EAAyBpjG,MAtMW,67EAuMpCkvC,GAAmCm2D,4BAA8BjC,EAC1Dl0D,EACR,CAjNA,GA8zmBS,IAAG5jF,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA1mmBlC,WACC,GAAI5nC,GAAwC,OAAOU;AACnDV,GAAyC,EACzC5hH,OAAO2D,eAAe2+G,GAA6B,aAAc,CAAEh8G;AACnE,MAAM2O,EAAQ25E,KACRG,EAAUliB,IACV8hB,EAAUnjB,EAAcC,uBACxBo5C,EAAMrhC,IACNj+E,EAAWigF;AACjBzB,KACAuB;AACA,MAOMmzF,EAAoB,MACxB1rJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKm3K,mBACLn3K,KAAKo3K,2BACLp3K,KAAKq3K,0BACLr3K,KAAKsgK,WAAa,CAAC,EACnBtgK,KAAKugK,sBAAwBv8J,EAASA,SAAShE,KAAKwgK,aAAazhK,KAAKiB,MARzC,IAS7BA,KAAKs3K,kBAAoB,EACzBt3K,KAAKu3K,iBAAmB,CACtBxoE,SAAU,GACVwqB,QAAS,GAEb,CACAi+C,2BACEx3K,KAAKwgK,cACP,CAIAiX,8BAA6BC,GAAc,IAAbnkF,OAAEA,GAAQmkF;AACtC13K,KAAKm3K,gBAAkB5jF,CACzB,CAIAgqB,uDAAuDr9G,GACrDA,EAAEonG,wBACItnG,KAAKwgK,qBACLl9C,EAAIphC,6BACVliF,KAAKq3K,uBAAsC,mBAAbn3K,EAAEqzF,MAClC,CAQAokF,4BAA4Bz3K,GACrBF,KAAKq3K,yBAGVr3K,KAAKq3K,0BACLn3K,EAAEg9E,iBACFz5E,sBACE,IAAIiC,EAAI4P,EAAIoT,EAAIC,EAAIC,EAAI8yB;MAClB4nE,EAAIphC,mCACoM,QAAtMx5D,EAA+F,QAAzFpT,EAAqC,QAA/B5P,EAAK1F,KAAK43K,2BAA6BlyK,SAAyBA,EAAGupB,sBAAwB3Z,SAAyBA,EAAGua,cAAcu9D,EAAQhjB,oBAAoB,+BAAiC1hD,SAAyBA,EAAGmvJ,0BAC3C,QAAtMn8H,EAA+F,QAAzF9yB,EAAqC,QAA/BD,EAAK3oB,KAAK43K,2BAA6BjvJ,SAAyBA,EAAGsG,sBAAwBrG,SAAyBA,EAAGiH,cAAcu9D,EAAQhjB,oBAAoB,+BAAiC1uB,GAAyBA,EAAGwhE,cAAc,GAC3L,KAA7D1vB,EAAQ3hB,oDACb,CAKAisG,6BAA6BvC,GAC3B,KAAMA,eAAsDA,EAAUh2K,QACpE,OAAO;AAET,MAAMw4K,EAAgBxC,EAAUl8G,SAAQ9nD,EAAQykK,KAC9C,MAAM/C,EAAS+C,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB;AAClE,GAAI6oG,eAAgDA,EAAOluK,MACzD,OAAOwM,EAAS;AAElB,MAAM4hK,EAAe6C,EAASnmJ,cAAcu9D,EAAQhjB,oBAAoB;AACxE,OAAI+oG,eAA4DA,EAAajjF,mBACpE3+E,EAAS,EAEXA,CAAM,GACZ;AACH,GAAsB,IAAlBwmK,EACF,OA3EsB;AA6ExB,MAAMC,EAAWr7J,SAASuF,cAAc,UAClCjiB,EAAU+3K,EAASrsK,WAAW;AACV,UAAtB4pK,EAAU,GAAGpyK,KACflD,EAAQg4K,KAAQ,GAAEzqF,EAAQ1gB,iCAAiC0gB,EAAQ3gB,qCAEnE5sE,EAAQg4K,KAAQ,GAAEzqF,EAAQxgB,iCAAiCwgB,EAAQzgB;AAErE,MAAMmrG,EAAoBj4K,EAAQk4K,YAAa,GAAEJ,KAAiBxtI;AAElE,OADAytI,EAASjkK,SACFqkK,GAAmDF,CAC5D,CACAxX,iBAAiB1zG,GACf,OAAO3uC,OAAOmmF,WAAW9hG,OAAOgvE,iBAAiB1kB,GAAIziB,MACvD,CAKAgzE,8BACE,IAAI73G,EAAI4P;AACR,IAAuC,QAAjC5P,EAAK1F,KAAKs3K,6BAA+B5xK,EAAgBA,EAnGvC,IAmGoE,EAC1F,OAAO;AAGT,IADuC,OAAXhD,iBAAmBA,cAA6BA,OAAO2yC,aAAem4C,EAAQxhB,mCAC/EhsE,KAAKm3K,gBAC9B,OAAO;AACF,GAAIn3K,KAAKm3K,gBACd,OAAO;AAET,MAAMkB,EAAmBr4K,KAAK0gK,iBAAiB1gK,KAAKgtD,IAC9CsrH,EAAct4K,KAAKu4K,sBAAwBv4K,KAAK0gK,iBAAiB1gK,KAAKu4K,uBA5GvD,EA4GmG,EAClH3X,EAASjkJ,SAASuF,cAAc;AACtC0+I,EAAOhvF,MAAMrnC,MAAQ,OACrBq2H,EAAOhvF,MAAMnnC,SAAW,WACxBm2H,EAAOhvF,MAAMoD,WAAa,SAC1Bh1E,KAAKgtD,GAAG/9B,WAAW1M,YAAYq+I;AAC/B,IAAI3iE,EAAS,EACTu6E,EAAe;AACnB,IAAK,MAAMxC,KAAYh2K,KAAKy4K,WAAY,CACtC,GAAIx6E,KAA8C,QAAjC3oF,EAAKtV,KAAKs3K,6BAA+BhiK,EAAgBA,EAtHpD,GAuHpB;AAEF,MAAMyrJ,EAA0B9iE,EAAS,IAAMj+F,KAAKy4K,WAAWl5K,OAAS,EAxHrD,EAwH4ES,KAAK83K,6BAA6B93K,KAAKy4K,WAAW/2K,MAAMu8F,IACjJy6E,EAAiB1C,EAAShxD;AAChC0zD,EAAe9mG,MAAM9yE,QAAU,QAC/B8hK,EAAOr+I,YAAYm2J,SACbp1D,EAAIphC;AACV,MAAMy2F,EAAgB34K,KAAK0gK,iBAAiBE;AAI5C,GAHAA,EAAOp4E,YAAYkwF,GACnBF,IAAiBv6E,EAAS,EA/HP,EA+H8B,GAAK06E,EAC/BL,EAAcE,EAAezX,GAC9BsX,EACpB,QAEAp6E,CACJ,CAGA,OAFAj+F,KAAKgtD,GAAG/9B,WAAWu5D,YAAYo4E,GAC/BA,EAAO7sJ,SACAkqF,CACT,CAOA26E,gCACE54K,KAAKu3K,iBAAmB,CACtBh+C,QAASv5H,KAAKy4K,WAAW/2K,MAAM,EAAG1B,KAAK64K,oBACvC9pE,SAAU/uG,KAAKy4K,WAAW/2K,MAAM1B,KAAK64K,qBAEvC74K,KAAKu3K,iBAAiBh+C,QAAQ56H,SAASq3K,IACjCA,EAASpkG,MAAM9yE,SACjBk3K,EAASpkG,MAAM60C,eAAe,WAEM,YAAlCuvD,EAASvzI,aAAa,SACxBuzI,EAASz1F,aAAa,OAAQ,UAChC,IAEFvgF,KAAKu3K,iBAAiBxoE,SAASpwG,SAASq3K,IACP,SAA3BA,EAASpkG,MAAM9yE,UACjBk3K,EAASpkG,MAAM9yE,QAAU,QAEW,qBAAlCk3K,EAASvzI,aAAa,SACxBuzI,EAASz1F,aAAa,OAAQ,mBAChC,GAEJ,CAIAg9B,qBACE,IAAKv9G,KAAK0gK,iBAAiB1gK,KAAKgtD,IAC9B;AAEF,MAAMixC,QAAej+F,KAAK84K;AAE1B,GAD8B76E,IAAWj+F,KAAK64K,qBAE5C74K,KAAK64K,mBAAqB56E,QACpBqlB,EAAIphC,6BACVliF,KAAK44K,gCACD54K,KAAK43K,iBAAiB,CACxB,MAAMmB,EAAa/4K,KAAK43K,gBAAgB/nJ,cAAcu9D,EAAQhjB,oBAAoB,qBAC9E2uG,eAAwDA,EAAW14F,YACrE04F,SAAwDA,EAAWh8D,gBAEvE,CAEF/8G,KAAKg5K,8BACP,CAIAz7D,qCACE,IAAI73G,EAAI4P;AACR,IAAKtV,KAAKu4K,uBAAyBv4K,KAAKu4K,sBAAsBv1I,aAAa,WACzE;AAEF,MAAMi2I,GAAiC,OAAXv2K,iBAAmBA,cAA6BA,OAAO2yC,aAAem4C,EAAQxhB,iCACpGktG,EAAa/7J,QAAmC,QAA1BzX,EAAK1F,KAAKy4K,sBAAwB/yK,SAAyBA,EAAGnG,QACpF45K,EAAwBn5K,KAAKy4K,WAAWl5K,QAA4C,QAAjC+V,EAAKtV,KAAKs3K,6BAA+BhiK,EAAgBA,EAvM1F,GAwMlB8jK,EAAwBF,IAAeD,GAAsBE;AAC/DC,IAA0Bp5K,KAAKu4K,sBAAsBv1I,aAAa,aAChEhjC,KAAKu4K,sBAAsB91I,aAAa,kBACpCziC,KAAKu4K,sBAAsB7a,aAE/B0b,EACFp5K,KAAKu4K,sBAAsBh4F,aAAa,UAAW,IAEnDvgF,KAAKu4K,sBAAsBtuE,gBAAgB,WAGjD,CAIAovE,4BAA4Bn5K,GAC1B,IAAIwF;AACU,QAAVxF,EAAEqB,MAAkBrB,EAAE+3E,WAAwC,QAA1BvyE,EAAK1F,KAAKy4K,sBAAwB/yK,SAAyBA,EAAGnG,UACpGW,EAAEg9E,iBACFl9E,KAAKu4K,sBAAsBla,OAC3Br+J,KAAKo3K,2BAET,CAIAkC,yBACE,IAAI5zK,EAAI4P;AACR,MAAMyjK,EAAuG,QAAzFzjK,EAAqC,QAA/B5P,EAAK1F,KAAK43K,2BAA6BlyK,SAAyBA,EAAGupB,sBAAwB3Z,SAAyBA,EAAGua,cAAcu9D,EAAQhjB,oBAAoB,qBACvL2uG,eAAwDA,EAAW/1I,aAAa,cAClF+1I,EAAWh8D,eAEf,CACAw8D,6BACE,IAAI7zK,EAAI4P,EAAIoT,EAAIC,EAAIC,EAAI8yB,EAAIE,EAAIG;AACyE,QAAxGzmC,EAA2C,QAArC5P,EAAK1F,KAAKu4K,iCAAmC7yK,SAAyBA,EAAGy4E,+BAAiC7oE,GAAyBA,EAAGrT,KAAKyD,EAAI,UAAW1F,KAAKq5K,6BAC7D,QAAxG1wJ,EAA2C,QAArCD,EAAK1oB,KAAKu4K,iCAAmC7vJ,SAAyBA,EAAGy1D,+BAAiCx1D,GAAyBA,EAAG1mB,KAAKymB,EAAI,QAAS1oB,KAAKs5K,wBACpKt5K,KAAKu4K,sBAAwBv4K,KAAKgtD,GAAGn9B,cAAc,mBACmD,QAArG6rB,EAA2C,QAArC9yB,EAAK5oB,KAAKu4K,iCAAmC3vJ,SAAyBA,EAAG7T,4BAA8B2mC,GAAyBA,EAAGz5C,KAAK2mB,EAAI,UAAW5oB,KAAKq5K,4BAA4Bt6K,KAAKiB,OAC9F,QAArG+7C,EAA2C,QAArCH,EAAK57C,KAAKu4K,iCAAmC38H,SAAyBA,EAAG7mC,4BAA8BgnC,GAAyBA,EAAG95C,KAAK25C,EAAI,QAAS57C,KAAKs5K,uBAAuBv6K,KAAKiB,OAC7LA,KAAKg5K,8BACP,CACAQ,yBACEx5K,KAAKy4K,WAAa,IAAIz4K,KAAKgtD,GAAG2mB,UAAU/oE,QAAQoiD,GAAOogC,EAAQ5iB,qBAAqBxd,EAAI,kBAC1F,CACAs0G,eAAet0G,GACRhtD,KAAKsgK,WAAWtwI,UACnBhwB,KAAKsgK,WAAWtwI,QAAU,IAAIumB,eAAev2C,KAAKugK,uBAClDvgK,KAAKsgK,WAAWtwI,QAAQoC,QAAQ46B,GAEpC,CACAysH,6BACEz5K,KAAKw5K,yBACLx5K,KAAKwgK,cACP,CACA3iD,oBACO79G,KAAKsgK,WAAWr9I,OACnBjjB,KAAKsgK,WAAWr9I,KAAO,IAAIszB,eAAev2C,KAAKugK,uBAC/CvgK,KAAKsgK,WAAWr9I,KAAKmP,QAAQpyB,KAAKgtD,IAEtC,CACAgpC,oBACEh2F,KAAKw5K,yBACLx5K,KAAKu5K,6BACLv5K,KAAKwgK,cACP,CACAtqE,sBACE,IAAIxwF,EAAI4P,EAAIoT;AACR1oB,KAAKo3K,0BAC8H,QAApI1uJ,EAAkF,QAA5EpT,EAAgC,QAA1B5P,EAAK1F,KAAKy4K,sBAAwB/yK,SAAyBA,EAAG,cAAgB4P,SAAyBA,EAAGooJ,oBAAsBh1I,GAAyBA,EAAGzmB,KAAKqT,GAC9KtV,KAAKo3K,2BAET,CACAt5D,uBACEr/G,OAAOkzB,QAAQ3xB,KAAKsgK,YAAY3hK,SAAQ+6K,IAAsB,IAApBn4K,EAAKyJ,GAAS0uK;AAClD1uK,IACFA,EAASunB,aACTvyB,KAAKsgK,WAAW/+J,UAClB,GAEJ,CACA60F,SACE,IAAI1wF,EAAI4P;AACR,MAAMqkK,EAAsG,QAA5ErkK,EAAgC,QAA1B5P,EAAK1F,KAAKy4K,sBAAwB/yK,SAAyBA,EAAG,cAAgB4P,SAAyBA,EAAGnS,KAC1Iy2K,EAAkCxsF,EAAQhjB,oBAAoB;AACpE,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAyBljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,UAAW01D,IAAMt/F,GAEtMhtD,KAAKshK,eAAet0G,IACjBt5C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,SAAU2/G,aAAcA,IAAMv+G,KAAKu5K,+BAAiC7lK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAW2/G,aAAcA,IAAMv+G,KAAKy5K,+BAAiCz5K,KAAKu3K,iBAAiBxoE,SAASxvG,OAAS,GAAKmU,EAAM0hB,EAAEwkJ,EAAiC,CACpXr4K,IAAK,2CACLq1F,MAAO,gBACPzzF,KAAMw2K,EAENrtB,IAAMt/F,GAAOhtD,KAAK43K,gBAAkB5qH,GACnCt5C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,mBAAoBi4F,KAAM,uBACxG,CACI7pC,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLuvE,kBAAqB,CAAC,4BAE1B;AAIF,OAFAJ,EAAkBtlG,MAnTW,kuCAoT7BmvC,GAA4B84D,oBAAsB3C,EAC3Cn2D,EACR,CAjUA,GA2mmBS,IAAG7jF,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAvylBlC,WACC,GAAI3nC,GAAmC,OAAOU;AAC9CV,GAAoC,EACpC7hH,OAAO2D,eAAe4+G,GAAwB,aAAc,CAAEj8G;AAC9D,MAAM2O,EAAQ25E,KAGRysF,EAAe,MACnBtuJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,EAC/B,CACAyG,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,iBAAmBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACjI;AAIF,OAFAu4K,EAAaloG,MAVW,+oBAWxBovC,GAAuB+4D,cAAgBD,EAChC94D,EACR,CAlBA,GAwylBS,IAAG9jF,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAnxlBlC,WACC,GAAI1nC,GAAmC,OAAOU;AAC9CV,GAAoC,EACpC9hH,OAAO2D,eAAe6+G,GAAwB,aAAc,CAAEl8G;AAC9D,MAAM2O,EAAQ25E,KACRG,EAAUliB,IACV8hB,EAAUnjB,EAAcC,uBAGxB8vG,EAAe,MACnBxuJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKi6K,qBAAuBvmK,EAAMo8E,YAAY9vF,KAAM,uBAAwB,GAC5EA,KAAK29J,eAAiB,KACtB39J,KAAKk6K,qBAAuB,QAC5Bl6K,KAAKm6K,sBACLn6K,KAAKoxE,WACLpxE,KAAKo6K,oBACLp6K,KAAKq6K,yBACLr6K,KAAKuuK,cACP,CACA+L,gBACE,GAAIt6K,KAAKoxE,QAAS,CAChB,MAAMA,EAAUpxE,KAAKgtD,GAAG/9B,WAAWY,cAAc,kBAC3C0qJ,EAAYl8J,OAAOlD,SAASu2D,iBAAiBN,GAAS5mC,OAAQ;AACpExqC,KAAKgtD,GAAG4kB,MAAMpnC,gBAAS+vI,EAAwB,GAAEA,MAAgB,EACnE,MACEv6K,KAAKgtD,GAAG4kB,MAAMpnC,OAAS,EAE3B,CACAgwI,0BACE,MAAMC,EAAcz6K,KAAKgtD,GAAGn9B,cAAc;AACtC4qJ,IACFz6K,KAAK29J,kBACL8c,EAAY1lK,iBAAiB,QAAS/U,KAAK06K,sBAAsB37K,KAAKiB,OAE1E,CACA26K,uBACE,MAAMC,EAAU56K,KAAKgtD,GAAGn9B,cAAc;AACtC7vB,KAAKuuK,cAAcqM,CACrB,CACAC,uBAAuBtmK,GACrBvU,KAAKi6K,qBAAqB19G,KAAK,CAC7BhoD,QACA+gB,OAAQ,SAEZ,CACAolJ,sBAAsBnmK,GACpBvU,KAAKi6K,qBAAqB19G,KAAK,CAC7BhoD,QACA+gB,OAAQ,UAEZ,CACA4gE,sBACEl2F,KAAK86K,qBACL96K,KAAK+6K,sCACY,IAAItvJ,iBAAiBzrB,KAAKg7K,eAAej8K,KAAKiB,OACtDoyB,QAAQpyB,KAAKgtD,GAAI,CAAEqK,aAAiBF,iBAAqBG,YACpE,CACA4lE,qBACEl9H,KAAKs6K,eACP,CACAU,eAAeC,GACb,IAAIC;AACJD,EAAat8K,SAASm2D,IACE,cAAlBA,EAAS1iD,MAAwB0iD,EAASO,WAAW91D,OAAS,GAChEu1D,EAASO,WAAW12D,SAAS+vB,IACT,YAAdA,EAAKmoE,OACPqkF,KACF,GAEJ,IAEEA,GACFl7K,KAAK+6K,qCAET,CACAD,qBACE,MAAMK,EAAiBn7K,KAAKgtD,GAAGtoB,QAAS,WACrC0oD,EAAQhjB,oBAAoB,gCAC5BgjB,EAAQhjB,oBAAoB,iCAEzBgxG,EAAsBp7K,KAAKgtD,GAAGn9B,cAAc;AACtB,OAAxB7vB,KAAK29J,iBACP39J,KAAK29J,kBAAiBwd,IAAkBC,GAE5C,CACAL,sCACE,MAAMM,EAAwBr7K,KAAKgtD,GAAG5nB,iBAAiB;AACvD,IAAK,MAAM1W,KAAQ2sJ,EACjBr7K,KAAKgtD,GAAGw7B,YAAY95D;AAEtB,MAAM4sJ,EAAet7K,KAAKgtD,GAAGn9B,cAAc,uBACrC0rJ,EAAev7K,KAAKgtD,GAAGn9B,cAAc;AAC3C,GAAIyrJ,IAAiBt7K,KAAKq6K,sBAAuB,CAC/C,MAAMriJ,EAAQsjJ,EAAat2D;AAC3BhtF,EAAM6+D,KAAO,UACb7+D,EAAM4O,UAAUx/B,IAAI,cACpBpH,KAAKgtD,GAAGzqC,YAAYyV,EACtB,CACA,MAAMwjJ,EAAqB,IAAIx7K,KAAKgtD,GAAG2mB,UAAU/oE,QAAQoiD,IAAQA,EAAGvqB,aAAa;AACjF,GAAIziC,KAAKo6K,aAAc,CACrB,MAAMqB,EAAiBD,EAAmB,GAAGx2D;AAC7Cy2D,EAAeh4I,YAAczjC,KAAKo6K,aAClCqB,EAAe5kF,KAAO,UACtB72F,KAAKgtD,GAAGzqC,YAAYk5J,EACtB,MACE,IAAK,MAAM/sJ,KAAQ8sJ,EAAoB,CACrC,MAAMxjJ,EAAQtJ,EAAKs2F;AACnBhtF,EAAM6+D,KAAO,UACb72F,KAAKgtD,GAAGzqC,YAAYyV,EACtB,CAEF,IAAKsjJ,GAAgBC,EAAc,CACjC,MAAMvjJ,EAAQujJ,EAAav2D;AAC3BhtF,EAAM6+D,KAAO,UACb7+D,EAAM4O,UAAUx/B,IAAI,cACpBpH,KAAKgtD,GAAGzqC,YAAYyV,EACtB,CACF,CACA0jJ,0BACE,MAAMllF,EAAsBpJ,EAAQhjB,oBAAoB,iBAClDqsB,EAAoBrJ,EAAQhjB,oBAAoB;AACtD,OAAO12D,EAAM0hB,EAAEohE,EAAqB,CAAEQ,KAAM,YAAaH,KAAM,aAAc,aAAc72F,KAAKk6K,qBAAsBrvH,SAAU7qD,KAAKm6K,mBAAoBrjF,QAAUviF,GAAUvU,KAAK66K,uBAAuBtmK,IAAUb,EAAM0hB,EAAEqhE,EAAmB,CAAEI,KAAM,OAAQj4F,KAAM4uF,EAAQtgB,iCAC9Q,CACAkpB,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,gBAAiB,eAAgB52F,KAAKuuK,aAAe76J,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,QAAUljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,cAAgBljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAAc2/G,aAAcA,IAAMv+G,KAAKw6K,2BAA6Bx6K,KAAK07K,6BAA8BhoK,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,WAAaljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAAe8U,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,WAAaljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,UAAW2/G,aAAcA,IAAMv+G,KAAK26K,4BAA8BjnK,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,UAAWosC,KAAM,WAAatvH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,eAAiB8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,gBACh1C,CACIouD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACL32B,QAAW,CAAC,iBAEhB;AAIF,OAFA4oG,EAAapoG,MAlIW,25HAmIxBqvC,GAAuB06D,cAAgB3B,EAChC/4D,EACR,CA5IA,GAoxlBS,IAAG/jF,KAAKs8H,EAAYvqH;AACtB,IAAK,kBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EArolBlC,WACC,GAAIznC,GAAiC,OAAOU;AAC5CV,GAAkC,EAClC/hH,OAAO2D,eAAe8+G,GAAsB,aAAc,CAAEn8G;AAC5D,MAAM2O,EAAQ25E,KAuiBR60D,EAAS,CACb05B,KAviBW,CACXC,KAAM,CACJC,OAAQ,CACN,cAAe,CACb/xG,SAAA,EACAgyG,MAAO,eACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJC,SAAU,CACR,cAAe,CACblyG,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJE,SAAY,CACV,cAAe,CACbnyG,SAAA,EACAgyG,MAAO,gBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJvjC,OAAU,CACR,cAAe,CACb1uE,SAAA,EACAgyG,MAAO,eACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJt9G,MAAO,CACL,cAAe,CACbqL,SAAA,EACAgyG,MAAO,IACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ/iJ,MAAO,CACL,cAAe,CACb8wC,SAAA,EACAgyG,MAAO,IACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ50K,IAAK,CACH,cAAe,CACb2iE,SAAA,EACAgyG,MAAO,OACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJjoK,OAAQ,CACN,cAAe,CACbg2D,SAAA,EACAgyG,MAAO,QACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJG,KAAM,CACJ,cAAe,CACbpyG,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJt2B,SAAU,CACR,cAAe,CACb37E,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ5gG,QAAS,CACP,cAAe,CACbrR,SAAA,EACAgyG,MAAO,cACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJh8J,KAAM,CACJ,cAAe,CACb+pD,SAAA,EACAgyG,MAAO,cACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJI,OAAQ,CACN,cAAe,CACbryG,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJK,QAAS,CACP,cAAe,CACbtyG,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJM,KAAM,CACJ,cAAe,CACbvyG,SAAA,EACAgyG,MAAO,sBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ1uF,KAAM,CACJ,cAAe,CACbvjB,SAAA,EACAgyG,MAAO,kBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJO,QAAS,CACP,cAAe,CACbxyG,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJz7K,OAAQ,CACN,cAAe,CACbwpE,SAAA,EACAgyG,MAAO,mBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJQ,KAAM,CACJ,cAAe,CACbzyG,SAAA,EACAgyG,MAAO,qBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ59K,KAAM,CACJ,cAAe,CACb2rE,SAAA,EACAgyG,MAAO,qBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJS,QAAS,CACP,cAAe,CACb1yG,SAAA,EACAgyG,MAAO,qBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJU,MAAO,CACL,cAAe,CACb3yG,SAAA,EACAgyG,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,aAEF,cAAe,CACbD,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJW,UAAW,CACT,cAAe,CACb5yG,SAAA,EACAgyG,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJY,QAAS,CACP,cAAe,CACb7yG,SAAA,EACAgyG,MAAO,mBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJa,QAAS,CACP,cAAe,CACb9yG,SAAA,EACAgyG,MAAO,mBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJc,OAAQ,CACN,cAAe,CACb/yG,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ79K,KAAM,CACJ,cAAe,CACb4rE,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJe,KAAM,CACJ,cAAe,CACbhzG,SAAA,EACAgyG,MAAO,kBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJgB,OAAQ,CACN,cAAe,CACbjzG,SAAA,EACAgyG,MAAO,kBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJp3K,OAAQ,CACN,cAAe,CACbmlE,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJiB,UAAW,CACT,cAAe,CACblzG,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJkB,UAAW,CACT,cAAe,CACbnzG,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJmB,eAAgB,CACd,cAAe,CACbpzG,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJnoC,QAAS,CACP,cAAe,CACb9pE,SAAA,EACAgyG,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJoB,MAAO,CACL,cAAe,CACbrzG,SAAA,EACAgyG,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ76I,OAAU,CACR,cAAe,CACb4oC,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJqB,UAAW,CACT,cAAe,CACbtB,MAAO,QACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,aAEF,cAAe,CACbjyG,SAAA,EACAgyG,MAAO,YACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJpa,cAAe,CACb,cAAe,CACb73F,SAAA,EACAgyG,MAAO,qBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJsB,KAAM,CACJ,cAAe,CACbvzG,SAAA,EACAgyG,MAAO,uBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJuB,KAAM,CACJ,cAAe,CACbxzG,SAAA,EACAgyG,MAAO,MACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJwB,KAAM,CACJ,cAAe,CACbzzG,SAAA,EACAgyG,MAAO,YACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJpxK,OAAQ,CACN,cAAe,CACbm/D,SAAA,EACAgyG,MAAO,SACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ5K,KAAM,CACJ,cAAe,CACbrnG,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJyB,KAAM,CACJ,cAAe,CACb1zG,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ0B,UAAW,CACT,cAAe,CACb3zG,SAAA,EACAgyG,MAAO,WACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ2B,WAAY,CACV,cAAe,CACb5zG,SAAA,EACAgyG,MAAO,aACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ4B,SAAU,CACR,cAAe,CACb7zG,SAAA,EACAgyG,MAAO,UACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ6B,SAAU,CACR,cAAe,CACb9zG,SAAA,EACAgyG,MAAO,qBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ8B,KAAM,CACJ,cAAe,CACb/zG,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ+B,KAAM,CACJ,cAAe,CACbh0G,SAAA,EACAgyG,MAAO,gBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJgC,KAAM,CACJ,cAAe,CACbj0G,SAAA,EACAgyG,MAAO,iBACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJiC,QAAS,CACP,cAAe,CACbl0G,SAAA,EACAgyG,MAAO,QACP54K,KAAM,GACNonC,MAAO,GACPC,OAAQ,GACRwxI,cAGJ,aAAc,CACZzxI,MAAO,GACPC,OAAQ,IAEV,cAAe,CACbD,MAAO,GACPC,OAAQ,IAEV,aAAc,CACZD,MAAO,GACPC,OAAQ;AAgId,SAAS0zI,EAAiBpM,EAAU+J,GAClC,OAAOA,EAAM,YAAW/J,IAC1B,CAIA,SAASqM,EAAuBpC,EAAOjK,GACrC,OAAOA,EAAWn1J,SAASkT,cAAe,eAAcksJ,sBAA0BjK,OAAgBn1J,SAASkT,cAAe,eAAcksJ,MAC1I,CAIA,MAEMqC,EAAwB,sBACxBC,EAAa,MACjB7yJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKg8K,YACLh8K,KAAKpB,YACLoB,KAAK8xK,eACP,CACAwM,YAAY/tD,EAAQguD,EAAWh0I,EAAOC,GACpCxqC,KAAKgtD,GAAG5nB,iBAAiB,OAAOzmC,SAAS6/K,GAASA,EAAKzqK;AACvD,MAAMwqJ,EAAM5hJ,SAASyzI,gBAAgB,6BAA8B;AACnEmO,EAAI9P,eAAe,gCAAiC,cAAe,gCACnE8P,EAAIh9B,QAAQ3iI,KAAO2/K,EACnBhgB,EAAIh+E,aAAa,UAAWgwC,eAAgDA,EAAO9tF,aAAa,YAChG8H,GAASg0H,EAAIh+E,aAAa,QAAU,GAAEh2C,KACtCC,GAAU+zH,EAAIh+E,aAAa,SAAW,GAAE/1C,KACxC+zH,EAAIr9E,UAAYqvC,EAAOrvC,UACvBlhF,KAAKgtD,GAAGzqC,YAAYg8I,EACtB,CACAtzB,cAAc1a,EAAQkuD,EAAeC,GACnC,IAAIh5K,EAAI4P,EAAIoT,EAAIC;AAChB,MAAMg2J,GAAcpuD,eAAgDA,EAAO9tF,aAAa,WAAW5yB,MAAM,MAAMvO,KAAKg5C,GAAMj8B,OAAOlD,SAASm/B,EAAG,QAAS;AAGtJ,MAAO,CAAE/P,MAFwJ,QAAlJj1B,EAAkG,QAA5F5P,EAAK+4K,eAA8DA,EAAcl0I,iBAAmB7kC,EAAgBA,EAAKi5K,EAAW,cAAgBrpK,EAAgBA,EAAKopK,EAE9Kl0I,OADmJ,QAAnJ7hB,EAAmG,QAA7FD,EAAK+1J,eAA8DA,EAAcj0I,kBAAoB9hB,EAAgBA,EAAKi2J,EAAW,cAAgBh2J,EAAgBA,EAAK+1J,EAElM,CACA1oF,oBACE,IAAItwF;AACJ,IAAI64K,EAAWG,EAAiBE,EAAiBH,EAAeluD;AAEhE,IAD0B5zG,SAASkT,cAAcuuJ,GACzB,CACtB,MAAMS,EAAWliK,SAASuF,cAAc;AACxC28J,EAAS39F,UAvKU;AAwKnB,MAAM49F,EAASD,EAAShvJ,cAAcuuJ;AACtCU,EAAOltG,MAAM9yE,QAAU,OACvB6d,SAAS6F,KAAK8Y,OAAOwjJ,GACrBD,EAAS9qK,QACX,CACA,MAAMgrK,EAAY78B,EAAO05B,KAAKC,KAAK77K,KAAKpB;AAjD5C,IAA8BkzK;AAkDtBiN,GACFH,EA5DN,SAAgC/C,GAC9B,MAAM+C,EAAkBngL,OAAOC,KAAKm9K,GAAMjxK,QAAQrJ,GAAQA,EAAIlB,SAAS,cAAaa,MAAM4wK,GACjF+J,EAAK/J,GAAU/nG,QAAU8xG,EAAK/J,GAAU3uK,KAAO;AAExD,OAAOy7K,EAAkB/C,EAAK+C,GAAiBz7K,WACjD,CALA,CA4D+C47K,GAnDjBjN,EAoDe9xK,KAAK8xK,SAA5C4M,EAnDGvhK,QAAQ+gK,EAAiBpM,EAmD0BiN,IAAa/+K,KAAK8xK,SAAW8M,EACnFH,EAAgBP,EAAiBQ,EAAiBK,GAClDR,EAAYE,eAA8DA,EAAc1C,QAExFwC,EAAYv+K,KAAKpB,KACjB2xH,EAAS4tD,EAAuBI,EAAWv+K,KAAK8xK,UAChD8M,EAAkBvgK,OAAOlD,SAASo1G,eAAgDA,EAAOgR,QAAQuwC,SAAU,IAC3G4M,EArDN,SAA+B3C,EAAOjK,GACpC,OAAO30J,QAAQghK,EAAuBpC,EAAOjK,GAC/C,CAFA,CAqD8CyM,EAAWv+K,KAAK8xK,UAAY9xK,KAAK8xK,SAAW8M,GAEtFruD,EAAS4tD,EAAuBI,EAAWG;AAC3C,MAAMn0I,MAAEA,EAAKC,OAAEA,GAAWxqC,KAAKirI,cAAc1a,EAAQkuD,EAAeC;AAChEnuD,GACFvwH,KAAKs+K,YAAY/tD,EAAQguD,EAAWh0I,EAAOC,GAE7CxqC,KAAKuqC,MAAQA,EACbvqC,KAAKwqC,OAASA,EACdxqC,KAAKg8K,SAA2G,QAA/Ft2K,EAAK+4K,eAA8DA,EAAczC,oBAAsBt2K,GAAgBA,CAC1I,CACA0wF,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,cAAeolF,SAAUh8K,KAAKg8K,SAAUpqG,MAAO,CAClI,eAAiB,GAAE5xE,KAAKuqC,UACxB,gBAAkB,GAAEvqC,KAAKwqC,aACtB92B,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAC9B,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAq+K,EAAWzsG,MAvEW,+nBAwEtBsvC,GAAqB89D,YAAcX,EAC5Bn9D,EACR,CA7vBA,GAsolBS,IAAGhkF,KAAKs8H,EAAYvqH;AACtB,IAAK,mCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAt4jBlC,WACC,GAAIxnC,GAAgD,OAAOU;AAC3DV,GAAiD,EACjDhiH,OAAO2D,eAAe++G,GAAqC,aAAc,CAAEp8G;AAC3E,MAAM2O,EAAQ25E,KAGR4xF,EAA4B,MAChCzzJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,EAC/B,CACAyG,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,uBACjO;AAIF,OAFAqgL,EAA0BrtG,MAVW,yiBAWrCuvC,GAAoC+9D,6BAA+BD,EAC5D99D,EACR,CAlBA,GAu4jBS,IAAGjkF,KAAKs8H,EAAYvqH;AACtB,IAAK,2BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAl3jBlC,WACC,GAAIvnC,GAAyC,OAAOU;AACpDV,GAA0C,EAC1CjiH,OAAO2D,eAAeg/G,GAA8B,aAAc,CAAEr8G;AACpE,MAAM2O,EAAQ25E,KAyBR8xF,EAAqB,MACzB3zJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK8nG,QAAU,MACjB,CACA1R,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,wBAA0BljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAA2B,SAAjBoB,KAAK8nG,SAzBjLp0F,EAAM0hB,EAC9B,MACA,CAAEwhE,MAAO,OAAQrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,cAAeC,MAAO,8BAC3EhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,wWAsB0L,YAAjBt6C,KAAK8nG,SA9BxNp0F,EAAM0hB,EACjC,MACA,CAAEwhE,MAAO,OAAQrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,cAAeC,MAAO,8BAC3EhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,0VA2B0O,YAAjBt6C,KAAK8nG,SApBxQp0F,EAAM0hB,EACjC,MACA,CAAEwhE,MAAO,OAAQrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,cAAeC,MAAO,8BAC3EhqH,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,oCACrB5mC,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,0JACrB5mC,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,0VAe0R,aAAjBt6C,KAAK8nG,SAbvTp0F,EAAM0hB,EAClC,MACA,CAAEwhE,MAAO,OAAQrsD,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,cAAeC,MAAO,8BAC3EhqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,wWAU4T5mC,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACxZ;AAIF,OAFA49K,EAAmBvtG,MAXW,2zCAY9BwvC,GAA6Bg+D,qBAAuBD,EAC7C/9D,EACR,CAzCA,GAm3jBS,IAAGlkF,KAAKs8H,EAAYvqH;AACtB,IAAK,4BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAnzjBlC,WACC,GAAIrnC,GAA0C,OAAOS;AACrDT,GAA2C,EAC3CniH,OAAO2D,eAAei/G,GAA+B,aAAc,CAAEt8G;AACrE,MAAM2O,EAAQ25E,KACRu3C,EAAQrjB,KACRn0B,EAAUnjB,EAAcC,uBAGxBm1G,EAAsB,MAC1B7zJ,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKs/K,eACLt/K,KAAKpB,YACLoB,KAAK+E,aACL/E,KAAKkb,mBACLlb,KAAK8kK,iBACL9kK,KAAKu/K,iBACLv/K,KAAKmD,KAAO,QACZnD,KAAKwvI,gBACLxvI,KAAKyrF,gBACLzrF,KAAK6qD,gBACL7qD,KAAKw8H,eACLx8H,KAAK+wF,eACL/wF,KAAKwiC,oBACLxiC,KAAK6kK,iBACL7kK,KAAKoS,KAAO,UACd,CAIAmrG,iBAA8B,IAAfx4G,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACdU,KAAK6qD,UAAY7qD,KAAKwvI,WAG1BxvI,KAAKw8H,QAAUz3H,QACT/E,KAAKw/K,gBAAgB9hB,SAAS34J,GACtC,CACA06K,uBACE,IAAI/5K;AACJ1F,KAAK0/K,aAAe1/K,KAAKgtD,GAAGn9B,cAAc,qBACtC7vB,KAAK0/K,eAAiD,QAA/Bh6K,EAAK1F,KAAKw/K,2BAA6B95K,SAAyBA,EAAG+5K,uBAC5Fz/K,KAAKw/K,gBAAgBC,qBAAqBz/K,KAAK0/K,aAEnD,CACAC,yBAAyBz/K,GACvBF,KAAKoS,KAAqB,aAAdpS,KAAKoS,KAAsB,OAAS,WAChDlS,EAAEonG,iBACJ,CACAs4E,cAAc1/K,GACE,UAAVA,EAAEqB,KAAoBrB,EAAE2/K,aAC1Bj7C,EAAMpjB,qBAAqBxhH,KAAKgtD,GAEpC,CACA8yH,kBACE,OAAOpsK,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,qqBAAuqB5mC,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,qFAAuF5mC,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,8SAC/9B,CACAylI,mBACE,OAAOrsK,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,4eACvL,CACA87C,SACE,MAAMqR,EAAyBra,EAAQhjB,oBAAoB,qBACrDw4D,EAAyBx1C,EAAQhjB,oBAAoB;AAC3D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,wBAAyBwnB,UAAYl+G,IACxHF,KAAK4/K,cAAc1/K,KAChBwT,EAAM0hB,EAAEqyE,EAAwB,CACnClmG,IAAK,2CACL6Q,KAAMpS,KAAKoS,KAEXk6I,IAAMt/F,GAAOhtD,KAAKw/K,gBAAkBxyH,EACpCsxD,OAAQA,OAERxnB,QAASA,OAETunB,QAASA,OAETihE,QAASt/K,KAAKs/K,QACd1gL,KAAMoB,KAAKpB,KACXsc,YAAalb,KAAKkb,YAClB4pJ,UAAW9kK,KAAK8kK,UAChBya,UAAWv/K,KAAKu/K,UAChBp8K,KAAMnD,KAAKmD,KACX4B,MAAO/E,KAAK+E,MACZyqI,SAAUxvI,KAAKwvI,SACf/jD,SAAUzrF,KAAKyrF,SACf5gC,SAAU7qD,KAAK6qD,SACfkmC,QAAS/wF,KAAK+wF,QACdvuD,aAAcxiC,KAAKwiC,aACnBqiI,UAAW7kK,KAAK6kK,WACfnxJ,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CACvF7zB,IAAK,2CACL3C,KAAM,QACN2/G,aAAcA,IAAMv+G,KAAKy/K,uBAEzB5oF,KAAM72F,KAAK0/K,aAAe,QAAU,KAClChsK,EAAM0hB,EAAEwtG,EAAwB,CAAErhI,IAAK,2CAA4Cs1F,KAAM,qBAAsB1zF,KAAM,SAAWuQ,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,SAAUE,QAAU52F,IAClOF,KAAK2/K,yBAAyBz/K,IAC7Bk+G,UAAYl+G,IACbA,EAAEonG,oBACe,aAAdtnG,KAAKoS,MAAuBpS,KAAK8/K,kBAAiC,SAAd9/K,KAAKoS,MAAmBpS,KAAK+/K,sBACxF,CACI/yH,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAq/K,EAAoBztG,MAlGW,mmCAmG/ByvC,GAA8B2+D,sBAAwBX,EAC/Ch+D,EACR,CA5GA,GAozjBS,IAAGnkF,KAAKs8H,EAAYvqH;AACtB,IAAK,0BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAnqjBlC,WACC,GAAItmC,GAAwC,OAAOC;AACnDD,GAAyC,EACzCljH,OAAO2D,eAAew/G,GAA6B,aAAc,CAAE78G;AACnE,MAAM2O,EAAQ25E,KACR7qD,EAAes/E,KACfogB,EAAahzD,IACbke,EAAUnjB,EAAcC,uBACxB06D,EAAQrjB,KAGR0+D,EAAY,MAChBz0J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKkgL,yBAA2BxsK,EAAMo8E,YAAY9vF,KAAM,2BAA4B,GACpFA,KAAKmgL,6BAA+BzsK,EAAMo8E,YAAY9vF,KAAM,+BAAgC,GAC5FA,KAAKogL,uBAAyB1sK,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKqgL,0CAA4C3sK,EAAMo8E,YAAY9vF,KAAM,4CAA6C,GACtHA,KAAKsgL,yBAA2B5sK,EAAMo8E,YAAY9vF,KAAM,2BAA4B,GAChF2vF,EAAQ68D,cAAc,QACxBxsJ,KAAKugL,UAAY5wF,EAAQ68D,cAAc,SAEvCxsJ,KAAKugL,UAAY5wF,EAAQ68D,cAAcg0B,kBACvC7wF,EAAQ68D,cAAc,QAAUxsJ,KAAKugL,WAEvCvgL,KAAK+E,MAAQ,GACb/E,KAAKkb,YAAc,GACnBlb,KAAK8kK,iBACL9kK,KAAKmD,KAAO,SACZnD,KAAK8nG,QAAU,SACf9nG,KAAK6qD,YACL7qD,KAAKw8H,WACLx8H,KAAKygL,aACLzgL,KAAKwiC,gBACLxiC,KAAKpB,YACLoB,KAAK0gL,eAAiB,SACtB1gL,KAAK2gL,qBAAuB,QAC5B3gL,KAAK4gL,0BAA4B,cACjC5gL,KAAKoxE,UACP,CAQAyvG,eAAe1oJ,EAAUq+B,GACnBr+B,IAAaq+B,GAGbr+B,GACFn4B,KAAK8gL,cAAcrlG,OAEvB,CACAslG,gBAAgB5oJ,GACVA,GAAYn4B,KAAKw8H,SACnBx8H,KAAK09J,YAET,CACAr7C,oBAAoBlqF,GAClBn4B,KAAKghL,cAAgBx+I,EAAa6/E,oBAAoBlqF,EACxD,CAMAulI,WAAwB,IAAf34J,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACZ,GAAIU,KAAK6qD,UAAY9lD,GAAS/E,KAAKw8H,UAAYz3H,EAC7C,OAAOo9E,QAAQC;AAEjB,MAAMk7B,iBAAEA,GAAqBt9G,KAAKogL,uBAAuB7jH,KAAKx3D;AAO9D,OANKu4G,IACHt9G,KAAKw8H,QAAUz3H,GACVA,GAAS/E,KAAK8gL,eACjB9gL,KAAK8gL,cAAcziB,QAGhBl8E,QAAQC,SACjB,CAIA6+F,aAEE,OADqBjhL,KAAKkgL,yBAAyB3jH,OAClC+gD,kBAAmC,KAAft9G,KAAK+E,OAGjB/E,KAAKmgL,6BAA6B5jH,KAAK,CAC9DroC,QAAS,GACT4tI,UAAW9hK,KAAK+E,MAChBm8K,cAAe,KACfn8K,MAAO,KAEau4G,mBACpBt9G,KAAK+E,MAAQ,IATNo9E,QAAQC,SAYnB,CAIAm7B,uCACQv9G,KAAKihL,aACXjhL,KAAKmhL,qBACP,CAIAC,kBAAkBlhL,GAChB,MAAM0B,EAAS1B,EAAE0B;AACjB,IAAKA,EACH;AAEF,MAAM07G,iBAAEA,GAAqBt9G,KAAKmgL,6BAA6B5jH,KAAK,CAClEroC,QAAStyB,EAAOmD,MAChB+8J,UAAW9hK,KAAK+E,MAChBm8K,cAAehhL,EACf6E,MAAOnD,EAAOmD;AAEZu4G,EACFp9G,EAAEg9E,kBAGJl9E,KAAKqhL,yBACLrhL,KAAK+E,MAAQnD,EAAOmD,MACtB,CAIAu8K,gBAAgBphL,GACTF,KAAKoxE,UAGc,sCAApBlxE,EAAEqhL,eAAoE,mBAAXrhL,EAAEkS,MAA6BpS,KAAKw8H,SACjGx8H,KAAKqgL,0CAA0C9jH,KAAKr8D,EAAEkS,MACtD1P,OAAO+xD,4BACL,IAAI/uD;AAC0B,QAA7BA,EAAK1F,KAAK8gL,yBAA2Bp7K,GAAyBA,EAAG+1E,OAAO,KAE9C,qCAApBv7E,EAAEqhL,eAAmE,iBAAXrhL,EAAEkS,MACrEpS,KAAKqgL,0CAA0C9jH,KAAKr8D,EAAEkS,MAE1D,CACAovK,uBAAuBthL,EAAGuhL,GACpBA,IACFvhL,EAAEonG,kBACFtnG,KAAK09J,aAET,CACAkiB,cAAc1/K,GACE,UAAVA,EAAEqB,KAAoBrB,EAAE2/K,aAC1Bj7C,EAAMpjB,qBAAqBxhH,KAAKgtD,GAEpC,CAIAyyH,qBAAqBC,GACnB,IAAIh6K;AACJ1F,KAAK0hL,eAAiBhC,GACtB1/K,KAAKgtD,GAAGn9B,cAAc,uBAEiB,QAArCnqB,EAAK1F,KAAKgtD,GAAG2lB,cAAc1vD,gBAAkBvd,SAAyBA,EAAGmqB,cAAc,sBACrF7vB,KAAK0hL,iBACP1hL,KAAK0hL,eAAe3sK,iBAAiB,SAAU7U,GAAMF,KAAKohL,kBAAkBlhL,KAC5EF,KAAK0hL,eAAe3sK,iBAAiB,aAAe/U,KAAK09J,aACzD19J,KAAK0hL,eAAe3sK,iBAAiB,YAAc/U,KAAK09J,eACxD19J,KAAK0hL,eAAe3sK,iBAAiB,WAAY7U,GAAMF,KAAK4/K,cAAc1/K,KAC1EF,KAAK8gL,cAAgB9gL,KAAK0hL,eAE9B,CAIAC,yBACE,MAAMC,EAAkBnjL,OAAOkD,OAAO,CAAC,EAAG3B,KAAK6hL;AAC/C7hL,KAAK6hL,YAAcpjL,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAO,CAAC,EAAG3B,KAAKghL,eAAiB,CAAEx+I,aAAcxiC,KAAKghL,gBAAkBhhL,KAAKygL,WAAa,CAAEA,UAAWzgL,KAAKygL,YAAczgL,KAAK6qD,UAAY,CAAEA,SAAU7qD,KAAK6qD,WAAa7qD,KAAK8kK,WAAa,GAAK,CAAEA,UAAW9kK,KAAK8kK,YAAc9kK,KAAKpB,MAAQ,CAAEA,KAAMoB,KAAKpB,OAASoB,KAAKkb,aAAe,CAAEA,YAAalb,KAAKkb,uBAAgBlb,KAAK+E,OAAoB,CAAEA,MAAO/E,KAAK+E,QAC5c/E,KAAK0hL,gBACkB,IAAoB,IAAI5gL,IAAI,IAAIrC,OAAOC,KAAKkjL,MAAqBnjL,OAAOC,KAAKsB,KAAK6hL,gBAC1FljL,SAAS4C,IACxB,GAAMA,KAAOvB,KAAK6hL,YAEX,CACL,MAAM72H,OAAiBhrD,KAAK6hL,YAAYtgL,GAAgBvB,KAAK6hL,YAAYtgL,GAAO;AACpE,UAARA,EACFvB,KAAK0hL,eAAe38K,MAAQimD,OACnBA,EACThrD,KAAK0hL,eAAez3E,gBAAgB1oG,GAEpCvB,KAAK0hL,eAAenhG,aAAah/E,EAAKypD,EAE1C,MAVEhrD,KAAK0hL,eAAez3E,gBAAgB1oG,EAUtC,GAGN,CAIA8/K,yBACE,IAAI37K,EAAI4P,EAAIoT,EAAIC;AACX3oB,KAAKugL,YAGoC,QAA7CjrK,GAAM5P,EAAK1F,KAAKugL,WAAWuB,wBAA0BxsK,GAAyBA,EAAGrT,KAAKyD,EAAI1F,KAAK+E,OAC5F/E,KAAK8gL,gBACsC,QAA5Cn4J,GAAMD,EAAK1oB,KAAKugL,WAAWwB,uBAAyBp5J,GAAyBA,EAAG1mB,KAAKymB,EAAI1oB,KAAK8gL,cAAckB,SAAUhiL,KAAK8gL,cAAcmB,oBAE9I,CACAjsF,oBACEh2F,KAAKgtD,GAAGpmB,UAAUx/B,IAAI,WACtBpH,KAAKqiH,oBAAoBriH,KAAKwiC,cAC9BxiC,KAAKy/K,uBACLz/K,KAAK2hL,yBACL3hL,KAAKqhL,wBACP,CACAa,sBACEliL,KAAK2hL,yBACL3hL,KAAKqhL,wBACP,CACAjlD,mBACEp8H,KAAKgtD,GAAGpmB,UAAU7yB,OAAO,WACzB/T,KAAKsgL,yBAAyB/jH,MAChC,CACA65B,SACE,MAAMqrF,EAAazhL,KAAKoxE,SAAWpxE,KAAKw8H,QAClC6Z,EAAWr2I,KAAKgtD,GAAGn9B,cAAc,gBAAkB,SACnD+yG,EAAyBx1C,EAAQhjB,oBAAoB;AAC3D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,sBAAuBurF,eAAiBjiL,GAAMF,KAAKshL,gBAAgBphL,GAAIkiL,iBAAmBliL,GAAMF,KAAKshL,gBAAgBphL,GAAIo+G,OAAQA,KACpN,IAAI54G;AACA1F,KAAKmhL,oBACuB,QAA7Bz7K,EAAK1F,KAAK8gL,yBAA2Bp7K,GAAyBA,EAAG+1E,QAClEz7E,KAAKmhL,uBAELnhL,KAAK09J,YAAS,EAEf5mE,QAAU52F,IACXA,EAAEonG,kBACFtnG,KAAK09J,YACJr/C,QAASA,IAAMr+G,KAAK09J,WAAYrnB,YAAY3iI,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,oBAAqB,CACpK,eAAgBsyG,IACd,aAAczhL,KAAK4gL,0BAA2B9pF,QAAU52F,GAAMF,KAAKwhL,uBAAuBthL,EAAGuhL,GAAa,cAAeA,EAAa,QAAU,OAAQprC,SAAUorC,EAAa,IAAM,MAAQ/tK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,qBAAuB8U,EAAM0hB,EAAEwtG,EAAwB,CAAErhI,IAAK,2CAA4C4B,KAAM,OAAQkzI,SAAU,KAAM,cAAe,QAAUorC,EAEza/tK,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE,YAAa,UAAW,YAAa,UAAWklB,EAAG,mLAG9K5mC,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAEklB,EAAG,sdAC1H5mC,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAO,mBAAqBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAS2/G,aAAcA,IAAMv+G,KAAKy/K,yBAA2Bz/K,KAAK0hL,gBAAkBhuK,EAAM0hB,EAAE,QAAS32B,OAAOkD,OAAO,CAAEJ,IAAK,2CAA4C,aAAcvB,KAAK0gL,eAAgB74E,QAAU3nG,GAAMF,KAAKohL,kBAAkBlhL,GAAIk+G,UAAYl+G,IAC3aF,KAAK4/K,cAAc1/K,IAClB8iI,KAAM,eAAgBspB,IAAMpxH,GAAUl7B,KAAK8gL,cAAgB5lJ,EAAO9oB,KAAM,QAAUpS,KAAK6hL,gBAAiBnuK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,uBAAyB8U,EAAM0hB,EAAE,SAAU,CAAE7zB,IAAK,2CAA4C,aAAcvB,KAAK2gL,qBAAsB/pF,MAAOsrC,EAAW/yD,WAAW,eAAgB,CAAEgsD,QAASn7H,KAAK+E,OAAS/E,KAAK6qD,WAAaisC,QAAS92F,KAAKqiL,yBAAyBtjL,KAAKiB,MAAOq2I,SAAU,KAAO3iI,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C+4C,EAAG,0KACzrB,CACWgoI,4BACT,QACF,CACIt1H,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLy0B,QAAW,CAAC,kBACZ3xE,SAAY,CAAC,mBACbroB,aAAgB,CAAC,uBAErB;AAIF,OAFAy9I,EAAUruG,MAjQmB,uoMAkQ7BgwC,GAA4B2gE,oBAAsBtC,EAC3Cr+D,EACR,CA7QA,GAoqjBS,IAAG1kF,KAAKs8H,EAAYvqH;AACtB,IAAK,wBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAp5iBlC,WACC,GAAI3lC,GAAsC,OAAOK;AACjDL,GAAuC,EACvC7jH,OAAO2D,eAAeugH,GAA2B,aAAc,CAAE59G;AACjE,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IACPz9C,EAAes/E,KACfogB,EAAahzD,IACb01D,EAAQrjB,KAUR0+D,EAAY,MAChBz0J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKwiL,uBAAyB9uK,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKyiL,mBAAqB/uK,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACpE2vF,EAAQ68D,cAAc,QACxBxsJ,KAAKugL,UAAY5wF,EAAQ68D,cAAc,SAEvCxsJ,KAAKugL,UAAY5wF,EAAQ68D,cAAcg0B,kBACvC7wF,EAAQ68D,cAAc,QAAUxsJ,KAAKugL,WAEvCvgL,KAAK0vI,uBACL1vI,KAAK2vI,wBACL3vI,KAAKoS,KAAO,OACZpS,KAAKs/K,eACLt/K,KAAKpB,YACLoB,KAAK+E,MAAQ,GACb/E,KAAKkb,mBACLlb,KAAK8kK,iBACL9kK,KAAKu/K,iBACLv/K,KAAKmD,KAAO,QACZnD,KAAKu4I,YACLv4I,KAAKs3C,WACLt3C,KAAKi2C,WACLj2C,KAAKg5F,eACLh5F,KAAKyrF,gBACLzrF,KAAKwvI,YACLxvI,KAAK6qD,YACL7qD,KAAKw8H,WACLx8H,KAAK+wF,WACL/wF,KAAK6kK,iBACL7kK,KAAKygL,aACLzgL,KAAKwiC,gBACLxiC,KAAK0iL,gBACL1iL,KAAK2iL,cACL3iL,KAAKqhF,qBACP,CACA88E,qBAAqBhmI,GACdn4B,KAAK4iL,aAGNzqJ,GACFn4B,KAAK4iL,YAAYnnG,OAErB,CACA4mC,oBAAoBlqF,GAClBn4B,KAAKghL,cAAgBx+I,EAAa6/E,oBAAoBlqF,EACxD,CACA0qJ,2BACM7iL,KAAKygL,WACPzgL,KAAK09J,UAET,CACAolB,eAAe5iL,GACEF,KAAKwiL,uBAAuBjmH,KAAK,CAC9Cx3D,MAAO7E,EAAE0B,OAAOmD,MAChBm8K,cAAehhL,IAENo9G,kBACTp9G,EAAE0B,OAAOmD,MAAQ/E,KAAK+E,MACtB7E,EAAEg9E,mBAEFl9E,KAAK+E,MAAQ7E,EAAE0B,OAAOmD,MACtB/E,KAAKqhL,0BACDrhL,KAAK0iL,cAAgB1iL,KAAK+iL,+BAC5B/iL,KAAK+wF,SAAW/wF,KAAK4iL,YAAYI,kBAGrChjL,KAAK2iL,aACP,CACAM,eAAe/iL,GACW,gCAApBA,EAAEqhL,cACJvhL,KAAK2iL,cACwB,iCAApBziL,EAAEqhL,eAAqDvhL,KAAK+E,QACrE/E,KAAK2iL,cAET,CACA/C,cAAc1/K,GACE,UAAVA,EAAEqB,KAAoBrB,EAAE2/K,cACL,YAAjB7/K,KAAKgtD,GAAG6pC,KACV32F,EAAEg9E,iBAEF0nD,EAAMpjB,qBAAqBxhH,KAAKgtD,IAGtC,CAMAk2H,wBAAwB3uK,GACtBA,EAAM2oE,iBACNl9E,KAAK+iL,+BACL/iL,KAAK+wF,SAAW/wF,KAAK4iL,YAAYI,eACnC,CAIAtlB,WAAwB,IAAf34J,IAAKzF,UAAAC,OAAA,YAAAD,UAAA,KAAAA,UAAA;AACZ,OAAIU,KAAKwvI,UAAYxvI,KAAK6qD,WAG1B7qD,KAAKw8H,QAAUz3H,GACVA,GAAS/E,KAAK4iL,aACjB5iL,KAAK4iL,YAAYvkB,QAJVl8E,QAAQC,SAOnB,CAIA+gG,kBACE,OAAOhhG,QAAQC,QAAQpiF,KAAK4iL,YAC9B,CAIAnD,qBAAqBC,GACnB,IAAIh6K;AAYJ,OAXA1F,KAAK0/K,aAAeA,GACpB1/K,KAAKgtD,GAAGn9B,cAAc,uBAEiB,QAArCnqB,EAAK1F,KAAKgtD,GAAG2lB,cAAc1vD,gBAAkBvd,SAAyBA,EAAGmqB,cAAc,sBACrF7vB,KAAK0/K,eACP1/K,KAAK0/K,aAAa3qK,iBAAiB,SAAU7U,GAAMF,KAAK8iL,eAAe5iL,KACvEF,KAAK0/K,aAAa3qK,iBAAiB,aAAe/U,KAAK09J,aACvD19J,KAAK0/K,aAAa3qK,iBAAiB,YAAc/U,KAAKw8H,aACtDx8H,KAAK0/K,aAAa3qK,iBAAiB,kBAAmB7U,GAAMF,KAAKijL,eAAe/iL,KAChFF,KAAK4iL,YAAc5iL,KAAK0/K,cAEnBv9F,QAAQC,SACjB,CACAu/F,yBACE,MAAMC,EAAkBnjL,OAAOkD,OAAO,CAAC,EAAG3B,KAAK6hL;AAC/C7hL,KAAK6hL,YAAcpjL,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAOlD,OAAOkD,OAAO,CAAC,EAAG3B,KAAKs/K,SAAW,CAAE9kK,GAAIxa,KAAKs/K,UAAYt/K,KAAKpB,MAAQ,CAAEA,KAAMoB,KAAKpB,OAASoB,KAAKoS,MAAQ,CAAEA,KAAMpS,KAAKoS,OAASpS,KAAKkb,aAAe,CAAEA,YAAalb,KAAKkb,cAAgBlb,KAAK8kK,WAAa,GAAK,CAAEA,UAAW9kK,KAAK8kK,YAAc9kK,KAAKu/K,WAAa,GAAK,CAAEA,UAAWv/K,KAAKu/K,YAAcv/K,KAAKu4I,MAAQ,CAAEA,KAAMv4I,KAAKu4I,OAASv4I,KAAKs3C,KAAO,CAAEA,IAAKt3C,KAAKs3C,MAAQt3C,KAAKi2C,KAAO,CAAEA,IAAKj2C,KAAKi2C,MAAQj2C,KAAKg5F,SAAW,CAAEA,QAASh5F,KAAKg5F,mBAAYh5F,KAAK+E,OAAoB,CAAEA,MAAO/E,KAAK+E,QAAU/E,KAAKwvI,UAAY,CAAEA,SAAUxvI,KAAKwvI,WAAaxvI,KAAKyrF,UAAY,CAAEA,SAAUzrF,KAAKyrF,WAAazrF,KAAK6qD,UAAY,CAAEA,SAAU7qD,KAAK6qD,WAAa7qD,KAAKygL,WAAa,CAAEA,UAAWzgL,KAAKygL,YAAczgL,KAAK6kK,WAAa,CAAEA,UAAW7kK,KAAK6kK,YAAc7kK,KAAKghL,eAAiB,CAAEx+I,aAAcxiC,KAAKghL,gBAAkBhhL,KAAKqhF,gBAAiB,CAAE,aAAcunB,EAAK7nB,sBAAsB/gF,KAAKgtD,MACpmChtD,KAAK0/K,cACkB,IAAoB,IAAI5+K,IAAI,IAAIrC,OAAOC,KAAKkjL,MAAqBnjL,OAAOC,KAAKsB,KAAK6hL,gBAC1FljL,SAAS4C,IACxB,GAAMA,KAAOvB,KAAK6hL,YAEX,CACL,MAAM72H,OAAiBhrD,KAAK6hL,YAAYtgL,GAAgBvB,KAAK6hL,YAAYtgL,GAAO;AAChFvB,KAAK0/K,aAAan/F,aAAah/E,EAAKypD,EACtC,MAJEhrD,KAAK0/K,aAAaz1E,gBAAgB1oG,EAIpC,GAGN,CAIA8/K,yBACE,IAAI37K,EAAI4P,EAAIoT,EAAIC;AACX3oB,KAAKugL,YAGoC,QAA7CjrK,GAAM5P,EAAK1F,KAAKugL,WAAWuB,wBAA0BxsK,GAAyBA,EAAGrT,KAAKyD,EAAI1F,KAAK+E,OAC5F/E,KAAK4iL,cACsC,QAA5Cj6J,GAAMD,EAAK1oB,KAAKugL,WAAWwB,uBAAyBp5J,GAAyBA,EAAG1mB,KAAKymB,EAAI1oB,KAAK4iL,YAAYZ,SAAUhiL,KAAK4iL,YAAYX,oBAE1I,CACAjsF,oBACEh2F,KAAK0vI,oBAAsBvyH,QAAQ,IAAInd,KAAKgtD,GAAG2mB,UAAU5tE,MAAMinD,GAAmB,sBAAZA,EAAG6pC,QACzE72F,KAAK2vI,qBAAuBxyH,QAAQ,IAAInd,KAAKgtD,GAAG2mB,UAAU5tE,MAAMinD,GAAmB,uBAAZA,EAAG6pC,QAC1E72F,KAAKo+E,iBAAmBwqB,EAAKznB,sBAAsBnhF,KAAKgtD,IAAKq0B,IAC3DrhF,KAAKqhF,eAAiBA,CAAc,IAEtCrhF,KAAKy/K,uBACLz/K,KAAKqiH,oBAAoBriH,KAAKwiC,cAC9BxiC,KAAK2hL,yBACL3hL,KAAKqhL,wBACP,CACAjlD,mBACEp8H,KAAKyiL,mBAAmBlmH,KAAK,CAAErhC,MAAOl7B,KAAK4iL,aAC7C,CACAV,sBACEliL,KAAK2hL,yBACL3hL,KAAKqhL,wBACP,CACAvjE,uBACE,IAAIp4G;AAC6B,QAAhCA,EAAK1F,KAAKo+E,4BAA8B14E,GAAyBA,EAAG6sB,YACvE,CACA6jE,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,oBAAqB0nB,OAAQA,KAChHt+G,KAAKw8H,UAAU,EACd1lC,QAASA,KACV92F,KAAK09J,YACJr/C,QAASA,KACVr+G,KAAK09J,YACJt/C,UAAYl+G,IACbF,KAAK4/K,cAAc1/K,IAClBkjL,UAAYljL,IACbF,KAAKkjL,wBAAwBhjL,KAC1BwT,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,sBAAwB8U,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4Cq1F,MAAOsrC,EAAW/yD,WAAW,wBAAyB,CAC5N,wBAAyBnvE,KAAK0vI,oBAC9B,yBAA0B1vI,KAAK2vI,wBAC3Bj8H,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAA+CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAS2/G,aAAcA,IAAMv+G,KAAKy/K,yBAA2Bz/K,KAAK0/K,cAAgBhsK,EAAM0hB,EAAE,QAAS32B,OAAOkD,OAAO,CAAEJ,IAAK,2CAA4CyhI,KAAM,eAAgBspB,IAAMpxH,GAAUl7B,KAAK4iL,YAAc1nJ,EAAO2sE,QAAU3nG,GAAMF,KAAK8iL,eAAe5iL,GAAIkiL,iBAAmBliL,GAAMF,KAAKijL,eAAe/iL,IAAMF,KAAK6hL,gBAAiBnuK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,uBACrjB,CACW0jL,4BACT,QACF,CACIt1H,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLy0B,QAAW,CAAC,wBACZh6F,aAAgB,CAAC,uBAErB;AAIF,OAFAy9I,EAAUruG,MA7NkB,m/XA8N5B+wC,GAA0B0gE,kBAAoBpD,EACvCt9D,EACR,CAzOA,GAq5iBS,IAAGzlF,KAAKs8H,EAAYvqH;AACtB,IAAK,kBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAzqiBlC,WACC,GAAI1lC,GAAiC,OAAOK;AAC5CL,GAAkC,EAClC9jH,OAAO2D,eAAewgH,GAAsB,aAAc,CAAE79G;AAC5D,MAAM2O,EAAQ25E,KACRub,EAAO3oB,IAGPqjG,EAAa,MACjB93J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKohF,mBAAsBC,IACzBrhF,KAAKqhF,eAAiBA,GAExBrhF,KAAK2hB,YACL3hB,KAAK4B,cACL5B,KAAK6uJ,WACL7uJ,KAAKujL,eACLvjL,KAAK6qD,YACL7qD,KAAKktB,gBACLltB,KAAKwjL,iBACLxjL,KAAKqhF,qBACP,CACA2U,oBACEh2F,KAAKo+E,iBAAmBwqB,EAAKznB,sBAAsBnhF,KAAKgtD,GAAIhtD,KAAKohF,mBACnE,CACAuhD,YAAYziI,GACNF,KAAK6qD,WACP3qD,EAAEg9E,iBACFh9E,EAAEonG,kBAEN,CACAlR,SACE,MAAMvrC,SAAEA,EAAQ83E,YAAEA,EAAWhhH,KAAEA,EAAI/f,OAAEA,EAAMy/E,eAAEA,EAAcwtE,IAAEA,EAAG3hI,SAAEA,GAAaltB,KACzEg/J,WAAUr9I,EAAkB,IAAM,SAClCs9I,EAA2B,MAAZD,EAAkB,CAAEr9I,OAAM/f,SAAQitJ,MAAK3hI,YAAa,CAAE29B;AAC3E,OAAOn3C,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,cAAeE,QAAS6rC,EAAavkB,UAAWukB,GAAejvH,EAAM0hB,EAAE4pI,EAASvgK,OAAOkD,OAAO,CAAEJ,IAAK,4CAA8C09J,EAAc59E,EAAgB,CAAE,gBAAiBx2B,EAAW,OAAS,KAAMwrF,SAAUxrF,EAAW,KAAO,OAASn3C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,8CACjX,CACAu8G,uBACE,IAAIp4G;AAC6B,QAAhCA,EAAK1F,KAAKo+E,4BAA8B14E,GAAyBA,EAAG6sB,YACvE,CACIy6B,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAsjL,EAAW1xG,MAxCW,2kJAyCtBgxC,GAAqB6gE,YAAcH,EAC5B1gE,EACR,CAjDA,GA0qiBS,IAAG1lF,KAAKs8H,EAAYvqH;AACtB,IAAK,kBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkB1yB,KAC3C,IAAGr4F,KAAKs8H,EAAYvqH;AACtB,IAAK,wBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAvydlC,WACC,GAAIpqB,GAAsC,OAAOS;AACjDT,GAAuC,EACvCp/H,OAAO2D,eAAek8H,GAA2B,aAAc,CAAEv5H;AACjE,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVyF,EAASL,IACT+rF,EAAYnqF,IACZkb,EAAUvjB,EAAcC,uBAGxBw5G,EAAkB,MACtBl4J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK28J,mBAAqBjpJ,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK48J,sBAAwBlpJ,EAAMo8E,YAAY9vF,KAAM,wBAAyB,GAC9EA,KAAK68J,uBAAyBnpJ,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKoS,KAAO,aACZpS,KAAKm7H,UACLn7H,KAAK+8J,gBACL/8J,KAAK0T,aACL1T,KAAK2jL,OAAS,UACd3jL,KAAKm9J,aACLn9J,KAAKi9J,uBAAyB7vE,EAAQ/f,+CACtCrtE,KAAKk9J,sBAAwB9vE,EAAQ9f,6CACvC,CACAs2G,gBACE5jL,KAAK6jL,kBACP,CAKAxmB,2BAA2B9oJ,GACzB,MAAMg/E,OAAEA,EAAM3xF,OAAEA,GAAW2S;AACL,UAAlBg/E,EAAOj+D,QACL1zB,EAAO8iC,QAAQqsC,EAAOC,uBAAyBhxE,KAAKgtD,IACtDhtD,KAAKs8J,SAGX,CAMAunB,mBACE,MAAMC,EAAgB9jL,KAAKgtD,GAAGn9B,cAAc29D,EAAQpjB,oBAAoB;AACxE,GAAI05G,EAEF,OADAA,EAAcl9I,UAAU7yB,OAAO,UAAW,QAClC/T,KAAK2jL,QACX,IAAK,UACHG,EAAcl9I,UAAUx/B,IAAI;AAC5B;AACF,IAAK,OACH08K,EAAcl9I,UAAUx/B,IAAI,QAIpC,CAOAk1J,QAAQgB,GACN,MAAMhgD,iBAAEA,GAAqBt9G,KAAK48J,sBAAsBrgG,KAAK,CAC3DwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,QAAS0vI,eAAgEA,EAAe1vI,SAAW5tB,KAAKgtD;AAY1G,OAVKswD,IACHt9G,KAAKm7H,UACL13H,iBACEzD,KAAK68J,uBAAuBtgG,KAAK,CAC/BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,OAAQ5tB,KAAKgtD,IACb,GACDhtD,KAAKk9J,wBAEH/6E,QAAQC,SACjB,CACAm7E,mBAAmBplI,EAAUq+B,GACvBr+B,IAAaq+B,IACXr+B,EACFn4B,KAAKw9J,oBAELx9J,KAAKy9J,sBAGX,CASAD,kBAAkBt5J,EAASs0E,GAazB,OAZIx4E,KAAKy8J,WACPz8J,KAAKy8J,UAAUn+E,SAAS9F,QAAyDA,EAAkB,CAAC,GAC/Fx4E,KAAKm9J,YACRn9J,KAAKm9J,eAGPn9J,KAAKy8J,UAAYA,EAAUnkF,2BAA2B,CACpDE,kBACAxrB,GAAIhtD,KAAKgtD,GACT9oD,YAGGi+E,QAAQC,SACjB,CAMAq7E,oBAAoB9+E,GAWlB,OAVI3+E,KAAKy8J,YACPz8J,KAAKy8J,UAAU1/E,WAAWt+E,OAAOkD,OAAO,CAAEq7E,eAAmB8B,oBAAsB4+B,GAAY,IAAIv7B,SAASC,IACtB,mBAAxEs7B,eAAkDA,EAAQggD,UACpEhgD,EAAQggD,WAERt7E,GACF,KACIzD,IACN3+E,KAAKy8J,kBAEAt6E,QAAQC,SACjB,CACAy7B,oBACE79G,KAAK8tK,yBAA2BrqK,iBAC9BzD,KAAK28J,mBAAmBpgG,KAAK,CAC3BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,OAETpS,KAAKm9J,WACPn9J,KAAKw9J,mBACP,GACCx9J,KAAKi9J,uBACV,CACAjnE,oBACEjlB,EAAOE,0BAA0BjxE,KAAKgtD,GACxC,CACA8wD,uBACE99G,KAAKy9J,sBACL75J,aAAa5D,KAAK8tK,yBACpB,CACA13E,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,oBAAqBK,KAAM,UAAYvjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cg9G,aAAcA,IAAMv+G,KAAK6jL,qBAC1N,CACI72H,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACL47E,OAAU,CAAC,iBACXxmB,UAAa,CAAC,sBAElB;AAIF,OAFAumB,EAAgB9xG,MA5JW,+5GA6J3B0sD,GAA0BylD,kBAAoBL,EACvCplD,EACR,CAxKA,GAwydS,IAAGphG,KAAKs8H,EAAYvqH;AACtB,IAAK,2BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA7ndlC,WACC,GAAInqB,GAAyC,OAAOS;AACpDT,GAA0C,EAC1Cr/H,OAAO2D,eAAem8H,GAA8B,aAAc,CAAEx5H;AACpE,MAAM2O,EAAQ25E,KACRD,EAAU9hB,IACVyF,EAASL,IACT+rF,EAAYnqF;AAClBrI,EAAcC;AACd,MAEM85G,EAAqB,MACzBx4J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK28J,mBAAqBjpJ,EAAMo8E,YAAY9vF,KAAM,qBAAsB,GACxEA,KAAK48J,sBAAwBlpJ,EAAMo8E,YAAY9vF,KAAM,wBAAyB,GAC9EA,KAAK68J,uBAAyBnpJ,EAAMo8E,YAAY9vF,KAAM,yBAA0B,GAChFA,KAAKoS,KAAO,gBACZpS,KAAKm7H,UACLn7H,KAAK+8J,gBACL/8J,KAAK0T,aACL1T,KAAKm9J,aACLn9J,KAAKi9J,uBAAyB7vE,EAAQ7f,kDACtCvtE,KAAKk9J,sBAAwB9vE,EAAQ5f,gDACvC,CAKA6vF,2BAA2B9oJ,GACzB,MAAMg/E,OAAEA,EAAM3xF,OAAEA,GAAW2S;AACL,UAAlBg/E,EAAOj+D,QACL1zB,EAAO8iC,QAAQqsC,EAAOC,uBAAyBhxE,KAAKgtD,IACtDhtD,KAAKs8J,SAGX,CAUAA,QAAQgB,GACN,MAAMhgD,iBAAEA,GAAqBt9G,KAAK48J,sBAAsBrgG,KAAK,CAC3DwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,QAAS0vI,eAAgEA,EAAe1vI,SAAW5tB,KAAKgtD;AAY1G,OAVKswD,IACHt9G,KAAKm7H,UACL13H,iBACEzD,KAAK68J,uBAAuBtgG,KAAK,CAC/BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,KACXwb,OAAQ5tB,KAAKgtD,IACb,GACDhtD,KAAKk9J,wBAEH/6E,QAAQC,SACjB,CACAm7E,mBAAmBplI,EAAUq+B,GACvBr+B,IAAaq+B,IACXr+B,EACFn4B,KAAKw9J,oBAELx9J,KAAKy9J,sBAGX,CASAD,kBAAkBt5J,EAASs0E,GAazB,OAZIx4E,KAAKy8J,WACPz8J,KAAKy8J,UAAUn+E,SAAS9F,QAAyDA,EAAkB,CAAC,GAC/Fx4E,KAAKm9J,YACRn9J,KAAKm9J,eAGPn9J,KAAKy8J,UAAYA,EAAUnkF,2BAA2B,CACpDtrB,GAAIhtD,KAAKgtD,GACT9oD,UACAs0E,oBAGG2J,QAAQC,SACjB,CAMAq7E,sBAA6C,IAAzB9+E,EAAiBr/E,UAAAC,OAAA,YAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC;AAWvC,OAVIU,KAAKy8J,YACPz8J,KAAKy8J,UAAU1/E,WAAWt+E,OAAOkD,OAAO,CAAEq7E,eAAmB8B,oBAAsB4+B,GAAY,IAAIv7B,SAASC,IACtB,mBAAxEs7B,eAAkDA,EAAQggD,UACpEhgD,EAAQggD,WAERt7E,GACF,KACIzD,IACN3+E,KAAKy8J,kBAEAt6E,QAAQC,SACjB,CACAy7B,oBACE79G,KAAK8tK,yBAA2BrqK,iBAC9BzD,KAAK28J,mBAAmBpgG,KAAK,CAC3BwU,OAAQ/wE,KAAKgtD,GACb56C,KAAMpS,KAAKoS,OAETpS,KAAKm9J,WACPn9J,KAAKw9J,mBACP,GACCx9J,KAAKi9J,uBACV,CACAjnE,oBACEjlB,EAAOE,0BAA0BjxE,KAAKgtD,GACxC,CACA8wD,uBACE99G,KAAKy9J,sBACL75J,aAAa5D,KAAK8tK,yBACpB,CACA13E,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,uBAAwBK,KAAM,UAAYvjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CACxJ,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,CACW+nG,sBACT,MAAO,CACLo1D,UAAa,CAAC,sBAElB;AAIF,OAFA6mB,EAAmBpyG,MAvIW,0jHAwI9B2sD,GAA6B0lD,qBAAuBD,EAC7CzlD,EACR,CAnJA,GA8ndS,IAAGrhG,KAAKs8H,EAAYvqH;AACtB,IAAK,wBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAx+clC,WACC,GAAIlqB,GAAuC,OAAOS;AAClDT,GAAwC,EACxCt/H,OAAO2D,eAAeo8H,GAA4B,aAAc,CAAEz5H;AAClE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBAGxBg6G,EAAmB,MACvB14J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKmkL,+BAAiCzwK,EAAMo8E,YAAY9vF,KAAM,iCAAkC,GAChGA,KAAKokL,2BAA6B1wK,EAAMo8E,YAAY9vF,KAAM,6BAA8B,GACxFA,KAAKqkL,mBACLrkL,KAAK6qD,YACL7qD,KAAKskL,kBACLtkL,KAAKukL,mBACLvkL,KAAKwkL,uBACLxkL,KAAKykL,gBACLzkL,KAAK0kL,sBACP,CAIAC,eAAezkL,GACbA,EAAEonG;AACF,MAAM/T,OAAEA,GAAWrzF;AACnBF,KAAKmkL,+BAA+B5nH,KAAKg3B,EAC3C,CAIAqxF,aAAa1kL,GACXA,EAAEonG;AACF,MAAM/T,OAAEA,GAAWrzF;AACnBF,KAAKokL,2BAA2B7nH,KAAKg3B,EACvC,CACA6C,SACE,MAAMyuF,EAAkCz3F,EAAQhjB,oBAAoB,+BAC9D06G,EAA6B13F,EAAQhjB,oBAAoB;AAC/D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,qBAAuB52F,KAAK0kL,iBAAmBhxK,EAAM0hB,EAAEyvJ,EAAiC,CAAEtjL,IAAK,2CAA4CwD,MAAO/E,KAAKykL,SAAUC,gBAAiB1kL,KAAK0kL,gBAAiB75H,SAAU7qD,KAAK6qD,UAAYn3C,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,kBAAmBi4F,KAAM,mBAAqB,oBAAqBnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,qBAAsBi4F,KAAM,sBAAwB72F,KAAKykL,WAAY/wK,EAAM0hB,EAAE0vJ,EAA4B,CAAEvjL,IAAK,2CAA4C8iL,YAAarkL,KAAKqkL,YAAax5H,SAAU7qD,KAAK6qD,SAAUy5H,WAAYtkL,KAAKskL,WAAYG,SAAUzkL,KAAKykL,SAAUF,YAAavkL,KAAKukL,YAAaC,gBAAiBxkL,KAAKwkL,iBAAmB9wK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,YAAai4F,KAAM,aAAe,QAASnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,eAAgBi4F,KAAM,gBAAkB72F,KAAKqkL,YAAa,OAAQrkL,KAAKskL,aACrmC,CACIt3H,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAkkL,EAAiBtyG,MAxCW,i1BAyC5B4sD,GAA2BumD,kBAAoBb,EACxC1lD,EACR,CAjDA,GAy+cS,IAAGthG,KAAKs8H,EAAYvqH;AACtB,IAAK,4BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAr7clC,WACC,GAAIjqB,GAA0C,OAAOS;AACrDT,GAA2C,EAC3Cv/H,OAAO2D,eAAeq8H,GAA+B,aAAc,CAAE15H;AACrE,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC;AA4E9B,OADAu0D,GAA8BumD,sBA1EF,MAC1Bx5J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAKilL,mCAAqCvxK,EAAMo8E,YAAY9vF,KAAM,qCAAsC,GACxGA,KAAKqkL,mBACLrkL,KAAK6qD,YACL7qD,KAAKskL,kBACLtkL,KAAKukL,mBACLvkL,KAAKwkL,uBACLxkL,KAAKykL,eACP,CACAS,0BAA0BhlL,GACxB,MAAMi5H,kBAAEA,GAAsBj5H,EAAEqzF;AAChCvzF,KAAKilL,mCAAmC1oH,KAAK,CAC3C4oH,KAAMhsD,EACNisD,SAAW,GAAEplL,KAAKqkL,cAClBI,SAAUzkL,KAAKykL,UAEnB,CACAY,aACE,QAAIrlL,KAAKwkL,iBAAkD,IAArBxkL,KAAKqkL,YACzC;AAEF,MAAMe,EAAWplL,KAAKqkL,YAAc;AACpCrkL,KAAKilL,mCAAmC1oH,KAAK,CAC3C4oH,KAAO,GAAEC,IACTA,SAAW,GAAEplL,KAAKqkL,cAClBI,SAAUzkL,KAAKykL,UAEnB,CACAa,aACE,QAAItlL,KAAKukL,aAAyBpnK,QAAQnd,KAAKskL,aAAetkL,KAAKqkL,cAAgBrkL,KAAKskL,WACtF;AAEF,MAAMiB,EAAWvlL,KAAKqkL,YAAc;AACpCrkL,KAAKilL,mCAAmC1oH,KAAK,CAC3C4oH,KAAO,GAAEI,IACTH,SAAW,GAAEplL,KAAKqkL,cAClBI,SAAUzkL,KAAKykL,UAEnB,CAOIe,eAGF,OAFuBxlL,KAAKskL,WAAa,GAEjB3jL,MAAMC,KAE5B,CAAErB,OAAQyN,KAAKqa,MAAMrnB,KAAKskL,WAHF,MAIxBhjL,MAAK2qB,EAAGhrB,IAJgB,IAITA,EAAI,KAA0BN,MAAMC,KAEnD,CAAErB,OAAQS,KAAKskL,aACfhjL,MAAK2qB,EAAGhrB,IAAMA,EAAI,GACtB,CACAm1F,SACE,MAAMqvF,EAAiBtoK,QAAQnd,KAAKskL,YAC9BE,EAAkBxkL,KAAKqkL,YAAc,GAAKrkL,KAAKwkL,gBAC/CD,EAAcvkL,KAAKqkL,YAAcrkL,KAAKskL,YAActkL,KAAKukL,YACzD/tF,EAAsBpJ,EAAQhjB,oBAAoB,iBAClDo3F,EAA8Bp0E,EAAQhjB,oBAAoB,0BAC1DuqG,EAA4BvnF,EAAQhjB,oBAAoB,wBACxD21F,EAAoB3yE,EAAQhjB,oBAAoB,eAChDmjG,EAAmBngF,EAAQhjB,oBAAoB,cAC/Cw4D,EAAyBx1C,EAAQhjB,oBAAoB;AAC3D,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,yBAA2BljF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4C4B,KAAM,QAAS0nD,SAAU7qD,KAAK6qD,WAAa25H,EAAiB1tF,QAASA,IAAM92F,KAAKqlL,cAAgB3xK,EAAM0hB,EAAEwtG,EAAwB,CAAErhI,IAAK,2CAA4Cs1F,KAAM,QAAUnjF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,yMAA2MmrI,GAAkB/xK,EAAM0hB,EAAEosI,EAA6B,CAAEjgK,IAAK,2CAA4CspD,SAAU7qD,KAAK6qD,SAAU,cAAkB,oBAAqB,aAAc,mBAAwBn3C,EAAM0hB,EAAEu/I,EAA2B,CAAEpzK,IAAK,2CAA4C4B,KAAM,QAAS0zF,KAAM,WAAanjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,aAAe,SAAU8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,YAAcnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,gBAAkBoB,KAAKqkL,YAAa,OAAQrkL,KAAKskL,cAAe5wK,EAAM0hB,EAAE2qI,EAAmB,CAAEx+J,IAAK,2CAA4Cs1F,KAAM,WAAa72F,KAAKwlL,SAASlkL,KAAKokL,GAAYhyK,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAM,WAAUmkL,IAAWj4H,SAAUztD,KAAKqkL,cAAgBqB,EAAS3gL,MAAQ,GAAE2gL,KAAaA,OAAahyK,EAAM0hB,EAAEohE,EAAqB,CAAEj1F,IAAK,2CAA4C4B,KAAM,QAAS0nD,SAAU7qD,KAAK6qD,WAAa05H,EAAaztF,QAASA,IAAM92F,KAAKslL,cAAgB5xK,EAAM0hB,EAAEwtG,EAAwB,CAAErhI,IAAK,2CAA4Cs1F,KAAM,QAAUnjF,EAAM0hB,EAAE,MAAO,CAAE7zB,IAAK,2CAA4CgpC,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C,YAAa,UAAW,YAAa,UAAW+4C,EAAG,2MACr5E,CACI0S,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,GAGKy+H,EACR,CAlFA,GAs7cS,IAAGvhG,KAAKs8H,EAAYvqH;AACtB,IAAK,kCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAj2clC,WACC,GAAIhqB,GAA+C,OAAOS;AAC1DT,GAAgD,EAChDx/H,OAAO2D,eAAes8H,GAAoC,aAAc,CAAE35H;AAC1E,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC;AA2B9B,OADAw0D,GAAmCinD,4BAzBF,MAC/Bn6J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK4lL,uCAAyClyK,EAAMo8E,YAAY9vF,KAAM,yCAA0C,GAChHA,KAAK6qD,YACL7qD,KAAK+E,aACL/E,KAAK0kL,sBACP,CACAmB,yBAAyB3lL,GACvB,MAAMi5H,kBAAEA,GAAsBj5H,EAAEqzF;AAChCvzF,KAAK4lL,uCAAuCrpH,KAAK,CAC/Cx3D,MAAOo0H,GAEX,CACA/iC,SACE,MAAMorE,EAA8Bp0E,EAAQhjB,oBAAoB,0BAC1DuqG,EAA4BvnF,EAAQhjB,oBAAoB,wBACxD21F,EAAoB3yE,EAAQhjB,oBAAoB,eAChDmjG,EAAmBngF,EAAQhjB,oBAAoB;AACrD,OAAO12D,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,+BAAiCljF,EAAM0hB,EAAEosI,EAA6B,CAAEjgK,IAAK,2CAA4C,cAAkB,oBAAqB,eAAgB,kBAAsBspD,SAAU7qD,KAAK6qD,UAAYn3C,EAAM0hB,EAAEu/I,EAA2B,CAAEpzK,IAAK,2CAA4C4B,KAAM,QAAS0zF,KAAM,WAAanjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,4CAA8CmS,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,mBAAqB,qBAAsB8U,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4Cs1F,KAAM,YAAcnjF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,sBAAwBoB,KAAK+E,SAAU2O,EAAM0hB,EAAE2qI,EAAmB,CAAEx+J,IAAK,2CAA4CwD,MAAO/E,KAAK+E,MAAO8xF,KAAM,WAAa72F,KAAK0kL,gBAAgB70K,MAAM,KAAKvO,KAAKo5C,GAAMhnC,EAAM0hB,EAAEm4I,EAAkB,CAAEhsK,IAAM,YAAWm5C,IAAK+S,SAAUztD,KAAK+E,QAAU21C,EAAG31C,MAAO21C,GAAKA,OACziC,CACIsS,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B,GAGK0+H,EACR,CAjCA,GAk2cS,IAAGxhG,KAAKs8H,EAAYvqH;AACtB,IAAK,kBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EA9zclC,WACC,GAAI/pB,GAAiC,OAAOS;AAC5CT,GAAkC,EAClCz/H,OAAO2D,eAAeu8H,GAAsB,aAAc,CAAE55H;AAC5D,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBAGxB47G,EAAa,MACjBt6J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,GAC7B3vF,KAAK8nG,QAAU,SACf9nG,KAAKmD,KAAO,SACZnD,KAAKygI,aACLzgI,KAAKs/G,cACP,CACAymE,kBACE,MAAMxpB,EAAqBnvE,EAAQhjB,oBAAoB;AACvD,MAAqB,WAAdpqE,KAAKmD,KAAoBuQ,EAAM0hB,EAAEmnI,EAAoB,KAAM7oJ,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,SAAU,CAAEqtG,GAAI,IAAKC,GAAI,IAAKl6H,EAAG,QAAWkL,EAAM0hB,EAAEmnI,EAAoB,KAAM7oJ,EAAM0hB,EAAE,MAAO,CAAEmV,MAAO,KAAMC,OAAQ,KAAMizF,QAAS,YAAaC,MAAO,8BAAgChqH,EAAM0hB,EAAE,SAAU,CAAEqtG,GAAI,IAAKC,GAAI,IAAKl6H,EAAG,OACrZ,CACA4tF,SACE,OAAO1iF,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,eAAiBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,2CAA4C3C,KAAM,QAAUoB,KAAKygI,WAAazgI,KAAK+lL,mBAAoBryK,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAC7P;AAIF,OAFAukL,EAAWl0G,MAlBW,mgJAmBtB+sD,GAAqBqnD,YAAcF,EAC5BnnD,EACR,CA3BA,GA+zcS,IAAGzhG,KAAKs8H,EAAYvqH;AACtB,IAAK,qBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAjyclC,WACC,GAAI9pB,GAAoC,OAAOS;AAC/CT,GAAqC,EACrC1/H,OAAO2D,eAAew8H,GAAyB,aAAc,CAAE75H;AAC/D,MAAM2O,EAAQ25E,KACRD,EAAUnjB,EAAcC,uBAGxB+7G,EAAU,MACdz6J,YAAYmkE,GACVj8E,EAAMk8E,iBAAiB5vF,KAAM2vF,EAC/B,CAIAu2F,sBACE,MAAMrvF,EAAO72F,KAAKgtD,GAAGn9B,cAAc;AACnC,IAAIs2J;AAEFA,EADEtvF,EACMA,EAAKpjB,mBAAmB7oE,QAAQoiD,GAAOA,EAAGo5H,YAAch5F,EAAQhjB,oBAAoB,iBAEpF,GAAG1oE,MAAMO,KAAKjC,KAAKgtD,GAAG5nB,iBAAiBgoD,EAAQhjB,oBAAoB,iBAEzE+7G,GACFA,EAAMxnL,SAASwmB,IACbA,EAAKm6F,cAAkB,GAG7B,CACAlpB,SAEE,OADAp2F,KAAKkmL,sBACExyK,EAAM0hB,EAAE1hB,EAAMijF,KAAM,CAAEp1F,IAAK,2CAA4Cq1F,MAAO,kBAAoBljF,EAAM0hB,EAAE,OAAQ,CAAE7zB,IAAK,6CAClI,CACIyrD,SACF,OAAOt5C,EAAM0jF,WAAWp3F,KAC1B;AAIF,OAFAimL,EAAQr0G,MA/BiB,81CAgCzBgtD,GAAwBynD,eAAiBJ,EAClCrnD,EACR,CAxCA,GAkycS,IAAG1hG,KAAKs8H,EAAYvqH;AACtB,IAAK,8BACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkBvoB,KAC3C,IAAGxiG,KAAKs8H,EAAYvqH;AACtB,IAAK,mCACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAAkBhmB,KAC3C,IAAG/kG,KAAKs8H,EAAYvqH;AACtB,IAAK,oBACH,OAAOkzC,QAAQC,UAAUllD,iBACvB,OAAuB+qH,EAvzblC,WACC,GAAI/kB,GAAmC,OAAOM;AAC9CN,GAAoC;AACpC,IAAIa,EAAYtlI,OAAO2D,eACnB8hI,EAAsBzlI,OAAOg5E,sBAC7B0sD,EAAe1lI,OAAOsD,UAAUC,eAChCoiI,EAAe3lI,OAAOsD,UAAUypH,qBAChC6Y,EAAkBA,CAACC,EAAK/iI,EAAKwD,IAAUxD,KAAO+iI,EAAMP,EAAUO,EAAK/iI,EAAK,CAAEioE,cAAkBlnE,gBAAoBi1E,YAAgBxyE,UAAWu/H,EAAI/iI,GAAOwD,EACtJw/H,EAAiBA,CAACt1H,EAAGC,KACvB,IAAK,IAAIs1H,KAAQt1H,IAAMA,EAAI,CAAC,GACtBi1H,EAAaliI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAC/B,GAAIN,EACF,IAAK,IAAIM,KAAQN,EAAoBh1H,GAC/Bk1H,EAAaniI,KAAKiN,EAAGs1H,IACvBH,EAAgBp1H,EAAGu1H,EAAMt1H,EAAEs1H;AAEjC,OAAOv1H;AAETxQ,OAAO2D,eAAeohI,GAAwB,aAAc,CAAEz+H;AAC9D,MAAM2O,EAAQ25E,KACRi5F,EAA8B7nL,OAAOojF,OAAO,CAChD,GACA,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,KACpB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,OAEtB0kG,EAAgB9nL,OAAOojF,OAAO,CAClC2kG,IAAK,CACH,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,OAAQ,CACN,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,QAAS,CACP,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,KAAM,CACJ,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,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,KACA,KACA,KACA,KACA,QAGEC,EAAWnoL,OAAOojF,OAAO,CAC7BglG,QAAS,UACTC,aAAc,eACdC,MAAO,QACPC,KAAM,SAEFC,EAAmBxoL,OAAOojF,OAAO,CACrC2kG,IAAK,MACLC,OAAQ,SACRC,QAAS,UACTC,KAAM;AAER,MAAMO,EACJ17J,YAAY27J,GACVnnL,KAAKT,OAAS4nL,EACdnnL,KAAKgwB,QAAU,IAAInJ,WAAWsgK,GAC9BnnL,KAAKonL,KAAO,EACZpnL,KAAKqnL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,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CAAC,CAAC,GAAI,GAAI,KACV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI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ACL,EACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,EACA,EACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,EACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,EACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,KACAA,EACJ,CACA6pB,kBAAkB3kH,GAChB,GAAInD,KAAKwpL,YAAYjqL,QAAU4D,EAC7B,OAAOnD,KAAKwpL,YAAYrmL,EAAO;AAEjC,IAAIsmL,EAAazpL,KAAKwpL,YAAYxpL,KAAKwpL,YAAYjqL,OAAS;AAC5D,IAAK,IAAImqL,EAAa1pL,KAAKwpL,YAAYjqL,OAAQmqL,EAAavmL,EAAMumL,IAAc,CAC9E,IAAIC,EAAS,IAAI9iK,WAAW;AAC5B8iK,EAAO,GAAKD,EACZD,EAAazpL,KAAK4pL,QAAQH,EAAYE,GACtC3pL,KAAKwpL,YAAYxoL,KAAKyoL,EACxB,CACA,OAAOA,CACT,CACA3hE,eAAe17E,EAAOC,GACpB,IAAIu9I,EAAU,IAAI/iK,WAAWulB,EAAM7sC,OAAS8sC,EAAO9sC,OAAS;AAO5D,OANA6sC,EAAMztC,UAASkrL,EAAYC,KACzBz9I,EAAO1tC,UAASorL,EAAaC,KAC3B,IAAIC,EAAeH,EAAaE;AAChCJ,EAAQK,GAAgBjqL,KAAKkqL,gBAAgBL,EAAaE,GAAe,KAAOH,EAAQK,EAAa,GACrG,IAEGL,EAAQtoL,KAAKqd,GAAU3e,KAAKmqL,aAAaxrK,IAClD,CACAmpG,gBAAgBsiE,EAAUC,GACxB,IAAIC,EAAW,IAAIzjK,WAAWujK,EAAS7qL,OAAS8qL,EAAQ9qL,OAAS;AACjE,IAAK,IAAI0+F,EAAS,EAAGA,EAASmsF,EAAS7qL,OAAQ0+F,IAAUqsF,EAASrsF,GAAUmsF,EAASnsF;AACrF,IAAK,IAAIssF,EAAgB,EAAGA,EAAgBH,EAAS7qL,OAAQgrL,IAAiB,CAC5E,IAAIC,EAAaF,EAASC;AACP,IAAfC,IACFA,EAAaxqL,KAAKmqL,aAAaK,GAC/BH,EAAQ1rL,UAAS8rL,EAAOC,KACtB,IAAIC,EAAgBJ,EAAgBG;AACpCJ,EAASK,GAAiB3qL,KAAKkqL,gBAAgBM,EAAaC,GAAS,KAAOH,EAASK,EAAc,IAGzG,CACA,OAAOL,EAAS5oL,MAAM4oL,EAAS/qL,OAAS8qL,EAAQ9qL,OAAS,EAC3D,CACAuoH,oBAAoB7pB,GAClB,MAAO,CACL,EACA,EACA,EACA,GACA,EACA,GACA,GACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,IACA,EACA,IACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,GACA,GACA,IACA,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1E,EAAS,EAAGA,GAAU,EAAGA,IAChC,GAAIwxF,EAASxxF,KAAY31E,EAEvB,YADAtoB,KAAK+8B,KAAKwsJ,gBAAkBvpL,KAAKsvL,iBAAiBrxF,GAIxD,CACF,CACAyxF,SAAS/rK,EAAU4lK,GACjB,MAAO,CACL1C,QAAS,CACPL,IAAK,CACH,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,OAAQ,CACN,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,QAAS,CACP,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,KAAM,CACJ,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJG,aAAc,CACZN,IAAK,CACH,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,OAAQ,CACN,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,QAAS,CACP,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,KAAM,CACJ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJI,MAAO,CACLP,IAAK,CACH,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,OAAQ,CACN,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,QAAS,CACP,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,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,MAEFC,KAAM,CACJ,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,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,MAGJK,KAAM,CACJR,IAAK,CACH,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,OAAQ,CACN,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,QAAS,CACP,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFC,KAAM,CACJ,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,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,KACA,KACA,KACA,KACA,QAGJhjK,GAAU4lK,EACd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EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CAAC,CAAC,GAAI,GAAI,KACV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,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I,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,EAAG,GAAI,IACR,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,KAEV,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,KAEX,CACE,CAAC,GAAI,GAAI,IAC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kuV,QACL,OAAO;AAEX,IAAInxT,EAAO/8B,KAAKikK,OACZ38I,EAAStnB,KAAKsnB,SACd0qU,EAAWhyV,KAAK8Q,QAAQgL,WAAWwL,GAAUyV,GAAQ,MAAU,EAAI;AACvE,OAAOi1T,QAA2CA,EAAW,IACjE,EACOz2M,CACX,CAvyB4B;AA8yB5B,SAAS+yM,EAASiB,GACd,OAASA,GAAa,IAAMA,GAAa,KACpCA,GAAa,IAAMA,GAAa,EACzC,CA8BA,SAAS7B,GAAcrzS,GACnB,OAASA,GAAK,GAAUA,GAAK,IACnB,KAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,CACR,CAKA,SAASszS,GAAiBtzS,GACtB,OAASA,GAAK,IAAUA,GAAK,IACnB,KAANA,GACCA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACCA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACpBA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,KAAUA,GAAK,KACf,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,KACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QA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","ignoreList":[]}