{"version":3,"sources":["webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/qs/lib/index.js","webpack:///./node_modules/tinykeys/dist/tinykeys.module.js","webpack:///./node_modules/vanillajs-datepicker/js/lib/utils.js","webpack:///./node_modules/vanillajs-datepicker/js/lib/date.js","webpack:///./node_modules/vanillajs-datepicker/js/lib/date-format.js","webpack:///./node_modules/vanillajs-datepicker/js/lib/dom.js","webpack:///./node_modules/vanillajs-datepicker/js/lib/event.js","webpack:///./node_modules/vanillajs-datepicker/js/i18n/base-locales.js","webpack:///./node_modules/vanillajs-datepicker/js/options/defaultOptions.js","webpack:///./node_modules/vanillajs-datepicker/js/options/processOptions.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/templates/calendarWeeksTemplate.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/views/View.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/views/DaysView.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/views/YearsView.js","webpack:///./node_modules/vanillajs-datepicker/js/events/functions.js","webpack:///./node_modules/vanillajs-datepicker/js/events/pickerListeners.js","webpack:///./node_modules/vanillajs-datepicker/js/picker/Picker.js","webpack:///./node_modules/vanillajs-datepicker/js/events/inputFieldListeners.js","webpack:///./node_modules/vanillajs-datepicker/js/events/otherListeners.js","webpack:///./node_modules/vanillajs-datepicker/js/Datepicker.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/autocompleter/autocomplete.js","webpack:///./node_modules/@ambiki/combobox/dist/index.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/get-intrinsic/index.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/qs/lib/formats.js","webpack:///./node_modules/qs/lib/utils.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./node_modules/qs/lib/stringify.js","webpack:///./node_modules/side-channel/index.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/call-bind/callBound.js","webpack:///./node_modules/call-bind/index.js","webpack:///./node_modules/object-inspect/index.js","webpack:///./node_modules/qs/lib/parse.js","webpack:///./node_modules/lodash.debounce/index.js"],"names":["module","exports","webpackPolyfill","deprecate","paths","children","Object","defineProperty","enumerable","get","l","i","stringify","parse","formats","_typeof","obj","Symbol","iterator","constructor","prototype","t","e","navigator","test","platform","n","getModifierState","r","trim","split","map","pop","o","u","timeout","a","keys","f","Map","c","KeyboardEvent","forEach","toUpperCase","key","code","find","includes","delete","length","set","slice","clearTimeout","setTimeout","clear","bind","event","addEventListener","removeEventListener","hasProperty","prop","hasOwnProperty","call","lastItemOf","arr","pushUnique","_len","arguments","items","Array","_key","item","push","stringToArray","str","separator","isInRange","testVal","min","max","undefined","limitToRange","val","createTagRepeat","tagName","repeat","attributes","index","html","openTagSrc","reduce","src","attr","concat","next","optimizeTemplateHTML","replace","stripTime","timeValue","Date","setHours","today","dateValue","newDate","setFullYear","apply","addDays","date","amount","setDate","getDate","addMonths","monthsToSet","getMonth","expectedMonth","time","setMonth","addYears","getFullYear","dayDiff","day","from","dayOfTheWeekOf","baseDate","dayOfWeek","weekStart","baseDay","getDay","startOfYearPeriod","years","year","Math","floor","regularizeDate","timeSpan","useLastDate","reFormatTokens","reNonDateParts","knownFormats","parseFns","y","parseInt","m","month","locale","monthIndex","isNaN","NaN","monthName","toLowerCase","compareNames","name","startsWith","monthsShort","findIndex","months","normalizeMonth","getTime","d","formatFns","dd","padZero","D","daysShort","DD","days","mm","M","MM","yy","yyyy","num","toString","padStart","parseFormatString","format","Error","separators","parts","match","RegExp","partFormatters","token","partParserKeys","part","parser","dateStr","dateParts","dtParts","origDate","formatter","fn","toValue","_date","dateObj","toDisplay","document","createRange","parseHTML","createContextualFragment","getParent","el","parentElement","parentNode","ShadowRoot","host","isActiveElement","getRootNode","activeElement","hideElement","style","display","dataset","styleDisplay","showElement","emptyChildNodes","firstChild","removeChild","_toArray","isArray","_arrayWithHoles","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_nonIterableSpread","minLen","iter","len","arr2","listenerRegistry","WeakMap","_EventTarget$prototyp","EventTarget","registerListeners","keyObj","listeners","registered","listener","unregisterListeners","Event","composedPath","getComposedPath","node","parent","path","defaultView","this","target","findFromPath","criteria","currentTarget","_path","rest","findElementInEventPath","ev","selector","Element","matches","en","daysMin","titleFormat","autohide","beforeShowDay","beforeShowDecade","beforeShowMonth","beforeShowYear","calendarWeeks","clearBtn","dateDelimiter","datesDisabled","daysOfWeekDisabled","daysOfWeekHighlighted","defaultViewDate","disableTouchKeyboard","language","maxDate","maxNumberOfDates","maxView","minDate","nextArrow","orientation","pickLevel","prevArrow","showDaysOfWeek","showOnClick","showOnFocus","startView","title","todayBtn","todayBtnMode","todayHighlight","updateOnBlur","defaultLang","defaultFormat","defaultWeekStart","sanitizeDOW","dow","calcEndOfWeek","startOfWeek","validateDate","value","origValue","validateViewId","viewId","processOptions","options","datepicker","lang","inOpts","assign","config","locales","rangeSideIndex","_ref","origLocale","weekEnd","hasToDisplay","hasToValue","validFormatString","newPickLevel","minDt","maxDt","defaultMinDt","dates","dt","viewDate","wkStart","Number","multidate","String","newMaxView","newStartView","childNodes","x","class","_defineProperties","props","descriptor","configurable","writable","View","picker","instance","Constructor","_classCallCheck","element","selected","init","protoProps","staticProps","isMinView","id","setOptions","updateFocus","updateSelection","current","result","beforeShow","enabled","classes","classList","add","disabled","_el$classList","extraClasses","content","newChildNodes","DocumentFragment","appendChild","replaceChildNodes","_slicedToArray","_i","_s","_e","_arr","_n","_d","done","err","_iterableToArrayLimit","_get","Reflect","property","receiver","base","_superPropBase","desc","getOwnPropertyDescriptor","object","_getPrototypeOf","_setPrototypeOf","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","_View","subClass","superClass","create","_inherits","DaysView","_super","cellClass","onConstruction","inner","grid","lastChild","updateDOW","_this","dayNames","switchLabelFormat","weeksElem","weeks","insertBefore","textContent","className","viewYear","viewMonth","firstOfMonth","start","first","last","focused","_this$picker$datepick","rangepicker","range","_this2","switchLabel","setViewSwitchLabel","setPrevBtnDisabled","setNextBtnDisabled","thuOfTheWeek","firstThu","round","getWeek","_this2$range","rangeStart","rangeEnd","performBeforeHook","_this3","_ref2","querySelectorAll","remove","computeMonthRange","thisYear","_range","_range$","startY","startM","_range$2","endY","endM","MonthsView","ix","monthNames","minYear","minMonth","minDateObj","maxYear","maxMonth","maxDateObj","yrOutOfRange","isMinYear","isMaxYear","_range2","toTitleCase","word","ch","YearsView","navStep","step","beforeShowOption","triggerDatepickerEvent","type","detail","currentView","dispatchEvent","CustomEvent","goToPrevOrNext","direction","newViewDate","_datepicker$config","_datepicker$picker","changeFocus","render","switchView","changeView","unfocus","update","revert","refresh","hide","goToSelectedMonthOrYear","selection","onClickTodayBtn","currentDate","onClickClearBtn","onClickViewSwitch","onClickPrevBtn","onClickNextBtn","onClickView","contains","_datepicker$picker$cu","onMousedownPicker","preventDefault","orientClasses","toPx","processPickerOptions","controls","prevBtn","cloneNode","nextBtn","_picker$datepicker$co","computeResetViewDate","setViewDate","oldViewDate","_picker$currentView","getTextDirection","window","getComputedStyle","findScrollParents","body","overflow","Picker","template","buttonClass","_element$firstChild$c","header","main","footer","firstElementChild","_header$lastElementCh","lastElementChild","viewSwitch","_footer$firstChild$ch","elementClass","inline","views","container","inputField","after","view","active","inputDirection","dir","removeAttribute","visiblity","place","blur","exitEditMode","_this$element","offsetParent","_this$datepicker2","_this$element$getBoun","getBoundingClientRect","calendarWidth","width","calendarHeight","height","_inputField$getBoundi","inputLeft","left","inputTop","top","inputRight","right","inputBottom","bottom","inputWidth","inputHeight","_config$orientation","orientX","orientY","offsetParentRect","scrollLeft","scrollTop","scrollX","scrollY","scrollParent","scrollAreaLeft","scrollAreaTop","_document$documentEle","documentElement","scrollAreaRight","clientWidth","scrollAreaBottom","clientHeight","scrollParentRect","adjustment","values","labelText","oldView","newView","_renderMethod","replaceChild","quickRender","renderMethod","findNextAvailableOne","addFn","increase","testFn","moveByArrowKey","vertical","ctrlKey","metaKey","onKeydown","editMode","shiftKey","enterEditMode","show","onFocus","_showing","onMousedown","_active","_clicking","onClickInput","onPaste","clipboardData","types","onClickOutside","pickerElem","stringifyDates","join","processInputDates","inputDates","origDates","newDates","filter","refreshUI","mode","_setDate","Datepicker","initialDates","HTMLElement","querySelector","inputs","indexOf","datepickers","_options","inputDateValues","onMousedownDocument","newOptions","focus","detach","callback","args","opts","lastArg","forceRender","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","called","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","nodeType","css","ownerDocument","getParentNode","nodeName","getScrollParent","_getStyleComputedProp","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","end","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","modifier","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","defineProperties","_extends","source","getClientRect","offsets","sizes","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","sort","b","filteredAreas","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","modifiers","data","ends","cur","console","warn","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","prefix","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","isNumeric","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","index2","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Defaults","Popper","requestAnimationFrame","jquery","Utils","global","PopperUtils","factory","settings","debounceTimer","doc","createElement","containerStyle","mobileFirefox","debounceWaitMs","preventSubmit","disableAutoSelect","keyUpEventName","inputValue","keypressCounter","minLength","input","clearDebounceTimer","containerDisplayed","currentValue","itemElement","label","renderGroup","groupName","groupDiv","fragment","createDocumentFragment","prevGroup","group","div","onSelect","stopPropagation","emptyMsg","empty","inputRect","maxHeight","calc","customize","docEl","clientTop","clientLeft","pageYOffset","pageXOffset","updatePosition","elements","getElementsByClassName","previous","previousElementSibling","offsetTop","selectBottom","containerBottom","updateScroll","updateIfDisplayed","resizeEventHandler","scrollEventHandler","keyupEventHandler","keyCode","which","ignore_1","keysToIgnore","startFetch","keydownEventHandler","containerIsDisplayed","selectPrev","selectNext","focusEventHandler","trigger","savedKeypressCounter","inputText","cursorPos","selectionStart","fetch","blurEventHandler","evt","_createForOfIteratorHelper","allowArrayLike","it","F","s","normalCompletion","didErr","_e2","return","random","h","_ref$isMultiple","isMultiple","list","isMouseMoving","onClick","onListMouseOver","onListMouseMove","setInitialAttributesOnOptions","clearActiveOption","altKey","click","move","selectOption","bubbles","setActive","scroll","visibleOptions","activeOption","getAttribute","_step","_iterator","_ref2$scroll","_step2","_iterator2","scrollIntoView","block","_step3","_iterator3","_step4","_iterator4","hasAttribute","closest","hidden","HTMLInputElement","_typeof2","adapters","logger","WebSocket","log","_adapters$logger","messages","now","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stop","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","_constructor$pollInte","pollInterval","interval","multiplier","number","clamp","connectionIsStale","staleThreshold","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","open","subscriptions","monitor","disconnected","send","webSocket","JSON","isActive","getState","uninstallEventHandlers","url","installEventHandlers","close","allowReconnect","error","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","states","readyState","eventName","events","handler","message","_JSON$parse","identifier","reason","reconnect","reload","notify","reject","notifyAll","willAttemptReconnect","extend","properties","Subscription","params","mixin","perform","action","command","unsubscribe","Subscriptions","channelName","channel","subscription","ensureActiveConnection","sendCommand","forget","findAll","callbackName","_len2","_key2","Consumer","_url","connect","createWebSocketURL","href","getConfig","head","createConsumer","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","fire","createEvent","initCustomEvent","cancelable","defaultPrevented","stopEverything","stopImmediatePropagation","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","text","xml","json","script","ajax","response","responseText","getResponseHeader","status","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","location","dataType","accept","crossDomain","withCredentials","onreadystatechange","DONE","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","toArray","serializeElement","additionalParam","option","checked","encodeURIComponent","formElements","form","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","method","isRemote","handleRemote","button","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","$SyntaxError","SyntaxError","$Function","Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURI","decodeURIComponent","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","RangeError","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","splice","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","string","quote","subString","getBaseIntrinsic","allowMissing","alias","intrinsicName","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","implementation","percentTwenties","Format","formatters","RFC1738","RFC3986","has","hexTable","array","arrayToObject","plainObjects","acc","combine","compact","queue","refs","j","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","escape","$0","out","charCodeAt","isBuffer","isRegExp","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","Turbolinks","supported","history","pushState","visit","controller","clearCache","setProgressBarDelay","copyObject","ELEMENT_NODE","defer","throttle","dispatch","initEvent","uuid","Location","absoluteURL","requestURL","anchor","wrap","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isPrefixedBy","isEqualTo","toCacheKey","toJSON","_t","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","cancel","abort","lengthComputable","loaded","total","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","onload","onerror","ontimeout","onabort","progress","requestFinished","ProgressBar","trickle","_t2","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","visible","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","setValue","opacity","trickleInterval","setInterval","clearInterval","BrowserAdapter","showProgressBar","_t3","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","_t4","History","onPageLoad","onPopState","started","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","outerHTML","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","clone","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","async","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","_t5","_t6","ErrorRenderer","newHead","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","htmlElement","getSnapshot","snapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","_t7","scrollToElement","scrollToPosition","scrollTo","scrollPositionChanged","SnapshotCache","size","snapshots","read","touch","put","write","unshift","Visit","performScroll","_t8","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","_t9","Controller","clickBubbled","clickCaptured","scrollManager","startHistory","disable","stopHistory","cache","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","nodeIsVisitable","currentScript","asyncGeneratorStep","_next","_throw","arg","info","_defineProperty","_e3","_createClass","EventListener","eventTarget","eventOptions","unorderedBindings","binding","extendedEvent","_stopImmediatePropagation","immediatePropagationStopped","extendEvent","bindings","handleEvent","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","eventListeners","eventListener","fetchEventListenerForBinding","bindingConnected","clearEventListeners","bindingDisconnected","clearEventListenersForBinding","handleError","hasBindings","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","defaultActionDescriptorFilters","prevent","_ref3","descriptorPattern","parseEventTarget","eventTargetName","camelize","_","char","namespaceCamelize","capitalize","dasherize","Action","schema","defaultEventNames","getDefaultEventNameForElement","methodName","keyFilter","eventFilter","filteres","_modifiers$map2","ctrl","alt","standardFilter","keyMappings","pattern","_i2","_Array$from","_ref5","typecast","descriptorString","details","select","textarea","o_O","Binding","context","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","actionDescriptorFilters","passes","_i3","_Object$entries","entries","_ref7","actionEvent","logDebugActivity","isFilterTarget","scope","containsElement","ElementObserver","mutationObserverInit","childList","subtree","mutationObserver","MutationObserver","mutations","processMutations","observe","takeRecords","matchElementsInTree","_i4","_Array$from2","removeElement","_i5","_Array$from3","_element","addElement","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","_i6","_Array$from4","elementFromNode","processTree","_i7","_Array$from5","elementIsActive","tree","processor","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","pause","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","_add","del","prune","Multimap","valuesByKey","_ref9","_ref10","_ref11","_ref12","SelectorObserver","matchesByElement","selectorMatchElement","selectorMatched","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","_this4","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","_step5","_iterator5","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","_oldValue","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","getValuesForKey","tokens","_this5","tokenMatched","_this6","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_ref13","_ref14","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","_this7","forToken","connectAction","disconnectAction","ValueObserver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","hasValue","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_step6","_iterator6","valueDescriptors","_ref16","rawValue","rawOldValue","changedMethodName","changedMethod","reader","_this8","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref17","connectTarget","_ref18","disconnectTarget","_a","_this9","targetConnected","_this10","targetDisconnected","_step7","_iterator7","_step8","_iterator8","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","_this11","outletDefinitions","outletName","observer","dependentContexts","disconnectAllOutlets","_selector","_ref19","outlet","getOutlet","connectOutlet","_ref20","getOutletFromMap","disconnectOutlet","_ref21","hasOutlet","controllerAttribute","_this12","outletConnected","_this13","outletDisconnected","_step9","_iterator9","_step10","_iterator10","_step11","_iterator11","outlets","getSelectorForOutletName","dependencies","router","modules","controllerConstructor","outletDependencies","getKeysForValue","identifiers","dependentControllerIdentifiers","contexts","getControllerForElementAndIdentifier","Context","_this14","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","invokeControllerMethod","bless","shadowConstructor","shadowProperties","getOwnKeys","shadowingDescriptor","getShadowedDescriptor","getShadowProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","_constructor","_super2","Module","blessDefinition","contextsByScope","connectedContexts","fetchContextForScope","ClassMap","getDataKey","getAll","getAttributeNameForKey","DataMap","Guide","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_this15","targetNames","_key3","findTarget","findLegacyTarget","_this16","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","_this17","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_this18","_len4","outletNames","_key5","findOutlet","_this19","_len5","_key6","findAllOutlets","outletAttributeForScope","_this20","queryElements","matchesElement","_this21","Scope","_this22","controllerSelector","documentScope","isDocumentScope","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","unloadIdentifier","connectModule","afterLoad","disconnectModule","connectContextForScope","disconnectContextForScope","defaultSchema","enter","tab","esc","space","up","down","home","objectFromEntries","memo","_ref22","_ref23","k","Application","_this23","debug","logFormattedMessage","_start","mark","_callee","_context","prev","load","_this24","_len6","_key7","definitions","shouldLoad","loadDefinition","_this25","_len7","_key8","getContextForElementAndIdentifier","groupCollapsed","groupEnd","parseValueDefinitionPair","_ref28","payload","_ref29","typeDefinition","typeFromObject","parseValueTypeConstant","typeObject","defaultValueType","parseValueTypeDefault","default","propertyPath","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","boolean","writeJSON","_ref30","_ref30$target","_ref30$detail","_ref30$prefix","_ref30$bubbles","_ref30$cancelable","_identifier","_application","blessings","classDefinition","_ref24","getAttributeName","targetDefinition","_ref26","valueDefinitionPairs","propertyDescriptorMap","_this27","valueDefinitionPair","valueDescriptor","_ref27","propertiesForValueDefinitionPair","outletDefinition","camelizedName","_ref25","outletController","_this26","getSideChannel","utils","arrayPrefixGenerators","brackets","comma","indices","pushToArray","valueOrArray","toISO","toISOString","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","sentinel","generateArrayPrefix","sideChannel","tmpSc","findFlag","pos","keyValue","valuesArray","valuesJoined","objKeys","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","GetIntrinsic","callBound","inspect","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","assert","objects","listGet","listHas","listSet","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","ERROR_MESSAGE","toStr","funcType","that","binder","boundLength","boundArgs","Empty","callBind","$indexOf","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","func","applyBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","Infinity","sepRegex","int","intStr","dec","inspectCustom","custom","inspectSymbol","isSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","attrs","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","protoTag","stringTag","tag","remaining","trailer","lowbyte","lineJoiner","isArr","symMap","allowSparse","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","exec","chain","leaf","root","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","nativeMax","nativeMin","isObject","isObjectLike","toNumber","other","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","flush"],"mappings":";2EAAAA,EAAOC,QAAU,SAAUD,GAsBzB,OArBKA,EAAOE,kBACVF,EAAOG,UAAY,aAEnBH,EAAOI,MAAQ,GAEVJ,EAAOK,WAAUL,EAAOK,SAAW,IACxCC,OAAOC,eAAeP,EAAQ,SAAU,CACtCQ,YAAY,EACZC,IAAK,WACH,OAAOT,EAAOU,KAGlBJ,OAAOC,eAAeP,EAAQ,KAAM,CAClCQ,YAAY,EACZC,IAAK,WACH,OAAOT,EAAOW,KAGlBX,EAAOE,gBAAkB,GAGpBF,I,iCCpBT,IAAIY,EAAY,EAAQ,KAEpBC,EAAQ,EAAQ,KAEhBC,EAAU,EAAQ,KAEtBd,EAAOC,QAAU,CACfa,QAASA,EACTD,MAAOA,EACPD,UAAWA,I,iCCXb,SAASG,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAAzU,kCAEA,IAAIK,EAAI,CAAC,QAAS,OAAQ,MAAO,WAC7BC,EAAI,WAAkC,qBAAdC,UAA4B,YAAcR,EAAQQ,aAAe,uBAAuBC,KAAKD,UAAUE,UAAY,OAAS,UAExJ,SAASC,EAAEL,EAAGC,GACZ,MAAO,mBAAqBD,EAAEM,kBAAoBN,EAAEM,iBAAiBL,GAGvE,SAASM,EAAEP,GACT,OAAOA,EAAEQ,OAAOC,MAAM,KAAKC,KAAI,SAAUV,GACvC,IAAIK,EAAIL,EAAES,MAAM,QACZF,EAAIF,EAAEM,MACV,MAAO,CAACN,EAAIA,EAAEK,KAAI,SAAUV,GAC1B,MAAO,SAAWA,EAAIC,EAAID,KACxBO,MAIR,SAASK,EAAEX,EAAGW,GACZ,IAAItB,OACJ,IAAWsB,IAAMA,EAAI,IACrB,IAAIC,EAAI,OAASvB,EAAIsB,EAAEE,SAAWxB,EAAI,IAClCyB,EAAI9B,OAAO+B,KAAKf,GAAGS,KAAI,SAAUV,GACnC,MAAO,CAACO,EAAEP,GAAIC,EAAED,OAEdiB,EAAI,IAAIC,IACRC,EAAI,KACR,OAAO,SAAUlB,GACfA,aAAamB,gBAAkBL,EAAEM,SAAQ,SAAUd,GACjD,IAAIK,EAAIL,EAAE,GACNjB,EAAIiB,EAAE,GACNM,EAAII,EAAE7B,IAAIwB,IAAMA,GACnB,SAAUX,EAAGM,GACZ,QAASA,EAAE,GAAGe,gBAAkBrB,EAAEsB,IAAID,eAAiBf,EAAE,KAAON,EAAEuB,MAAQjB,EAAE,GAAGkB,MAAK,SAAUzB,GAC5F,OAAQK,EAAEJ,EAAGD,OACTA,EAAEyB,MAAK,SAAUzB,GACrB,OAAQO,EAAE,GAAGmB,SAAS1B,IAAMO,EAAE,KAAOP,GAAKK,EAAEJ,EAAGD,OAJlD,CAMCC,EAAGY,EAAE,IAAMR,EAAEJ,EAAGA,EAAEsB,MAAQN,EAAEU,OAAOf,GAAKC,EAAEe,OAAS,EAAIX,EAAEY,IAAIjB,EAAGC,EAAEiB,MAAM,KAAOb,EAAEU,OAAOf,GAAItB,EAAEW,OAC9FkB,GAAKY,aAAaZ,GAAIA,EAAIa,WAAWf,EAAEgB,MAAMC,KAAKjB,GAAIJ,KAc/C,IAVf,SAAWb,EAAGC,EAAGI,GACf,IAAIE,OACJ,IAAWF,IAAMA,EAAI,IACrB,IAAIf,EAAI,OAASiB,EAAIF,EAAE8B,OAAS5B,EAAI,UAChCM,EAAID,EAAEX,EAAGI,GACb,OAAOL,EAAEoC,iBAAiB9C,EAAGuB,GAAI,WAC/Bb,EAAEqC,oBAAoB/C,EAAGuB,M,iCClDtB,SAASyB,EAAY3C,EAAK4C,GAC/B,OAAOtD,OAAOc,UAAUyC,eAAeC,KAAK9C,EAAK4C,GAE5C,SAASG,EAAWC,GACzB,OAAOA,EAAIA,EAAIf,OAAS,GAGnB,SAASgB,EAAWD,GACzB,IAAK,IAAIE,EAAOC,UAAUlB,OAAQmB,EAAQ,IAAIC,MAAMH,EAAO,EAAIA,EAAO,EAAI,GAAII,EAAO,EAAGA,EAAOJ,EAAMI,IACnGF,EAAME,EAAO,GAAKH,UAAUG,GAU9B,OAPAF,EAAM1B,SAAQ,SAAU6B,GAClBP,EAAIjB,SAASwB,IAIjBP,EAAIQ,KAAKD,MAEJP,EAEF,SAASS,EAAcC,EAAKC,GAEjC,OAAOD,EAAMA,EAAI5C,MAAM6C,GAAa,GAE/B,SAASC,EAAUC,EAASC,EAAKC,GAGtC,YAFoBC,IAARF,GAAqBD,GAAWC,UACxBE,IAARD,GAAqBF,GAAWE,GAGvC,SAASE,EAAaC,EAAKJ,EAAKC,GACrC,OAAIG,EAAMJ,EACDA,EAGLI,EAAMH,EACDA,EAGFG,EAEF,SAASC,EAAgBC,EAASC,GACvC,IAAIC,EAAanB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GACjFoB,EAAQpB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,EAC5EqB,EAAOrB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC3EsB,EAAanF,OAAO+B,KAAKiD,GAAYI,QAAO,SAAUC,EAAKC,GAC7D,IAAIV,EAAMI,EAAWM,GAMrB,MAJmB,oBAARV,IACTA,EAAMA,EAAIK,IAGL,GAAGM,OAAOF,EAAK,KAAKE,OAAOD,EAAM,MAAOC,OAAOX,EAAK,OAC1DE,GACHI,GAAQ,IAAIK,OAAOJ,EAAY,OAAOI,OAAOT,EAAS,KACtD,IAAIU,EAAOP,EAAQ,EACnB,OAAOO,EAAOT,EAASF,EAAgBC,EAASC,EAAQC,EAAYQ,EAAMN,GAAQA,EAI7E,SAASO,EAAqBP,GACnC,OAAOA,EAAKQ,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KC7D7C,SAASC,EAAUC,GACxB,OAAO,IAAIC,KAAKD,GAAWE,SAAS,EAAG,EAAG,EAAG,GAExC,SAASC,IACd,OAAO,IAAIF,MAAOC,SAAS,EAAG,EAAG,EAAG,GAG/B,SAASE,IACd,OAAQnC,UAAUlB,QAChB,KAAK,EACH,OAAOoD,IAET,KAAK,EACH,OAAOJ,EAAU9B,UAAUlB,QAAU,OAAI+B,EAAYb,UAAU,IAInE,IAAIoC,EAAU,IAAIJ,KAAK,GAEvB,OADAI,EAAQC,YAAYC,MAAMF,EAASpC,WAC5BoC,EAAQH,SAAS,EAAG,EAAG,EAAG,GAE5B,SAASM,EAAQC,EAAMC,GAC5B,IAAIL,EAAU,IAAIJ,KAAKQ,GACvB,OAAOJ,EAAQM,QAAQN,EAAQO,UAAYF,GAKtC,SAASG,EAAUJ,EAAMC,GAG9B,IAAIL,EAAU,IAAIJ,KAAKQ,GACnBK,EAAcT,EAAQU,WAAaL,EACnCM,EAAgBF,EAAc,GAE9BE,EAAgB,IAClBA,GAAiB,IAGnB,IAAIC,EAAOZ,EAAQa,SAASJ,GAC5B,OAAOT,EAAQU,aAAeC,EAAgBX,EAAQM,QAAQ,GAAKM,EAE9D,SAASE,EAASV,EAAMC,GAG7B,IAAIL,EAAU,IAAIJ,KAAKQ,GACnBO,EAAgBX,EAAQU,WACxBE,EAAOZ,EAAQC,YAAYD,EAAQe,cAAgBV,GACvD,OAAyB,IAAlBM,GAA8C,IAAvBX,EAAQU,WAAmBV,EAAQM,QAAQ,GAAKM,EAGhF,SAASI,EAAQC,EAAKC,GACpB,OAAQD,EAAMC,EAAO,GAAK,EAIrB,SAASC,EAAeC,EAAUC,GACvC,IAAIC,EAAY1D,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,EAChF2D,EAAU,IAAI3B,KAAKwB,GAAUI,SACjC,OAAOrB,EAAQiB,EAAUJ,EAAQK,EAAWC,GAAaN,EAAQO,EAASD,IAYrE,SAASG,EAAkBrB,EAAMsB,GAEtC,IAAIC,EAAO,IAAI/B,KAAKQ,GAAMW,cAC1B,OAAOa,KAAKC,MAAMF,EAAOD,GAASA,EAG7B,SAASI,EAAe1B,EAAM2B,EAAUC,GAC7C,GAAiB,IAAbD,GAA+B,IAAbA,EACpB,OAAO3B,EAGT,IAAIJ,EAAU,IAAIJ,KAAKQ,GAQvB,OANiB,IAAb2B,EACFC,EAAchC,EAAQa,SAASb,EAAQU,WAAa,EAAG,GAAKV,EAAQM,QAAQ,GAE5E0B,EAAchC,EAAQC,YAAYD,EAAQe,cAAgB,EAAG,EAAG,GAAKf,EAAQa,SAAS,EAAG,GAGpFb,EAAQH,SAAS,EAAG,EAAG,EAAG,G,mCCvF5B,IAAIoC,EAAiB,6BAEjBC,EAAiB,sCAExBC,EAAe,GAEfC,EAAW,CACbC,EAAG,SAAWjC,EAAMuB,GAClB,OAAO,IAAI/B,KAAKQ,GAAMH,YAAYqC,SAASX,EAAM,MAEnDY,EAAG,SAAWnC,EAAMoC,EAAOC,GACzB,IAAIzC,EAAU,IAAIJ,KAAKQ,GACnBsC,EAAaJ,SAASE,EAAO,IAAM,EAEvC,GAAIG,MAAMD,GAAa,CACrB,IAAKF,EACH,OAAOI,IAGT,IAAIC,EAAYL,EAAMM,cAElBC,EAAe,SAAsBC,GACvC,OAAOA,EAAKF,cAAcG,WAAWJ,IAWvC,IANAH,EAAaD,EAAOS,YAAYC,UAAUJ,IAEzB,IACfL,EAAaD,EAAOW,OAAOD,UAAUJ,IAGnCL,EAAa,EACf,OAAOE,IAKX,OADA5C,EAAQa,SAAS6B,GACV1C,EAAQU,aAAe2C,EAAeX,GAAc1C,EAAQM,QAAQ,GAAKN,EAAQsD,WAE1FC,EAAG,SAAWnD,EAAMa,GAClB,OAAO,IAAIrB,KAAKQ,GAAME,QAAQgC,SAASrB,EAAK,OAI5CuC,EAAY,CACdD,EAAG,SAAWnD,GACZ,OAAOA,EAAKG,WAEdkD,GAAI,SAAYrD,GACd,OAAOsD,EAAQtD,EAAKG,UAAW,IAEjCoD,EAAG,SAAWvD,EAAMqC,GAClB,OAAOA,EAAOmB,UAAUxD,EAAKoB,WAE/BqC,GAAI,SAAYzD,EAAMqC,GACpB,OAAOA,EAAOqB,KAAK1D,EAAKoB,WAE1Be,EAAG,SAAWnC,GACZ,OAAOA,EAAKM,WAAa,GAE3BqD,GAAI,SAAY3D,GACd,OAAOsD,EAAQtD,EAAKM,WAAa,EAAG,IAEtCsD,EAAG,SAAW5D,EAAMqC,GAClB,OAAOA,EAAOS,YAAY9C,EAAKM,aAEjCuD,GAAI,SAAY7D,EAAMqC,GACpB,OAAOA,EAAOW,OAAOhD,EAAKM,aAE5B2B,EAAG,SAAWjC,GACZ,OAAOA,EAAKW,eAEdmD,GAAI,SAAY9D,GACd,OAAOsD,EAAQtD,EAAKW,cAAe,GAAGnE,OAAO,IAE/CuH,KAAM,SAAc/D,GAClB,OAAOsD,EAAQtD,EAAKW,cAAe,KAIvC,SAASsC,EAAeX,GACtB,OAAOA,GAAc,EAAIA,EAAa,GAAKW,EAAeX,EAAa,IAGzE,SAASgB,EAAQU,EAAK1H,GACpB,OAAO0H,EAAIC,WAAWC,SAAS5H,EAAQ,KAGzC,SAAS6H,EAAkBC,GACzB,GAAsB,kBAAXA,EACT,MAAM,IAAIC,MAAM,wBAGlB,GAAID,KAAUrC,EACZ,OAAOA,EAAaqC,GAItB,IAAIE,EAAaF,EAAOjJ,MAAM0G,GAC1B0C,EAAQH,EAAOI,MAAM,IAAIC,OAAO5C,EAAgB,MAEpD,GAA0B,IAAtByC,EAAWhI,SAAiBiI,EAC9B,MAAM,IAAIF,MAAM,wBAIlB,IAAIK,EAAiBH,EAAMnJ,KAAI,SAAUuJ,GACvC,OAAOvB,EAAUuB,MAIfC,EAAiBjL,OAAO+B,KAAKsG,GAAUjD,QAAO,SAAUrD,EAAMO,GAShE,OARYsI,EAAMpI,MAAK,SAAU0I,GAC/B,MAAmB,MAAZA,EAAK,IAAcA,EAAK,GAAGnC,gBAAkBzG,MAIpDP,EAAKmC,KAAK5B,GAGLP,IACN,IACH,OAAOqG,EAAaqC,GAAU,CAC5BU,OAAQ,SAAgBC,EAAS1C,GAC/B,IAAI2C,EAAYD,EAAQ5J,MAAM2G,GAAgB/C,QAAO,SAAUkG,EAASJ,EAAMjG,GAC5E,GAAIiG,EAAKvI,OAAS,GAAKiI,EAAM3F,GAAQ,CACnC,IAAI+F,EAAQJ,EAAM3F,GAAO,GAEX,MAAV+F,EACFM,EAAQ9C,EAAI0C,EACO,MAAVF,IACTM,EAAQN,GAASE,GAIrB,OAAOI,IACN,IAIH,OAAOL,EAAe7F,QAAO,SAAUmG,EAAUjJ,GAC/C,IAAI2D,EAAUoC,EAAS/F,GAAKiJ,EAAUF,EAAU/I,GAAMoG,GAEtD,OAAOE,MAAM3C,GAAWsF,EAAWtF,IAClCF,MAELyF,UAAW,SAAmBnF,EAAMqC,GAKlC,OAJcqC,EAAe3F,QAAO,SAAUhB,EAAKqH,EAAIxG,GACrD,OAAOb,EAAO,GAAGmB,OAAOoF,EAAW1F,IAAQM,OAAOkG,EAAGpF,EAAMqC,MAC1D,IAEejF,EAAWkH,KAK5B,SAAS,EAAUS,EAASX,EAAQ/B,GACzC,GAAI0C,aAAmBvF,MAA2B,kBAAZuF,EAAsB,CAC1D,IAAI/E,EAAOV,EAAUyF,GACrB,OAAOxC,MAAMvC,QAAQ3B,EAAY2B,EAGnC,GAAK+E,EAAL,CAIA,GAAgB,UAAZA,EACF,OAAOrF,IAGT,GAAI0E,GAAUA,EAAOiB,QAAS,CAC5B,IAAIC,EAAQlB,EAAOiB,QAAQN,EAASX,EAAQ/B,GAE5C,OAAOE,MAAM+C,QAASjH,EAAYiB,EAAUgG,GAG9C,OAAOnB,EAAkBC,GAAQU,OAAOC,EAAS1C,IAE5C,SAAS,EAAWrC,EAAMoE,EAAQ/B,GACvC,GAAIE,MAAMvC,KAAUA,GAAiB,IAATA,EAC1B,MAAO,GAGT,IAAIuF,EAA0B,kBAATvF,EAAoB,IAAIR,KAAKQ,GAAQA,EAE1D,OAAIoE,EAAOoB,UACFpB,EAAOoB,UAAUD,EAASnB,EAAQ/B,GAGpC8B,EAAkBC,GAAQe,UAAUI,EAASlD,GClMtD,IAAI,EAAQoD,SAASC,cACd,SAASC,EAAU9G,GACxB,OAAO,EAAM+G,yBAAyB/G,GAEjC,SAASgH,EAAUC,GACxB,OAAOA,EAAGC,gBAAkBD,EAAGE,sBAAsBC,WAAaH,EAAGE,WAAWE,UAAO7H,GAElF,SAAS8H,EAAgBL,GAC9B,OAAOA,EAAGM,cAAcC,gBAAkBP,EAMrC,SAASQ,EAAYR,GACD,SAArBA,EAAGS,MAAMC,UAKTV,EAAGS,MAAMC,UACXV,EAAGW,QAAQC,aAAeZ,EAAGS,MAAMC,SAGrCV,EAAGS,MAAMC,QAAU,QAEd,SAASG,EAAYb,GACD,SAArBA,EAAGS,MAAMC,UAITV,EAAGW,QAAQC,cAEbZ,EAAGS,MAAMC,QAAUV,EAAGW,QAAQC,oBACvBZ,EAAGW,QAAQC,cAElBZ,EAAGS,MAAMC,QAAU,IAGhB,SAASI,EAAgBd,GAC1BA,EAAGe,aACLf,EAAGgB,YAAYhB,EAAGe,YAClBD,EAAgBd,IC1CpB,SAASiB,EAAS1J,GAAO,OAIzB,SAAyBA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EAJ/B4J,CAAgB5J,IAAQ6J,EAAiB7J,IAAQ8J,EAA4B9J,IAE7G,WAA8B,MAAM,IAAI+J,UAAU,6IAFmEC,GAMrH,SAASC,EAAmBjK,GAAO,OAQnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOkK,EAAkBlK,GAR1CmK,CAAmBnK,IAAQ6J,EAAiB7J,IAAQ8J,EAA4B9J,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8EK,GAIlI,SAASN,EAA4B7L,EAAGoM,GAAU,GAAKpM,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOiM,EAAkBjM,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAiE,MAAnD,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAgB,QAAN7H,GAAqB,QAANA,EAAoB2C,MAAMoD,KAAKxF,GAAc,cAANP,GAAqB,2CAA2CF,KAAKE,GAAWwM,EAAkBjM,EAAGoM,QAAzG,GAE7S,SAASR,EAAiBS,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GAItJ,SAASJ,EAAkBlK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAEhL,IAAIC,EAAmB,IAAIC,QACvBC,EAAwBC,YAAYxN,UACpCqC,EAAmBkL,EAAsBlL,iBACzCC,EAAsBiL,EAAsBjL,oBAKzC,SAASmL,EAAkBC,EAAQC,GACxC,IAAIC,EAAaP,EAAiBhO,IAAIqO,GAEjCE,IACHA,EAAa,GACbP,EAAiBvL,IAAI4L,EAAQE,IAG/BD,EAAUrM,SAAQ,SAAUuM,GAC1BxL,EAAiBK,KAAK2C,MAAMhD,EAAkBwK,EAAmBgB,IACjED,EAAWxK,KAAKyK,MAGb,SAASC,EAAoBJ,GAClC,IAAIC,EAAYN,EAAiBhO,IAAIqO,GAEhCC,IAILA,EAAUrM,SAAQ,SAAUuM,GAC1BvL,EAAoBI,KAAK2C,MAAM/C,EAAqBuK,EAAmBgB,OAEzER,EAAiBzL,OAAO8L,IAI1B,IAAKK,MAAM/N,UAAUgO,aAAc,CACjC,IAAIC,EAAkB,SAASA,EAAgBC,GAC7C,IAEIC,EAFAC,EAAOrL,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAc/E,OAbAqL,EAAKhL,KAAK8K,GAGNA,EAAK3C,WACP4C,EAASD,EAAK3C,WACL2C,EAAKzC,KAEd0C,EAASD,EAAKzC,KACLyC,EAAKG,cAEdF,EAASD,EAAKG,aAGTF,EAASF,EAAgBE,EAAQC,GAAQA,GAGlDL,MAAM/N,UAAUgO,aAAe,WAC7B,OAAOC,EAAgBK,KAAKC,SAIhC,SAASC,EAAaJ,EAAMK,EAAUC,GACpC,IAAIC,EAAQrC,EAAS8B,GACjBF,EAAOS,EAAM,GACbC,EAAOD,EAAM5M,MAAM,GAEvB,OAAI0M,EAASP,GACJA,EAGLA,IAASQ,GAAkC,SAAjBR,EAAKlK,SAAsC,IAAhB4K,EAAK/M,OAKvD2M,EAAaI,EAAMH,EAAUC,QALpC,EASK,SAASG,EAAuBC,EAAIC,GACzC,IAAIN,EAA+B,oBAAbM,EAA0BA,EAAW,SAAU1D,GACnE,OAAOA,aAAc2D,SAAW3D,EAAG4D,QAAQF,IAE7C,OAAOP,EAAaM,EAAGd,eAAgBS,EAAUK,EAAGJ,eClG/C,IAAI,EAAU,CACnBQ,GAAI,CACFjG,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDoG,QAAS,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9C5G,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHF,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FpD,MAAO,QACP/C,MAAO,QACPkN,YAAa,SC2BF,EApCM,CACnBC,UAAU,EACVC,cAAe,KACfC,iBAAkB,KAClBC,gBAAiB,KACjBC,eAAgB,KAChBC,eAAe,EACfC,UAAU,EACVC,cAAe,IACfC,cAAe,GACfC,mBAAoB,GACpBC,sBAAuB,GACvBC,qBAAiBpM,EAEjBqM,sBAAsB,EACtBtG,OAAQ,aACRuG,SAAU,KACVC,QAAS,KACTC,iBAAkB,EAClBC,QAAS,EACTC,QAAS,KACTC,UAAW,OACXC,YAAa,OACbC,UAAW,EACXC,UAAW,OACXC,gBAAgB,EAChBC,aAAa,EACbC,aAAa,EACbC,UAAW,EACXC,MAAO,GACPC,UAAU,EACVC,aAAc,EACdC,gBAAgB,EAChBC,cAAc,EACd1K,UAAW,GC9BT2K,GAAc,EAAelB,SAC7BmB,GAAgB,EAAe1H,OAC/B2H,GAAmB,EAAe7K,UAEtC,SAAS8K,GAAYC,EAAKpL,GACxB,OAAOoL,EAAI3P,OAAS,GAAKuE,GAAO,GAAKA,EAAM,EAAIvD,EAAW2O,EAAKpL,GAAOoL,EAGxE,SAASC,GAAcC,GACrB,OAAQA,EAAc,GAAK,EAI7B,SAASC,GAAaC,EAAOjI,EAAQ/B,EAAQiK,GAC3C,IAAItM,EAAO,EAAUqM,EAAOjI,EAAQ/B,GACpC,YAAgBhE,IAAT2B,EAAqBA,EAAOsM,EAIrC,SAASC,GAAeF,EAAOC,GAC7B,IAAIlO,EAAMZ,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,EAC1EgP,EAAStK,SAASmK,EAAO,IAC7B,OAAOG,GAAU,GAAKA,GAAUpO,EAAMoO,EAASF,EAIlC,SAASG,GAAeC,EAASC,GAC9C,IAiBMC,EAjBFC,EAASlT,OAAOmT,OAAO,GAAIJ,GAC3BK,EAAS,GACTC,EAAUL,EAAWnS,YAAYwS,QACjCC,EAAiBN,EAAWM,eAE5BC,EAAOP,EAAWI,QAAU,GAC5B3I,EAAS8I,EAAK9I,OACduG,EAAWuC,EAAKvC,SAChBtI,EAAS6K,EAAK7K,OACduI,EAAUsC,EAAKtC,QACfE,EAAUoC,EAAKpC,QACfC,EAAUmC,EAAKnC,QACfG,EAAYgC,EAAKhC,UACjBK,EAAY2B,EAAK3B,UACjBrK,EAAYgM,EAAKhM,UAErB,GAAI2L,EAAOlC,WAGLkC,EAAOlC,WAAaA,IAClBqC,EAAQH,EAAOlC,UACjBiC,EAAOC,EAAOlC,cAMQtM,IAAlB2O,EAFJJ,EAAOC,EAAOlC,SAASxP,MAAM,KAAK,MAGhCyR,GAAO,WAKNC,EAAOlC,SAEViC,GAAM,CACRjC,EAAWoC,EAAOpC,SAAWiC,EAE7B,IAAIO,EAAa9K,GAAU2K,EAAQnB,IAEnCxJ,EAAS1I,OAAOmT,OAAO,CACrB1I,OAAQ0H,GACR5K,UAAW6K,IACViB,EAAQnB,KAEPlB,IAAakB,IACflS,OAAOmT,OAAOzK,EAAQ2K,EAAQrC,IAGhCoC,EAAO1K,OAASA,EAGZ+B,IAAW+I,EAAW/I,SACxBA,EAAS2I,EAAO3I,OAAS/B,EAAO+B,QAG9BlD,IAAciM,EAAWjM,YAC3BA,EAAY6L,EAAO7L,UAAYmB,EAAOnB,UACtC6L,EAAOK,QAAUlB,GAAc7J,EAAOnB,YAK5C,GAAI2L,EAAOzI,OAAQ,CACjB,IAAIiJ,EAAkD,oBAA5BR,EAAOzI,OAAOoB,UACpC8H,EAA8C,oBAA1BT,EAAOzI,OAAOiB,QAClCkI,EAAoB1L,EAAehH,KAAKgS,EAAOzI,SAE/CiJ,GAAgBC,GAAcC,KAChCnJ,EAAS2I,EAAO3I,OAASyI,EAAOzI,eAG3ByI,EAAOzI,OAIhB,IAAIoJ,EAAetC,OAEM7M,IAArBwO,EAAO3B,YACTsC,EAAejB,GAAeM,EAAO3B,UAAW,UACzC2B,EAAO3B,WAGZsC,IAAiBtC,IACfsC,EAAetC,SAGM7M,IAAnBwO,EAAO9B,UACT8B,EAAO9B,QAAUA,QAGI1M,IAAnBwO,EAAOjC,UACTiC,EAAOjC,QAAUA,IAKhBiC,EAAOvC,gBACVuC,EAAOvC,cAAgB,IAGzBY,EAAY6B,EAAO7B,UAAYsC,GAOjC,IAAIC,EAAQ1C,EACR2C,EAAQ9C,EAEZ,QAAuBvM,IAAnBwO,EAAO9B,QAAuB,CAChC,IAAI4C,EAAehO,EAAU,EAAG,EAAG,IACnC8N,EAA2B,OAAnBZ,EAAO9B,QAAmB4C,EAChCvB,GAAaS,EAAO9B,QAAS3G,EAAQ/B,EAAQoL,MAEjCE,IACZF,EAAQ/L,EAAe+L,EAAOvC,GAAW,WAGpC2B,EAAO9B,QAkChB,QA/BuB1M,IAAnBwO,EAAOjC,eAGKvM,KAFdqP,EAA2B,OAAnBb,EAAOjC,aAAmBvM,EAAY+N,GAAaS,EAAOjC,QAASxG,EAAQ/B,EAAQqL,MAGzFA,EAAQhM,EAAegM,EAAOxC,GAAW,WAGpC2B,EAAOjC,SAGZ8C,EAAQD,GACV1C,EAAUgC,EAAOhC,QAAU2C,EAC3B9C,EAAUmC,EAAOnC,QAAU6C,IAEvB1C,IAAY0C,IACd1C,EAAUgC,EAAOhC,QAAU0C,GAGzB7C,IAAY8C,IACd9C,EAAUmC,EAAOnC,QAAU8C,IAI3Bb,EAAOvC,gBACTyC,EAAOzC,cAAgBuC,EAAOvC,cAAcvL,QAAO,SAAU6O,EAAOC,GAClE,IAAI7N,EAAO,EAAU6N,EAAIzJ,EAAQ/B,GACjC,YAAgBhE,IAAT2B,EAAqB1C,EAAWsQ,EAAOlM,EAAe1B,EAAMkL,EAAW+B,IAAmBW,IAChG,WACIf,EAAOvC,oBAGejM,IAA3BwO,EAAOpC,gBAA+B,CACxC,IAAIqD,EAAW,EAAUjB,EAAOpC,gBAAiBrG,EAAQ/B,QAExChE,IAAbyP,IACFf,EAAOtC,gBAAkBqD,UAGpBjB,EAAOpC,gBAIhB,QAAyBpM,IAArBwO,EAAO3L,UAAyB,CAClC,IAAI6M,EAAUC,OAAOnB,EAAO3L,WAAa,EAEpCqB,MAAMwL,KACT7M,EAAY6L,EAAO7L,UAAY6M,EAC/BhB,EAAOK,QAAUlB,GAAc6B,WAG1BlB,EAAO3L,UAchB,GAXI2L,EAAOtC,qBACTwC,EAAOxC,mBAAqBsC,EAAOtC,mBAAmBxL,OAAOiN,GAAa,WACnEa,EAAOtC,oBAGZsC,EAAOrC,wBACTuC,EAAOvC,sBAAwBqC,EAAOrC,sBAAsBzL,OAAOiN,GAAa,WACzEa,EAAOrC,4BAIgBnM,IAA5BwO,EAAOhC,iBAAgC,CACzC,IAAIA,EAAmB3I,SAAS2K,EAAOhC,iBAAkB,IAErDA,GAAoB,IACtBkC,EAAOlC,iBAAmBA,EAC1BkC,EAAOkB,UAAiC,IAArBpD,UAGdgC,EAAOhC,iBAGZgC,EAAOxC,gBACT0C,EAAO1C,cAAgB6D,OAAOrB,EAAOxC,sBAC9BwC,EAAOxC,eAIhB,IAAI8D,EAAarD,OAEMzM,IAAnBwO,EAAO/B,UACTqD,EAAa5B,GAAeM,EAAO/B,QAASA,UACrC+B,EAAO/B,UAIhBqD,EAAajD,EAAYiD,EAAajD,EAAYiD,KAE/BrD,IACjBA,EAAUiC,EAAOjC,QAAUqD,GAG7B,IAAIC,EAAe7C,EAmBnB,QAjByBlN,IAArBwO,EAAOtB,YACT6C,EAAe7B,GAAeM,EAAOtB,UAAW6C,UACzCvB,EAAOtB,WAIZ6C,EAAelD,EACjBkD,EAAelD,EACNkD,EAAetD,IACxBsD,EAAetD,GAGbsD,IAAiB7C,IACnBwB,EAAOxB,UAAY6C,GAIjBvB,EAAO1B,UAAW,CACpB,IAAIA,EAAYxF,EAAUkH,EAAO1B,WAE7BA,EAAUkD,WAAW/R,OAAS,IAChCyQ,EAAO5B,UAAYA,EAAUkD,mBAGxBxB,EAAO1B,UAGhB,GAAI0B,EAAO7B,UAAW,CACpB,IAAIA,EAAYrF,EAAUkH,EAAO7B,WAE7BA,EAAUqD,WAAW/R,OAAS,IAChCyQ,EAAO/B,UAAYA,EAAUqD,mBAGxBxB,EAAO7B,UAShB,QALoC3M,IAAhCwO,EAAOnC,uBACTqC,EAAOrC,qBAAuB,iBAAkBjF,YAAcoH,EAAOnC,4BAC9DmC,EAAOnC,sBAGZmC,EAAO5B,YAAa,CACtB,IAAIA,EAAc4B,EAAO5B,YAAYvI,cAAcvH,MAAM,QACzD4R,EAAO9B,YAAc,CACnBqD,EAAGrD,EAAY9O,MAAK,SAAUmS,GAC5B,MAAa,SAANA,GAAsB,UAANA,MACnB,OACNrM,EAAGgJ,EAAY9O,MAAK,SAAU8F,GAC5B,MAAa,QAANA,GAAqB,WAANA,MAClB,eAED4K,EAAO5B,YAGhB,QAA4B5M,IAAxBwO,EAAOnB,aAA4B,CACrC,OAAQmB,EAAOnB,cACb,KAAK,EACL,KAAK,EACHqB,EAAOrB,aAAemB,EAAOnB,oBAG1BmB,EAAOnB,aAShB,OALA/R,OAAO+B,KAAKmR,GAAQ9Q,SAAQ,SAAUE,QAChBoC,IAAhBwO,EAAO5Q,IAAsBe,EAAY,EAAgBf,KAC3D8Q,EAAO9Q,GAAO4Q,EAAO5Q,OAGlB8Q,ECnUT,IACe,GADM3N,EAAqB,muBCG3B,GAHIA,EAAqB,mDAAuDF,OAAOV,EAAgB,OAAQ,EAAG,CAC/H+P,MAAO,QACL,2CAA6CrP,OAAOV,EAAgB,OAAQ,IAAK,mBCCtE,GAHaY,EAAqB,mHAA2HF,OAAOV,EAAgB,OAAQ,EAAG,CAC5M+P,MAAO,SACL,mBCHJ,SAAS,GAAmBlR,GAAO,OAQnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAO,GAAkBA,GAR1C,CAAmBA,IAM7D,SAA0BsK,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GANjF,CAAiBtK,IAItF,SAAqC/B,EAAGoM,GAAU,IAAKpM,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAc,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAM,GAAU,QAAN7H,GAAqB,QAANA,EAAa,OAAO2C,MAAMoD,KAAKxF,GAAI,GAAU,cAANP,GAAqB,2CAA2CF,KAAKE,GAAI,OAAO,GAAkBO,EAAGoM,GAJxT,CAA4BrK,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8E,GAUlI,SAAS,GAAkB/J,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAEhL,SAASzN,GAAQC,GAAkC,OAAOD,GAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,GAAQC,GAIzU,SAASmU,GAAkBxF,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAO7S,IAAI,GAAoB,WACtB,SAASG,EAAKC,EAAQ/B,IAVxB,SAAyBgC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAW5G6H,CAAgBlG,KAAM8F,GAEtBlV,OAAOmT,OAAO/D,KAAMgE,EAAQ,CAC1B+B,OAAQA,EACRI,QAASvJ,EAAU,uCAAyCkB,WAC5DsI,SAAU,KAEZpG,KAAKqG,KAAKrG,KAAK+F,OAAOnC,WAAWI,QAdrC,IAAsBiC,EAAaK,EAAYC,EA2E7C,OA3EoBN,EAiBPH,GAjBoBQ,EAiBd,CAAC,CAClBpT,IAAK,OACLoQ,MAAO,SAAcK,QACOrO,IAAtBqO,EAAQxB,YACVnC,KAAKwG,UAAYxG,KAAKyG,KAAO9C,EAAQxB,WAGvCnC,KAAK0G,WAAW/C,GAChB3D,KAAK2G,cACL3G,KAAK4G,oBAMN,CACD1T,IAAK,oBACLoQ,MAAO,SAA2BvG,EAAI8J,EAASrQ,GAC7C,IAAIsQ,EAAS9G,KAAK+G,WAAW,IAAItQ,KAAKD,IAEtC,OAAQnF,GAAQyV,IACd,IAAK,UACHA,EAAS,CACPE,QAASF,GAEX,MAEF,IAAK,SACHA,EAAS,CACPG,QAASH,GAIf,GAAIA,EAAQ,CAMV,IALuB,IAAnBA,EAAOE,UACTjK,EAAGmK,UAAUC,IAAI,YACjB5S,EAAWyL,KAAKoH,SAAUP,IAGxBC,EAAOG,QAAS,CAClB,IAAII,EAEAC,EAAeR,EAAOG,QAAQ7U,MAAM,QAEvCiV,EAAgBtK,EAAGmK,WAAWC,IAAIpQ,MAAMsQ,EAAe,GAAmBC,IAEvEA,EAAajU,SAAS,aACxBkB,EAAWyL,KAAKoH,SAAUP,GAI1BC,EAAOS,SRzCZ,SAA2BxK,EAAIyK,GACpC3J,EAAgBd,GAEZyK,aAAyBC,iBAC3B1K,EAAG2K,YAAYF,GACmB,kBAAlBA,EAChBzK,EAAG2K,YAAY9K,EAAU4K,IACiB,oBAA1BA,EAAcxU,SAC9BwU,EAAcxU,SAAQ,SAAU4M,GAC9B7C,EAAG2K,YAAY9H,MQiCX+H,CAAkB5K,EAAI+J,EAAOS,eArEuC9B,GAAkBQ,EAAYvU,UAAW4U,GAAiBC,GAAad,GAAkBQ,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IA2ErPC,EAtEe,GCvBxB,SAAS,GAAQxU,GAAkC,OAAO,GAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQ,GAAQA,GAEzU,SAASsW,GAAetT,EAAKrD,GAAK,OAMlC,SAAyBqD,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EANtB,CAAgBA,IAIzD,SAA+BA,EAAKrD,GAAK,IAAI4W,EAAY,MAAPvT,EAAc,KAAyB,qBAAX/C,QAA0B+C,EAAI/C,OAAOC,WAAa8C,EAAI,cAAe,GAAU,MAANuT,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGzT,KAAKE,KAAQ2T,GAAMH,EAAKD,EAAGzR,QAAQ+R,QAAoBH,EAAKlT,KAAKgT,EAAGxE,QAAYrS,GAAK+W,EAAKzU,SAAWtC,GAA3DgX,GAAK,IAAoE,MAAOG,GAAOF,GAAK,EAAMH,EAAKK,EAAO,QAAU,IAAWH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIK,EAAI,MAAMH,GAAQ,OAAOC,EAJzbK,CAAsB/T,EAAKrD,IAAM,GAA4BqD,EAAKrD,IAEnI,WAA8B,MAAM,IAAIoN,UAAU,6IAFuF,GAQzI,SAAS,GAAmB/J,GAAO,OAQnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAO,GAAkBA,GAR1C,CAAmBA,IAM7D,SAA0BsK,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GANjF,CAAiBtK,IAAQ,GAA4BA,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8E,GAIlI,SAAS,GAA4B9L,EAAGoM,GAAU,GAAKpM,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAiE,MAAnD,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAgB,QAAN7H,GAAqB,QAANA,EAAoB2C,MAAMoD,KAAKxF,GAAc,cAANP,GAAqB,2CAA2CF,KAAKE,GAAW,GAAkBO,EAAGoM,QAAzG,GAM7S,SAAS,GAAkBrK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAIhL,SAAS,GAAkBmB,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAI7S,SAAS2C,KAA2X,OAA7TA,GAA9B,qBAAZC,SAA2BA,QAAQxX,IAAcwX,QAAQxX,IAAI8C,OAAwB,SAAcoM,EAAQuI,EAAUC,GAAY,IAAIC,EAAOC,GAAe1I,EAAQuI,GAAW,GAAKE,EAAL,CAAmB,IAAIE,EAAOhY,OAAOiY,yBAAyBH,EAAMF,GAAW,OAAII,EAAK7X,IAAc6X,EAAK7X,IAAIqD,KAAKK,UAAUlB,OAAS,EAAI0M,EAASwI,GAAoBG,EAAKtF,QAAmBgF,GAAKvR,MAAMiJ,KAAMvL,WAE5Z,SAASkU,GAAeG,EAAQN,GAAY,MAAQ5X,OAAOc,UAAUyC,eAAeC,KAAK0U,EAAQN,IAA8D,QAAjDM,EAASC,GAAgBD,MAAuC,OAAOA,EAIrL,SAASE,GAAgBzW,EAAG0W,GAA6I,OAAxID,GAAkBpY,OAAOsY,eAAiBtY,OAAOsY,eAAerV,OAAS,SAAyBtB,EAAG0W,GAAsB,OAAjB1W,EAAE4W,UAAYF,EAAU1W,GAAayW,GAAgBzW,EAAG0W,GAEnM,SAASG,GAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZf,UAA4BA,QAAQgB,UAAW,OAAO,EAAO,GAAIhB,QAAQgB,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQhY,UAAUiY,QAAQvV,KAAKmU,QAAQgB,UAAUG,QAAS,IAAI,iBAAyB,EAAQ,MAAO9X,GAAK,OAAO,GAN9PgY,GAA6B,OAAO,WAAkC,IAAsC9C,EAAlC+C,EAAQd,GAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYf,GAAgB/I,MAAMvO,YAAaqV,EAASyB,QAAQgB,UAAUM,EAAOpV,UAAWqV,QAAqBhD,EAAS+C,EAAM9S,MAAMiJ,KAAMvL,WAAc,OAAOsV,GAA2B/J,KAAM8G,IAE5Z,SAASiD,GAA2BC,EAAM5V,GAAQ,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIiK,UAAU,4DAA+D,OAE1P,SAAgC2L,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAFkGE,CAAuBF,GAMxR,SAASjB,GAAgBxW,GAA+J,OAA1JwW,GAAkBnY,OAAOsY,eAAiBtY,OAAOuZ,eAAetW,OAAS,SAAyBtB,GAAK,OAAOA,EAAE4W,WAAavY,OAAOuZ,eAAe5X,IAAcwW,GAAgBxW,GAU/M,IAAI,GAAwB,SAAU6X,IAtBtC,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIjM,UAAU,sDAAyDgM,EAAS3Y,UAAYd,OAAO2Z,OAAOD,GAAcA,EAAW5Y,UAAW,CAAED,YAAa,CAAE6R,MAAO+G,EAAUxE,UAAU,EAAMD,cAAc,KAAWhV,OAAOC,eAAewZ,EAAU,YAAa,CAAExE,UAAU,IAAcyE,GAAYtB,GAAgBqB,EAAUC,GAuBpbE,CAAUC,EAAUL,GAEpB,IA/BoBnE,EAAaK,EAAYC,EA+BzCmE,EAAStB,GAAaqB,GAE1B,SAASA,EAAS1E,GAGhB,OAxCJ,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAsC5G,CAAgB2B,KAAMyK,GAEfC,EAAOtW,KAAK4L,KAAM+F,EAAQ,CAC/BU,GAAI,EACJ5M,KAAM,OACN8Q,UAAW,QAgRf,OAvToB1E,EA2CPwE,EA3CoBnE,EA2CV,CAAC,CACtBpT,IAAK,OACLoQ,MAAO,SAAcK,GACnB,IAAIiH,IAAiBnW,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,KAAmBA,UAAU,GAEpF,GAAImW,EAAgB,CAClB,IAAIC,EAAQjO,EAAU,IAAckB,WACpCkC,KAAKkD,IAAM2H,EAAM/M,WACjBkC,KAAK8K,KAAOD,EAAME,UAClB/K,KAAKmG,QAAQuB,YAAYmD,GAG3BvC,GAAKS,GAAgB0B,EAAS/Y,WAAY,OAAQsO,MAAM5L,KAAK4L,KAAM2D,KAEpE,CACDzQ,IAAK,aACLoQ,MAAO,SAAoBK,GACzB,IAEIqH,EAFAC,EAAQjL,KAmCZ,GA/BI/L,EAAY0P,EAAS,aACvB3D,KAAKgC,QAAU2B,EAAQ3B,SAGrB/N,EAAY0P,EAAS,aACvB3D,KAAK6B,QAAU8B,EAAQ9B,SAGrB8B,EAAQpC,gBACVvB,KAAKuB,cAAgBoC,EAAQpC,eAG3BoC,EAAQnC,qBACVxB,KAAKwB,mBAAqBmC,EAAQnC,mBAClCwJ,GAAY,GAGVrH,EAAQlC,wBACVzB,KAAKyB,sBAAwBkC,EAAQlC,4BAGRnM,IAA3BqO,EAAQf,iBACV5C,KAAK4C,eAAiBe,EAAQf,qBAGNtN,IAAtBqO,EAAQxL,YACV6H,KAAK7H,UAAYwL,EAAQxL,UACzB6H,KAAKqE,QAAUV,EAAQU,QACvB2G,GAAY,GAGVrH,EAAQrK,OAAQ,CAClB,IAAIA,EAAS0G,KAAK1G,OAASqK,EAAQrK,OACnC0G,KAAKkL,SAAW5R,EAAOuH,QACvBb,KAAKmL,kBAAoB7R,EAAOwH,YAChCkK,GAAY,EAOd,QAJ8B1V,IAA1BqO,EAAQ3C,gBACVhB,KAAK+G,WAA8C,oBAA1BpD,EAAQ3C,cAA+B2C,EAAQ3C,mBAAgB1L,QAG5DA,IAA1BqO,EAAQvC,cACV,GAAIuC,EAAQvC,gBAAkBpB,KAAKoB,cAAe,CAChD,IAAIgK,EAAYxO,EAAU,IAAuBkB,WACjDkC,KAAKoB,cAAgB,CACnB+E,QAASiF,EACTlI,IAAKkI,EAAUtN,WACfuN,MAAOD,EAAUL,WAEnB/K,KAAKmG,QAAQmF,aAAaF,EAAWpL,KAAKmG,QAAQrI,iBACzCkC,KAAKoB,gBAAkBuC,EAAQvC,gBACxCpB,KAAKmG,QAAQpI,YAAYiC,KAAKoB,cAAc+E,SAC5CnG,KAAKoB,cAAgB,WAIM9L,IAA3BqO,EAAQtB,iBACNsB,EAAQtB,gBACVzE,EAAYoC,KAAKkD,KAEblD,KAAKoB,eACPxD,EAAYoC,KAAKoB,cAAc8B,OAGjC3F,EAAYyC,KAAKkD,KAEblD,KAAKoB,eACP7D,EAAYyC,KAAKoB,cAAc8B,OAMjC8H,GACFrW,MAAMoD,KAAKiI,KAAKkD,IAAIvS,UAAUqC,SAAQ,SAAU+J,EAAIlH,GAClD,IAAIqN,GAAO+H,EAAM9S,UAAYtC,GAAS,EACtCkH,EAAGwO,YAAcN,EAAMC,SAAShI,GAChCnG,EAAGyO,UAAYP,EAAMzJ,mBAAmBnO,SAAS6P,GAAO,eAAiB,WAK9E,CACDhQ,IAAK,cACLoQ,MAAO,WACL,IAAIyB,EAAW,IAAItO,KAAKuJ,KAAK+F,OAAOhB,UAChC0G,EAAW1G,EAASnN,cACpB8T,EAAY3G,EAASxN,WACrBoU,EAAe/U,EAAU6U,EAAUC,EAAW,GAC9CE,EAAQ5T,EAAe2T,EAAc3L,KAAK7H,UAAW6H,KAAK7H,WAC9D6H,KAAK6L,MAAQF,EACb3L,KAAK8L,KAAOlV,EAAU6U,EAAUC,EAAY,EAAG,GAC/C1L,KAAK4L,MAAQA,EACb5L,KAAK+L,QAAU/L,KAAK+F,OAAOhB,WAG5B,CACD7R,IAAK,kBACLoQ,MAAO,WACL,IAAI0I,EAAwBhM,KAAK+F,OAAOnC,WACpCiB,EAAQmH,EAAsBnH,MAC9BoH,EAAcD,EAAsBC,YACxCjM,KAAKoG,SAAWvB,EAEZoH,IACFjM,KAAKkM,MAAQD,EAAYpH,SAI5B,CACD3R,IAAK,SACLoQ,MAAO,WACL,IAAI6I,EAASnM,KAGbA,KAAKrJ,MAAQqJ,KAAK4C,eAAiBjM,SAAUrB,EAG7C0K,KAAKoH,SAAW,GAAmBpH,KAAKuB,eACxC,IAAI6K,EAAc,EAAWpM,KAAK+L,QAAS/L,KAAKmL,kBAAmBnL,KAAK1G,QAKxE,GAJA0G,KAAK+F,OAAOsG,mBAAmBD,GAC/BpM,KAAK+F,OAAOuG,mBAAmBtM,KAAK6L,OAAS7L,KAAKgC,SAClDhC,KAAK+F,OAAOwG,mBAAmBvM,KAAK8L,MAAQ9L,KAAK6B,SAE7C7B,KAAKoB,cAAe,CAEtB,IAAIgC,EAAcpL,EAAegI,KAAK6L,MAAO,EAAG,GAChDlX,MAAMoD,KAAKiI,KAAKoB,cAAciK,MAAM1a,UAAUqC,SAAQ,SAAU+J,EAAIlH,GAClEkH,EAAGwO,YX7JN,SAAiBtU,GAEtB,IAAIuV,EAAexU,EAAef,EAAM,EAAG,GAEvCwV,EAAWzU,EAAe,IAAIvB,KAAK+V,GAAc9U,SAAS,EAAG,GAAI,EAAG,GACxE,OAAOe,KAAKiU,OAAOF,EAAeC,GAAY,QAAa,EWwJlCE,CXjMlB3V,EWiMmCoM,EXjMZ,EWiMyBvN,OAInDlB,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,EAAIlH,GACnD,IAAIqR,EAAYnK,EAAGmK,UACfL,EAAU7P,EAAQmV,EAAOP,MAAO/V,GAChCoB,EAAO,IAAIR,KAAKoQ,GAChB/O,EAAMb,EAAKoB,SA4Bf,GA3BA0E,EAAGyO,UAAY,mBAAmBrV,OAAOgW,EAAOxB,WAChD5N,EAAGW,QAAQzG,KAAO4P,EAClB9J,EAAGwO,YAActU,EAAKG,UAElByP,EAAUsF,EAAON,MACnB3E,EAAUC,IAAI,QACLN,EAAUsF,EAAOL,MAC1B5E,EAAUC,IAAI,QAGZgF,EAAOxV,QAAUkQ,GACnBK,EAAUC,IAAI,UAGZN,EAAUsF,EAAOnK,SAAW6E,EAAUsF,EAAOtK,SAAWsK,EAAO/E,SAAS/T,SAASwT,KACnFK,EAAUC,IAAI,YAGZgF,EAAO3K,mBAAmBnO,SAASyE,KACrCoP,EAAUC,IAAI,YACd5S,EAAW4X,EAAO/E,SAAUP,IAG1BsF,EAAO1K,sBAAsBpO,SAASyE,IACxCoP,EAAUC,IAAI,eAGZgF,EAAOD,MAAO,CAChB,IAAIU,EAAehF,GAAeuE,EAAOD,MAAO,GAC5CW,EAAaD,EAAa,GAC1BE,EAAWF,EAAa,GAExB/F,EAAUgG,GAAchG,EAAUiG,GACpC5F,EAAUC,IAAI,SAGZN,IAAYgG,GACd3F,EAAUC,IAAI,eAGZN,IAAYiG,GACd5F,EAAUC,IAAI,aAIdgF,EAAO/F,SAAS/S,SAASwT,IAC3BK,EAAUC,IAAI,YAGZN,IAAYsF,EAAOJ,SACrB7E,EAAUC,IAAI,WAGZgF,EAAOpF,YACToF,EAAOY,kBAAkBhQ,EAAI8J,EAASA,QAK3C,CACD3T,IAAK,UACLoQ,MAAO,WACL,IAAI0J,EAAShN,KAGTiN,EAAQrF,GADD5H,KAAKkM,OAAS,GACQ,GAC7BW,EAAaI,EAAM,GACnBH,EAAWG,EAAM,GAErBjN,KAAK8K,KAAKoC,iBAAiB,yDAAyDla,SAAQ,SAAU+J,GACpGA,EAAGmK,UAAUiG,OAAO,QAAS,cAAe,YAAa,WAAY,cAEvExY,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,GAC/C,IAAI8J,EAAU5B,OAAOlI,EAAGW,QAAQzG,MAC5BiQ,EAAYnK,EAAGmK,UAEfL,EAAUgG,GAAchG,EAAUiG,GACpC5F,EAAUC,IAAI,SAGZN,IAAYgG,GACd3F,EAAUC,IAAI,eAGZN,IAAYiG,GACd5F,EAAUC,IAAI,aAGZ6F,EAAO5G,SAAS/S,SAASwT,IAC3BK,EAAUC,IAAI,YAGZN,IAAYmG,EAAOjB,SACrB7E,EAAUC,IAAI,gBAKnB,CACDjU,IAAK,eACLoQ,MAAO,WACL,IAAIzN,EAAQ4C,KAAKiU,OAAO1M,KAAK+L,QAAU/L,KAAK4L,OAAS,OACrD5L,KAAK8K,KAAKoC,iBAAiB,YAAYla,SAAQ,SAAU+J,GACvDA,EAAGmK,UAAUiG,OAAO,cAEtBnN,KAAK8K,KAAKna,SAASkF,GAAOqR,UAAUC,IAAI,cAnToBb,GAAY,GAAkBL,EAAYvU,UAAW4U,GAAiBC,GAAa,GAAkBN,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IAuTrP4E,EA3RmB,CA4R1B,IClVF,SAAS,GAAQnZ,GAAkC,OAAO,GAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQ,GAAQA,GAIzU,SAAS,GAAkB2O,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAI7S,SAAS,KAA2X,OAA7T,GAA9B,qBAAZ4C,SAA2BA,QAAQxX,IAAcwX,QAAQxX,IAAI8C,OAAwB,SAAcoM,EAAQuI,EAAUC,GAAY,IAAIC,EAAO,GAAezI,EAAQuI,GAAW,GAAKE,EAAL,CAAmB,IAAIE,EAAOhY,OAAOiY,yBAAyBH,EAAMF,GAAW,OAAII,EAAK7X,IAAc6X,EAAK7X,IAAIqD,KAAKK,UAAUlB,OAAS,EAAI0M,EAASwI,GAAoBG,EAAKtF,QAAmB,GAAKvM,MAAMiJ,KAAMvL,WAE5Z,SAAS,GAAeqU,EAAQN,GAAY,MAAQ5X,OAAOc,UAAUyC,eAAeC,KAAK0U,EAAQN,IAA8D,QAAjDM,EAAS,GAAgBA,MAAuC,OAAOA,EAIrL,SAAS,GAAgBvW,EAAG0W,GAA6I,OAAxI,GAAkBrY,OAAOsY,eAAiBtY,OAAOsY,eAAerV,OAAS,SAAyBtB,EAAG0W,GAAsB,OAAjB1W,EAAE4W,UAAYF,EAAU1W,GAAa,GAAgBA,EAAG0W,GAEnM,SAAS,GAAaI,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZf,UAA4BA,QAAQgB,UAAW,OAAO,EAAO,GAAIhB,QAAQgB,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQhY,UAAUiY,QAAQvV,KAAKmU,QAAQgB,UAAUG,QAAS,IAAI,iBAAyB,EAAQ,MAAO9X,GAAK,OAAO,GAN9P,GAA6B,OAAO,WAAkC,IAAsCkV,EAAlC+C,EAAQ,GAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY,GAAgB9J,MAAMvO,YAAaqV,EAASyB,QAAQgB,UAAUM,EAAOpV,UAAWqV,QAAqBhD,EAAS+C,EAAM9S,MAAMiJ,KAAMvL,WAAc,OAAO,GAA2BuL,KAAM8G,IAE5Z,SAAS,GAA2BkD,EAAM5V,GAAQ,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIiK,UAAU,4DAA+D,OAE1P,SAAgC2L,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAFkG,CAAuBA,GAMxR,SAAS,GAAgBzX,GAA+J,OAA1J,GAAkB3B,OAAOsY,eAAiBtY,OAAOuZ,eAAetW,OAAS,SAAyBtB,GAAK,OAAOA,EAAE4W,WAAavY,OAAOuZ,eAAe5X,IAAc,GAAgBA,GAE/M,SAAS,GAAe+B,EAAKrD,GAAK,OAUlC,SAAyBqD,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EAVtB,CAAgBA,IAQzD,SAA+BA,EAAKrD,GAAK,IAAI4W,EAAY,MAAPvT,EAAc,KAAyB,qBAAX/C,QAA0B+C,EAAI/C,OAAOC,WAAa8C,EAAI,cAAe,GAAU,MAANuT,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGzT,KAAKE,KAAQ2T,GAAMH,EAAKD,EAAGzR,QAAQ+R,QAAoBH,EAAKlT,KAAKgT,EAAGxE,QAAYrS,GAAK+W,EAAKzU,SAAWtC,GAA3DgX,GAAK,IAAoE,MAAOG,GAAOF,GAAK,EAAMH,EAAKK,EAAO,QAAU,IAAWH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIK,EAAI,MAAMH,GAAQ,OAAOC,EARzb,CAAsB1T,EAAKrD,IAI5F,SAAqCsB,EAAGoM,GAAU,IAAKpM,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAc,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAM,GAAU,QAAN7H,GAAqB,QAANA,EAAa,OAAO2C,MAAMoD,KAAKxF,GAAI,GAAU,cAANP,GAAqB,2CAA2CF,KAAKE,GAAI,OAAO,GAAkBO,EAAGoM,GAJpT,CAA4BrK,EAAKrD,IAEnI,WAA8B,MAAM,IAAIoN,UAAU,6IAFuF,GAMzI,SAAS,GAAkB/J,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAWhL,SAASsO,GAAkBlB,EAAOmB,GAChC,GAAKnB,GAAUA,EAAM,IAAOA,EAAM,GAAlC,CAIA,IAAIoB,EAAS,GAAepB,EAAO,GAC/BqB,EAAU,GAAeD,EAAO,GAAI,GACpCE,EAASD,EAAQ,GACjBE,EAASF,EAAQ,GACjBG,EAAW,GAAeJ,EAAO,GAAI,GACrCK,EAAOD,EAAS,GAChBE,EAAOF,EAAS,GAEpB,KAAIF,EAASH,GAAYM,EAAON,GAIhC,MAAO,CAACG,IAAWH,EAAWI,GAAU,EAAGE,IAASN,EAAWO,EAAO,KAGxE,IAAI,GAA0B,SAAUxD,IAnDxC,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIjM,UAAU,sDAAyDgM,EAAS3Y,UAAYd,OAAO2Z,OAAOD,GAAcA,EAAW5Y,UAAW,CAAED,YAAa,CAAE6R,MAAO+G,EAAUxE,UAAU,EAAMD,cAAc,KAAWhV,OAAOC,eAAewZ,EAAU,YAAa,CAAExE,UAAU,IAAcyE,GAAY,GAAgBD,EAAUC,GAoDpb,CAAUuD,EAAYzD,GAEtB,IA5DoBnE,EAAaK,EAAYC,EA4DzCmE,EAAS,GAAamD,GAE1B,SAASA,EAAW9H,GAGlB,OArEJ,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAmE5G,CAAgB2B,KAAM6N,GAEfnD,EAAOtW,KAAK4L,KAAM+F,EAAQ,CAC/BU,GAAI,EACJ5M,KAAM,SACN8Q,UAAW,UA+Nf,OAnSoB1E,EAwEP4H,EAxEoBvH,EAwER,CAAC,CACxBpT,IAAK,OACLoQ,MAAO,SAAcK,GACnB,IAAIiH,IAAiBnW,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,KAAmBA,UAAU,GAEhFmW,IACF5K,KAAK8K,KAAO9K,KAAKmG,QACjBnG,KAAKmG,QAAQe,UAAUC,IAAI,SAAU,mBACrCnH,KAAK8K,KAAKpD,YAAY9K,EAAUnH,EAAgB,OAAQ,GAAI,CAC1D,aAAc,SAAmBqY,GAC/B,OAAOA,QAKb,GAAK,GAAgBD,EAAWnc,WAAY,OAAQsO,MAAM5L,KAAK4L,KAAM2D,KAEtE,CACDzQ,IAAK,aACLoQ,MAAO,SAAoBK,GAKzB,GAJIA,EAAQrK,SACV0G,KAAK+N,WAAapK,EAAQrK,OAAOS,aAG/B9F,EAAY0P,EAAS,WACvB,QAAwBrO,IAApBqO,EAAQ3B,QACVhC,KAAKgO,QAAUhO,KAAKiO,SAAWjO,KAAKgC,aAAU1M,MACzC,CACL,IAAI4Y,EAAa,IAAIzX,KAAKkN,EAAQ3B,SAClChC,KAAKgO,QAAUE,EAAWtW,cAC1BoI,KAAKiO,SAAWC,EAAW3W,WAC3ByI,KAAKgC,QAAUkM,EAAW/W,QAAQ,GAItC,GAAIlD,EAAY0P,EAAS,WACvB,QAAwBrO,IAApBqO,EAAQ9B,QACV7B,KAAKmO,QAAUnO,KAAKoO,SAAWpO,KAAK6B,aAAUvM,MACzC,CACL,IAAI+Y,EAAa,IAAI5X,KAAKkN,EAAQ9B,SAClC7B,KAAKmO,QAAUE,EAAWzW,cAC1BoI,KAAKoO,SAAWC,EAAW9W,WAC3ByI,KAAK6B,QAAUjL,EAAUoJ,KAAKmO,QAASnO,KAAKoO,SAAW,EAAG,GAI1DpO,KAAKwG,UACH7C,EAAQpC,gBACVvB,KAAKuB,cAAgBoC,EAAQpC,eAG/BvB,KAAKuB,cAAgB,QAGSjM,IAA5BqO,EAAQzC,kBACVlB,KAAK+G,WAAgD,oBAA5BpD,EAAQzC,gBAAiCyC,EAAQzC,qBAAkB5L,KAI/F,CACDpC,IAAK,cACLoQ,MAAO,WACL,IAAIyB,EAAW,IAAItO,KAAKuJ,KAAK+F,OAAOhB,UACpC/E,KAAKxH,KAAOuM,EAASnN,cACrBoI,KAAK+L,QAAUhH,EAASxN,aAGzB,CACDrE,IAAK,kBACLoQ,MAAO,WACL,IAAI0I,EAAwBhM,KAAK+F,OAAOnC,WACpCiB,EAAQmH,EAAsBnH,MAC9BoH,EAAcD,EAAsBC,YACxCjM,KAAKoG,SAAWvB,EAAM7O,QAAO,SAAUoQ,EAAU5P,GAC/C,IAAIS,EAAO,IAAIR,KAAKD,GAChBgC,EAAOvB,EAAKW,cACZyB,EAAQpC,EAAKM,WAQjB,YANuBjC,IAAnB8Q,EAAS5N,GACX4N,EAAS5N,GAAQ,CAACa,GAElB9E,EAAW6R,EAAS5N,GAAOa,GAGtB+M,IACN,IAEC6F,GAAeA,EAAYpH,QAC7B7E,KAAKkM,MAAQD,EAAYpH,MAAMxS,KAAI,SAAUmE,GAC3C,IAAIS,EAAO,IAAIR,KAAKD,GACpB,OAAOgD,MAAMvC,QAAQ3B,EAAY,CAAC2B,EAAKW,cAAeX,EAAKM,kBAKhE,CACDrE,IAAK,SACLoQ,MAAO,WACL,IAAI2H,EAAQjL,KAKZA,KAAKoH,SAAWpH,KAAKuB,cAAcvL,QAAO,SAAU1B,EAAK8S,GACvD,IAAItC,EAAK,IAAIrO,KAAK2Q,GAMlB,OAJI6D,EAAMzS,OAASsM,EAAGlN,eACpBtD,EAAIQ,KAAKgQ,EAAGvN,YAGPjD,IACN,IACH0L,KAAK+F,OAAOsG,mBAAmBrM,KAAKxH,MACpCwH,KAAK+F,OAAOuG,mBAAmBtM,KAAKxH,MAAQwH,KAAKgO,SACjDhO,KAAK+F,OAAOwG,mBAAmBvM,KAAKxH,MAAQwH,KAAKmO,SACjD,IAAI/H,EAAWpG,KAAKoG,SAASpG,KAAKxH,OAAS,GACvC8V,EAAetO,KAAKxH,KAAOwH,KAAKgO,SAAWhO,KAAKxH,KAAOwH,KAAKmO,QAC5DI,EAAYvO,KAAKxH,OAASwH,KAAKgO,QAC/BQ,EAAYxO,KAAKxH,OAASwH,KAAKmO,QAC/BjC,EAAQkB,GAAkBpN,KAAKkM,MAAOlM,KAAKxH,MAC/C7D,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,EAAIlH,GACnD,IAAIqR,EAAYnK,EAAGmK,UACfjQ,EAAOL,EAAUqU,EAAMzS,KAAM3C,EAAO,GAexC,GAdAkH,EAAGyO,UAAY,mBAAmBrV,OAAO8U,EAAMN,WAE3CM,EAAMzE,YACRzJ,EAAGW,QAAQzG,KAAOA,GAKpB8F,EAAGwO,YAAcN,EAAM8C,WAAWlY,IAE9ByY,GAAgBC,GAAa1Y,EAAQoV,EAAMgD,UAAYO,GAAa3Y,EAAQoV,EAAMmD,UAAYnD,EAAM7D,SAAS/T,SAASwC,KACxHqR,EAAUC,IAAI,YAGZ+E,EAAO,CACT,IAAIuC,EAAU,GAAevC,EAAO,GAChCW,EAAa4B,EAAQ,GACrB3B,EAAW2B,EAAQ,GAEnB5Y,EAAQgX,GAAchX,EAAQiX,GAChC5F,EAAUC,IAAI,SAGZtR,IAAUgX,GACZ3F,EAAUC,IAAI,eAGZtR,IAAUiX,GACZ5F,EAAUC,IAAI,aAIdf,EAAS/S,SAASwC,IACpBqR,EAAUC,IAAI,YAGZtR,IAAUoV,EAAMc,SAClB7E,EAAUC,IAAI,WAGZ8D,EAAMlE,YACRkE,EAAM8B,kBAAkBhQ,EAAIlH,EAAOoB,QAKxC,CACD/D,IAAK,UACLoQ,MAAO,WACL,IAAI6I,EAASnM,KAEToG,EAAWpG,KAAKoG,SAASpG,KAAKxH,OAAS,GAGvCyU,EAAQ,GADDG,GAAkBpN,KAAKkM,MAAOlM,KAAKxH,OAAS,GACtB,GAC7BqU,EAAaI,EAAM,GACnBH,EAAWG,EAAM,GAErBjN,KAAK8K,KAAKoC,iBAAiB,yDAAyDla,SAAQ,SAAU+J,GACpGA,EAAGmK,UAAUiG,OAAO,QAAS,cAAe,YAAa,WAAY,cAEvExY,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,EAAIlH,GACnD,IAAIqR,EAAYnK,EAAGmK,UAEfrR,EAAQgX,GAAchX,EAAQiX,GAChC5F,EAAUC,IAAI,SAGZtR,IAAUgX,GACZ3F,EAAUC,IAAI,eAGZtR,IAAUiX,GACZ5F,EAAUC,IAAI,aAGZf,EAAS/S,SAASwC,IACpBqR,EAAUC,IAAI,YAGZtR,IAAUsW,EAAOJ,SACnB7E,EAAUC,IAAI,gBAKnB,CACDjU,IAAK,eACLoQ,MAAO,WACLtD,KAAK8K,KAAKoC,iBAAiB,YAAYla,SAAQ,SAAU+J,GACvDA,EAAGmK,UAAUiG,OAAO,cAEtBnN,KAAK8K,KAAKna,SAASqP,KAAK+L,SAAS7E,UAAUC,IAAI,cA/Rab,GAAY,GAAkBL,EAAYvU,UAAW4U,GAAiBC,GAAa,GAAkBN,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IAmSrPgI,EA1OqB,CA2O5B,IC1SF,SAAS,GAAQvc,GAAkC,OAAO,GAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQ,GAAQA,GAEzU,SAAS,GAAegD,EAAKrD,GAAK,OAMlC,SAAyBqD,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EANtB,CAAgBA,IAIzD,SAA+BA,EAAKrD,GAAK,IAAI4W,EAAY,MAAPvT,EAAc,KAAyB,qBAAX/C,QAA0B+C,EAAI/C,OAAOC,WAAa8C,EAAI,cAAe,GAAU,MAANuT,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGzT,KAAKE,KAAQ2T,GAAMH,EAAKD,EAAGzR,QAAQ+R,QAAoBH,EAAKlT,KAAKgT,EAAGxE,QAAYrS,GAAK+W,EAAKzU,SAAWtC,GAA3DgX,GAAK,IAAoE,MAAOG,GAAOF,GAAK,EAAMH,EAAKK,EAAO,QAAU,IAAWH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIK,EAAI,MAAMH,GAAQ,OAAOC,EAJzb,CAAsB1T,EAAKrD,IAAM,GAA4BqD,EAAKrD,IAEnI,WAA8B,MAAM,IAAIoN,UAAU,6IAFuF,GAUzI,SAAS,GAAkB4B,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAI7S,SAAS,KAA2X,OAA7T,GAA9B,qBAAZ4C,SAA2BA,QAAQxX,IAAcwX,QAAQxX,IAAI8C,OAAwB,SAAcoM,EAAQuI,EAAUC,GAAY,IAAIC,EAAO,GAAezI,EAAQuI,GAAW,GAAKE,EAAL,CAAmB,IAAIE,EAAOhY,OAAOiY,yBAAyBH,EAAMF,GAAW,OAAII,EAAK7X,IAAc6X,EAAK7X,IAAIqD,KAAKK,UAAUlB,OAAS,EAAI0M,EAASwI,GAAoBG,EAAKtF,QAAmB,GAAKvM,MAAMiJ,KAAMvL,WAE5Z,SAAS,GAAeqU,EAAQN,GAAY,MAAQ5X,OAAOc,UAAUyC,eAAeC,KAAK0U,EAAQN,IAA8D,QAAjDM,EAAS,GAAgBA,MAAuC,OAAOA,EAIrL,SAAS,GAAgBvW,EAAG0W,GAA6I,OAAxI,GAAkBrY,OAAOsY,eAAiBtY,OAAOsY,eAAerV,OAAS,SAAyBtB,EAAG0W,GAAsB,OAAjB1W,EAAE4W,UAAYF,EAAU1W,GAAa,GAAgBA,EAAG0W,GAEnM,SAAS,GAAaI,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZf,UAA4BA,QAAQgB,UAAW,OAAO,EAAO,GAAIhB,QAAQgB,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQhY,UAAUiY,QAAQvV,KAAKmU,QAAQgB,UAAUG,QAAS,IAAI,iBAAyB,EAAQ,MAAO9X,GAAK,OAAO,GAN9P,GAA6B,OAAO,WAAkC,IAAsCkV,EAAlC+C,EAAQ,GAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAY,GAAgB9J,MAAMvO,YAAaqV,EAASyB,QAAQgB,UAAUM,EAAOpV,UAAWqV,QAAqBhD,EAAS+C,EAAM9S,MAAMiJ,KAAMvL,WAAc,OAAO,GAA2BuL,KAAM8G,IAE5Z,SAAS,GAA2BkD,EAAM5V,GAAQ,GAAIA,IAA2B,WAAlB,GAAQA,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIiK,UAAU,4DAA+D,OAE1P,SAAgC2L,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAFkG,CAAuBA,GAMxR,SAAS,GAAgBzX,GAA+J,OAA1J,GAAkB3B,OAAOsY,eAAiBtY,OAAOuZ,eAAetW,OAAS,SAAyBtB,GAAK,OAAOA,EAAE4W,WAAavY,OAAOuZ,eAAe5X,IAAc,GAAgBA,GAE/M,SAAS,GAAmB+B,GAAO,OAQnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAO,GAAkBA,GAR1C,CAAmBA,IAM7D,SAA0BsK,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GANjF,CAAiBtK,IAAQ,GAA4BA,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8E,GAIlI,SAAS,GAA4B9L,EAAGoM,GAAU,GAAKpM,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAiE,MAAnD,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAgB,QAAN7H,GAAqB,QAANA,EAAoB2C,MAAMoD,KAAKxF,GAAc,cAANP,GAAqB,2CAA2CF,KAAKE,GAAW,GAAkBO,EAAGoM,QAAzG,GAM7S,SAAS,GAAkBrK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAOhL,SAAS4P,GAAYC,GACnB,OAAO,GAAmBA,GAAM3Y,QAAO,SAAUhB,EAAK4Z,EAAId,GACxD,OAAO9Y,GAAO8Y,EAAKc,EAAKA,EAAG3b,iBAC1B,IAIL,IAAI,GAAyB,SAAUmX,IAtCvC,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIjM,UAAU,sDAAyDgM,EAAS3Y,UAAYd,OAAO2Z,OAAOD,GAAcA,EAAW5Y,UAAW,CAAED,YAAa,CAAE6R,MAAO+G,EAAUxE,UAAU,EAAMD,cAAc,KAAWhV,OAAOC,eAAewZ,EAAU,YAAa,CAAExE,UAAU,IAAcyE,GAAY,GAAgBD,EAAUC,GAuCpb,CAAUuE,EAAWzE,GAErB,IA/CoBnE,EAAaK,EAAYC,EA+CzCmE,EAAS,GAAamE,GAE1B,SAASA,EAAU9I,EAAQ/B,GAGzB,OAxDJ,SAAyBgC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAsD5G,CAAgB2B,KAAM6O,GAEfnE,EAAOtW,KAAK4L,KAAM+F,EAAQ/B,GA4MnC,OAhQoBiC,EAuDP4I,EAvDoBvI,EAuDT,CAAC,CACvBpT,IAAK,OACLoQ,MAAO,SAAcK,GACnB,IAAIiH,IAAiBnW,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,KAAmBA,UAAU,GAEhFmW,IACF5K,KAAK8O,QAAsB,GAAZ9O,KAAK+O,KACpB/O,KAAKgP,iBAAmB,aAAa7Y,OAAOuY,GAAY1O,KAAK2K,YAC7D3K,KAAK8K,KAAO9K,KAAKmG,QACjBnG,KAAKmG,QAAQe,UAAUC,IAAInH,KAAKnG,KAAM,mBACtCmG,KAAK8K,KAAKpD,YAAY9K,EAAUnH,EAAgB,OAAQ,OAG1D,GAAK,GAAgBoZ,EAAUnd,WAAY,OAAQsO,MAAM5L,KAAK4L,KAAM2D,KAErE,CACDzQ,IAAK,aACLoQ,MAAO,SAAoBK,GA2BzB,GA1BI1P,EAAY0P,EAAS,kBACCrO,IAApBqO,EAAQ3B,QACVhC,KAAKgO,QAAUhO,KAAKgC,aAAU1M,GAE9B0K,KAAKgO,QAAU1V,EAAkBqL,EAAQ3B,QAAShC,KAAK+O,MACvD/O,KAAKgC,QAAUpL,EAAUoJ,KAAKgO,QAAS,EAAG,KAI1C/Z,EAAY0P,EAAS,kBACCrO,IAApBqO,EAAQ9B,QACV7B,KAAKmO,QAAUnO,KAAK6B,aAAUvM,GAE9B0K,KAAKmO,QAAU7V,EAAkBqL,EAAQ9B,QAAS7B,KAAK+O,MACvD/O,KAAK6B,QAAUjL,EAAUoJ,KAAKmO,QAAS,GAAI,MAI3CnO,KAAKwG,UACH7C,EAAQpC,gBACVvB,KAAKuB,cAAgBoC,EAAQpC,eAG/BvB,KAAKuB,cAAgB,QAGgBjM,IAAnCqO,EAAQ3D,KAAKgP,kBAAiC,CAChD,IAAIjI,EAAapD,EAAQ3D,KAAKgP,kBAC9BhP,KAAK+G,WAAmC,oBAAfA,EAA4BA,OAAazR,KAIrE,CACDpC,IAAK,cACLoQ,MAAO,WACL,IAAIyB,EAAW,IAAItO,KAAKuJ,KAAK+F,OAAOhB,UAChC8G,EAAQvT,EAAkByM,EAAU/E,KAAK8O,SACzChD,EAAOD,EAAQ,EAAI7L,KAAK+O,KAC5B/O,KAAK6L,MAAQA,EACb7L,KAAK8L,KAAOA,EACZ9L,KAAK4L,MAAQC,EAAQ7L,KAAK+O,KAC1B/O,KAAK+L,QAAUzT,EAAkByM,EAAU/E,KAAK+O,QAGjD,CACD7b,IAAK,kBACLoQ,MAAO,WACL,IAAI2H,EAAQjL,KAERgM,EAAwBhM,KAAK+F,OAAOnC,WACpCiB,EAAQmH,EAAsBnH,MAC9BoH,EAAcD,EAAsBC,YACxCjM,KAAKoG,SAAWvB,EAAM7O,QAAO,SAAUuC,EAAO/B,GAC5C,OAAOjC,EAAWgE,EAAOD,EAAkB9B,EAAWyU,EAAM8D,SAC3D,IAEC9C,GAAeA,EAAYpH,QAC7B7E,KAAKkM,MAAQD,EAAYpH,MAAMxS,KAAI,SAAUmE,GAC3C,QAAkBlB,IAAdkB,EACF,OAAO8B,EAAkB9B,EAAWyU,EAAM8D,YAMjD,CACD7b,IAAK,SACLoQ,MAAO,WACL,IAAI6I,EAASnM,KAKbA,KAAKoH,SAAWpH,KAAKuB,cAAclP,KAAI,SAAU+U,GAC/C,OAAO,IAAI3Q,KAAK2Q,GAAUxP,iBAE5BoI,KAAK+F,OAAOsG,mBAAmB,GAAGlW,OAAO6J,KAAK6L,MAAO,KAAK1V,OAAO6J,KAAK8L,OACtE9L,KAAK+F,OAAOuG,mBAAmBtM,KAAK6L,OAAS7L,KAAKgO,SAClDhO,KAAK+F,OAAOwG,mBAAmBvM,KAAK8L,MAAQ9L,KAAKmO,SACjDxZ,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,EAAIlH,GACnD,IAAIqR,EAAYnK,EAAGmK,UACfL,EAAUsF,EAAOP,MAAQ/V,EAAQsW,EAAO4C,KACxC9X,EAAOL,EAAUiQ,EAAS,EAAG,GAmBjC,GAlBA9J,EAAGyO,UAAY,mBAAmBrV,OAAOgW,EAAOxB,WAE5CwB,EAAO3F,YACTzJ,EAAGW,QAAQzG,KAAOA,GAGpB8F,EAAGwO,YAAcxO,EAAGW,QAAQlF,KAAOqO,EAErB,IAAVhR,EACFqR,EAAUC,IAAI,QACK,KAAVtR,GACTqR,EAAUC,IAAI,SAGZN,EAAUsF,EAAO6B,SAAWnH,EAAUsF,EAAOgC,SAAWhC,EAAO/E,SAAS/T,SAASwT,KACnFK,EAAUC,IAAI,YAGZgF,EAAOD,MAAO,CAChB,IAAIU,EAAe,GAAeT,EAAOD,MAAO,GAC5CW,EAAaD,EAAa,GAC1BE,EAAWF,EAAa,GAExB/F,EAAUgG,GAAchG,EAAUiG,GACpC5F,EAAUC,IAAI,SAGZN,IAAYgG,GACd3F,EAAUC,IAAI,eAGZN,IAAYiG,GACd5F,EAAUC,IAAI,aAIdgF,EAAO/F,SAAS/S,SAASwT,IAC3BK,EAAUC,IAAI,YAGZN,IAAYsF,EAAOJ,SACrB7E,EAAUC,IAAI,WAGZgF,EAAOpF,YACToF,EAAOY,kBAAkBhQ,EAAI8J,EAAS5P,QAK3C,CACD/D,IAAK,UACLoQ,MAAO,WACL,IAAI0J,EAAShN,KAGTiN,EAAQ,GADDjN,KAAKkM,OAAS,GACQ,GAC7BW,EAAaI,EAAM,GACnBH,EAAWG,EAAM,GAErBjN,KAAK8K,KAAKoC,iBAAiB,yDAAyDla,SAAQ,SAAU+J,GACpGA,EAAGmK,UAAUiG,OAAO,QAAS,cAAe,YAAa,WAAY,cAEvExY,MAAMoD,KAAKiI,KAAK8K,KAAKna,UAAUqC,SAAQ,SAAU+J,GAC/C,IAAI8J,EAAU5B,OAAOlI,EAAGwO,aACpBrE,EAAYnK,EAAGmK,UAEfL,EAAUgG,GAAchG,EAAUiG,GACpC5F,EAAUC,IAAI,SAGZN,IAAYgG,GACd3F,EAAUC,IAAI,eAGZN,IAAYiG,GACd5F,EAAUC,IAAI,aAGZ6F,EAAO5G,SAAS/S,SAASwT,IAC3BK,EAAUC,IAAI,YAGZN,IAAYmG,EAAOjB,SACrB7E,EAAUC,IAAI,gBAKnB,CACDjU,IAAK,eACLoQ,MAAO,WACL,IAAIzN,EAAQ4C,KAAKiU,OAAO1M,KAAK+L,QAAU/L,KAAK4L,OAAS5L,KAAK+O,MAC1D/O,KAAK8K,KAAKoC,iBAAiB,YAAYla,SAAQ,SAAU+J,GACvDA,EAAGmK,UAAUiG,OAAO,cAEtBnN,KAAK8K,KAAKna,SAASkF,GAAOqR,UAAUC,IAAI,cA5PoBb,GAAY,GAAkBL,EAAYvU,UAAW4U,GAAiBC,GAAa,GAAkBN,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IAgQrPgJ,EApNoB,CAqN3B,IC7QK,SAASI,GAAuBrL,EAAYsL,GACjD,IAAIC,EAAS,CACXlY,KAAM2M,EAAWxM,UACjB2N,SAAU,IAAItO,KAAKmN,EAAWmC,OAAOhB,UACrCtB,OAAQG,EAAWmC,OAAOqJ,YAAY3I,GACtC7C,WAAYA,GAEdA,EAAWuC,QAAQkJ,cAAc,IAAIC,YAAYJ,EAAM,CACrDC,OAAQA,KAIL,SAASI,GAAe3L,EAAY4L,GACzC,IAMIC,EANAC,EAAqB9L,EAAWI,OAChChC,EAAU0N,EAAmB1N,QAC7BH,EAAU6N,EAAmB7N,QAC7B8N,EAAqB/L,EAAWmC,OAChCqJ,EAAcO,EAAmBP,YACjCrK,EAAW4K,EAAmB5K,SAGlC,OAAQqK,EAAY3I,IAClB,KAAK,EACHgJ,EAAcpY,EAAU0N,EAAUyK,GAClC,MAEF,KAAK,EACHC,EAAc9X,EAASoN,EAAUyK,GACjC,MAEF,QACEC,EAAc9X,EAASoN,EAAUyK,EAAYJ,EAAYN,SAG7DW,EAAcla,EAAaka,EAAazN,EAASH,GACjD+B,EAAWmC,OAAO6J,YAAYH,GAAaI,SAEtC,SAASC,GAAWlM,GACzB,IAAIH,EAASG,EAAWmC,OAAOqJ,YAAY3I,GAEvChD,IAAWG,EAAWI,OAAOjC,SAIjC6B,EAAWmC,OAAOgK,WAAWtM,EAAS,GAAGoM,SAEpC,SAASG,GAAQpM,GAClBA,EAAWI,OAAOnB,aACpBe,EAAWqM,OAAO,CAChBC,QAAQ,IAGVtM,EAAWuM,QAAQ,SAGrBvM,EAAWwM,OCrDb,SAASC,GAAwBzM,EAAY0M,GAC3C,IAAIvK,EAASnC,EAAWmC,OACpBhB,EAAW,IAAItO,KAAKsP,EAAOhB,UAC3BtB,EAASsC,EAAOqJ,YAAY3I,GAC5B5P,EAAqB,IAAX4M,EAAepM,EAAU0N,EAAUuL,EAAYvL,EAASxN,YAAcI,EAASoN,EAAUuL,EAAYvL,EAASnN,eAC5HmO,EAAO6J,YAAY/Y,GAASkZ,WAAWtM,EAAS,GAAGoM,SAG9C,SAASU,GAAgB3M,GAC9B,IAAImC,EAASnC,EAAWmC,OACpByK,EAAc7Z,IAElB,GAAuC,IAAnCiN,EAAWI,OAAOrB,aAAoB,CACxC,GAAIiB,EAAWI,OAAOjD,SAEpB,YADA6C,EAAWzM,QAAQqZ,GAIrB5M,EAAWzM,QAAQqZ,EAAa,CAC9BX,QAAQ,IAEV9J,EAAOkK,SAGLlK,EAAOhB,WAAayL,GACtBzK,EAAO6J,YAAYY,GAGrBzK,EAAOgK,WAAW,GAAGF,SAEhB,SAASY,GAAgB7M,GAC9BA,EAAWzM,QAAQ,CACjBvD,OAAO,IAGJ,SAAS8c,GAAkB9M,GAChCkM,GAAWlM,GAEN,SAAS+M,GAAe/M,GAC7B2L,GAAe3L,GAAa,GAEvB,SAASgN,GAAehN,GAC7B2L,GAAe3L,EAAY,GAGtB,SAASiN,GAAYjN,EAAYpD,GACtC,IAAIP,EAASM,EAAuBC,EAAI,oBAExC,GAAKP,IAAUA,EAAOiH,UAAU4J,SAAS,YAAzC,CAIA,IAAIC,EAAwBnN,EAAWmC,OAAOqJ,YAC1C3I,EAAKsK,EAAsBtK,GACfsK,EAAsBvK,UAGpC5C,EAAWzM,QAAQ8N,OAAOhF,EAAOvC,QAAQzG,OAEzCoZ,GAAwBzM,EAAYqB,OADpB,IAAPwB,EACkCxG,EAAOvC,QAAQrE,MAEf4G,EAAOvC,QAAQlF,QAGvD,SAASwY,GAAkBxQ,GAChCA,EAAGyQ,iBCrEL,SAAS,GAAmB3c,GAAO,OAMnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAO,GAAkBA,GAN1C,CAAmBA,IAI7D,SAA0BsK,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GAJjF,CAAiBtK,IAAQ,GAA4BA,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8E,GAQlI,SAAS,GAAe/J,EAAKrD,GAAK,OAUlC,SAAyBqD,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EAVtB,CAAgBA,IAQzD,SAA+BA,EAAKrD,GAAK,IAAI4W,EAAY,MAAPvT,EAAc,KAAyB,qBAAX/C,QAA0B+C,EAAI/C,OAAOC,WAAa8C,EAAI,cAAe,GAAU,MAANuT,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGzT,KAAKE,KAAQ2T,GAAMH,EAAKD,EAAGzR,QAAQ+R,QAAoBH,EAAKlT,KAAKgT,EAAGxE,QAAYrS,GAAK+W,EAAKzU,SAAWtC,GAA3DgX,GAAK,IAAoE,MAAOG,GAAOF,GAAK,EAAMH,EAAKK,EAAO,QAAU,IAAWH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIK,EAAI,MAAMH,GAAQ,OAAOC,EARzb,CAAsB1T,EAAKrD,IAAM,GAA4BqD,EAAKrD,IAEnI,WAA8B,MAAM,IAAIoN,UAAU,6IAFuF,GAIzI,SAAS,GAA4B9L,EAAGoM,GAAU,GAAKpM,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAiE,MAAnD,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAgB,QAAN7H,GAAqB,QAANA,EAAoB2C,MAAMoD,KAAKxF,GAAc,cAANP,GAAqB,2CAA2CF,KAAKE,GAAW,GAAkBO,EAAGoM,QAAzG,GAE7S,SAAS,GAAkBrK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAQhL,SAAS,GAAkBmB,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAc7S,IAAIuL,GAAgB,CAAC,OAAQ,MAAO,QAAS,UAAUlb,QAAO,SAAU1E,EAAK4B,GAE3E,OADA5B,EAAI4B,GAAO,qBAAqBiD,OAAOjD,GAChC5B,IACN,IAEC6f,GAAO,SAAclW,GACvB,OAAOA,EAAM,GAAG9E,OAAO8E,EAAK,MAAQA,GAGtC,SAASmW,GAAqBrL,EAAQpC,GAWpC,QAVsBrO,IAAlBqO,EAAQlB,QACNkB,EAAQlB,OACVsD,EAAOsL,SAAS5O,MAAM8I,YAAc5H,EAAQlB,MAC5C7E,EAAYmI,EAAOsL,SAAS5O,SAE5BsD,EAAOsL,SAAS5O,MAAM8I,YAAc,GACpChO,EAAYwI,EAAOsL,SAAS5O,SAI5BkB,EAAQvB,UAAW,CACrB,IAAIkP,EAAUvL,EAAOsL,SAASC,QAC9BzT,EAAgByT,GAChB3N,EAAQvB,UAAUpP,SAAQ,SAAU4M,GAClC0R,EAAQ5J,YAAY9H,EAAK2R,WAAU,OAIvC,GAAI5N,EAAQ1B,UAAW,CACrB,IAAIuP,EAAUzL,EAAOsL,SAASG,QAC9B3T,EAAgB2T,GAChB7N,EAAQ1B,UAAUjP,SAAQ,SAAU4M,GAClC4R,EAAQ9J,YAAY9H,EAAK2R,WAAU,OAiBvC,GAbI5N,EAAQrK,SACVyM,EAAOsL,SAAS3O,SAAS6I,YAAc5H,EAAQrK,OAAO3C,MACtDoP,EAAOsL,SAAShQ,SAASkK,YAAc5H,EAAQrK,OAAO1F,YAG/B0B,IAArBqO,EAAQjB,WACNiB,EAAQjB,SACV9E,EAAYmI,EAAOsL,SAAS3O,UAE5BnF,EAAYwI,EAAOsL,SAAS3O,WAI5BzO,EAAY0P,EAAS,YAAc1P,EAAY0P,EAAS,WAAY,CACtE,IAAI8N,EAAwB1L,EAAOnC,WAAWI,OAC1ChC,EAAUyP,EAAsBzP,QAChCH,EAAU4P,EAAsB5P,QACpCkE,EAAOsL,SAAS3O,SAAS0E,UAAYlS,EAAUyB,IAASqL,EAASH,QAG1CvM,IAArBqO,EAAQtC,WACNsC,EAAQtC,SACVzD,EAAYmI,EAAOsL,SAAShQ,UAE5B9D,EAAYwI,EAAOsL,SAAShQ,WAQlC,SAASqQ,GAAqB9N,GAC5B,IAAIiB,EAAQjB,EAAWiB,MACnBb,EAASJ,EAAWI,OAExB,OAAOzO,EADQsP,EAAMtR,OAAS,EAAIc,EAAWwQ,GAASb,EAAOtC,gBAC/BsC,EAAOhC,QAASgC,EAAOnC,SAIvD,SAAS8P,GAAY5L,EAAQlP,GAC3B,IAAI+a,EAAc,IAAInb,KAAKsP,EAAOhB,UAC9B0K,EAAc,IAAIhZ,KAAKI,GACvBgb,EAAsB9L,EAAOqJ,YAC7B3I,EAAKoL,EAAoBpL,GACzBjO,EAAOqZ,EAAoBrZ,KAC3BqT,EAAQgG,EAAoBhG,MAC5BC,EAAO+F,EAAoB/F,KAC3BL,EAAWgE,EAAY7X,cAc3B,OAbAmO,EAAOhB,SAAWlO,EAEd4U,IAAamG,EAAYha,eAC3BqX,GAAuBlJ,EAAOnC,WAAY,cAGxC6L,EAAYlY,aAAeqa,EAAYra,YACzC0X,GAAuBlJ,EAAOnC,WAAY,eAMpC6C,GACN,KAAK,EACH,OAAO5P,EAAUgV,GAAShV,EAAUiV,EAEtC,KAAK,EACH,OAAOL,IAAajT,EAEtB,QACE,OAAOiT,EAAWI,GAASJ,EAAWK,GAI5C,SAASgG,GAAiB/U,GACxB,OAAOgV,OAAOC,iBAAiBjV,GAAIyS,UAIrC,SAASyC,GAAkBlV,GACzB,IAAI8C,EAAS/C,EAAUC,GAEvB,GAAI8C,IAAWnD,SAASwV,MAASrS,EASjC,MAAoD,YAA7CkS,OAAOC,iBAAiBnS,GAAQsS,SAAyBtS,EAASoS,GAAkBpS,GAI7F,IAAI,GAAsB,WACxB,SAASuS,EAAOxO,IApJlB,SAAyBoC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAqJ5G,CAAgB2B,KAAMoS,GAEtB,IACIpO,GADmBhE,KAAK4D,WAAaA,GACXI,OAE1BqO,EAAW,GAAe/b,QAAQ,iBAAkB0N,EAAOsO,aAC3DnM,EAAUnG,KAAKmG,QAAUvJ,EAAUyV,GAAUvU,WAE7CyU,EAAwB,GAAepM,EAAQrI,WAAWnN,SAAU,GACpE6hB,EAASD,EAAsB,GAC/BE,EAAOF,EAAsB,GAC7BG,EAASH,EAAsB,GAE/B9P,EAAQ+P,EAAOG,kBAEfC,EAAwB,GAAeJ,EAAOK,iBAAiBliB,SAAU,GACzE2gB,EAAUsB,EAAsB,GAChCE,EAAaF,EAAsB,GACnCpB,EAAUoB,EAAsB,GAEhCG,EAAwB,GAAeL,EAAO5U,WAAWnN,SAAU,GAInE0gB,EAAW,CACb5O,MAAOA,EACP6O,QAASA,EACTwB,WAAYA,EACZtB,QAASA,EACT9O,SARaqQ,EAAsB,GASnC1R,SARa0R,EAAsB,IAUrC/S,KAAKyS,KAAOA,EACZzS,KAAKqR,SAAWA,EAChB,IAAI2B,EAAepP,EAAWqP,OAAS,SAAW,WAClD9M,EAAQe,UAAUC,IAAI,cAAchR,OAAO6c,IAC3C5B,GAAqBpR,KAAMgE,GAC3BhE,KAAK+E,SAAW2M,GAAqB9N,GAErCzE,EAAkByE,EAAY,CAAC,CAACuC,EAAS,YAAa6K,IAAoB,CAACyB,EAAM,QAAS5B,GAAYhd,KAAK,KAAM+P,IAAc,CAACyN,EAASyB,WAAY,QAASpC,GAAkB7c,KAAK,KAAM+P,IAAc,CAACyN,EAASC,QAAS,QAASX,GAAe9c,KAAK,KAAM+P,IAAc,CAACyN,EAASG,QAAS,QAASZ,GAAe/c,KAAK,KAAM+P,IAAc,CAACyN,EAAS3O,SAAU,QAAS6N,GAAgB1c,KAAK,KAAM+P,IAAc,CAACyN,EAAShQ,SAAU,QAASoP,GAAgB5c,KAAK,KAAM+P,MAE/c5D,KAAKkT,MAAQ,CAAC,IAAI,GAASlT,MAAO,IAAI,GAAWA,MAAO,IAAI,GAAUA,KAAM,CAC1EyG,GAAI,EACJ5M,KAAM,QACN8Q,UAAW,OACXoE,KAAM,IACJ,IAAI,GAAU/O,KAAM,CACtByG,GAAI,EACJ5M,KAAM,UACN8Q,UAAW,SACXoE,KAAM,MAER/O,KAAKoP,YAAcpP,KAAKkT,MAAMlP,EAAOxB,WACrCxC,KAAKoP,YAAYS,SACjB7P,KAAKyS,KAAK/K,YAAY1H,KAAKoP,YAAYjJ,SAEnCnC,EAAOmP,UACTnP,EAAOmP,UAAUzL,YAAY1H,KAAKmG,SAElCvC,EAAWwP,WAAWC,MAAMrT,KAAKmG,SA5MvC,IAAsBF,EAAaK,EAAYC,EA2b7C,OA3boBN,EAgNPmM,EAhNoB9L,EAgNZ,CAAC,CACpBpT,IAAK,aACLoQ,MAAO,SAAoBK,GACzByN,GAAqBpR,KAAM2D,GAC3B3D,KAAKkT,MAAMlgB,SAAQ,SAAUsgB,GAC3BA,EAAKjN,KAAK1C,GAAS,MAErB3D,KAAKoP,YAAYS,WAElB,CACD3c,IAAK,SACLoQ,MAAO,WACLtD,KAAKmG,QAAQgH,WAEd,CACDja,IAAK,OACLoQ,MAAO,WACL,IAAItD,KAAKuT,OAAT,CAIA,IAAI3P,EAAa5D,KAAK4D,WAClBuC,EAAUnG,KAAKmG,QAEnB,GAAIvC,EAAWqP,OACb9M,EAAQe,UAAUC,IAAI,cACjB,CAEL,IAAIqM,EAAiB1B,GAAiBlO,EAAWwP,YAE7CI,IAAmB1B,GAAiBhV,EAAUqJ,IAChDA,EAAQsN,IAAMD,EACLrN,EAAQsN,KACjBtN,EAAQuN,gBAAgB,OAG1BvN,EAAQ3I,MAAMmW,UAAY,SAC1BxN,EAAQe,UAAUC,IAAI,UACtBnH,KAAK4T,QACLzN,EAAQ3I,MAAMmW,UAAY,GAEtB/P,EAAWI,OAAOrC,sBACpBiC,EAAWwP,WAAWS,OAI1B7T,KAAKuT,QAAS,EACdtE,GAAuBrL,EAAY,WAEpC,CACD1Q,IAAK,OACLoQ,MAAO,WACAtD,KAAKuT,SAIVvT,KAAK4D,WAAWkQ,eAChB9T,KAAKmG,QAAQe,UAAUiG,OAAO,UAC9BnN,KAAKuT,QAAS,EACdtE,GAAuBjP,KAAK4D,WAAY,WAEzC,CACD1Q,IAAK,QACLoQ,MAAO,WACL,IAAIyQ,EAAgB/T,KAAKmG,QACrBe,EAAY6M,EAAc7M,UAC1B8M,EAAeD,EAAcC,aAC7BxW,EAAQuW,EAAcvW,MACtByW,EAAoBjU,KAAK4D,WACzBI,EAASiQ,EAAkBjQ,OAC3BoP,EAAaa,EAAkBb,WAE/Bc,EAAwBlU,KAAKmG,QAAQgO,wBACrCC,EAAgBF,EAAsBG,MACtCC,EAAiBJ,EAAsBK,OAEvCC,EAAwBpB,EAAWe,wBACnCM,EAAYD,EAAsBE,KAClCC,EAAWH,EAAsBI,IACjCC,EAAaL,EAAsBM,MACnCC,EAAcP,EAAsBQ,OACpCC,EAAaT,EAAsBH,MACnCa,EAAcV,EAAsBD,OAEpCY,EAAsBnR,EAAO9B,YAC7BkT,EAAUD,EAAoB5P,EAC9B8P,EAAUF,EAAoBjc,EAC9Bwb,EAAOD,EACPG,EAAMD,EAEV,GAAIX,IAAiBtX,SAASwV,MAAS8B,EAGhC,CACL,IAAIsB,EAAmBtB,EAAaG,wBACpCO,GAAQY,EAAiBZ,KAAOV,EAAauB,WAC7CX,GAAOU,EAAiBV,IAAMZ,EAAawB,eAL3Cd,GAAQ3C,OAAO0D,QACfb,GAAO7C,OAAO2D,QAQhB,IAAIC,EAAe1D,GAAkBmB,GACjCwC,EAAiB,EACjBC,EAAgB,EAChBC,EAAwBpZ,SAASqZ,gBACjCC,EAAkBF,EAAsBG,YACxCC,EAAmBJ,EAAsBK,aAE7C,GAAIR,EAAc,CAChB,IAAIS,EAAmBT,EAAaxB,wBAEhCiC,EAAiBxB,IAAM,IACzBiB,EAAgBO,EAAiBxB,KAG/BwB,EAAiB1B,KAAO,IAC1BkB,EAAiBQ,EAAiB1B,MAGhC0B,EAAiBtB,MAAQkB,IAC3BA,EAAkBI,EAAiBtB,OAGjCsB,EAAiBpB,OAASkB,IAC5BA,EAAmBE,EAAiBpB,QAKxC,IAAIqB,EAAa,EAED,SAAZjB,IACEX,EAAYmB,GACdR,EAAU,OACViB,EAAaT,EAAiBnB,GACrBA,EAAYL,EAAgB4B,GACrCZ,EAAU,QAENY,EAAkBnB,IACpBwB,EAAaL,EAAkBnB,IAGjCO,EAD0C,QAAjCtD,GAAiBsB,GAChByB,EAAaT,EAAgBwB,EAAiB,OAAS,QAEvD,QAIE,UAAZR,IACFV,GAAQO,EAAab,GAGvBM,GAAQ2B,EAEQ,SAAZhB,IAEAA,EADEV,EAAWL,EAAiBuB,GACpBd,EAAcT,EAAiB4B,EAAmB,MAElD,UAIE,QAAZb,EACFT,GAAON,EAEPM,GAAOM,EAGThO,EAAUiG,OAAOpW,MAAMmQ,EAAW,GAAmBtW,OAAO0lB,OAAOpF,MACnEhK,EAAUC,IAAI+J,GAAckE,GAAUlE,GAAcmE,IACpD7X,EAAMkX,KAAOvD,GAAKuD,GAClBlX,EAAMoX,IAAMzD,GAAKyD,KAElB,CACD1hB,IAAK,qBACLoQ,MAAO,SAA4BiT,GACjCvW,KAAKqR,SAASyB,WAAWvH,YAAcgL,IAExC,CACDrjB,IAAK,qBACLoQ,MAAO,SAA4B8D,GACjCpH,KAAKqR,SAASC,QAAQlK,SAAWA,IAElC,CACDlU,IAAK,qBACLoQ,MAAO,SAA4B8D,GACjCpH,KAAKqR,SAASG,QAAQpK,SAAWA,IAElC,CACDlU,IAAK,aACLoQ,MAAO,SAAoBG,GACzB,IAAI+S,EAAUxW,KAAKoP,YACfqH,EAAUzW,KAAKkT,MAAMzP,GASzB,OAPIgT,EAAQhQ,KAAO+P,EAAQ/P,KACzBzG,KAAKoP,YAAcqH,EACnBzW,KAAK0W,cAAgB,SACrBzH,GAAuBjP,KAAK4D,WAAY,cACxC5D,KAAKyS,KAAKkE,aAAaF,EAAQtQ,QAASqQ,EAAQrQ,UAG3CnG,OAGR,CACD9M,IAAK,cACLoQ,MAAO,SAAqBmM,GAK1B,OAJAzP,KAAK0W,cAAgB/E,GAAY3R,KAAMyP,GAAe,SAAW,eACjEzP,KAAKkT,MAAMlgB,SAAQ,SAAUsgB,GAC3BA,EAAK3M,iBAEA3G,OAGR,CACD9M,IAAK,SACLoQ,MAAO,WACL,IAAImM,EAAciC,GAAqB1R,KAAK4D,YAM5C,OALA5D,KAAK0W,cAAgB/E,GAAY3R,KAAMyP,GAAe,SAAW,UACjEzP,KAAKkT,MAAMlgB,SAAQ,SAAUsgB,GAC3BA,EAAK3M,cACL2M,EAAK1M,qBAEA5G,OAGR,CACD9M,IAAK,SACLoQ,MAAO,WACL,IAAIsT,IAAcniB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,KAAmBA,UAAU,GAC7EoiB,EAAeD,GAAe5W,KAAK0W,eAAiB,gBACjD1W,KAAK0W,cACZ1W,KAAKoP,YAAYyH,QAvb2CvQ,GAAY,GAAkBL,EAAYvU,UAAW4U,GAAiBC,GAAa,GAAkBN,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IA2brPuM,EA5SiB,GC5J1B,SAAS0E,GAAqB7f,EAAM8f,EAAOC,EAAUC,EAAQ7hB,EAAKC,GAChE,GAAKH,EAAU+B,EAAM7B,EAAKC,GAI1B,OAAI4hB,EAAOhgB,GAEF6f,GADOC,EAAM9f,EAAM+f,GACWD,EAAOC,EAAUC,EAAQ7hB,EAAKC,GAG9D4B,EAKT,SAASigB,GAAetT,EAAYpD,EAAIgP,EAAW2H,GACjD,IAIIJ,EACAE,EALAlR,EAASnC,EAAWmC,OACpBqJ,EAAcrJ,EAAOqJ,YACrBL,EAAOK,EAAYL,MAAQ,EAC3BhK,EAAWgB,EAAOhB,SAItB,OAAQqK,EAAY3I,IAClB,KAAK,EAED1B,EADEoS,EACSngB,EAAQ+N,EAAsB,EAAZyK,GACpBhP,EAAG4W,SAAW5W,EAAG6W,QACf1f,EAASoN,EAAUyK,GAEnBxY,EAAQ+N,EAAUyK,GAG/BuH,EAAQ/f,EAERigB,EAAS,SAAgBhgB,GACvB,OAAOmY,EAAYhI,SAAS/T,SAAS4D,IAGvC,MAEF,KAAK,EACH8N,EAAW1N,EAAU0N,EAAUoS,EAAuB,EAAZ3H,EAAgBA,GAC1DuH,EAAQ1f,EAER4f,EAAS,SAAgBhgB,GACvB,IAAI6N,EAAK,IAAIrO,KAAKQ,GACduB,EAAO4W,EAAY5W,KACnB4O,EAAWgI,EAAYhI,SAC3B,OAAOtC,EAAGlN,gBAAkBY,GAAQ4O,EAAS/T,SAASyR,EAAGvN,aAG3D,MAEF,QACEwN,EAAWpN,EAASoN,EAAUyK,GAAa2H,EAAW,EAAI,GAAKpI,GAC/DgI,EAAQpf,EAERsf,EAAS,SAAgBhgB,GACvB,OAAOmY,EAAYhI,SAAS/T,SAASiF,EAAkBrB,EAAM8X,UAOlDzZ,KAFjByP,EAAW+R,GAAqB/R,EAAUgS,EAAOvH,EAAY,GAAKT,EAAOA,EAAMkI,EAAQ7H,EAAYpN,QAASoN,EAAYvN,WAGtHkE,EAAO6J,YAAY7K,GAAU8K,SAI1B,SAASyH,GAAU1T,EAAYpD,GACpC,IAAItN,EAAMsN,EAAGtN,IAEb,GAAY,QAARA,EAAJ,CAKA,IAAI6S,EAASnC,EAAWmC,OACpB8L,EAAsB9L,EAAOqJ,YAC7B3I,EAAKoL,EAAoBpL,GACzBD,EAAYqL,EAAoBrL,UAEpC,GAAKT,EAAOwN,OAYL,IAAI3P,EAAW2T,SAUpB,YATY,UAARrkB,EACF0Q,EAAWkQ,aAAa,CACtB7D,QAAQ,EACRlP,SAAU6C,EAAWI,OAAOjD,WAEb,WAAR7N,GACT6S,EAAOqK,QAKT,GAAY,cAARld,EACF,GAAIsN,EAAG4W,SAAW5W,EAAG6W,QACnB9H,GAAe3L,GAAa,OACvB,IAAIpD,EAAGgX,SAEZ,YADA5T,EAAW6T,gBAGXP,GAAetT,EAAYpD,GAAK,GAAG,QAEhC,GAAY,eAARtN,EACT,GAAIsN,EAAG4W,SAAW5W,EAAG6W,QACnB9H,GAAe3L,EAAY,OACtB,IAAIpD,EAAGgX,SAEZ,YADA5T,EAAW6T,gBAGXP,GAAetT,EAAYpD,EAAI,GAAG,QAE/B,GAAY,YAARtN,EACT,GAAIsN,EAAG4W,SAAW5W,EAAG6W,QACnBvH,GAAWlM,OACN,IAAIpD,EAAGgX,SAEZ,YADA5T,EAAW6T,gBAGXP,GAAetT,EAAYpD,GAAK,GAAG,QAEhC,GAAY,cAARtN,EAAqB,CAC9B,GAAIsN,EAAGgX,WAAahX,EAAG4W,UAAY5W,EAAG6W,QAEpC,YADAzT,EAAW6T,gBAIbP,GAAetT,EAAYpD,EAAI,GAAG,OAC7B,IAAY,UAARtN,EAcT,YANY,WAARA,EACF6S,EAAOqK,OACU,cAARld,GAA+B,WAARA,IAAmC,IAAfA,EAAIK,QAAiBiN,EAAG4W,SAAY5W,EAAG6W,UAC3FzT,EAAW6T,iBAVb,GAAIjR,EAEF,YADA5C,EAAWzM,QAAQ4O,EAAOhB,UAI5BgB,EAAOgK,WAAWtJ,EAAK,GAAGoJ,cAhEV,CAClB,GAAY,cAAR3c,EASF,YANY,UAARA,EACF0Q,EAAWqM,SACM,WAAR/c,GACT6S,EAAO2R,QALT3R,EAAO2R,OA0EXlX,EAAGyQ,sBArFDjB,GAAQpM,GAuFL,SAAS+T,GAAQ/T,GAClBA,EAAWI,OAAOzB,cAAgBqB,EAAWgU,UAC/ChU,EAAW8T,OAIR,SAASG,GAAYjU,EAAYpD,GACtC,IAAIzD,EAAKyD,EAAGP,QAER2D,EAAWmC,OAAOwN,QAAU3P,EAAWI,OAAO1B,eAChDvF,EAAG+a,QAAU1a,EAAgBL,GAC7BA,EAAGgb,UAAYpkB,YAAW,kBACjBoJ,EAAG+a,eACH/a,EAAGgb,YACT,MAGA,SAASC,GAAapU,EAAYpD,GACvC,IAAIzD,EAAKyD,EAAGP,OAEPlD,EAAGgb,YAIRrkB,aAAaqJ,EAAGgb,kBACThb,EAAGgb,UAENhb,EAAG+a,SACLlU,EAAW6T,uBAGN1a,EAAG+a,QAENlU,EAAWI,OAAO1B,aACpBsB,EAAW8T,QAGR,SAASO,GAAQrU,EAAYpD,GAC9BA,EAAG0X,cAAcC,MAAM9kB,SAAS,eAClCuQ,EAAW6T,gBChNR,SAASW,GAAexU,EAAYpD,GACzC,IAAI2F,EAAUvC,EAAWuC,QACrBJ,EAASnC,EAAWmC,OAKxB,GAAKA,EAAOwN,QAAWnW,EAAgB+I,GAAvC,CAIA,IAAIkS,EAAatS,EAAOI,QAEpB5F,EAAuBC,GAAI,SAAUzD,GACvC,OAAOA,IAAOoJ,GAAWpJ,IAAOsb,MAKlCrI,GAAQpM,ICvBV,SAAS,GAAQtS,GAAkC,OAAO,GAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQ,GAAQA,GAEzU,SAAS,GAAgB0U,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAEhH,SAAS,GAAkB4B,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAiB7S,SAAS2S,GAAezT,EAAOb,GAC7B,OAAOa,EAAMxS,KAAI,SAAUyS,GACzB,OAAO,EAAYA,EAAId,EAAO3I,OAAQ2I,EAAO1K,WAC5Cif,KAAKvU,EAAO1C,eAOjB,SAASkX,GAAkB5U,EAAY6U,GACrC,IAAI7kB,EAAQa,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAEvEuP,EAASJ,EAAWI,OACpB0U,EAAY9U,EAAWiB,MACvBX,EAAiBN,EAAWM,eAEhC,GAA0B,IAAtBuU,EAAWllB,OAEb,OAAOK,EAAQ,QAAK0B,EAItB,IAAIqjB,EAAWF,EAAWziB,QAAO,SAAU6O,EAAOC,GAChD,IAAI7N,EAAO,EAAW6N,EAAId,EAAO3I,OAAQ2I,EAAO1K,QAEhD,YAAahE,IAAT2B,IASA/B,EAFJ+B,EAAO0B,EAAe1B,EAAM+M,EAAO7B,UAAW+B,GAE1BF,EAAOhC,QAASgC,EAAOnC,UAAagD,EAAMxR,SAAS4D,IAAU+M,EAAOzC,cAAclO,SAAS4D,MAAU+M,EAAO7B,UAAY,IAAM6B,EAAOxC,mBAAmBnO,SAAS,IAAIoD,KAAKQ,GAAMoB,WAClMwM,EAAM/P,KAAKmC,GATJ4N,IAaR,IAEH,OAAwB,IAApB8T,EAASplB,QAITyQ,EAAOkB,YAActR,IAEvB+kB,EAAWA,EAAS3iB,QAAO,SAAU6O,EAAO5N,GAK1C,OAJKyhB,EAAUrlB,SAAS4D,IACtB4N,EAAM/P,KAAKmC,GAGN4N,IACN6T,EAAUE,QAAO,SAAU3hB,GAC5B,OAAQ0hB,EAAStlB,SAAS4D,QAKvB+M,EAAOlC,kBAAoB6W,EAASplB,OAASyQ,EAAOlC,iBAAmB6W,EAASllB,OAAiC,EAA3BuQ,EAAOlC,kBAAyB6W,QAlB7H,EAuBF,SAASE,GAAUjV,GACjB,IAAIkV,EAAOrkB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,EAC3EmiB,IAAcniB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,KAAmBA,UAAU,GAC7EuP,EAASJ,EAAWI,OACpB+B,EAASnC,EAAWmC,OACpBqN,EAAaxP,EAAWwP,WAE5B,GAAW,EAAP0F,EAAU,CACZ,IAAIrC,EAAU1Q,EAAOwN,OAASvP,EAAO7B,UAAY6B,EAAOxB,UACxDuD,EAAOkK,SAASF,WAAW0G,GAAS5G,OAAO+G,GAGlC,EAAPkC,GAAY1F,IACdA,EAAW9P,MAAQgV,GAAe1U,EAAWiB,MAAOb,IAIxD,SAAS+U,GAASnV,EAAY6U,EAAY9U,GACxC,IAAI/P,EAAQ+P,EAAQ/P,MAChBic,EAASlM,EAAQkM,OACjB9O,EAAW4C,EAAQ5C,SACnBmP,EAASvM,EAAQuM,YAEN5a,IAAXua,IACFA,GAAS,GAGNA,OAEmBva,IAAbyL,IACTA,EAAW6C,EAAWI,OAAOjD,UAF7BA,GAAW,EAKb,IAAI4X,EAAWH,GAAkB5U,EAAY6U,EAAY7kB,IAEpD+kB,GAAazI,KAIdyI,GAAYA,EAASzd,aAAe0I,EAAWiB,MAAM3J,YACvD0I,EAAWiB,MAAQ8T,EACnBE,GAAUjV,EAAYiM,EAAS,EAAI,GACnCZ,GAAuBrL,EAAY,eAEnCiV,GAAUjV,EAAY,GAGpB7C,GACF6C,EAAWwM,QAQf,IAAI,GAA0B,WAS5B,SAAS4I,EAAW7S,GAClB,IAAIxC,EAAUlP,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC9EwX,EAAcxX,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,QAAKa,EAEtF,GAAgB0K,KAAMgZ,GAEtB7S,EAAQvC,WAAa5D,KACrBA,KAAKmG,QAAUA,EACf,IASIiN,EA6CA6F,EAtDAjV,EAAShE,KAAKgE,OAASpT,OAAOmT,OAAO,CACvCuO,YAAa3O,EAAQ2O,aAAenN,OAAOxB,EAAQ2O,cAAgB,SACnEa,UAAW,KACXzR,gBAAiB/K,IACjBkL,aAASvM,EACT0M,aAAS1M,GACRoO,GAAe,EAAgB1D,OAE9BiT,EAASjT,KAAKiT,OAA6B,UAApB9M,EAAQzQ,QAgBnC,GAbIud,EACFjP,EAAOmP,UAAYhN,GAEfxC,EAAQwP,YAGVnP,EAAOmP,UAAYxP,EAAQwP,qBAAqB+F,YAAcvV,EAAQwP,UAAYzW,SAASyc,cAAcxV,EAAQwP,aAGnHC,EAAapT,KAAKoT,WAAajN,GACpBe,UAAUC,IAAI,qBAGvB8E,EAAa,CAEf,IAAIpW,EAAQoW,EAAYmN,OAAOC,QAAQjG,GACnCkG,EAAcrN,EAAYqN,YAE9B,GAAIzjB,EAAQ,GAAKA,EAAQ,IAAMlB,MAAMsJ,QAAQqb,GAC3C,MAAMhe,MAAM,+BAMdge,EAAYzjB,GAASmK,KAErBpP,OAAOC,eAAemP,KAAM,cAAe,CACzCjP,IAAK,WACH,OAAOkb,KAGXrb,OAAOC,eAAemP,KAAM,iBAAkB,CAC5CjP,IAAK,WACH,OAAO8E,KAMbmK,KAAKuZ,SAAW5V,EAChB/S,OAAOmT,OAAOC,EAAQN,GAAeC,EAAS3D,OAI1CiT,GACFgG,EAAelkB,EAAcoR,EAAQzI,QAAQzG,KAAM+M,EAAO1C,sBACnD6E,EAAQzI,QAAQzG,MAEvBgiB,EAAelkB,EAAcqe,EAAW9P,MAAOU,EAAO1C,eAGxDtB,KAAK6E,MAAQ,GAEb,IAAI2U,EAAkBhB,GAAkBxY,KAAMiZ,GAE1CO,GAAmBA,EAAgBjmB,OAAS,IAC9CyM,KAAK6E,MAAQ2U,GAGXpG,IACFA,EAAW9P,MAAQgV,GAAetY,KAAK6E,MAAOb,IAGhD,IAAI+B,EAAS/F,KAAK+F,OAAS,IAAI,GAAO/F,MAEtC,GAAIiT,EACFjT,KAAK0X,WACA,CAEL,IAAI+B,EAAsBrB,GAAevkB,KAAK,KAAMmM,MAChDX,EAAY,CAAC,CAAC+T,EAAY,UAAWkE,GAAUzjB,KAAK,KAAMmM,OAAQ,CAACoT,EAAY,QAASuE,GAAQ9jB,KAAK,KAAMmM,OAAQ,CAACoT,EAAY,YAAayE,GAAYhkB,KAAK,KAAMmM,OAAQ,CAACoT,EAAY,QAAS4E,GAAankB,KAAK,KAAMmM,OAAQ,CAACoT,EAAY,QAAS6E,GAAQpkB,KAAK,KAAMmM,OAAQ,CAACtD,SAAU,YAAa+c,GAAsB,CAAC/c,SAAU,aAAc+c,GAAsB,CAAC1H,OAAQ,SAAUhM,EAAO6N,MAAM/f,KAAKkS,KACzZ5G,EAAkBa,KAAMX,IA5O9B,IAAsB4G,EAAaK,EAAYC,EA2kB7C,OA3kBoBN,EA+PP+S,EA/PoB1S,EA+PR,CAAC,CACxBpT,IAAK,SACLnC,IAIA,WACE,SAAUiP,KAAK+F,SAAU/F,KAAK+F,OAAOwN,UAMtC,CACDrgB,IAAK,gBACLnC,IAAK,WACH,OAAOiP,KAAK+F,OAAS/F,KAAK+F,OAAOI,aAAU7Q,IAO5C,CACDpC,IAAK,aACLoQ,MAAO,SAAoBK,GACzB,IAAIoC,EAAS/F,KAAK+F,OACd2T,EAAahW,GAAeC,EAAS3D,MACzCpP,OAAOmT,OAAO/D,KAAKuZ,SAAU5V,GAC7B/S,OAAOmT,OAAO/D,KAAKgE,OAAQ0V,GAC3B3T,EAAOW,WAAWgT,GAClBb,GAAU7Y,KAAM,KAMjB,CACD9M,IAAK,OACLoQ,MAAO,WACL,GAAItD,KAAKoT,WAAY,CACnB,GAAIpT,KAAKoT,WAAWhM,SAClB,OAGGhK,EAAgB4C,KAAKoT,aAAgBpT,KAAKgE,OAAOrC,uBACpD3B,KAAK4X,UAAW,EAChB5X,KAAKoT,WAAWuG,eACT3Z,KAAK4X,UAIhB5X,KAAK+F,OAAO2R,SAOb,CACDxkB,IAAK,OACLoQ,MAAO,WACDtD,KAAKiT,SAITjT,KAAK+F,OAAOqK,OACZpQ,KAAK+F,OAAOkK,SAASF,WAAW/P,KAAKgE,OAAOxB,WAAWqN,YAOxD,CACD3c,IAAK,UACLoQ,MAAO,WAUL,OATAtD,KAAKoQ,OACL5Q,EAAoBQ,MACpBA,KAAK+F,OAAO6T,SAEP5Z,KAAKiT,QACRjT,KAAKoT,WAAWlM,UAAUiG,OAAO,2BAG5BnN,KAAKmG,QAAQvC,WACb5D,OAcR,CACD9M,IAAK,UACLoQ,MAAO,WACL,IAAI2H,EAAQjL,KAER3E,EAAS5G,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,QAAKa,EAC7EukB,EAAWxe,EAAS,SAAUpE,GAChC,OAAO,EAAYA,EAAMoE,EAAQ4P,EAAMjH,OAAO1K,SAC5C,SAAUrC,GACZ,OAAO,IAAIR,KAAKQ,IAGlB,OAAI+I,KAAKgE,OAAOkB,UACPlF,KAAK6E,MAAMxS,IAAIwnB,GAGpB7Z,KAAK6E,MAAMtR,OAAS,EACfsmB,EAAS7Z,KAAK6E,MAAM,SAD7B,IAgDD,CACD3R,IAAK,UACLoQ,MAAO,WACL,IAAK,IAAI9O,EAAOC,UAAUlB,OAAQumB,EAAO,IAAInlB,MAAMH,GAAOI,EAAO,EAAGA,EAAOJ,EAAMI,IAC/EklB,EAAKllB,GAAQH,UAAUG,GAGzB,IAAIiQ,EAAQ,GAAG1O,OAAO2jB,GAClBC,EAAO,GACPC,EAAU3lB,EAAWylB,GAEA,WAArB,GAAQE,IAA0BrlB,MAAMsJ,QAAQ+b,IAAcA,aAAmBvjB,OAASujB,GAC5FppB,OAAOmT,OAAOgW,EAAMlV,EAAMvS,OAG5B,IAAImmB,EAAa9jB,MAAMsJ,QAAQ4G,EAAM,IAAMA,EAAM,GAAKA,EAEtDkU,GAAS/Y,KAAMyY,EAAYsB,KAsB5B,CACD7mB,IAAK,SACLoQ,MAAO,WACL,IAAIK,EAAUlP,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,QAAKa,EAElF,IAAI0K,KAAKiT,OAAT,CAIA,IAAI8G,EAAOnpB,OAAOmT,OAAOJ,GAAW,GAAI,CACtC/P,OAAO,EACPic,QAAQ,IAEN4I,EAAa1jB,EAAciL,KAAKoT,WAAW9P,MAAOtD,KAAKgE,OAAO1C,eAElEyX,GAAS/Y,KAAMyY,EAAYsB,MAU5B,CACD7mB,IAAK,UACLoQ,MAAO,WACL,IAAIrD,EAASxL,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,QAAKa,EAC7E2kB,EAAcxlB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAE7EwL,GAA4B,kBAAXA,IACnBga,EAAcha,EACdA,OAAS3K,GAaXujB,GAAU7Y,KARK,WAAXC,EACK,EACa,UAAXA,EACF,EAEA,GAGcga,KAOxB,CACD/mB,IAAK,gBACLoQ,MAAO,WACDtD,KAAKiT,SAAWjT,KAAK+F,OAAOwN,QAAUvT,KAAKuX,WAI/CvX,KAAKuX,UAAW,EAChBvX,KAAKoT,WAAWlM,UAAUC,IAAI,cAW/B,CACDjU,IAAK,eACLoQ,MAAO,WACL,IAAIK,EAAUlP,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,QAAKa,EAElF,IAAI0K,KAAKiT,QAAWjT,KAAKuX,SAAzB,CAIA,IAAIwC,EAAOnpB,OAAOmT,OAAO,CACvBkM,QAAQ,GACPtM,UACI3D,KAAKuX,SACZvX,KAAKoT,WAAWlM,UAAUiG,OAAO,WAE7B4M,EAAK9J,QACPjQ,KAAKiQ,OAAO8J,OAliB2BxT,EAqiBzC,CAAC,CACHrT,IAAK,aACLoQ,MAAO,SAAoBrM,EAAMoE,EAAQwI,GACvC,OAAO,EAAY5M,EAAMoE,EAAQwI,GAAQ,EAAQA,IAAS,EAAQjD,MAkBnE,CACD1N,IAAK,YACLoQ,MAAO,SAAmBtH,EAASX,EAAQwI,GACzC,OAAO,EAAW7H,EAASX,EAAQwI,GAAQ,EAAQA,IAAS,EAAQjD,MAOrE,CACD1N,IAAK,UACLnC,IAAK,WACH,OAAO,KAvkBqDuV,GAAY,GAAkBL,EAAYvU,UAAW4U,GAAiBC,GAAa,GAAkBN,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IA2kBrPmT,EAncqB,I,iCC9I9B,mBAwBA,IAAIkB,EAA8B,qBAAXnI,QAA8C,qBAAbrV,UAAiD,qBAAd7K,UAEvFsoB,EAAkB,WAGpB,IAFA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WAEvCnpB,EAAI,EAAGA,EAAImpB,EAAsB7mB,OAAQtC,GAAK,EACrD,GAAIipB,GAAaroB,UAAUwoB,UAAUhB,QAAQe,EAAsBnpB,KAAO,EACxE,OAAO,EAIX,OAAO,EATa,GAwCtB,IAWIqpB,EAXqBJ,GAAanI,OAAOwI,QA5B7C,SAA2Ble,GACzB,IAAIme,GAAS,EACb,OAAO,WACDA,IAIJA,GAAS,EACTzI,OAAOwI,QAAQE,UAAUC,MAAK,WAC5BF,GAAS,EACTne,UAKN,SAAsBA,GACpB,IAAIse,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZhnB,YAAW,WACTgnB,GAAY,EACZte,MACC8d,MAyBT,SAASS,EAAWC,GAElB,OAAOA,GAA8D,sBADvD,GACoB3f,SAAS9G,KAAKymB,GAWlD,SAASC,EAAyB3U,EAASqC,GACzC,GAAyB,IAArBrC,EAAQ4U,SACV,MAAO,GAIT,IACIC,EADS7U,EAAQ8U,cAAclb,YAClBiS,iBAAiB7L,EAAS,MAC3C,OAAOqC,EAAWwS,EAAIxS,GAAYwS,EAWpC,SAASE,EAAc/U,GACrB,MAAyB,SAArBA,EAAQgV,SACHhV,EAGFA,EAAQlJ,YAAckJ,EAAQhJ,KAWvC,SAASie,EAAgBjV,GAEvB,IAAKA,EACH,OAAOzJ,SAASwV,KAGlB,OAAQ/L,EAAQgV,UACd,IAAK,OACL,IAAK,OACH,OAAOhV,EAAQ8U,cAAc/I,KAE/B,IAAK,YACH,OAAO/L,EAAQ+L,KAInB,IAAImJ,EAAwBP,EAAyB3U,GACjDgM,EAAWkJ,EAAsBlJ,SACjCmJ,EAAYD,EAAsBC,UAClCC,EAAYF,EAAsBE,UAEtC,MAAI,wBAAwBzpB,KAAKqgB,EAAWoJ,EAAYD,GAC/CnV,EAGFiV,EAAgBF,EAAc/U,IAWvC,SAASqV,EAAiBC,GACxB,OAAOA,GAAaA,EAAUC,cAAgBD,EAAUC,cAAgBD,EAG1E,IAAIE,EAASzB,MAAgBnI,OAAO6J,uBAAwBlf,SAASmf,cACjEC,EAAS5B,GAAa,UAAUpoB,KAAKD,UAAUwoB,WASnD,SAAS0B,EAAKC,GACZ,OAAgB,KAAZA,EACKL,EAGO,KAAZK,EACKF,EAGFH,GAAUG,EAWnB,SAASG,EAAgB9V,GACvB,IAAKA,EACH,OAAOzJ,SAASqZ,gBAOlB,IAJA,IAAImG,EAAiBH,EAAK,IAAMrf,SAASwV,KAAO,KAE5C8B,EAAe7N,EAAQ6N,cAAgB,KAEpCA,IAAiBkI,GAAkB/V,EAAQgW,oBAChDnI,GAAgB7N,EAAUA,EAAQgW,oBAAoBnI,aAGxD,IAAImH,EAAWnH,GAAgBA,EAAamH,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAAS9B,QAAQrF,EAAamH,WAA2E,WAAvDL,EAAyB9G,EAAc,YACjGiI,EAAgBjI,GAGlBA,EATE7N,EAAUA,EAAQ8U,cAAclF,gBAAkBrZ,SAASqZ,gBA8BtE,SAASqG,EAAQxc,GACf,OAAwB,OAApBA,EAAK3C,WACAmf,EAAQxc,EAAK3C,YAGf2C,EAYT,SAASyc,EAAuBC,EAAUC,GAExC,IAAKD,IAAaA,EAASvB,WAAawB,IAAaA,EAASxB,SAC5D,OAAOre,SAASqZ,gBAIlB,IAAIyG,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1D/Q,EAAQ4Q,EAAQF,EAAWC,EAC3BK,EAAMJ,EAAQD,EAAWD,EAEzBpQ,EAAQxP,SAASC,cACrBuP,EAAM2Q,SAASjR,EAAO,GACtBM,EAAM4Q,OAAOF,EAAK,GAClB,IAjDyBzW,EACrBgV,EAgDA4B,EAA0B7Q,EAAM6Q,wBAEpC,GAAIT,IAAaS,GAA2BR,IAAaQ,GAA2BnR,EAAMkF,SAAS8L,GACjG,MAjDe,UAFbzB,GADqBhV,EAoDD4W,GAnDD5B,WAMH,SAAbA,GAAuBc,EAAgB9V,EAAQwM,qBAAuBxM,EAiDpE8V,EAAgBc,GAHdA,EAOX,IAAIC,EAAeZ,EAAQE,GAE3B,OAAIU,EAAa7f,KACRkf,EAAuBW,EAAa7f,KAAMof,GAE1CF,EAAuBC,EAAUF,EAAQG,GAAUpf,MAa9D,SAAS8f,EAAU9W,GACjB,IAAI+W,EAAOzoB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,MAC3E0oB,EAAqB,QAATD,EAAiB,YAAc,aAC3C/B,EAAWhV,EAAQgV,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAIrlB,EAAOqQ,EAAQ8U,cAAclF,gBAC7BqH,EAAmBjX,EAAQ8U,cAAcmC,kBAAoBtnB,EACjE,OAAOsnB,EAAiBD,GAG1B,OAAOhX,EAAQgX,GAajB,SAASE,EAAcC,EAAMnX,GAC3B,IAAIoX,EAAW9oB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAC1E+gB,EAAYyH,EAAU9W,EAAS,OAC/BoP,EAAa0H,EAAU9W,EAAS,QAChCqX,EAAWD,GAAY,EAAI,EAK/B,OAJAD,EAAK1I,KAAOY,EAAYgI,EACxBF,EAAKtI,QAAUQ,EAAYgI,EAC3BF,EAAK5I,MAAQa,EAAaiI,EAC1BF,EAAKxI,OAASS,EAAaiI,EACpBF,EAaT,SAASG,EAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,SAAVD,EAAmB,QAAU,SACzC,OAAOE,WAAWJ,EAAO,SAAWE,EAAQ,UAAYE,WAAWJ,EAAO,SAAWG,EAAQ,UAG/F,SAASE,EAAQJ,EAAMzL,EAAMpc,EAAMkoB,GACjC,OAAOvlB,KAAKpD,IAAI6c,EAAK,SAAWyL,GAAOzL,EAAK,SAAWyL,GAAO7nB,EAAK,SAAW6nB,GAAO7nB,EAAK,SAAW6nB,GAAO7nB,EAAK,SAAW6nB,GAAO5B,EAAK,IAAM5iB,SAASrD,EAAK,SAAW6nB,IAASxkB,SAAS6kB,EAAc,UAAqB,WAATL,EAAoB,MAAQ,UAAYxkB,SAAS6kB,EAAc,UAAqB,WAATL,EAAoB,SAAW,WAAa,GAG5U,SAASM,EAAevhB,GACtB,IAAIwV,EAAOxV,EAASwV,KAChBpc,EAAO4G,EAASqZ,gBAChBiI,EAAgBjC,EAAK,KAAO/J,iBAAiBlc,GACjD,MAAO,CACLye,OAAQwJ,EAAQ,SAAU7L,EAAMpc,EAAMkoB,GACtC3J,MAAO0J,EAAQ,QAAS7L,EAAMpc,EAAMkoB,IAIxC,IAAIE,EAAiB,SAAwBlY,EAAUC,GACrD,KAAMD,aAAoBC,GACxB,MAAM,IAAI5H,UAAU,sCAIpB8f,EAAc,WAChB,SAASC,EAAiBne,EAAQyF,GAChC,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CACrC,IAAI0U,EAAaD,EAAMzU,GACvB0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EACjD6U,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAIlD,OAAO,SAAUM,EAAaK,EAAYC,GAGxC,OAFID,GAAY8X,EAAiBnY,EAAYvU,UAAW4U,GACpDC,GAAa6X,EAAiBnY,EAAaM,GACxCN,GAdO,GAkBdpV,EAAiB,SAAwBS,EAAK4B,EAAKoQ,GAYrD,OAXIpQ,KAAO5B,EACTV,OAAOC,eAAeS,EAAK4B,EAAK,CAC9BoQ,MAAOA,EACPxS,YAAY,EACZ8U,cAAc,EACdC,UAAU,IAGZvU,EAAI4B,GAAOoQ,EAGNhS,GAGL+sB,EAAWztB,OAAOmT,QAAU,SAAU9D,GACxC,IAAK,IAAIhP,EAAI,EAAGA,EAAIwD,UAAUlB,OAAQtC,IAAK,CACzC,IAAIqtB,EAAS7pB,UAAUxD,GAEvB,IAAK,IAAIiC,KAAOorB,EACV1tB,OAAOc,UAAUyC,eAAeC,KAAKkqB,EAAQprB,KAC/C+M,EAAO/M,GAAOorB,EAAOprB,IAK3B,OAAO+M,GAWT,SAASse,EAAcC,GACrB,OAAOH,EAAS,GAAIG,EAAS,CAC3B1J,MAAO0J,EAAQ9J,KAAO8J,EAAQnK,MAC9BW,OAAQwJ,EAAQ5J,IAAM4J,EAAQjK,SAYlC,SAASJ,EAAsBhO,GAC7B,IAAImX,EAAO,GAIX,IACE,GAAIvB,EAAK,IAAK,CACZuB,EAAOnX,EAAQgO,wBACf,IAAIqB,EAAYyH,EAAU9W,EAAS,OAC/BoP,EAAa0H,EAAU9W,EAAS,QACpCmX,EAAK1I,KAAOY,EACZ8H,EAAK5I,MAAQa,EACb+H,EAAKtI,QAAUQ,EACf8H,EAAKxI,OAASS,OAEd+H,EAAOnX,EAAQgO,wBAEjB,MAAOviB,IAET,IAAIkV,EAAS,CACX4N,KAAM4I,EAAK5I,KACXE,IAAK0I,EAAK1I,IACVP,MAAOiJ,EAAKxI,MAAQwI,EAAK5I,KACzBH,OAAQ+I,EAAKtI,OAASsI,EAAK1I,KAGzB6J,EAA6B,SAArBtY,EAAQgV,SAAsB8C,EAAe9X,EAAQ8U,eAAiB,GAC9E5G,EAAQoK,EAAMpK,OAASlO,EAAQ8P,aAAenP,EAAOuN,MACrDE,EAASkK,EAAMlK,QAAUpO,EAAQgQ,cAAgBrP,EAAOyN,OACxDmK,EAAiBvY,EAAQwY,YAActK,EACvCuK,EAAgBzY,EAAQ0Y,aAAetK,EAG3C,GAAImK,GAAkBE,EAAe,CACnC,IAAIlB,EAAS5C,EAAyB3U,GACtCuY,GAAkBjB,EAAeC,EAAQ,KACzCkB,GAAiBnB,EAAeC,EAAQ,KACxC5W,EAAOuN,OAASqK,EAChB5X,EAAOyN,QAAUqK,EAGnB,OAAOL,EAAczX,GAGvB,SAASgY,EAAqCnuB,EAAUkP,GACtD,IAAIkf,EAAgBtqB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAC/EqnB,EAASC,EAAK,IACdiD,EAA6B,SAApBnf,EAAOsb,SAChB8D,EAAe9K,EAAsBxjB,GACrCuuB,EAAa/K,EAAsBtU,GACnC8V,EAAeyF,EAAgBzqB,GAC/B+sB,EAAS5C,EAAyBjb,GAClCsf,EAAiBrB,WAAWJ,EAAOyB,gBACnCC,EAAkBtB,WAAWJ,EAAO0B,iBAEpCL,GAAiBC,IACnBE,EAAWtK,IAAMnc,KAAKpD,IAAI6pB,EAAWtK,IAAK,GAC1CsK,EAAWxK,KAAOjc,KAAKpD,IAAI6pB,EAAWxK,KAAM,IAG9C,IAAI8J,EAAUD,EAAc,CAC1B3J,IAAKqK,EAAarK,IAAMsK,EAAWtK,IAAMuK,EACzCzK,KAAMuK,EAAavK,KAAOwK,EAAWxK,KAAO0K,EAC5C/K,MAAO4K,EAAa5K,MACpBE,OAAQ0K,EAAa1K,SAQvB,GANAiK,EAAQa,UAAY,EACpBb,EAAQc,WAAa,GAKhBxD,GAAUkD,EAAQ,CACrB,IAAIK,EAAYvB,WAAWJ,EAAO2B,WAC9BC,EAAaxB,WAAWJ,EAAO4B,YACnCd,EAAQ5J,KAAOuK,EAAiBE,EAChCb,EAAQxJ,QAAUmK,EAAiBE,EACnCb,EAAQ9J,MAAQ0K,EAAkBE,EAClCd,EAAQ1J,OAASsK,EAAkBE,EAEnCd,EAAQa,UAAYA,EACpBb,EAAQc,WAAaA,EAOvB,OAJIxD,IAAWiD,EAAgBlf,EAAOiR,SAAS6E,GAAgB9V,IAAW8V,GAA0C,SAA1BA,EAAawF,YACrGqD,EAAUnB,EAAcmB,EAAS3e,IAG5B2e,EAGT,SAASe,EAA8CpZ,GACrD,IAAIqZ,EAAgB/qB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAC/EqB,EAAOqQ,EAAQ8U,cAAclF,gBAC7B0J,EAAiBX,EAAqC3Y,EAASrQ,GAC/Due,EAAQ5b,KAAKpD,IAAIS,EAAKmgB,YAAalE,OAAO2N,YAAc,GACxDnL,EAAS9b,KAAKpD,IAAIS,EAAKqgB,aAAcpE,OAAO4N,aAAe,GAC3DnK,EAAagK,EAAkC,EAAlBvC,EAAUnnB,GACvCyf,EAAciK,EAA0C,EAA1BvC,EAAUnnB,EAAM,QAC9C8pB,EAAS,CACXhL,IAAKY,EAAYiK,EAAe7K,IAAM6K,EAAeJ,UACrD3K,KAAMa,EAAakK,EAAe/K,KAAO+K,EAAeH,WACxDjL,MAAOA,EACPE,OAAQA,GAEV,OAAOgK,EAAcqB,GAYvB,SAASC,EAAQ1Z,GACf,IAAIgV,EAAWhV,EAAQgV,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAGT,GAAsD,UAAlDL,EAAyB3U,EAAS,YACpC,OAAO,EAGT,IAAIlJ,EAAaie,EAAc/U,GAE/B,QAAKlJ,GAIE4iB,EAAQ5iB,GAWjB,SAAS6iB,EAA6B3Z,GAEpC,IAAKA,IAAYA,EAAQnJ,eAAiB+e,IACxC,OAAOrf,SAASqZ,gBAKlB,IAFA,IAAIhZ,EAAKoJ,EAAQnJ,cAEVD,GAAoD,SAA9C+d,EAAyB/d,EAAI,cACxCA,EAAKA,EAAGC,cAGV,OAAOD,GAAML,SAASqZ,gBAexB,SAASgK,EAAcC,EAAQvE,EAAWwE,EAASC,GACjD,IAAInB,EAAgBtqB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GAE/E0rB,EAAa,CACfvL,IAAK,EACLF,KAAM,GAEJV,EAAe+K,EAAgBe,EAA6BE,GAAU3D,EAAuB2D,EAAQxE,EAAiBC,IAE1H,GAA0B,aAAtByE,EACFC,EAAaZ,EAA8CvL,EAAc+K,OACpE,CAEL,IAAIqB,OAAiB,EAEK,iBAAtBF,EAG8B,UAFhCE,EAAiBhF,EAAgBF,EAAcO,KAE5BN,WACjBiF,EAAiBJ,EAAO/E,cAAclF,iBAGxCqK,EAD+B,WAAtBF,EACQF,EAAO/E,cAAclF,gBAErBmK,EAGnB,IAAI1B,EAAUM,EAAqCsB,EAAgBpM,EAAc+K,GAEjF,GAAgC,SAA5BqB,EAAejF,UAAwB0E,EAAQ7L,GAWjDmM,EAAa3B,MAXmD,CAChE,IAAI6B,EAAkBpC,EAAe+B,EAAO/E,eACxC1G,EAAS8L,EAAgB9L,OACzBF,EAAQgM,EAAgBhM,MAE5B8L,EAAWvL,KAAO4J,EAAQ5J,IAAM4J,EAAQa,UACxCc,EAAWnL,OAAST,EAASiK,EAAQ5J,IACrCuL,EAAWzL,MAAQ8J,EAAQ9J,KAAO8J,EAAQc,WAC1Ca,EAAWrL,MAAQT,EAAQmK,EAAQ9J,MASvC,IAAI4L,EAAqC,kBADzCL,EAAUA,GAAW,GAMrB,OAJAE,EAAWzL,MAAQ4L,EAAkBL,EAAUA,EAAQvL,MAAQ,EAC/DyL,EAAWvL,KAAO0L,EAAkBL,EAAUA,EAAQrL,KAAO,EAC7DuL,EAAWrL,OAASwL,EAAkBL,EAAUA,EAAQnL,OAAS,EACjEqL,EAAWnL,QAAUsL,EAAkBL,EAAUA,EAAQjL,QAAU,EAC5DmL,EAGT,SAASI,EAAQpc,GAGf,OAFYA,EAAKkQ,MACJlQ,EAAKoQ,OAcpB,SAASiM,EAAqBC,EAAWC,EAASV,EAAQvE,EAAWyE,GACnE,IAAID,EAAUxrB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/BgsB,EAAUpH,QAAQ,QACpB,OAAOoH,EAGT,IAAIN,EAAaJ,EAAcC,EAAQvE,EAAWwE,EAASC,GACvDS,EAAQ,CACV/L,IAAK,CACHP,MAAO8L,EAAW9L,MAClBE,OAAQmM,EAAQ9L,IAAMuL,EAAWvL,KAEnCE,MAAO,CACLT,MAAO8L,EAAWrL,MAAQ4L,EAAQ5L,MAClCP,OAAQ4L,EAAW5L,QAErBS,OAAQ,CACNX,MAAO8L,EAAW9L,MAClBE,OAAQ4L,EAAWnL,OAAS0L,EAAQ1L,QAEtCN,KAAM,CACJL,MAAOqM,EAAQhM,KAAOyL,EAAWzL,KACjCH,OAAQ4L,EAAW5L,SAGnBqM,EAAchwB,OAAO+B,KAAKguB,GAAOtuB,KAAI,SAAUa,GACjD,OAAOmrB,EAAS,CACdnrB,IAAKA,GACJytB,EAAMztB,GAAM,CACb2tB,KAAMN,EAAQI,EAAMztB,SAErB4tB,MAAK,SAAUpuB,EAAGquB,GACnB,OAAOA,EAAEF,KAAOnuB,EAAEmuB,QAEhBG,EAAgBJ,EAAYhI,QAAO,SAAU3L,GAC/C,IAAIoH,EAAQpH,EAAMoH,MACdE,EAAStH,EAAMsH,OACnB,OAAOF,GAAS2L,EAAO/J,aAAe1B,GAAUyL,EAAO7J,gBAErD8K,EAAoBD,EAAcztB,OAAS,EAAIytB,EAAc,GAAG9tB,IAAM0tB,EAAY,GAAG1tB,IACrFguB,EAAYT,EAAUruB,MAAM,KAAK,GACrC,OAAO6uB,GAAqBC,EAAY,IAAMA,EAAY,IAc5D,SAASC,EAAoBC,EAAOpB,EAAQvE,GAC1C,IAAIsD,EAAgBtqB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,KACpF4sB,EAAqBtC,EAAgBe,EAA6BE,GAAU3D,EAAuB2D,EAAQxE,EAAiBC,IAChI,OAAOqD,EAAqCrD,EAAW4F,EAAoBtC,GAW7E,SAASuC,EAAcnb,GACrB,IACIuX,EADSvX,EAAQ8U,cAAclb,YACfiS,iBAAiB7L,GACjCZ,EAAIuY,WAAWJ,EAAO2B,WAAa,GAAKvB,WAAWJ,EAAO6D,cAAgB,GAC1EroB,EAAI4kB,WAAWJ,EAAO4B,YAAc,GAAKxB,WAAWJ,EAAO8D,aAAe,GAK9E,MAJa,CACXnN,MAAOlO,EAAQwY,YAAczlB,EAC7Bqb,OAAQpO,EAAQ0Y,aAAetZ,GAanC,SAASkc,EAAqBhB,GAC5B,IAAIiB,EAAO,CACThN,KAAM,QACNI,MAAO,OACPE,OAAQ,MACRJ,IAAK,UAEP,OAAO6L,EAAUnqB,QAAQ,0BAA0B,SAAUqrB,GAC3D,OAAOD,EAAKC,MAehB,SAASC,EAAiB5B,EAAQ6B,EAAkBpB,GAClDA,EAAYA,EAAUruB,MAAM,KAAK,GAEjC,IAAI0vB,EAAaR,EAActB,GAE3B+B,EAAgB,CAClB1N,MAAOyN,EAAWzN,MAClBE,OAAQuN,EAAWvN,QAGjByN,GAAoD,IAA1C,CAAC,QAAS,QAAQ3I,QAAQoH,GACpCwB,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OARAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAGnHJ,EAAcG,GADZzB,IAAcyB,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBJ,EAAqBS,IAGhEH,EAaT,SAAS3uB,EAAKkB,EAAK+tB,GAEjB,OAAI1tB,MAAMjD,UAAU0B,KACXkB,EAAIlB,KAAKivB,GAIX/tB,EAAIskB,OAAOyJ,GAAO,GAuC3B,SAASC,EAAaC,EAAWC,EAAMC,GAmBrC,YAlB8BntB,IAATmtB,EAAqBF,EAAYA,EAAU9uB,MAAM,EA3BxE,SAAmBa,EAAKJ,EAAMoP,GAE5B,GAAI3O,MAAMjD,UAAUsI,UAClB,OAAO1F,EAAI0F,WAAU,SAAU0oB,GAC7B,OAAOA,EAAIxuB,KAAUoP,KAKzB,IAAI7H,EAAQrI,EAAKkB,GAAK,SAAUhD,GAC9B,OAAOA,EAAI4C,KAAUoP,KAEvB,OAAOhP,EAAI+kB,QAAQ5d,GAesDzB,CAAUuoB,EAAW,OAAQE,KACvFzvB,SAAQ,SAAUwqB,GAC3BA,EAAmB,UAErBmF,QAAQC,KAAK,yDAGf,IAAIvmB,EAAKmhB,EAAmB,UAAKA,EAASnhB,GAEtCmhB,EAASxW,SAAW4T,EAAWve,KAIjCmmB,EAAKhE,QAAQwB,OAASzB,EAAciE,EAAKhE,QAAQwB,QACjDwC,EAAKhE,QAAQ/C,UAAY8C,EAAciE,EAAKhE,QAAQ/C,WACpD+G,EAAOnmB,EAAGmmB,EAAMhF,OAGbgF,EAWT,SAASvS,IAEP,IAAIjQ,KAAKohB,MAAMyB,YAAf,CAIA,IAAIL,EAAO,CACTxc,SAAUhG,KACV0d,OAAQ,GACRoF,YAAa,GACbltB,WAAY,GACZmtB,SAAS,EACTvE,QAAS,IAGXgE,EAAKhE,QAAQ/C,UAAY0F,EAAoBnhB,KAAKohB,MAAOphB,KAAKggB,OAAQhgB,KAAKyb,UAAWzb,KAAK2D,QAAQqf,eAInGR,EAAK/B,UAAYD,EAAqBxgB,KAAK2D,QAAQ8c,UAAW+B,EAAKhE,QAAQ/C,UAAWzb,KAAKggB,OAAQhgB,KAAKyb,UAAWzb,KAAK2D,QAAQ4e,UAAUU,KAAK/C,kBAAmBlgB,KAAK2D,QAAQ4e,UAAUU,KAAKhD,SAE9LuC,EAAKU,kBAAoBV,EAAK/B,UAC9B+B,EAAKQ,cAAgBhjB,KAAK2D,QAAQqf,cAElCR,EAAKhE,QAAQwB,OAAS4B,EAAiB5hB,KAAKggB,OAAQwC,EAAKhE,QAAQ/C,UAAW+G,EAAK/B,WACjF+B,EAAKhE,QAAQwB,OAAOmD,SAAWnjB,KAAK2D,QAAQqf,cAAgB,QAAU,WAEtER,EAAOF,EAAatiB,KAAKuiB,UAAWC,GAG/BxiB,KAAKohB,MAAMgC,UAIdpjB,KAAK2D,QAAQ0f,SAASb,IAHtBxiB,KAAKohB,MAAMgC,WAAY,EACvBpjB,KAAK2D,QAAQ2f,SAASd,KAa1B,SAASe,EAAkBhB,EAAWiB,GACpC,OAAOjB,EAAUkB,MAAK,SAAUtf,GAC9B,IAAItK,EAAOsK,EAAKtK,KAEhB,OADcsK,EAAK6C,SACDnN,IAAS2pB,KAY/B,SAASE,EAAyBlb,GAIhC,IAHA,IAAImb,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYpb,EAASqb,OAAO,GAAG5wB,cAAgBuV,EAAS/U,MAAM,GAEzDxC,EAAI,EAAGA,EAAI0yB,EAASpwB,OAAQtC,IAAK,CACxC,IAAI6yB,EAASH,EAAS1yB,GAClB8yB,EAAUD,EAAS,GAAKA,EAASF,EAAYpb,EAEjD,GAA4C,qBAAjC9L,SAASwV,KAAK1U,MAAMumB,GAC7B,OAAOA,EAIX,OAAO,KAST,SAASC,IAqBP,OApBAhkB,KAAKohB,MAAMyB,aAAc,EAErBU,EAAkBvjB,KAAKuiB,UAAW,gBACpCviB,KAAKggB,OAAOtM,gBAAgB,eAC5B1T,KAAKggB,OAAOxiB,MAAM2lB,SAAW,GAC7BnjB,KAAKggB,OAAOxiB,MAAMoX,IAAM,GACxB5U,KAAKggB,OAAOxiB,MAAMkX,KAAO,GACzB1U,KAAKggB,OAAOxiB,MAAMsX,MAAQ,GAC1B9U,KAAKggB,OAAOxiB,MAAMwX,OAAS,GAC3BhV,KAAKggB,OAAOxiB,MAAMymB,WAAa,GAC/BjkB,KAAKggB,OAAOxiB,MAAMkmB,EAAyB,cAAgB,IAG7D1jB,KAAKkkB,wBAGDlkB,KAAK2D,QAAQwgB,iBACfnkB,KAAKggB,OAAO/iB,WAAWc,YAAYiC,KAAKggB,QAGnChgB,KAST,SAASokB,EAAUje,GACjB,IAAI8U,EAAgB9U,EAAQ8U,cAC5B,OAAOA,EAAgBA,EAAclb,YAAcgS,OAGrD,SAASsS,EAAsB1O,EAAc7hB,EAAO+lB,EAAUyK,GAC5D,IAAIC,EAAmC,SAA1B5O,EAAawF,SACtBlb,EAASskB,EAAS5O,EAAasF,cAAclb,YAAc4V,EAC/D1V,EAAOlM,iBAAiBD,EAAO+lB,EAAU,CACvC2K,SAAS,IAGND,GACHF,EAAsBjJ,EAAgBnb,EAAOhD,YAAanJ,EAAO+lB,EAAUyK,GAG7EA,EAAcxvB,KAAKmL,GAUrB,SAASwkB,EAAoBhJ,EAAW9X,EAASyd,EAAOsD,GAEtDtD,EAAMsD,YAAcA,EACpBN,EAAU3I,GAAW1nB,iBAAiB,SAAUqtB,EAAMsD,YAAa,CACjEF,SAAS,IAGX,IAAIG,EAAgBvJ,EAAgBK,GAIpC,OAHA4I,EAAsBM,EAAe,SAAUvD,EAAMsD,YAAatD,EAAMkD,eACxElD,EAAMuD,cAAgBA,EACtBvD,EAAMwD,eAAgB,EACfxD,EAUT,SAASyD,IACF7kB,KAAKohB,MAAMwD,gBACd5kB,KAAKohB,MAAQqD,EAAoBzkB,KAAKyb,UAAWzb,KAAK2D,QAAS3D,KAAKohB,MAAOphB,KAAK8kB,iBAkCpF,SAASZ,IAvBT,IAA8BzI,EAAW2F,EAwBnCphB,KAAKohB,MAAMwD,gBACbG,qBAAqB/kB,KAAK8kB,gBAC1B9kB,KAAKohB,OA1BqB3F,EA0BQzb,KAAKyb,UA1BF2F,EA0BaphB,KAAKohB,MAxBzDgD,EAAU3I,GAAWznB,oBAAoB,SAAUotB,EAAMsD,aAEzDtD,EAAMkD,cAActxB,SAAQ,SAAUiN,GACpCA,EAAOjM,oBAAoB,SAAUotB,EAAMsD,gBAG7CtD,EAAMsD,YAAc,KACpBtD,EAAMkD,cAAgB,GACtBlD,EAAMuD,cAAgB,KACtBvD,EAAMwD,eAAgB,EACfxD,IA0BT,SAAS4D,EAAUhzB,GACjB,MAAa,KAANA,IAAawH,MAAMskB,WAAW9rB,KAAOizB,SAASjzB,GAYvD,SAASkzB,EAAU/e,EAASuX,GAC1B9sB,OAAO+B,KAAK+qB,GAAQ1qB,SAAQ,SAAUkB,GACpC,IAAIixB,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQ9L,QAAQnlB,IAAgB8wB,EAAUtH,EAAOxpB,MACjGixB,EAAO,MAGThf,EAAQ3I,MAAMtJ,GAAQwpB,EAAOxpB,GAAQixB,KA8HzC,IAAIC,EAAYlL,GAAa,WAAWpoB,KAAKD,UAAUwoB,WA0GvD,SAASgL,EAAmB9C,EAAW+C,EAAgBC,GACrD,IAAIC,EAAapyB,EAAKmvB,GAAW,SAAUpe,GAEzC,OADWA,EAAKtK,OACAyrB,KAEdG,IAAeD,GAAcjD,EAAUkB,MAAK,SAAUjG,GACxD,OAAOA,EAAS3jB,OAAS0rB,GAAiB/H,EAASxW,SAAWwW,EAAShB,MAAQgJ,EAAWhJ,SAG5F,IAAKiJ,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IAErCK,EAAY,IAAMJ,EAAgB,IACtC5C,QAAQC,KAAK+C,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAGnJ,OAAOD,EA+HT,IAAIG,EAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAEhLC,GAAkBD,EAAWnyB,MAAM,GAYvC,SAASqyB,GAAUrF,GACjB,IAAIsF,EAAUtxB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GACzEoB,EAAQgwB,GAAgBxM,QAAQoH,GAChCnsB,EAAMuxB,GAAgBpyB,MAAMoC,EAAQ,GAAGM,OAAO0vB,GAAgBpyB,MAAM,EAAGoC,IAC3E,OAAOkwB,EAAUzxB,EAAI0xB,UAAY1xB,EAGnC,IAAI2xB,GACI,OADJA,GAES,YAFTA,GAGgB,mBA8LpB,SAASC,GAAYtG,EAAQmC,EAAeF,EAAkBsE,GAC5D,IAAI3H,EAAU,CAAC,EAAG,GAId4H,GAA0D,IAA9C,CAAC,QAAS,QAAQ/M,QAAQ8M,GAGtCE,EAAYzG,EAAOxtB,MAAM,WAAWC,KAAI,SAAUi0B,GACpD,OAAOA,EAAKn0B,UAIVo0B,EAAUF,EAAUhN,QAAQjmB,EAAKizB,GAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKE,OAAO,YAGjBH,EAAUE,KAAiD,IAArCF,EAAUE,GAASlN,QAAQ,MACnDsJ,QAAQC,KAAK,gFAKf,IAAI6D,EAAa,cACbC,GAAmB,IAAbH,EAAiB,CAACF,EAAU5yB,MAAM,EAAG8yB,GAASpwB,OAAO,CAACkwB,EAAUE,GAASn0B,MAAMq0B,GAAY,KAAM,CAACJ,EAAUE,GAASn0B,MAAMq0B,GAAY,IAAItwB,OAAOkwB,EAAU5yB,MAAM8yB,EAAU,KAAO,CAACF,GAiC9L,OA/BAK,EAAMA,EAAIr0B,KAAI,SAAUs0B,EAAI9wB,GAE1B,IAAIssB,GAAyB,IAAVtsB,GAAeuwB,EAAYA,GAAa,SAAW,QAClEQ,GAAoB,EACxB,OAAOD,EAEN3wB,QAAO,SAAUtD,EAAGquB,GACnB,MAAwB,KAApBruB,EAAEA,EAAEa,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAK8lB,QAAQ0H,IAC/CruB,EAAEA,EAAEa,OAAS,GAAKwtB,EAClB6F,GAAoB,EACbl0B,GACEk0B,GACTl0B,EAAEA,EAAEa,OAAS,IAAMwtB,EACnB6F,GAAoB,EACbl0B,GAEAA,EAAEyD,OAAO4qB,KAEjB,IACF1uB,KAAI,SAAU2C,GACb,OAtGN,SAAiBA,EAAKmtB,EAAaJ,EAAeF,GAEhD,IAAIzvB,EAAQ4C,EAAIyG,MAAM,6BAClB6H,GAASlR,EAAM,GACf+yB,EAAO/yB,EAAM,GAEjB,IAAKkR,EACH,OAAOtO,EAGT,GAA0B,IAAtBmwB,EAAK9L,QAAQ,KAAY,CAe3B,OADWkF,EAVJ,OADC4G,EAEMpD,EAMAF,GAIFM,GAAe,IAAM7e,EAC5B,GAAa,OAAT6hB,GAA0B,OAATA,EAU1B,OANa,OAATA,EACK1sB,KAAKpD,IAAIqH,SAASqZ,gBAAgBI,aAAcpE,OAAO4N,aAAe,GAEtElnB,KAAKpD,IAAIqH,SAASqZ,gBAAgBE,YAAalE,OAAO2N,YAAc,IAG/D,IAAMpc,EAIpB,OAAOA,EA8DEhH,CAAQtH,EAAKmtB,EAAaJ,EAAeF,SAIpD6E,EAAI1zB,SAAQ,SAAU2zB,EAAI9wB,GACxB8wB,EAAG3zB,SAAQ,SAAUszB,EAAMO,GACrB7B,EAAUsB,KACZ9H,EAAQ3oB,IAAUywB,GAA2B,MAAnBK,EAAGE,EAAS,IAAc,EAAI,UAIvDrI,EAkOT,IAAI+D,GAAY,CASduE,MAAO,CAELtK,MAAO,IAGPxV,SAAS,EAGT3K,GA1HJ,SAAemmB,GACb,IAAI/B,EAAY+B,EAAK/B,UACjB0F,EAAgB1F,EAAUruB,MAAM,KAAK,GACrC20B,EAAiBtG,EAAUruB,MAAM,KAAK,GAE1C,GAAI20B,EAAgB,CAClB,IAAIC,EAAgBxE,EAAKhE,QACrB/C,EAAYuL,EAAcvL,UAC1BuE,EAASgH,EAAchH,OACvBiH,GAA2D,IAA9C,CAAC,SAAU,OAAO5N,QAAQ8M,GACvCjJ,EAAO+J,EAAa,OAAS,MAC7B9E,EAAc8E,EAAa,QAAU,SACrCC,EAAe,CACjBtb,MAAO/a,EAAe,GAAIqsB,EAAMzB,EAAUyB,IAC1CN,IAAK/rB,EAAe,GAAIqsB,EAAMzB,EAAUyB,GAAQzB,EAAU0G,GAAenC,EAAOmC,KAElFK,EAAKhE,QAAQwB,OAAS3B,EAAS,GAAI2B,EAAQkH,EAAaH,IAG1D,OAAOvE,IAgJP5C,OAAQ,CAENpD,MAAO,IAGPxV,SAAS,EAGT3K,GAvRJ,SAAgBmmB,EAAMre,GACpB,IAAIyb,EAASzb,EAAKyb,OACda,EAAY+B,EAAK/B,UACjBuG,EAAgBxE,EAAKhE,QACrBwB,EAASgH,EAAchH,OACvBvE,EAAYuL,EAAcvL,UAC1B0K,EAAgB1F,EAAUruB,MAAM,KAAK,GACrCosB,OAAU,EAuBd,OApBEA,EADEwG,GAAWpF,GACH,EAAEA,EAAQ,GAEVsG,GAAYtG,EAAQI,EAAQvE,EAAW0K,GAG7B,SAAlBA,GACFnG,EAAOpL,KAAO4J,EAAQ,GACtBwB,EAAOtL,MAAQ8J,EAAQ,IACI,UAAlB2H,GACTnG,EAAOpL,KAAO4J,EAAQ,GACtBwB,EAAOtL,MAAQ8J,EAAQ,IACI,QAAlB2H,GACTnG,EAAOtL,MAAQ8J,EAAQ,GACvBwB,EAAOpL,KAAO4J,EAAQ,IACK,WAAlB2H,IACTnG,EAAOtL,MAAQ8J,EAAQ,GACvBwB,EAAOpL,KAAO4J,EAAQ,IAGxBgE,EAAKxC,OAASA,EACPwC,GA8PL5C,OAAQ,GAoBVuH,gBAAiB,CAEf3K,MAAO,IAGPxV,SAAS,EAGT3K,GA/QJ,SAAyBmmB,EAAM7e,GAC7B,IAAIuc,EAAoBvc,EAAQuc,mBAAqBjE,EAAgBuG,EAAKxc,SAASga,QAI/EwC,EAAKxc,SAASyV,YAAcyE,IAC9BA,EAAoBjE,EAAgBiE,IAMtC,IAAIkH,EAAgB1D,EAAyB,aACzC2D,EAAe7E,EAAKxc,SAASga,OAAOxiB,MAEpCoX,EAAMyS,EAAazS,IACnBF,EAAO2S,EAAa3S,KACpB4S,EAAYD,EAAaD,GAC7BC,EAAazS,IAAM,GACnByS,EAAa3S,KAAO,GACpB2S,EAAaD,GAAiB,GAC9B,IAAIjH,EAAaJ,EAAcyC,EAAKxc,SAASga,OAAQwC,EAAKxc,SAASyV,UAAW9X,EAAQsc,QAASC,EAAmBsC,EAAKQ,eAGvHqE,EAAazS,IAAMA,EACnByS,EAAa3S,KAAOA,EACpB2S,EAAaD,GAAiBE,EAC9B3jB,EAAQwc,WAAaA,EACrB,IAAI3D,EAAQ7Y,EAAQ4jB,SAChBvH,EAASwC,EAAKhE,QAAQwB,OACtBqC,EAAQ,CACVmF,QAAS,SAAiB/G,GACxB,IAAInd,EAAQ0c,EAAOS,GAMnB,OAJIT,EAAOS,GAAaN,EAAWM,KAAe9c,EAAQ8jB,sBACxDnkB,EAAQ7K,KAAKpD,IAAI2qB,EAAOS,GAAYN,EAAWM,KAG1C5vB,EAAe,GAAI4vB,EAAWnd,IAEvCokB,UAAW,SAAmBjH,GAC5B,IAAIwB,EAAyB,UAAdxB,EAAwB,OAAS,MAC5Cnd,EAAQ0c,EAAOiC,GAMnB,OAJIjC,EAAOS,GAAaN,EAAWM,KAAe9c,EAAQ8jB,sBACxDnkB,EAAQ7K,KAAKrD,IAAI4qB,EAAOiC,GAAW9B,EAAWM,IAA4B,UAAdA,EAAwBT,EAAO3L,MAAQ2L,EAAOzL,UAGrG1jB,EAAe,GAAIoxB,EAAU3e,KAQxC,OALAkZ,EAAMxpB,SAAQ,SAAUytB,GACtB,IAAIvD,GAA+C,IAAxC,CAAC,OAAQ,OAAO7D,QAAQoH,GAAoB,UAAY,YACnET,EAAS3B,EAAS,GAAI2B,EAAQqC,EAAMnF,GAAMuD,OAE5C+B,EAAKhE,QAAQwB,OAASA,EACfwC,GA8NL+E,SAAU,CAAC,OAAQ,QAAS,MAAO,UAQnCtH,QAAS,EAOTC,kBAAmB,gBAYrByH,aAAc,CAEZnL,MAAO,IAGPxV,SAAS,EAGT3K,GAngBJ,SAAsBmmB,GACpB,IAAIwE,EAAgBxE,EAAKhE,QACrBwB,EAASgH,EAAchH,OACvBvE,EAAYuL,EAAcvL,UAC1BgF,EAAY+B,EAAK/B,UAAUruB,MAAM,KAAK,GACtCsG,EAAQD,KAAKC,MACbuuB,GAAuD,IAA1C,CAAC,MAAO,UAAU5N,QAAQoH,GACvCvD,EAAO+J,EAAa,QAAU,SAC9BW,EAASX,EAAa,OAAS,MAC/B9E,EAAc8E,EAAa,QAAU,SAUzC,OARIjH,EAAO9C,GAAQxkB,EAAM+iB,EAAUmM,MACjCpF,EAAKhE,QAAQwB,OAAO4H,GAAUlvB,EAAM+iB,EAAUmM,IAAW5H,EAAOmC,IAG9DnC,EAAO4H,GAAUlvB,EAAM+iB,EAAUyB,MACnCsF,EAAKhE,QAAQwB,OAAO4H,GAAUlvB,EAAM+iB,EAAUyB,KAGzCsF,IA6fPqF,MAAO,CAELrL,MAAO,IAGPxV,SAAS,EAGT3K,GAvwBJ,SAAemmB,EAAM7e,GACnB,IAAImkB,EAGJ,IAAKzC,EAAmB7C,EAAKxc,SAASuc,UAAW,QAAS,gBACxD,OAAOC,EAGT,IAAIuF,EAAepkB,EAAQwC,QAE3B,GAA4B,kBAAjB4hB,GAGT,KAFAA,EAAevF,EAAKxc,SAASga,OAAO7G,cAAc4O,IAGhD,OAAOvF,OAKT,IAAKA,EAAKxc,SAASga,OAAOlP,SAASiX,GAEjC,OADApF,QAAQC,KAAK,iEACNJ,EAIX,IAAI/B,EAAY+B,EAAK/B,UAAUruB,MAAM,KAAK,GACtC40B,EAAgBxE,EAAKhE,QACrBwB,EAASgH,EAAchH,OACvBvE,EAAYuL,EAAcvL,UAC1BwL,GAAuD,IAA1C,CAAC,OAAQ,SAAS5N,QAAQoH,GACvC5hB,EAAMooB,EAAa,SAAW,QAC9Be,EAAkBf,EAAa,MAAQ,OACvC/J,EAAO8K,EAAgBruB,cACvBsuB,EAAUhB,EAAa,OAAS,MAChCW,EAASX,EAAa,SAAW,QACjCiB,EAAmB5G,EAAcyG,GAAclpB,GAM/C4c,EAAUmM,GAAUM,EAAmBlI,EAAO9C,KAChDsF,EAAKhE,QAAQwB,OAAO9C,IAAS8C,EAAO9C,IAASzB,EAAUmM,GAAUM,IAI/DzM,EAAUyB,GAAQgL,EAAmBlI,EAAO4H,KAC9CpF,EAAKhE,QAAQwB,OAAO9C,IAASzB,EAAUyB,GAAQgL,EAAmBlI,EAAO4H,IAG3EpF,EAAKhE,QAAQwB,OAASzB,EAAciE,EAAKhE,QAAQwB,QAEjD,IAAImI,EAAS1M,EAAUyB,GAAQzB,EAAU5c,GAAO,EAAIqpB,EAAmB,EAGnElN,EAAMF,EAAyB0H,EAAKxc,SAASga,QAC7CoI,EAAmBtK,WAAW9C,EAAI,SAAWgN,IAC7CK,EAAmBvK,WAAW9C,EAAI,SAAWgN,EAAkB,UAC/DM,EAAYH,EAAS3F,EAAKhE,QAAQwB,OAAO9C,GAAQkL,EAAmBC,EAKxE,OAHAC,EAAY7vB,KAAKpD,IAAIoD,KAAKrD,IAAI4qB,EAAOnhB,GAAOqpB,EAAkBI,GAAY,GAC1E9F,EAAKuF,aAAeA,EACpBvF,EAAKhE,QAAQqJ,OAAmCh3B,EAA1Bi3B,EAAsB,GAAwC5K,EAAMzkB,KAAKiU,MAAM4b,IAAaz3B,EAAei3B,EAAqBG,EAAS,IAAKH,GAC7JtF,GA2sBLrc,QAAS,aAcX8c,KAAM,CAEJzG,MAAO,IAGPxV,SAAS,EAGT3K,GA1oBJ,SAAcmmB,EAAM7e,GAElB,GAAI4f,EAAkBf,EAAKxc,SAASuc,UAAW,SAC7C,OAAOC,EAGT,GAAIA,EAAKO,SAAWP,EAAK/B,YAAc+B,EAAKU,kBAE1C,OAAOV,EAGT,IAAIrC,EAAaJ,EAAcyC,EAAKxc,SAASga,OAAQwC,EAAKxc,SAASyV,UAAW9X,EAAQsc,QAAStc,EAAQuc,kBAAmBsC,EAAKQ,eAC3HvC,EAAY+B,EAAK/B,UAAUruB,MAAM,KAAK,GACtCm2B,EAAoB9G,EAAqBhB,GACzCS,EAAYsB,EAAK/B,UAAUruB,MAAM,KAAK,IAAM,GAC5Co2B,EAAY,GAEhB,OAAQ7kB,EAAQ8kB,UACd,KAAKxC,GACHuC,EAAY,CAAC/H,EAAW8H,GACxB,MAEF,KAAKtC,GACHuC,EAAY1C,GAAUrF,GACtB,MAEF,KAAKwF,GACHuC,EAAY1C,GAAUrF,GAAW,GACjC,MAEF,QACE+H,EAAY7kB,EAAQ8kB,SA+CxB,OA5CAD,EAAUx1B,SAAQ,SAAU+b,EAAMlZ,GAChC,GAAI4qB,IAAc1R,GAAQyZ,EAAUj1B,SAAWsC,EAAQ,EACrD,OAAO2sB,EAGT/B,EAAY+B,EAAK/B,UAAUruB,MAAM,KAAK,GACtCm2B,EAAoB9G,EAAqBhB,GACzC,IAAIsB,EAAgBS,EAAKhE,QAAQwB,OAC7B0I,EAAalG,EAAKhE,QAAQ/C,UAE1B/iB,EAAQD,KAAKC,MACbiwB,EAA4B,SAAdlI,GAAwB/nB,EAAMqpB,EAAcjN,OAASpc,EAAMgwB,EAAWhU,OAAuB,UAAd+L,GAAyB/nB,EAAMqpB,EAAcrN,MAAQhc,EAAMgwB,EAAW5T,QAAwB,QAAd2L,GAAuB/nB,EAAMqpB,EAAc/M,QAAUtc,EAAMgwB,EAAW9T,MAAsB,WAAd6L,GAA0B/nB,EAAMqpB,EAAcnN,KAAOlc,EAAMgwB,EAAW1T,QACjU4T,EAAgBlwB,EAAMqpB,EAAcrN,MAAQhc,EAAMynB,EAAWzL,MAC7DmU,EAAiBnwB,EAAMqpB,EAAcjN,OAASpc,EAAMynB,EAAWrL,OAC/DgU,EAAepwB,EAAMqpB,EAAcnN,KAAOlc,EAAMynB,EAAWvL,KAC3DmU,EAAkBrwB,EAAMqpB,EAAc/M,QAAUtc,EAAMynB,EAAWnL,QACjEgU,EAAoC,SAAdvI,GAAwBmI,GAA+B,UAAdnI,GAAyBoI,GAAgC,QAAdpI,GAAuBqI,GAA8B,WAAdrI,GAA0BsI,EAE3K9B,GAAuD,IAA1C,CAAC,MAAO,UAAU5N,QAAQoH,GAEvCwI,IAA0BtlB,EAAQulB,iBAAmBjC,GAA4B,UAAd/F,GAAyB0H,GAAiB3B,GAA4B,QAAd/F,GAAuB2H,IAAmB5B,GAA4B,UAAd/F,GAAyB4H,IAAiB7B,GAA4B,QAAd/F,GAAuB6H,GAElQI,IAA8BxlB,EAAQylB,0BAA4BnC,GAA4B,UAAd/F,GAAyB2H,GAAkB5B,GAA4B,QAAd/F,GAAuB0H,IAAkB3B,GAA4B,UAAd/F,GAAyB6H,IAAoB9B,GAA4B,QAAd/F,GAAuB4H,GAClRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExC7G,EAAKO,SAAU,GAEX4F,GAAeK,KACjBvI,EAAY+H,EAAU3yB,EAAQ,IAG5BwzB,IACFnI,EAhJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAGFA,EAyIWoI,CAAqBpI,IAGnCsB,EAAK/B,UAAYA,GAAaS,EAAY,IAAMA,EAAY,IAG5DsB,EAAKhE,QAAQwB,OAAS3B,EAAS,GAAImE,EAAKhE,QAAQwB,OAAQ4B,EAAiBY,EAAKxc,SAASga,OAAQwC,EAAKhE,QAAQ/C,UAAW+G,EAAK/B,YAC5H+B,EAAOF,EAAaE,EAAKxc,SAASuc,UAAWC,EAAM,YAGhDA,GAokBLiG,SAAU,OAMVxI,QAAS,EAQTC,kBAAmB,WASnBgJ,gBAAgB,EAShBE,yBAAyB,GAU3Bve,MAAO,CAEL2R,MAAO,IAGPxV,SAAS,EAGT3K,GAzRJ,SAAemmB,GACb,IAAI/B,EAAY+B,EAAK/B,UACjB0F,EAAgB1F,EAAUruB,MAAM,KAAK,GACrC40B,EAAgBxE,EAAKhE,QACrBwB,EAASgH,EAAchH,OACvBvE,EAAYuL,EAAcvL,UAC1BuG,GAAwD,IAA9C,CAAC,OAAQ,SAAS3I,QAAQ8M,GACpCoD,GAA6D,IAA5C,CAAC,MAAO,QAAQlQ,QAAQ8M,GAI7C,OAHAnG,EAAOgC,EAAU,OAAS,OAASvG,EAAU0K,IAAkBoD,EAAiBvJ,EAAOgC,EAAU,QAAU,UAAY,GACvHQ,EAAK/B,UAAYgB,EAAqBhB,GACtC+B,EAAKhE,QAAQwB,OAASzB,EAAcyB,GAC7BwC,IA2RPpS,KAAM,CAEJoM,MAAO,IAGPxV,SAAS,EAGT3K,GArVJ,SAAcmmB,GACZ,IAAK6C,EAAmB7C,EAAKxc,SAASuc,UAAW,OAAQ,mBACvD,OAAOC,EAGT,IAAI9B,EAAU8B,EAAKhE,QAAQ/C,UACvB+N,EAAQp2B,EAAKovB,EAAKxc,SAASuc,WAAW,SAAU/E,GAClD,MAAyB,oBAAlBA,EAAS3jB,QACfsmB,WAEH,GAAIO,EAAQ1L,OAASwU,EAAM5U,KAAO8L,EAAQhM,KAAO8U,EAAM1U,OAAS4L,EAAQ9L,IAAM4U,EAAMxU,QAAU0L,EAAQ5L,MAAQ0U,EAAM9U,KAAM,CAExH,IAAkB,IAAd8N,EAAKpS,KACP,OAAOoS,EAGTA,EAAKpS,MAAO,EACZoS,EAAK5sB,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAd4sB,EAAKpS,KACP,OAAOoS,EAGTA,EAAKpS,MAAO,EACZoS,EAAK5sB,WAAW,wBAAyB,EAG3C,OAAO4sB,IA2UPiH,aAAc,CAEZjN,MAAO,IAGPxV,SAAS,EAGT3K,GArgCJ,SAAsBmmB,EAAM7e,GAC1B,IAAI4B,EAAI5B,EAAQ4B,EACZrM,EAAIyK,EAAQzK,EACZ8mB,EAASwC,EAAKhE,QAAQwB,OAEtB0J,EAA8Bt2B,EAAKovB,EAAKxc,SAASuc,WAAW,SAAU/E,GACxE,MAAyB,eAAlBA,EAAS3jB,QACf8vB,qBAEiCr0B,IAAhCo0B,GACF/G,QAAQC,KAAK,iIAGf,IAAI+G,OAAkDr0B,IAAhCo0B,EAA4CA,EAA8B/lB,EAAQgmB,gBACpG3V,EAAeiI,EAAgBuG,EAAKxc,SAASga,QAC7C1K,EAAmBnB,EAAsBH,GAEzC0J,EAAS,CACXyF,SAAUnD,EAAOmD,UAEf3E,EAxDN,SAA2BgE,EAAMoH,GAC/B,IAAI5C,EAAgBxE,EAAKhE,QACrBwB,EAASgH,EAAchH,OACvBvE,EAAYuL,EAAcvL,UAC1B/O,EAAQjU,KAAKiU,MACbhU,EAAQD,KAAKC,MAEbmxB,EAAU,SAAiBC,GAC7B,OAAOA,GAGLC,EAAiBrd,EAAM+O,EAAUpH,OACjC2V,EAActd,EAAMsT,EAAO3L,OAC3B4S,GAA4D,IAA/C,CAAC,OAAQ,SAAS5N,QAAQmJ,EAAK/B,WAC5CwJ,GAA+C,IAAjCzH,EAAK/B,UAAUpH,QAAQ,KAGrC6Q,EAAuBN,EAAwB3C,GAAcgD,GAF3CF,EAAiB,IAAMC,EAAc,EAEuCtd,EAAQhU,EAAjEmxB,EACrCM,EAAqBP,EAAwBld,EAAVmd,EACvC,MAAO,CACLnV,KAAMwV,EAJWH,EAAiB,IAAM,GAAKC,EAAc,IAAM,IAItBC,GAAeL,EAAc5J,EAAOtL,KAAO,EAAIsL,EAAOtL,MACjGE,IAAKuV,EAAkBnK,EAAOpL,KAC9BI,OAAQmV,EAAkBnK,EAAOhL,QACjCF,MAAOoV,EAAoBlK,EAAOlL,QAiCtBsV,CAAkB5H,EAAMzQ,OAAOsY,iBAAmB,IAAMjF,GAClExH,EAAc,WAANrY,EAAiB,MAAQ,SACjCsY,EAAc,UAAN3kB,EAAgB,OAAS,QAIjCoxB,EAAmB5G,EAAyB,aAU5ChP,OAAO,EACPE,OAAM,EAwBV,GAlBIA,EAJU,WAAVgJ,EAG4B,SAA1B5J,EAAamH,UACRnH,EAAamC,aAAeqI,EAAQxJ,QAEpCM,EAAiBf,OAASiK,EAAQxJ,OAGrCwJ,EAAQ5J,IAKZF,EAFU,UAAVmJ,EAC4B,SAA1B7J,EAAamH,UACPnH,EAAaiC,YAAcuI,EAAQ1J,OAEnCQ,EAAiBjB,MAAQmK,EAAQ1J,MAGpC0J,EAAQ9J,KAGbiV,GAAmBW,EACrB5M,EAAO4M,GAAoB,eAAiB5V,EAAO,OAASE,EAAM,SAClE8I,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAOuG,WAAa,gBACf,CAEL,IAAIsG,EAAsB,WAAV3M,GAAsB,EAAI,EACtC4M,EAAuB,UAAV3M,GAAqB,EAAI,EAC1CH,EAAOE,GAAShJ,EAAM2V,EACtB7M,EAAOG,GAASnJ,EAAO8V,EACvB9M,EAAOuG,WAAarG,EAAQ,KAAOC,EAIrC,IAAIjoB,EAAa,CACf,cAAe4sB,EAAK/B,WAMtB,OAHA+B,EAAK5sB,WAAayoB,EAAS,GAAIzoB,EAAY4sB,EAAK5sB,YAChD4sB,EAAK9E,OAASW,EAAS,GAAIX,EAAQ8E,EAAK9E,QACxC8E,EAAKM,YAAczE,EAAS,GAAImE,EAAKhE,QAAQqJ,MAAOrF,EAAKM,aAClDN,GAy7BLmH,iBAAiB,EAOjBpkB,EAAG,SAOHrM,EAAG,SAkBLuxB,WAAY,CAEVjO,MAAO,IAGPxV,SAAS,EAGT3K,GAxpCJ,SAAoBmmB,GAtBpB,IAAuBrc,EAASvQ,EAoC9B,OATAsvB,EAAU1C,EAAKxc,SAASga,OAAQwC,EAAK9E,QA3BhBvX,EA8BPqc,EAAKxc,SAASga,OA9BEpqB,EA8BM4sB,EAAK5sB,WA7BzChF,OAAO+B,KAAKiD,GAAY5C,SAAQ,SAAUkB,IAG1B,IAFF0B,EAAW1B,GAGrBiS,EAAQukB,aAAax2B,EAAM0B,EAAW1B,IAEtCiS,EAAQuN,gBAAgBxf,MAyBxBsuB,EAAKuF,cAAgBn3B,OAAO+B,KAAK6vB,EAAKM,aAAavvB,QACrD2xB,EAAU1C,EAAKuF,aAAcvF,EAAKM,aAG7BN,GA6oCLmI,OA/nCJ,SAA0BlP,EAAWuE,EAAQrc,EAASinB,EAAiBxJ,GAErE,IAAIS,EAAmBV,EAAoBC,EAAOpB,EAAQvE,EAAW9X,EAAQqf,eAIzEvC,EAAYD,EAAqB7c,EAAQ8c,UAAWoB,EAAkB7B,EAAQvE,EAAW9X,EAAQ4e,UAAUU,KAAK/C,kBAAmBvc,EAAQ4e,UAAUU,KAAKhD,SAO9J,OANAD,EAAO0K,aAAa,cAAejK,GAGnCyE,EAAUlF,EAAQ,CAChBmD,SAAUxf,EAAQqf,cAAgB,QAAU,aAEvCrf,GA0nCLgmB,qBAAiBr0B,IAuCjBu1B,GAAW,CAKbpK,UAAW,SAMXuC,eAAe,EAMf4B,eAAe,EAOfT,iBAAiB,EAQjBb,SAAU,aAUVD,SAAU,aAOVd,UAAWA,IAcTuI,GAAS,WASX,SAASA,EAAOrP,EAAWuE,GACzB,IAAI/U,EAAQjL,KAER2D,EAAUlP,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAClFypB,EAAele,KAAM8qB,GAErB9qB,KAAK8kB,eAAiB,WACpB,OAAOiG,sBAAsB9f,EAAMgF,SAIrCjQ,KAAKiQ,OAASqK,EAASta,KAAKiQ,OAAOpc,KAAKmM,OAExCA,KAAK2D,QAAU0a,EAAS,GAAIyM,EAAOD,SAAUlnB,GAE7C3D,KAAKohB,MAAQ,CACXyB,aAAa,EACbO,WAAW,EACXkB,cAAe,IAGjBtkB,KAAKyb,UAAYA,GAAaA,EAAUuP,OAASvP,EAAU,GAAKA,EAChEzb,KAAKggB,OAASA,GAAUA,EAAOgL,OAAShL,EAAO,GAAKA,EAEpDhgB,KAAK2D,QAAQ4e,UAAY,GACzB3xB,OAAO+B,KAAK0rB,EAAS,GAAIyM,EAAOD,SAAStI,UAAW5e,EAAQ4e,YAAYvvB,SAAQ,SAAU6G,GACxFoR,EAAMtH,QAAQ4e,UAAU1oB,GAAQwkB,EAAS,GAAIyM,EAAOD,SAAStI,UAAU1oB,IAAS,GAAI8J,EAAQ4e,UAAY5e,EAAQ4e,UAAU1oB,GAAQ,OAGpImG,KAAKuiB,UAAY3xB,OAAO+B,KAAKqN,KAAK2D,QAAQ4e,WAAWlwB,KAAI,SAAUwH,GACjE,OAAOwkB,EAAS,CACdxkB,KAAMA,GACLoR,EAAMtH,QAAQ4e,UAAU1oB,OAE5BinB,MAAK,SAAUpuB,EAAGquB,GACjB,OAAOruB,EAAE8pB,MAAQuE,EAAEvE,SAMrBxc,KAAKuiB,UAAUvvB,SAAQ,SAAU43B,GAC3BA,EAAgB5jB,SAAW4T,EAAWgQ,EAAgBD,SACxDC,EAAgBD,OAAO1f,EAAMwQ,UAAWxQ,EAAM+U,OAAQ/U,EAAMtH,QAASinB,EAAiB3f,EAAMmW,UAIhGphB,KAAKiQ,SACL,IAAI2U,EAAgB5kB,KAAK2D,QAAQihB,cAE7BA,GAEF5kB,KAAK6kB,uBAGP7kB,KAAKohB,MAAMwD,cAAgBA,EAiD7B,OA5CAzG,EAAY2M,EAAQ,CAAC,CACnB53B,IAAK,SACLoQ,MAAO,WACL,OAAO2M,EAAO7b,KAAK4L,QAEpB,CACD9M,IAAK,UACLoQ,MAAO,WACL,OAAO0gB,EAAQ5vB,KAAK4L,QAErB,CACD9M,IAAK,uBACLoQ,MAAO,WACL,OAAOuhB,EAAqBzwB,KAAK4L,QAElC,CACD9M,IAAK,wBACLoQ,MAAO,WACL,OAAO4gB,EAAsB9vB,KAAK4L,UA0B/B8qB,EAjHI,GAwIbA,GAAOG,OAA2B,qBAAXlZ,OAAyBA,OAASmZ,GAAQC,YACjEL,GAAOlF,WAAaA,EACpBkF,GAAOD,SAAWA,GACH,c,sCCtjFf,QAEmBO,EAFnB,cAAmD,OAAO/5B,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEtT85B,EAEV,WACP,aAsfA,OA/eA,SAAsBC,GAEpB,IAcIjlB,EAEAklB,EAhBAC,EAAM7uB,SACNyW,EAAYkY,EAASlY,WAAaoY,EAAIC,cAAc,OACpDC,EAAiBtY,EAAU3V,MAC3B6c,EAAYxoB,UAAUwoB,UACtBqR,GAAiBrR,EAAUhB,QAAQ,aAAegB,EAAUhB,QAAQ,UACpEsS,EAAiBN,EAASM,gBAAkB,EAC5CC,EAAgBP,EAASO,gBAAiB,EAC1CC,EAAoBR,EAASQ,oBAAqB,EAElDC,EAAiBJ,EAAgB,QAAU,QAC3Ch3B,EAAQ,GACRq3B,EAAa,GACbptB,EAAS,EACT4D,EAAc8oB,EAAS9oB,YAEvBypB,EAAkB,EAOtB,QAJ2B12B,IAAvB+1B,EAASY,YACXttB,EAAS0sB,EAASY,YAGfZ,EAASa,MACZ,MAAM,IAAI5wB,MAAM,mBAGlB,IAAI4wB,EAAQb,EAASa,MAoBrB,SAASC,IACHb,GACFvZ,OAAOre,aAAa43B,GAkBxB,SAASc,IACP,QAASjZ,EAAUlW,WAOrB,SAASrJ,IAxCT,IACMiM,EAyCJmsB,IACAt3B,EAAQ,GACRq3B,EAAa,GACb3lB,OAAW9Q,GA5CPuK,EAASsT,EAAUlW,aAGrB4C,EAAO9B,YAAYoV,GA+FvB,SAASlD,IAEP,KAAOkD,EAAUrV,YACfqV,EAAUpV,YAAYoV,EAAUrV,YAIlC,IAAI+R,EAAS,SAAgBhb,EAAMw3B,GACjC,IAAIC,EAAcf,EAAIC,cAAc,OAEpC,OADAc,EAAY/gB,YAAc1W,EAAK03B,OAAS,GACjCD,GAGLjB,EAASxb,SACXA,EAASwb,EAASxb,QAIpB,IAAI2c,EAAc,SAAqBC,EAAWJ,GAChD,IAAIK,EAAWnB,EAAIC,cAAc,OAEjC,OADAkB,EAASnhB,YAAckhB,EAChBC,GAGLrB,EAASmB,cACXA,EAAcnB,EAASmB,aAGzB,IAAIG,EAAWpB,EAAIqB,yBACfC,EAAY,OA+BhB,GA9BAn4B,EAAM1B,SAAQ,SAAU6B,GACtB,GAAIA,EAAKi4B,OAASj4B,EAAKi4B,QAAUD,EAAW,CAC1CA,EAAYh4B,EAAKi4B,MACjB,IAAIJ,EAAWF,EAAY33B,EAAKi4B,MAAOf,GAEnCW,IACFA,EAASlhB,WAAa,SACtBmhB,EAASjlB,YAAYglB,IAIzB,IAAIK,EAAMld,EAAOhb,EAAMk3B,GAEnBgB,IACFA,EAAIh5B,iBAAiB,SAAS,SAAUyM,GACtC6qB,EAAS2B,SAASn4B,EAAMq3B,GACxBt4B,IACA4M,EAAGyQ,iBACHzQ,EAAGysB,qBAGDp4B,IAASuR,IACX2mB,EAAIvhB,WAAa,aAGnBmhB,EAASjlB,YAAYqlB,OAGzB5Z,EAAUzL,YAAYilB,GAElBj4B,EAAMnB,OAAS,EAAG,CACpB,IAAI83B,EAAS6B,SAOX,YADAt5B,IALA,IAAIu5B,EAAQ5B,EAAIC,cAAc,OAC9B2B,EAAM3hB,UAAY,QAClB2hB,EAAM5hB,YAAc8f,EAAS6B,SAC7B/Z,EAAUzL,YAAYylB,GA7IrBha,EAAUlW,YACbsuB,EAAIrZ,KAAKxK,YAAYyL,GA6BzB,WACE,GAAKiZ,IAAL,CAIAX,EAAelX,OAAS,OACxBkX,EAAepX,MAAQ6X,EAAMvN,YAAc,KAC3C,IACIyO,EADAC,EAAY,EA2BhBC,IACAA,IAEIjC,EAASkC,WAAaH,GACxB/B,EAASkC,UAAUrB,EAAOkB,EAAWja,EAAWka,GA5BlD,SAASC,IACP,IAAIE,EAAQjC,EAAIxV,gBACZ0X,EAAYD,EAAMC,WAAalC,EAAIrZ,KAAKub,WAAa,EACrDC,EAAaF,EAAME,YAAcnC,EAAIrZ,KAAKwb,YAAc,EACxDlY,EAAYzD,OAAO4b,aAAeH,EAAMhY,UACxCD,EAAaxD,OAAO6b,aAAeJ,EAAMjY,WAEzCX,GADJwY,EAAYlB,EAAM/X,yBACES,IAAMsX,EAAMrN,aAAerJ,EAAYiY,EACvD/Y,EAAO0Y,EAAU1Y,KAAOa,EAAamY,EACzCjC,EAAe7W,IAAMA,EAAM,KAC3B6W,EAAe/W,KAAOA,EAAO,MAC7B2Y,EAAYtb,OAAO4N,aAAeyN,EAAUxY,IAAMsX,EAAMrN,eAExC,IACdwO,EAAY,GAGd5B,EAAe7W,IAAMA,EAAM,KAC3B6W,EAAezW,OAAS,GACxByW,EAAe/W,KAAOA,EAAO,KAC7B+W,EAAe4B,UAAYA,EAAY,MAyFzCQ,GAgFF,WACE,IAAIC,EAAW3a,EAAU4a,uBAAuB,YAEhD,GAAID,EAASv6B,OAAS,EAAG,CACvB,IAAI4S,EAAU2nB,EAAS,GAEnBE,EAAW7nB,EAAQ8nB,uBAMvB,GAJID,IAAqD,IAAzCA,EAASxiB,UAAU6N,QAAQ,WAAoB2U,EAASC,yBACtE9nB,EAAU6nB,GAGR7nB,EAAQ+nB,UAAY/a,EAAUqC,UAChCrC,EAAUqC,UAAYrP,EAAQ+nB,cACzB,CACL,IAAIC,EAAehoB,EAAQ+nB,UAAY/nB,EAAQ0Y,aAC3CuP,EAAkBjb,EAAUqC,UAAYrC,EAAU0L,aAElDsP,EAAeC,IACjBjb,EAAUqC,WAAa2Y,EAAeC,KAlG5CC,GAGF,SAASC,IACHlC,KACFnc,IAIJ,SAASse,IACPD,IAGF,SAASE,EAAmB58B,GACtBA,EAAEqO,SAAWkT,EACfmb,IAEA18B,EAAEqf,iBAIN,SAASwd,EAAkBjuB,GA0BzB,IAzBA,IAAIkuB,EAAUluB,EAAGmuB,OAASnuB,EAAGkuB,SAAW,EAyB/B7mB,EAAK,EAAG+mB,EAxBJvD,EAASwD,cAAgB,CAAC,GAErC,GAEA,GAEA,GAEA,GAEA,GAEA,GAEA,GAEA,GAEA,GAEA,GAIkChnB,EAAK+mB,EAASr7B,OAAQsU,IAGxD,GAAI6mB,IAFME,EAAS/mB,GAGjB,OAIA6mB,GAAW,KAEZA,GAAW,MAEVrD,EAASwD,cAKG,KAAZH,GAEDtC,KAIH0C,EAAW,GA6Eb,SAASC,EAAoBvuB,GAC3B,IAAIkuB,EAAUluB,EAAGmuB,OAASnuB,EAAGkuB,SAAW,EAExC,GAAgB,KAAZA,GAEW,KAAZA,GAEY,KAAZA,EAED,CACA,IAAIM,EAAuB5C,IAE3B,GAAgB,KAAZsC,EAGF96B,QACK,CACL,IAAKo7B,GAAwBt6B,EAAMnB,OAAS,EAC1C,OAGU,KAAZm7B,EA5DN,WACE,GAAIh6B,EAAMnB,OAAS,EACjB6S,OAAW9Q,OAEX,GAAI8Q,IAAa1R,EAAM,GACrB0R,EAAW1R,EAAMA,EAAMnB,OAAS,QAEhC,IAAK,IAAItC,EAAIyD,EAAMnB,OAAS,EAAGtC,EAAI,EAAGA,IACpC,GAAImV,IAAa1R,EAAMzD,IAAY,IAANA,EAAS,CACpCmV,EAAW1R,EAAMzD,EAAI,GACrB,OAoDFg+B,GAzCR,WAKE,GAJIv6B,EAAMnB,OAAS,IACjB6S,OAAW9Q,GAGR8Q,GAAYA,IAAa1R,EAAMA,EAAMnB,OAAS,IAKnD,IAAK,IAAItC,EAAI,EAAGA,EAAIyD,EAAMnB,OAAS,EAAGtC,IACpC,GAAImV,IAAa1R,EAAMzD,GAAI,CACzBmV,EAAW1R,EAAMzD,EAAI,GACrB,YAPFmV,EAAW1R,EAAM,GAmCEw6B,GACjBjf,IASF,OANAzP,EAAGyQ,sBAEC+d,GACFxuB,EAAGysB,mBAMS,KAAZyB,IAGEtoB,IACFilB,EAAS2B,SAAS5mB,EAAU8lB,GAC5Bt4B,KAGEg4B,GACFprB,EAAGyQ,kBAKT,SAASke,IACH5sB,GACFusB,EAAW,GAMf,SAASA,EAAWM,GAIlB,IAAIC,IAAyBrD,EACzBsD,EAAYpD,EAAM5oB,MAClBisB,EAAYrD,EAAMsD,gBAAkB,EAEpCF,EAAU/7B,QAAUoL,GAAsB,IAAZywB,GAGhCjD,IACAb,EAAgBvZ,OAAOpe,YAAW,WAChC03B,EAASoE,MAAMH,GAAW,SAAUxB,GAC9B9B,IAAoBqD,GAAwBvB,IAE9C/B,EAAauD,EACblpB,GAFA1R,EAAQo5B,GAESv6B,OAAS,GAAKs4B,OAAoBv2B,EAAYZ,EAAM,GACrEub,OAEDmf,EAASG,KACC,IAAZH,EAEDzD,EAAiB,IAEnB/3B,IAIJ,SAAS87B,IAEP/7B,YAAW,WACL43B,EAAIjuB,gBAAkB4uB,GACxBt4B,MAED,KAyCL,OA7cAuf,EAAU3H,UAAY,iBAAmB6f,EAAS7f,WAAa,IAE/DigB,EAAetI,SAAW,WAya1BhQ,EAAUpf,iBAAiB,aAAa,SAAU47B,GAChDA,EAAI1C,kBACJ0C,EAAI1e,oBAONkC,EAAUpf,iBAAiB,SAAS,WAClC,OAAOm4B,EAAMvS,WAkBfuS,EAAMn4B,iBAAiB,UAAWg7B,GAClC7C,EAAMn4B,iBAAiB+3B,EAAgB2C,GACvCvC,EAAMn4B,iBAAiB,OAAQ27B,GAC/BxD,EAAMn4B,iBAAiB,QAASo7B,GAChCpd,OAAOhe,iBAAiB,SAAUw6B,GAClChD,EAAIx3B,iBAAiB,SAAUy6B,GAAoB,GAC5C,CACLxK,QAnBF,WACEkI,EAAMl4B,oBAAoB,QAASm7B,GACnCjD,EAAMl4B,oBAAoB,UAAW+6B,GACrC7C,EAAMl4B,oBAAoB83B,EAAgB2C,GAC1CvC,EAAMl4B,oBAAoB,OAAQ07B,GAClC3d,OAAO/d,oBAAoB,SAAUu6B,GACrChD,EAAIv3B,oBAAoB,SAAUw6B,GAAoB,GACtDrC,IACAv4B,QAzekE,WAAtBvC,EAAQd,IAA4C,qBAAXD,EAAyBA,EAAOC,QAAU66B,SAAuE,2BAAd,KAAc,mC,iCCH5M,SAASwE,EAA2Br9B,EAAGs9B,GAAkB,IAAIC,EAAuB,qBAAXv+B,QAA0BgB,EAAEhB,OAAOC,WAAae,EAAE,cAAe,IAAKu9B,EAAI,CAAE,GAAIn7B,MAAMsJ,QAAQ1L,KAAOu9B,EAE9K,SAAqCv9B,EAAGoM,GAAU,IAAKpM,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAOiM,EAAkBjM,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAc,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAM,GAAU,QAAN7H,GAAqB,QAANA,EAAa,OAAO2C,MAAMoD,KAAKxF,GAAI,GAAU,cAANP,GAAqB,2CAA2CF,KAAKE,GAAI,OAAOwM,EAAkBjM,EAAGoM,GAFnOP,CAA4B7L,KAAOs9B,GAAkBt9B,GAAyB,kBAAbA,EAAEgB,OAAqB,CAAMu8B,IAAIv9B,EAAIu9B,GAAI,IAAI7+B,EAAI,EAAO8+B,EAAI,aAAiB,MAAO,CAAEC,EAAGD,EAAG/9B,EAAG,WAAe,OAAIf,GAAKsB,EAAEgB,OAAe,CAAE4U,MAAM,GAAe,CAAEA,MAAM,EAAO7E,MAAO/Q,EAAEtB,OAAWW,EAAG,SAAWmW,GAAM,MAAMA,GAAOnV,EAAGm9B,GAAO,MAAM,IAAI1xB,UAAU,yIAA4I,IAA6C+J,EAAzC6nB,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEF,EAAG,WAAeF,EAAKA,EAAG17B,KAAK7B,IAAOP,EAAG,WAAe,IAAI+c,EAAO+gB,EAAG15B,OAAsC,OAA9B65B,EAAmBlhB,EAAK5G,KAAa4G,GAASnd,EAAG,SAAWu+B,GAAOD,GAAS,EAAM9nB,EAAM+nB,GAAQv9B,EAAG,WAAe,IAAWq9B,GAAiC,MAAbH,EAAGM,QAAgBN,EAAGM,SAAY,QAAU,GAAIF,EAAQ,MAAM9nB,KAIz9B,SAAS5J,EAAkBlK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAEhL,SAASoH,EAAgBF,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAEhH,SAASoH,EAAkBxF,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAI7S,SAASzT,IACP,MAAO,UAAUiE,OAAOsC,KAAK43B,SAASn1B,WAAWzH,MAAM,EAAG,IAb5D,kCA6BA,IAAI68B,IAAMz+B,UAAUwoB,UAAU5e,MAAM,aAChC/I,EAAiB,WACnB,SAASA,EAAEf,EAAGC,GACZ,IAAIuS,EAAO1P,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC3E87B,EAAkBpsB,EAAKqsB,WACvBR,OAAwB,IAApBO,GAAkCA,EAE1CrqB,EAAgBlG,KAAMtN,GAEtBsN,KAAKksB,WAAQ,EACblsB,KAAKywB,UAAO,EACZzwB,KAAKwwB,gBAAa,EAClBxwB,KAAK0wB,eAAgB,EACrB1wB,KAAKksB,MAAQv6B,EAAGqO,KAAKywB,KAAO7+B,EAAGoO,KAAKwwB,WAAaR,EAAGhwB,KAAKywB,KAAKhqB,KAAOzG,KAAKywB,KAAKhqB,GAAKvU,KAAM8N,KAAKksB,MAAMxB,aAAa,gBAAiB,SAAU1qB,KAAKksB,MAAMxB,aAAa,OAAQ,YAAa1qB,KAAKksB,MAAMxB,aAAa,gBAAiB,WAAY1qB,KAAKksB,MAAMxB,aAAa,gBAAiB1qB,KAAKywB,KAAKhqB,IAAKzG,KAAKksB,MAAMxB,aAAa,oBAAqB,QAAS1qB,KAAKywB,KAAK/F,aAAa,OAAQ,WAAY1qB,KAAKwwB,YAAcxwB,KAAKksB,MAAMxB,aAAa,uBAAwB,QAAS1qB,KAAKsX,UAAYtX,KAAKsX,UAAUzjB,KAAKmM,MAAOA,KAAK2wB,QAAU3wB,KAAK2wB,QAAQ98B,KAAKmM,MAAOA,KAAK4wB,gBAAkB5wB,KAAK4wB,gBAAgB/8B,KAAKmM,MAAOA,KAAK6wB,gBAAkB7wB,KAAK6wB,gBAAgBh9B,KAAKmM,MAhCrpB,IAAsBiG,EAAaK,EAAYC,EA+M7C,OA/MoBN,EAmCPvT,EAnCoB4T,EAmCjB,CAAC,CACfpT,IAAK,QACLoQ,MAAO,WACLtD,KAAK0wB,eAAgB,EAAI1wB,KAAKksB,MAAMxB,aAAa,gBAAiB,QAAS1qB,KAAK8wB,gCAAiC9wB,KAAKksB,MAAMn4B,iBAAiB,UAAWiM,KAAKsX,WAAYtX,KAAKywB,KAAK18B,iBAAiB,QAASiM,KAAK2wB,SAAU3wB,KAAKywB,KAAK18B,iBAAiB,YAAaiM,KAAK4wB,iBAAkB5wB,KAAKywB,KAAK18B,iBAAiB,YAAaiM,KAAK6wB,mBAEzU,CACD39B,IAAK,OACLoQ,MAAO,WACLtD,KAAK0wB,eAAgB,EAAI1wB,KAAK+wB,oBAAqB/wB,KAAKksB,MAAMxB,aAAa,gBAAiB,SAAU1qB,KAAKksB,MAAMl4B,oBAAoB,UAAWgM,KAAKsX,WAAYtX,KAAKywB,KAAKz8B,oBAAoB,QAASgM,KAAK2wB,SAAU3wB,KAAKywB,KAAKz8B,oBAAoB,YAAagM,KAAK4wB,iBAAkB5wB,KAAKywB,KAAKz8B,oBAAoB,YAAagM,KAAK6wB,mBAE1U,CACD39B,IAAK,YACLoQ,MAAO,SAAmB3R,GACxB,GAAIqO,KAAK0wB,eAAgB,IAAM/+B,EAAE6lB,UAAY7lB,EAAE0lB,SAAW1lB,EAAEq/B,UAAcV,IAAK3+B,EAAEylB,SAAU,OAAQzlB,EAAEuB,KACnG,IAAK,QACL,IAAK,OAgKb,SAAWjC,GACT,IAAIU,EAAIV,EAAEkoB,cAAc,mBACxB,QAAOxnB,IAAKK,EAAEL,IAAMA,EAAEs/B,SAAS,IAjKvB72B,CAAE4F,KAAKywB,OAAS9+B,EAAEsf,iBAClB,MAEF,IAAK,SACHjR,KAAK+wB,oBACL,MAEF,IAAK,YACH/wB,KAAKkxB,KAAK,GAAIv/B,EAAEsf,iBAChB,MAEF,IAAK,UACHjR,KAAKkxB,MAAM,GAAIv/B,EAAEsf,oBAOtB,CACD/d,IAAK,UACLoQ,MAAO,SAAiB3R,GACtB,IAAIC,EAAIZ,EAAEW,EAAEsO,SACXrO,IAAMI,EAAEJ,KAAOoO,KAAKmxB,aAAav/B,GAAIA,EAAEyd,cAAc,IAAIC,YAAY,kBAAmB,CACvF8hB,SAAS,QAGZ,CACDl+B,IAAK,kBACLoQ,MAAO,SAAyB3R,GAC9B,GAAKqO,KAAK0wB,cAAV,CAKA,IAAI9+B,EAAIZ,EAAEW,EAAEsO,SACXrO,GAAKoO,KAAKqxB,UAAUz/B,EAAG,CACtB0/B,QAAQ,SANR3/B,EAAEsf,mBASL,CACD/d,IAAK,kBACLoQ,MAAO,SAAyB3R,GAC9B,IAAIqO,KAAK0wB,cAAT,CACA1wB,KAAK0wB,eAAgB,EACrB,IAAI9+B,EAAIZ,EAAEW,EAAEsO,SACXrO,GAAKoO,KAAKqxB,UAAUz/B,EAAG,CACtB0/B,QAAQ,OAGX,CACDp+B,IAAK,OACLoQ,MAAO,SAAc3R,GACnB,IAAIC,EAlGV,SAAWX,EAAGU,EAAGC,GACf,IAAIo+B,EAAI/+B,EAAEooB,QAAQ1nB,GAClBq+B,IAAM/+B,EAAEsC,OAAS,GAAW,IAAN3B,IAAYo+B,GAAK,GACvC,IAAIx9B,EAAU,IAANZ,EAAU,EAAIX,EAAEsC,OAAS,EAEjC,GAAI5B,GAAKq+B,GAAK,EAAG,CACf,IAAIz9B,EAAIy9B,EAAIp+B,EACZW,GAAK,GAAKA,EAAItB,EAAEsC,SAAWf,EAAID,GAGjC,OAAOtB,EAAEuB,GAwFGM,CAAEkN,KAAKuxB,eAAgBvxB,KAAKwxB,aAAc7/B,GAClDqO,KAAKqxB,UAAUz/B,KAEhB,CACDsB,IAAK,eACLoQ,MAAO,SAAsB3R,GAC3B,GAAIqO,KAAKwwB,WAAY7+B,EAAE+4B,aAAa,iBAAsD,SAApC/4B,EAAE8/B,aAAa,kBAA6Bv2B,gBAAiB,CACjH,IACIw2B,EADAC,EAAY/B,EAA2B5vB,KAAK2D,QAAQiV,OAAO5mB,IAG/D,IACE,IAAK2/B,EAAU3B,MAAO0B,EAAQC,EAAU3/B,KAAKmW,MAAO,CAClD,IAAIvW,EAAI8/B,EAAMpuB,MACd1R,EAAE84B,aAAa,iBAAkB94B,IAAMD,GAAGuJ,aAE5C,MAAOkN,GACPupB,EAAU//B,EAAEwW,GACZ,QACAupB,EAAU/+B,QAIf,CACDM,IAAK,YACLoQ,MAAO,SAAmB3R,GACxB,IAAIsb,EAAQxY,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC5Em9B,EAAe3kB,EAAMqkB,OACrB1/B,OAAqB,IAAjBggC,GAA+BA,EAEvC,GAAKjgC,EAAL,CAKA,IACIkgC,EADAC,EAAalC,EAA2B5vB,KAAK2D,SAGjD,IACE,IAAKmuB,EAAW9B,MAAO6B,EAASC,EAAW9/B,KAAKmW,MAAO,CACrD,IAAI6nB,EAAI6B,EAAOvuB,MACf0sB,IAAMr+B,GAAKqO,KAAKksB,MAAMxB,aAAa,wBAAyBsF,EAAEvpB,IAAKupB,EAAEtF,aAAa,gBAAiB,IAAK94B,GAAKo+B,EAAE+B,eAAe,CAC5HC,MAAO,aACHhC,EAAEtc,gBAAgB,kBAE1B,MAAOtL,GACP0pB,EAAWlgC,EAAEwW,GACb,QACA0pB,EAAWl/B,UAjBXoN,KAAK+wB,sBAoBR,CACD79B,IAAK,oBACLoQ,MAAO,WACLtD,KAAKksB,MAAMxY,gBAAgB,yBAE3B,IACIue,EADAC,EAAatC,EAA2B5vB,KAAKywB,KAAKvjB,iBAAiB,oBAGvE,IACE,IAAKglB,EAAWlC,MAAOiC,EAASC,EAAWlgC,KAAKmW,MACtC8pB,EAAO3uB,MACboQ,gBAAgB,iBAEpB,MAAOtL,GACP8pB,EAAWtgC,EAAEwW,GACb,QACA8pB,EAAWt/B,OAGd,CACDM,IAAK,gCACLoQ,MAAO,WACL,IACI6uB,EADAC,EAAaxC,EAA2B5vB,KAAK2D,SAGjD,IACE,IAAKyuB,EAAWpC,MAAOmC,EAASC,EAAWpgC,KAAKmW,MAAO,CACrD,IAAIxW,EAAIwgC,EAAO7uB,MACf3R,EAAE+4B,aAAa,WAAY,MAAO14B,EAAEL,KAAOA,EAAE0gC,aAAa,kBAAoB1gC,EAAE+4B,aAAa,gBAAiB,SAAU/4B,EAAE8U,KAAO9U,EAAE8U,GAAKvU,MAE1I,MAAOkW,GACPgqB,EAAWxgC,EAAEwW,GACb,QACAgqB,EAAWx/B,OAGd,CACDM,IAAK,eACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAKywB,KAAKvjB,iBAAiB,oBAAoB,KAElE,CACDha,IAAK,iBACLnC,IAAK,WACH,OAAOiP,KAAK2D,QAAQiV,OAAOhmB,KAE5B,CACDM,IAAK,UACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAKywB,KAAKvjB,iBAAiB,uBA3Me5G,GAAYb,EAAkBQ,EAAYvU,UAAW4U,GAAiBC,GAAad,EAAkBQ,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IA+MrPnT,EA3LY,GAmMrB,SAAS1B,EAAEC,GACT,KAAMA,aAAaioB,aAAc,OAAO,EACxC,IAAIvnB,EAAIV,EAAEqhC,QAAQ,mBAClB,OAAO3gC,aAAaunB,aAAcvnB,EAGpC,SAASiB,EAAE3B,GACT,OAAQA,EAAEshC,UAAYthC,aAAauhC,kBAA+B,WAAXvhC,EAAEie,QAAuBje,EAAE0tB,YAAc,GAAK1tB,EAAE4tB,aAAe,GAGxH,SAAS7sB,EAAEf,GACT,OAAQA,EAAEohC,aAAa,aAAmD,SAApCphC,EAAEwgC,aAAa,mB,oBC5OvD,UAEmBrG,EAFnB,cAAoD,OAAOqH,EAAW,mBAAqBlhC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQmhC,EAASnhC,GAEzT85B,EAEV,SAAU76B,GACjB,aAEA,IAAImiC,EAAW,CACbC,OAAQ3oB,KAAK2Y,QACbiQ,UAAW5oB,KAAK4oB,WAEdD,EAAS,CACXE,IAAK,WACH,GAAI7yB,KAAKgH,QAAS,CAGhB,IAFA,IAAI8rB,EAEKt+B,EAAOC,UAAUlB,OAAQw/B,EAAWp+B,MAAMH,GAAOI,EAAO,EAAGA,EAAOJ,EAAMI,IAC/Em+B,EAASn+B,GAAQH,UAAUG,GAG7Bm+B,EAASj+B,KAAK2B,KAAKu8B,QAElBF,EAAmBJ,EAASC,QAAQE,IAAI97B,MAAM+7B,EAAkB,CAAC,iBAAiB38B,OAAO48B,OAK5F1hC,EAA4B,oBAAXE,QAAuD,WAA9BkhC,EAASlhC,OAAOC,UAAyB,SAAUF,GAC/F,OAAOmhC,EAASnhC,IACd,SAAUA,GACZ,OAAOA,GAAyB,oBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,SAAW+gC,EAASnhC,IAGzH4sB,EAAiB,SAAwBlY,EAAUC,GACrD,KAAMD,aAAoBC,GACxB,MAAM,IAAI5H,UAAU,sCAIpB8f,EAAc,WAChB,SAASC,EAAiBne,EAAQyF,GAChC,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CACrC,IAAI0U,EAAaD,EAAMzU,GACvB0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EACjD6U,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAIlD,OAAO,SAAUM,EAAaK,EAAYC,GAGxC,OAFID,GAAY8X,EAAiBnY,EAAYvU,UAAW4U,GACpDC,GAAa6X,EAAiBnY,EAAaM,GACxCN,GAdO,GAkBd+sB,EAAM,WACR,OAAO,IAAIv8B,MAAO0D,WAGhB84B,EAAe,SAAsBx7B,GACvC,OAAQu7B,IAAQv7B,GAAQ,KAOtBy7B,EAAoB,WACtB,SAASA,EAAkBC,GACzBjV,EAAele,KAAMkzB,GACrBlzB,KAAKozB,oBAAsBpzB,KAAKozB,oBAAoBv/B,KAAKmM,MACzDA,KAAKmzB,WAAaA,EAClBnzB,KAAKqzB,kBAAoB,EA0G3B,OAvGAH,EAAkBxhC,UAAUka,MAAQ,WAC7B5L,KAAKszB,cACRtzB,KAAKuzB,UAAYP,WACVhzB,KAAKwzB,UACZxzB,KAAKyzB,eACL1/B,iBAAiB,mBAAoBiM,KAAKozB,qBAC1CT,EAAOE,IAAI,6CAA+C7yB,KAAK0zB,kBAAoB,SAIvFR,EAAkBxhC,UAAUiiC,KAAO,WAC7B3zB,KAAKszB,cACPtzB,KAAKwzB,UAAYR,IACjBhzB,KAAK4zB,cACL5/B,oBAAoB,mBAAoBgM,KAAKozB,qBAC7CT,EAAOE,IAAI,+BAIfK,EAAkBxhC,UAAU4hC,UAAY,WACtC,OAAOtzB,KAAKuzB,YAAcvzB,KAAKwzB,WAGjCN,EAAkBxhC,UAAUmiC,WAAa,WACvC7zB,KAAK8zB,SAAWd,KAGlBE,EAAkBxhC,UAAUqiC,cAAgB,WAC1C/zB,KAAKqzB,kBAAoB,EACzBrzB,KAAK6zB,oBACE7zB,KAAKg0B,eACZrB,EAAOE,IAAI,uCAGbK,EAAkBxhC,UAAUuiC,iBAAmB,WAC7Cj0B,KAAKg0B,eAAiBhB,IACtBL,EAAOE,IAAI,0CAGbK,EAAkBxhC,UAAU+hC,aAAe,WACzCzzB,KAAK4zB,cACL5zB,KAAKk0B,QAGPhB,EAAkBxhC,UAAUkiC,YAAc,WACxClgC,aAAasM,KAAKm0B,cAGpBjB,EAAkBxhC,UAAUwiC,KAAO,WACjC,IAAIjpB,EAAQjL,KAEZA,KAAKm0B,YAAcxgC,YAAW,WAC5BsX,EAAMmpB,mBAENnpB,EAAMipB,SACLl0B,KAAK0zB,oBAGVR,EAAkBxhC,UAAUgiC,gBAAkB,WAC5C,IAAIW,EAAwBr0B,KAAKvO,YAAY6iC,aACzCl/B,EAAMi/B,EAAsBj/B,IAC5BC,EAAMg/B,EAAsBh/B,IAE5Bk/B,EADaF,EAAsBG,WACX/7B,KAAKo6B,IAAI7yB,KAAKqzB,kBAAoB,GAC9D,OAAO56B,KAAKiU,MAAkC,IA5EtC,SAAe+nB,EAAQr/B,EAAKC,GACtC,OAAOoD,KAAKpD,IAAID,EAAKqD,KAAKrD,IAAIC,EAAKo/B,IA2EfC,CAAMH,EAAUn/B,EAAKC,KAGzC69B,EAAkBxhC,UAAU0iC,iBAAmB,WACzCp0B,KAAK20B,sBACPhC,EAAOE,IAAI,oEAAsE7yB,KAAKqzB,kBAAoB,oBAAsBrzB,KAAK0zB,kBAAoB,4BAA8BT,EAAajzB,KAAKg0B,gBAAkB,yBAA2Bh0B,KAAKvO,YAAYmjC,eAAiB,MACxR50B,KAAKqzB,oBAEDrzB,KAAK60B,uBACPlC,EAAOE,IAAI,2DAEXF,EAAOE,IAAI,+BACX7yB,KAAKmzB,WAAW2B,YAKtB5B,EAAkBxhC,UAAUijC,kBAAoB,WAC9C,OAAO1B,EAAajzB,KAAK8zB,SAAW9zB,KAAK8zB,SAAW9zB,KAAKuzB,WAAavzB,KAAKvO,YAAYmjC,gBAGzF1B,EAAkBxhC,UAAUmjC,qBAAuB,WACjD,OAAO70B,KAAKg0B,gBAAkBf,EAAajzB,KAAKg0B,gBAAkBh0B,KAAKvO,YAAYmjC,gBAGrF1B,EAAkBxhC,UAAU0hC,oBAAsB,WAChD,IAAIjnB,EAASnM,KAEoB,YAA7BtD,SAASq4B,iBACXphC,YAAW,YACLwY,EAAOwoB,qBAAwBxoB,EAAOgnB,WAAW6B,WACnDrC,EAAOE,IAAI,sFAAwFn2B,SAASq4B,iBAE5G5oB,EAAOgnB,WAAW2B,YAEnB,MAIA5B,EA/Ge,GAkHxBA,EAAkBoB,aAAe,CAC/Bl/B,IAAK,EACLC,IAAK,GACLm/B,WAAY,GAEdtB,EAAkB0B,eAAiB,EACnC,IAAIK,EAAW,CACbC,cAAe,CACbC,QAAS,UACTC,WAAY,aACZC,KAAM,OACNC,aAAc,uBACdC,UAAW,uBAEbC,mBAAoB,CAClBC,aAAc,eACdC,gBAAiB,kBACjBC,eAAgB,kBAElBC,mBAAoB,SACpBC,UAAW,CAAC,sBAAuB,4BAEjCX,EAAgBD,EAASC,cACzBW,EAAYZ,EAASY,UACrBC,EAAqBD,EAAUpiC,MAAM,EAAGoiC,EAAUtiC,OAAS,GAC3D8lB,EAAU,GAAGA,QAEb0c,EAAa,WACf,SAASA,EAAWC,GAClB9X,EAAele,KAAM+1B,GACrB/1B,KAAKi2B,KAAOj2B,KAAKi2B,KAAKpiC,KAAKmM,MAC3BA,KAAKg2B,SAAWA,EAChBh2B,KAAKk2B,cAAgBl2B,KAAKg2B,SAASE,cACnCl2B,KAAKm2B,QAAU,IAAIjD,EAAkBlzB,MACrCA,KAAKo2B,cAAe,EAiHtB,OA9GAL,EAAWrkC,UAAU2kC,KAAO,SAAc7T,GACxC,QAAIxiB,KAAKg1B,WACPh1B,KAAKs2B,UAAUD,KAAKE,KAAKrlC,UAAUsxB,KAC5B,IAMXuT,EAAWrkC,UAAUukC,KAAO,WAC1B,OAAIj2B,KAAKw2B,YACP7D,EAAOE,IAAI,uDAAyD7yB,KAAKy2B,aAClE,IAEP9D,EAAOE,IAAI,uCAAyC7yB,KAAKy2B,WAAa,mBAAqBZ,GAEvF71B,KAAKs2B,WACPt2B,KAAK02B,yBAGP12B,KAAKs2B,UAAY,IAAI5D,EAASE,UAAU5yB,KAAKg2B,SAASW,IAAKd,GAC3D71B,KAAK42B,uBACL52B,KAAKm2B,QAAQvqB,SACN,IAIXmqB,EAAWrkC,UAAUmlC,MAAQ,WAC3B,IAAI1yB,EAAO1P,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,CAC7EqiC,gBAAgB,GAEdA,EAAiB3yB,EAAK2yB,eAM1B,GAJKA,GACH92B,KAAKm2B,QAAQxC,OAGX3zB,KAAKw2B,WACP,OAAOx2B,KAAKs2B,UAAUO,SAI1Bd,EAAWrkC,UAAUojC,OAAS,WAG5B,GAFAnC,EAAOE,IAAI,yCAA2C7yB,KAAKy2B,aAEvDz2B,KAAKw2B,WAUP,OAAOx2B,KAAKi2B,OATZ,IACE,OAAOj2B,KAAK62B,QACZ,MAAOE,GACPpE,EAAOE,IAAI,6BAA8BkE,GACzC,QACApE,EAAOE,IAAI,0BAA4B7yB,KAAKvO,YAAYulC,YAAc,MACtErjC,WAAWqM,KAAKi2B,KAAMj2B,KAAKvO,YAAYulC,eAO7CjB,EAAWrkC,UAAUulC,YAAc,WACjC,GAAIj3B,KAAKs2B,UACP,OAAOt2B,KAAKs2B,UAAUY,UAI1BnB,EAAWrkC,UAAUsjC,OAAS,WAC5B,OAAOh1B,KAAKm3B,QAAQ,SAGtBpB,EAAWrkC,UAAU8kC,SAAW,WAC9B,OAAOx2B,KAAKm3B,QAAQ,OAAQ,eAG9BpB,EAAWrkC,UAAU0lC,oBAAsB,WACzC,OAAO/d,EAAQjlB,KAAK0hC,EAAoB91B,KAAKi3B,gBAAkB,GAGjElB,EAAWrkC,UAAUylC,QAAU,WAC7B,IAAK,IAAI3iC,EAAOC,UAAUlB,OAAQ8jC,EAAS1iC,MAAMH,GAAOI,EAAO,EAAGA,EAAOJ,EAAMI,IAC7EyiC,EAAOziC,GAAQH,UAAUG,GAG3B,OAAOykB,EAAQjlB,KAAKijC,EAAQr3B,KAAKy2B,aAAe,GAGlDV,EAAWrkC,UAAU+kC,SAAW,WAC9B,GAAIz2B,KAAKs2B,UACP,IAAK,IAAIlV,KAASsR,EAASE,UACzB,GAAIF,EAASE,UAAUxR,KAAWphB,KAAKs2B,UAAUgB,WAC/C,OAAOlW,EAAMznB,cAKnB,OAAO,MAGTo8B,EAAWrkC,UAAUklC,qBAAuB,WAC1C,IAAK,IAAIW,KAAav3B,KAAKw3B,OAAQ,CACjC,IAAIC,EAAUz3B,KAAKw3B,OAAOD,GAAW1jC,KAAKmM,MAC1CA,KAAKs2B,UAAU,KAAOiB,GAAaE,IAIvC1B,EAAWrkC,UAAUglC,uBAAyB,WAC5C,IAAK,IAAIa,KAAav3B,KAAKw3B,OACzBx3B,KAAKs2B,UAAU,KAAOiB,GAAa,cAIhCxB,EAxHQ,GA2HjBA,EAAWiB,YAAc,IACzBjB,EAAWrkC,UAAU8lC,OAAS,CAC5BE,QAAS,SAAiB5jC,GACxB,GAAKkM,KAAKo3B,sBAAV,CAIA,IAAIO,EAAcpB,KAAKplC,MAAM2C,EAAM0uB,MAC/BoV,EAAaD,EAAYC,WACzBF,EAAUC,EAAYD,QACtBG,EAASF,EAAYE,OACrBC,EAAYH,EAAYG,UAG5B,OAFWH,EAAYzoB,MAGrB,KAAKgmB,EAAcC,QAEjB,OADAn1B,KAAKm2B,QAAQpC,gBACN/zB,KAAKk2B,cAAc6B,SAE5B,KAAK7C,EAAcE,WAEjB,OADAzC,EAAOE,IAAI,0BAA4BgF,GAChC73B,KAAK62B,MAAM,CAChBC,eAAgBgB,IAGpB,KAAK5C,EAAcG,KACjB,OAAOr1B,KAAKm2B,QAAQtC,aAEtB,KAAKqB,EAAcI,aACjB,OAAOt1B,KAAKk2B,cAAc8B,OAAOJ,EAAY,aAE/C,KAAK1C,EAAcK,UACjB,OAAOv1B,KAAKk2B,cAAc+B,OAAOL,GAEnC,QACE,OAAO53B,KAAKk2B,cAAc8B,OAAOJ,EAAY,WAAYF,MAG/DzB,KAAM,WAIJ,GAHAtD,EAAOE,IAAI,kCAAoC7yB,KAAKi3B,cAAgB,iBACpEj3B,KAAKo2B,cAAe,GAEfp2B,KAAKo3B,sBAER,OADAzE,EAAOE,IAAI,gEACJ7yB,KAAK62B,MAAM,CAChBC,gBAAgB,KAItBD,MAAO,SAAe/iC,GAGpB,GAFA6+B,EAAOE,IAAI,4BAEP7yB,KAAKo2B,aAMT,OAFAp2B,KAAKo2B,cAAe,EACpBp2B,KAAKm2B,QAAQlC,mBACNj0B,KAAKk2B,cAAcgC,UAAU,eAAgB,CAClDC,qBAAsBn4B,KAAKm2B,QAAQ7C,eAGvCyD,MAAO,WACLpE,EAAOE,IAAI,6BAIf,IAAIuF,EAAS,SAAgBtvB,EAAQuvB,GACnC,GAAkB,MAAdA,EACF,IAAK,IAAInlC,KAAOmlC,EAAY,CAC1B,IAAI/0B,EAAQ+0B,EAAWnlC,GACvB4V,EAAO5V,GAAOoQ,EAIlB,OAAOwF,GAGLwvB,EAAe,WACjB,SAASA,EAAatC,GACpB,IAAIuC,EAAS9jC,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC7E+jC,EAAQ/jC,UAAU,GACtBypB,EAAele,KAAMs4B,GACrBt4B,KAAKg2B,SAAWA,EAChBh2B,KAAK43B,WAAarB,KAAKrlC,UAAUqnC,GACjCH,EAAOp4B,KAAMw4B,GAqBf,OAlBAF,EAAa5mC,UAAU+mC,QAAU,SAAiBC,GAChD,IAAIlW,EAAO/tB,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAE/E,OADA+tB,EAAKkW,OAASA,EACP14B,KAAKq2B,KAAK7T,IAGnB8V,EAAa5mC,UAAU2kC,KAAO,SAAc7T,GAC1C,OAAOxiB,KAAKg2B,SAASK,KAAK,CACxBsC,QAAS,UACTf,WAAY53B,KAAK43B,WACjBpV,KAAM+T,KAAKrlC,UAAUsxB,MAIzB8V,EAAa5mC,UAAUknC,YAAc,WACnC,OAAO54B,KAAKg2B,SAASE,cAAc/oB,OAAOnN,OAGrCs4B,EA5BU,GA+BfO,EAAgB,WAClB,SAASA,EAAc7C,GACrB9X,EAAele,KAAM64B,GACrB74B,KAAKg2B,SAAWA,EAChBh2B,KAAKk2B,cAAgB,GAqGvB,OAlGA2C,EAAcnnC,UAAU6Y,OAAS,SAAgBuuB,EAAaN,GAC5D,IAAIO,EAAUD,EACVP,EAA+E,YAAlD,qBAAZQ,EAA0B,YAAc1nC,EAAQ0nC,IAAyBA,EAAU,CACtGA,QAASA,GAEPC,EAAe,IAAIV,EAAat4B,KAAKg2B,SAAUuC,EAAQC,GAC3D,OAAOx4B,KAAKmH,IAAI6xB,IAGlBH,EAAcnnC,UAAUyV,IAAM,SAAa6xB,GAKzC,OAJAh5B,KAAKk2B,cAAcphC,KAAKkkC,GACxBh5B,KAAKg2B,SAASiD,yBACdj5B,KAAKg4B,OAAOgB,EAAc,eAC1Bh5B,KAAKk5B,YAAYF,EAAc,aACxBA,GAGTH,EAAcnnC,UAAUyb,OAAS,SAAgB6rB,GAO/C,OANAh5B,KAAKm5B,OAAOH,GAEPh5B,KAAKo5B,QAAQJ,EAAapB,YAAYrkC,QACzCyM,KAAKk5B,YAAYF,EAAc,eAG1BA,GAGTH,EAAcnnC,UAAUumC,OAAS,SAAgBL,GAC/C,IAAI3sB,EAAQjL,KAEZ,OAAOA,KAAKo5B,QAAQxB,GAAYvlC,KAAI,SAAU2mC,GAK5C,OAJA/tB,EAAMkuB,OAAOH,GAEb/tB,EAAM+sB,OAAOgB,EAAc,YAEpBA,MAIXH,EAAcnnC,UAAUynC,OAAS,SAAgBH,GAI/C,OAHAh5B,KAAKk2B,cAAgBl2B,KAAKk2B,cAActd,QAAO,SAAUoX,GACvD,OAAOA,IAAMgJ,KAERA,GAGTH,EAAcnnC,UAAU0nC,QAAU,SAAiBxB,GACjD,OAAO53B,KAAKk2B,cAActd,QAAO,SAAUoX,GACzC,OAAOA,EAAE4H,aAAeA,MAI5BiB,EAAcnnC,UAAUqmC,OAAS,WAC/B,IAAI5rB,EAASnM,KAEb,OAAOA,KAAKk2B,cAAc7jC,KAAI,SAAU2mC,GACtC,OAAO7sB,EAAO+sB,YAAYF,EAAc,iBAI5CH,EAAcnnC,UAAUwmC,UAAY,SAAmBmB,GAGrD,IAFA,IAAIrsB,EAAShN,KAEJxL,EAAOC,UAAUlB,OAAQumB,EAAOnlB,MAAMH,EAAO,EAAIA,EAAO,EAAI,GAAII,EAAO,EAAGA,EAAOJ,EAAMI,IAC9FklB,EAAKllB,EAAO,GAAKH,UAAUG,GAG7B,OAAOoL,KAAKk2B,cAAc7jC,KAAI,SAAU2mC,GACtC,OAAOhsB,EAAOgrB,OAAOjhC,MAAMiW,EAAQ,CAACgsB,EAAcK,GAAcljC,OAAO2jB,QAI3E+e,EAAcnnC,UAAUsmC,OAAS,SAAgBgB,EAAcK,GAC7D,IAAK,IAAIC,EAAQ7kC,UAAUlB,OAAQumB,EAAOnlB,MAAM2kC,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGzf,EAAKyf,EAAQ,GAAK9kC,UAAU8kC,GAW9B,OAN4B,kBAAjBP,EACOh5B,KAAKo5B,QAAQJ,GAEb,CAACA,IAGE3mC,KAAI,SAAU2mC,GACjC,MAA6C,oBAA/BA,EAAaK,GAA+BL,EAAaK,GAActiC,MAAMiiC,EAAclf,QAAQxkB,MAIrHujC,EAAcnnC,UAAUwnC,YAAc,SAAqBF,EAAcL,GACvE,IAAIf,EAAaoB,EAAapB,WAC9B,OAAO53B,KAAKg2B,SAASK,KAAK,CACxBsC,QAASA,EACTf,WAAYA,KAITiB,EAzGW,GA4GhBW,EAAW,WACb,SAASA,EAAS7C,GAChBzY,EAAele,KAAMw5B,GACrBx5B,KAAKy5B,KAAO9C,EACZ32B,KAAKk2B,cAAgB,IAAI2C,EAAc74B,MACvCA,KAAKmzB,WAAa,IAAI4C,EAAW/1B,MA6BnC,OA1BAw5B,EAAS9nC,UAAU2kC,KAAO,SAAc7T,GACtC,OAAOxiB,KAAKmzB,WAAWkD,KAAK7T,IAG9BgX,EAAS9nC,UAAUgoC,QAAU,WAC3B,OAAO15B,KAAKmzB,WAAW8C,QAGzBuD,EAAS9nC,UAAU0jC,WAAa,WAC9B,OAAOp1B,KAAKmzB,WAAW0D,MAAM,CAC3BC,gBAAgB,KAIpB0C,EAAS9nC,UAAUunC,uBAAyB,WAC1C,IAAKj5B,KAAKmzB,WAAWqD,WACnB,OAAOx2B,KAAKmzB,WAAW8C,QAI3B9X,EAAYqb,EAAU,CAAC,CACrBtmC,IAAK,MACLnC,IAAK,WACH,OAAO4oC,EAAmB35B,KAAKy5B,UAG5BD,EAlCM,GAqCf,SAASG,EAAmBhD,GAK1B,GAJmB,oBAARA,IACTA,EAAMA,KAGJA,IAAQ,UAAU7kC,KAAK6kC,GAAM,CAC/B,IAAIjkC,EAAIgK,SAAS8uB,cAAc,KAI/B,OAHA94B,EAAEknC,KAAOjD,EACTjkC,EAAEknC,KAAOlnC,EAAEknC,KACXlnC,EAAEwkC,SAAWxkC,EAAEwkC,SAAS5gC,QAAQ,OAAQ,MACjC5D,EAAEknC,KAET,OAAOjD,EASX,SAASkD,EAAUhgC,GACjB,IAAIsM,EAAUzJ,SAASo9B,KAAK3gB,cAAc,2BAA6Btf,EAAO,MAE9E,GAAIsM,EACF,OAAOA,EAAQsrB,aAAa,WAIhClhC,EAAQwlC,WAAaA,EACrBxlC,EAAQ2iC,kBAAoBA,EAC5B3iC,EAAQipC,SAAWA,EACnBjpC,EAAQ0kC,SAAWA,EACnB1kC,EAAQ+nC,aAAeA,EACvB/nC,EAAQsoC,cAAgBA,EACxBtoC,EAAQmiC,SAAWA,EACnBniC,EAAQopC,mBAAqBA,EAC7BppC,EAAQoiC,OAASA,EACjBpiC,EAAQwpC,eAtBR,WACE,IAAIpD,EAAMliC,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAKolC,EAAU,QAAU5E,EAASW,mBAC3G,OAAO,IAAI4D,EAAS7C,IAqBtBpmC,EAAQspC,UAAYA,EACpBjpC,OAAOC,eAAeN,EAAS,aAAc,CAC3C+S,OAAO,KAjnB8D,WAAvBmvB,EAASliC,IAA4C,qBAAXD,EAAyB86B,EAAQ76B,IAAwD,EAAO,CAAC,QAAmB,2BAAP,EAAF,GAAS,iC,qBCHhN,oCAAmD,OAAOc,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,IAQzU,YAEE,YACE,WACE0O,KAAKg6B,MAAQ,CACXC,kBAAmB,yGACnBC,oBAAqB,CACnBz5B,SAAU,oEACV05B,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,OACpBC,uBAAwB,6MACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,+EAExBvmC,KAAK4L,QACP5L,KAnBW4L,MAoBd,IAAIg6B,EApBUh6B,KAoBMg6B,OACpB,YACE,WACE,IAAIY,EACJA,EAAQ,KAERZ,EAAMa,aAAe,WACnB,IAAIC,EACJ,OAAOF,EAAkE,OAAzDE,EAAMp+B,SAASyc,cAAc,yBAAmC2hB,EAAIvzB,aAAU,GAGhGyyB,EAAMe,SAAW,WACf,OAAgB,MAATH,EAAgBA,EAAQZ,EAAMa,kBAEtCzmC,KAAK4L,MACR,WACE,IAAa5G,EACbA,EAAIsH,QAAQhP,UAAUiP,SAAWD,QAAQhP,UAAUspC,iBAAmBt6B,QAAQhP,UAAUupC,oBAAsBv6B,QAAQhP,UAAUwpC,mBAAqBx6B,QAAQhP,UAAUypC,kBAAoBz6B,QAAQhP,UAAU0pC,sBAE7MpB,EAAMr5B,QAAU,SAAUwF,EAAS1F,GACjC,OAAwB,MAApBA,EAAS05B,QACJ/gC,EAAEhF,KAAK+R,EAAS1F,EAASA,YAAcrH,EAAEhF,KAAK+R,EAAS1F,EAAS05B,SAEhE/gC,EAAEhF,KAAK+R,EAAS1F,IAM3Bu5B,EAAMqB,QAAU,SAAUl1B,EAASjT,GACjC,IAAI4nC,EACJ,OAAmC,OAA3BA,EAAM30B,EAAe,UAAa20B,EAAI5nC,QAAO,GAGvD8mC,EAAMsB,QAAU,SAAUn1B,EAASjT,EAAKoQ,GAKtC,OAJwB,MAApB6C,EAAe,WACjBA,EAAe,SAAI,IAGdA,EAAe,SAAEjT,GAAOoQ,GAGjC02B,EAAMuB,EAAI,SAAU96B,GAClB,OAAO9L,MAAMjD,UAAU+B,MAAMW,KAAKsI,SAASwQ,iBAAiBzM,MAE7DrM,KAAK4L,MACR,WACE,IAAIu7B,EAAGC,EAAWC,EAClBF,EAAIvB,EAAMuB,EAEVE,EAAYzB,EAAMyB,UAAY,WAC5B,IAAIC,EAEJ,OADAA,EAAOh/B,SAASyc,cAAc,2BACfuiB,EAAKn0B,SAGtBi0B,EAAYxB,EAAMwB,UAAY,WAC5B,IAAIE,EAEJ,OADAA,EAAOh/B,SAASyc,cAAc,2BACfuiB,EAAKn0B,SAGtByyB,EAAM2B,eAAiB,SAAUC,GAC/B,IAAIhgC,EAGJ,GAAa,OAFbA,EAAQ6/B,KAGN,OAAOG,EAAIC,iBAAiB,eAAgBjgC,IAIhDo+B,EAAM8B,kBAAoB,WACxB,IAAIC,EAAOngC,EAIX,GAHAA,EAAQ6/B,IACRM,EAAQP,IAEK,MAAT5/B,GAA0B,MAATmgC,EACnB,OAAOR,EAAE,oBAAsBQ,EAAQ,MAAM/oC,SAAQ,SAAUk5B,GAC7D,OAAOA,EAAM5oB,MAAQ1H,OAI1BxH,KAAK4L,MACR,WACE,IAAIsP,EAAa0sB,EAAMr7B,EAASsQ,EAChCtQ,EAAUq5B,EAAMr5B,QAGW,oBAF3B2O,EAAcyC,OAAOzC,gBAGnBA,EAAc,SAAqBxb,EAAOykC,GACxC,IAAI5I,EAGJ,OAFAA,EAAMjzB,SAASu/B,YAAY,gBACvBC,gBAAgBpoC,EAAOykC,EAAOnH,QAASmH,EAAO4D,WAAY5D,EAAOppB,QAC9DwgB,IAGGj+B,UAAYqgB,OAAOtS,MAAM/N,UACrCuf,EAAiB3B,EAAY5d,UAAUuf,eAEvC3B,EAAY5d,UAAUuf,eAAiB,WACrC,IAAInK,EAWJ,OAVAA,EAASmK,EAAe7c,KAAK4L,MAEzBA,KAAKm8B,aAAen8B,KAAKo8B,kBAC3BxrC,OAAOC,eAAemP,KAAM,mBAAoB,CAC9CjP,IAAK,WACH,OAAO,KAKN+V,IAIXk1B,EAAOhC,EAAMgC,KAAO,SAAU1qC,EAAKuI,EAAM2oB,GACvC,IAAI1uB,EAOJ,OANAA,EAAQ,IAAIwb,EAAYzV,EAAM,CAC5Bu3B,SAAS,EACT+K,YAAY,EACZhtB,OAAQqT,IAEVlxB,EAAI+d,cAAcvb,IACVA,EAAMsoC,kBAGhBpC,EAAMqC,eAAiB,SAAUzqC,GAI/B,OAHAoqC,EAAKpqC,EAAEqO,OAAQ,yBACfrO,EAAEqf,iBACFrf,EAAEq7B,kBACKr7B,EAAE0qC,4BAGXtC,EAAMuC,SAAW,SAAUp2B,EAAS1F,EAAU+7B,EAAW/E,GACvD,OAAOtxB,EAAQpS,iBAAiByoC,GAAW,SAAU5qC,GACnD,IAAIqO,EAGJ,IAFAA,EAASrO,EAAEqO,OAEAA,aAAkBS,UAAYC,EAAQV,EAAQQ,IACvDR,EAASA,EAAOhD,WAGlB,GAAIgD,aAAkBS,UAAuC,IAA5B+2B,EAAQrjC,KAAK6L,EAAQrO,GAEpD,OADAA,EAAEqf,iBACKrf,EAAEq7B,uBAId74B,KAAK4L,MACR,WACE,IAAIy8B,EAAed,EAAgBe,EAAW3B,EAAgB4B,EAAgBC,EAC9E7B,EAAWf,EAAMe,SAAUY,EAAiB3B,EAAM2B,eAAuB3B,EAAMgC,KAC/ES,EAAgB,CACd,IAAK,MACLI,KAAM,aACN/mC,KAAM,YACNgnC,IAAK,4BACLC,KAAM,oCACNC,OAAQ,6FAGVhD,EAAMiD,KAAO,SAAUt5B,GACrB,IAAIi4B,EAmBJ,OAlBAj4B,EAAUg5B,EAAeh5B,GACzBi4B,EAAMc,EAAU/4B,GAAS,WACvB,IAAIm3B,EAAKoC,EAaT,OAZAA,EAAWN,EAAwC,OAAvB9B,EAAMc,EAAIsB,UAAoBpC,EAAMc,EAAIuB,aAAcvB,EAAIwB,kBAAkB,iBAEnE,IAAjC3kC,KAAKC,MAAMkjC,EAAIyB,OAAS,KACK,oBAApB15B,EAAQ25B,SACjB35B,EAAQ25B,QAAQJ,EAAUtB,EAAI2B,WAAY3B,GAGf,oBAAlBj4B,EAAQozB,OACjBpzB,EAAQozB,MAAMmG,EAAUtB,EAAI2B,WAAY3B,GAIT,oBAArBj4B,EAAQ65B,SAA0B75B,EAAQ65B,SAAS5B,EAAKA,EAAI2B,iBAAc,OAGhE,MAAtB55B,EAAQ85B,aAAuB95B,EAAQ85B,WAAW7B,EAAKj4B,MAIvDi4B,EAAItE,aAAeoG,eAAeC,OAC7B/B,EAAIvF,KAAK1yB,EAAQ6e,WAD1B,IAKFma,EAAiB,SAAwBh5B,GAsBvC,OArBAA,EAAQgzB,IAAMhzB,EAAQgzB,KAAOiH,SAAShE,KACtCj2B,EAAQuL,KAAOvL,EAAQuL,KAAKjc,cAEP,QAAjB0Q,EAAQuL,MAAkBvL,EAAQ6e,OAChC7e,EAAQgzB,IAAItd,QAAQ,KAAO,EAC7B1V,EAAQgzB,KAAO,IAAMhzB,EAAQ6e,KAE7B7e,EAAQgzB,KAAO,IAAMhzB,EAAQ6e,MAIM,MAAnCia,EAAc94B,EAAQk6B,YACxBl6B,EAAQk6B,SAAW,KAGrBl6B,EAAQm6B,OAASrB,EAAc94B,EAAQk6B,UAEd,MAArBl6B,EAAQk6B,WACVl6B,EAAQm6B,QAAU,iBAGbn6B,GAGT+4B,EAAY,SAAmB/4B,EAASwE,GACtC,IAAIyzB,EAsBJ,OArBAA,EAAM,IAAI8B,gBACNzH,KAAKtyB,EAAQuL,KAAMvL,EAAQgzB,KAAK,GACpCiF,EAAIC,iBAAiB,SAAUl4B,EAAQm6B,QAEX,kBAAjBn6B,EAAQ6e,MACjBoZ,EAAIC,iBAAiB,eAAgB,oDAGlCl4B,EAAQo6B,cACXnC,EAAIC,iBAAiB,mBAAoB,kBACzCF,EAAeC,IAGjBA,EAAIoC,kBAAoBr6B,EAAQq6B,gBAEhCpC,EAAIqC,mBAAqB,WACvB,GAAIrC,EAAItE,aAAeoG,eAAeQ,KACpC,OAAO/1B,EAAKyzB,IAITA,GAGTgB,EAAkB,SAAyBM,EAAUhuB,GACnD,IAAInT,EAAQihC,EAEZ,GAAwB,kBAAbE,GAAyC,kBAAThuB,EACzC,GAAIA,EAAKzT,MAAM,YACb,IACEyhC,EAAW3G,KAAKplC,MAAM+rC,GACtB,MAAOnG,SACJ,GAAI7nB,EAAKzT,MAAM,4BACpBuhC,EAAStgC,SAAS8uB,cAAc,WACzBd,aAAa,QAASqQ,KAC7BiC,EAAOH,KAAOK,EACdxgC,SAASo9B,KAAKpyB,YAAYs1B,GAAQ//B,WAAWc,YAAYi/B,QACpD,GAAI9tB,EAAKzT,MAAM,sBAAuB,CAC3CM,EAAS,IAAIoiC,UACbjvB,EAAOA,EAAK5Y,QAAQ,MAAO,IAE3B,IACE4mC,EAAWnhC,EAAOqiC,gBAAgBlB,EAAUhuB,GAC5C,MAAO6nB,KAIb,OAAOmG,GAGTlD,EAAMJ,KAAO,SAAUzzB,GACrB,OAAOA,EAAQyzB,MAGjBI,EAAMqE,cAAgB,SAAU1H,GAC9B,IAAO2H,EAAcC,GACrBD,EAAe5hC,SAAS8uB,cAAc,MACzBoO,KAAOgE,SAAShE,KAC7B2E,EAAY7hC,SAAS8uB,cAAc,KAEnC,IAEE,OADA+S,EAAU3E,KAAOjD,MACN4H,EAAUrH,UAAmC,MAAvBqH,EAAUrH,YAAsBqH,EAAUphC,MAAQmhC,EAAapH,SAAW,KAAOoH,EAAanhC,OAASohC,EAAUrH,SAAW,KAAOqH,EAAUphC,MAC9K,MAAO45B,GAEP,OADIA,GACG,KAGV3iC,KAAK4L,MACR,WACE,IAAIW,EAAS69B,EACb79B,EAAUq5B,EAAMr5B,QAEhB69B,EAAU,SAAiB5sC,GACzB,OAAO+C,MAAMjD,UAAU+B,MAAMW,KAAKxC,IAGpCooC,EAAMyE,iBAAmB,SAAUt4B,EAASu4B,GAC1C,IAAItlB,EAAQmf,EAsCZ,OArCAnf,EAAS,CAACjT,GAENxF,EAAQwF,EAAS,UACnBiT,EAASolB,EAAQr4B,EAAQ2nB,WAG3ByK,EAAS,GACTnf,EAAOpmB,SAAQ,SAAUk5B,GACvB,GAAKA,EAAMryB,OAAQqyB,EAAM9kB,WAIrBzG,EAAQurB,EAAO,wBAInB,OAAIvrB,EAAQurB,EAAO,UACVsS,EAAQtS,EAAMvoB,SAAS3Q,SAAQ,SAAU2rC,GAC9C,GAAIA,EAAOv4B,SACT,OAAOmyB,EAAOzjC,KAAK,CACjB+E,KAAMqyB,EAAMryB,KACZyJ,MAAOq7B,EAAOr7B,WAIX4oB,EAAM0S,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAUvlB,QAAQ6S,EAAMhd,MACjEqpB,EAAOzjC,KAAK,CACjB+E,KAAMqyB,EAAMryB,KACZyJ,MAAO4oB,EAAM5oB,aAHV,KAQLo7B,GACFnG,EAAOzjC,KAAK4pC,GAGPnG,EAAOlmC,KAAI,SAAU0pC,GAC1B,OAAkB,MAAdA,EAAMliC,KACDglC,mBAAmB9C,EAAMliC,MAAQ,IAAMglC,mBAAmB9C,EAAMz4B,OAEhEy4B,KAERxjB,KAAK,MAGVyhB,EAAM8E,aAAe,SAAUC,EAAMt+B,GACnC,OAAIE,EAAQo+B,EAAM,QACTP,EAAQO,EAAKjR,UAAUlV,QAAO,SAAU7b,GAC7C,OAAO4D,EAAQ5D,EAAI0D,MAGd+9B,EAAQO,EAAK7xB,iBAAiBzM,MAGxCrM,KAAK4L,MACR,WACE,IAAIg/B,EAAahD,EAAMK,EACvBL,EAAOhC,EAAMgC,KAAMK,EAAiBrC,EAAMqC,eAE1CrC,EAAMiF,cAAgB,SAAUrtC,GAC9B,IAAKotC,EAAYh/B,MACf,OAAOq8B,EAAezqC,IAI1BooC,EAAMkF,QAAU,SAAUxH,EAASvxB,GACjC,OAAO+4B,QAAQxH,IAGjBsH,EAAc,SAAqB74B,GACjC,IAAIg5B,EAAQtlB,EAAU6d,EAGtB,KAFAA,EAAUvxB,EAAQsrB,aAAa,iBAG7B,OAAO,EAKT,GAFA0N,GAAS,EAELnD,EAAK71B,EAAS,WAAY,CAC5B,IACEg5B,EAASnF,EAAMkF,QAAQxH,EAASvxB,GAChC,MAAO4wB,IAETld,EAAWmiB,EAAK71B,EAAS,mBAAoB,CAACg5B,IAGhD,OAAOA,GAAUtlB,IAElBzlB,KAAK4L,MACR,WACE,IAAIo/B,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBX,EAAczD,EAASqE,EAAe/+B,EAAS26B,EAASe,EACnL17B,EAAUq5B,EAAMr5B,QAAS06B,EAAUrB,EAAMqB,QAASC,EAAUtB,EAAMsB,QAASe,EAAiBrC,EAAMqC,eAAgByC,EAAe9E,EAAM8E,aAEvI9E,EAAM2F,sBAAwB,SAAU/tC,GAItC,GAFUoO,UAEEoH,SACV,OAAOi1B,EAAezqC,IAI1BooC,EAAM4F,cAAgB,SAAUhuC,GAC9B,IAAIuU,EAEJ,GAAIvU,aAAa6N,MAAO,CACtB,GAAIigC,EAAc9tC,GAChB,OAGFuU,EAAUvU,EAAEqO,YAEZkG,EAAUvU,EAGZ,OAAI+O,EAAQwF,EAAS6zB,EAAMU,qBAClB+E,EAAkBt5B,GAChBxF,EAAQwF,EAAS6zB,EAAMW,wBAA0Bh6B,EAAQwF,EAAS6zB,EAAMQ,oBAC1E+E,EAAkBp5B,GAChBxF,EAAQwF,EAAS6zB,EAAMK,oBACzBmF,EAAmBr5B,QADrB,GAKT6zB,EAAM6F,eAAiB,SAAUjuC,GAC/B,IAAIuU,EAGJ,OAFAA,EAAUvU,aAAa6N,MAAQ7N,EAAEqO,OAASrO,EAEtC+O,EAAQwF,EAAS6zB,EAAMU,qBAClB4E,EAAmBn5B,GACjBxF,EAAQwF,EAAS6zB,EAAMW,wBAA0Bh6B,EAAQwF,EAAS6zB,EAAMO,qBAC1E6E,EAAmBj5B,GACjBxF,EAAQwF,EAAS6zB,EAAMK,oBACzBgF,EAAoBl5B,QADtB,GAKTm5B,EAAqB,SAA4Bn5B,GAC/C,IAAI25B,EAEJ,IAAIzE,EAAQl1B,EAAS,gBAYrB,OANmB,OAFnB25B,EAAc35B,EAAQsrB,aAAa,wBAGjC6J,EAAQn1B,EAAS,kBAAmBA,EAAQ45B,WAC5C55B,EAAQ45B,UAAYD,GAGtB35B,EAAQpS,iBAAiB,QAASsoC,GAC3Bf,EAAQn1B,EAAS,gBAAgB,IAG1Cs5B,EAAoB,SAA2Bt5B,GAC7C,IAAI65B,EASJ,OANoB,OAFpBA,EAAe3E,EAAQl1B,EAAS,sBAG9BA,EAAQ45B,UAAYC,EACpB1E,EAAQn1B,EAAS,kBAAmB,OAGtCA,EAAQnS,oBAAoB,QAASqoC,GAC9Bf,EAAQn1B,EAAS,eAAgB,OAG1Ck5B,EAAsB,SAA6BN,GACjD,OAAOD,EAAaC,EAAM/E,EAAMO,qBAAqBvnC,QAAQosC,IAG/DA,EAAqB,SAA4Bj5B,GAC/C,IAAI25B,EAEJ,IAAIzE,EAAQl1B,EAAS,gBAiBrB,OAXmB,OAFnB25B,EAAc35B,EAAQsrB,aAAa,wBAG7B9wB,EAAQwF,EAAS,WACnBm1B,EAAQn1B,EAAS,kBAAmBA,EAAQ45B,WAC5C55B,EAAQ45B,UAAYD,IAEpBxE,EAAQn1B,EAAS,kBAAmBA,EAAQ7C,OAC5C6C,EAAQ7C,MAAQw8B,IAIpB35B,EAAQiB,UAAW,EACZk0B,EAAQn1B,EAAS,gBAAgB,IAG1Cq5B,EAAqB,SAA4BT,GAC/C,OAAOD,EAAaC,EAAM/E,EAAMQ,oBAAoBxnC,QAAQusC,IAG9DA,EAAoB,SAA2Bp5B,GAC7C,IAAI65B,EAcJ,OAXoB,OAFpBA,EAAe3E,EAAQl1B,EAAS,sBAG1BxF,EAAQwF,EAAS,UACnBA,EAAQ45B,UAAYC,EAEpB75B,EAAQ7C,MAAQ08B,EAGlB1E,EAAQn1B,EAAS,kBAAmB,OAGtCA,EAAQiB,UAAW,EACZk0B,EAAQn1B,EAAS,eAAgB,OAG1Cu5B,EAAgB,SAAuB5rC,GACrC,IAAIgnC,EAAKc,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvBd,EAAMhnC,EAAMqb,QAAkB2rB,EAAI,QAAK,GACxBc,EAAIwB,kBAAkB,uBAAoB,KAEjEhpC,KAAK4L,MACR,WACE,IAAIq8B,EACJA,EAAiBrC,EAAMqC,eAEvBrC,EAAMiG,aAAe,SAAUruC,GAC7B,IAAI4pC,EAAWC,EAAWsD,EAAMmB,EAAatG,EAAMuG,EAAMC,EAIzD,GAFAA,GADAD,EAAOngC,MACOyxB,aAAa,eAwB3B,OAlBAmI,EAAOI,EAAMJ,KAAKuG,GAClB1E,EAAYzB,EAAMyB,YAClBD,EAAYxB,EAAMwB,YAClBuD,EAAOriC,SAAS8uB,cAAc,QAC9B0U,EAAc,gCAAkCE,EAAS,qBAExC,MAAb5E,GAAkC,MAAbC,GAAsBzB,EAAMqE,cAAczE,KACjEsG,GAAe,gBAAkB1E,EAAY,YAAcC,EAAY,sBAGzEyE,GAAe,0BACfnB,EAAKqB,OAAS,OACdrB,EAAKrG,OAASkB,EACdmF,EAAK9+B,OAASkgC,EAAKlgC,OACnB8+B,EAAKgB,UAAYG,EACjBnB,EAAKvhC,MAAMC,QAAU,OACrBf,SAASwV,KAAKxK,YAAYq3B,GAC1BA,EAAK5lB,cAAc,mBAAmB8X,QAC/BoL,EAAezqC,KAEvBwC,KAAK4L,MACR,WACE,IAAIi9B,EACAjB,EACAX,EACAgD,EACAgC,EACA1/B,EACA89B,EACAnD,EACAe,EACA5oC,EAAQ,GAAGA,MACfkN,EAAUq5B,EAAMr5B,QAAS06B,EAAUrB,EAAMqB,QAASC,EAAUtB,EAAMsB,QAASU,EAAOhC,EAAMgC,KAAMK,EAAiBrC,EAAMqC,eAAgBY,EAAOjD,EAAMiD,KAAMoB,EAAgBrE,EAAMqE,cAAeI,EAAmBzE,EAAMyE,iBAEtN4B,EAAW,SAAkBl6B,GAC3B,IAAI7C,EAEJ,OAAgB,OADhBA,EAAQ6C,EAAQsrB,aAAa,iBACK,UAAVnuB,GAG1B02B,EAAMsG,aAAe,SAAU1uC,GAC7B,IAAI2uC,EAAQ/d,EAAMqb,EAAU13B,EAASi6B,EAAQzJ,EAAKqH,EAGlD,OAAKqC,EAFLl6B,EAAUnG,QAMLg8B,EAAK71B,EAAS,gBAKnB63B,EAAkB73B,EAAQsrB,aAAa,yBACvCoM,EAAW13B,EAAQsrB,aAAa,cAAgB,SAE5C9wB,EAAQwF,EAAS6zB,EAAMK,qBACzBkG,EAASlF,EAAQl1B,EAAS,qBAC1Bi6B,EAAS/E,EAAQl1B,EAAS,iCAAmCA,EAAQi6B,OACrEzJ,EAAM0E,EAAQl1B,EAAS,iCAAmCA,EAAQsrB,aAAa,WAAamM,SAAShE,KAExE,QAAzBwG,EAAOntC,gBACT0jC,EAAMA,EAAIrgC,QAAQ,QAAS,KAGL,wBAApB6P,EAAQq6B,SACVhe,EAAO,IAAIie,SAASt6B,GAEN,MAAVo6B,GACF/d,EAAKke,OAAOH,EAAO1mC,KAAM0mC,EAAOj9B,QAGlCkf,EAAOic,EAAiBt4B,EAASo6B,GAGnCjF,EAAQn1B,EAAS,oBAAqB,MACtCm1B,EAAQn1B,EAAS,+BAAgC,MACjDm1B,EAAQn1B,EAAS,+BAAgC,OACxCxF,EAAQwF,EAAS6zB,EAAME,sBAAwBv5B,EAAQwF,EAAS6zB,EAAMI,sBAC/EgG,EAASj6B,EAAQsrB,aAAa,eAC9BkF,EAAMxwB,EAAQsrB,aAAa,YAC3BjP,EAAOic,EAAiBt4B,EAASA,EAAQsrB,aAAa,kBAEtD2O,EAASj6B,EAAQsrB,aAAa,eAC9BkF,EAAMqD,EAAMJ,KAAKzzB,GACjBqc,EAAOrc,EAAQsrB,aAAa,gBAG9BwL,EAAK,CACH/tB,KAAMkxB,GAAU,MAChBzJ,IAAKA,EACLnU,KAAMA,EACNqb,SAAUA,EACVJ,WAAY,SAAoB7B,EAAKj4B,GACnC,OAAIq4B,EAAK71B,EAAS,kBAAmB,CAACy1B,EAAKj4B,IAClCq4B,EAAK71B,EAAS,YAAa,CAACy1B,KAEnCI,EAAK71B,EAAS,iBACP,IAGXm3B,QAAS,WACP,IAAIxjB,EAEJ,OADAA,EAAO,GAAKrlB,UAAUlB,OAASE,EAAMW,KAAKK,UAAW,GAAK,GACnDunC,EAAK71B,EAAS,eAAgB2T,IAEvCid,MAAO,WACL,IAAIjd,EAEJ,OADAA,EAAO,GAAKrlB,UAAUlB,OAASE,EAAMW,KAAKK,UAAW,GAAK,GACnDunC,EAAK71B,EAAS,aAAc2T,IAErC0jB,SAAU,WACR,IAAI1jB,EAEJ,OADAA,EAAO,GAAKrlB,UAAUlB,OAASE,EAAMW,KAAKK,UAAW,GAAK,GACnDunC,EAAK71B,EAAS,gBAAiB2T,IAExCikB,YAAaM,EAAc1H,GAC3BqH,gBAAoC,MAAnBA,GAA+C,UAApBA,IAEvC3B,EAAezqC,KAtEpBoqC,EAAK71B,EAAS,iBACP,KAwEX6zB,EAAM2G,sBAAwB,SAAU/uC,GACtC,IAAI2uC,EAAQxB,EAIZ,GAFAA,GADAwB,EAASvgC,MACK++B,KAed,OATIwB,EAAO1mC,MACTyhC,EAAQyD,EAAM,oBAAqB,CACjCllC,KAAM0mC,EAAO1mC,KACbyJ,MAAOi9B,EAAOj9B,QAIlBg4B,EAAQyD,EAAM,4BAA6BwB,EAAOK,gBAClDtF,EAAQyD,EAAM,+BAAgCwB,EAAO9O,aAAa,eAC3D6J,EAAQyD,EAAM,+BAAgCwB,EAAO9O,aAAa,gBAG3EuI,EAAM6G,0BAA4B,SAAUjvC,GAC1C,IAAI4wB,EAAMse,EAAyCV,EAQnD,GAPOpgC,KACPogC,GADOpgC,KACQyxB,aAAa,gBAAkB,OAAOx+B,cACrDuvB,EAFOxiB,KAEKyxB,aAAa,eAEzBqP,GADYlvC,EAAEylB,SAAWzlB,EAAEwlB,UACsB,QAAXgpB,IAAqB5d,EACxB,MAAZ5wB,EAAE2uC,QAA+B,IAAb3uC,EAAE2uC,QAEjBO,EAC1B,OAAOlvC,EAAE0qC,6BAGZloC,KAAK4L,MACR,WACE,IAAIu7B,EAAGI,EAAgBY,EAAUsD,EAAgBD,EAAe5D,EAAM2E,EAAuBtF,EAAS4D,EAAeU,EAAuBM,EAAcK,EAAczF,EAAcgG,EAA2B/E,EAGjN,GAFAE,EAAOhC,EAAMgC,KAAMO,EAAWvC,EAAMuC,SAAUlB,EAAUrB,EAAMqB,QAASE,EAAIvB,EAAMuB,EAAGO,EAAoB9B,EAAM8B,kBAAmBH,EAAiB3B,EAAM2B,eAAgBd,EAAeb,EAAMa,aAAc+E,EAAgB5F,EAAM4F,cAAeC,EAAiB7F,EAAM6F,eAAgBF,EAAwB3F,EAAM2F,sBAAuBV,EAAgBjF,EAAMiF,cAAe4B,EAA4B7G,EAAM6G,0BAA2BP,EAAetG,EAAMsG,aAAcK,EAAwB3G,EAAM2G,sBAAuBV,EAAejG,EAAMiG,aAErgB,qBAAXc,GAAqC,OAAXA,GAAkC,MAAfA,EAAO9D,KAAc,CAC3E,GAAI8D,EAAOC,MACT,MAAM,IAAI1lC,MAAM,kEAGlBylC,EAAOC,MAAQhH,EACf+G,EAAOE,eAAc,SAAUt9B,EAASu9B,EAAiBtF,GACvD,IAAKj4B,EAAQo6B,YACX,OAAOpC,EAAeC,MAK5B5B,EAAMpuB,MAAQ,WACZ,GAAImG,OAAOovB,cACT,MAAM,IAAI7lC,MAAM,sCAiDlB,OA9CAyW,OAAOhe,iBAAiB,YAAY,WAMlC,OALAwnC,EAAEvB,EAAMQ,oBAAoBxnC,SAAQ,SAAU+J,GAC5C,GAAIs+B,EAAQt+B,EAAI,gBACd,OAAO6iC,EAAc7iC,MAGlBw+B,EAAEvB,EAAMU,qBAAqB1nC,SAAQ,SAAU+J,GACpD,GAAIs+B,EAAQt+B,EAAI,gBACd,OAAO6iC,EAAc7iC,SAI3Bw/B,EAAS7/B,SAAUs9B,EAAMU,oBAAqB,gBAAiBkF,GAC/DrD,EAAS7/B,SAAUs9B,EAAMU,oBAAqB,eAAgBkF,GAC9DrD,EAAS7/B,SAAUs9B,EAAMW,sBAAuB,gBAAiBiF,GACjErD,EAAS7/B,SAAUs9B,EAAMW,sBAAuB,eAAgBiF,GAChErD,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAAS4G,GACrDtE,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAAS0F,GACrDpD,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAASgF,GACrD1C,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAAS4F,GACrDtD,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAASqG,GACrD/D,EAAS7/B,SAAUs9B,EAAMC,kBAAmB,QAASgG,GACrD1D,EAAS7/B,SAAUs9B,EAAME,oBAAqB,QAAS2G,GACvDtE,EAAS7/B,SAAUs9B,EAAME,oBAAqB,QAASyF,GACvDpD,EAAS7/B,SAAUs9B,EAAME,oBAAqB,QAAS+E,GACvD1C,EAAS7/B,SAAUs9B,EAAME,oBAAqB,QAAS2F,GACvDtD,EAAS7/B,SAAUs9B,EAAME,oBAAqB,QAASoG,GACvD/D,EAAS7/B,SAAUs9B,EAAMI,oBAAqB,SAAUuF,GACxDpD,EAAS7/B,SAAUs9B,EAAMI,oBAAqB,SAAU6E,GACxD1C,EAAS7/B,SAAUs9B,EAAMI,oBAAqB,SAAUkG,GACxD/D,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,SAAUsF,GACvDpD,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,SAAU4E,GACvD1C,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,SAAUiG,GACvD/D,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,UAAU,SAAUzoC,GAC/D,OAAO+B,YAAW,WAChB,OAAOksC,EAAejuC,KACrB,OAEL2qC,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,YAAawF,GAC1DtD,EAAS7/B,SAAUs9B,EAAMK,mBAAoB,gBAAiBuF,GAC9DrD,EAAS7/B,SAAUs9B,EAAMM,uBAAwB,QAASuG,GAC1DtE,EAAS7/B,SAAUs9B,EAAMM,uBAAwB,QAASqF,GAC1DpD,EAAS7/B,SAAUs9B,EAAMM,uBAAwB,QAAS2E,GAC1D1C,EAAS7/B,SAAUs9B,EAAMM,uBAAwB,QAASqG,GAC1DjkC,SAAS3I,iBAAiB,mBAAoB+nC,GAC9Cp/B,SAAS3I,iBAAiB,mBAAoB8mC,GACvC9oB,OAAOovB,eAAgB,GAG5BpvB,OAAOioB,QAAUA,GAASgC,EAAKt/B,SAAU,yBAC3Cs9B,EAAMpuB,SAEPxX,KAAK4L,QACP5L,KAAK4L,MAEgE,WAArB3O,EAAQf,IAAyBA,EAAOC,QACzFD,EAAOC,QAAUypC,OAEL,2BAAZ,KAAY,oCAEb5lC,KAAK4L,Q,6DChyBR,SAAS3O,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAIgE,EACA8rC,EAAeC,YACfC,EAAYC,SACZC,EAAanjC,UAEbojC,EAAwB,SAA+BC,GACzD,IACE,OAAOJ,EAAU,yBAA2BI,EAAmB,iBAAxDJ,GACP,MAAO1vC,MAGP+vC,EAAQ/wC,OAAOiY,yBAEnB,GAAI84B,EACF,IACEA,EAAM,GAAI,IACV,MAAO/vC,GACP+vC,EAAQ,KAIZ,IAAIC,EAAiB,WACnB,MAAM,IAAIJ,GAGRK,EAAiBF,EAAQ,WAC3B,IAIE,OAAOC,EACP,MAAOE,GACP,IAEE,OAAOH,EAAMltC,UAAW,UAAU1D,IAClC,MAAOgxC,GACP,OAAOH,IAXgB,GAcvBA,EAEFI,EAAa,EAAQ,IAAR,GAEbC,EAAWrxC,OAAOuZ,gBAAkB,SAAU5E,GAChD,OAAOA,EAAE4D,WAIP+4B,EAAY,GACZC,EAAmC,qBAAfC,WAA6B9sC,EAAY2sC,EAASG,YACtEC,EAAa,CACf,mBAA8C,qBAAnBC,eAAiChtC,EAAYgtC,eACxE,UAAW3tC,MACX,gBAAwC,qBAAhB4tC,YAA8BjtC,EAAYitC,YAClE,2BAA4BP,EAAaC,EAAS,GAAG1wC,OAAOC,aAAe8D,EAC3E,mCAAoCA,EACpC,kBAAmB4sC,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,qBAAZM,QAA0BltC,EAAYktC,QAC1D,WAA8B,qBAAXC,OAAyBntC,EAAYmtC,OACxD,YAAa/4B,QACb,aAAkC,qBAAbg5B,SAA2BptC,EAAYotC,SAC5D,SAAUjsC,KACV,cAAeksC,UACf,uBAAwBC,mBACxB,cAAeC,UACf,uBAAwBhE,mBACxB,UAAWvjC,MACX,SAAUwnC,KAEV,cAAeC,UACf,iBAA0C,qBAAjBC,aAA+B1tC,EAAY0tC,aACpE,iBAA0C,qBAAjBC,aAA+B3tC,EAAY2tC,aACpE,yBAA0D,qBAAzBC,qBAAuC5tC,EAAY4tC,qBACpF,aAAc5B,EACd,sBAAuBY,EACvB,cAAoC,qBAAdiB,UAA4B7tC,EAAY6tC,UAC9D,eAAsC,qBAAfC,WAA6B9tC,EAAY8tC,WAChE,eAAsC,qBAAfC,WAA6B/tC,EAAY+tC,WAChE,aAAcpe,SACd,UAAWzrB,MACX,sBAAuBwoC,EAAaC,EAASA,EAAS,GAAG1wC,OAAOC,cAAgB8D,EAChF,SAA0E,YAA/C,qBAATihC,KAAuB,YAAcllC,EAAQklC,OAAsBA,KAAOjhC,EAC5F,QAAwB,qBAARzC,IAAsByC,EAAYzC,IAClD,yBAAyC,qBAARA,KAAwBmvC,EAAyBC,GAAS,IAAIpvC,KAAMtB,OAAOC,aAAtC8D,EACtE,SAAUmD,KACV,WAAYwM,OACZ,WAAYrU,OACZ,eAAgBktB,WAChB,aAAc3kB,SACd,YAAgC,qBAAZohB,QAA0BjlB,EAAYilB,QAC1D,UAA4B,qBAAV9Q,MAAwBnU,EAAYmU,MACtD,eAAgB65B,WAChB,mBAAoBr5B,eACpB,YAAgC,qBAAZ1B,QAA0BjT,EAAYiT,QAC1D,WAAY7M,OACZ,QAAwB,qBAAR6nC,IAAsBjuC,EAAYiuC,IAClD,yBAAyC,qBAARA,KAAwBvB,EAAyBC,GAAS,IAAIsB,KAAMhyC,OAAOC,aAAtC8D,EACtE,sBAAoD,qBAAtBkuC,kBAAoCluC,EAAYkuC,kBAC9E,WAAYr+B,OACZ,4BAA6B68B,EAAaC,EAAS,GAAG1wC,OAAOC,aAAe8D,EAC5E,WAAY0sC,EAAazwC,OAAS+D,EAClC,gBAAiB8rC,EACjB,mBAAoBS,EACpB,eAAgBM,EAChB,cAAeX,EACf,eAAsC,qBAAfY,WAA6B9sC,EAAY8sC,WAChE,sBAAoD,qBAAtBqB,kBAAoCnuC,EAAYmuC,kBAC9E,gBAAwC,qBAAhBC,YAA8BpuC,EAAYouC,YAClE,gBAAwC,qBAAhBC,YAA8BruC,EAAYquC,YAClE,aAAcC,SACd,YAAgC,qBAAZ5kC,QAA0B1J,EAAY0J,QAC1D,YAAgC,qBAAZ6kC,QAA0BvuC,EAAYuuC,QAC1D,YAAgC,qBAAZC,QAA0BxuC,EAAYwuC,SAGxDC,EAAS,SAASA,EAAOlqC,GAC3B,IAAIyJ,EAEJ,GAAa,oBAATzJ,EACFyJ,EAAQm+B,EAAsB,6BACzB,GAAa,wBAAT5nC,EACTyJ,EAAQm+B,EAAsB,wBACzB,GAAa,6BAAT5nC,EACTyJ,EAAQm+B,EAAsB,8BACzB,GAAa,qBAAT5nC,EAA6B,CACtC,IAAIwC,EAAK0nC,EAAO,4BAEZ1nC,IACFiH,EAAQjH,EAAG3K,gBAER,GAAa,6BAATmI,EAAqC,CAC9C,IAAImqC,EAAMD,EAAO,oBAEbC,IACF1gC,EAAQ2+B,EAAS+B,EAAItyC,YAKzB,OADA2wC,EAAWxoC,GAAQyJ,EACZA,GAGL2gC,EAAiB,CACnB,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAGhCpwC,EAAO,EAAQ,KAEfqwC,EAAS,EAAQ,KAEjBC,EAAUtwC,EAAKO,KAAKmtC,SAASntC,KAAMO,MAAMjD,UAAUyE,QACnDiuC,EAAevwC,EAAKO,KAAKmtC,SAASxqC,MAAOpC,MAAMjD,UAAU2yC,QACzDC,EAAWzwC,EAAKO,KAAKmtC,SAASntC,KAAM+Q,OAAOzT,UAAU4E,SACrDiuC,EAAY1wC,EAAKO,KAAKmtC,SAASntC,KAAM+Q,OAAOzT,UAAU+B,OAGtD+wC,EAAa,qGACbC,EAAe,WAGfC,EAAe,SAAsBC,GACvC,IAAI94B,EAAQ04B,EAAUI,EAAQ,EAAG,GAC7B74B,EAAOy4B,EAAUI,GAAS,GAE9B,GAAc,MAAV94B,GAA0B,MAATC,EACnB,MAAM,IAAIs1B,EAAa,kDAClB,GAAa,MAATt1B,GAA0B,MAAVD,EACzB,MAAM,IAAIu1B,EAAa,kDAGzB,IAAIt6B,EAAS,GAIb,OAHAw9B,EAASK,EAAQH,GAAY,SAAU/oC,EAAOg5B,EAAQmQ,EAAOC,GAC3D/9B,EAAOA,EAAOvT,QAAUqxC,EAAQN,EAASO,EAAWJ,EAAc,MAAQhQ,GAAUh5B,KAE/EqL,GAKLg+B,EAAmB,SAA0BjrC,EAAMkrC,GACrD,IACIC,EADAC,EAAgBprC,EAQpB,GALIqqC,EAAOD,EAAgBgB,KAEzBA,EAAgB,KADhBD,EAAQf,EAAegB,IACK,GAAK,KAG/Bf,EAAO7B,EAAY4C,GAAgB,CACrC,IAAI3hC,EAAQ++B,EAAW4C,GAMvB,GAJI3hC,IAAU4+B,IACZ5+B,EAAQygC,EAAOkB,IAGI,qBAAV3hC,IAA0ByhC,EACnC,MAAM,IAAIvD,EAAW,aAAe3nC,EAAO,wDAG7C,MAAO,CACLmrC,MAAOA,EACPnrC,KAAMorC,EACN3hC,MAAOA,GAIX,MAAM,IAAI89B,EAAa,aAAevnC,EAAO,qBAG/CvJ,EAAOC,QAAU,SAAsBsJ,EAAMkrC,GAC3C,GAAoB,kBAATlrC,GAAqC,IAAhBA,EAAKtG,OACnC,MAAM,IAAIiuC,EAAW,6CAGvB,GAAI/sC,UAAUlB,OAAS,GAA6B,mBAAjBwxC,EACjC,MAAM,IAAIvD,EAAW,6CAGvB,IAAIhmC,EAAQkpC,EAAa7qC,GACrBqrC,EAAoB1pC,EAAMjI,OAAS,EAAIiI,EAAM,GAAK,GAClD2pC,EAAYL,EAAiB,IAAMI,EAAoB,IAAKH,GAC5DK,EAAoBD,EAAUtrC,KAC9ByJ,EAAQ6hC,EAAU7hC,MAClB+hC,GAAqB,EACrBL,EAAQG,EAAUH,MAElBA,IACFE,EAAoBF,EAAM,GAC1BZ,EAAa5oC,EAAO2oC,EAAQ,CAAC,EAAG,GAAIa,KAGtC,IAAK,IAAI/zC,EAAI,EAAGq0C,GAAQ,EAAMr0C,EAAIuK,EAAMjI,OAAQtC,GAAK,EAAG,CACtD,IAAI6K,EAAON,EAAMvK,GACb4a,EAAQ04B,EAAUzoC,EAAM,EAAG,GAC3BgQ,EAAOy4B,EAAUzoC,GAAO,GAE5B,IAAe,MAAV+P,GAA2B,MAAVA,GAA2B,MAAVA,GAA0B,MAATC,GAAyB,MAATA,GAAyB,MAATA,IAAiBD,IAAUC,EACjH,MAAM,IAAIs1B,EAAa,wDAUzB,GAPa,gBAATtlC,GAA2BwpC,IAC7BD,GAAqB,GAMnBnB,EAAO7B,EAFX+C,EAAoB,KADpBF,GAAqB,IAAMppC,GACmB,KAG5CwH,EAAQ++B,EAAW+C,QACd,GAAa,MAAT9hC,EAAe,CACxB,KAAMxH,KAAQwH,GAAQ,CACpB,IAAKyhC,EACH,MAAM,IAAIvD,EAAW,sBAAwB3nC,EAAO,+CAGtD,OAGF,GAAI8nC,GAAS1wC,EAAI,GAAKuK,EAAMjI,OAAQ,CAClC,IAAIqV,EAAO+4B,EAAMr+B,EAAOxH,GAUtBwH,GATFgiC,IAAU18B,IAQG,QAASA,KAAU,kBAAmBA,EAAK7X,KAC9C6X,EAAK7X,IAELuS,EAAMxH,QAGhBwpC,EAAQpB,EAAO5gC,EAAOxH,GACtBwH,EAAQA,EAAMxH,GAGZwpC,IAAUD,IACZhD,EAAW+C,GAAqB9hC,IAKtC,OAAOA,I,iCCnVT,IAAIiiC,EAAiB,EAAQ,KAE7Bj1C,EAAOC,QAAUgxC,SAAS7vC,UAAUmC,MAAQ0xC,G,iCCF5C,IAAIjvC,EAAU6O,OAAOzT,UAAU4E,QAC3BkvC,EAAkB,OAClBC,EACO,UADPA,EAEO,UAEXn1C,EAAOC,QAAU,CACf,QAAWk1C,EACXC,WAAY,CACVC,QAAS,SAAiBriC,GACxB,OAAOhN,EAAQlC,KAAKkP,EAAOkiC,EAAiB,MAE9CI,QAAS,SAAiBtiC,GACxB,OAAO6B,OAAO7B,KAGlBqiC,QAASF,EACTG,QAASH,I,iCCjBX,SAASp0C,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAIF,EAAU,EAAQ,KAElBy0C,EAAMj1C,OAAOc,UAAUyC,eACvB8J,EAAUtJ,MAAMsJ,QAEhB6nC,EAAW,WAGb,IAFA,IAAIC,EAAQ,GAEH90C,EAAI,EAAGA,EAAI,MAAOA,EACzB80C,EAAMjxC,KAAK,MAAQ7D,EAAI,GAAK,IAAM,IAAMA,EAAEiK,SAAS,KAAKjI,eAG1D,OAAO8yC,EAPM,GA6BXC,EAAgB,SAAuB1nB,EAAQ3a,GAGjD,IAFA,IAAIrS,EAAMqS,GAAWA,EAAQsiC,aAAer1C,OAAO2Z,OAAO,MAAQ,GAEzDtZ,EAAI,EAAGA,EAAIqtB,EAAO/qB,SAAUtC,EACV,qBAAdqtB,EAAOrtB,KAChBK,EAAIL,GAAKqtB,EAAOrtB,IAIpB,OAAOK,GAoNThB,EAAOC,QAAU,CACfy1C,cAAeA,EACfjiC,OAvJW,SAA4B9D,EAAQqe,GAC/C,OAAO1tB,OAAO+B,KAAK2rB,GAAQtoB,QAAO,SAAUkwC,EAAKhzC,GAE/C,OADAgzC,EAAIhzC,GAAOorB,EAAOprB,GACXgzC,IACNjmC,IAoJHkmC,QArBY,SAAiBzzC,EAAGquB,GAChC,MAAO,GAAG5qB,OAAOzD,EAAGquB,IAqBpBqlB,QAlEY,SAAiB9iC,GAS7B,IARA,IAAI+iC,EAAQ,CAAC,CACX/0C,IAAK,CACHiB,EAAG+Q,GAELpP,KAAM,MAEJoyC,EAAO,GAEFr1C,EAAI,EAAGA,EAAIo1C,EAAM9yC,SAAUtC,EAKlC,IAJA,IAAI4D,EAAOwxC,EAAMp1C,GACbK,EAAMuD,EAAKvD,IAAIuD,EAAKX,MACpBvB,EAAO/B,OAAO+B,KAAKrB,GAEdi1C,EAAI,EAAGA,EAAI5zC,EAAKY,SAAUgzC,EAAG,CACpC,IAAIrzC,EAAMP,EAAK4zC,GACX/wC,EAAMlE,EAAI4B,GAEO,WAAjB7B,EAAQmE,IAA6B,OAARA,IAAuC,IAAvB8wC,EAAKjtB,QAAQ7jB,KAC5D6wC,EAAMvxC,KAAK,CACTxD,IAAKA,EACL4C,KAAMhB,IAERozC,EAAKxxC,KAAKU,IAMhB,OA/MiB,SAAsB6wC,GACvC,KAAOA,EAAM9yC,OAAS,GAAG,CACvB,IAAIsB,EAAOwxC,EAAM/zC,MACbhB,EAAMuD,EAAKvD,IAAIuD,EAAKX,MAExB,GAAI+J,EAAQ3M,GAAM,CAGhB,IAFA,IAAIk1C,EAAY,GAEPD,EAAI,EAAGA,EAAIj1C,EAAIiC,SAAUgzC,EACV,qBAAXj1C,EAAIi1C,IACbC,EAAU1xC,KAAKxD,EAAIi1C,IAIvB1xC,EAAKvD,IAAIuD,EAAKX,MAAQsyC,IAgM1BC,CAAaJ,GACN/iC,GAsCPojC,OAnJW,SAAgB1xC,EAAK2xC,EAASC,GACzC,IAAIC,EAAiB7xC,EAAIsB,QAAQ,MAAO,KAExC,GAAgB,eAAZswC,EAEF,OAAOC,EAAevwC,QAAQ,iBAAkBwwC,UAIlD,IACE,OAAOlE,mBAAmBiE,GAC1B,MAAOj1C,GACP,OAAOi1C,IAwITE,OApIW,SAAgB/xC,EAAKgyC,EAAgBJ,EAASK,EAAM5rC,GAG/D,GAAmB,IAAfrG,EAAIzB,OACN,OAAOyB,EAGT,IAAI2vC,EAAS3vC,EAQb,GANqB,WAAjB3D,EAAQ2D,GACV2vC,EAASpzC,OAAOG,UAAUwJ,SAAS9G,KAAKY,GAChB,kBAARA,IAChB2vC,EAASx/B,OAAOnQ,IAGF,eAAZ4xC,EACF,OAAOM,OAAOvC,GAAQruC,QAAQ,mBAAmB,SAAU6wC,GACzD,MAAO,SAAWhuC,SAASguC,EAAG1zC,MAAM,GAAI,IAAM,SAMlD,IAFA,IAAI2zC,EAAM,GAEDn2C,EAAI,EAAGA,EAAI0zC,EAAOpxC,SAAUtC,EAAG,CACtC,IAAI6B,EAAI6xC,EAAO0C,WAAWp2C,GAEhB,KAAN6B,GACK,KAANA,GACM,KAANA,GACM,MAANA,GACAA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClBuI,IAAWjK,EAAQu0C,UAAkB,KAAN7yC,GAAoB,KAANA,GAE9Cs0C,GAAOzC,EAAO9gB,OAAO5yB,GAInB6B,EAAI,IACNs0C,GAAYtB,EAAShzC,GAInBA,EAAI,KACNs0C,GAAatB,EAAS,IAAOhzC,GAAK,GAAKgzC,EAAS,IAAW,GAAJhzC,GAIrDA,EAAI,OAAUA,GAAK,MACrBs0C,GAAatB,EAAS,IAAOhzC,GAAK,IAAMgzC,EAAS,IAAOhzC,GAAK,EAAI,IAAQgzC,EAAS,IAAW,GAAJhzC,IAI3F7B,GAAK,EACL6B,EAAI,QAAgB,KAAJA,IAAc,GAA4B,KAAvB6xC,EAAO0C,WAAWp2C,IAGrDm2C,GAAOtB,EAAS,IAAOhzC,GAAK,IAAMgzC,EAAS,IAAOhzC,GAAK,GAAK,IAAQgzC,EAAS,IAAOhzC,GAAK,EAAI,IAAQgzC,EAAS,IAAW,GAAJhzC,IAGvH,OAAOs0C,GAwEPE,SAjCa,SAAkBh2C,GAC/B,SAAKA,GAAwB,WAAjBD,EAAQC,QAIVA,EAAIG,aAAeH,EAAIG,YAAY61C,UAAYh2C,EAAIG,YAAY61C,SAASh2C,KA6BlFi2C,SAtCa,SAAkBj2C,GAC/B,MAA+C,oBAAxCV,OAAOc,UAAUwJ,SAAS9G,KAAK9C,IAsCtCk2C,SAvBa,SAAkBhyC,EAAK6G,GACpC,GAAI4B,EAAQzI,GAAM,CAGhB,IAFA,IAAIiyC,EAAS,GAEJx2C,EAAI,EAAGA,EAAIuE,EAAIjC,OAAQtC,GAAK,EACnCw2C,EAAO3yC,KAAKuH,EAAG7G,EAAIvE,KAGrB,OAAOw2C,EAGT,OAAOprC,EAAG7G,IAaVkyC,MA3NU,SAASA,EAAMznC,EAAQqe,EAAQ3a,GAEzC,IAAK2a,EACH,OAAOre,EAGT,GAAwB,WAApB5O,EAAQitB,GAAsB,CAChC,GAAIrgB,EAAQgC,GACVA,EAAOnL,KAAKwpB,OACP,KAAIre,GAA8B,WAApB5O,EAAQ4O,GAK3B,MAAO,CAACA,EAAQqe,IAJZ3a,IAAYA,EAAQsiC,cAAgBtiC,EAAQgkC,mBAAqB9B,EAAIzxC,KAAKxD,OAAOc,UAAW4sB,MAC9Fre,EAAOqe,IAAU,GAMrB,OAAOre,EAGT,IAAKA,GAA8B,WAApB5O,EAAQ4O,GACrB,MAAO,CAACA,GAAQ9J,OAAOmoB,GAGzB,IAAIspB,EAAc3nC,EAMlB,OAJIhC,EAAQgC,KAAYhC,EAAQqgB,KAC9BspB,EAAc5B,EAAc/lC,EAAQ0D,IAGlC1F,EAAQgC,IAAWhC,EAAQqgB,IAC7BA,EAAOtrB,SAAQ,SAAU6B,EAAM5D,GAC7B,GAAI40C,EAAIzxC,KAAK6L,EAAQhP,GAAI,CACvB,IAAI42C,EAAa5nC,EAAOhP,GAEpB42C,GAAsC,WAAxBx2C,EAAQw2C,IAA4BhzC,GAA0B,WAAlBxD,EAAQwD,GACpEoL,EAAOhP,GAAKy2C,EAAMG,EAAYhzC,EAAM8O,GAEpC1D,EAAOnL,KAAKD,QAGdoL,EAAOhP,GAAK4D,KAGToL,GAGFrP,OAAO+B,KAAK2rB,GAAQtoB,QAAO,SAAUkwC,EAAKhzC,GAC/C,IAAIoQ,EAAQgb,EAAOprB,GAQnB,OANI2yC,EAAIzxC,KAAK8xC,EAAKhzC,GAChBgzC,EAAIhzC,GAAOw0C,EAAMxB,EAAIhzC,GAAMoQ,EAAOK,GAElCuiC,EAAIhzC,GAAOoQ,EAGN4iC,IACN0B,M,0CC3GL,kCAAmD,OAAOv2C,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,IAMzU,YAEE,YACE,WACE0O,KAAK8nC,WAAa,CAChBC,UACS,MAAQh2B,OAAOi2B,QAAQC,WAAa,MAAQl2B,OAAOgZ,uBAAyB,MAAQhZ,OAAOhe,iBAEpGm0C,MAAO,SAAev2C,EAAGO,GACvB,OAAON,EAAEu2C,WAAWD,MAAMv2C,EAAGO,IAE/Bk2C,WAAY,WACV,OAAOx2C,EAAEu2C,WAAWC,cAEtBC,oBAAqB,SAA6B12C,GAChD,OAAOC,EAAEu2C,WAAWE,oBAAoB12C,OAG3CyC,KAAK4L,QACP5L,KAlBK4L,MAmBR,IAAIpO,EAnBIoO,KAmBE8nC,YACV,YACE,WACE,IAAIn2C,EACAO,EACAF,EACAO,EAAI,GAAGkB,MACX7B,EAAE02C,WAAa,SAAU32C,GACvB,IAAIC,EAAGM,EAAGF,EAGV,IAAKJ,KAFLM,EAAI,GAEMP,EACRK,EAAIL,EAAEC,GAAIM,EAAEN,GAAKI,EAGnB,OAAOE,GACNN,EAAE0gC,QAAU,SAAU1gC,EAAGM,GAC1B,OAAOP,EAAEyC,KAAKxC,EAAGM,IAChBP,EAAI,WACL,IAAOC,EACP,OAAqC,OAASA,EAAnC8K,SAASqZ,gBAAgCuc,SAAW1gC,EAAI,SAAUD,GAC3E,IAAIC,EAEJ,IAAKA,EAAIoO,KAAMpO,GAAI,CACjB,GAAIA,EAAEmpB,WAAa2B,KAAK6rB,cAAgBr2C,EAAEkC,KAAKxC,EAAGD,GAAI,OAAOC,EAC7DA,EAAIA,EAAEqL,aAPL,GAUFrL,EAAE42C,MAAQ,SAAU72C,GACvB,OAAOgC,WAAWhC,EAAG,IACpBC,EAAE62C,SAAW,SAAU92C,GACxB,IAAIC,EACJ,OAAOA,EAAI,KAAM,WACf,IAAIM,EACJ,OAAOA,EAAI,GAAKuC,UAAUlB,OAAShB,EAAE6B,KAAKK,UAAW,GAAK,GAAI,MAAQ7C,EAAIA,EAAIA,EAAIm5B,sBAAsB,SAAU/4B,GAChH,OAAO,WACL,OAAOJ,EAAI,KAAMD,EAAEoF,MAAM/E,EAAGE,IAFwE,CAItG8N,SAEHpO,EAAE82C,SAAW,SAAU/2C,EAAGC,GAC3B,IAAIM,EAAGK,EAAGtB,EAAG++B,EAAGt9B,EAAGF,EACnB,OAA+BA,GAAxBE,EAAI,MAAQd,EAAIA,EAAI,IAAUqO,OAAQ/N,EAAIQ,EAAEypC,WAAY5pC,EAAIG,EAAE8vB,MAAMvxB,EAAIyL,SAASu/B,YAAY,WAAa0M,UAAUh3C,GAAG,GAAU,IAANO,GAAWjB,EAAEuxB,KAAO,MAAQjwB,EAAIA,EAAI,GAAItB,EAAEkrC,aAAenqC,IAAMg+B,EAAI/+B,EAAEggB,eAAgBhgB,EAAEggB,eAAiB,WACxO,OAAOjR,KAAKo8B,kBAAoBxrC,OAAOC,eAAemP,KAAM,mBAAoB,CAC9EjP,IAAK,WACH,OAAO,KAEPi/B,EAAE57B,KAAK4L,SACR,MAAQxN,EAAIA,EAAIkK,UAAU2S,cAAcpe,GAAIA,GAChDe,EAAI,WACL,IAAIL,EACJ,OAAOA,EAAI+K,SAASu/B,YAAY,WAAa0M,UAAU,QAAQ,GAAI,GAAKh3C,EAAEsf,iBAAkBtf,EAAEyqC,iBAFzF,GAGFxqC,EAAE6J,MAAQ,SAAU9J,EAAGC,GAC1B,OAAOM,EAAEkC,KAAKzC,EAAGC,IAChBM,EAAI,WACL,IAAIP,EAAGC,EAAGM,EAAGF,EACb,OAAqC,OAASJ,EAAI,OAASM,EAAI,OAASF,GAAjEL,EAAI+K,SAASqZ,iBAA0DilB,iBAAmBhpC,EAAIL,EAAEypC,uBAAyBlpC,EAAIP,EAAEupC,mBAAqBtpC,EAAID,EAAEspC,mBAF5J,GAGFrpC,EAAEg3C,KAAO,WACZ,IAAIj3C,EAAGC,EAAGM,EAEV,IAAKA,EAAI,GAAIP,EAAIC,EAAI,EAAG,IAAMA,EAAGD,IAAMC,EACrCM,GAAK,IAAMP,GAAK,KAAOA,GAAK,KAAOA,GAAK,KAAOA,EAAI,IAAM,KAAOA,EAAI,IAAM,KAAOA,GAAK8G,KAAKC,MAAM,EAAID,KAAK43B,UAAY,GAAGn1B,SAAS,IAAMzC,KAAKC,MAAM,GAAKD,KAAK43B,UAAUn1B,SAAS,IAGlL,OAAOhJ,KAERkC,KAAK4L,MAAO,WACbpO,EAAEi3C,SAAW,WACX,SAASl3C,EAAEA,GACT,IAAIC,EAAGM,EACP,MAAQP,IAAMA,EAAI,KAAKO,EAAIwK,SAAS8uB,cAAc,MAAQoO,KAAOjoC,EAAEuJ,WAAY8E,KAAK8oC,YAAc52C,EAAE0nC,KAAyB,GAAnBhoC,EAAIM,EAAEwvB,KAAKnuB,QAAgByM,KAAK+oC,WAAa/oC,KAAK8oC,aAAe9oC,KAAK+oC,WAAa/oC,KAAK8oC,YAAYr1C,MAAM,GAAI7B,GAAIoO,KAAKgpC,OAAS92C,EAAEwvB,KAAKjuB,MAAM,IAGzP,IAAI7B,EAAGM,EAAGF,EAAGO,EACb,OAAOZ,EAAEs3C,KAAO,SAAUt3C,GACxB,OAAOA,aAAaqO,KAAOrO,EAAI,IAAIqO,KAAKrO,IACvCA,EAAED,UAAUw3C,UAAY,WACzB,OAAOlpC,KAAK8oC,YAAY12C,MAAM,IAAK,GAAGmmB,KAAK,MAC1C5mB,EAAED,UAAUy3C,QAAU,WACvB,IAAIx3C,EAAGC,EACP,OAAO,OAASD,EAAI,OAASC,EAAIoO,KAAK+oC,WAAWttC,MAAM,yBAA2B7J,EAAE,QAAK,GAAUD,EAAI,KACtGA,EAAED,UAAU03C,kBAAoB,WACjC,OAAOppC,KAAKmpC,UAAU/2C,MAAM,KAAKqB,MAAM,IACtC9B,EAAED,UAAU23C,qBAAuB,WACpC,OAAOrpC,KAAKopC,oBAAoB31C,OAAO,GAAG,IACzC9B,EAAED,UAAU43C,aAAe,WAC5B,IAAI33C,EAAGC,EACP,OAAO,OAASD,EAAI,OAASC,EAAIoO,KAAKqpC,uBAAuB5tC,MAAM,aAAe7J,EAAE,QAAK,GAAUD,EAAI,IACtGA,EAAED,UAAUstB,OAAS,WACtB,OAAOhf,KAAKspC,eAAe7tC,MAAM,gCAChC9J,EAAED,UAAU63C,aAAe,SAAU53C,GACtC,IAAIC,EACJ,OAAOA,EAAIM,EAAEP,GAAIqO,KAAKwpC,UAAU73C,IAAMY,EAAEyN,KAAK8oC,YAAal3C,IACzDD,EAAED,UAAU83C,UAAY,SAAU73C,GACnC,OAAOqO,KAAK8oC,eAAiB,MAAQn3C,EAAIA,EAAEm3C,iBAAc,IACxDn3C,EAAED,UAAU+3C,WAAa,WAC1B,OAAOzpC,KAAK+oC,YACXp3C,EAAED,UAAUg4C,OAAS,WACtB,OAAO1pC,KAAK8oC,aACXn3C,EAAED,UAAUwJ,SAAW,WACxB,OAAO8E,KAAK8oC,aACXn3C,EAAED,UAAUiY,QAAU,WACvB,OAAO3J,KAAK8oC,aACX52C,EAAI,SAAWP,GAChB,OAAOC,EAAED,EAAEu3C,YAAcv3C,EAAEw3C,YAC1Bv3C,EAAI,SAAWD,GAChB,OAAOK,EAAEL,EAAG,KAAOA,EAAIA,EAAI,KAC1BY,EAAI,SAAWZ,EAAGC,GACnB,OAAOD,EAAE8B,MAAM,EAAG7B,EAAE2B,UAAY3B,GAC/BI,EAAI,SAAWL,EAAGC,GACnB,OAAOD,EAAE8B,OAAO7B,EAAE2B,UAAY3B,GAC7BD,EA5CQ,IA8CbyC,KAAK4L,MAAO,WACZ,IAAIrO,EAAI,SAAWg4C,EAAI/3C,GACrB,OAAO,WACL,OAAO+3C,EAAG5yC,MAAMnF,EAAG6C,aAIvB7C,EAAEg4C,YAAc,WACd,SAAS13C,EAAEA,EAAGF,EAAGO,GACfyN,KAAKu8B,SAAWrqC,EAAG8N,KAAK6pC,gBAAkBl4C,EAAEqO,KAAK6pC,gBAAiB7pC,MAAOA,KAAK8pC,gBAAkBn4C,EAAEqO,KAAK8pC,gBAAiB9pC,MAAOA,KAAK+pC,cAAgBp4C,EAAEqO,KAAK+pC,cAAe/pC,MAAOA,KAAKgqC,cAAgBr4C,EAAEqO,KAAKgqC,cAAehqC,MAAOA,KAAKiqC,kBAAoBt4C,EAAEqO,KAAKiqC,kBAAmBjqC,MAAOA,KAAK22B,IAAM/kC,EAAEi3C,SAASI,KAAKj3C,GAAG+2C,WAAY/oC,KAAKkqC,SAAWt4C,EAAEi3C,SAASI,KAAK12C,GAAGu2C,YAAa9oC,KAAK08B,YAG9X,OAAOxqC,EAAEi4C,gBAAkB,EAAGj4C,EAAEk4C,iBAAmB,EAAGl4C,EAAEO,QAAU,GAAIP,EAAER,UAAU2kC,KAAO,WACvF,IAAI1kC,EACJ,OAAOqO,KAAK47B,MAAQ57B,KAAKqqC,MAAQrqC,KAAKsqC,sCAAuCtqC,KAAKuqC,YAAY,GAAIvqC,KAAK47B,IAAIvF,OAAQr2B,KAAKqqC,MAAO,EAAI,mBAAsB14C,EAAIqO,KAAKu8B,UAAUiO,eAAiB74C,EAAE64C,sBAAmB,QAAU,GAC3Nt4C,EAAER,UAAU+4C,OAAS,WACtB,OAAOzqC,KAAK47B,KAAO57B,KAAKqqC,KAAOrqC,KAAK47B,IAAI8O,aAAU,GACjDx4C,EAAER,UAAUu4C,kBAAoB,SAAUt4C,GAC3C,OAAOA,EAAEg5C,iBAAmB3qC,KAAKuqC,YAAY54C,EAAEi5C,OAASj5C,EAAEk5C,YAAS,GAClE34C,EAAER,UAAUs4C,cAAgB,WAC7B,OAAOhqC,KAAK8qC,WAAW,SAAUn5C,GAC/B,OAAO,WACL,IAAIC,EACJ,OAAO,MAAQA,EAAID,EAAEiqC,IAAIyB,SAAW,IAAMzrC,EAAID,EAAE4qC,SAASwO,6BAA6Bp5C,EAAEiqC,IAAIuB,aAAcxrC,EAAEiqC,IAAIwB,kBAAkB,yBAA2BzrC,EAAEq5C,QAAS,EAAIr5C,EAAE4qC,SAAS0O,4BAA4Bt5C,EAAEiqC,IAAIyB,OAAQ1rC,EAAEiqC,IAAIuB,gBAHpN,CAKrBn9B,QACD9N,EAAER,UAAUq4C,cAAgB,WAC7B,OAAO/pC,KAAK8qC,WAAW,SAAUn5C,GAC/B,OAAO,WACL,OAAOA,EAAEq5C,QAAS,EAAIr5C,EAAE4qC,SAAS0O,4BAA4Bt5C,EAAEF,YAAY04C,kBAFxD,CAIrBnqC,QACD9N,EAAER,UAAUo4C,gBAAkB,WAC/B,OAAO9pC,KAAK8qC,WAAW,SAAUn5C,GAC/B,OAAO,WACL,OAAOA,EAAEq5C,QAAS,EAAIr5C,EAAE4qC,SAAS0O,4BAA4Bt5C,EAAEF,YAAY24C,kBAFxD,CAIrBpqC,QACD9N,EAAER,UAAUm4C,gBAAkB,WAC/B,OAAO7pC,KAAK8qC,cACX54C,EAAER,UAAU44C,oCAAsC,WACnD,OAAO14C,EAAE82C,SAAS,2BAA4B,CAC5ClmB,KAAM,CACJmU,IAAK32B,KAAK22B,IACViF,IAAK57B,KAAK47B,QAGb1pC,EAAER,UAAUw5C,iCAAmC,WAChD,OAAOt5C,EAAE82C,SAAS,yBAA0B,CAC1ClmB,KAAM,CACJmU,IAAK32B,KAAK22B,IACViF,IAAK57B,KAAK47B,QAGb1pC,EAAER,UAAUgrC,UAAY,WACzB,OAAO18B,KAAK47B,IAAM,IAAI8B,eAAkB19B,KAAK47B,IAAI3F,KAAK,MAAOj2B,KAAK22B,KAAK,GAAK32B,KAAK47B,IAAInpC,QAAU,IAAMuN,KAAKvO,YAAYgB,QAASuN,KAAK47B,IAAIC,iBAAiB,SAAU,oCAAqC77B,KAAK47B,IAAIC,iBAAiB,sBAAuB77B,KAAKkqC,UAAWlqC,KAAK47B,IAAIuP,WAAanrC,KAAKiqC,kBAAmBjqC,KAAK47B,IAAIwP,OAASprC,KAAKgqC,cAAehqC,KAAK47B,IAAIyP,QAAUrrC,KAAK+pC,cAAe/pC,KAAK47B,IAAI0P,UAAYtrC,KAAK8pC,gBAAiB9pC,KAAK47B,IAAI2P,QAAUvrC,KAAK6pC,iBACtc33C,EAAER,UAAUo5C,WAAa,SAAUn5C,GACpC,OAAOqO,KAAK47B,KAAO57B,KAAKkrC,mCAAoC,MAAQv5C,GAAKA,EAAEyC,KAAK4L,MAAOA,KAAKgkB,gBAAa,GACxG9xB,EAAER,UAAU64C,YAAc,SAAU54C,GACrC,IAAIC,EACJ,OAAOoO,KAAKwrC,SAAW75C,EAAG,mBAAsBC,EAAIoO,KAAKu8B,UAAU0N,kBAAoBr4C,EAAEq4C,kBAAkBjqC,KAAKwrC,eAAY,GAC3Ht5C,EAAER,UAAUsyB,QAAU,WACvB,IAAIryB,EACJ,OAAOqO,KAAKuqC,YAAY,GAAI,mBAAsB54C,EAAIqO,KAAKu8B,UAAUkP,iBAAmB95C,EAAE85C,kBAAmBzrC,KAAKu8B,SAAW,KAAMv8B,KAAK47B,IAAM,MAC7I1pC,EAzDW,IA2DhBkC,KAAK4L,MAAO,WAOZpO,EAAE85C,YAAc,WACd,SAAS95C,IACPoO,KAAK2rC,QARD,SAAWC,EAAKh6C,GACtB,OAAO,WACL,OAAOg6C,EAAI70C,MAAMnF,EAAG6C,YAML9C,CAAEqO,KAAK2rC,QAAS3rC,MAAOA,KAAK6rC,kBAAoB7rC,KAAK8rC,0BAA2B9rC,KAAK+rC,gBAAkB/rC,KAAKgsC,wBAG7H,IAAI95C,EACJ,OAAOA,EAAI,IAAKN,EAAEq6C,WAAa,8PAAyRr6C,EAAEF,UAAUgmB,KAAO,WACzU,OAAO1X,KAAKksC,aAAU,GAAUlsC,KAAKksC,SAAU,EAAIlsC,KAAKmsC,2BAA4BnsC,KAAKosC,yBAA0BpsC,KAAKqsC,mBACvHz6C,EAAEF,UAAU0e,KAAO,WACpB,OAAOpQ,KAAKksC,UAAYlsC,KAAKssC,QAAUtsC,KAAKssC,QAAS,EAAItsC,KAAKusC,oBAAoB,SAAU56C,GAC1F,OAAO,WACL,OAAOA,EAAE66C,2BAA4B76C,EAAE86C,gBAAiB96C,EAAEu6C,SAAU,EAAIv6C,EAAE26C,QAAS,GAFL,CAIhFtsC,aAAU,GACXpO,EAAEF,UAAUg7C,SAAW,SAAU/6C,GAClC,OAAOqO,KAAKsD,MAAQ3R,EAAGqO,KAAKmQ,WAC3Bve,EAAEF,UAAUy6C,yBAA2B,WACxC,OAAOzvC,SAASo9B,KAAKxuB,aAAatL,KAAK6rC,kBAAmBnvC,SAASo9B,KAAKh8B,aACvElM,EAAEF,UAAU06C,uBAAyB,WACtC,OAAOpsC,KAAK+rC,gBAAgBvuC,MAAM6W,MAAQ,EAAGrU,KAAK+rC,gBAAgBvuC,MAAMmvC,QAAU,EAAGjwC,SAASqZ,gBAAgBzK,aAAatL,KAAK+rC,gBAAiBrvC,SAASwV,MAAOlS,KAAKmQ,WACrKve,EAAEF,UAAU66C,oBAAsB,SAAU56C,GAC7C,OAAOqO,KAAK+rC,gBAAgBvuC,MAAMmvC,QAAU,EAAGh5C,WAAWhC,EAAG,MAC5DC,EAAEF,UAAU86C,yBAA2B,WACxC,OAAOxsC,KAAK+rC,gBAAgB9uC,WAAaP,SAASqZ,gBAAgBhY,YAAYiC,KAAK+rC,sBAAmB,GACrGn6C,EAAEF,UAAU26C,eAAiB,WAC9B,OAAO,MAAQrsC,KAAK4sC,gBAAkB5sC,KAAK4sC,gBAAkB5sC,KAAK4sC,gBAAkBC,YAAY7sC,KAAK2rC,QAASz5C,IAC7GN,EAAEF,UAAU+6C,cAAgB,WAC7B,OAAOK,cAAc9sC,KAAK4sC,iBAAkB5sC,KAAK4sC,gBAAkB,MAClEh7C,EAAEF,UAAUi6C,QAAU,WACvB,OAAO3rC,KAAK0sC,SAAS1sC,KAAKsD,MAAQ7K,KAAK43B,SAAW,MACjDz+B,EAAEF,UAAUye,QAAU,WACvB,OAAO4a,sBAAsB,SAAUp5B,GACrC,OAAO,WACL,OAAOA,EAAEo6C,gBAAgBvuC,MAAM6W,MAAQ,GAAK,GAAK1iB,EAAE2R,MAAQ,KAFlC,CAI3BtD,QACDpO,EAAEF,UAAUo6C,wBAA0B,WACvC,IAAIn6C,EACJ,OAAOA,EAAI+K,SAAS8uB,cAAc,UAAYtc,KAAO,WAAYvd,EAAE4Z,YAAcvL,KAAKvO,YAAYw6C,WAAYt6C,GAC7GC,EAAEF,UAAUs6C,sBAAwB,WACrC,IAAIr6C,EACJ,OAAOA,EAAI+K,SAAS8uB,cAAc,QAAUhgB,UAAY,0BAA2B7Z,GAClFC,EA1CW,IA4ChBwC,KAAK4L,MAAO,WAOZpO,EAAEm7C,eAAiB,WACjB,SAAS76C,EAAEA,GACT8N,KAAKmoC,WAAaj2C,EAAG8N,KAAKgtC,gBARtB,SAAWC,EAAKr7C,GACtB,OAAO,WACL,OAAOq7C,EAAIl2C,MAAMnF,EAAG6C,YAMwB9C,CAAEqO,KAAKgtC,gBAAiBhtC,MAAOA,KAAKktC,YAAc,IAAIt7C,EAAE85C,YAGtG,IAAI15C,EAAGO,EAAGtB,EACV,OAAOA,EAAIW,EAAEg4C,YAAa53C,EAAIf,EAAEk5C,gBAAiB53C,EAAItB,EAAEm5C,gBAAiBl4C,EAAER,UAAUy7C,kCAAoC,SAAUx7C,EAAGC,GACnI,OAAOoO,KAAKmoC,WAAWiF,+BAA+Bz7C,EAAGC,IACxDM,EAAER,UAAU27C,aAAe,SAAU17C,GACtC,OAAOA,EAAE27C,eAAgB37C,EAAE47C,gBAAiB57C,EAAE67C,sBAC7Ct7C,EAAER,UAAU+7C,oBAAsB,SAAU97C,GAC7C,OAAOqO,KAAKktC,YAAYR,SAAS,GAAI/6C,EAAE+7C,qBAAuB,YAAc/7C,EAAE+mC,OAAS14B,KAAK2tC,4BAA8B3tC,KAAKgtC,mBAC9H96C,EAAER,UAAUk8C,uBAAyB,SAAUj8C,GAChD,OAAOqO,KAAKktC,YAAYR,SAAS/6C,EAAE65C,WAClCt5C,EAAER,UAAUm8C,sBAAwB,SAAUl8C,GAC/C,OAAOA,EAAEm8C,gBACR57C,EAAER,UAAUq8C,iCAAmC,SAAUp8C,EAAGC,GAC7D,OAAQA,GACN,KAAKI,EACL,KAAKO,EACH,OAAOyN,KAAK+3B,SAEd,QACE,OAAOpmC,EAAEm8C,iBAEZ57C,EAAER,UAAUs8C,qBAAuB,SAAUr8C,GAC9C,OAAOqO,KAAKiuC,mBACX/7C,EAAER,UAAUw8C,eAAiB,SAAUv8C,GACxC,OAAOA,EAAEw8C,kBACRj8C,EAAER,UAAU08C,gBAAkB,WAC/B,OAAOpuC,KAAK+3B,UACX7lC,EAAER,UAAUi8C,0BAA4B,WACzC,OAAO3tC,KAAKquC,mBAAqB16C,WAAWqM,KAAKgtC,gBAAiBhtC,KAAKmoC,WAAWmG,mBACjFp8C,EAAER,UAAUs7C,gBAAkB,WAC/B,OAAOhtC,KAAKktC,YAAYx1B,QACvBxlB,EAAER,UAAUu8C,gBAAkB,WAC/B,OAAOjuC,KAAKktC,YAAY98B,OAAQ1c,aAAasM,KAAKquC,qBACjDn8C,EAAER,UAAUqmC,OAAS,WACtB,OAAOhmB,OAAO6rB,SAAS7F,UACtB7lC,EAvCc,IAyCnBkC,KAAK4L,MAAO,WACZ,IAAIrO,EAAI,SAAW48C,EAAK38C,GACtB,OAAO,WACL,OAAO28C,EAAIx3C,MAAMnF,EAAG6C,aAIxB7C,EAAE48C,QAAU,WACV,SAASt8C,EAAEN,GACToO,KAAKu8B,SAAW3qC,EAAGoO,KAAKyuC,WAAa98C,EAAEqO,KAAKyuC,WAAYzuC,MAAOA,KAAK0uC,WAAa/8C,EAAEqO,KAAK0uC,WAAY1uC,MAGtG,OAAO9N,EAAER,UAAUka,MAAQ,WACzB,OAAO5L,KAAK2uC,aAAU,GAAU56C,iBAAiB,WAAYiM,KAAK0uC,YAAY,GAAK36C,iBAAiB,OAAQiM,KAAKyuC,YAAY,GAAKzuC,KAAK2uC,SAAU,IAChJz8C,EAAER,UAAUiiC,KAAO,WACpB,OAAO3zB,KAAK2uC,SAAW36C,oBAAoB,WAAYgM,KAAK0uC,YAAY,GAAK16C,oBAAoB,OAAQgM,KAAKyuC,YAAY,GAAKzuC,KAAK2uC,SAAU,QAAM,GACnJz8C,EAAER,UAAUoD,KAAO,SAAUnD,EAAGO,GACjC,OAAOP,EAAIC,EAAEi3C,SAASI,KAAKt3C,GAAIqO,KAAKiQ,OAAO,OAAQte,EAAGO,IACrDA,EAAER,UAAU4E,QAAU,SAAU3E,EAAGO,GACpC,OAAOP,EAAIC,EAAEi3C,SAASI,KAAKt3C,GAAIqO,KAAKiQ,OAAO,UAAWte,EAAGO,IACxDA,EAAER,UAAUg9C,WAAa,SAAU/8C,GACpC,IAAIO,EAAGF,EAAGO,EAAGtB,EACb,OAAO+O,KAAK4uC,yBAA2B39C,EAAI,OAASe,EAAIL,EAAEyvB,OAASpvB,EAAE68C,gBAAa,IAAW38C,EAAIN,EAAEi3C,SAASI,KAAKl3B,OAAO6rB,UAAWrrC,EAAItB,EAAE69C,sBAAuB9uC,KAAKu8B,SAASwS,iDAAiD78C,EAAGK,SAAM,GACvOL,EAAER,UAAU+8C,WAAa,SAAU98C,GACpC,OAAOC,EAAE42C,MAAM,SAAU72C,GACvB,OAAO,WACL,OAAOA,EAAEq9C,YAAa,GAFX,CAIbhvC,QACD9N,EAAER,UAAUk9C,qBAAuB,WACpC,OAAO5uC,KAAKivC,gBACX/8C,EAAER,UAAUu9C,aAAe,WAC5B,OAAOjvC,KAAKgvC,YAAc,aAAetyC,SAAS46B,YACjDplC,EAAER,UAAUue,OAAS,SAAUte,EAAGC,EAAGM,GACtC,IAAIF,EACJ,OAAOA,EAAI,CACT68C,WAAY,CACVC,sBAAuB58C,IAExB81C,QAAQr2C,EAAI,SAASK,EAAG,KAAMJ,IAChCM,EAjCO,IAmCZkC,KAAK4L,MAAO,WACZpO,EAAEs9C,YAAc,WACd,SAASv9C,EAAEA,GACT,IAAIC,EAAMI,EAAGg+B,EAAGt9B,EAAGF,EAEnB,IAAKwN,KAAK8tB,SAAW,GAAI97B,EAAI,EAAGU,EAAIf,EAAE4B,OAAQb,EAAIV,EAAGA,KACnDQ,EAAIb,EAAEK,IAAM+oB,WAAa2B,KAAK6rB,eAAiBvY,EAAIx9B,EAAE28C,WAAe,OAASv9C,EAAIoO,KAAK8tB,UAAUkC,GAAKp+B,EAAEo+B,GAAKp+B,EAAEo+B,GAAK,CACjH9gB,KAAMje,EAAEuB,GACR48C,QAAS78C,EAAEC,GACXs7B,SAAU,KACPA,SAASh5B,KAAKtC,IAIvB,IAAIZ,EAAGM,EAAGF,EAAGO,EAAGtB,EAChB,OAAOU,EAAE09C,gBAAkB,SAAU19C,GACnC,IAAIC,EACJ,OAAO,IAAIoO,KAAK,OAASpO,EAAI,MAAQD,EAAIA,EAAE2T,gBAAa,GAAU1T,EAAI,KACrED,EAAED,UAAU49C,kBAAoB,SAAU39C,GAC3C,OAAOA,KAAKqO,KAAK8tB,UAChBn8B,EAAED,UAAU69C,2BAA6B,WAC1C,IAAI59C,EACJ,OAAO,WACL,IAAIO,EAAGF,EAGP,IAAKL,KAFcK,EAAI,GAAvBE,EAAI8N,KAAK8tB,SAGH57B,EAAEP,GAAGy9C,SAAcp9C,EAAE8C,KAAKnD,GAGhC,OAAOK,GACPoC,KAAK4L,MAAMuY,KAAK,KACjB5mB,EAAED,UAAU89C,8BAAgC,SAAU79C,GACvD,OAAOqO,KAAKyvC,oCAAoC,SAAU99C,IACzDA,EAAED,UAAUg+C,kCAAoC,SAAU/9C,GAC3D,OAAOqO,KAAKyvC,oCAAoC,aAAc99C,IAC7DA,EAAED,UAAU+9C,oCAAsC,SAAU99C,EAAGC,GAChE,IAAIM,EAAGF,EAAGO,EAAGtB,EAAG++B,EAAGt9B,EAGnB,IAAKV,KAFcg+B,EAAI,GAAvBz9B,EAAIyN,KAAK8tB,SAGGp7B,GAAVzB,EAAIsB,EAAEP,IAAUkd,KAAMhd,EAAIjB,EAAE68B,SAAUp7B,IAAMf,GAAKC,EAAE09C,kBAAkBt9C,IAAMg+B,EAAEl7B,KAAK5C,EAAE,IAGtF,OAAO89B,GACNr+B,EAAED,UAAUi+C,uBAAyB,WACtC,IAAIh+C,EAAGC,EAAGM,EAAGF,EAAGO,EAAGtB,EAAG++B,EAGtB,IAAKp+B,KAFLM,EAAI,GAAIF,EAAIgO,KAAK8tB,SAGLkC,GAAVz9B,EAAIP,EAAEJ,IAAUsd,KAAMje,EAAIsB,EAAE68C,QAASz9C,EAAIY,EAAEu7B,SAAU,MAAQkC,GAAK/+B,EAAIU,EAAE4B,OAAS,GAAKrB,EAAE4C,KAAKiC,MAAM7E,EAAGP,EAAE8B,MAAM,IAAMvB,EAAE4C,KAAKiC,MAAM7E,EAAGP,GAGtI,OAAOO,GACNP,EAAED,UAAUk+C,aAAe,SAAUj+C,GACtC,IAAIC,EACJ,OAAO,OAASA,EAAIoO,KAAK6vC,sBAAsBl+C,IAAMC,EAAE6/B,aAAa,gBAAa,GAChF9/B,EAAED,UAAUm+C,sBAAwB,SAAUl+C,GAC/C,IAAIO,EAAGF,EAAGO,EAAGtB,EAGb,IAAKsB,KAFLL,OAAI,EAAQjB,EAAI+O,KAAK8tB,SAGnB97B,EAAIf,EAAEsB,GAAGu7B,SAAUl8B,EAAEI,EAAE,GAAIL,KAAOO,EAAIF,EAAE,IAG1C,OAAOE,GACNjB,EAAI,SAAWU,GAChB,OAAOO,EAAEP,GAAK,SAAWK,EAAEL,GAAK,kBAAe,GAC9CY,EAAI,SAAWZ,GAChB,MAAO,WAAaA,EAAE8/B,aAAa,0BAClCv/B,EAAI,SAAWP,GAEhB,MAAoC,WAAzBA,EAAE+D,QAAQiE,eACpB3H,EAAI,SAAWL,GAChB,IAAIC,EACJ,MAAoC,WAA7BA,EAAID,EAAE+D,QAAQiE,gBAAgC,SAAW/H,GAAK,eAAiBD,EAAE8/B,aAAa,QACpG7/B,EAAI,SAAWD,EAAGoW,GAEnB,MAAoC,SAAzBpW,EAAE+D,QAAQiE,eAA+BhI,EAAE8/B,aAAa,UAAY1pB,GAC9EpW,EA9EW,IAgFhByC,KAAK4L,MAAO,WACZpO,EAAEk+C,SAAW,WACX,SAASn+C,EAAEA,EAAGC,GACZoO,KAAK+vC,YAAcp+C,EAAGqO,KAAKgwC,YAAcp+C,EAG3C,OAAOD,EAAEs3C,KAAO,SAAUt3C,GACxB,OAAOA,aAAaqO,KAAOrO,EAAI,iBAAmBA,EAAIqO,KAAKiwC,eAAet+C,GAAKqO,KAAKkwC,gBAAgBv+C,IACnGA,EAAEs+C,eAAiB,SAAUt+C,GAC9B,IAAIC,EACJ,OAAOA,EAAI8K,SAAS8uB,cAAc,SAAWuU,UAAYpuC,EAAGqO,KAAKkwC,gBAAgBt+C,IAChFD,EAAEu+C,gBAAkB,SAAUv+C,GAC/B,IAAIO,EAAMK,EAAGtB,EACb,OAAOsB,EAAIZ,EAAEwnB,cAAc,QAASjnB,EAAI,OAASjB,EAAIU,EAAEwnB,cAAc,SAAWloB,EAAIyL,SAAS8uB,cAAc,QAA+C,IAAIxrB,KAAtCpO,EAAEs9C,YAAYG,gBAAgB98C,GAAgBL,IACrKP,EAAED,UAAUy+C,MAAQ,WACrB,OAAO,IAAInwC,KAAKvO,YAAYuO,KAAK+vC,YAAa/vC,KAAKgwC,YAAYz+B,WAAU,KACxE5f,EAAED,UAAU0+C,gBAAkB,WAC/B,IAAIz+C,EAAGO,EACP,OAAOA,EAAI,OAASP,EAAIqO,KAAKqwC,WAAW,SAAW1+C,EAAI,IAAK,IAAIC,EAAEi3C,SAAS32C,IAC1EP,EAAED,UAAU4+C,qBAAuB,WACpC,OAAOtwC,KAAKqwC,WAAW,kBACtB1+C,EAAED,UAAU6+C,oBAAsB,SAAU5+C,GAC7C,IACE,OAAOqO,KAAKgwC,YAAY72B,cAAc,QAAUxnB,EAAI,eAAiBA,EAAI,MACzE,MAAOC,MACRD,EAAED,UAAU8+C,qBAAuB,WACpC,OAAOxwC,KAAKgwC,YAAY9iC,iBAAiB,oCACxCvb,EAAED,UAAU++C,wBAA0B,SAAU9+C,GACjD,OAAOqO,KAAKgwC,YAAY72B,cAAc,IAAMxnB,EAAI,gCAC/CA,EAAED,UAAUg/C,sCAAwC,SAAU/+C,GAC/D,IAAIC,EAAGM,EAAGF,EAAGO,EAAGtB,EAEhB,IAAsCA,EAAI,GAAIiB,EAAI,EAAGF,GAAhDO,EAAIyN,KAAKwwC,wBAA6Cj9C,OAAQvB,EAAIE,EAAGA,IACxEN,EAAIW,EAAEL,GAAIP,EAAE8+C,wBAAwB7+C,EAAE6U,KAAOxV,EAAE6D,KAAKlD,GAGtD,OAAOX,GACNU,EAAED,UAAUi/C,8BAAgC,WAC7C,OAAO3wC,KAAKgwC,YAAY72B,cAAc,gBACrCxnB,EAAED,UAAUk/C,UAAY,SAAUj/C,GACnC,OAAO,MAAQqO,KAAKuwC,oBAAoB5+C,IACvCA,EAAED,UAAUm/C,cAAgB,WAC7B,MAAO,eAAiB7wC,KAAKswC,wBAC5B3+C,EAAED,UAAUo/C,YAAc,WAC3B,MAAO,aAAe9wC,KAAKswC,wBAC1B3+C,EAAED,UAAUq/C,YAAc,WAC3B,MAAO,WAAa/wC,KAAKqwC,WAAW,kBACnC1+C,EAAED,UAAU2+C,WAAa,SAAU1+C,GACpC,OAAOqO,KAAK+vC,YAAYH,aAAa,cAAgBj+C,IACpDA,EAhDQ,IAkDbyC,KAAK4L,MAAO,WACZ,IAAIrO,EAAI,GAAG8B,MAEX7B,EAAEo/C,SAAW,WACX,SAASp/C,KAET,IAAIM,EACJ,OAAON,EAAEie,OAAS,WAChB,IAAO3d,EAAGF,EAAGO,EACb,OAAOP,EAAIyC,UAAU,GAAIvC,EAAIuC,UAAU,GAA2DlC,EAAI,SAAUZ,EAAGC,EAAGM,GACpHA,EAAER,UAAYC,EAAED,UAChB,IAAIM,EAAI,IAAIE,EACRK,EAAIZ,EAAEoF,MAAM/E,EAAGJ,GACnB,OAAOhB,OAAO2B,KAAOA,EAAIA,EAAIP,EAJuE,CAKpGgO,KAL6C,GAAKvL,UAAUlB,OAAS5B,EAAEyC,KAAKK,UAAW,GAAK,IAKnF,eAAiBlC,EAAEgqC,SAAWvqC,EAAGO,EAAEsd,OAAO3d,GAAIK,GACxDX,EAAEF,UAAUu/C,WAAa,SAAUt/C,GACpC,OAAOqO,KAAKu8B,SAAS2U,eAAelxC,KAAKmxC,SAAUx/C,IAAKqO,KAAKu8B,SAAS6U,aAAapxC,KAAKmxC,UACvFv/C,EAAEF,UAAU2/C,eAAiB,WAC9B,OAAOrxC,KAAKu8B,SAAS+U,mBACpB1/C,EAAEF,UAAU6/C,oBAAsB,SAAU5/C,GAC7C,IAAIC,EACJ,MAAO,UAAYD,EAAE8/B,aAAa,wBAA0B9/B,IAAKC,EAAI8K,SAAS8uB,cAAc,WAAajgB,YAAc5Z,EAAE4Z,YAAa3Z,EAAE4/C,OAAQ,EAAIt/C,EAAEN,EAAGD,GAAIC,IAC5JM,EAAI,SAAWP,EAAGC,GACnB,IAAIM,EAAGF,EAAGO,EAAGtB,EAAG++B,EAAGt9B,EAAGF,EAEtB,IAAuBE,EAAI,GAAIR,EAAI,EAAGF,GAAjCf,EAAIW,EAAEgE,YAAiCrC,OAAQvB,EAAIE,EAAGA,IAC/CK,GAAVy9B,EAAI/+B,EAAEiB,IAAU2H,KAAMrH,EAAIw9B,EAAE1sB,MAAO5Q,EAAEoC,KAAKnD,EAAE+4B,aAAan4B,EAAGC,IAG9D,OAAOE,GACNd,EA3BQ,IA6BbwC,KAAK4L,MAAO,WACZ,IAAIrO,EACAO,EACAF,EAAI,SAAWL,EAAGC,GACpB,SAASM,IACP8N,KAAKvO,YAAcE,EAGrB,IAAK,IAAIK,KAAKJ,EACZW,EAAE6B,KAAKxC,EAAGI,KAAOL,EAAEK,GAAKJ,EAAEI,IAG5B,OAAOE,EAAER,UAAYE,EAAEF,UAAWC,EAAED,UAAY,IAAIQ,EAAKP,EAAE8/C,UAAY7/C,EAAEF,UAAWC,GAElFY,EAAI,GAAG4B,eAEXvC,EAAE8/C,iBAAmB,SAAU9/C,GAC7B,SAASW,EAAEZ,EAAGC,EAAGM,GACf8N,KAAK2xC,gBAAkBhgD,EAAGqO,KAAK4xC,YAAchgD,EAAGoO,KAAK6xC,UAAY3/C,EAAG8N,KAAK8xC,mBAAqB9xC,KAAK2xC,gBAAgB5B,YAAa/vC,KAAK+xC,eAAiB/xC,KAAK4xC,YAAY7B,YAAa/vC,KAAKgyC,YAAchyC,KAAK2xC,gBAAgB3B,YAAahwC,KAAKmxC,QAAUnxC,KAAK4xC,YAAY5B,YAG3Q,OAAOh+C,EAAEO,EAAGX,GAAIW,EAAEb,UAAUme,OAAS,SAAUle,GAC7C,OAAOqO,KAAKiyC,gBAAkBjyC,KAAKkyC,YAAalyC,KAAKixC,WAAW,SAAUr/C,GACxE,OAAO,WACL,OAAOA,EAAEugD,cAAevgD,EAAEigD,WAAajgD,EAAEwgD,iCAAkCzgD,KAFf,CAI9DqO,QAAUA,KAAKqxC,kBAChB9+C,EAAEb,UAAUwgD,UAAY,WACzB,OAAOlyC,KAAKqyC,gCAAiCryC,KAAKsyC,4BAA6BtyC,KAAKuyC,uCAAwCvyC,KAAKwyC,kCAChIjgD,EAAEb,UAAUygD,YAAc,WAC3B,IAAIxgD,EACJ,OAAOA,EAAIqO,KAAKyyC,uCAAwCzyC,KAAK0yC,gCAAiC1yC,KAAK2yC,gBAAiB3yC,KAAK4yC,sDAAsDjhD,IAC9KY,EAAEb,UAAUugD,aAAe,WAC5B,OAAOjyC,KAAK4xC,YAAYb,eAAiB/wC,KAAK6yC,+BAC7CtgD,EAAEb,UAAUmhD,4BAA8B,WAC3C,OAAO7yC,KAAK8xC,mBAAmBvC,+BAAiCvvC,KAAK+xC,eAAexC,8BACnFh9C,EAAEb,UAAU2gD,8BAAgC,WAC7C,IAAI1gD,EAAGC,EAAGM,EAAGF,EAAGO,EAEhB,IAA8CA,EAAI,GAAIX,EAAI,EAAGM,GAAxDF,EAAIgO,KAAK8yC,gCAAqDv/C,OAAQrB,EAAIN,EAAGA,IAChFD,EAAIK,EAAEJ,GAAIW,EAAEuC,KAAK4H,SAASo9B,KAAKpyB,YAAY/V,IAG7C,OAAOY,GACNA,EAAEb,UAAU4gD,0BAA4B,WACzC,IAAI3gD,EAAGC,EAAGM,EAAGF,EAAGO,EAEhB,IAA0CA,EAAI,GAAIX,EAAI,EAAGM,GAApDF,EAAIgO,KAAK+yC,4BAAiDx/C,OAAQrB,EAAIN,EAAGA,IAC5ED,EAAIK,EAAEJ,GAAIW,EAAEuC,KAAK4H,SAASo9B,KAAKpyB,YAAY1H,KAAKuxC,oBAAoB5/C,KAGtE,OAAOY,GACNA,EAAEb,UAAU6gD,qCAAuC,WACpD,IAAI5gD,EAAGC,EAAGM,EAAGF,EAAGO,EAEhB,IAAmDA,EAAI,GAAIX,EAAI,EAAGM,GAA7DF,EAAIgO,KAAKgzC,qCAA0Dz/C,OAAQrB,EAAIN,EAAGA,IACrFD,EAAIK,EAAEJ,GAAIW,EAAEuC,KAAK4H,SAASo9B,KAAK/7B,YAAYpM,IAG7C,OAAOY,GACNA,EAAEb,UAAU8gD,+BAAiC,WAC9C,IAAI7gD,EAAGC,EAAGM,EAAGF,EAAGO,EAEhB,IAA+CA,EAAI,GAAIX,EAAI,EAAGM,GAAzDF,EAAIgO,KAAKizC,iCAAsD1/C,OAAQrB,EAAIN,EAAGA,IACjFD,EAAIK,EAAEJ,GAAIW,EAAEuC,KAAK4H,SAASo9B,KAAKpyB,YAAY/V,IAG7C,OAAOY,GACNA,EAAEb,UAAU+gD,qCAAuC,WACpD,IAAI7gD,EAAGI,EAAGO,EAAGtB,EAAG++B,EAAGt9B,EAAGF,EAEtB,IAAiDA,EAAI,GAAIZ,EAAI,EAAGI,GAA3DU,EAAIsN,KAAKkzC,mCAAwD3/C,OAAQvB,EAAIJ,EAAGA,IACnFX,EAAIyB,EAAEd,GAAIo+B,EAAIr+B,EAAEV,GAAIsB,EAAIyN,KAAK4xC,YAAYnB,wBAAwBx/C,EAAEwV,IAAKvU,EAAEjB,EAAG++B,EAAE7pB,SAAUjU,EAAEK,EAAGtB,GAAIuB,EAAEsC,KAAKk7B,GAG3G,OAAOx9B,GACND,EAAEb,UAAUkhD,sDAAwD,SAAUjhD,GAC/E,IAAIC,EAAGI,EAAGO,EAAGtB,EAAMyB,EAAGF,EAEtB,IAAKA,EAAI,GAAID,EAAI,EAAGtB,EAAIU,EAAE4B,OAAQtC,EAAIsB,EAAGA,IAC7BP,GAAVU,EAAIf,EAAEY,IAAU4T,QAAiCvU,EAApBc,EAAEygD,iBAAwB5hC,WAAU,GAAK/e,EAAEsC,KAAK5C,EAAEF,EAAGJ,IAGpF,OAAOY,GACND,EAAEb,UAAUghD,8BAAgC,WAC7C,IAAI/gD,EAAGC,EAAGI,EAAGO,EAAGtB,EAAG++B,EAEnB,IAA0CA,EAAI,GAAIp+B,EAAI,EAAGW,GAApDtB,EAAI+O,KAAKozC,4BAAiD7/C,OAAQhB,EAAIX,EAAGA,IAC5EI,EAAIf,EAAEW,GAAID,EAAIqO,KAAKuxC,oBAAoBv/C,GAAIg+B,EAAEl7B,KAAK5C,EAAEF,EAAGL,IAGzD,OAAOq+B,GACNz9B,EAAEb,UAAUihD,cAAgB,WAC7B,OAAOj2C,SAASwV,KAAOlS,KAAKmxC,SAC3B5+C,EAAEb,UAAU0gD,+BAAiC,WAC9C,IAAIzgD,EACJ,OAAO,OAASA,EAAIqO,KAAK4xC,YAAYjB,iCAAmCh/C,EAAEgoB,aAAU,GACnFpnB,EAAEb,UAAUohD,6BAA+B,WAC5C,OAAO9yC,KAAK+xC,eAAerC,kCAAkC1vC,KAAK8xC,qBACjEv/C,EAAEb,UAAUqhD,yBAA2B,WACxC,OAAO/yC,KAAK+xC,eAAevC,8BAA8BxvC,KAAK8xC,qBAC7Dv/C,EAAEb,UAAUshD,kCAAoC,WACjD,OAAOhzC,KAAK8xC,mBAAmBnC,0BAC9Bp9C,EAAEb,UAAUuhD,8BAAgC,WAC7C,OAAOjzC,KAAK+xC,eAAepC,0BAC1Bp9C,EAAEb,UAAUwhD,gCAAkC,WAC/C,OAAOlzC,KAAK2xC,gBAAgBjB,sCAAsC1wC,KAAK4xC,cACtEr/C,EAAEb,UAAU0hD,yBAA2B,WACxC,OAAOpzC,KAAKmxC,QAAQjkC,iBAAiB,WACpC3a,EA7FgB,CA8FnBX,EAAEo/C,UAAWr/C,EAAI,SAAW0hD,GAC5B,IAAIzhD,EACJ,OAAOA,EAAI8K,SAAS8uB,cAAc,SAAWd,aAAa,OAAQ,oCAAqC94B,EAAE84B,aAAa,UAAW2oB,EAAI5sC,IAAK,CACxIN,QAASvU,EACTuhD,iBAAkBE,IAEnBnhD,EAAI,SAAWP,EAAGC,GACnB,IAAIM,EACJ,OAAQA,EAAIP,EAAEsL,YAAc/K,EAAEykB,aAAa/kB,EAAGD,QAAK,IAErDyC,KAAK4L,MAAO,WACZ,IAAIrO,EAAI,SAAW2hD,EAAK1hD,GACtB,SAASI,IACPgO,KAAKvO,YAAc6hD,EAGrB,IAAK,IAAI/gD,KAAKX,EACZM,EAAEkC,KAAKxC,EAAGW,KAAO+gD,EAAI/gD,GAAKX,EAAEW,IAG9B,OAAOP,EAAEN,UAAYE,EAAEF,UAAW4hD,EAAI5hD,UAAY,IAAIM,EAAKshD,EAAI7B,UAAY7/C,EAAEF,UAAW4hD,GAEtFphD,EAAI,GAAGiC,eAEXvC,EAAE2hD,cAAgB,SAAU3hD,GAC1B,SAASM,EAAEP,GACT,IAAIC,GACJA,EAAI8K,SAAS8uB,cAAc,SAAWuU,UAAYpuC,EAAGqO,KAAKwzC,QAAU5hD,EAAEunB,cAAc,QAASnZ,KAAKmxC,QAAUv/C,EAAEunB,cAAc,QAG9H,OAAOxnB,EAAEO,EAAGN,GAAIM,EAAER,UAAUme,OAAS,SAAUle,GAC7C,OAAOqO,KAAKixC,WAAW,SAAUr/C,GAC/B,OAAO,WACL,OAAOA,EAAE6hD,qBAAsB7hD,EAAE8hD,6BAA8B/hD,KAF5C,CAIrBqO,QACD9N,EAAER,UAAU+hD,mBAAqB,WAClC,IAAI9hD,EAAGC,EACP,OAAOA,EAAI8K,SAASo9B,KAAMnoC,EAAI+K,SAASwV,KAAMtgB,EAAEqL,WAAW0Z,aAAa3W,KAAKwzC,QAAS5hD,GAAID,EAAEsL,WAAW0Z,aAAa3W,KAAKmxC,QAASx/C,IAChIO,EAAER,UAAUgiD,2BAA6B,WAC1C,IAAI/hD,EAAGC,EAAGM,EAAGF,EAAGO,EAAGtB,EAEnB,IAAmCA,EAAI,GAAIW,EAAI,EAAGM,GAA7CF,EAAIgO,KAAK2zC,qBAA0CpgD,OAAQrB,EAAIN,EAAGA,IACrEW,EAAIP,EAAEJ,GAAID,EAAIqO,KAAKuxC,oBAAoBh/C,GAAItB,EAAE6D,KAAKvC,EAAE0K,WAAW0Z,aAAahlB,EAAGY,IAGjF,OAAOtB,GACNiB,EAAER,UAAUiiD,kBAAoB,WACjC,OAAOj3C,SAASqZ,gBAAgB7I,iBAAiB,WAChDhb,EAzBa,CA0BhBN,EAAEo/C,WACJ58C,KAAK4L,MAAO,WACZpO,EAAEkU,KAAO,WACP,SAASnU,EAAEA,GACTqO,KAAKu8B,SAAW5qC,EAAGqO,KAAK4zC,YAAcl3C,SAASqZ,gBAGjD,OAAOpkB,EAAED,UAAU0+C,gBAAkB,WACnC,OAAOpwC,KAAK6zC,cAAczD,mBACzBz+C,EAAED,UAAU6+C,oBAAsB,SAAU5+C,GAC7C,OAAOqO,KAAK6zC,cAActD,oBAAoB5+C,IAC7CA,EAAED,UAAUmiD,YAAc,WAC3B,OAAOjiD,EAAEk+C,SAASI,gBAAgBlwC,KAAK4zC,cACtCjiD,EAAED,UAAUme,OAAS,SAAUle,EAAGC,GACnC,IAAIM,EAAGF,EAAGO,EACV,OAAOA,EAAIZ,EAAEmiD,SAAU5hD,EAAIP,EAAEolC,MAAO/kC,EAAIL,EAAEkgD,UAAW7xC,KAAK+zC,cAAc/hD,GAAI,MAAQO,EAAIyN,KAAKg0C,eAAezhD,EAAGP,EAAGJ,GAAKoO,KAAKi0C,YAAY/hD,EAAGN,IAC1ID,EAAED,UAAUqiD,cAAgB,SAAUpiD,GACvC,OAAOA,EAAIqO,KAAK4zC,YAAYlpB,aAAa,0BAA2B,IAAM1qB,KAAK4zC,YAAYlgC,gBAAgB,4BAC1G/hB,EAAED,UAAUsiD,eAAiB,SAAUriD,EAAGO,EAAGF,GAC9C,OAAOJ,EAAE8/C,iBAAiB7hC,OAAO7P,KAAKu8B,SAAUvqC,EAAGgO,KAAK6zC,cAAejiD,EAAEk+C,SAAS7G,KAAKt3C,GAAIO,IAC1FP,EAAED,UAAUuiD,YAAc,SAAUtiD,EAAGO,GACxC,OAAON,EAAE2hD,cAAc1jC,OAAO7P,KAAKu8B,SAAUrqC,EAAGP,IAC/CA,EApBI,IAsBTyC,KAAK4L,MAAO,WAOZpO,EAAEsiD,cAAgB,WAChB,SAAShiD,EAAEA,GACT8N,KAAKu8B,SAAWrqC,EAAG8N,KAAKm0C,SARpB,SAAWC,EAAKxiD,GACtB,OAAO,WACL,OAAOwiD,EAAIr9C,MAAMnF,EAAG6C,YAMe9C,CAAEqO,KAAKm0C,SAAUn0C,MAAOA,KAAKm0C,SAAWviD,EAAE62C,SAASzoC,KAAKm0C,UAG7F,OAAOjiD,EAAER,UAAUka,MAAQ,WACzB,OAAO5L,KAAK2uC,aAAU,GAAU56C,iBAAiB,SAAUiM,KAAKm0C,UAAU,GAAKn0C,KAAKm0C,WAAYn0C,KAAK2uC,SAAU,IAC9Gz8C,EAAER,UAAUiiC,KAAO,WACpB,OAAO3zB,KAAK2uC,SAAW36C,oBAAoB,SAAUgM,KAAKm0C,UAAU,GAAKn0C,KAAK2uC,SAAU,QAAM,GAC7Fz8C,EAAER,UAAU2iD,gBAAkB,SAAU1iD,GACzC,OAAOA,EAAEogC,kBACR7/B,EAAER,UAAU4iD,iBAAmB,SAAU3iD,GAC1C,IAAIC,EAAGM,EACP,OAAON,EAAID,EAAE4T,EAAGrT,EAAIP,EAAEuH,EAAG6Y,OAAOwiC,SAAS3iD,EAAGM,IAC3CA,EAAER,UAAUyiD,SAAW,SAAUxiD,GAClC,OAAOqO,KAAK6tB,eAAe,CACzBtoB,EAAGwM,OAAO6b,YACV10B,EAAG6Y,OAAO4b,eAEXz7B,EAAER,UAAUm8B,eAAiB,SAAUl8B,GACxC,IAAIC,EACJ,OAAOoO,KAAKmjB,SAAWxxB,EAAG,OAASC,EAAIoO,KAAKu8B,UAAY3qC,EAAE4iD,sBAAsBx0C,KAAKmjB,eAAY,GAChGjxB,EAtBa,IAwBlBkC,KAAK4L,MAAO,WACZpO,EAAE6iD,cAAgB,WAChB,SAAS9iD,EAAEA,GACTqO,KAAK00C,KAAO/iD,EAAGqO,KAAKrN,KAAO,GAAIqN,KAAK20C,UAAY,GAGlD,IAAIziD,EACJ,OAAOP,EAAED,UAAUm0C,IAAM,SAAUl0C,GAEjC,OAAWO,EAAEP,KAASqO,KAAK20C,WAC1BhjD,EAAED,UAAUX,IAAM,SAAUY,GAC7B,IAAIC,EACJ,GAAIoO,KAAK6lC,IAAIl0C,GAAI,OAAOC,EAAIoO,KAAK40C,KAAKjjD,GAAIqO,KAAK60C,MAAMljD,GAAIC,GACxDD,EAAED,UAAUojD,IAAM,SAAUnjD,EAAGC,GAChC,OAAOoO,KAAK+0C,MAAMpjD,EAAGC,GAAIoO,KAAK60C,MAAMljD,GAAIC,GACvCD,EAAED,UAAUkjD,KAAO,SAAUjjD,GAC9B,IAAIC,EACJ,OAAOA,EAAIM,EAAEP,GAAIqO,KAAK20C,UAAU/iD,IAC/BD,EAAED,UAAUqjD,MAAQ,SAAUpjD,EAAGC,GAClC,IAAII,EACJ,OAAOA,EAAIE,EAAEP,GAAIqO,KAAK20C,UAAU3iD,GAAKJ,GACpCD,EAAED,UAAUmjD,MAAQ,SAAUljD,GAC/B,IAAIC,EAAGI,EACP,OAAOA,EAAIE,EAAEP,IAAIC,EAAIoO,KAAKrN,KAAK0mB,QAAQrnB,KAAS,GAAKgO,KAAKrN,KAAK0xC,OAAOzyC,EAAG,GAAIoO,KAAKrN,KAAKqiD,QAAQhjD,GAAIgO,KAAK7N,QACvGR,EAAED,UAAUS,KAAO,WACpB,IAAIR,EAAGC,EAAGM,EAAGF,EAAGO,EAEhB,IAAsCA,EAAI,GAAIZ,EAAI,EAAGO,GAAhDF,EAAIgO,KAAKrN,KAAK0xC,OAAOrkC,KAAK00C,OAA4BnhD,OAAQrB,EAAIP,EAAGA,IACxEC,EAAII,EAAEL,GAAIY,EAAEuC,YAAYkL,KAAK20C,UAAU/iD,IAGzC,OAAOW,GACNL,EAAI,SAAWP,GAChB,OAAOC,EAAEi3C,SAASI,KAAKt3C,GAAG83C,cACzB93C,EAjCa,IAmClByC,KAAK4L,MAAO,WAOZpO,EAAEqjD,MAAQ,WACR,SAAS/iD,EAAEA,EAAGF,EAAGO,GACfyN,KAAKmoC,WAAaj2C,EAAG8N,KAAK04B,OAASnmC,EAAGyN,KAAKk1C,cARvC,SAAWC,EAAKvjD,GACtB,OAAO,WACL,OAAOujD,EAAIp+C,MAAMnF,EAAG6C,YAMuC9C,CAAEqO,KAAKk1C,cAAel1C,MAAOA,KAAK43B,WAAahmC,EAAEg3C,OAAQ5oC,KAAK49B,SAAWhsC,EAAEi3C,SAASI,KAAKj3C,GAAIgO,KAAKo1C,QAAUp1C,KAAKmoC,WAAWiN,QAASp1C,KAAKohB,MAAQ,cAAephB,KAAKq1C,cAAgB,GAGnP,IAAIrjD,EACJ,OAAOE,EAAER,UAAUka,MAAQ,WACzB,MAAO,gBAAkB5L,KAAKohB,OAASphB,KAAKs1C,mBAAmB,cAAet1C,KAAKohB,MAAQ,UAAWphB,KAAKo1C,QAAQ/H,aAAartC,YAAS,GACxI9N,EAAER,UAAU+4C,OAAS,WACtB,IAAI94C,EACJ,MAAO,YAAcqO,KAAKohB,OAAS,OAASzvB,EAAIqO,KAAKu1C,UAAY5jD,EAAE84C,SAAUzqC,KAAKw1C,eAAgBx1C,KAAKohB,MAAQ,iBAAc,GAC5HlvB,EAAER,UAAU8rC,SAAW,WACxB,IAAI7rC,EACJ,MAAO,YAAcqO,KAAKohB,OAASphB,KAAKs1C,mBAAmB,YAAat1C,KAAKohB,MAAQ,YAAa,mBAAsBzvB,EAAIqO,KAAKo1C,SAASlH,gBAAkBv8C,EAAEu8C,eAAeluC,MAAOA,KAAKmoC,WAAW+F,eAAeluC,YAAS,GAC3N9N,EAAER,UAAU+jD,KAAO,WACpB,IAAI9jD,EACJ,MAAO,YAAcqO,KAAKohB,OAASphB,KAAKohB,MAAQ,SAAU,mBAAsBzvB,EAAIqO,KAAKo1C,SAASM,YAAc/jD,EAAE+jD,YAAY11C,WAAQ,QAAU,GAC/I9N,EAAER,UAAU67C,cAAgB,WAC7B,IAAI57C,EAAGC,EACP,OAAOoO,KAAK21C,oBAAiB,GAAUhkD,EAAIqO,KAAK49B,SAAS4L,UAAUxpC,KAAKkqC,UAAY,UAAYlqC,KAAK04B,OAAQ9mC,EAAII,EAAEL,GAAIqO,KAAKmoC,WAAWv2C,GAAGoO,KAAK49B,SAAU59B,KAAK8uC,uBAAwB9uC,KAAK21C,gBAAiB,IAC3MzjD,EAAER,UAAU47C,aAAe,WAC5B,OAAOttC,KAAK41C,sBAAwB,MAAQ51C,KAAKu1C,SAAWv1C,KAAKwrC,SAAW,EAAGxrC,KAAKu1C,QAAU,IAAI3jD,EAAEg4C,YAAY5pC,KAAMA,KAAK49B,SAAU59B,KAAKkqC,UAAWlqC,KAAKu1C,QAAQlf,aAAU,GAC3KnkC,EAAER,UAAUmkD,kBAAoB,WACjC,IAAIlkD,EACJ,QAASA,EAAIqO,KAAKmoC,WAAW2N,6BAA6B91C,KAAK49B,YAAc,MAAQ59B,KAAK49B,SAASoL,SAAWr3C,EAAEi/C,UAAU5wC,KAAK49B,SAASoL,SAAW,YAAchpC,KAAK04B,SAAW/mC,EAAEk/C,qBAAkB,EAASl/C,GAC7MO,EAAER,UAAUg8C,kBAAoB,WACjC,OAAO,MAAQ1tC,KAAK61C,qBACnB3jD,EAAER,UAAU87C,mBAAqB,WAClC,IAAI77C,EAAGC,EACP,OAAQA,EAAIoO,KAAK61C,sBAAwBlkD,EAAIqO,KAAK41C,qBAAsB51C,KAAK6P,QAAO,WAClF,IAAI3d,EACJ,OAAO8N,KAAK+1C,gBAAiB/1C,KAAKmoC,WAAWt4B,OAAO,CAClDikC,SAAUliD,EACVigD,UAAWlgD,GACVqO,KAAKk1C,eAAgB,mBAAsBhjD,EAAI8N,KAAKo1C,SAASY,eAAiB9jD,EAAE8jD,cAAch2C,MAAOrO,OAAI,EAASqO,KAAKw9B,oBACtH,GACLtrC,EAAER,UAAUo8C,aAAe,WAC5B,OAAO,MAAQ9tC,KAAKk9B,SAAWl9B,KAAK6P,QAAO,WACzC,IAAIle,EAAGC,EACP,OAAOoO,KAAK+1C,gBAAiB/1C,KAAKu1C,QAAQvK,QAAUhrC,KAAKmoC,WAAWt4B,OAAO,CACzEknB,MAAO/2B,KAAKk9B,UACXl9B,KAAKk1C,eAAgB,mBAAsBvjD,EAAIqO,KAAKo1C,SAASY,eAAiBrkD,EAAEqkD,cAAch2C,MAAOA,KAAKy1C,SAAWz1C,KAAKmoC,WAAWt4B,OAAO,CAC7IikC,SAAU9zC,KAAKk9B,UACdl9B,KAAKk1C,eAAgB,mBAAsBtjD,EAAIoO,KAAKo1C,SAASY,eAAiBpkD,EAAEokD,cAAch2C,MAAOA,KAAKw9B,oBAC1G,GACJtrC,EAAER,UAAUy8C,eAAiB,WAC9B,OAAOnuC,KAAKi2C,uBAAyBj2C,KAAKk2C,kBAAoBl2C,KAAK49B,SAAW59B,KAAKi2C,qBAAsBj2C,KAAKmoC,WAAWgO,mDAAmDn2C,KAAKi2C,qBAAsBj2C,KAAK8uC,uBAAwB9uC,KAAKk2C,kBAAmB,QAAM,GACjQhkD,EAAER,UAAU84C,eAAiB,WAC9B,IAAI74C,EACJ,OAAOqO,KAAKs1C,mBAAmB,gBAAiB,mBAAsB3jD,EAAIqO,KAAKo1C,SAAS3H,oBAAsB97C,EAAE87C,oBAAoBztC,WAAQ,GAC3I9N,EAAER,UAAUu4C,kBAAoB,SAAUt4C,GAC3C,IAAIC,EACJ,OAAOoO,KAAKwrC,SAAW75C,EAAG,mBAAsBC,EAAIoO,KAAKo1C,SAASxH,uBAAyBh8C,EAAEg8C,uBAAuB5tC,WAAQ,GAC3H9N,EAAER,UAAUq5C,6BAA+B,SAAUp5C,EAAGO,GACzD,OAAO8N,KAAKk9B,SAAWvrC,EAAG,MAAQO,IAAM8N,KAAKi2C,qBAAuBrkD,EAAEi3C,SAASI,KAAK/2C,IAAK8N,KAAKo1C,QAAQvH,sBAAsB7tC,OAC3H9N,EAAER,UAAUu5C,4BAA8B,SAAUt5C,EAAGC,GACxD,OAAOoO,KAAKk9B,SAAWtrC,EAAGoO,KAAKo1C,QAAQrH,iCAAiC/tC,KAAMrO,IAC7EO,EAAER,UAAU+5C,gBAAkB,WAC/B,IAAI95C,EACJ,OAAOqO,KAAKs1C,mBAAmB,cAAe,mBAAsB3jD,EAAIqO,KAAKo1C,SAASpH,qBAAuBr8C,EAAEq8C,qBAAqBhuC,WAAQ,GAC3I9N,EAAER,UAAUwjD,cAAgB,WAC7B,OAAOl1C,KAAKo2C,cAAW,GAAU,YAAcp2C,KAAK04B,OAAS14B,KAAKq2C,4BAA8Br2C,KAAKs2C,cAAgBt2C,KAAKu2C,kBAAoBv2C,KAAKs2C,cAAet2C,KAAKo2C,UAAW,IACjLlkD,EAAER,UAAU2kD,yBAA2B,WACxC,IAAI1kD,EAAGC,EACP,OAA2E,OAApED,EAAI,OAASC,EAAIoO,KAAKw2C,iBAAmB5kD,EAAE6kD,oBAAiB,IAAqBz2C,KAAKmoC,WAAWmM,iBAAiB3iD,IAAI,QAAM,GAClIO,EAAER,UAAU6kD,eAAiB,WAC9B,OAAO,MAAQv2C,KAAK49B,SAASoL,QAAUhpC,KAAKmoC,WAAWoO,eAAev2C,KAAK49B,SAASoL,SAAS,QAAM,GAClG92C,EAAER,UAAU4kD,YAAc,WAC3B,OAAOt2C,KAAKmoC,WAAWmM,iBAAiB,CACtC/uC,EAAG,EACHrM,EAAG,KAEJhH,EAAER,UAAU4jD,mBAAqB,SAAU3jD,GAC5C,IAAIC,EACJ,OAAO,OAASA,EAAIoO,KAAKq1C,eAAe1jD,GAAKC,EAAED,GAAKC,EAAED,IAAK,IAAI8E,MAAO0D,WACrEjI,EAAER,UAAUglD,iBAAmB,WAChC,OAAO9kD,EAAE02C,WAAWtoC,KAAKq1C,gBACxBrjD,EAAI,SAAWL,GAChB,OAAQA,GACN,IAAK,UACH,MAAO,qDAET,IAAK,UACL,IAAK,UACH,MAAO,oDAEVO,EAAER,UAAUkkD,mBAAqB,WAClC,MAAO,YAAc51C,KAAK04B,SAAU14B,KAAK0tC,qBACxCx7C,EAAER,UAAUqkD,cAAgB,WAC7B,OAAO/1C,KAAK22C,oBAAiB,GAAU32C,KAAKmoC,WAAW4N,gBAAiB/1C,KAAK22C,gBAAiB,IAC7FzkD,EAAER,UAAUme,OAAS,SAAUle,GAChC,OAAOqO,KAAKw1C,eAAgBx1C,KAAK42C,MAAQ7rB,sBAAsB,SAAUn5B,GACvE,OAAO,WACL,OAAOA,EAAEglD,MAAQ,KAAMjlD,EAAEyC,KAAKxC,IAF6B,CAI7DoO,QACD9N,EAAER,UAAU8jD,aAAe,WAC5B,OAAOx1C,KAAK42C,MAAQ7xB,qBAAqB/kB,KAAK42C,YAAS,GACtD1kD,EAlGK,IAoGVkC,KAAK4L,MAAO,WACZ,IAAIrO,EAAI,SAAWklD,EAAKjlD,GACtB,OAAO,WACL,OAAOilD,EAAI9/C,MAAMnF,EAAG6C,aAIxB7C,EAAEklD,WAAa,WACb,SAAS5kD,IACP8N,KAAK+2C,aAAeplD,EAAEqO,KAAK+2C,aAAc/2C,MAAOA,KAAKg3C,cAAgBrlD,EAAEqO,KAAKg3C,cAAeh3C,MAAOA,KAAKgvC,WAAar9C,EAAEqO,KAAKgvC,WAAYhvC,MAAOA,KAAKgoC,QAAU,IAAIp2C,EAAE48C,QAAQxuC,MAAOA,KAAKsT,KAAO,IAAI1hB,EAAEkU,KAAK9F,MAAOA,KAAKi3C,cAAgB,IAAIrlD,EAAEsiD,cAAcl0C,MAAOA,KAAKw2C,gBAAkB,GAAIx2C,KAAKooC,aAAcpoC,KAAKqoC,oBAAoB,KAGzU,OAAOn2C,EAAER,UAAUka,MAAQ,WACzB,OAAOha,EAAEm2C,YAAc/nC,KAAK2uC,SAAW56C,iBAAiB,QAASiM,KAAKg3C,eAAe,GAAKjjD,iBAAiB,mBAAoBiM,KAAKgvC,YAAY,GAAKhvC,KAAKi3C,cAAcrrC,QAAS5L,KAAKk3C,eAAgBl3C,KAAK2uC,SAAU,EAAI3uC,KAAKgH,SAAU,QAAM,GAC7O9U,EAAER,UAAUylD,QAAU,WACvB,OAAOn3C,KAAKgH,SAAU,GACrB9U,EAAER,UAAUiiC,KAAO,WACpB,OAAO3zB,KAAK2uC,SAAW36C,oBAAoB,QAASgM,KAAKg3C,eAAe,GAAKhjD,oBAAoB,mBAAoBgM,KAAKgvC,YAAY,GAAKhvC,KAAKi3C,cAActjB,OAAQ3zB,KAAKo3C,cAAep3C,KAAK2uC,SAAU,QAAM,GAC9Mz8C,EAAER,UAAU02C,WAAa,WAC1B,OAAOpoC,KAAKq3C,MAAQ,IAAIzlD,EAAE6iD,cAAc,KACvCviD,EAAER,UAAUw2C,MAAQ,SAAUv2C,EAAGO,GAClC,IAAIF,EAAGO,EACP,OAAO,MAAQL,IAAMA,EAAI,IAAKP,EAAIC,EAAEi3C,SAASI,KAAKt3C,GAAIqO,KAAKs3C,kCAAkC3lD,GAAKqO,KAAKu3C,oBAAoB5lD,IAAMK,EAAI,OAASO,EAAIL,EAAEwmC,QAAUnmC,EAAI,UAAWyN,KAAKo1C,QAAQjI,kCAAkCx7C,EAAGK,IAAM+f,OAAO6rB,SAAWjsC,OAAI,GAC1PO,EAAER,UAAU07C,+BAAiC,SAAUz7C,EAAGO,EAAGF,GAC9D,IAAIO,EACJ,OAAOX,EAAEm2C,WAAax1C,EAAIyN,KAAKw3C,gCAAgCxlD,GAAIgO,KAAKy3C,WAAW9lD,EAAGO,EAAG,CACvFskD,gBAAiBjkD,KACbwf,OAAO6rB,SAAWjsC,GACvBO,EAAER,UAAU22C,oBAAsB,SAAU12C,GAC7C,OAAOqO,KAAKsuC,iBAAmB38C,GAC9BO,EAAER,UAAUwlD,aAAe,WAC5B,OAAOl3C,KAAK49B,SAAWhsC,EAAEi3C,SAASI,KAAKl3B,OAAO6rB,UAAW59B,KAAK8uC,sBAAwBl9C,EAAEg3C,OAAQ5oC,KAAKgoC,QAAQp8B,QAAS5L,KAAKgoC,QAAQ1xC,QAAQ0J,KAAK49B,SAAU59B,KAAK8uC,wBAC9J58C,EAAER,UAAU0lD,YAAc,WAC3B,OAAOp3C,KAAKgoC,QAAQrU,QACnBzhC,EAAER,UAAUgmD,gDAAkD,SAAU/lD,EAAGO,GAC5E,OAAO8N,KAAK8uC,sBAAwB58C,EAAG8N,KAAK49B,SAAWhsC,EAAEi3C,SAASI,KAAKt3C,GAAIqO,KAAKgoC,QAAQlzC,KAAKkL,KAAK49B,SAAU59B,KAAK8uC,wBAChH58C,EAAER,UAAUykD,mDAAqD,SAAUxkD,EAAGO,GAC/E,OAAO8N,KAAK8uC,sBAAwB58C,EAAG8N,KAAK49B,SAAWhsC,EAAEi3C,SAASI,KAAKt3C,GAAIqO,KAAKgoC,QAAQ1xC,QAAQ0J,KAAK49B,SAAU59B,KAAK8uC,wBACnH58C,EAAER,UAAUq9C,iDAAmD,SAAUp9C,EAAGO,GAC7E,IAAIF,EACJ,OAAOgO,KAAK8uC,sBAAwB58C,EAAG8N,KAAKgH,SAAWhV,EAAIgO,KAAKw3C,gCAAgCx3C,KAAK8uC,uBAAwB9uC,KAAKy3C,WAAW9lD,EAAG,UAAW,CACzJm9C,sBAAuB9uC,KAAK8uC,sBAC5B0H,gBAAiBxkD,EACjB2jD,gBAAgB,IACd31C,KAAK49B,SAAWhsC,EAAEi3C,SAASI,KAAKt3C,IAAMqO,KAAKo1C,QAAQhH,mBACtDl8C,EAAER,UAAUokD,6BAA+B,SAAUnkD,GACtD,IAAIC,EACJ,OAAO,OAASA,EAAIoO,KAAKq3C,MAAMtmD,IAAIY,IAAMC,EAAEu+C,aAAU,GACpDj+C,EAAER,UAAUimD,oBAAsB,WACnC,OAAO33C,KAAKsT,KAAKugC,cAAc/C,eAC9B5+C,EAAER,UAAUqkD,cAAgB,WAC7B,IAAIpkD,EAAGO,EACP,OAAO8N,KAAK23C,uBAAyB33C,KAAK43C,yCAA0C1lD,EAAI8N,KAAKsT,KAAKugC,cAAeliD,EAAIqO,KAAK63C,qBAAsBjmD,EAAE42C,MAAM,SAAU52C,GAChK,OAAO,WACL,OAAOA,EAAEylD,MAAMvC,IAAInjD,EAAGO,EAAEi+C,UAF4H,CAItJnwC,aAAU,GACX9N,EAAER,UAAU6kD,eAAiB,SAAU5kD,GACxC,IAAIC,EACJ,OAAQA,EAAIoO,KAAKsT,KAAKi9B,oBAAoB5+C,IAAMqO,KAAKq0C,gBAAgBziD,GAAKoO,KAAKs0C,iBAAiB,CAC9F/uC,EAAG,EACHrM,EAAG,KAEJhH,EAAER,UAAU2iD,gBAAkB,SAAU1iD,GACzC,OAAOqO,KAAKi3C,cAAc5C,gBAAgB1iD,IACzCO,EAAER,UAAU4iD,iBAAmB,SAAU3iD,GAC1C,OAAOqO,KAAKi3C,cAAc3C,iBAAiB3iD,IAC1CO,EAAER,UAAU8iD,sBAAwB,SAAU7iD,GAE/C,OAAWqO,KAAK83C,4BAA+BrB,eAAiB9kD,GAC/DO,EAAER,UAAUme,OAAS,SAAUle,EAAGC,GACnC,OAAOoO,KAAKsT,KAAKzD,OAAOle,EAAGC,IAC1BM,EAAER,UAAU4/C,gBAAkB,WAC/B,OAAOtxC,KAAKo1C,QAAQhH,mBACnBl8C,EAAER,UAAUw/C,eAAiB,SAAUv/C,GACxC,OAAOqO,KAAK+3C,8BAA8BpmD,IACzCO,EAAER,UAAU0/C,aAAe,WAC5B,OAAOpxC,KAAK63C,qBAAuB73C,KAAKg4C,aAAapa,SAAU59B,KAAKi4C,gCACnE/lD,EAAER,UAAUs9C,WAAa,WAC1B,OAAOhvC,KAAK63C,qBAAuB73C,KAAK49B,SAAU59B,KAAKk4C,kCACtDhmD,EAAER,UAAUslD,cAAgB,WAC7B,OAAOhjD,oBAAoB,QAASgM,KAAK+2C,cAAc,GAAKhjD,iBAAiB,QAASiM,KAAK+2C,cAAc,IACxG7kD,EAAER,UAAUqlD,aAAe,SAAUplD,GACtC,IAAIC,EAAGM,EAAGF,EACV,OAAOgO,KAAKgH,SAAWhH,KAAKm4C,wBAAwBxmD,KAAOO,EAAI8N,KAAKo4C,wBAAwBzmD,EAAEsO,WAAajO,EAAIgO,KAAKq4C,4BAA4BnmD,KAAO8N,KAAKs4C,yCAAyCpmD,EAAGF,IAAML,EAAEsf,iBAAkBrf,EAAIoO,KAAKu4C,iBAAiBrmD,GAAI8N,KAAKkoC,MAAMl2C,EAAG,CAC5Q0mC,OAAQ9mC,UACJ,GACLM,EAAER,UAAU4mD,yCAA2C,SAAU3mD,EAAGC,GAErE,OAAWoO,KAAKw4C,6CAA6C7mD,EAAGC,GAAOwqC,kBACtElqC,EAAER,UAAU4lD,kCAAoC,SAAU3lD,GAE3D,OAAWqO,KAAKy4C,wCAAwC9mD,GAAOyqC,kBAC9DlqC,EAAER,UAAU8mD,6CAA+C,SAAU7mD,EAAGO,GACzE,OAAON,EAAE82C,SAAS,mBAAoB,CACpCzoC,OAAQtO,EACR6wB,KAAM,CACJmU,IAAKzkC,EAAE42C,aAET3M,YAAY,KAEbjqC,EAAER,UAAU+mD,wCAA0C,SAAU9mD,GACjE,OAAOC,EAAE82C,SAAS,0BAA2B,CAC3ClmB,KAAM,CACJmU,IAAKhlC,EAAEm3C,aAET3M,YAAY,KAEbjqC,EAAER,UAAUgnD,uCAAyC,SAAU/mD,GAChE,OAAOC,EAAE82C,SAAS,mBAAoB,CACpClmB,KAAM,CACJmU,IAAKhlC,EAAEm3C,gBAGV52C,EAAER,UAAUkmD,uCAAyC,WACtD,OAAOhmD,EAAE82C,SAAS,4BACjBx2C,EAAER,UAAUqmD,8BAAgC,SAAUpmD,GACvD,OAAOC,EAAE82C,SAAS,2BAA4B,CAC5ClmB,KAAM,CACJ2uB,QAASx/C,MAGZO,EAAER,UAAUumD,6BAA+B,WAC5C,OAAOrmD,EAAE82C,SAAS,sBACjBx2C,EAAER,UAAUwmD,+BAAiC,SAAUvmD,GACxD,OAAO,MAAQA,IAAMA,EAAI,IAAKC,EAAE82C,SAAS,kBAAmB,CAC1DlmB,KAAM,CACJmU,IAAK32B,KAAK49B,SAASkL,YACnB6P,OAAQhnD,MAGXO,EAAER,UAAU+lD,WAAa,SAAU9lD,EAAGC,EAAGM,GAC1C,IAAIF,EACJ,OAAO,OAASA,EAAIgO,KAAKg4C,eAAiBhmD,EAAEy4C,SAAUzqC,KAAKg4C,aAAeh4C,KAAK44C,YAAYjnD,EAAGC,EAAGM,GAAI8N,KAAKg4C,aAAapsC,QAAS5L,KAAK04C,uCAAuC/mD,IAC3KO,EAAER,UAAUknD,YAAc,SAAUjnD,EAAGO,EAAGF,GAC3C,IAAIO,EAAGtB,EAAG++B,EAAGt9B,EAAGF,EAChB,OAA+BE,GAAxBzB,EAAI,MAAQe,EAAIA,EAAI,IAAU88C,sBAAuB9e,EAAI/+B,EAAEulD,gBAAiBjkD,EAAItB,EAAE0kD,gBAAgBnjD,EAAI,IAAIZ,EAAEqjD,MAAMj1C,KAAMrO,EAAGO,IAAM48C,sBAAwB,MAAQp8C,EAAIA,EAAId,EAAEg3C,OAAQp2C,EAAEgkD,gBAAkB5kD,EAAE02C,WAAWtY,GAAIx9B,EAAEmjD,eAAiBpjD,EAAGC,EAAE03C,SAAWlqC,KAAK49B,SAAUprC,GAChRN,EAAER,UAAUw8C,eAAiB,SAAUv8C,GACxC,OAAOqO,KAAKk4C,+BAA+BvmD,EAAE+kD,qBAC5CxkD,EAAER,UAAUymD,wBAA0B,SAAUxmD,GACjD,QAASA,EAAEyqC,kBAAoBzqC,EAAEsO,OAAO44C,mBAAqBlnD,EAAEg9B,MAAQ,GAAKh9B,EAAEq/B,QAAUr/B,EAAEylB,SAAWzlB,EAAE0lB,SAAW1lB,EAAE6lB,WACnHtlB,EAAER,UAAU0mD,wBAA0B,SAAUzmD,GACjD,OAAOqO,KAAK84C,gBAAgBnnD,GAAKC,EAAE0gC,QAAQ3gC,EAAG,8CAA2C,GACxFO,EAAER,UAAU2mD,4BAA8B,SAAU1mD,GACrD,IAAIO,EACJ,OAAOA,EAAI,IAAIN,EAAEi3C,SAASl3C,EAAE8/B,aAAa,SAAUzxB,KAAKu3C,oBAAoBrlD,GAAKA,OAAI,GACpFA,EAAER,UAAU6mD,iBAAmB,SAAU5mD,GAC1C,IAAIC,EACJ,OAAO,OAASA,EAAID,EAAE8/B,aAAa,2BAA6B7/B,EAAI,WACnEM,EAAER,UAAUonD,gBAAkB,SAAUnnD,GACzC,IAAIO,EACJ,QAAQA,EAAIN,EAAE0gC,QAAQ3gC,EAAG,uBAAwB,UAAYO,EAAEu/B,aAAa,oBAC3Ev/B,EAAER,UAAU6lD,oBAAsB,SAAU5lD,GAC7C,OAAOA,EAAE43C,aAAavpC,KAAKsT,KAAK88B,oBAAsBz+C,EAAEqtB,UACvD9sB,EAAER,UAAUomD,0BAA4B,WACzC,OAAO93C,KAAKw3C,gCAAgCx3C,KAAK8uC,wBAChD58C,EAAER,UAAU8lD,gCAAkC,SAAU7lD,GACzD,IAAIC,EACJ,OAAO,OAASA,EAAIoO,KAAKw2C,iBAAiB7kD,GAAKC,EAAED,GAAKC,EAAED,GAAK,IAC5DO,EAxJU,IA0JfkC,KAAK4L,MAAO,YACX,WACC,IAAIrO,EAAGC,EACP,IAAKD,EAAIC,EAAI8K,SAASq8C,iBAAmBnnD,EAAEygC,aAAa,oCAAqC,KAAO1gC,EAAIA,EAAEsL,YACxG,GAAItL,IAAM+K,SAASwV,KAAM,OAAOyQ,QAAQC,KAAK,4dAA6dhxB,EAAEu9C,WAH/gB,IAMD/6C,KAAK4L,MAAO,WACZ,IAAIrO,EAAGO,EAAGF,EACVJ,EAAEga,MAAQ,WACR,OAAO1Z,KAAO,MAAQN,EAAEu2C,aAAev2C,EAAEu2C,WAAax2C,KAAMC,EAAEu2C,WAAWv8B,cAAW,GACnF1Z,EAAI,WACL,OAAO,MAAQ6f,OAAO+1B,aAAe/1B,OAAO+1B,WAAal2C,GAAII,KAC5DL,EAAI,WACL,IAAIA,EACJ,OAAOA,EAAI,IAAIC,EAAEklD,WAAcnlD,EAAEyjD,QAAU,IAAIxjD,EAAEm7C,eAAep7C,GAAIA,IACnEK,EAAI,WACL,OAAO+f,OAAO+1B,aAAel2C,OACrBA,EAAEga,SACZxX,KAAK4L,QACN5L,KAAK4L,MAAO,UAA2D3O,EAAQf,IAAYA,EAAOC,QAAUD,EAAOC,QAAUqB,OAAyD,2BAAR,KAAQ,oCACxLwC,KAAK4L,Q,sDC1hCR,mGAAS3O,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAIzU,SAAS0nD,EAAmBhV,EAAKvpB,EAASwd,EAAQghB,EAAOC,EAAQhmD,EAAKimD,GAAO,IAAM,IAAIC,EAAOpV,EAAI9wC,GAAKimD,GAAU71C,EAAQ81C,EAAK91C,MAAS,MAAOyzB,GAAwB,YAAfkB,EAAOlB,GAAsBqiB,EAAKjxC,KAAQsS,EAAQnX,GAAiBiX,QAAQE,QAAQnX,GAAOoX,KAAKu+B,EAAOC,GAI7P,SAAS36C,EAAmBjK,GAAO,OAMnC,SAA4BA,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOkK,EAAkBlK,GAN1CmK,CAAmBnK,IAI7D,SAA0BsK,GAAQ,GAAsB,qBAAXrN,QAAmD,MAAzBqN,EAAKrN,OAAOC,WAA2C,MAAtBoN,EAAK,cAAuB,OAAOjK,MAAMoD,KAAK6G,GAJjFT,CAAiB7J,IAAQ8J,EAA4B9J,IAE1H,WAAgC,MAAM,IAAI+J,UAAU,wIAF8EK,GAYlI,SAAS8L,EAAUH,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIjM,UAAU,sDAAyDgM,EAAS3Y,UAAYd,OAAO2Z,OAAOD,GAAcA,EAAW5Y,UAAW,CAAED,YAAa,CAAE6R,MAAO+G,EAAUxE,UAAU,EAAMD,cAAc,KAAWhV,OAAOC,eAAewZ,EAAU,YAAa,CAAExE,UAAU,IAAcyE,GAAYtB,EAAgBqB,EAAUC,GAEtb,SAAStB,EAAgBzW,EAAG0W,GAA6I,OAAxID,EAAkBpY,OAAOsY,eAAiBtY,OAAOsY,eAAerV,OAAS,SAAyBtB,EAAG0W,GAAsB,OAAjB1W,EAAE4W,UAAYF,EAAU1W,GAAayW,EAAgBzW,EAAG0W,GAEnM,SAASG,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZf,UAA4BA,QAAQgB,UAAW,OAAO,EAAO,GAAIhB,QAAQgB,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQhY,UAAUiY,QAAQvV,KAAKmU,QAAQgB,UAAUG,QAAS,IAAI,iBAAyB,EAAQ,MAAO9X,GAAK,OAAO,GAN9PgY,GAA6B,OAAO,WAAkC,IAAsC9C,EAAlC+C,EAAQd,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYf,EAAgB/I,MAAMvO,YAAaqV,EAASyB,QAAQgB,UAAUM,EAAOpV,UAAWqV,QAAqBhD,EAAS+C,EAAM9S,MAAMiJ,KAAMvL,WAAc,OAAOsV,EAA2B/J,KAAM8G,IAE5Z,SAASiD,EAA2BC,EAAM5V,GAAQ,GAAIA,IAA2B,WAAlB/C,EAAQ+C,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIiK,UAAU,4DAA+D,OAE1P,SAAgC2L,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAFkGE,CAAuBF,GAMxR,SAASjB,EAAgBxW,GAA+J,OAA1JwW,EAAkBnY,OAAOsY,eAAiBtY,OAAOuZ,eAAetW,OAAS,SAAyBtB,GAAK,OAAOA,EAAE4W,WAAavY,OAAOuZ,eAAe5X,IAAcwW,EAAgBxW,GAE/M,SAASqV,EAAetT,EAAKrD,GAAK,OAMlC,SAAyBqD,GAAO,GAAIK,MAAMsJ,QAAQ3J,GAAM,OAAOA,EANtB4J,CAAgB5J,IAIzD,SAA+BA,EAAKrD,GAAK,IAAI4W,EAAY,MAAPvT,EAAc,KAAyB,qBAAX/C,QAA0B+C,EAAI/C,OAAOC,WAAa8C,EAAI,cAAe,GAAU,MAANuT,EAAY,OAAQ,IAAkDC,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKL,EAAKA,EAAGzT,KAAKE,KAAQ2T,GAAMH,EAAKD,EAAGzR,QAAQ+R,QAAoBH,EAAKlT,KAAKgT,EAAGxE,QAAYrS,GAAK+W,EAAKzU,SAAWtC,GAA3DgX,GAAK,IAAoE,MAAOG,GAAOF,GAAK,EAAMH,EAAKK,EAAO,QAAU,IAAWH,GAAsB,MAAhBJ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIK,EAAI,MAAMH,GAAQ,OAAOC,EAJzbK,CAAsB/T,EAAKrD,IAAMmN,EAA4B9J,EAAKrD,IAEnI,WAA8B,MAAM,IAAIoN,UAAU,6IAFuFC,GAQzI,SAAS+6C,EAAgB/nD,EAAK4B,EAAKoQ,GAAiK,OAApJpQ,KAAO5B,EAAOV,OAAOC,eAAeS,EAAK4B,EAAK,CAAEoQ,MAAOA,EAAOxS,YAAY,EAAM8U,cAAc,EAAMC,UAAU,IAAkBvU,EAAI4B,GAAOoQ,EAAgBhS,EAE3M,SAASs+B,EAA2Br9B,EAAGs9B,GAAkB,IAAIC,EAAuB,qBAAXv+B,QAA0BgB,EAAEhB,OAAOC,WAAae,EAAE,cAAe,IAAKu9B,EAAI,CAAE,GAAIn7B,MAAMsJ,QAAQ1L,KAAOu9B,EAAK1xB,EAA4B7L,KAAOs9B,GAAkBt9B,GAAyB,kBAAbA,EAAEgB,OAAqB,CAAMu8B,IAAIv9B,EAAIu9B,GAAI,IAAI7+B,EAAI,EAAO8+B,EAAI,aAAiB,MAAO,CAAEC,EAAGD,EAAG/9B,EAAG,WAAe,OAAIf,GAAKsB,EAAEgB,OAAe,CAAE4U,MAAM,GAAe,CAAEA,MAAM,EAAO7E,MAAO/Q,EAAEtB,OAAWW,EAAG,SAAWu+B,GAAO,MAAMA,GAAQv9B,EAAGm9B,GAAO,MAAM,IAAI1xB,UAAU,yIAA4I,IAA6C+J,EAAzC6nB,GAAmB,EAAMC,GAAS,EAAY,MAAO,CAAEF,EAAG,WAAeF,EAAKA,EAAG17B,KAAK7B,IAAOP,EAAG,WAAe,IAAI+c,EAAO+gB,EAAG15B,OAAsC,OAA9B65B,EAAmBlhB,EAAK5G,KAAa4G,GAASnd,EAAG,SAAW0nD,GAAOppB,GAAS,EAAM9nB,EAAMkxC,GAAQ1mD,EAAG,WAAe,IAAWq9B,GAAiC,MAAbH,EAAGM,QAAgBN,EAAGM,SAAY,QAAU,GAAIF,EAAQ,MAAM9nB,KAE39B,SAAShK,EAA4B7L,EAAGoM,GAAU,GAAKpM,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOiM,EAAkBjM,EAAGoM,GAAS,IAAI3M,EAAIpB,OAAOc,UAAUwJ,SAAS9G,KAAK7B,GAAGkB,MAAM,GAAI,GAAiE,MAAnD,WAANzB,GAAkBO,EAAEd,cAAaO,EAAIO,EAAEd,YAAYoI,MAAgB,QAAN7H,GAAqB,QAANA,EAAoB2C,MAAMoD,KAAKxF,GAAc,cAANP,GAAqB,2CAA2CF,KAAKE,GAAWwM,EAAkBjM,EAAGoM,QAAzG,GAE7S,SAASH,EAAkBlK,EAAKuK,IAAkB,MAAPA,GAAeA,EAAMvK,EAAIf,UAAQsL,EAAMvK,EAAIf,QAAQ,IAAK,IAAItC,EAAI,EAAG6N,EAAO,IAAInK,MAAMkK,GAAM5N,EAAI4N,EAAK5N,IAAO6N,EAAK7N,GAAKqD,EAAIrD,GAAM,OAAO6N,EAEhL,SAASoH,EAAgBF,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5H,UAAU,qCAEhH,SAASoH,EAAkBxF,EAAQyF,GAAS,IAAK,IAAIzU,EAAI,EAAGA,EAAIyU,EAAMnS,OAAQtC,IAAK,CAAE,IAAI0U,EAAaD,EAAMzU,GAAI0U,EAAW7U,WAAa6U,EAAW7U,aAAc,EAAO6U,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMjV,OAAOC,eAAeoP,EAAQ0F,EAAWzS,IAAKyS,IAE7S,SAAS4zC,EAAatzC,EAAaK,EAAYC,GAAyN,OAAtMD,GAAYb,EAAkBQ,EAAYvU,UAAW4U,GAAiBC,GAAad,EAAkBQ,EAAaM,GAAc3V,OAAOC,eAAeoV,EAAa,YAAa,CAAEJ,UAAU,IAAiBI,EAM/Q,IAAIuzC,EAA6B,WAC/B,SAASA,EAAcC,EAAaliB,EAAWmiB,GAC7CxzC,EAAgBlG,KAAMw5C,GAEtBx5C,KAAKy5C,YAAcA,EACnBz5C,KAAKu3B,UAAYA,EACjBv3B,KAAK05C,aAAeA,EACpB15C,KAAK25C,kBAAoB,IAAIpW,IA+D/B,OA5DAgW,EAAaC,EAAe,CAAC,CAC3BtmD,IAAK,UACLoQ,MAAO,WACLtD,KAAKy5C,YAAY1lD,iBAAiBiM,KAAKu3B,UAAWv3B,KAAMA,KAAK05C,gBAE9D,CACDxmD,IAAK,aACLoQ,MAAO,WACLtD,KAAKy5C,YAAYzlD,oBAAoBgM,KAAKu3B,UAAWv3B,KAAMA,KAAK05C,gBAEjE,CACDxmD,IAAK,mBACLoQ,MAAO,SAA0Bs2C,GAC/B55C,KAAK25C,kBAAkBxyC,IAAIyyC,KAE5B,CACD1mD,IAAK,sBACLoQ,MAAO,SAA6Bs2C,GAClC55C,KAAK25C,kBAAkBrmD,OAAOsmD,KAE/B,CACD1mD,IAAK,cACLoQ,MAAO,SAAqBxP,GAC1B,IAGI49B,EAHAmoB,EAwCV,SAAqB/lD,GACnB,GAAI,gCAAiCA,EACnC,OAAOA,EAEP,IAAIgmD,EAA4BhmD,EAAMwoC,yBACtC,OAAO1rC,OAAOmT,OAAOjQ,EAAO,CAC1BimD,6BAA6B,EAC7Bzd,yBAA0B,WACxBt8B,KAAK+5C,6BAA8B,EAEnCD,EAA0B1lD,KAAK4L,SAlDbg6C,CAAYlmD,GAE5B69B,EAAY/B,EAA2B5vB,KAAKi6C,UAGhD,IACE,IAAKtoB,EAAU3B,MAAO0B,EAAQC,EAAU3/B,KAAKmW,MAAO,CAClD,IAAIyxC,EAAUloB,EAAMpuB,MAEpB,GAAIu2C,EAAcE,4BAChB,MAEAH,EAAQM,YAAYL,IAGxB,MAAOzxC,GACPupB,EAAU//B,EAAEwW,GACZ,QACAupB,EAAU/+B,OAGb,CACDM,IAAK,cACLoQ,MAAO,WACL,OAAOtD,KAAK25C,kBAAkBjF,KAAO,IAEtC,CACDxhD,IAAK,WACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAK25C,mBAAmB74B,MAAK,SAAUpM,EAAMI,GAC7D,IAAIqlC,EAAYzlC,EAAK7e,MACjBukD,EAAatlC,EAAMjf,MACvB,OAAOskD,EAAYC,GAAc,EAAID,EAAYC,EAAa,EAAI,SAKjEZ,EAtEwB,GAyFjC,IAAIa,EAA0B,WAC5B,SAASA,EAAWC,GAClBp0C,EAAgBlG,KAAMq6C,GAEtBr6C,KAAKs6C,YAAcA,EACnBt6C,KAAKu6C,kBAAoB,IAAI1nD,IAC7BmN,KAAK2uC,SAAU,EA6HjB,OA1HA4K,EAAac,EAAY,CAAC,CACxBnnD,IAAK,QACLoQ,MAAO,WACAtD,KAAK2uC,UACR3uC,KAAK2uC,SAAU,EACf3uC,KAAKw6C,eAAexnD,SAAQ,SAAUynD,GACpC,OAAOA,EAAc/gB,gBAI1B,CACDxmC,IAAK,OACLoQ,MAAO,WACDtD,KAAK2uC,UACP3uC,KAAK2uC,SAAU,EACf3uC,KAAKw6C,eAAexnD,SAAQ,SAAUynD,GACpC,OAAOA,EAAcrlB,mBAI1B,CACDliC,IAAK,iBACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAKu6C,kBAAkBjkC,UAAUtgB,QAAO,SAAUqJ,EAAWhN,GAC7E,OAAOgN,EAAUlJ,OAAOxB,MAAMoD,KAAK1F,EAAIikB,aACtC,MAEJ,CACDpjB,IAAK,mBACLoQ,MAAO,SAA0Bs2C,GAC/B55C,KAAK06C,6BAA6Bd,GAASe,iBAAiBf,KAE7D,CACD1mD,IAAK,sBACLoQ,MAAO,SAA6Bs2C,GAClC,IAAIgB,EAAsBnmD,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,IAAmBA,UAAU,GACzFuL,KAAK06C,6BAA6Bd,GAASiB,oBAAoBjB,GAC3DgB,GAAqB56C,KAAK86C,8BAA8BlB,KAE7D,CACD1mD,IAAK,cACLoQ,MAAO,SAAqByzB,EAAOW,GACjC,IAAIvoB,EAAS1a,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GACjFuL,KAAKs6C,YAAYS,YAAYhkB,EAAO,SAAS5gC,OAAOuhC,GAAUvoB,KAE/D,CACDjc,IAAK,gCACLoQ,MAAO,SAAuCs2C,GAC5C,IAAIa,EAAgBz6C,KAAK06C,6BAA6Bd,GAEjDa,EAAcO,gBACjBP,EAAcrlB,aACdp1B,KAAKi7C,6BAA6BrB,MAGrC,CACD1mD,IAAK,+BACLoQ,MAAO,SAAsCs2C,GAC3C,IAAIH,EAAcG,EAAQH,YACtBliB,EAAYqiB,EAAQriB,UACpBmiB,EAAeE,EAAQF,aACvBwB,EAAmBl7C,KAAKm7C,oCAAoC1B,GAC5D2B,EAAWp7C,KAAKo7C,SAAS7jB,EAAWmiB,GACxCwB,EAAiB5nD,OAAO8nD,GACK,GAAzBF,EAAiBxG,MAAW10C,KAAKu6C,kBAAkBjnD,OAAOmmD,KAE/D,CACDvmD,IAAK,+BACLoQ,MAAO,SAAsCs2C,GAC3C,IAAIH,EAAcG,EAAQH,YACtBliB,EAAYqiB,EAAQriB,UACpBmiB,EAAeE,EAAQF,aAC3B,OAAO15C,KAAKq7C,mBAAmB5B,EAAaliB,EAAWmiB,KAExD,CACDxmD,IAAK,qBACLoQ,MAAO,SAA4Bm2C,EAAaliB,EAAWmiB,GACzD,IAAIwB,EAAmBl7C,KAAKm7C,oCAAoC1B,GAC5D2B,EAAWp7C,KAAKo7C,SAAS7jB,EAAWmiB,GACpCe,EAAgBS,EAAiBnqD,IAAIqqD,GAOzC,OALKX,IACHA,EAAgBz6C,KAAKs7C,oBAAoB7B,EAAaliB,EAAWmiB,GACjEwB,EAAiB1nD,IAAI4nD,EAAUX,IAG1BA,IAER,CACDvnD,IAAK,sBACLoQ,MAAO,SAA6Bm2C,EAAaliB,EAAWmiB,GAC1D,IAAIe,EAAgB,IAAIjB,EAAcC,EAAaliB,EAAWmiB,GAM9D,OAJI15C,KAAK2uC,SACP8L,EAAc/gB,UAGT+gB,IAER,CACDvnD,IAAK,sCACLoQ,MAAO,SAA6Cm2C,GAClD,IAAIyB,EAAmBl7C,KAAKu6C,kBAAkBxpD,IAAI0oD,GAOlD,OALKyB,IACHA,EAAmB,IAAIroD,IACvBmN,KAAKu6C,kBAAkB/mD,IAAIimD,EAAayB,IAGnCA,IAER,CACDhoD,IAAK,WACLoQ,MAAO,SAAkBi0B,EAAWmiB,GAClC,IAAIl+C,EAAQ,CAAC+7B,GAIb,OAHA3mC,OAAO+B,KAAK+mD,GAAc54B,OAAO9tB,SAAQ,SAAUE,GACjDsI,EAAM1G,KAAK,GAAGqB,OAAOujD,EAAaxmD,GAAO,GAAK,KAAKiD,OAAOjD,OAErDsI,EAAM+c,KAAK,SAIf8hC,EAnIqB,GAsI1BkB,EAAiC,CACnC5nB,KAAM,SAAcxvB,GAClB,IAAIrQ,EAAQqQ,EAAKrQ,MAGjB,OAFYqQ,EAAKb,OACNxP,EAAMm5B,mBACV,GAETuuB,QAAS,SAAiBvuC,GACxB,IAAInZ,EAAQmZ,EAAMnZ,MAGlB,OAFYmZ,EAAM3J,OACPxP,EAAMmd,kBACV,GAETjH,KAAM,SAAcyxC,GAClB,IAAI3nD,EAAQ2nD,EAAM3nD,MACdwP,EAAQm4C,EAAMn4C,MACd6C,EAAUs1C,EAAMt1C,QAEpB,OAAI7C,GACK6C,IAAYrS,EAAMmM,SAM3By7C,EAAoB,gFAuBxB,SAASC,EAAiBC,GACxB,MAAuB,UAAnBA,EACK7pC,OACqB,YAAnB6pC,EACFl/C,cADF,EAmBT,SAASm/C,EAASv4C,GAChB,OAAOA,EAAMhN,QAAQ,uBAAuB,SAAUwlD,EAAGC,GACvD,OAAOA,EAAK9oD,iBAIhB,SAAS+oD,EAAkB14C,GACzB,OAAOu4C,EAASv4C,EAAMhN,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAG3D,SAAS2lD,EAAW34C,GAClB,OAAOA,EAAMugB,OAAO,GAAG5wB,cAAgBqQ,EAAM7P,MAAM,GAGrD,SAASyoD,EAAU54C,GACjB,OAAOA,EAAMhN,QAAQ,YAAY,SAAUwlD,EAAGC,GAC5C,MAAO,IAAI5lD,OAAO4lD,EAAKpiD,kBAQ3B,IAAIwiD,EAAsB,WACxB,SAASA,EAAOh2C,EAAStQ,EAAO8P,EAAYy2C,GAC1Cl2C,EAAgBlG,KAAMm8C,GAEtBn8C,KAAKmG,QAAUA,EACfnG,KAAKnK,MAAQA,EACbmK,KAAKy5C,YAAc9zC,EAAW8zC,aAAetzC,EAC7CnG,KAAKu3B,UAAY5xB,EAAW4xB,WAoHhC,SAAuCpxB,GACrC,IAAIzQ,EAAUyQ,EAAQzQ,QAAQiE,cAE9B,GAAIjE,KAAW2mD,EACb,OAAOA,EAAkB3mD,GAASyQ,GAxHOm2C,CAA8Bn2C,IAAY4wB,EAAM,sBACzF/2B,KAAK05C,aAAe/zC,EAAW+zC,cAAgB,GAC/C15C,KAAK43B,WAAajyB,EAAWiyB,YAAcb,EAAM,sBACjD/2B,KAAKu8C,WAAa52C,EAAW42C,YAAcxlB,EAAM,uBACjD/2B,KAAKw8C,UAAY72C,EAAW62C,WAAa,GACzCx8C,KAAKo8C,OAASA,EAoFhB,OAjFA7C,EAAa4C,EAAQ,CAAC,CACpBjpD,IAAK,WACLoQ,MAAO,WACL,IAAIm5C,EAAcz8C,KAAKw8C,UAAY,IAAIrmD,OAAO6J,KAAKw8C,WAAa,GAC5D/C,EAAcz5C,KAAK47C,gBAAkB,IAAIzlD,OAAO6J,KAAK47C,iBAAmB,GAC5E,MAAO,GAAGzlD,OAAO6J,KAAKu3B,WAAWphC,OAAOsmD,GAAatmD,OAAOsjD,EAAa,MAAMtjD,OAAO6J,KAAK43B,WAAY,KAAKzhC,OAAO6J,KAAKu8C,cAEzH,CACDrpD,IAAK,iBACLoQ,MAAO,SAAwBxP,GAC7B,IAAKkM,KAAKw8C,UACR,OAAO,EAGT,IAAIE,EAAW18C,KAAKw8C,UAAUpqD,MAAM,KAChCmwB,EAAY,CAAC,OAAQ,OAAQ,MAAO,SAKpCo6B,EAAkB/0C,EAHD2a,EAAUlwB,KAAI,SAAUmrB,GAC3C,OAAOk/B,EAASrpD,SAASmqB,MAE0B,GACjDke,EAAOihB,EAAgB,GACvBC,EAAOD,EAAgB,GACvBE,EAAMF,EAAgB,GACtB71B,EAAQ61B,EAAgB,GAE5B,GAAI7oD,EAAMujB,UAAYqkB,GAAQ5nC,EAAMsjB,UAAYwlC,GAAQ9oD,EAAMk9B,SAAW6rB,GAAO/oD,EAAM0jB,WAAasP,EACjG,OAAO,EAGT,IAAIg2B,EAAiBJ,EAAS9jC,QAAO,SAAU1lB,GAC7C,OAAQqvB,EAAUlvB,SAASH,MAC1B,GAEH,QAAK4pD,IAIAlsD,OAAOc,UAAUyC,eAAeC,KAAK4L,KAAK+8C,YAAaD,IAC1D/lB,EAAM,gCAAgC5gC,OAAO6J,KAAKw8C,YAG7Cx8C,KAAK+8C,YAAYD,GAAgBnjD,gBAAkB7F,EAAMZ,IAAIyG,iBAErE,CACDzG,IAAK,SACLnC,IAAK,WAIH,IAHA,IAAIwnC,EAAS,GACTykB,EAAU,IAAIthD,OAAO,SAASvF,OAAO6J,KAAK43B,WAAY,gBAAiB,KAElEqlB,EAAM,EAAGC,EAAcvoD,MAAMoD,KAAKiI,KAAKmG,QAAQvQ,YAAaqnD,EAAMC,EAAY3pD,OAAQ0pD,IAAO,CACpG,IAAIE,EAAQD,EAAYD,GACpBpjD,EAAOsjD,EAAMtjD,KACbyJ,EAAQ65C,EAAM75C,MACd7H,EAAQ5B,EAAK4B,MAAMuhD,GACnB9pD,EAAMuI,GAASA,EAAM,GAErBvI,IACFqlC,EAAOsjB,EAAS3oD,IAAQkqD,EAAS95C,IAIrC,OAAOi1B,IAER,CACDrlC,IAAK,kBACLnC,IAAK,WACH,OAlHwB0oD,EAkHIz5C,KAAKy5C,cAjHlB1nC,OACV,SACE0nC,GAAe/8C,SACjB,gBADF,EAHT,IAA8B+8C,IAoHzB,CACDvmD,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAKo8C,OAAOW,eAEnB,CAAC,CACH7pD,IAAK,WACLoQ,MAAO,SAAkB1H,EAAOwgD,GAC9B,OAAO,IAAIp8C,KAAKpE,EAAMuK,QAASvK,EAAM/F,OA/JNwnD,EA+JyCzhD,EAAM2L,QA7J9E5G,EADS08C,EAAiBlrD,OACTsJ,MAAMigD,IAAsB,GAC7CnkB,EAAY52B,EAAQ,IACpB67C,EAAY77C,EAAQ,MAEN,CAAC,UAAW,QAAS,YAAYtN,SAASkkC,KAC1DA,GAAa,IAAIphC,OAAOqmD,GACxBA,EAAY,IAGP,CACL/C,YAAakC,EAAiBh7C,EAAQ,IACtC42B,UAAWA,EACXmiB,aAAc/4C,EAAQ,IAeC+4C,EAfsB/4C,EAAQ,GAgBhD+4C,EAAatnD,MAAM,KAAK4D,QAAO,SAAU2N,EAAS/H,GACvD,OAAOhL,OAAOmT,OAAOJ,EAAS01C,EAAgB,GAAIz9C,EAAMtF,QAAQ,KAAM,KAAM,KAAKxE,KAAK8J,OACrF,KAlB0D,GAC3Dg8B,WAAYj3B,EAAQ,GACpB47C,WAAY57C,EAAQ,GACpB67C,UAAWA,IA8I+EJ,GA/J9F,IAAqCiB,EA6BV3D,EA3BrB/4C,EACA42B,EACAilB,MA+JGL,EAhGiB,GAmGtBE,EAAoB,CACtB3pD,EAAG,WACD,MAAO,SAET6tC,OAAQ,WACN,MAAO,SAETxB,KAAM,WACJ,MAAO,UAETue,QAAS,WACP,MAAO,UAETpxB,MAAO,SAAet6B,GACpB,MAAiC,UAA1BA,EAAE6/B,aAAa,QAAsB,QAAU,SAExD8rB,OAAQ,WACN,MAAO,UAETC,SAAU,WACR,MAAO,UAYX,SAASzmB,EAAMW,GACb,MAAM,IAAIp8B,MAAMo8B,GAGlB,SAAS0lB,EAAS95C,GAChB,IACE,OAAOizB,KAAKplC,MAAMmS,GAClB,MAAOm6C,GACP,OAAOn6C,GAIX,IAAIo6C,EAAuB,WACzB,SAASA,EAAQC,EAASjlB,GACxBxyB,EAAgBlG,KAAM09C,GAEtB19C,KAAK29C,QAAUA,EACf39C,KAAK04B,OAASA,EAoJhB,OAjJA6gB,EAAamE,EAAS,CAAC,CACrBxqD,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAK04B,OAAO7iC,QAEpB,CACD3C,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAK04B,OAAO+gB,cAEpB,CACDvmD,IAAK,eACLnC,IAAK,WACH,OAAOiP,KAAK04B,OAAOghB,eAEpB,CACDxmD,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQ/lB,aAErB,CACD1kC,IAAK,cACLoQ,MAAO,SAAqBxP,GACtBkM,KAAK49C,qBAAqB9pD,IAAUkM,KAAK69C,oBAAoB/pD,IAC/DkM,KAAK89C,gBAAgBhqD,KAGxB,CACDZ,IAAK,YACLnC,IAAK,WACH,OAAOiP,KAAK04B,OAAOnB,YAEpB,CACDrkC,IAAK,SACLnC,IAAK,WACH,IAAIqvC,EAASpgC,KAAKmoC,WAAWnoC,KAAKu8C,YAElC,GAAqB,mBAAVnc,EACT,OAAOA,EAGT,MAAM,IAAI9kC,MAAM,WAAYnF,OAAO6J,KAAK04B,OAAQ,mCAAqCviC,OAAO6J,KAAKu8C,WAAY,QAE9G,CACDrpD,IAAK,sBACLoQ,MAAO,SAA6BxP,GAKlC,IAJA,IAAIqS,EAAUnG,KAAK04B,OAAOvyB,QACtB43C,EAA0B/9C,KAAK29C,QAAQrD,YAAYyD,wBACnDC,GAAS,EAEJC,EAAM,EAAGC,EAAkBttD,OAAOutD,QAAQn+C,KAAK05C,cAAeuE,EAAMC,EAAgB3qD,OAAQ0qD,IAAO,CAC1G,IAEIG,EAAQx2C,EAFAs2C,EAAgBD,GAEM,GAE9BpkD,EAAOukD,EAAM,GACb96C,EAAQ86C,EAAM,GAElB,GAAIvkD,KAAQkkD,EAAZ,CACE,IAAInlC,EAASmlC,EAAwBlkD,GACrCmkD,EAASA,GAAUplC,EAAO,CACxB/e,KAAMA,EACNyJ,MAAOA,EACPxP,MAAOA,EACPqS,QAASA,KAOf,OAAO63C,IAER,CACD9qD,IAAK,kBACLoQ,MAAO,SAAyBxP,GAC9B,IAAImM,EAASnM,EAAMmM,OACfG,EAAgBtM,EAAMsM,cAE1B,IACE,IAAIm4B,EAASv4B,KAAK04B,OAAOH,OACrB8lB,EAAcztD,OAAOmT,OAAOjQ,EAAO,CACrCykC,OAAQA,IAEVv4B,KAAKogC,OAAOhsC,KAAK4L,KAAKmoC,WAAYkW,GAClCr+C,KAAK29C,QAAQW,iBAAiBt+C,KAAKu8C,WAAY,CAC7CzoD,MAAOA,EACPmM,OAAQA,EACRG,cAAeA,EACfs4B,OAAQ14B,KAAKu8C,aAEf,MAAOxlB,GACP,IAII5nB,EAAS,CACXyoB,WALe53B,KAAK43B,WAMpBuQ,WALenoC,KAAKmoC,WAMpBhiC,QALYnG,KAAKmG,QAMjBtQ,MALUmK,KAAKnK,MAMf/B,MAAOA,GAETkM,KAAK29C,QAAQ5C,YAAYhkB,EAAO,oBAAqB5gC,OAAO6J,KAAK04B,OAAQ,KAAOvpB,MAGnF,CACDjc,IAAK,uBACLoQ,MAAO,SAA8BxP,GACnC,IAAI2lD,EAAc3lD,EAAMmM,OAExB,QAAInM,aAAiBf,eAAiBiN,KAAK04B,OAAO6lB,eAAezqD,MAI7DkM,KAAKmG,UAAYszC,IAEVA,aAAuB/4C,SAAWV,KAAKmG,QAAQ2K,SAAS2oC,GAC1Dz5C,KAAKw+C,MAAMC,gBAAgBhF,GAE3Bz5C,KAAKw+C,MAAMC,gBAAgBz+C,KAAK04B,OAAOvyB,aAGjD,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQxV,aAErB,CACDj1C,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK04B,OAAO6jB,aAEpB,CACDrpD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQa,UAIjBd,EAzJkB,GA4JvBgB,EAA+B,WACjC,SAASA,EAAgBv4C,EAASo2B,GAChC,IAAItxB,EAAQjL,KAEZkG,EAAgBlG,KAAM0+C,GAEtB1+C,KAAK2+C,qBAAuB,CAC1B/oD,YAAY,EACZgpD,WAAW,EACXC,SAAS,GAEX7+C,KAAKmG,QAAUA,EACfnG,KAAK2uC,SAAU,EACf3uC,KAAKu8B,SAAWA,EAChBv8B,KAAK8tB,SAAW,IAAIyV,IACpBvjC,KAAK8+C,iBAAmB,IAAIC,kBAAiB,SAAUC,GACrD,OAAO/zC,EAAMg0C,iBAAiBD,MAmMlC,OA/LAzF,EAAamF,EAAiB,CAAC,CAC7BxrD,IAAK,QACLoQ,MAAO,WACAtD,KAAK2uC,UACR3uC,KAAK2uC,SAAU,EACf3uC,KAAK8+C,iBAAiBI,QAAQl/C,KAAKmG,QAASnG,KAAK2+C,sBACjD3+C,KAAKmQ,aAGR,CACDjd,IAAK,QACLoQ,MAAO,SAAeuW,GAChB7Z,KAAK2uC,UACP3uC,KAAK8+C,iBAAiB1pB,aACtBp1B,KAAK2uC,SAAU,GAGjB90B,IAEK7Z,KAAK2uC,UACR3uC,KAAK8+C,iBAAiBI,QAAQl/C,KAAKmG,QAASnG,KAAK2+C,sBACjD3+C,KAAK2uC,SAAU,KAGlB,CACDz7C,IAAK,OACLoQ,MAAO,WACDtD,KAAK2uC,UACP3uC,KAAK8+C,iBAAiBK,cACtBn/C,KAAK8+C,iBAAiB1pB,aACtBp1B,KAAK2uC,SAAU,KAGlB,CACDz7C,IAAK,UACLoQ,MAAO,WACL,GAAItD,KAAK2uC,QAAS,CAGhB,IAFA,IAAIhuC,EAAU,IAAI4iC,IAAIvjC,KAAKo/C,uBAElBC,EAAM,EAAGC,EAAe3qD,MAAMoD,KAAKiI,KAAK8tB,UAAWuxB,EAAMC,EAAa/rD,OAAQ8rD,IAAO,CAC5F,IAAIl5C,EAAUm5C,EAAaD,GAEtB1+C,EAAQklC,IAAI1/B,IACfnG,KAAKu/C,cAAcp5C,GAIvB,IAAK,IAAIq5C,EAAM,EAAGC,EAAe9qD,MAAMoD,KAAK4I,GAAU6+C,EAAMC,EAAalsD,OAAQisD,IAAO,CACtF,IAAIE,EAAWD,EAAaD,GAC5Bx/C,KAAK2/C,WAAWD,OAIrB,CACDxsD,IAAK,mBACLoQ,MAAO,SAA0B07C,GAC/B,GAAIh/C,KAAK2uC,QAAS,CAChB,IACI9c,EADAC,EAAalC,EAA2BovB,GAG5C,IACE,IAAKltB,EAAW9B,MAAO6B,EAASC,EAAW9/B,KAAKmW,MAAO,CACrD,IAAIy3C,EAAW/tB,EAAOvuB,MACtBtD,KAAK6/C,gBAAgBD,IAEvB,MAAOx3C,GACP0pB,EAAWlgC,EAAEwW,GACb,QACA0pB,EAAWl/B,QAIhB,CACDM,IAAK,kBACLoQ,MAAO,SAAyBs8C,GACT,cAAjBA,EAAS1wC,KACXlP,KAAK8/C,uBAAuBF,EAAS3/C,OAAQ2/C,EAASG,eAC5B,aAAjBH,EAAS1wC,OAClBlP,KAAKggD,oBAAoBJ,EAASK,cAClCjgD,KAAKkgD,kBAAkBN,EAASO,eAGnC,CACDjtD,IAAK,yBACLoQ,MAAO,SAAgC1D,EAAMmgD,GAC3C,IAAI55C,EAAUvG,EAEVI,KAAK8tB,SAAS+X,IAAI1/B,GAChBnG,KAAKu8B,SAAS6jB,yBAA2BpgD,KAAKqgD,aAAal6C,GAC7DnG,KAAKu8B,SAAS6jB,wBAAwBj6C,EAAS45C,GAE/C//C,KAAKu/C,cAAcp5C,GAEZnG,KAAKqgD,aAAal6C,IAC3BnG,KAAK2/C,WAAWx5C,KAGnB,CACDjT,IAAK,sBACLoQ,MAAO,SAA6Bg9C,GAClC,IAAK,IAAIC,EAAM,EAAGC,EAAe7rD,MAAMoD,KAAKuoD,GAAQC,EAAMC,EAAajtD,OAAQgtD,IAAO,CACpF,IAAI3gD,EAAO4gD,EAAaD,GACpBp6C,EAAUnG,KAAKygD,gBAAgB7gD,GAE/BuG,GACFnG,KAAK0gD,YAAYv6C,EAASnG,KAAKu/C,kBAIpC,CACDrsD,IAAK,oBACLoQ,MAAO,SAA2Bg9C,GAChC,IAAK,IAAIK,EAAM,EAAGC,EAAejsD,MAAMoD,KAAKuoD,GAAQK,EAAMC,EAAartD,OAAQotD,IAAO,CACpF,IAAI/gD,EAAOghD,EAAaD,GACpBx6C,EAAUnG,KAAKygD,gBAAgB7gD,GAE/BuG,GAAWnG,KAAK6gD,gBAAgB16C,IAClCnG,KAAK0gD,YAAYv6C,EAASnG,KAAK2/C,eAIpC,CACDzsD,IAAK,eACLoQ,MAAO,SAAsB6C,GAC3B,OAAOnG,KAAKu8B,SAAS8jB,aAAal6C,KAEnC,CACDjT,IAAK,sBACLoQ,MAAO,WACL,IAAIw9C,EAAOrsD,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAKuL,KAAKmG,QACpF,OAAOnG,KAAKu8B,SAAS6iB,oBAAoB0B,KAE1C,CACD5tD,IAAK,cACLoQ,MAAO,SAAqBw9C,EAAMC,GAChC,IACI9uB,EADAC,EAAatC,EAA2B5vB,KAAKo/C,oBAAoB0B,IAGrE,IACE,IAAK5uB,EAAWlC,MAAOiC,EAASC,EAAWlgC,KAAKmW,MAAO,CACrD,IAAIhC,EAAU8rB,EAAO3uB,MACrBy9C,EAAU3sD,KAAK4L,KAAMmG,IAEvB,MAAOiC,GACP8pB,EAAWtgC,EAAEwW,GACb,QACA8pB,EAAWt/B,OAGd,CACDM,IAAK,kBACLoQ,MAAO,SAAyB1D,GAC9B,GAAIA,EAAKmb,UAAY2B,KAAK6rB,aACxB,OAAO3oC,IAGV,CACD1M,IAAK,kBACLoQ,MAAO,SAAyB6C,GAC9B,OAAIA,EAAQ66C,aAAehhD,KAAKmG,QAAQ66C,aAG/BhhD,KAAKmG,QAAQ2K,SAAS3K,KAGhC,CACDjT,IAAK,aACLoQ,MAAO,SAAoB6C,GACpBnG,KAAK8tB,SAAS+X,IAAI1/B,IACjBnG,KAAK6gD,gBAAgB16C,KACvBnG,KAAK8tB,SAAS3mB,IAAIhB,GAEdnG,KAAKu8B,SAAS0kB,gBAChBjhD,KAAKu8B,SAAS0kB,eAAe96C,MAKpC,CACDjT,IAAK,gBACLoQ,MAAO,SAAuB6C,GACxBnG,KAAK8tB,SAAS+X,IAAI1/B,KACpBnG,KAAK8tB,SAASx6B,OAAO6S,GAEjBnG,KAAKu8B,SAAS2kB,kBAChBlhD,KAAKu8B,SAAS2kB,iBAAiB/6C,QAMhCu4C,EAnN0B,GAsN/ByC,EAAiC,WACnC,SAASA,EAAkBh7C,EAAS45C,EAAexjB,GACjDr2B,EAAgBlG,KAAMmhD,GAEtBnhD,KAAK+/C,cAAgBA,EACrB//C,KAAKu8B,SAAWA,EAChBv8B,KAAKohD,gBAAkB,IAAI1C,EAAgBv4C,EAASnG,MAyEtD,OAtEAu5C,EAAa4H,EAAmB,CAAC,CAC/BjuD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKohD,gBAAgBj7C,UAE7B,CACDjT,IAAK,WACLnC,IAAK,WACH,MAAO,IAAIoF,OAAO6J,KAAK+/C,cAAe,OAEvC,CACD7sD,IAAK,QACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBx1C,UAEtB,CACD1Y,IAAK,QACLoQ,MAAO,SAAeuW,GACpB7Z,KAAKohD,gBAAgBC,MAAMxnC,KAE5B,CACD3mB,IAAK,OACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBztB,SAEtB,CACDzgC,IAAK,UACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBjxC,YAEtB,CACDjd,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKohD,gBAAgBzS,UAE7B,CACDz7C,IAAK,eACLoQ,MAAO,SAAsB6C,GAC3B,OAAOA,EAAQksB,aAAaryB,KAAK+/C,iBAElC,CACD7sD,IAAK,sBACLoQ,MAAO,SAA6Bw9C,GAClC,IAAIrlD,EAAQuE,KAAKqgD,aAAaS,GAAQ,CAACA,GAAQ,GAC3CngD,EAAUhM,MAAMoD,KAAK+oD,EAAK5zC,iBAAiBlN,KAAKS,WACpD,OAAOhF,EAAMtF,OAAOwK,KAErB,CACDzN,IAAK,iBACLoQ,MAAO,SAAwB6C,GACzBnG,KAAKu8B,SAAS+kB,yBAChBthD,KAAKu8B,SAAS+kB,wBAAwBn7C,EAASnG,KAAK+/C,iBAGvD,CACD7sD,IAAK,mBACLoQ,MAAO,SAA0B6C,GAC3BnG,KAAKu8B,SAASglB,2BAChBvhD,KAAKu8B,SAASglB,0BAA0Bp7C,EAASnG,KAAK+/C,iBAGzD,CACD7sD,IAAK,0BACLoQ,MAAO,SAAiC6C,EAAS45C,GAC3C//C,KAAKu8B,SAASilB,8BAAgCxhD,KAAK+/C,eAAiBA,GACtE//C,KAAKu8B,SAASilB,6BAA6Br7C,EAAS45C,OAKnDoB,EA/E4B,GAkFrC,SAASM,EAAKpvD,EAAKa,EAAKoQ,GACtBmsB,EAAMp9B,EAAKa,GAAKiU,IAAI7D,GAGtB,SAASo+C,EAAIrvD,EAAKa,EAAKoQ,GACrBmsB,EAAMp9B,EAAKa,GAAKI,OAAOgQ,GAezB,SAAejR,EAAKa,GAClB,IAAIojB,EAASjkB,EAAItB,IAAImC,GAEP,MAAVojB,GAAiC,GAAfA,EAAOo+B,MAC3BriD,EAAIiB,OAAOJ,GAlBbyuD,CAAMtvD,EAAKa,GAGb,SAASu8B,EAAMp9B,EAAKa,GAClB,IAAIojB,EAASjkB,EAAItB,IAAImC,GAOrB,OALKojB,IACHA,EAAS,IAAIitB,IACblxC,EAAImB,IAAIN,EAAKojB,IAGRA,EAWT,IAAIsrC,EAAwB,WAC1B,SAASA,IACP17C,EAAgBlG,KAAM4hD,GAEtB5hD,KAAK6hD,YAAc,IAAIhvD,IA8EzB,OA3EA0mD,EAAaqI,EAAU,CAAC,CACtB1uD,IAAK,OACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAK6hD,YAAYlvD,UAEpC,CACDO,IAAK,SACLnC,IAAK,WAEH,OADW4D,MAAMoD,KAAKiI,KAAK6hD,YAAYvrC,UAC3BtgB,QAAO,SAAUsgB,EAAQ9iB,GACnC,OAAO8iB,EAAOngB,OAAOxB,MAAMoD,KAAKvE,MAC/B,MAEJ,CACDN,IAAK,OACLnC,IAAK,WAEH,OADW4D,MAAMoD,KAAKiI,KAAK6hD,YAAYvrC,UAC3BtgB,QAAO,SAAU0+C,EAAMlhD,GACjC,OAAOkhD,EAAOlhD,EAAIkhD,OACjB,KAEJ,CACDxhD,IAAK,MACLoQ,MAAO,SAAapQ,EAAKoQ,GACvBm+C,EAAKzhD,KAAK6hD,YAAa3uD,EAAKoQ,KAE7B,CACDpQ,IAAK,SACLoQ,MAAO,SAAiBpQ,EAAKoQ,GAC3Bo+C,EAAI1hD,KAAK6hD,YAAa3uD,EAAKoQ,KAE5B,CACDpQ,IAAK,MACLoQ,MAAO,SAAapQ,EAAKoQ,GACvB,IAAIgT,EAAStW,KAAK6hD,YAAY9wD,IAAImC,GAClC,OAAiB,MAAVojB,GAAkBA,EAAOuvB,IAAIviC,KAErC,CACDpQ,IAAK,SACLoQ,MAAO,SAAgBpQ,GACrB,OAAO8M,KAAK6hD,YAAYhc,IAAI3yC,KAE7B,CACDA,IAAK,WACLoQ,MAAO,SAAkBA,GAEvB,OADW3O,MAAMoD,KAAKiI,KAAK6hD,YAAYvrC,UAC3BmN,MAAK,SAAUjwB,GACzB,OAAOA,EAAIqyC,IAAIviC,QAGlB,CACDpQ,IAAK,kBACLoQ,MAAO,SAAyBpQ,GAC9B,IAAIojB,EAAStW,KAAK6hD,YAAY9wD,IAAImC,GAClC,OAAOojB,EAAS3hB,MAAMoD,KAAKue,GAAU,KAEtC,CACDpjB,IAAK,kBACLoQ,MAAO,SAAyBA,GAC9B,OAAO3O,MAAMoD,KAAKiI,KAAK6hD,aAAajpC,QAAO,SAAUkpC,GACnD,IAAIC,EAASn6C,EAAek6C,EAAO,GACxBC,EAAO,GAGlB,OAFaA,EAAO,GAENlc,IAAIviC,MACjBjR,KAAI,SAAU2vD,GACf,IAAIC,EAASr6C,EAAeo6C,EAAQ,GAChC9uD,EAAM+uD,EAAO,GACHA,EAAO,GAErB,OAAO/uD,SAKN0uD,EAlFmB,GAuIxBM,EAAgC,WAClC,SAASA,EAAiB/7C,EAAS1F,EAAU87B,GAC3C,IAAI+gB,EAAU7oD,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAElFyR,EAAgBlG,KAAMkiD,GAEtBliD,KAAKS,SAAWA,EAChBT,KAAKs9C,QAAUA,EACft9C,KAAKohD,gBAAkB,IAAI1C,EAAgBv4C,EAASnG,MACpDA,KAAKu8B,SAAWA,EAChBv8B,KAAKmiD,iBAAmB,IAAIP,EA2F9B,OAxFArI,EAAa2I,EAAkB,CAAC,CAC9BhvD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKohD,gBAAgBzS,UAE7B,CACDz7C,IAAK,QACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBx1C,UAEtB,CACD1Y,IAAK,QACLoQ,MAAO,SAAeuW,GACpB7Z,KAAKohD,gBAAgBC,MAAMxnC,KAE5B,CACD3mB,IAAK,OACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBztB,SAEtB,CACDzgC,IAAK,UACLoQ,MAAO,WACLtD,KAAKohD,gBAAgBjxC,YAEtB,CACDjd,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKohD,gBAAgBj7C,UAE7B,CACDjT,IAAK,eACLoQ,MAAO,SAAsB6C,GAC3B,IAAIxF,EAAUwF,EAAQxF,QAAQX,KAAKS,UAEnC,OAAIT,KAAKu8B,SAAS6lB,qBACTzhD,GAAWX,KAAKu8B,SAAS6lB,qBAAqBj8C,EAASnG,KAAKs9C,SAG9D38C,IAER,CACDzN,IAAK,sBACLoQ,MAAO,SAA6Bw9C,GAClC,IAAI9zC,EAAShN,KAETvE,EAAQuE,KAAKqgD,aAAaS,GAAQ,CAACA,GAAQ,GAC3CngD,EAAUhM,MAAMoD,KAAK+oD,EAAK5zC,iBAAiBlN,KAAKS,WAAWmY,QAAO,SAAUnd,GAC9E,OAAOuR,EAAOqzC,aAAa5kD,MAE7B,OAAOA,EAAMtF,OAAOwK,KAErB,CACDzN,IAAK,iBACLoQ,MAAO,SAAwB6C,GAC7BnG,KAAKqiD,gBAAgBl8C,KAEtB,CACDjT,IAAK,mBACLoQ,MAAO,SAA0B6C,GAC/BnG,KAAKsiD,kBAAkBn8C,KAExB,CACDjT,IAAK,0BACLoQ,MAAO,SAAiC6C,EAASo8C,GAC/C,IAAI5hD,EAAUX,KAAKqgD,aAAal6C,GAC5Bq8C,EAAgBxiD,KAAKmiD,iBAAiBtc,IAAI7lC,KAAKS,SAAU0F,IAExDxF,GAAW6hD,GACdxiD,KAAKsiD,kBAAkBn8C,KAG1B,CACDjT,IAAK,kBACLoQ,MAAO,SAAyB6C,GAC1BnG,KAAKu8B,SAAS8lB,kBAChBriD,KAAKu8B,SAAS8lB,gBAAgBl8C,EAASnG,KAAKS,SAAUT,KAAKs9C,SAC3Dt9C,KAAKmiD,iBAAiBh7C,IAAInH,KAAKS,SAAU0F,MAG5C,CACDjT,IAAK,oBACLoQ,MAAO,SAA2B6C,GAChCnG,KAAKu8B,SAAS+lB,kBAAkBn8C,EAASnG,KAAKS,SAAUT,KAAKs9C,SAC7Dt9C,KAAKmiD,iBAAiB7uD,OAAO0M,KAAKS,SAAU0F,OAIzC+7C,EArG2B,GAwGhCO,EAAiC,WACnC,SAASA,EAAkBt8C,EAASo2B,GAClC,IAAImmB,EAAS1iD,KAEbkG,EAAgBlG,KAAMyiD,GAEtBziD,KAAKmG,QAAUA,EACfnG,KAAKu8B,SAAWA,EAChBv8B,KAAK2uC,SAAU,EACf3uC,KAAK2iD,UAAY,IAAI9vD,IACrBmN,KAAK8+C,iBAAmB,IAAIC,kBAAiB,SAAUC,GACrD,OAAO0D,EAAOzD,iBAAiBD,MA0InC,OAtIAzF,EAAakJ,EAAmB,CAAC,CAC/BvvD,IAAK,QACLoQ,MAAO,WACAtD,KAAK2uC,UACR3uC,KAAK2uC,SAAU,EACf3uC,KAAK8+C,iBAAiBI,QAAQl/C,KAAKmG,QAAS,CAC1CvQ,YAAY,EACZgtD,mBAAmB,IAErB5iD,KAAKmQ,aAGR,CACDjd,IAAK,OACLoQ,MAAO,WACDtD,KAAK2uC,UACP3uC,KAAK8+C,iBAAiBK,cACtBn/C,KAAK8+C,iBAAiB1pB,aACtBp1B,KAAK2uC,SAAU,KAGlB,CACDz7C,IAAK,UACLoQ,MAAO,WACL,GAAItD,KAAK2uC,QAAS,CAChB,IACIxc,EADAC,EAAaxC,EAA2B5vB,KAAK6iD,qBAGjD,IACE,IAAKzwB,EAAWpC,MAAOmC,EAASC,EAAWpgC,KAAKmW,MAAO,CACrD,IAAI43C,EAAgB5tB,EAAO7uB,MAC3BtD,KAAK8iD,iBAAiB/C,EAAe,OAEvC,MAAO33C,GACPgqB,EAAWxgC,EAAEwW,GACb,QACAgqB,EAAWx/B,QAIhB,CACDM,IAAK,mBACLoQ,MAAO,SAA0B07C,GAC/B,GAAIh/C,KAAK2uC,QAAS,CAChB,IACIoU,EADAC,EAAapzB,EAA2BovB,GAG5C,IACE,IAAKgE,EAAWhzB,MAAO+yB,EAASC,EAAWhxD,KAAKmW,MAAO,CACrD,IAAIy3C,EAAWmD,EAAOz/C,MACtBtD,KAAK6/C,gBAAgBD,IAEvB,MAAOx3C,GACP46C,EAAWpxD,EAAEwW,GACb,QACA46C,EAAWpwD,QAIhB,CACDM,IAAK,kBACLoQ,MAAO,SAAyBs8C,GAC9B,IAAIG,EAAgBH,EAASG,cAEzBA,GACF//C,KAAK8iD,iBAAiB/C,EAAeH,EAASqD,YAGjD,CACD/vD,IAAK,mBACLoQ,MAAO,SAA0By8C,EAAekD,GAC9C,IAAI/vD,EAAM8M,KAAKu8B,SAAS2mB,4BAA4BnD,GAEpD,GAAW,MAAP7sD,EAAa,CACV8M,KAAK2iD,UAAU9c,IAAIka,IACtB//C,KAAKmjD,kBAAkBjwD,EAAK6sD,GAG9B,IAAIz8C,EAAQtD,KAAKmG,QAAQsrB,aAAasuB,GAMtC,GAJI//C,KAAK2iD,UAAU5xD,IAAIgvD,IAAkBz8C,GACvCtD,KAAKojD,sBAAsB9/C,EAAOpQ,EAAK+vD,GAG5B,MAAT3/C,EAAe,CACjB,IAAI+/C,EAAYrjD,KAAK2iD,UAAU5xD,IAAIgvD,GAEnC//C,KAAK2iD,UAAUrvD,OAAOysD,GAClBsD,GAAWrjD,KAAKsjD,oBAAoBpwD,EAAK6sD,EAAesD,QAE5DrjD,KAAK2iD,UAAUnvD,IAAIusD,EAAez8C,MAIvC,CACDpQ,IAAK,oBACLoQ,MAAO,SAA2BpQ,EAAK6sD,GACjC//C,KAAKu8B,SAAS4mB,mBAChBnjD,KAAKu8B,SAAS4mB,kBAAkBjwD,EAAK6sD,KAGxC,CACD7sD,IAAK,wBACLoQ,MAAO,SAA+BA,EAAOpQ,EAAK+vD,GAC5CjjD,KAAKu8B,SAAS6mB,uBAChBpjD,KAAKu8B,SAAS6mB,sBAAsB9/C,EAAOpQ,EAAK+vD,KAGnD,CACD/vD,IAAK,sBACLoQ,MAAO,SAA6BpQ,EAAK6sD,EAAekD,GAClDjjD,KAAKu8B,SAAS+mB,qBAChBtjD,KAAKu8B,SAAS+mB,oBAAoBpwD,EAAK6sD,EAAekD,KAGzD,CACD/vD,IAAK,sBACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAK,IAAIwrC,IAAIvjC,KAAKujD,sBAAsBptD,OAAO6J,KAAKwjD,4BAElE,CACDtwD,IAAK,wBACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAKmG,QAAQvQ,YAAYvD,KAAI,SAAUoxD,GACvD,OAAOA,EAAU5pD,UAGpB,CACD3G,IAAK,yBACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAK2iD,UAAUhwD,YAI9B8vD,EArJ4B,GAwJjCiB,EAAiC,WACnC,SAASA,EAAkBv9C,EAAS45C,EAAexjB,GACjDr2B,EAAgBlG,KAAM0jD,GAEtB1jD,KAAK2jD,kBAAoB,IAAIxC,EAAkBh7C,EAAS45C,EAAe//C,MACvEA,KAAKu8B,SAAWA,EAChBv8B,KAAK4jD,gBAAkB,IAAIhC,EAqH7B,OAlHArI,EAAamK,EAAmB,CAAC,CAC/BxwD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAK2jD,kBAAkBhV,UAE/B,CACDz7C,IAAK,QACLoQ,MAAO,WACLtD,KAAK2jD,kBAAkB/3C,UAExB,CACD1Y,IAAK,QACLoQ,MAAO,SAAeuW,GACpB7Z,KAAK2jD,kBAAkBtC,MAAMxnC,KAE9B,CACD3mB,IAAK,OACLoQ,MAAO,WACLtD,KAAK2jD,kBAAkBhwB,SAExB,CACDzgC,IAAK,UACLoQ,MAAO,WACLtD,KAAK2jD,kBAAkBxzC,YAExB,CACDjd,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAK2jD,kBAAkBx9C,UAE/B,CACDjT,IAAK,gBACLnC,IAAK,WACH,OAAOiP,KAAK2jD,kBAAkB5D,gBAE/B,CACD7sD,IAAK,0BACLoQ,MAAO,SAAiC6C,GACtCnG,KAAK6jD,cAAc7jD,KAAK8jD,qBAAqB39C,MAE9C,CACDjT,IAAK,+BACLoQ,MAAO,SAAsC6C,GAC3C,IACI49C,EAAyBn8C,EADD5H,KAAKgkD,wBAAwB79C,GACU,GAC/D89C,EAAkBF,EAAuB,GACzCG,EAAgBH,EAAuB,GAE3C/jD,KAAKmkD,gBAAgBF,GACrBjkD,KAAK6jD,cAAcK,KAEpB,CACDhxD,IAAK,4BACLoQ,MAAO,SAAmC6C,GACxCnG,KAAKmkD,gBAAgBnkD,KAAK4jD,gBAAgBQ,gBAAgBj+C,MAE3D,CACDjT,IAAK,gBACLoQ,MAAO,SAAuB+gD,GAC5B,IAAIC,EAAStkD,KAEbqkD,EAAOrxD,SAAQ,SAAU4I,GACvB,OAAO0oD,EAAOC,aAAa3oD,QAG9B,CACD1I,IAAK,kBACLoQ,MAAO,SAAyB+gD,GAC9B,IAAIG,EAASxkD,KAEbqkD,EAAOrxD,SAAQ,SAAU4I,GACvB,OAAO4oD,EAAOC,eAAe7oD,QAGhC,CACD1I,IAAK,eACLoQ,MAAO,SAAsB1H,GAC3BoE,KAAKu8B,SAASgoB,aAAa3oD,GAC3BoE,KAAK4jD,gBAAgBz8C,IAAIvL,EAAMuK,QAASvK,KAEzC,CACD1I,IAAK,iBACLoQ,MAAO,SAAwB1H,GAC7BoE,KAAKu8B,SAASkoB,eAAe7oD,GAC7BoE,KAAK4jD,gBAAgBtwD,OAAOsI,EAAMuK,QAASvK,KAE5C,CACD1I,IAAK,0BACLoQ,MAAO,SAAiC6C,GACtC,IAyCOuO,EAAMI,EACbvhB,EA1CImxD,EAAiB1kD,KAAK4jD,gBAAgBQ,gBAAgBj+C,GACtDw+C,EAAgB3kD,KAAK8jD,qBAAqB39C,GAC1Cy+C,GAuCGlwC,EAvCuBgwC,EAuCjB5vC,EAvCiC6vC,EAwC9CpxD,EAASkF,KAAKpD,IAAIqf,EAAKnhB,OAAQuhB,EAAMvhB,QAClCoB,MAAMoD,KAAK,CAChBxE,OAAQA,IACP,SAAUuoD,EAAGjmD,GACd,MAAO,CAAC6e,EAAK7e,GAAQif,EAAMjf,QA5CoCmE,WAAU,SAAU6qD,GAC/E,IAAIC,EAASl9C,EAAei9C,EAAQ,GAIpC,OA2CR,SAAwBnwC,EAAMI,GAC5B,OAAOJ,GAAQI,GAASJ,EAAK7e,OAASif,EAAMjf,OAAS6e,EAAKnN,SAAWuN,EAAMvN,QA5C7Dw9C,CAHYD,EAAO,GACRA,EAAO,OAK5B,OAA4B,GAAxBF,EACK,CAAC,GAAI,IAEL,CAACF,EAAejxD,MAAMmxD,GAAsBD,EAAclxD,MAAMmxD,MAG1E,CACD1xD,IAAK,uBACLoQ,MAAO,SAA8B6C,GACnC,IAAI45C,EAAgB//C,KAAK+/C,cAEzB,OAON,SAA0BiF,EAAa7+C,EAAS45C,GAC9C,OAAOiF,EAAY7yD,OAAOC,MAAM,OAAOwmB,QAAO,SAAUrR,GACtD,OAAOA,EAAQhU,UACdlB,KAAI,SAAUkV,EAAS1R,GACxB,MAAO,CACLsQ,QAASA,EACT45C,cAAeA,EACfx4C,QAASA,EACT1R,MAAOA,MAfAovD,CADW9+C,EAAQsrB,aAAasuB,IAAkB,GACpB55C,EAAS45C,OAI3C2D,EA3H4B,GAwJrC,IAAIwB,EAAiC,WACnC,SAASA,EAAkB/+C,EAAS45C,EAAexjB,GACjDr2B,EAAgBlG,KAAMklD,GAEtBllD,KAAKmlD,kBAAoB,IAAIzB,EAAkBv9C,EAAS45C,EAAe//C,MACvEA,KAAKu8B,SAAWA,EAChBv8B,KAAKolD,oBAAsB,IAAIpmD,QAC/BgB,KAAKqlD,uBAAyB,IAAIrmD,QAmGpC,OAhGAu6C,EAAa2L,EAAmB,CAAC,CAC/BhyD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKmlD,kBAAkBxW,UAE/B,CACDz7C,IAAK,QACLoQ,MAAO,WACLtD,KAAKmlD,kBAAkBv5C,UAExB,CACD1Y,IAAK,OACLoQ,MAAO,WACLtD,KAAKmlD,kBAAkBxxB,SAExB,CACDzgC,IAAK,UACLoQ,MAAO,WACLtD,KAAKmlD,kBAAkBh1C,YAExB,CACDjd,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKmlD,kBAAkBh/C,UAE/B,CACDjT,IAAK,gBACLnC,IAAK,WACH,OAAOiP,KAAKmlD,kBAAkBpF,gBAE/B,CACD7sD,IAAK,eACLoQ,MAAO,SAAsB1H,GAC3B,IAAIuK,EAAUvK,EAAMuK,QAGhB7C,EADwBtD,KAAKslD,yBAAyB1pD,GACxB0H,MAE9BA,IACFtD,KAAKulD,6BAA6Bp/C,GAAS3S,IAAIoI,EAAO0H,GACtDtD,KAAKu8B,SAASipB,oBAAoBr/C,EAAS7C,MAG9C,CACDpQ,IAAK,iBACLoQ,MAAO,SAAwB1H,GAC7B,IAAIuK,EAAUvK,EAAMuK,QAGhB7C,EADyBtD,KAAKslD,yBAAyB1pD,GACxB0H,MAE/BA,IACFtD,KAAKulD,6BAA6Bp/C,GAAS7S,OAAOsI,GAClDoE,KAAKu8B,SAASkpB,sBAAsBt/C,EAAS7C,MAGhD,CACDpQ,IAAK,2BACLoQ,MAAO,SAAkC1H,GACvC,IAAI8pD,EAAc1lD,KAAKolD,oBAAoBr0D,IAAI6K,GAO/C,OALK8pD,IACHA,EAAc1lD,KAAK2lD,WAAW/pD,GAC9BoE,KAAKolD,oBAAoB5xD,IAAIoI,EAAO8pD,IAG/BA,IAER,CACDxyD,IAAK,+BACLoQ,MAAO,SAAsC6C,GAC3C,IAAIy/C,EAAgB5lD,KAAKqlD,uBAAuBt0D,IAAIoV,GAOpD,OALKy/C,IACHA,EAAgB,IAAI/yD,IACpBmN,KAAKqlD,uBAAuB7xD,IAAI2S,EAASy/C,IAGpCA,IAER,CACD1yD,IAAK,aACLoQ,MAAO,SAAoB1H,GACzB,IAEE,MAAO,CACL0H,MAFUtD,KAAKu8B,SAASspB,mBAAmBjqD,IAI7C,MAAOm7B,GACP,MAAO,CACLA,MAAOA,QAMRmuB,EA1G4B,GA6GjCY,EAA+B,WACjC,SAASA,EAAgBnI,EAASphB,GAChCr2B,EAAgBlG,KAAM8lD,GAEtB9lD,KAAK29C,QAAUA,EACf39C,KAAKu8B,SAAWA,EAChBv8B,KAAK+lD,iBAAmB,IAAIlzD,IA6F9B,OA1FA0mD,EAAauM,EAAiB,CAAC,CAC7B5yD,IAAK,QACLoQ,MAAO,WACAtD,KAAKgmD,oBACRhmD,KAAKgmD,kBAAoB,IAAId,EAAkBllD,KAAKmG,QAASnG,KAAKimD,gBAAiBjmD,MACnFA,KAAKgmD,kBAAkBp6C,WAG1B,CACD1Y,IAAK,OACLoQ,MAAO,WACDtD,KAAKgmD,oBACPhmD,KAAKgmD,kBAAkBryB,cAChB3zB,KAAKgmD,kBACZhmD,KAAKkmD,0BAGR,CACDhzD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQx3C,UAErB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQ/lB,aAErB,CACD1kC,IAAK,kBACLnC,IAAK,WACH,OAAOiP,KAAKo8C,OAAO6J,kBAEpB,CACD/yD,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQvB,SAErB,CACDlpD,IAAK,WACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAK+lD,iBAAiBzvC,YAEzC,CACDpjB,IAAK,gBACLoQ,MAAO,SAAuBo1B,GAC5B,IAAIkhB,EAAU,IAAI8D,EAAQ19C,KAAK29C,QAASjlB,GACxC14B,KAAK+lD,iBAAiBvyD,IAAIklC,EAAQkhB,GAClC55C,KAAKu8B,SAASoe,iBAAiBf,KAEhC,CACD1mD,IAAK,mBACLoQ,MAAO,SAA0Bo1B,GAC/B,IAAIkhB,EAAU55C,KAAK+lD,iBAAiBh1D,IAAI2nC,GAEpCkhB,IACF55C,KAAK+lD,iBAAiBzyD,OAAOolC,GAC7B14B,KAAKu8B,SAASse,oBAAoBjB,MAGrC,CACD1mD,IAAK,uBACLoQ,MAAO,WACL,IAAI6iD,EAASnmD,KAEbA,KAAKi6C,SAASjnD,SAAQ,SAAU4mD,GAC9B,OAAOuM,EAAO5pB,SAASse,oBAAoBjB,GAAS,MAEtD55C,KAAK+lD,iBAAiBnyD,UAEvB,CACDV,IAAK,qBACLoQ,MAAO,SAA4B1H,GACjC,IAAI88B,EAASyjB,EAAOiK,SAASxqD,EAAOoE,KAAKo8C,QAEzC,GAAI1jB,EAAOd,YAAc53B,KAAK43B,WAC5B,OAAOc,IAGV,CACDxlC,IAAK,sBACLoQ,MAAO,SAA6B6C,EAASuyB,GAC3C14B,KAAKqmD,cAAc3tB,KAEpB,CACDxlC,IAAK,wBACLoQ,MAAO,SAA+B6C,EAASuyB,GAC7C14B,KAAKsmD,iBAAiB5tB,OAInBotB,EAnG0B,GAsG/BS,EAA6B,WAC/B,SAASA,EAAc5I,EAASl1C,GAC9BvC,EAAgBlG,KAAMumD,GAEtBvmD,KAAK29C,QAAUA,EACf39C,KAAKyI,SAAWA,EAChBzI,KAAKwmD,kBAAoB,IAAI/D,EAAkBziD,KAAKmG,QAASnG,MAC7DA,KAAKymD,mBAAqBzmD,KAAKmoC,WAAWse,mBA+I5C,OA5IAlN,EAAagN,EAAe,CAAC,CAC3BrzD,IAAK,QACLoQ,MAAO,WACLtD,KAAKwmD,kBAAkB56C,QACvB5L,KAAK0mD,2CAEN,CACDxzD,IAAK,OACLoQ,MAAO,WACLtD,KAAKwmD,kBAAkB7yB,SAExB,CACDzgC,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQx3C,UAErB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQxV,aAErB,CACDj1C,IAAK,8BACLoQ,MAAO,SAAqCy8C,GAC1C,GAAIA,KAAiB//C,KAAKymD,mBACxB,OAAOzmD,KAAKymD,mBAAmB1G,GAAelmD,OAGjD,CACD3G,IAAK,oBACLoQ,MAAO,SAA2BpQ,EAAK6sD,GACrC,IAAIp6C,EAAa3F,KAAKymD,mBAAmB1G,GAEpC//C,KAAK2mD,SAASzzD,IACjB8M,KAAK4mD,sBAAsB1zD,EAAKyS,EAAWkhD,OAAO7mD,KAAKyI,SAASvV,IAAOyS,EAAWkhD,OAAOlhD,EAAWmhD,iBAGvG,CACD5zD,IAAK,wBACLoQ,MAAO,SAA+BA,EAAOzJ,EAAMopD,GACjD,IAAIt9C,EAAa3F,KAAK+mD,uBAAuBltD,GAC/B,OAAVyJ,IAEa,OAAb2/C,IACFA,EAAWt9C,EAAWkhD,OAAOlhD,EAAWmhD,eAG1C9mD,KAAK4mD,sBAAsB/sD,EAAMyJ,EAAO2/C,MAEzC,CACD/vD,IAAK,sBACLoQ,MAAO,SAA6BpQ,EAAK6sD,EAAekD,GACtD,IAAIt9C,EAAa3F,KAAK+mD,uBAAuB7zD,GAEzC8M,KAAK2mD,SAASzzD,GAChB8M,KAAK4mD,sBAAsB1zD,EAAKyS,EAAWkhD,OAAO7mD,KAAKyI,SAASvV,IAAO+vD,GAEvEjjD,KAAK4mD,sBAAsB1zD,EAAKyS,EAAWkhD,OAAOlhD,EAAWmhD,cAAe7D,KAG/E,CACD/vD,IAAK,yCACLoQ,MAAO,WACL,IACI0jD,EADAC,EAAar3B,EAA2B5vB,KAAKknD,kBAGjD,IACE,IAAKD,EAAWj3B,MAAOg3B,EAASC,EAAWj1D,KAAKmW,MAAO,CACrD,IAAIg/C,EAASH,EAAO1jD,MAChBpQ,EAAMi0D,EAAOj0D,IACb2G,EAAOstD,EAAOttD,KACditD,EAAeK,EAAOL,aACtBD,EAASM,EAAON,YAEAvxD,GAAhBwxD,GAA8B9mD,KAAKmoC,WAAW3lB,KAAKqjB,IAAI3yC,IACzD8M,KAAK4mD,sBAAsB/sD,EAAMgtD,EAAOC,QAAexxD,IAG3D,MAAO8S,GACP6+C,EAAWr1D,EAAEwW,GACb,QACA6+C,EAAWr0D,OAGd,CACDM,IAAK,wBACLoQ,MAAO,SAA+BzJ,EAAMutD,EAAUC,GACpD,IAAIC,EAAoB,GAAGnxD,OAAO0D,EAAM,WACpC0tD,EAAgBvnD,KAAKyI,SAAS6+C,GAElC,GAA4B,mBAAjBC,EAA6B,CACtC,IAAI5hD,EAAa3F,KAAK+mD,uBAAuBltD,GAE7C,IACE,IAAIyJ,EAAQqC,EAAW6hD,OAAOJ,GAC1BnE,EAAWoE,EAEXA,IACFpE,EAAWt9C,EAAW6hD,OAAOH,IAG/BE,EAAcnzD,KAAK4L,KAAKyI,SAAUnF,EAAO2/C,GACzC,MAAOlsB,GAKP,MAJIA,aAAiB14B,YACnB04B,EAAMW,QAAU,mBAAoBvhC,OAAO6J,KAAK29C,QAAQ/lB,WAAY,KAAKzhC,OAAOwP,EAAW9L,KAAM,QAAS1D,OAAO4gC,EAAMW,UAGnHX,MAIX,CACD7jC,IAAK,mBACLnC,IAAK,WACH,IAAI01D,EAAqBzmD,KAAKymD,mBAC9B,OAAO71D,OAAO+B,KAAK8zD,GAAoBp0D,KAAI,SAAUa,GACnD,OAAOuzD,EAAmBvzD,QAG7B,CACDA,IAAK,yBACLnC,IAAK,WACH,IAAI02D,EAASznD,KAET0nD,EAAc,GAKlB,OAJA92D,OAAO+B,KAAKqN,KAAKymD,oBAAoBzzD,SAAQ,SAAUE,GACrD,IAAIyS,EAAa8hD,EAAOhB,mBAAmBvzD,GAC3Cw0D,EAAY/hD,EAAW9L,MAAQ8L,KAE1B+hD,IAER,CACDx0D,IAAK,WACLoQ,MAAO,SAAkBy8C,GACvB,IAAIp6C,EAAa3F,KAAK+mD,uBAAuBhH,GACzC4H,EAAgB,MAAMxxD,OAAO8lD,EAAWt2C,EAAW9L,OACvD,OAAOmG,KAAKyI,SAASk/C,OAIlBpB,EAtJwB,GAyJ7BqB,EAA8B,WAChC,SAASA,EAAejK,EAASphB,GAC/Br2B,EAAgBlG,KAAM4nD,GAEtB5nD,KAAK29C,QAAUA,EACf39C,KAAKu8B,SAAWA,EAChBv8B,KAAK6nD,cAAgB,IAAIjG,EAgH3B,OA7GArI,EAAaqO,EAAgB,CAAC,CAC5B10D,IAAK,QACLoQ,MAAO,WACAtD,KAAKmlD,oBACRnlD,KAAKmlD,kBAAoB,IAAIzB,EAAkB1jD,KAAKmG,QAASnG,KAAK+/C,cAAe//C,MACjFA,KAAKmlD,kBAAkBv5C,WAG1B,CACD1Y,IAAK,OACLoQ,MAAO,WACDtD,KAAKmlD,oBACPnlD,KAAK8nD,uBACL9nD,KAAKmlD,kBAAkBxxB,cAChB3zB,KAAKmlD,qBAGf,CACDjyD,IAAK,eACLoQ,MAAO,SAAsBykD,GAC3B,IAAI5hD,EAAU4hD,EAAO5hD,QACjBtM,EAAOkuD,EAAOxgD,QAEdvH,KAAKw+C,MAAMC,gBAAgBt4C,IAC7BnG,KAAKgoD,cAAc7hD,EAAStM,KAG/B,CACD3G,IAAK,iBACLoQ,MAAO,SAAwB2kD,GAC7B,IAAI9hD,EAAU8hD,EAAO9hD,QACjBtM,EAAOouD,EAAO1gD,QAClBvH,KAAKkoD,iBAAiB/hD,EAAStM,KAEhC,CACD3G,IAAK,gBACLoQ,MAAO,SAAuB6C,EAAStM,GACrC,IAEIsuD,EAFAC,EAASpoD,KAIRA,KAAK6nD,cAAchiB,IAAIhsC,EAAMsM,KAChCnG,KAAK6nD,cAAc1gD,IAAItN,EAAMsM,GACK,QAAjCgiD,EAAKnoD,KAAKmlD,yBAAsC,IAAPgD,GAAyBA,EAAG9G,OAAM,WAC1E,OAAO+G,EAAO7rB,SAAS8rB,gBAAgBliD,EAAStM,SAIrD,CACD3G,IAAK,mBACLoQ,MAAO,SAA0B6C,EAAStM,GACxC,IAEIsuD,EAFAG,EAAUtoD,KAIVA,KAAK6nD,cAAchiB,IAAIhsC,EAAMsM,KAC/BnG,KAAK6nD,cAAcv0D,OAAOuG,EAAMsM,GACE,QAAjCgiD,EAAKnoD,KAAKmlD,yBAAsC,IAAPgD,GAAyBA,EAAG9G,OAAM,WAC1E,OAAOiH,EAAQ/rB,SAASgsB,mBAAmBpiD,EAAStM,SAIzD,CACD3G,IAAK,uBACLoQ,MAAO,WACL,IACIklD,EADAC,EAAa74B,EAA2B5vB,KAAK6nD,cAAcl1D,MAG/D,IACE,IAAK81D,EAAWz4B,MAAOw4B,EAASC,EAAWz2D,KAAKmW,MAAO,CACrD,IAGIugD,EAHA7uD,EAAO2uD,EAAOllD,MAEdqlD,EAAa/4B,EAA2B5vB,KAAK6nD,cAAczD,gBAAgBvqD,IAG/E,IACE,IAAK8uD,EAAW34B,MAAO04B,EAASC,EAAW32D,KAAKmW,MAAO,CACrD,IAAIhC,EAAUuiD,EAAOplD,MACrBtD,KAAKkoD,iBAAiB/hD,EAAStM,IAEjC,MAAOuO,GACPugD,EAAW/2D,EAAEwW,GACb,QACAugD,EAAW/1D,MAGf,MAAOwV,GACPqgD,EAAW72D,EAAEwW,GACb,QACAqgD,EAAW71D,OAGd,CACDM,IAAK,gBACLnC,IAAK,WACH,MAAO,QAAQoF,OAAO6J,KAAK29C,QAAQ/lB,WAAY,aAEhD,CACD1kC,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQx3C,UAErB,CACDjT,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQa,UAIjBoJ,EAtHyB,GAyHlC,SAASgB,EAAiCn3D,EAAao3D,GACrD,IAAIC,EAAYC,EAA2Bt3D,GAC3C,OAAOkD,MAAMoD,KAAK+wD,EAAU9yD,QAAO,SAAUsgB,EAAQ7kB,GAInD,OAuBJ,SAAiCA,EAAao3D,GAC5C,IAAIG,EAAav3D,EAAYo3D,GAC7B,OAAOl0D,MAAMsJ,QAAQ+qD,GAAcA,EAAa,GA5B9CC,CAAwBx3D,EAAao3D,GAAc71D,SAAQ,SAAU6G,GACnE,OAAOyc,EAAOnP,IAAItN,MAEbyc,IACN,IAAIitB,MAGT,SAAS2lB,EAAiCz3D,EAAao3D,GAErD,OADgBE,EAA2Bt3D,GAC1BuE,QAAO,SAAUmzD,EAAO13D,GAEvC,OADA03D,EAAMr0D,KAAKiC,MAAMoyD,EAAO5qD,EAqB5B,SAAiC9M,EAAao3D,GAC5C,IAAIG,EAAav3D,EAAYo3D,GAC7B,OAAOG,EAAap4D,OAAO+B,KAAKq2D,GAAY32D,KAAI,SAAUa,GACxD,MAAO,CAACA,EAAK81D,EAAW91D,OACrB,GAzBwCk2D,CAAwB33D,EAAao3D,KACzEM,IACN,IAGL,SAASJ,EAA2Bt3D,GAGlC,IAFA,IAAIq3D,EAAY,GAETr3D,GACLq3D,EAAUh0D,KAAKrD,GACfA,EAAcb,OAAOuZ,eAAe1Y,GAGtC,OAAOq3D,EAAU9iC,UAenB,IAAIqjC,EAA8B,WAChC,SAASA,EAAe1L,EAASphB,GAC/Br2B,EAAgBlG,KAAMqpD,GAEtBrpD,KAAK29C,QAAUA,EACf39C,KAAKu8B,SAAWA,EAChBv8B,KAAKspD,cAAgB,IAAI1H,EACzB5hD,KAAKupD,qBAAuB,IAAI3H,EAChC5hD,KAAKwpD,oBAAsB,IAAI32D,IA6NjC,OA1NA0mD,EAAa8P,EAAgB,CAAC,CAC5Bn2D,IAAK,QACLoQ,MAAO,WACL,IAAImmD,EAAUzpD,KAEwB,IAAlCA,KAAKwpD,oBAAoB9U,OAC3B10C,KAAK0pD,kBAAkB12D,SAAQ,SAAU22D,GACvC,IAAIlpD,EAAWgpD,EAAQhpD,SAASkpD,GAE5BrM,EAAU,CACZqM,WAAYA,GAGVlpD,GACFgpD,EAAQD,oBAAoBh2D,IAAIm2D,EAAY,IAAIzH,EAAiBxlD,SAASwV,KAAMzR,EAAUgpD,EAASnM,OAGvGt9C,KAAKwpD,oBAAoBx2D,SAAQ,SAAU42D,GACzC,OAAOA,EAASh+C,YAIpB5L,KAAK6pD,kBAAkB72D,SAAQ,SAAU2qD,GACvC,OAAOA,EAAQxtC,eAGlB,CACDjd,IAAK,OACLoQ,MAAO,WACDtD,KAAKwpD,oBAAoB9U,KAAO,IAClC10C,KAAK8pD,uBACL9pD,KAAKwpD,oBAAoBx2D,SAAQ,SAAU42D,GACzC,OAAOA,EAASj2B,UAElB3zB,KAAKwpD,oBAAoB51D,WAG5B,CACDV,IAAK,UACLoQ,MAAO,WACLtD,KAAKwpD,oBAAoBx2D,SAAQ,SAAU42D,GACzC,OAAOA,EAASz5C,eAGnB,CACDjd,IAAK,kBACLoQ,MAAO,SAAyB6C,EAAS4jD,EAAWC,GAClD,IAAIL,EAAaK,EAAOL,WACpBM,EAASjqD,KAAKkqD,UAAU/jD,EAASwjD,GAEjCM,GACFjqD,KAAKmqD,cAAcF,EAAQ9jD,EAASwjD,KAGvC,CACDz2D,IAAK,oBACLoQ,MAAO,SAA2B6C,EAAS4jD,EAAWK,GACpD,IAAIT,EAAaS,EAAOT,WACpBM,EAASjqD,KAAKqqD,iBAAiBlkD,EAASwjD,GAExCM,GACFjqD,KAAKsqD,iBAAiBL,EAAQ9jD,EAASwjD,KAG1C,CACDz2D,IAAK,uBACLoQ,MAAO,SAA8B6C,EAASokD,GAC5C,IAAIZ,EAAaY,EAAOZ,WACxB,OAAO3pD,KAAKwqD,UAAUrkD,EAASwjD,IAAexjD,EAAQxF,QAAQ,IAAIxK,OAAO6J,KAAK29C,QAAQrD,YAAY8B,OAAOqO,oBAAqB,MAAMt0D,OAAOwzD,EAAY,QAExJ,CACDz2D,IAAK,gBACLoQ,MAAO,SAAuB2mD,EAAQ9jD,EAASwjD,GAC7C,IAEIxB,EAFAuC,EAAU1qD,KAITA,KAAKupD,qBAAqB1jB,IAAI8jB,EAAYxjD,KAC7CnG,KAAKspD,cAAcniD,IAAIwiD,EAAYM,GACnCjqD,KAAKupD,qBAAqBpiD,IAAIwiD,EAAYxjD,GACU,QAAnDgiD,EAAKnoD,KAAKwpD,oBAAoBz4D,IAAI44D,UAAgC,IAAPxB,GAAyBA,EAAG9G,OAAM,WAC5F,OAAOqJ,EAAQnuB,SAASouB,gBAAgBV,EAAQ9jD,EAASwjD,SAI9D,CACDz2D,IAAK,mBACLoQ,MAAO,SAA0B2mD,EAAQ9jD,EAASwjD,GAChD,IAEIxB,EAFAyC,EAAU5qD,KAIVA,KAAKupD,qBAAqB1jB,IAAI8jB,EAAYxjD,KAC5CnG,KAAKspD,cAAch2D,OAAOq2D,EAAYM,GACtCjqD,KAAKupD,qBAAqBj2D,OAAOq2D,EAAYxjD,GACO,QAAnDgiD,EAAKnoD,KAAKwpD,oBAAoBz4D,IAAI44D,UAAgC,IAAPxB,GAAyBA,EAAG9G,OAAM,WAC5F,OAAOuJ,EAAQruB,SAASsuB,mBAAmBZ,EAAQ9jD,EAASwjD,SAIjE,CACDz2D,IAAK,uBACLoQ,MAAO,WACL,IACIwnD,EADAC,EAAan7B,EAA2B5vB,KAAKupD,qBAAqB52D,MAGtE,IACE,IAAKo4D,EAAW/6B,MAAO86B,EAASC,EAAW/4D,KAAKmW,MAAO,CACrD,IAGI6iD,EAHArB,EAAamB,EAAOxnD,MAEpB2nD,EAAcr7B,EAA2B5vB,KAAKupD,qBAAqBnF,gBAAgBuF,IAGvF,IACE,IAAKsB,EAAYj7B,MAAOg7B,EAAUC,EAAYj5D,KAAKmW,MAAO,CACxD,IAGI+iD,EAHA/kD,EAAU6kD,EAAQ1nD,MAElB6nD,EAAcv7B,EAA2B5vB,KAAKspD,cAAclF,gBAAgBuF,IAGhF,IACE,IAAKwB,EAAYn7B,MAAOk7B,EAAUC,EAAYn5D,KAAKmW,MAAO,CACxD,IAAI8hD,EAASiB,EAAQ5nD,MACrBtD,KAAKsqD,iBAAiBL,EAAQ9jD,EAASwjD,IAEzC,MAAOvhD,GACP+iD,EAAYv5D,EAAEwW,GACd,QACA+iD,EAAYv4D,MAGhB,MAAOwV,GACP6iD,EAAYr5D,EAAEwW,GACd,QACA6iD,EAAYr4D,MAGhB,MAAOwV,GACP2iD,EAAWn5D,EAAEwW,GACb,QACA2iD,EAAWn4D,OAGd,CACDM,IAAK,WACLoQ,MAAO,SAAkBqmD,GACvB,OAAO3pD,KAAKw+C,MAAM4M,QAAQC,yBAAyB1B,KAEpD,CACDz2D,IAAK,qBACLnC,IAAK,WACH,IAAIu6D,EAAe,IAAI1J,EAQvB,OAPA5hD,KAAKurD,OAAOC,QAAQx4D,SAAQ,SAAU1C,GAEtBs4D,EADIt4D,EAAO04D,WAAWyC,sBACwB,WACpDz4D,SAAQ,SAAUi3D,GACxB,OAAOqB,EAAankD,IAAI8iD,EAAQ35D,EAAOsnC,kBAGpC0zB,IAER,CACDp4D,IAAK,oBACLnC,IAAK,WACH,OAAOiP,KAAK0rD,mBAAmBC,gBAAgB3rD,KAAK43B,cAErD,CACD1kC,IAAK,iCACLnC,IAAK,WACH,OAAOiP,KAAK0rD,mBAAmBtH,gBAAgBpkD,KAAK43B,cAErD,CACD1kC,IAAK,oBACLnC,IAAK,WACH,IAAI66D,EAAc5rD,KAAK6rD,+BACvB,OAAO7rD,KAAKurD,OAAOO,SAASlzC,QAAO,SAAU+kC,GAC3C,OAAOiO,EAAYv4D,SAASsqD,EAAQ/lB,iBAGvC,CACD1kC,IAAK,YACLoQ,MAAO,SAAmB6C,EAASwjD,GACjC,QAAS3pD,KAAKkqD,UAAU/jD,EAASwjD,MAAiB3pD,KAAKqqD,iBAAiBlkD,EAASwjD,KAElF,CACDz2D,IAAK,YACLoQ,MAAO,SAAmB6C,EAASwjD,GACjC,OAAO3pD,KAAKs6C,YAAYyR,qCAAqC5lD,EAASwjD,KAEvE,CACDz2D,IAAK,mBACLoQ,MAAO,SAA0B6C,EAASwjD,GACxC,OAAO3pD,KAAKspD,cAAclF,gBAAgBuF,GAAYv2D,MAAK,SAAU62D,GACnE,OAAOA,EAAO9jD,UAAYA,OAG7B,CACDjT,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQa,QAErB,CACDtrD,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQ/lB,aAErB,CACD1kC,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQrD,cAErB,CACDpnD,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAYiR,WAIrBlC,EArOyB,GAwO9B2C,EAAuB,WACzB,SAASA,EAAQ17D,EAAQkuD,GACvB,IAAIyN,EAAUjsD,KAEdkG,EAAgBlG,KAAMgsD,GAEtBhsD,KAAKs+C,iBAAmB,SAAU4N,GAChC,IAAI/8C,EAAS1a,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC7EmjC,EAAaq0B,EAAQr0B,WACrBuQ,EAAa8jB,EAAQ9jB,WACrBhiC,EAAU8lD,EAAQ9lD,QACtBgJ,EAASve,OAAOmT,OAAO,CACrB6zB,WAAYA,EACZuQ,WAAYA,EACZhiC,QAASA,GACRgJ,GAEH88C,EAAQ3R,YAAYgE,iBAAiB2N,EAAQr0B,WAAYs0B,EAAc/8C,IAGzEnP,KAAK1P,OAASA,EACd0P,KAAKw+C,MAAQA,EACbx+C,KAAKmoC,WAAa,IAAI73C,EAAOm7D,sBAAsBzrD,MACnDA,KAAKmsD,gBAAkB,IAAIrG,EAAgB9lD,KAAMA,KAAKosD,YACtDpsD,KAAKqsD,cAAgB,IAAI9F,EAAcvmD,KAAMA,KAAKmoC,YAClDnoC,KAAKssD,eAAiB,IAAI1E,EAAe5nD,KAAMA,MAC/CA,KAAKusD,eAAiB,IAAIlD,EAAerpD,KAAMA,MAE/C,IACEA,KAAKmoC,WAAWqkB,aAChBxsD,KAAKs+C,iBAAiB,cACtB,MAAOvnB,GACP/2B,KAAK+6C,YAAYhkB,EAAO,4BAsH5B,OAlHAwiB,EAAayS,EAAS,CAAC,CACrB94D,IAAK,UACLoQ,MAAO,WACLtD,KAAKmsD,gBAAgBvgD,QACrB5L,KAAKqsD,cAAczgD,QACnB5L,KAAKssD,eAAe1gD,QACpB5L,KAAKusD,eAAe3gD,QAEpB,IACE5L,KAAKmoC,WAAWzO,UAChB15B,KAAKs+C,iBAAiB,WACtB,MAAOvnB,GACP/2B,KAAK+6C,YAAYhkB,EAAO,4BAG3B,CACD7jC,IAAK,UACLoQ,MAAO,WACLtD,KAAKusD,eAAep8C,YAErB,CACDjd,IAAK,aACLoQ,MAAO,WACL,IACEtD,KAAKmoC,WAAW/S,aAChBp1B,KAAKs+C,iBAAiB,cACtB,MAAOvnB,GACP/2B,KAAK+6C,YAAYhkB,EAAO,4BAG1B/2B,KAAKusD,eAAe54B,OACpB3zB,KAAKssD,eAAe34B,OACpB3zB,KAAKqsD,cAAc14B,OACnB3zB,KAAKmsD,gBAAgBx4B,SAEtB,CACDzgC,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAK1P,OAAOgqD,cAEpB,CACDpnD,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAK1P,OAAOsnC,aAEpB,CACD1kC,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAY8B,SAEzB,CACDlpD,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAY8R,aAEzB,CACDl5D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,gBACLnC,IAAK,WACH,OAAOiP,KAAKmG,QAAQnJ,gBAErB,CACD9J,IAAK,cACLoQ,MAAO,SAAqByzB,EAAOW,GACjC,IAAIvoB,EAAS1a,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC7EmjC,EAAa53B,KAAK43B,WAClBuQ,EAAanoC,KAAKmoC,WAClBhiC,EAAUnG,KAAKmG,QACnBgJ,EAASve,OAAOmT,OAAO,CACrB6zB,WAAYA,EACZuQ,WAAYA,EACZhiC,QAASA,GACRgJ,GACHnP,KAAKs6C,YAAYS,YAAYhkB,EAAO,SAAS5gC,OAAOuhC,GAAUvoB,KAE/D,CACDjc,IAAK,kBACLoQ,MAAO,SAAyB6C,EAAStM,GACvCmG,KAAKysD,uBAAuB,GAAGt2D,OAAO0D,EAAM,mBAAoBsM,KAEjE,CACDjT,IAAK,qBACLoQ,MAAO,SAA4B6C,EAAStM,GAC1CmG,KAAKysD,uBAAuB,GAAGt2D,OAAO0D,EAAM,sBAAuBsM,KAEpE,CACDjT,IAAK,kBACLoQ,MAAO,SAAyB2mD,EAAQ9jD,EAAStM,GAC/CmG,KAAKysD,uBAAuB,GAAGt2D,OAAO6lD,EAAkBniD,GAAO,mBAAoBowD,EAAQ9jD,KAE5F,CACDjT,IAAK,qBACLoQ,MAAO,SAA4B2mD,EAAQ9jD,EAAStM,GAClDmG,KAAKysD,uBAAuB,GAAGt2D,OAAO6lD,EAAkBniD,GAAO,sBAAuBowD,EAAQ9jD,KAE/F,CACDjT,IAAK,yBACLoQ,MAAO,SAAgCi5C,GACrC,IAAIpU,EAAanoC,KAAKmoC,WAEtB,GAAqC,mBAA1BA,EAAWoU,GAA2B,CAC/C,IAAK,IAAI/nD,EAAOC,UAAUlB,OAAQumB,EAAO,IAAInlB,MAAMH,EAAO,EAAIA,EAAO,EAAI,GAAI+kC,EAAQ,EAAGA,EAAQ/kC,EAAM+kC,IACpGzf,EAAKyf,EAAQ,GAAK9kC,UAAU8kC,GAG9B4O,EAAWoU,GAAYxlD,MAAMoxC,EAAYruB,QAKxCkyC,EAtJkB,GAyJ3B,SAASU,EAAMj7D,GACb,OAGF,SAAgBA,EAAa4mC,GAC3B,IAAIs0B,EAAoBv0B,GAAO3mC,GAC3Bm7D,EAmBN,SAA6Bl7D,EAAW2mC,GACtC,OAAOw0B,GAAWx0B,GAAYriC,QAAO,SAAU42D,EAAkB15D,GAC/D,IAAIyS,EAUR,SAA+BjU,EAAW2mC,EAAYnlC,GACpD,IAAI45D,EAAsBl8D,OAAOiY,yBAAyBnX,EAAWwB,GAGrE,IAFsB45D,KAAuB,UAAWA,GAElC,CACpB,IAAInnD,EAAa/U,OAAOiY,yBAAyBwvB,EAAYnlC,GAAKoQ,MAOlE,OALIwpD,IACFnnD,EAAW5U,IAAM+7D,EAAoB/7D,KAAO4U,EAAW5U,IACvD4U,EAAWnS,IAAMs5D,EAAoBt5D,KAAOmS,EAAWnS,KAGlDmS,GAtBUonD,CAAsBr7D,EAAW2mC,EAAYnlC,GAM9D,OAJIyS,GACF/U,OAAOmT,OAAO6oD,EAAkBvT,EAAgB,GAAInmD,EAAKyS,IAGpDinD,IACN,IA5BoBI,CAAoBv7D,EAAYC,UAAW2mC,GAElE,OADAznC,OAAOwtB,iBAAiBuuC,EAAkBj7D,UAAWk7D,GAC9CD,EAPAM,CAAOx7D,EAUhB,SAA8BA,GAE5B,OADgBm3D,EAAiCn3D,EAAa,aAC7CuE,QAAO,SAAUk3D,EAAmBC,GACnD,IAAI90B,EAAa80B,EAAS17D,GAE1B,IAAK,IAAIyB,KAAOmlC,EAAY,CAC1B,IAAI1yB,EAAaunD,EAAkBh6D,IAAQ,GAC3Cg6D,EAAkBh6D,GAAOtC,OAAOmT,OAAO4B,EAAY0yB,EAAWnlC,IAGhE,OAAOg6D,IACN,IArBwBE,CAAqB37D,IAoDlD,IAAIo7D,GACyC,mBAAhCj8D,OAAOy8D,sBACT,SAAUvkD,GACf,MAAO,GAAG3S,OAAOoI,EAAmB3N,OAAO08D,oBAAoBxkD,IAAUvK,EAAmB3N,OAAOy8D,sBAAsBvkD,MAGpHlY,OAAO08D,oBAIdl1B,GAAS,WACX,SAASm1B,EAAkB97D,GACzB,SAAS+7D,IACP,OAAOjlD,QAAQgB,UAAU9X,EAAagD,UAAWuL,gBAAgBwtD,EAAWxtD,KAAKvO,iBAAc,GASjG,OANA+7D,EAAS97D,UAAYd,OAAO2Z,OAAO9Y,EAAYC,UAAW,CACxDD,YAAa,CACX6R,MAAOkqD,KAGXjlD,QAAQW,eAAeskD,EAAU/7D,GAC1B+7D,EAeT,IAEE,OATIzsC,EAAIwsC,GAJA,WACNvtD,KAAKtN,EAAE0B,KAAK4L,UAKZtO,UAAUgB,EAAI,aAET,IAAIquB,EAKJwsC,EACP,MAAOx2B,GACP,OAAO,SAAUtlC,GACf,OAAoB,SAAUg8D,GAC5BjjD,EAAUgjD,EAAUC,GAEpB,IAAIC,EAAUtkD,EAAaokD,GAE3B,SAASA,IAGP,OAFAtnD,EAAgBlG,KAAMwtD,GAEfE,EAAQ32D,MAAMiJ,KAAMvL,WAG7B,OAAO8kD,EAAaiU,GAXF,CAYlB/7D,IA7BN,IAKMsvB,EApBK,GAwDb,IAAI4sC,GAAsB,WACxB,SAASA,EAAOrT,EAAa0O,GAC3B9iD,EAAgBlG,KAAM2tD,GAEtB3tD,KAAKs6C,YAAcA,EACnBt6C,KAAKgpD,WAZT,SAAyBA,GACvB,MAAO,CACLpxB,WAAYoxB,EAAWpxB,WACvB6zB,sBAAuBiB,EAAM1D,EAAWyC,wBAStBmC,CAAgB5E,GAClChpD,KAAK6tD,gBAAkB,IAAI7uD,QAC3BgB,KAAK8tD,kBAAoB,IAAIvqB,IAiD/B,OA9CAgW,EAAaoU,EAAQ,CAAC,CACpBz6D,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKgpD,WAAWpxB,aAExB,CACD1kC,IAAK,wBACLnC,IAAK,WACH,OAAOiP,KAAKgpD,WAAWyC,wBAExB,CACDv4D,IAAK,WACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAK8tD,qBAExB,CACD56D,IAAK,yBACLoQ,MAAO,SAAgCk7C,GACrC,IAAIb,EAAU39C,KAAK+tD,qBAAqBvP,GACxCx+C,KAAK8tD,kBAAkB3mD,IAAIw2C,GAC3BA,EAAQjkB,YAET,CACDxmC,IAAK,4BACLoQ,MAAO,SAAmCk7C,GACxC,IAAIb,EAAU39C,KAAK6tD,gBAAgB98D,IAAIytD,GAEnCb,IACF39C,KAAK8tD,kBAAkBx6D,OAAOqqD,GAC9BA,EAAQvoB,gBAGX,CACDliC,IAAK,uBACLoQ,MAAO,SAA8Bk7C,GACnC,IAAIb,EAAU39C,KAAK6tD,gBAAgB98D,IAAIytD,GAOvC,OALKb,IACHA,EAAU,IAAIqO,EAAQhsD,KAAMw+C,GAC5Bx+C,KAAK6tD,gBAAgBr6D,IAAIgrD,EAAOb,IAG3BA,MAIJgQ,EAxDiB,GA2DtBK,GAAwB,WAC1B,SAASA,EAASxP,GAChBt4C,EAAgBlG,KAAMguD,GAEtBhuD,KAAKw+C,MAAQA,EAoCf,OAjCAjF,EAAayU,EAAU,CAAC,CACtB96D,IAAK,MACLoQ,MAAO,SAAazJ,GAClB,OAAOmG,KAAKwiB,KAAKqjB,IAAI7lC,KAAKiuD,WAAWp0D,MAEtC,CACD3G,IAAK,MACLoQ,MAAO,SAAazJ,GAClB,OAAOmG,KAAKkuD,OAAOr0D,GAAM,KAE1B,CACD3G,IAAK,SACLoQ,MAAO,SAAgBzJ,GACrB,IAAImrD,EAAchlD,KAAKwiB,KAAKzxB,IAAIiP,KAAKiuD,WAAWp0D,KAAU,GAC1D,OAAgBmrD,EAvuEPvpD,MAAM,YAAc,KAyuE9B,CACDvI,IAAK,mBACLoQ,MAAO,SAA0BzJ,GAC/B,OAAOmG,KAAKwiB,KAAK2rC,uBAAuBnuD,KAAKiuD,WAAWp0D,MAEzD,CACD3G,IAAK,aACLoQ,MAAO,SAAoBzJ,GACzB,MAAO,GAAG1D,OAAO0D,EAAM,YAExB,CACD3G,IAAK,OACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMh8B,SAIfwrC,EAxCmB,GA2CxBI,GAAuB,WACzB,SAASA,EAAQ5P,GACft4C,EAAgBlG,KAAMouD,GAEtBpuD,KAAKw+C,MAAQA,EAkDf,OA/CAjF,EAAa6U,EAAS,CAAC,CACrBl7D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM5mB,aAEnB,CACD1kC,IAAK,MACLoQ,MAAO,SAAapQ,GAClB,IAAI2G,EAAOmG,KAAKmuD,uBAAuBj7D,GACvC,OAAO8M,KAAKmG,QAAQsrB,aAAa53B,KAElC,CACD3G,IAAK,MACLoQ,MAAO,SAAapQ,EAAKoQ,GACvB,IAAIzJ,EAAOmG,KAAKmuD,uBAAuBj7D,GAEvC,OADA8M,KAAKmG,QAAQukB,aAAa7wB,EAAMyJ,GACzBtD,KAAKjP,IAAImC,KAEjB,CACDA,IAAK,MACLoQ,MAAO,SAAapQ,GAClB,IAAI2G,EAAOmG,KAAKmuD,uBAAuBj7D,GACvC,OAAO8M,KAAKmG,QAAQksB,aAAax4B,KAElC,CACD3G,IAAK,SACLoQ,MAAO,SAAiBpQ,GACtB,GAAI8M,KAAK6lC,IAAI3yC,GAAM,CACjB,IAAI2G,EAAOmG,KAAKmuD,uBAAuBj7D,GAEvC,OADA8M,KAAKmG,QAAQuN,gBAAgB7Z,IACtB,EAEP,OAAO,IAGV,CACD3G,IAAK,yBACLoQ,MAAO,SAAgCpQ,GACrC,MAAO,QAAQiD,OAAO6J,KAAK43B,WAAY,KAAKzhC,OAAO+lD,EAAUhpD,QAI1Dk7D,EAtDkB,GAyDvBC,GAAqB,WACvB,SAASA,EAAM17B,GACbzsB,EAAgBlG,KAAMquD,GAEtBruD,KAAKsuD,mBAAqB,IAAItvD,QAC9BgB,KAAK2yB,OAASA,EAoBhB,OAjBA4mB,EAAa8U,EAAO,CAAC,CACnBn7D,IAAK,OACLoQ,MAAO,SAAcwF,EAAQ5V,EAAKwkC,GAChC,IAAI62B,EAAavuD,KAAKsuD,mBAAmBv9D,IAAI+X,GAExCylD,IACHA,EAAa,IAAIhrB,IACjBvjC,KAAKsuD,mBAAmB96D,IAAIsV,EAAQylD,IAGjCA,EAAW1oB,IAAI3yC,KAClBq7D,EAAWpnD,IAAIjU,GACf8M,KAAK2yB,OAAO/P,KAAK8U,EAAS5uB,QAKzBulD,EAzBgB,GA4BzB,SAASG,GAA4BzO,EAAenkD,GAClD,MAAO,IAAIzF,OAAO4pD,EAAe,OAAQ5pD,OAAOyF,EAAO,MAGzD,IAAI6yD,GAAyB,WAC3B,SAASA,EAAUjQ,GACjBt4C,EAAgBlG,KAAMyuD,GAEtBzuD,KAAKw+C,MAAQA,EA4Gf,OAzGAjF,EAAakV,EAAW,CAAC,CACvBv7D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM5mB,aAEnB,CACD1kC,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMpC,SAEnB,CACDlpD,IAAK,MACLoQ,MAAO,SAAaorD,GAClB,OAAgC,MAAzB1uD,KAAK5M,KAAKs7D,KAElB,CACDx7D,IAAK,OACLoQ,MAAO,WAGL,IAFA,IAAIqrD,EAAU3uD,KAELs5B,EAAQ7kC,UAAUlB,OAAQq7D,EAAc,IAAIj6D,MAAM2kC,GAAQu1B,EAAQ,EAAGA,EAAQv1B,EAAOu1B,IAC3FD,EAAYC,GAASp6D,UAAUo6D,GAGjC,OAAOD,EAAY54D,QAAO,SAAUiK,EAAQyuD,GAC1C,OAAOzuD,GAAU0uD,EAAQG,WAAWJ,IAAeC,EAAQI,iBAAiBL,UAC3Ep5D,KAEJ,CACDpC,IAAK,UACLoQ,MAAO,WAGL,IAFA,IAAI0rD,EAAUhvD,KAELivD,EAAQx6D,UAAUlB,OAAQq7D,EAAc,IAAIj6D,MAAMs6D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAC3FN,EAAYM,GAASz6D,UAAUy6D,GAGjC,OAAON,EAAY54D,QAAO,SAAUm5D,EAAST,GAC3C,MAAO,GAAGv4D,OAAOoI,EAAmB4wD,GAAU5wD,EAAmBywD,EAAQI,eAAeV,IAAcnwD,EAAmBywD,EAAQK,qBAAqBX,OACrJ,MAEJ,CACDx7D,IAAK,aACLoQ,MAAO,SAAoBorD,GACzB,IAAIjuD,EAAWT,KAAKsvD,yBAAyBZ,GAC7C,OAAO1uD,KAAKw+C,MAAM+Q,YAAY9uD,KAE/B,CACDvN,IAAK,iBACLoQ,MAAO,SAAwBorD,GAC7B,IAAIjuD,EAAWT,KAAKsvD,yBAAyBZ,GAC7C,OAAO1uD,KAAKw+C,MAAMgR,gBAAgB/uD,KAEnC,CACDvN,IAAK,2BACLoQ,MAAO,SAAkCorD,GAEvC,OAAOF,GADaxuD,KAAKo8C,OAAOqT,wBAAwBzvD,KAAK43B,YACX82B,KAEnD,CACDx7D,IAAK,mBACLoQ,MAAO,SAA0BorD,GAC/B,IAAIjuD,EAAWT,KAAK0vD,+BAA+BhB,GACnD,OAAO1uD,KAAKvP,UAAUuP,KAAKw+C,MAAM+Q,YAAY9uD,GAAWiuD,KAEzD,CACDx7D,IAAK,uBACLoQ,MAAO,SAA8BorD,GACnC,IAAIiB,EAAU3vD,KAEVS,EAAWT,KAAK0vD,+BAA+BhB,GACnD,OAAO1uD,KAAKw+C,MAAMgR,gBAAgB/uD,GAAUpO,KAAI,SAAU8T,GACxD,OAAOwpD,EAAQl/D,UAAU0V,EAASuoD,QAGrC,CACDx7D,IAAK,iCACLoQ,MAAO,SAAwCorD,GAC7C,IAAIkB,EAAmB,GAAGz5D,OAAO6J,KAAK43B,WAAY,KAAKzhC,OAAOu4D,GAC9D,OAAOF,GAA4BxuD,KAAKo8C,OAAOyT,gBAAiBD,KAEjE,CACD18D,IAAK,YACLoQ,MAAO,SAAmB6C,EAASuoD,GACjC,GAAIvoD,EAAS,CACX,IAAIyxB,EAAa53B,KAAK43B,WAClBmoB,EAAgB//C,KAAKo8C,OAAOyT,gBAC5BC,EAAuB9vD,KAAKo8C,OAAOqT,wBAAwB73B,GAC/D53B,KAAK+vD,MAAMntC,KAAKzc,EAAS,UAAUhQ,OAAOu4D,GAAa,kBAAkBv4D,OAAO4pD,EAAe,MAAO5pD,OAAOyhC,EAAY,KAAKzhC,OAAOu4D,EAAY,WAAYv4D,OAAO25D,EAAsB,MAAO35D,OAAOu4D,EAAY,OAAU,OAAOv4D,OAAO4pD,EAAe,kFAG7P,OAAO55C,IAER,CACDjT,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMuR,UAIftB,EAhHoB,GAmHzBuB,GAAyB,WAC3B,SAASA,EAAUxR,EAAOyR,GACxB/pD,EAAgBlG,KAAMgwD,GAEtBhwD,KAAKw+C,MAAQA,EACbx+C,KAAKiwD,kBAAoBA,EA+F3B,OA5FA1W,EAAayW,EAAW,CAAC,CACvB98D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM5mB,aAEnB,CACD1kC,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMpC,SAEnB,CACDlpD,IAAK,MACLoQ,MAAO,SAAaqmD,GAClB,OAAgC,MAAzB3pD,KAAK5M,KAAKu2D,KAElB,CACDz2D,IAAK,OACLoQ,MAAO,WAGL,IAFA,IAAI4sD,EAAUlwD,KAELmwD,EAAQ17D,UAAUlB,OAAQ68D,EAAc,IAAIz7D,MAAMw7D,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IAC3FD,EAAYC,GAAS57D,UAAU47D,GAGjC,OAAOD,EAAYp6D,QAAO,SAAUi0D,EAAQN,GAC1C,OAAOM,GAAUiG,EAAQI,WAAW3G,UACnCr0D,KAEJ,CACDpC,IAAK,UACLoQ,MAAO,WAGL,IAFA,IAAIitD,EAAUvwD,KAELwwD,EAAQ/7D,UAAUlB,OAAQ68D,EAAc,IAAIz7D,MAAM67D,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAC3FL,EAAYK,GAASh8D,UAAUg8D,GAGjC,OAAOL,EAAYp6D,QAAO,SAAUo1D,EAASzB,GAC3C,MAAO,GAAGxzD,OAAOoI,EAAmB6sD,GAAU7sD,EAAmBgyD,EAAQG,eAAe/G,OACvF,MAEJ,CACDz2D,IAAK,2BACLoQ,MAAO,SAAkCqmD,GACvC,IAAI5J,EAAgB//C,KAAKo8C,OAAOuU,wBAAwB3wD,KAAK43B,WAAY+xB,GACzE,OAAO3pD,KAAKiwD,kBAAkBx+B,aAAasuB,KAE5C,CACD7sD,IAAK,aACLoQ,MAAO,SAAoBqmD,GACzB,IAAIlpD,EAAWT,KAAKqrD,yBAAyB1B,GAC7C,GAAIlpD,EAAU,OAAOT,KAAKuvD,YAAY9uD,EAAUkpD,KAEjD,CACDz2D,IAAK,iBACLoQ,MAAO,SAAwBqmD,GAC7B,IAAIlpD,EAAWT,KAAKqrD,yBAAyB1B,GAC7C,OAAOlpD,EAAWT,KAAKwvD,gBAAgB/uD,EAAUkpD,GAAc,KAEhE,CACDz2D,IAAK,cACLoQ,MAAO,SAAqB7C,EAAUkpD,GACpC,IAAIiH,EAAU5wD,KAGd,OADeA,KAAKw+C,MAAMqS,cAAcpwD,GACxBmY,QAAO,SAAUzS,GAC/B,OAAOyqD,EAAQE,eAAe3qD,EAAS1F,EAAUkpD,MAChD,KAEJ,CACDz2D,IAAK,kBACLoQ,MAAO,SAAyB7C,EAAUkpD,GACxC,IAAIoH,EAAU/wD,KAGd,OADeA,KAAKw+C,MAAMqS,cAAcpwD,GACxBmY,QAAO,SAAUzS,GAC/B,OAAO4qD,EAAQD,eAAe3qD,EAAS1F,EAAUkpD,QAGpD,CACDz2D,IAAK,iBACLoQ,MAAO,SAAwB6C,EAAS1F,EAAUkpD,GAChD,IAAIc,EAAsBtkD,EAAQsrB,aAAazxB,KAAKw+C,MAAMpC,OAAOqO,sBAAwB,GACzF,OAAOtkD,EAAQxF,QAAQF,IAAagqD,EAAoBr4D,MAAM,KAAKiB,SAASs2D,OAIzEqG,EApGoB,GAuGzBgB,GAAqB,WACvB,SAASA,EAAM5U,EAAQj2C,EAASyxB,EAAYjF,GAC1C,IAAIs+B,EAAUjxD,KAEdkG,EAAgBlG,KAAMgxD,GAEtBhxD,KAAKmvD,QAAU,IAAIV,GAAUzuD,MAC7BA,KAAKiH,QAAU,IAAI+mD,GAAShuD,MAC5BA,KAAKwiB,KAAO,IAAI4rC,GAAQpuD,MAExBA,KAAKy+C,gBAAkB,SAAUt4C,GAC/B,OAAOA,EAAQmsB,QAAQ2+B,EAAQC,sBAAwBD,EAAQ9qD,SAGjEnG,KAAKo8C,OAASA,EACdp8C,KAAKmG,QAAUA,EACfnG,KAAK43B,WAAaA,EAClB53B,KAAK+vD,MAAQ,IAAI1B,GAAM17B,GACvB3yB,KAAKorD,QAAU,IAAI4E,GAAUhwD,KAAKmxD,cAAehrD,GAmCnD,OAhCAozC,EAAayX,EAAO,CAAC,CACnB99D,IAAK,cACLoQ,MAAO,SAAqB7C,GAC1B,OAAOT,KAAKmG,QAAQxF,QAAQF,GAAYT,KAAKmG,QAAUnG,KAAK6wD,cAAcpwD,GAAUrN,KAAK4M,KAAKy+C,mBAE/F,CACDvrD,IAAK,kBACLoQ,MAAO,SAAyB7C,GAC9B,MAAO,GAAGtK,OAAOoI,EAAmByB,KAAKmG,QAAQxF,QAAQF,GAAY,CAACT,KAAKmG,SAAW,IAAK5H,EAAmByB,KAAK6wD,cAAcpwD,GAAUmY,OAAO5Y,KAAKy+C,qBAExJ,CACDvrD,IAAK,gBACLoQ,MAAO,SAAuB7C,GAC5B,OAAO9L,MAAMoD,KAAKiI,KAAKmG,QAAQ+G,iBAAiBzM,MAEjD,CACDvN,IAAK,qBACLnC,IAAK,WACH,OAAOy9D,GAA4BxuD,KAAKo8C,OAAOqO,oBAAqBzqD,KAAK43B,cAE1E,CACD1kC,IAAK,kBACLnC,IAAK,WACH,OAAOiP,KAAKmG,UAAYzJ,SAASqZ,kBAElC,CACD7iB,IAAK,gBACLnC,IAAK,WACH,OAAOiP,KAAKoxD,gBAAkBpxD,KAAO,IAAIgxD,EAAMhxD,KAAKo8C,OAAQ1/C,SAASqZ,gBAAiB/V,KAAK43B,WAAY53B,KAAK+vD,MAAMp9B,YAI/Gq+B,EArDgB,GAwDrBK,GAA6B,WAC/B,SAASA,EAAclrD,EAASi2C,EAAQ7f,GACtCr2B,EAAgBlG,KAAMqxD,GAEtBrxD,KAAKmG,QAAUA,EACfnG,KAAKo8C,OAASA,EACdp8C,KAAKu8B,SAAWA,EAChBv8B,KAAKgmD,kBAAoB,IAAId,EAAkBllD,KAAKmG,QAASnG,KAAKyqD,oBAAqBzqD,MACvFA,KAAKsxD,4BAA8B,IAAItyD,QACvCgB,KAAKuxD,qBAAuB,IAAIvyD,QAsElC,OAnEAu6C,EAAa8X,EAAe,CAAC,CAC3Bn+D,IAAK,QACLoQ,MAAO,WACLtD,KAAKgmD,kBAAkBp6C,UAExB,CACD1Y,IAAK,OACLoQ,MAAO,WACLtD,KAAKgmD,kBAAkBryB,SAExB,CACDzgC,IAAK,sBACLnC,IAAK,WACH,OAAOiP,KAAKo8C,OAAOqO,sBAEpB,CACDv3D,IAAK,qBACLoQ,MAAO,SAA4B1H,GACjC,IAAIuK,EAAUvK,EAAMuK,QAChByxB,EAAah8B,EAAM2L,QACnBiqD,EAAqBxxD,KAAKyxD,kCAAkCtrD,GAC5Dq4C,EAAQgT,EAAmBzgE,IAAI6mC,GAOnC,OALK4mB,IACHA,EAAQx+C,KAAKu8B,SAASm1B,mCAAmCvrD,EAASyxB,GAClE45B,EAAmBh+D,IAAIokC,EAAY4mB,IAG9BA,IAER,CACDtrD,IAAK,sBACLoQ,MAAO,SAA6B6C,EAAS7C,GAC3C,IAAIquD,GAAkB3xD,KAAKuxD,qBAAqBxgE,IAAIuS,IAAU,GAAK,EACnEtD,KAAKuxD,qBAAqB/9D,IAAI8P,EAAOquD,GAEf,GAAlBA,GACF3xD,KAAKu8B,SAASq1B,eAAetuD,KAGhC,CACDpQ,IAAK,wBACLoQ,MAAO,SAA+B6C,EAAS7C,GAC7C,IAAIquD,EAAiB3xD,KAAKuxD,qBAAqBxgE,IAAIuS,GAE/CquD,IACF3xD,KAAKuxD,qBAAqB/9D,IAAI8P,EAAOquD,EAAiB,GAEhC,GAAlBA,GACF3xD,KAAKu8B,SAASs1B,kBAAkBvuD,MAIrC,CACDpQ,IAAK,oCACLoQ,MAAO,SAA2C6C,GAChD,IAAIqrD,EAAqBxxD,KAAKsxD,4BAA4BvgE,IAAIoV,GAO9D,OALKqrD,IACHA,EAAqB,IAAI3+D,IACzBmN,KAAKsxD,4BAA4B99D,IAAI2S,EAASqrD,IAGzCA,MAIJH,EA/EwB,GAkF7BS,GAAsB,WACxB,SAASA,EAAOxX,GACdp0C,EAAgBlG,KAAM8xD,GAEtB9xD,KAAKs6C,YAAcA,EACnBt6C,KAAK+xD,cAAgB,IAAIV,GAAcrxD,KAAKmG,QAASnG,KAAKo8C,OAAQp8C,MAClEA,KAAKwxD,mBAAqB,IAAI5P,EAC9B5hD,KAAKgyD,oBAAsB,IAAIn/D,IA+HjC,OA5HA0mD,EAAauY,EAAQ,CAAC,CACpB5+D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAYn0C,UAEzB,CACDjT,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAY8B,SAEzB,CACDlpD,IAAK,SACLnC,IAAK,WACH,OAAOiP,KAAKs6C,YAAY3nB,SAEzB,CACDz/B,IAAK,sBACLnC,IAAK,WACH,OAAOiP,KAAKo8C,OAAOqO,sBAEpB,CACDv3D,IAAK,UACLnC,IAAK,WACH,OAAO4D,MAAMoD,KAAKiI,KAAKgyD,oBAAoB17C,YAE5C,CACDpjB,IAAK,WACLnC,IAAK,WACH,OAAOiP,KAAKwrD,QAAQx1D,QAAO,SAAU81D,EAAUx7D,GAC7C,OAAOw7D,EAAS31D,OAAO7F,EAAOw7D,YAC7B,MAEJ,CACD54D,IAAK,QACLoQ,MAAO,WACLtD,KAAK+xD,cAAcnmD,UAEpB,CACD1Y,IAAK,OACLoQ,MAAO,WACLtD,KAAK+xD,cAAcp+B,SAEpB,CACDzgC,IAAK,iBACLoQ,MAAO,SAAwB0lD,GAC7BhpD,KAAKiyD,iBAAiBjJ,EAAWpxB,YACjC,IAAItnC,EAAS,IAAIq9D,GAAO3tD,KAAKs6C,YAAa0O,GAC1ChpD,KAAKkyD,cAAc5hE,GACnB,IAAI6hE,EAAYnJ,EAAWyC,sBAAsB0G,UAE7CA,GACFA,EAAUnJ,EAAWpxB,WAAY53B,KAAKs6C,eAGzC,CACDpnD,IAAK,mBACLoQ,MAAO,SAA0Bs0B,GAC/B,IAAItnC,EAAS0P,KAAKgyD,oBAAoBjhE,IAAI6mC,GAEtCtnC,GACF0P,KAAKoyD,iBAAiB9hE,KAGzB,CACD4C,IAAK,oCACLoQ,MAAO,SAA2C6C,EAASyxB,GACzD,IAAItnC,EAAS0P,KAAKgyD,oBAAoBjhE,IAAI6mC,GAE1C,GAAItnC,EACF,OAAOA,EAAOw7D,SAAS14D,MAAK,SAAUuqD,GACpC,OAAOA,EAAQx3C,SAAWA,OAI/B,CACDjT,IAAK,cACLoQ,MAAO,SAAqByzB,EAAOW,EAASvoB,GAC1CnP,KAAKs6C,YAAYS,YAAYhkB,EAAOW,EAASvoB,KAE9C,CACDjc,IAAK,qCACLoQ,MAAO,SAA4C6C,EAASyxB,GAC1D,OAAO,IAAIo5B,GAAMhxD,KAAKo8C,OAAQj2C,EAASyxB,EAAY53B,KAAK2yB,UAEzD,CACDz/B,IAAK,iBACLoQ,MAAO,SAAwBk7C,GAC7Bx+C,KAAKwxD,mBAAmBrqD,IAAIq3C,EAAM5mB,WAAY4mB,GAC9C,IAAIluD,EAAS0P,KAAKgyD,oBAAoBjhE,IAAIytD,EAAM5mB,YAE5CtnC,GACFA,EAAO+hE,uBAAuB7T,KAGjC,CACDtrD,IAAK,oBACLoQ,MAAO,SAA2Bk7C,GAChCx+C,KAAKwxD,mBAAmBl+D,OAAOkrD,EAAM5mB,WAAY4mB,GACjD,IAAIluD,EAAS0P,KAAKgyD,oBAAoBjhE,IAAIytD,EAAM5mB,YAE5CtnC,GACFA,EAAOgiE,0BAA0B9T,KAGpC,CACDtrD,IAAK,gBACLoQ,MAAO,SAAuBhT,GAC5B0P,KAAKgyD,oBAAoBx+D,IAAIlD,EAAOsnC,WAAYtnC,GACnC0P,KAAKwxD,mBAAmBpN,gBAAgB9zD,EAAOsnC,YACrD5kC,SAAQ,SAAUwrD,GACvB,OAAOluD,EAAO+hE,uBAAuB7T,QAGxC,CACDtrD,IAAK,mBACLoQ,MAAO,SAA0BhT,GAC/B0P,KAAKgyD,oBAAoB1+D,OAAOhD,EAAOsnC,YAC1B53B,KAAKwxD,mBAAmBpN,gBAAgB9zD,EAAOsnC,YACrD5kC,SAAQ,SAAUwrD,GACvB,OAAOluD,EAAOgiE,0BAA0B9T,UAKvCsT,EAtIiB,GAyItBS,GAAgB,CAClB9H,oBAAqB,kBACrBxE,gBAAiB,cACjB4J,gBAAiB,cACjBJ,wBAAyB,SAAiC73B,GACxD,MAAO,QAAQzhC,OAAOyhC,EAAY,YAEpC+4B,wBAAyB,SAAiC/4B,EAAYqyB,GACpE,MAAO,QAAQ9zD,OAAOyhC,EAAY,KAAKzhC,OAAO8zD,EAAQ,YAExDlN,YAAansD,OAAOmT,OAAOnT,OAAOmT,OAAO,CACvCyuD,MAAO,QACPC,IAAK,MACLC,IAAK,SACLC,MAAO,IACPC,GAAI,UACJC,KAAM,YACNn+C,KAAM,YACNI,MAAO,aACPg+C,KAAM,OACNl2C,IAAK,OACJm2C,GAAkB,6BAA6B3gE,MAAM,IAAIC,KAAI,SAAUS,GACxE,MAAO,CAACA,EAAGA,QACPigE,GAAkB,aAAa3gE,MAAM,IAAIC,KAAI,SAAUL,GAC3D,MAAO,CAACA,EAAGA,SAIf,SAAS+gE,GAAkBhtB,GACzB,OAAOA,EAAM/vC,QAAO,SAAUg9D,EAAMC,GAClC,IAAIC,EAAStrD,EAAeqrD,EAAQ,GAChCE,EAAID,EAAO,GACXppC,EAAIopC,EAAO,GAEf,OAAOtiE,OAAOmT,OAAOnT,OAAOmT,OAAO,GAAIivD,GAAO3Z,EAAgB,GAAI8Z,EAAGrpC,MACpE,IAGL,IAAIspC,GAA2B,WAC7B,SAASA,IACP,IAAIC,EAAUrzD,KAEVmG,EAAU1R,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAKiI,SAASqZ,gBACvFqmC,EAAS3nD,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK89D,GAEjFrsD,EAAgBlG,KAAMozD,GAEtBpzD,KAAK2yB,OAAShQ,QACd3iB,KAAKszD,OAAQ,EAEbtzD,KAAKs+C,iBAAmB,SAAU1mB,EAAYs0B,GAC5C,IAAI/8C,EAAS1a,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAE7E4+D,EAAQC,OACVD,EAAQE,oBAAoB37B,EAAYs0B,EAAc/8C,IAI1DnP,KAAKmG,QAAUA,EACfnG,KAAKo8C,OAASA,EACdp8C,KAAKosD,WAAa,IAAI/R,EAAWr6C,MACjCA,KAAKurD,OAAS,IAAIuG,GAAO9xD,MACzBA,KAAK+9C,wBAA0BntD,OAAOmT,OAAO,GAAIw3C,GAK1C,IAtvGgBl/C,EAuvGjBm3D,EAwHR,OA3HAja,EAAa6Z,EAAa,CAAC,CACzBlgE,IAAK,QACLoQ,OAtvGuBjH,EAuvGwB,IAAoBo3D,MAAK,SAASC,IAC7E,OAAO,IAAoBzqB,MAAK,SAAkB0qB,GAChD,OACE,OAAQA,EAASC,KAAOD,EAASv9D,MAC/B,KAAK,EAEH,OADAu9D,EAASv9D,KAAO,EAuHvB,IAAImkB,SAAQ,SAAUE,GACA,WAAvB/d,SAAS46B,WACX56B,SAAS3I,iBAAiB,oBAAoB,WAC5C,OAAO0mB,OAGTA,OA1HQ,KAAK,EACHza,KAAKs+C,iBAAiB,cAAe,YACrCt+C,KAAKosD,WAAWxgD,QAChB5L,KAAKurD,OAAO3/C,QACZ5L,KAAKs+C,iBAAiB,cAAe,SAEvC,KAAK,EACL,IAAK,MACH,OAAOqV,EAAShgC,UAGrB+/B,EAAS1zD,SAnBVwzD,EAvvG8B,WAAc,IAAIxpD,EAAOhK,KAAM8Z,EAAOrlB,UAAW,OAAO,IAAI8lB,SAAQ,SAAUE,EAASwd,GAAU,IAAI+L,EAAM3nC,EAAGtF,MAAMiT,EAAM8P,GAAO,SAASm/B,EAAM31C,GAAS01C,EAAmBhV,EAAKvpB,EAASwd,EAAQghB,EAAOC,EAAQ,OAAQ51C,GAAU,SAAS41C,EAAO9wC,GAAO4wC,EAAmBhV,EAAKvpB,EAASwd,EAAQghB,EAAOC,EAAQ,QAAS9wC,GAAQ6wC,OAAM3jD,OA6wG3W,WACE,OAAOk+D,EAAOz8D,MAAMiJ,KAAMvL,cAK7B,CACDvB,IAAK,OACLoQ,MAAO,WACLtD,KAAKs+C,iBAAiB,cAAe,YACrCt+C,KAAKosD,WAAWz4B,OAChB3zB,KAAKurD,OAAO53B,OACZ3zB,KAAKs+C,iBAAiB,cAAe,UAEtC,CACDprD,IAAK,WACLoQ,MAAO,SAAkBs0B,EAAY6zB,GACnCzrD,KAAK6zD,KAAK,CACRj8B,WAAYA,EACZ6zB,sBAAuBA,MAG1B,CACDv4D,IAAK,uBACLoQ,MAAO,SAA8BzJ,EAAM+e,GACzC5Y,KAAK+9C,wBAAwBlkD,GAAQ+e,IAEtC,CACD1lB,IAAK,OACLoQ,MAAO,SAAcw2B,GAGnB,IAFA,IAAIg6B,EAAU9zD,KAEL+zD,EAAQt/D,UAAUlB,OAAQ+M,EAAO,IAAI3L,MAAMo/D,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG1zD,EAAK0zD,EAAQ,GAAKv/D,UAAUu/D,GAG9B,IAAIC,EAAct/D,MAAMsJ,QAAQ67B,GAAQA,EAAO,CAACA,GAAM3jC,OAAOmK,GAC7D2zD,EAAYjhE,SAAQ,SAAUg2D,GACxBA,EAAWyC,sBAAsByI,YACnCJ,EAAQvI,OAAO4I,eAAenL,QAInC,CACD91D,IAAK,SACLoQ,MAAO,SAAgBw2B,GAGrB,IAFA,IAAIs6B,EAAUp0D,KAELq0D,EAAQ5/D,UAAUlB,OAAQ+M,EAAO,IAAI3L,MAAM0/D,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGh0D,EAAKg0D,EAAQ,GAAK7/D,UAAU6/D,GAG9B,IAAI1I,EAAcj3D,MAAMsJ,QAAQ67B,GAAQA,EAAO,CAACA,GAAM3jC,OAAOmK,GAC7DsrD,EAAY54D,SAAQ,SAAU4kC,GAC5B,OAAOw8B,EAAQ7I,OAAO0G,iBAAiBr6B,QAG1C,CACD1kC,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAKurD,OAAOO,SAASz5D,KAAI,SAAUsrD,GACxC,OAAOA,EAAQxV,gBAGlB,CACDj1C,IAAK,uCACLoQ,MAAO,SAA8C6C,EAASyxB,GAC5D,IAAI+lB,EAAU39C,KAAKurD,OAAOgJ,kCAAkCpuD,EAASyxB,GACrE,OAAO+lB,EAAUA,EAAQxV,WAAa,OAEvC,CACDj1C,IAAK,cACLoQ,MAAO,SAAqByzB,EAAOW,EAASvoB,GAC1C,IAAIg5C,EAEJnoD,KAAK2yB,OAAOoE,MAAM,iBAAkBW,EAASX,EAAO5nB,GAC1B,QAAzBg5C,EAAKp2C,OAAOs5B,eAA4B,IAAP8c,GAAyBA,EAAG/zD,KAAK2d,OAAQ2lB,EAAS,GAAI,EAAG,EAAGX,KAE/F,CACD7jC,IAAK,sBACLoQ,MAAO,SAA6Bs0B,EAAYs0B,GAC9C,IAAI/8C,EAAS1a,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GACjF0a,EAASve,OAAOmT,OAAO,CACrBu2C,YAAat6C,MACZmP,GACHnP,KAAK2yB,OAAO6hC,eAAe,GAAGr+D,OAAOyhC,EAAY,MAAMzhC,OAAO+1D,IAC9DlsD,KAAK2yB,OAAOE,IAAI,WAAYjiC,OAAOmT,OAAO,GAAIoL,IAC9CnP,KAAK2yB,OAAO8hC,cAEZ,CAAC,CACHvhE,IAAK,QACLoQ,MAAO,SAAe6C,EAASi2C,GAC7B,IAAI9B,EAAc,IAAIt6C,KAAKmG,EAASi2C,GAEpC,OADA9B,EAAY1uC,QACL0uC,MAIJ8Y,EAtJsB,GAgW/B,SAASsB,GAAyBC,EAAQxsB,GACxC,IAiFgDysB,EAC5C1hE,EACAgc,EAnFA2lD,EAASjtD,EAAe+sD,EAAQ,GAChC/4D,EAAQi5D,EAAO,GACfC,EAAiBD,EAAO,GAE5B,OA8EI3hE,EAAM,GAAGiD,OAAO+lD,GAD4B0Y,EA7EA,CAC9CzsB,WAAYA,EACZvsC,MAAOA,EACPk5D,eAAgBA,IA2EoBl5D,OAAQ,UAC1CsT,EAxBN,SAAkC0lD,GAChC,IAAIG,EAdN,SAA8BH,GAC5B,IAAIG,EAAiBC,GAAuBJ,EAAQK,WAAW/lD,MAC/D,GAAK6lD,EAAL,CACA,IAAIG,EAAmBC,GAAsBP,EAAQK,WAAWG,SAEhE,GAAIL,IAAmBG,EAAkB,CACvC,IAAIG,EAAeT,EAAQzsB,WAAa,GAAGhyC,OAAOy+D,EAAQzsB,WAAY,KAAKhyC,OAAOy+D,EAAQh5D,OAASg5D,EAAQh5D,MAC3G,MAAM,IAAIN,MAAM,uDAAwDnF,OAAOk/D,EAAc,mCAAqCl/D,OAAO4+D,EAAgB,sCAAwC5+D,OAAOy+D,EAAQK,WAAWG,QAAS,kBAAoBj/D,OAAO++D,EAAkB,OAGnR,OAAOH,GAIcO,CAAqB,CACxCntB,WAAYysB,EAAQzsB,WACpBvsC,MAAOg5D,EAAQh5D,MACfq5D,WAAYL,EAAQE,iBAElBS,EAAuBJ,GAAsBP,EAAQE,gBACrDU,EAAmBR,GAAuBJ,EAAQE,gBAClD5lD,EAAO6lD,GAAkBQ,GAAwBC,EACrD,GAAItmD,EAAM,OAAOA,EACjB,IAAImmD,EAAeT,EAAQzsB,WAAa,GAAGhyC,OAAOy+D,EAAQzsB,WAAY,KAAKhyC,OAAOy+D,EAAQE,gBAAkBF,EAAQh5D,MACpH,MAAM,IAAIN,MAAM,uBAAwBnF,OAAOk/D,EAAc,WAAal/D,OAAOy+D,EAAQh5D,MAAO,YAarF65D,CAAyBb,GAC7B,CACL1lD,KAAMA,EACNhc,IAAKA,EACL2G,KAAMgiD,EAAS3oD,GAEX4zD,mBACF,OAjBN,SAAmCgO,GACjC,IAAIY,EAAWV,GAAuBF,GACtC,GAAIY,EAAU,OAAOC,GAAoBD,GACzC,IAAI5O,EAAegO,EAAeM,QAClC,YAAqB9/D,IAAjBwxD,EAAmCA,EAChCgO,EAYIc,CAA0BhB,EAAQE,iBAGvCe,4BACF,YAAyDvgE,IAAlD6/D,GAAsBP,EAAQE,iBAGvCtN,OAAQsO,GAAQ5mD,GAChB23C,OAAQkP,GAAQ7mD,IAAS6mD,GAAQX,SAvFrC,SAASJ,GAAuBU,GAC9B,OAAQA,GACN,KAAK/gE,MACH,MAAO,QAET,KAAK+U,QACH,MAAO,UAET,KAAKzE,OACH,MAAO,SAET,KAAKrU,OACH,MAAO,SAET,KAAKuU,OACH,MAAO,UAIb,SAASgwD,GAAsBrO,GAC7B,OAAQz1D,EAAQy1D,IACd,IAAK,UACH,MAAO,UAET,IAAK,SACH,MAAO,SAET,IAAK,SACH,MAAO,SAGX,OAAInyD,MAAMsJ,QAAQ6oD,GAAsB,QACa,oBAAjDl2D,OAAOc,UAAUwJ,SAAS9G,KAAK0yD,GAA4C,cAA/E,EA2DF,IAAI6O,GAAsB,CACpB5vB,YACF,MAAO,IAGTiwB,SAAS,EACTvhC,OAAQ,EAEJ3rB,aACF,MAAO,IAGT67B,OAAQ,IAENmxB,GAAU,CACZ/vB,MAAO,SAAeziC,GACpB,IAAIyiC,EAAQxP,KAAKplC,MAAMmS,GAEvB,IAAK3O,MAAMsJ,QAAQ8nC,GACjB,MAAM,IAAI1nC,UAAU,yDAA4DlI,OAAOmN,EAAO,eAAiBnN,OAAOg/D,GAAsBpvB,GAAQ,MAGtJ,OAAOA,GAETiwB,QAAS,SAAiB1yD,GACxB,QAAkB,KAATA,GAA+C,SAA/B6B,OAAO7B,GAAO3J,gBAEzC86B,OAAQ,SAAgBnxB,GACtB,OAAO2B,OAAO3B,IAEhBwF,OAAQ,SAAgBxF,GACtB,IAAIwF,EAASytB,KAAKplC,MAAMmS,GAExB,GAAe,OAAXwF,GAAsC,UAAnBzX,EAAQyX,IAAuBnU,MAAMsJ,QAAQ6K,GAClE,MAAM,IAAIzK,UAAU,0DAA6DlI,OAAOmN,EAAO,eAAiBnN,OAAOg/D,GAAsBrsD,GAAS,MAGxJ,OAAOA,GAET67B,OAAQ,SAAgBrhC,GACtB,OAAOA,IAGPyyD,GAAU,CACZX,QASF,SAAqB9xD,GACnB,MAAO,GAAGnN,OAAOmN,IATjByiC,MAAOkwB,GACPntD,OAAQmtD,IAGV,SAASA,GAAU3yD,GACjB,OAAOizB,KAAKrlC,UAAUoS,GAOxB,IAAIwzC,GAA0B,WAC5B,SAASA,EAAW6G,GAClBz3C,EAAgBlG,KAAM82C,GAEtB92C,KAAK29C,QAAUA,EAwFjB,OArFApE,EAAazC,EAAY,CAAC,CACxB5jD,IAAK,cACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQrD,cAErB,CACDpnD,IAAK,QACLnC,IAAK,WACH,OAAOiP,KAAK29C,QAAQa,QAErB,CACDtrD,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMr4C,UAEnB,CACDjT,IAAK,aACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM5mB,aAEnB,CACD1kC,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM2Q,UAEnB,CACDj8D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAM4M,UAEnB,CACDl4D,IAAK,UACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMv3C,UAEnB,CACD/T,IAAK,OACLnC,IAAK,WACH,OAAOiP,KAAKw+C,MAAMh8B,OAEnB,CACDtvB,IAAK,aACLoQ,MAAO,cACN,CACDpQ,IAAK,UACLoQ,MAAO,cACN,CACDpQ,IAAK,aACLoQ,MAAO,cACN,CACDpQ,IAAK,WACLoQ,MAAO,SAAkBi0B,GACvB,IAAI2+B,EAASzhE,UAAUlB,OAAS,QAAsB+B,IAAjBb,UAAU,GAAmBA,UAAU,GAAK,GAC7E0hE,EAAgBD,EAAOj2D,OACvBA,OAA2B,IAAlBk2D,EAA2Bn2D,KAAKmG,QAAUgwD,EACnDC,EAAgBF,EAAO/mD,OACvBA,OAA2B,IAAlBinD,EAA2B,GAAKA,EACzCC,EAAgBH,EAAOpyC,OACvBA,OAA2B,IAAlBuyC,EAA2Br2D,KAAK43B,WAAay+B,EACtDC,EAAiBJ,EAAO9kC,QACxBA,OAA6B,IAAnBklC,GAAmCA,EAC7CC,EAAoBL,EAAO/5B,WAC3BA,OAAmC,IAAtBo6B,GAAsCA,EAEnDrnD,EAAO4U,EAAS,GAAG3tB,OAAO2tB,EAAQ,KAAK3tB,OAAOohC,GAAaA,EAC3DzjC,EAAQ,IAAIwb,YAAYJ,EAAM,CAChCC,OAAQA,EACRiiB,QAASA,EACT+K,WAAYA,IAGd,OADAl8B,EAAOoP,cAAcvb,GACdA,KAEP,CAAC,CACHZ,IAAK,aACLnC,IAAK,WACH,OAAO,IAER,CACDmC,IAAK,YACLoQ,MAAO,SAAmBkzD,EAAaC,QAKlC3f,EA5FqB,GA+F9BA,GAAW4f,UAAY,CA1bvB,SAAiCjlE,GAE/B,OADcm3D,EAAiCn3D,EAAa,WAC7CuE,QAAO,SAAUqiC,EAAYs+B,GAC1C,OAAO/lE,OAAOmT,OAAOs0B,GAOHghB,EAAbud,EAAS,GAA4B,GAAGzgE,OAHXjD,EAJ4ByjE,EAOL,SAAU,CACnE5lE,IAAK,WACH,IAAIkW,EAAUjH,KAAKiH,QAEnB,GAAIA,EAAQ4+B,IAAI3yC,GACd,OAAO+T,EAAQlW,IAAImC,GAEnB,IAAIuwD,EAAYx8C,EAAQ4vD,iBAAiB3jE,GACzC,MAAM,IAAIoI,MAAM,sBAAuBnF,OAAOstD,EAAW,SAG3DpK,EAAgBud,EAAQ,GAAGzgE,OAAOjD,EAAK,WAAY,CACrDnC,IAAK,WACH,OAAOiP,KAAKiH,QAAQinD,OAAOh7D,MAE3BmmD,EAAgBud,EAAQ,MAAMzgE,OAAO8lD,EAAW/oD,GAAM,SAAU,CAClEnC,IAAK,WACH,OAAOiP,KAAKiH,QAAQ4+B,IAAI3yC,MAExB0jE,IAtBN,IAAsC1jE,EAChC0jE,IAJD,KAkGL,SAAkCnlE,GAEhC,OADcm3D,EAAiCn3D,EAAa,WAC7CuE,QAAO,SAAUqiC,EAAYy+B,GAC1C,OAAOlmE,OAAOmT,OAAOs0B,GAOHghB,EAAb0d,EAAS,GAA4B,GAAG5gE,OAHV0D,EAJ4Bi9D,EAOL,UAAW,CACrE/lE,IAAK,WACH,IAAIkP,EAASD,KAAKmvD,QAAQ/7D,KAAKyG,GAE/B,GAAIoG,EACF,OAAOA,EAEP,MAAM,IAAI3E,MAAM,2BAA4BnF,OAAO0D,EAAM,WAAa1D,OAAO6J,KAAK43B,WAAY,oBAGhGyhB,EAAgB0d,EAAQ,GAAG5gE,OAAO0D,EAAM,WAAY,CACtD9I,IAAK,WACH,OAAOiP,KAAKmvD,QAAQ/1B,QAAQv/B,MAE5Bw/C,EAAgB0d,EAAQ,MAAM5gE,OAAO8lD,EAAWpiD,GAAO,UAAW,CACpE9I,IAAK,WACH,OAAOiP,KAAKmvD,QAAQtpB,IAAIhsC,MAExBk9D,IArBN,IAAuCl9D,EACjCk9D,IAJD,KA2BL,SAAiCtlE,GAC/B,IAAIulE,EAAuB9N,EAAiCz3D,EAAa,UACrEwlE,EAAwB,CAC1BxQ,mBAAoB,CAClB11D,IAAK,WACH,IAAImmE,EAAUl3D,KAEd,OAAOg3D,EAAqBhhE,QAAO,SAAU8Q,EAAQqwD,GACnD,IAAIC,EAAkB1C,GAAyByC,EAAqBD,EAAQt/B,YAExEmoB,EAAgBmX,EAAQ10C,KAAK2rC,uBAAuBiJ,EAAgBlkE,KAExE,OAAOtC,OAAOmT,OAAO+C,EAAQuyC,EAAgB,GAAI0G,EAAeqX,MAC/D,OAIT,OAAOJ,EAAqBhhE,QAAO,SAAUqiC,EAAY8+B,GACvD,OAAOvmE,OAAOmT,OAAOs0B,EAIzB,SAA0C8+B,EAAqBhvB,GAC7D,IAAIkvB,EAEArO,EAAa0L,GAAyByC,EAAqBhvB,GAC3Dj1C,EAAM81D,EAAW91D,IACjB2G,EAAOmvD,EAAWnvD,KAClB+6C,EAAOoU,EAAWxB,OAClBzS,EAAQiU,EAAWnC,OACvB,OAAoBxN,EAAbge,EAAS,GAA4Bx9D,EAAM,CAChD9I,IAAK,WACH,IAAIuS,EAAQtD,KAAKwiB,KAAKzxB,IAAImC,GAE1B,OAAc,OAAVoQ,EACKsxC,EAAKtxC,GAEL0lD,EAAWlC,cAGtBtzD,IAAK,SAAa8P,QACFhO,IAAVgO,EACFtD,KAAKwiB,KAAKlvB,OAAOJ,GAEjB8M,KAAKwiB,KAAKhvB,IAAIN,EAAK6hD,EAAMzxC,OAG3B+1C,EAAgBge,EAAQ,MAAMlhE,OAAO8lD,EAAWpiD,IAAQ,CAC1D9I,IAAK,WACH,OAAOiP,KAAKwiB,KAAKqjB,IAAI3yC,IAAQ81D,EAAW6M,yBAExCwB,EAjC+BC,CAAiCH,MACjEF,IAxHL,SAAkCxlE,GAEhC,OADcm3D,EAAiCn3D,EAAa,WAC7CuE,QAAO,SAAUqiC,EAAYk/B,GAC1C,OAAO3mE,OAAOmT,OAAOs0B,GAOnBm/B,EAAgBxb,EAHiBniD,EAJ4B09D,GAQ7Cle,EAAboe,EAAS,GAA4B,GAAGthE,OAAOqhE,EAAe,UAAW,CAC9EzmE,IAAK,WACH,IAAIk5D,EAASjqD,KAAKorD,QAAQh4D,KAAKyG,GAE/B,GAAIowD,EAAQ,CACV,IAAIyN,EAAmB13D,KAAKs6C,YAAYyR,qCAAqC9B,EAAQpwD,GAErF,GAAI69D,EACF,OAAOA,EAEP,MAAM,IAAIp8D,MAAM,4BAA6BnF,OAAO0D,EAAM,uCAAyC1D,OAAO6J,KAAK43B,WAAY,iBAI/H,MAAM,IAAIt8B,MAAM,2BAA4BnF,OAAO0D,EAAM,WAAa1D,OAAO6J,KAAK43B,WAAY,oBAE9FyhB,EAAgBoe,EAAQ,GAAGthE,OAAOqhE,EAAe,WAAY,CAC/DzmE,IAAK,WACH,IAAI4mE,EAAU33D,KAEVorD,EAAUprD,KAAKorD,QAAQhyB,QAAQv/B,GAEnC,OAAIuxD,EAAQ73D,OAAS,EACZ63D,EAAQ/4D,KAAI,SAAU43D,GAC3B,IAAI9hB,EAAawvB,EAAQrd,YAAYyR,qCAAqC9B,EAAQpwD,GAElF,GAAIsuC,EACF,OAAOA,EAEPxlB,QAAQC,KAAK,iEAAkEzsB,OAAO0D,EAAM,WAAa1D,OAAOwhE,EAAQ//B,WAAY,KAAOqyB,MAE5IrxC,QAAO,SAAUuvB,GAClB,OAAOA,KAIJ,MAEPkR,EAAgBoe,EAAQ,GAAGthE,OAAOqhE,EAAe,iBAAkB,CACrEzmE,IAAK,WACH,IAAIk5D,EAASjqD,KAAKorD,QAAQh4D,KAAKyG,GAE/B,GAAIowD,EACF,OAAOA,EAEP,MAAM,IAAI3uD,MAAM,2BAA4BnF,OAAO0D,EAAM,WAAa1D,OAAO6J,KAAK43B,WAAY,oBAGhGyhB,EAAgBoe,EAAQ,GAAGthE,OAAOqhE,EAAe,kBAAmB,CACtEzmE,IAAK,WACH,OAAOiP,KAAKorD,QAAQhyB,QAAQv/B,MAE5Bw/C,EAAgBoe,EAAQ,MAAMthE,OAAO8lD,EAAWub,GAAgB,UAAW,CAC7EzmE,IAAK,WACH,OAAOiP,KAAKorD,QAAQvlB,IAAIhsC,MAExB49D,IA5DN,IAAuC59D,EACjC49D,EAEAD,IAND,MAuZL1gB,GAAWqY,QAAU,GACrBrY,GAAWsU,QAAU,GACrBtU,GAAWxgC,OAAS,I,iCC/zHpB,SAASjlB,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAIsmE,EAAiB,EAAQ,KAEzBC,EAAQ,EAAQ,KAEhBzmE,EAAU,EAAQ,KAElBy0C,EAAMj1C,OAAOc,UAAUyC,eACvB2jE,EAAwB,CAC1BC,SAAU,SAAkBj0C,GAC1B,OAAOA,EAAS,MAElBk0C,MAAO,QACPC,QAAS,SAAiBn0C,EAAQ5wB,GAChC,OAAO4wB,EAAS,IAAM5wB,EAAM,KAE9ByC,OAAQ,SAAgBmuB,GACtB,OAAOA,IAGP7lB,EAAUtJ,MAAMsJ,QAChB7L,EAAQ+S,OAAOzT,UAAUU,MACzB0C,EAAOH,MAAMjD,UAAUoD,KAEvBojE,EAAc,SAAqB5jE,EAAK6jE,GAC1CrjE,EAAKiC,MAAMzC,EAAK2J,EAAQk6D,GAAgBA,EAAe,CAACA,KAGtDC,EAAQ3hE,KAAK/E,UAAU2mE,YACvBt1D,EAAgB3R,EAAiB,QACjCknE,EAAW,CACbC,gBAAgB,EAChBC,WAAW,EACX5xB,QAAS,QACT6xB,iBAAiB,EACjBC,UAAW,IACX3xB,QAAQ,EACR4xB,QAASd,EAAM9wB,OACf6xB,kBAAkB,EAClBv9D,OAAQ0H,EACR3G,UAAWhL,EAAQs0C,WAAW3iC,GAE9Bk1D,SAAS,EACTY,cAAe,SAAuB5hE,GACpC,OAAOmhE,EAAMhkE,KAAK6C,IAEpB6hE,WAAW,EACXC,oBAAoB,GAOlBC,EAAW,GAEX9nE,EAAY,SAASA,EAAU4X,EAAQgb,EAAQm1C,EAAqBF,EAAoBD,EAAWH,EAAS//C,EAAQkI,EAAM03C,EAAWK,EAAex9D,EAAQe,EAAWw8D,EAAkBhyB,EAASsyB,GAMpM,IALA,IAPyDpvC,EAOrDx4B,EAAMwX,EACNqwD,EAAQD,EACRnqD,EAAO,EACPqqD,GAAW,OAE0B,KAAjCD,EAAQA,EAAMpoE,IAAIioE,MAAkCI,GAAU,CAEpE,IAAIC,EAAMF,EAAMpoE,IAAI+X,GAGpB,GAFAiG,GAAQ,EAEW,qBAARsqD,EAAqB,CAC9B,GAAIA,IAAQtqD,EACV,MAAM,IAAIu0B,WAAW,uBAErB81B,GAAW,EAIoB,qBAAxBD,EAAMpoE,IAAIioE,KACnBjqD,EAAO,GAkBX,GAdsB,oBAAX6J,EACTtnB,EAAMsnB,EAAOkL,EAAQxyB,GACZA,aAAemF,KACxBnF,EAAMunE,EAAcvnE,GACa,UAAxB2nE,GAAmCh7D,EAAQ3M,KACpDA,EAAMumE,EAAMrwB,SAASl2C,GAAK,SAAUgS,GAClC,OAAIA,aAAiB7M,KACZoiE,EAAcv1D,GAGhBA,MAIC,OAARhS,EAAc,CAChB,GAAIynE,EACF,OAAOJ,IAAYC,EAAmBD,EAAQ70C,EAAQw0C,EAASK,QAAS/xB,EAAS,MAAOvrC,GAAUyoB,EAGpGxyB,EAAM,GAGR,GAnDoB,kBADqCw4B,EAoD/Bx4B,IAnDmB,kBAANw4B,GAA+B,mBAANA,GAAkC,WAAfz4B,EAAQy4B,IAAgC,kBAANA,GAmDnF+tC,EAAMvwB,SAASh2C,GAAM,CACrD,GAAIqnE,EAAS,CACX,IAAIW,EAAWV,EAAmB90C,EAAS60C,EAAQ70C,EAAQw0C,EAASK,QAAS/xB,EAAS,MAAOvrC,GAE7F,GAA4B,UAAxB49D,GAAmCL,EAAkB,CAIvD,IAHA,IAAIW,EAAcnnE,EAAMgC,KAAK+Q,OAAO7T,GAAM,KACtCkoE,EAAe,GAEVvoE,EAAI,EAAGA,EAAIsoE,EAAYhmE,SAAUtC,EACxCuoE,IAAuB,IAANvoE,EAAU,GAAK,KAAOmL,EAAUu8D,EAAQY,EAAYtoE,GAAIqnE,EAASK,QAAS/xB,EAAS,QAASvrC,IAG/G,MAAO,CAACe,EAAUk9D,GAAY,IAAME,GAGtC,MAAO,CAACp9D,EAAUk9D,GAAY,IAAMl9D,EAAUu8D,EAAQrnE,EAAKgnE,EAASK,QAAS/xB,EAAS,QAASvrC,KAGjG,MAAO,CAACe,EAAU0nB,GAAU,IAAM1nB,EAAU+I,OAAO7T,KAGrD,IAMImoE,EANAnjD,EAAS,GAEb,GAAmB,qBAARhlB,EACT,OAAOglB,EAKT,GAA4B,UAAxB2iD,GAAmCh7D,EAAQ3M,GAE7CmoE,EAAU,CAAC,CACTn2D,MAAOhS,EAAIiC,OAAS,EAAIjC,EAAIinB,KAAK,MAAQ,UAAO,SAE7C,GAAIta,EAAQ2a,GACjB6gD,EAAU7gD,MACL,CACL,IAAIjmB,EAAO/B,OAAO+B,KAAKrB,GACvBmoE,EAAU34C,EAAOnuB,EAAKmuB,KAAKA,GAAQnuB,EAGrC,IAAK,IAAI4zC,EAAI,EAAGA,EAAIkzB,EAAQlmE,SAAUgzC,EAAG,CACvC,IAAIrzC,EAAMumE,EAAQlzB,GACdjjC,EAAyB,WAAjBjS,EAAQ6B,IAA0C,qBAAdA,EAAIoQ,MAAwBpQ,EAAIoQ,MAAQhS,EAAI4B,GAE5F,IAAI4lE,GAAuB,OAAVx1D,EAAjB,CAIA,IAAIo2D,EAAYz7D,EAAQ3M,GAAsC,oBAAxB2nE,EAAqCA,EAAoBn1C,EAAQ5wB,GAAO4wB,EAASA,GAAU00C,EAAY,IAAMtlE,EAAM,IAAMA,EAAM,KACrKgmE,EAAY1lE,IAAIsV,EAAQiG,GACxB,IAAI4qD,EAAmB/B,IACvB+B,EAAiBnmE,IAAIwlE,EAAUE,GAC/BhB,EAAY5hD,EAAQplB,EAAUoS,EAAOo2D,EAAWT,EAAqBF,EAAoBD,EAAWH,EAAS//C,EAAQkI,EAAM03C,EAAWK,EAAex9D,EAAQe,EAAWw8D,EAAkBhyB,EAAS+yB,KAGrM,OAAOrjD,GAsDThmB,EAAOC,QAAU,SAAUuY,EAAQiR,GACjC,IAEI0/C,EAFAnoE,EAAMwX,EACNnF,EArD0B,SAAmCoW,GACjE,IAAKA,EACH,OAAOu+C,EAGT,GAAqB,OAAjBv+C,EAAK4+C,SAA4C,qBAAjB5+C,EAAK4+C,SAAmD,oBAAjB5+C,EAAK4+C,QAC9E,MAAM,IAAIt6D,UAAU,iCAGtB,IAAIuoC,EAAU7sB,EAAK6sB,SAAW0xB,EAAS1xB,QAEvC,GAA4B,qBAAjB7sB,EAAK6sB,SAA4C,UAAjB7sB,EAAK6sB,SAAwC,eAAjB7sB,EAAK6sB,QAC1E,MAAM,IAAIvoC,UAAU,qEAGtB,IAAIhD,EAASjK,EAAiB,QAE9B,GAA2B,qBAAhB2oB,EAAK1e,OAAwB,CACtC,IAAKwqC,EAAIzxC,KAAKhD,EAAQs0C,WAAY3rB,EAAK1e,QACrC,MAAM,IAAIgD,UAAU,mCAGtBhD,EAAS0e,EAAK1e,OAGhB,IAAIe,EAAYhL,EAAQs0C,WAAWrqC,GAC/Bud,EAAS0/C,EAAS1/C,OAMtB,OAJ2B,oBAAhBmB,EAAKnB,QAAyB3a,EAAQ8b,EAAKnB,WACpDA,EAASmB,EAAKnB,QAGT,CACL2/C,eAA+C,mBAAxBx+C,EAAKw+C,eAA+Bx+C,EAAKw+C,eAAiBD,EAASC,eAC1FC,UAAqC,qBAAnBz+C,EAAKy+C,UAA4BF,EAASE,YAAcz+C,EAAKy+C,UAC/E5xB,QAASA,EACT6xB,gBAAiD,mBAAzB1+C,EAAK0+C,gBAAgC1+C,EAAK0+C,gBAAkBH,EAASG,gBAC7FC,UAAqC,qBAAnB3+C,EAAK2+C,UAA4BJ,EAASI,UAAY3+C,EAAK2+C,UAC7E3xB,OAA+B,mBAAhBhtB,EAAKgtB,OAAuBhtB,EAAKgtB,OAASuxB,EAASvxB,OAClE4xB,QAAiC,oBAAjB5+C,EAAK4+C,QAAyB5+C,EAAK4+C,QAAUL,EAASK,QACtEC,iBAAmD,mBAA1B7+C,EAAK6+C,iBAAiC7+C,EAAK6+C,iBAAmBN,EAASM,iBAChGhgD,OAAQA,EACRvd,OAAQA,EACRe,UAAWA,EACXy8D,cAA6C,oBAAvB9+C,EAAK8+C,cAA+B9+C,EAAK8+C,cAAgBP,EAASO,cACxFC,UAAqC,mBAAnB/+C,EAAK++C,UAA0B/+C,EAAK++C,UAAYR,EAASQ,UAC3Eh4C,KAA2B,oBAAd/G,EAAK+G,KAAsB/G,EAAK+G,KAAO,KACpDi4C,mBAAuD,mBAA5Bh/C,EAAKg/C,mBAAmCh/C,EAAKg/C,mBAAqBT,EAASS,oBAM1Fa,CAA0B7/C,GAIV,oBAAnBpW,EAAQiV,OAEjBtnB,GADAsnB,EAASjV,EAAQiV,QACJ,GAAItnB,GACR2M,EAAQ0F,EAAQiV,UAEzB6gD,EADS91D,EAAQiV,QAInB,IAMIihD,EANAlnE,EAAO,GAEX,GAAqB,WAAjBtB,EAAQC,IAA6B,OAARA,EAC/B,MAAO,GAMPuoE,EADE9/C,GAAQA,EAAK8/C,eAAe/B,EAChB/9C,EAAK8/C,YACV9/C,GAAQ,YAAaA,EAChBA,EAAKk+C,QAAU,UAAY,SAE3B,UAGhB,IAAIgB,EAAsBnB,EAAsB+B,GAE3CJ,IACHA,EAAU7oE,OAAO+B,KAAKrB,IAGpBqS,EAAQmd,MACV24C,EAAQ34C,KAAKnd,EAAQmd,MAKvB,IAFA,IAAIo4C,EAActB,IAET3mE,EAAI,EAAGA,EAAIwoE,EAAQlmE,SAAUtC,EAAG,CACvC,IAAIiC,EAAMumE,EAAQxoE,GAEd0S,EAAQm1D,WAA0B,OAAbxnE,EAAI4B,IAI7BglE,EAAYvlE,EAAMzB,EAAUI,EAAI4B,GAAMA,EAAK+lE,EAAqBt1D,EAAQo1D,mBAAoBp1D,EAAQm1D,UAAWn1D,EAAQojC,OAASpjC,EAAQg1D,QAAU,KAAMh1D,EAAQiV,OAAQjV,EAAQmd,KAAMnd,EAAQ60D,UAAW70D,EAAQk1D,cAAel1D,EAAQtI,OAAQsI,EAAQvH,UAAWuH,EAAQi1D,iBAAkBj1D,EAAQijC,QAASsyB,IAGhT,IAAIY,EAASnnE,EAAK4lB,KAAK5U,EAAQ+0D,WAC3B50C,GAAoC,IAA3BngB,EAAQ40D,eAA0B,IAAM,GAYrD,OAVI50D,EAAQ80D,kBACc,eAApB90D,EAAQijC,QAEV9iB,GAAU,uBAGVA,GAAU,mBAIPg2C,EAAOvmE,OAAS,EAAIuwB,EAASg2C,EAAS,K,iCCtR/C,SAASzoE,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAIyoE,EAAe,EAAQ,KAEvBC,EAAY,EAAQ,KAEpBC,EAAU,EAAQ,KAElBz4B,EAAau4B,EAAa,eAC1BG,EAAWH,EAAa,aAAa,GACrCI,EAAOJ,EAAa,SAAS,GAC7BK,EAAcJ,EAAU,yBAAyB,GACjDK,EAAcL,EAAU,yBAAyB,GACjDM,EAAcN,EAAU,yBAAyB,GACjDO,EAAUP,EAAU,qBAAqB,GACzCQ,EAAUR,EAAU,qBAAqB,GACzCS,EAAUT,EAAU,qBAAqB,GAUzCU,EAAc,SAAqBjqC,EAAMv9B,GAE3C,IAAK,IAAiBynE,EAAb/G,EAAOnjC,EAAmC,QAAtBkqC,EAAO/G,EAAKx9D,MAAgBw9D,EAAO+G,EAC9D,GAAIA,EAAKznE,MAAQA,EAKf,OAJA0gE,EAAKx9D,KAAOukE,EAAKvkE,KACjBukE,EAAKvkE,KAAOq6B,EAAKr6B,KACjBq6B,EAAKr6B,KAAOukE,EAELA,GA8BbrqE,EAAOC,QAAU,WACf,IAAIqqE,EACAC,EACAC,EACA/hC,EAAU,CACZgiC,OAAQ,SAAgB7nE,GACtB,IAAK6lC,EAAQ8M,IAAI3yC,GACf,MAAM,IAAIsuC,EAAW,iCAAmCy4B,EAAQ/mE,KAGpEnC,IAAK,SAAamC,GAEhB,GAAIgnE,GAAYhnE,IAAyB,WAAjB7B,EAAQ6B,IAAoC,oBAARA,IAC1D,GAAI0nE,EACF,OAAOR,EAAYQ,EAAK1nE,QAErB,GAAIinE,GACT,GAAIU,EACF,OAAON,EAAQM,EAAI3nE,QAGrB,GAAI4nE,EAEF,OAhDI,SAAiBE,EAAS9nE,GACtC,IAAI0M,EAAO86D,EAAYM,EAAS9nE,GAChC,OAAO0M,GAAQA,EAAK0D,MA8CL23D,CAAQH,EAAI5nE,IAIzB2yC,IAAK,SAAa3yC,GAChB,GAAIgnE,GAAYhnE,IAAyB,WAAjB7B,EAAQ6B,IAAoC,oBAARA,IAC1D,GAAI0nE,EACF,OAAON,EAAYM,EAAK1nE,QAErB,GAAIinE,GACT,GAAIU,EACF,OAAOJ,EAAQI,EAAI3nE,QAGrB,GAAI4nE,EAEF,OA3CI,SAAiBE,EAAS9nE,GACtC,QAASwnE,EAAYM,EAAS9nE,GA0CfgoE,CAAQJ,EAAI5nE,GAIvB,OAAO,GAETM,IAAK,SAAaN,EAAKoQ,GACjB42D,GAAYhnE,IAAyB,WAAjB7B,EAAQ6B,IAAoC,oBAARA,IACrD0nE,IACHA,EAAM,IAAIV,GAGZG,EAAYO,EAAK1nE,EAAKoQ,IACb62D,GACJU,IACHA,EAAK,IAAIV,GAGXK,EAAQK,EAAI3nE,EAAKoQ,KAEZw3D,IAMHA,EAAK,CACH5nE,IAAK,GACLkD,KAAM,OAvFJ,SAAiB4kE,EAAS9nE,EAAKoQ,GAC3C,IAAI1D,EAAO86D,EAAYM,EAAS9nE,GAE5B0M,EACFA,EAAK0D,MAAQA,EAGb03D,EAAQ5kE,KAAO,CAEblD,IAAKA,EACLkD,KAAM4kE,EAAQ5kE,KACdkN,MAAOA,GAgFL63D,CAAQL,EAAI5nE,EAAKoQ,MAIvB,OAAOy1B,I,iCC3IT,SAAS1nC,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAI8pE,EAA+B,qBAAX7pE,QAA0BA,OAE9C8pE,EAAgB,EAAQ,KAE5B/qE,EAAOC,QAAU,WACf,MAA0B,oBAAf6qE,IAIW,oBAAX7pE,SAIwB,WAA/BF,EAAQ+pE,EAAW,UAIQ,WAA3B/pE,EAAQE,OAAO,SAIZ8pE,S,iCCtBT,SAAShqE,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzUhB,EAAOC,QAAU,WACf,GAAsB,oBAAXgB,QAAiE,oBAAjCX,OAAOy8D,sBAChD,OAAO,EAGT,GAAiC,WAA7Bh8D,EAAQE,OAAOC,UACjB,OAAO,EAGT,IAAIF,EAAM,GACNgqE,EAAM/pE,OAAO,QACbgqE,EAAS3qE,OAAO0qE,GAEpB,GAAmB,kBAARA,EACT,OAAO,EAGT,GAA4C,oBAAxC1qE,OAAOc,UAAUwJ,SAAS9G,KAAKknE,GACjC,OAAO,EAGT,GAA+C,oBAA3C1qE,OAAOc,UAAUwJ,SAAS9G,KAAKmnE,GACjC,OAAO,EAYT,IAAKD,KAFLhqE,EAAIgqE,GADS,GAGDhqE,EACV,OAAO,EAIT,GAA2B,oBAAhBV,OAAO+B,MAAmD,IAA5B/B,OAAO+B,KAAKrB,GAAKiC,OACxD,OAAO,EAGT,GAA0C,oBAA/B3C,OAAO08D,qBAAiF,IAA3C18D,OAAO08D,oBAAoBh8D,GAAKiC,OACtF,OAAO,EAGT,IAAIioE,EAAO5qE,OAAOy8D,sBAAsB/7D,GAExC,GAAoB,IAAhBkqE,EAAKjoE,QAAgBioE,EAAK,KAAOF,EACnC,OAAO,EAGT,IAAK1qE,OAAOc,UAAU+pE,qBAAqBrnE,KAAK9C,EAAKgqE,GACnD,OAAO,EAGT,GAA+C,oBAApC1qE,OAAOiY,yBAAyC,CACzD,IAAIlD,EAAa/U,OAAOiY,yBAAyBvX,EAAKgqE,GAEtD,GA7BW,KA6BP31D,EAAWrC,QAA8C,IAA1BqC,EAAW7U,WAC5C,OAAO,EAIX,OAAO,I,iCCnET,IAAI4qE,EAAgB,kDAChBjoE,EAAQkB,MAAMjD,UAAU+B,MACxBkoE,EAAQ/qE,OAAOc,UAAUwJ,SACzB0gE,EAAW,oBAEftrE,EAAOC,QAAU,SAAcsrE,GAC7B,IAAI57D,EAASD,KAEb,GAAsB,oBAAXC,GAAyB07D,EAAMvnE,KAAK6L,KAAY27D,EACzD,MAAM,IAAIv9D,UAAUq9D,EAAgBz7D,GAuBtC,IApBA,IACIupB,EADA1P,EAAOrmB,EAAMW,KAAKK,UAAW,GAG7BqnE,EAAS,WACX,GAAI97D,gBAAgBwpB,EAAO,CACzB,IAAI1iB,EAAS7G,EAAOlJ,MAAMiJ,KAAM8Z,EAAK3jB,OAAO1C,EAAMW,KAAKK,aAEvD,OAAI7D,OAAOkW,KAAYA,EACdA,EAGF9G,KAEP,OAAOC,EAAOlJ,MAAM8kE,EAAM/hD,EAAK3jB,OAAO1C,EAAMW,KAAKK,cAIjDsnE,EAActjE,KAAKpD,IAAI,EAAG4K,EAAO1M,OAASumB,EAAKvmB,QAC/CyoE,EAAY,GAEP/qE,EAAI,EAAGA,EAAI8qE,EAAa9qE,IAC/B+qE,EAAUlnE,KAAK,IAAM7D,GAKvB,GAFAu4B,EAAQ+X,SAAS,SAAU,oBAAsBy6B,EAAUzjD,KAAK,KAAO,4CAA/DgpB,CAA4Gu6B,GAEhH77D,EAAOvO,UAAW,CACpB,IAAIuqE,EAAQ,aAEZA,EAAMvqE,UAAYuO,EAAOvO,UACzB83B,EAAM93B,UAAY,IAAIuqE,EACtBA,EAAMvqE,UAAY,KAGpB,OAAO83B,I,iCC/CT,IAAI31B,EAAO,EAAQ,KAEnBvD,EAAOC,QAAUsD,EAAKO,KAAKmtC,SAASntC,KAAMxD,OAAOc,UAAUyC,iB,iCCF3D,IAAI4lE,EAAe,EAAQ,KAEvBmC,EAAW,EAAQ,KAEnBC,EAAWD,EAASnC,EAAa,6BAErCzpE,EAAOC,QAAU,SAA4BsJ,EAAMkrC,GACjD,IAAII,EAAY40B,EAAalgE,IAAQkrC,GAErC,MAAyB,oBAAdI,GAA4Bg3B,EAAStiE,EAAM,gBAAkB,EAC/DqiE,EAAS/2B,GAGXA,I,iCCbT,IAAItxC,EAAO,EAAQ,KAEfkmE,EAAe,EAAQ,KAEvBqC,EAASrC,EAAa,8BACtBsC,EAAQtC,EAAa,6BACrBuC,EAAgBvC,EAAa,mBAAmB,IAASlmE,EAAKO,KAAKioE,EAAOD,GAC1Ez6B,EAAQo4B,EAAa,qCAAqC,GAC1DwC,EAAkBxC,EAAa,2BAA2B,GAC1DyC,EAAOzC,EAAa,cAExB,GAAIwC,EACF,IACEA,EAAgB,GAAI,IAAK,CACvBj5D,MAAO,IAET,MAAO1R,GAEP2qE,EAAkB,KAItBjsE,EAAOC,QAAU,SAAkBksE,GACjC,IAAIC,EAAOJ,EAAczoE,EAAMwoE,EAAO5nE,WAEtC,GAAIktC,GAAS46B,EAAiB,CAC5B,IAAI3zD,EAAO+4B,EAAM+6B,EAAM,UAEnB9zD,EAAKhD,cAEP22D,EAAgBG,EAAM,SAAU,CAC9Bp5D,MAAO,EAAIk5D,EAAK,EAAGC,EAAiBlpE,QAAUkB,UAAUlB,OAAS,MAKvE,OAAOmpE,GAGT,IAAIC,EAAY,WACd,OAAOL,EAAczoE,EAAMuoE,EAAQ3nE,YAGjC8nE,EACFA,EAAgBjsE,EAAOC,QAAS,QAAS,CACvC+S,MAAOq5D,IAGTrsE,EAAOC,QAAQwG,MAAQ4lE,G,oBClDzB,SAAStrE,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAEzU,IAAIsrE,EAAwB,oBAAR/pE,KAAsBA,IAAInB,UAC1CmrE,EAAoBjsE,OAAOiY,0BAA4B+zD,EAAShsE,OAAOiY,yBAAyBhW,IAAInB,UAAW,QAAU,KACzHorE,EAAUF,GAAUC,GAAsD,oBAA1BA,EAAkB9rE,IAAqB8rE,EAAkB9rE,IAAM,KAC/GgsE,EAAaH,GAAU/pE,IAAInB,UAAUsB,QACrCgqE,EAAwB,oBAARz5B,KAAsBA,IAAI7xC,UAC1CurE,EAAoBrsE,OAAOiY,0BAA4Bm0D,EAASpsE,OAAOiY,yBAAyB06B,IAAI7xC,UAAW,QAAU,KACzHwrE,EAAUF,GAAUC,GAAsD,oBAA1BA,EAAkBlsE,IAAqBksE,EAAkBlsE,IAAM,KAC/GosE,EAAaH,GAAUz5B,IAAI7xC,UAAUsB,QAErCoqE,EADgC,oBAAZp+D,SAA0BA,QAAQtN,UAC5BsN,QAAQtN,UAAUm0C,IAAM,KAElDw3B,EADgC,oBAAZv5B,SAA0BA,QAAQpyC,UAC5BoyC,QAAQpyC,UAAUm0C,IAAM,KAElDy3B,EADgC,oBAAZz5B,SAA0BA,QAAQnyC,UAC1BmyC,QAAQnyC,UAAU6rE,MAAQ,KACtDC,EAAiB9zD,QAAQhY,UAAUiY,QACnC8zD,EAAiB7sE,OAAOc,UAAUwJ,SAClCwiE,EAAmBn8B,SAAS7vC,UAAUwJ,SACtCyiE,EAASx4D,OAAOzT,UAAU+J,MAC1BmiE,EAASz4D,OAAOzT,UAAU+B,MAC1B6wC,EAAWn/B,OAAOzT,UAAU4E,QAC5BunE,EAAe14D,OAAOzT,UAAUuB,YAChC6qE,EAAe34D,OAAOzT,UAAUiI,YAChCokE,EAAQriE,OAAOhK,UAAUI,KACzBqyC,EAAUxvC,MAAMjD,UAAUyE,OAC1B6nE,EAAQrpE,MAAMjD,UAAU6mB,KACxB0lD,EAAYtpE,MAAMjD,UAAU+B,MAC5ByqE,EAASzlE,KAAKC,MACdylE,EAAkC,oBAAX17B,OAAwBA,OAAO/wC,UAAUiY,QAAU,KAC1Ey0D,EAAOxtE,OAAOy8D,sBACdgR,EAAgC,oBAAX9sE,QAAsD,WAA7BF,EAAQE,OAAOC,UAAyBD,OAAOG,UAAUwJ,SAAW,KAClHojE,EAAsC,oBAAX/sE,QAAsD,WAA7BF,EAAQE,OAAOC,UAEnE+sE,EAAgC,oBAAXhtE,QAAyBA,OAAOgtE,cAAgBltE,EAAQE,OAAOgtE,eAAiBD,GAA+B,UAAY/sE,OAAOgtE,YAAc,KACrKC,EAAe5tE,OAAOc,UAAU+pE,qBAChCgD,GAA0B,oBAAZl2D,QAAyBA,QAAQ4B,eAAiBvZ,OAAOuZ,kBAAoB,GAAGhB,YAAcxU,MAAMjD,UACpH,SAAUgtE,GACV,OAAOA,EAAEv1D,WACP,MAEJ,SAASw1D,EAAoB1jE,EAAKjG,GAChC,GAAIiG,IAAQ2jE,KAAY3jE,KAAS2jE,KAAY3jE,IAAQA,GAAOA,GAAOA,GAAO,KAAQA,EAAM,KAAQ8iE,EAAM3pE,KAAK,IAAKY,GAC9G,OAAOA,EAGT,IAAI6pE,EAAW,mCAEf,GAAmB,kBAAR5jE,EAAkB,CAC3B,IAAI6jE,EAAM7jE,EAAM,GAAKijE,GAAQjjE,GAAOijE,EAAOjjE,GAE3C,GAAI6jE,IAAQ7jE,EAAK,CACf,IAAI8jE,EAAS55D,OAAO25D,GAChBE,EAAMpB,EAAOxpE,KAAKY,EAAK+pE,EAAOxrE,OAAS,GAC3C,OAAO+wC,EAASlwC,KAAK2qE,EAAQF,EAAU,OAAS,IAAMv6B,EAASlwC,KAAKkwC,EAASlwC,KAAK4qE,EAAK,cAAe,OAAQ,KAAM,KAIxH,OAAO16B,EAASlwC,KAAKY,EAAK6pE,EAAU,OAGtC,IAAII,EAAgB,EAAQ,KAAkBC,OAE1CC,EAAgBF,GAAiBG,EAASH,GAAiBA,EAAgB,KAqO/E,SAASI,EAAWrvC,EAAGsvC,EAAcvlD,GACnC,IAAIwlD,EAAkD,YAArCxlD,EAAKylD,YAAcF,GAA6B,IAAM,IACvE,OAAOC,EAAYvvC,EAAIuvC,EAGzB,SAAS36B,EAAM5U,GACb,OAAOsU,EAASlwC,KAAK+Q,OAAO6qB,GAAI,KAAM,UAGxC,SAAS/xB,EAAQ3M,GACf,MAAsB,mBAAfqqE,EAAMrqE,MAA+BitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IA4B3G,SAAS8tE,EAAS9tE,GAChB,GAAIgtE,EACF,OAAOhtE,GAAwB,WAAjBD,EAAQC,IAAqBA,aAAeC,OAG5D,GAAqB,WAAjBF,EAAQC,GACV,OAAO,EAGT,IAAKA,GAAwB,WAAjBD,EAAQC,KAAsB+sE,EACxC,OAAO,EAGT,IAEE,OADAA,EAAYjqE,KAAK9C,IACV,EACP,MAAOM,IAET,OAAO,EA3RTtB,EAAOC,QAAU,SAASkvE,EAASnuE,EAAKqS,EAAS+7D,EAAOC,GACtD,IAAI5lD,EAAOpW,GAAW,GAEtB,GAAIkiC,EAAI9rB,EAAM,eAAqC,WAApBA,EAAKylD,YAA+C,WAApBzlD,EAAKylD,WAClE,MAAM,IAAInhE,UAAU,oDAGtB,GAAIwnC,EAAI9rB,EAAM,qBAAuD,kBAAzBA,EAAK6lD,gBAA+B7lD,EAAK6lD,gBAAkB,GAAK7lD,EAAK6lD,kBAAoBhB,IAAoC,OAAzB7kD,EAAK6lD,iBACnJ,MAAM,IAAIvhE,UAAU,0FAGtB,IAAIwhE,GAAgBh6B,EAAI9rB,EAAM,kBAAmBA,EAAK8lD,cAEtD,GAA6B,mBAAlBA,GAAiD,WAAlBA,EACxC,MAAM,IAAIxhE,UAAU,iFAGtB,GAAIwnC,EAAI9rB,EAAM,WAA6B,OAAhBA,EAAK+lD,QAAmC,OAAhB/lD,EAAK+lD,UAAqB3mE,SAAS4gB,EAAK+lD,OAAQ,MAAQ/lD,EAAK+lD,QAAU/lD,EAAK+lD,OAAS,GACtI,MAAM,IAAIzhE,UAAU,4DAGtB,GAAIwnC,EAAI9rB,EAAM,qBAAwD,mBAA1BA,EAAKgmD,iBAC/C,MAAM,IAAI1hE,UAAU,qEAGtB,IAAI0hE,EAAmBhmD,EAAKgmD,iBAE5B,GAAmB,qBAARzuE,EACT,MAAO,YAGT,GAAY,OAARA,EACF,MAAO,OAGT,GAAmB,mBAARA,EACT,OAAOA,EAAM,OAAS,QAGxB,GAAmB,kBAARA,EACT,OAAO0uE,EAAc1uE,EAAKyoB,GAG5B,GAAmB,kBAARzoB,EAAkB,CAC3B,GAAY,IAARA,EACF,OAAOstE,IAAWttE,EAAM,EAAI,IAAM,KAGpC,IAAI0D,EAAMmQ,OAAO7T,GACjB,OAAOyuE,EAAmBpB,EAAoBrtE,EAAK0D,GAAOA,EAG5D,GAAmB,kBAAR1D,EAAkB,CAC3B,IAAI2uE,EAAY96D,OAAO7T,GAAO,IAC9B,OAAOyuE,EAAmBpB,EAAoBrtE,EAAK2uE,GAAaA,EAGlE,IAAIC,EAAiC,qBAAfnmD,EAAK2lD,MAAwB,EAAI3lD,EAAK2lD,MAM5D,GAJqB,qBAAVA,IACTA,EAAQ,GAGNA,GAASQ,GAAYA,EAAW,GAAsB,WAAjB7uE,EAAQC,GAC/C,OAAO2M,EAAQ3M,GAAO,UAAY,WAGpC,IAAIwuE,EA6aN,SAAmB/lD,EAAM2lD,GACvB,IAAIS,EAEJ,GAAoB,OAAhBpmD,EAAK+lD,OACPK,EAAa,SACR,MAA2B,kBAAhBpmD,EAAK+lD,QAAuB/lD,EAAK+lD,OAAS,GAG1D,OAAO,KAFPK,EAAanC,EAAM5pE,KAAKO,MAAMolB,EAAK+lD,OAAS,GAAI,KAKlD,MAAO,CACLp3D,KAAMy3D,EACNvM,KAAMoK,EAAM5pE,KAAKO,MAAM+qE,EAAQ,GAAIS,IA1bxBC,CAAUrmD,EAAM2lD,GAE7B,GAAoB,qBAATC,EACTA,EAAO,QACF,GAAItmD,EAAQsmD,EAAMruE,IAAQ,EAC/B,MAAO,aAGT,SAAS2oE,EAAQ32D,EAAOvL,EAAMsoE,GAM5B,GALItoE,IACF4nE,EAAO1B,EAAU7pE,KAAKurE,IACjB7qE,KAAKiD,GAGRsoE,EAAU,CACZ,IAAIC,EAAU,CACZZ,MAAO3lD,EAAK2lD,OAOd,OAJI75B,EAAI9rB,EAAM,gBACZumD,EAAQd,WAAazlD,EAAKylD,YAGrBC,EAASn8D,EAAOg9D,EAASZ,EAAQ,EAAGC,GAG7C,OAAOF,EAASn8D,EAAOyW,EAAM2lD,EAAQ,EAAGC,GAG1C,GAAmB,oBAARruE,EAAoB,CAC7B,IAAIuI,EAsNR,SAAgBjH,GACd,GAAIA,EAAEiH,KACJ,OAAOjH,EAAEiH,KAGX,IAAIT,EAAIukE,EAAOvpE,KAAKspE,EAAiBtpE,KAAKxB,GAAI,wBAE9C,GAAIwG,EACF,OAAOA,EAAE,GAGX,OAAO,KAjOMmnE,CAAOjvE,GACdqB,EAAO6tE,EAAWlvE,EAAK2oE,GAC3B,MAAO,aAAepgE,EAAO,KAAOA,EAAO,gBAAkB,KAAOlH,EAAKY,OAAS,EAAI,MAAQyqE,EAAM5pE,KAAKzB,EAAM,MAAQ,KAAO,IAGhI,GAAIysE,EAAS9tE,GAAM,CACjB,IAAImvE,EAAYnC,EAAoBh6B,EAASlwC,KAAK+Q,OAAO7T,GAAM,yBAA0B,MAAQ+sE,EAAYjqE,KAAK9C,GAClH,MAAwB,WAAjBD,EAAQC,IAAsBgtE,EAA2CmC,EAAvBC,EAAUD,GAGrE,GAqUF,SAAmBl7D,GACjB,IAAKA,GAAoB,WAAflU,EAAQkU,GAChB,OAAO,EAGT,GAA2B,qBAAhB2T,aAA+B3T,aAAa2T,YACrD,OAAO,EAGT,MAA6B,kBAAf3T,EAAE4V,UAAmD,oBAAnB5V,EAAEksB,aA9U9CkvC,CAAUrvE,GAAM,CAIlB,IAHA,IAAI0+B,GAAI,IAAM8tC,EAAa1pE,KAAK+Q,OAAO7T,EAAI6pB,WACvCylD,GAAQtvE,EAAIsE,YAAc,GAErB3E,GAAI,EAAGA,GAAI2vE,GAAMrtE,OAAQtC,KAChC++B,IAAK,IAAM4wC,GAAM3vE,IAAG4I,KAAO,IAAMwlE,EAAWz6B,EAAMg8B,GAAM3vE,IAAGqS,OAAQ,SAAUyW,GAU/E,OAPAiW,IAAK,IAED1+B,EAAIgU,YAAchU,EAAIgU,WAAW/R,SACnCy8B,IAAK,OAGPA,IAAK,KAAO8tC,EAAa1pE,KAAK+Q,OAAO7T,EAAI6pB,WAAa,IAIxD,GAAIld,EAAQ3M,GAAM,CAChB,GAAmB,IAAfA,EAAIiC,OACN,MAAO,KAGT,IAAIstE,GAAKL,EAAWlvE,EAAK2oE,GAEzB,OAAI6F,IAkWR,SAA0Be,GACxB,IAAK,IAAI5vE,EAAI,EAAGA,EAAI4vE,EAAGttE,OAAQtC,IAC7B,GAAIooB,EAAQwnD,EAAG5vE,GAAI,OAAS,EAC1B,OAAO,EAIX,OAAO,EAzWU6vE,CAAiBD,IACvB,IAAME,EAAaF,GAAIf,GAAU,IAGnC,KAAO9B,EAAM5pE,KAAKysE,GAAI,MAAQ,KAGvC,GA6GF,SAAiBvvE,GACf,MAAsB,mBAAfqqE,EAAMrqE,MAA+BitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IA9GrG0vE,CAAQ1vE,GAAM,CAChB,IAAIkK,GAAQglE,EAAWlvE,EAAK2oE,GAE5B,MAAI,UAAW3oE,IAAQktE,EAAapqE,KAAK9C,EAAK,SACrC,MAAQ6T,OAAO7T,GAAO,KAAO0sE,EAAM5pE,KAAK+vC,EAAQ/vC,KAAK,YAAc6lE,EAAQ3oE,EAAI2vE,OAAQzlE,IAAQ,MAAQ,KAG3F,IAAjBA,GAAMjI,OACD,IAAM4R,OAAO7T,GAAO,IAGtB,MAAQ6T,OAAO7T,GAAO,KAAO0sE,EAAM5pE,KAAKoH,GAAO,MAAQ,KAGhE,GAAqB,WAAjBnK,EAAQC,IAAqBuuE,EAAe,CAC9C,GAAIV,GAA+C,oBAAvB7tE,EAAI6tE,GAC9B,OAAO7tE,EAAI6tE,KACN,GAAsB,WAAlBU,GAAqD,oBAAhBvuE,EAAI2oE,QAClD,OAAO3oE,EAAI2oE,UAIf,GAkLF,SAAe10D,GACb,IAAKu3D,IAAYv3D,GAAoB,WAAflU,EAAQkU,GAC5B,OAAO,EAGT,IACEu3D,EAAQ1oE,KAAKmR,GAEb,IACE23D,EAAQ9oE,KAAKmR,GACb,MAAOyqB,IACP,OAAO,EAGT,OAAOzqB,aAAa1S,IACpB,MAAOjB,IAET,OAAO,EAnMHsvE,CAAM5vE,GAAM,CACd,IAAI6vE,GAAW,GAIf,OAHApE,EAAW3oE,KAAK9C,GAAK,SAAUgS,EAAOpQ,GACpCiuE,GAASrsE,KAAKmlE,EAAQ/mE,EAAK5B,GAAK,GAAQ,OAAS2oE,EAAQ32D,EAAOhS,OAE3D8vE,EAAa,MAAOtE,EAAQ1oE,KAAK9C,GAAM6vE,GAAUrB,GAG1D,GA+NF,SAAev6D,GACb,IAAK23D,IAAY33D,GAAoB,WAAflU,EAAQkU,GAC5B,OAAO,EAGT,IACE23D,EAAQ9oE,KAAKmR,GAEb,IACEu3D,EAAQ1oE,KAAKmR,GACb,MAAOnM,GACP,OAAO,EAGT,OAAOmM,aAAag+B,IACpB,MAAO3xC,IAET,OAAO,EAhPHyvE,CAAM/vE,GAAM,CACd,IAAIgwE,GAAW,GAIf,OAHAnE,EAAW/oE,KAAK9C,GAAK,SAAUgS,GAC7Bg+D,GAASxsE,KAAKmlE,EAAQ32D,EAAOhS,OAExB8vE,EAAa,MAAOlE,EAAQ9oE,KAAK9C,GAAMgwE,GAAUxB,GAG1D,GAsLF,SAAmBv6D,GACjB,IAAK63D,IAAe73D,GAAoB,WAAflU,EAAQkU,GAC/B,OAAO,EAGT,IACE63D,EAAWhpE,KAAKmR,EAAG63D,GAEnB,IACEC,EAAWjpE,KAAKmR,EAAG83D,GACnB,MAAOrtC,IACP,OAAO,EAGT,OAAOzqB,aAAavG,QACpB,MAAOpN,IAET,OAAO,EAvMH2vE,CAAUjwE,GACZ,OAAOkwE,EAAiB,WAG1B,GAuOF,SAAmBj8D,GACjB,IAAK83D,IAAe93D,GAAoB,WAAflU,EAAQkU,GAC/B,OAAO,EAGT,IACE83D,EAAWjpE,KAAKmR,EAAG83D,GAEnB,IACED,EAAWhpE,KAAKmR,EAAG63D,GACnB,MAAOptC,IACP,OAAO,EAGT,OAAOzqB,aAAau+B,QACpB,MAAOlyC,IAET,OAAO,EAxPH6vE,CAAUnwE,GACZ,OAAOkwE,EAAiB,WAG1B,GAkMF,SAAmBj8D,GACjB,IAAK+3D,IAAiB/3D,GAAoB,WAAflU,EAAQkU,GACjC,OAAO,EAGT,IAEE,OADA+3D,EAAalpE,KAAKmR,IACX,EACP,MAAO3T,IAET,OAAO,EA5MH8vE,CAAUpwE,GACZ,OAAOkwE,EAAiB,WAG1B,GAmEF,SAAkBlwE,GAChB,MAAsB,oBAAfqqE,EAAMrqE,MAAgCitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IApEtGqwE,CAASrwE,GACX,OAAOovE,EAAUzG,EAAQh1D,OAAO3T,KAGlC,GA6FF,SAAkBA,GAChB,IAAKA,GAAwB,WAAjBD,EAAQC,KAAsB6sE,EACxC,OAAO,EAGT,IAEE,OADAA,EAAc/pE,KAAK9C,IACZ,EACP,MAAOM,IAET,OAAO,EAvGHgwE,CAAStwE,GACX,OAAOovE,EAAUzG,EAAQkE,EAAc/pE,KAAK9C,KAG9C,GA+DF,SAAmBA,GACjB,MAAsB,qBAAfqqE,EAAMrqE,MAAiCitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IAhEvGuwE,CAAUvwE,GACZ,OAAOovE,EAAUlD,EAAeppE,KAAK9C,IAGvC,GAmDF,SAAkBA,GAChB,MAAsB,oBAAfqqE,EAAMrqE,MAAgCitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IApDtGwwE,CAASxwE,GACX,OAAOovE,EAAUzG,EAAQ90D,OAAO7T,KAGlC,IAmCF,SAAgBA,GACd,MAAsB,kBAAfqqE,EAAMrqE,MAA8BitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IApCnGywE,CAAOzwE,KAuCd,SAAkBA,GAChB,MAAsB,oBAAfqqE,EAAMrqE,MAAgCitE,KAAkC,WAAjBltE,EAAQC,IAAqBitE,KAAejtE,IAxCrFi2C,CAASj2C,GAAM,CAClC,IAAI0wE,GAAKxB,EAAWlvE,EAAK2oE,GACrBgI,GAAgBxD,EAAMA,EAAIntE,KAASV,OAAOc,UAAYJ,aAAeV,QAAUU,EAAIG,cAAgBb,OACnGsxE,GAAW5wE,aAAeV,OAAS,GAAK,iBACxCuxE,IAAaF,IAAiB1D,GAAe3tE,OAAOU,KAASA,GAAOitE,KAAejtE,EAAMssE,EAAOxpE,KAAKunE,EAAMrqE,GAAM,GAAI,GAAK4wE,GAAW,SAAW,GAEhJE,IADiBH,IAA4C,oBAApB3wE,EAAIG,YAA6B,GAAKH,EAAIG,YAAYoI,KAAOvI,EAAIG,YAAYoI,KAAO,IAAM,KAC3GsoE,IAAaD,GAAW,IAAMlE,EAAM5pE,KAAK+vC,EAAQ/vC,KAAK,GAAI+tE,IAAa,GAAID,IAAY,IAAK,MAAQ,KAAO,IAEvI,OAAkB,IAAdF,GAAGzuE,OACE6uE,GAAM,KAGXtC,EACKsC,GAAM,IAAMrB,EAAaiB,GAAIlC,GAAU,IAGzCsC,GAAM,KAAOpE,EAAM5pE,KAAK4tE,GAAI,MAAQ,KAG7C,OAAO78D,OAAO7T,IA2EhB,IAAI4yC,EAAStzC,OAAOc,UAAUyC,gBAAkB,SAAUjB,GACxD,OAAOA,KAAO8M,MAGhB,SAAS6lC,EAAIv0C,EAAK4B,GAChB,OAAOgxC,EAAO9vC,KAAK9C,EAAK4B,GAG1B,SAASyoE,EAAMrqE,GACb,OAAOmsE,EAAerpE,KAAK9C,GAiB7B,SAAS+nB,EAAQwnD,EAAIt7D,GACnB,GAAIs7D,EAAGxnD,QACL,OAAOwnD,EAAGxnD,QAAQ9T,GAGpB,IAAK,IAAItU,EAAI,EAAGD,EAAI6vE,EAAGttE,OAAQtC,EAAID,EAAGC,IACpC,GAAI4vE,EAAG5vE,KAAOsU,EACZ,OAAOtU,EAIX,OAAQ,EA4GV,SAAS+uE,EAAchrE,EAAK+kB,GAC1B,GAAI/kB,EAAIzB,OAASwmB,EAAK6lD,gBAAiB,CACrC,IAAIyC,EAAYrtE,EAAIzB,OAASwmB,EAAK6lD,gBAC9B0C,EAAU,OAASD,EAAY,mBAAqBA,EAAY,EAAI,IAAM,IAC9E,OAAOrC,EAAcpC,EAAOxpE,KAAKY,EAAK,EAAG+kB,EAAK6lD,iBAAkB7lD,GAAQuoD,EAK1E,OAAOjD,EADC/6B,EAASlwC,KAAKkwC,EAASlwC,KAAKY,EAAK,WAAY,QAAS,eAAgButE,GACzD,SAAUxoD,GAGjC,SAASwoD,EAAQzvE,GACf,IAAId,EAAIc,EAAEu0C,WAAW,GACjB9hC,EAAI,CACN,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,KACJvT,GAEF,OAAIuT,EACK,KAAOA,EAGT,OAASvT,EAAI,GAAO,IAAM,IAAM6rE,EAAazpE,KAAKpC,EAAEkJ,SAAS,KAGtE,SAASwlE,EAAU1rE,GACjB,MAAO,UAAYA,EAAM,IAG3B,SAASwsE,EAAiBtyD,GACxB,OAAOA,EAAO,SAGhB,SAASkyD,EAAalyD,EAAMwlC,EAAMyJ,EAAS2hB,GAEzC,OAAO5wD,EAAO,KAAOwlC,EAAO,OADRorB,EAASiB,EAAa5iB,EAAS2hB,GAAU9B,EAAM5pE,KAAK+pD,EAAS,OAC7B,IA8BtD,SAAS4iB,EAAaF,EAAIf,GACxB,GAAkB,IAAde,EAAGttE,OACL,MAAO,GAGT,IAAIivE,EAAa,KAAO1C,EAAOlM,KAAOkM,EAAOp3D,KAC7C,OAAO85D,EAAaxE,EAAM5pE,KAAKysE,EAAI,IAAM2B,GAAc,KAAO1C,EAAOlM,KAGvE,SAAS4M,EAAWlvE,EAAK2oE,GACvB,IAAIwI,EAAQxkE,EAAQ3M,GAChBuvE,EAAK,GAET,GAAI4B,EAAO,CACT5B,EAAGttE,OAASjC,EAAIiC,OAEhB,IAAK,IAAItC,EAAI,EAAGA,EAAIK,EAAIiC,OAAQtC,IAC9B4vE,EAAG5vE,GAAK40C,EAAIv0C,EAAKL,GAAKgpE,EAAQ3oE,EAAIL,GAAIK,GAAO,GAIjD,IACIoxE,EADAlH,EAAuB,oBAAT4C,EAAsBA,EAAK9sE,GAAO,GAGpD,GAAIgtE,EAAmB,CACrBoE,EAAS,GAET,IAAK,IAAIvP,EAAI,EAAGA,EAAIqI,EAAKjoE,OAAQ4/D,IAC/BuP,EAAO,IAAMlH,EAAKrI,IAAMqI,EAAKrI,GAIjC,IAAK,IAAIjgE,KAAO5B,EAETu0C,EAAIv0C,EAAK4B,KAKVuvE,GAASt9D,OAAOF,OAAO/R,MAAUA,GAAOA,EAAM5B,EAAIiC,QAKlD+qE,GAAqBoE,EAAO,IAAMxvE,aAAgB3B,SAG3CwsE,EAAM3pE,KAAK,SAAUlB,GAC9B2tE,EAAG/rE,KAAKmlE,EAAQ/mE,EAAK5B,GAAO,KAAO2oE,EAAQ3oE,EAAI4B,GAAM5B,IAErDuvE,EAAG/rE,KAAK5B,EAAM,KAAO+mE,EAAQ3oE,EAAI4B,GAAM5B,MAI3C,GAAoB,oBAAT8sE,EACT,IAAK,IAAI73B,EAAI,EAAGA,EAAIi1B,EAAKjoE,OAAQgzC,IAC3Bi4B,EAAapqE,KAAK9C,EAAKkqE,EAAKj1B,KAC9Bs6B,EAAG/rE,KAAK,IAAMmlE,EAAQuB,EAAKj1B,IAAM,MAAQ0zB,EAAQ3oE,EAAIkqE,EAAKj1B,IAAKj1C,IAKrE,OAAOuvE,I,iCC9nBT,IAAIhJ,EAAQ,EAAQ,KAEhBhyB,EAAMj1C,OAAOc,UAAUyC,eACvB8J,EAAUtJ,MAAMsJ,QAChBq6D,EAAW,CACbE,WAAW,EACX7wB,iBAAiB,EACjBg7B,aAAa,EACbC,WAAY,GACZh8B,QAAS,QACT6xB,iBAAiB,EACjBT,OAAO,EACPrxB,QAASkxB,EAAMnxB,OACfgyB,UAAW,IACXgH,MAAO,EACPmD,mBAAmB,EACnBC,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACb/8B,cAAc,EACd8yB,oBAAoB,GAGlB+J,EAA2B,SAAkC9tE,GAC/D,OAAOA,EAAIsB,QAAQ,aAAa,SAAU6wC,EAAI87B,GAC5C,OAAO99D,OAAO+9D,aAAa/pE,SAAS8pE,EAAW,SAI/CE,EAAkB,SAAyB3tE,EAAKmO,GAClD,OAAInO,GAAsB,kBAARA,GAAoBmO,EAAQq0D,OAASxiE,EAAI6jB,QAAQ,MAAQ,EAClE7jB,EAAIpD,MAAM,KAGZoD,GA4GL4tE,EAAY,SAA8BC,EAAU7tE,EAAKmO,EAAS2/D,GACpE,GAAKD,EAAL,CAKA,IAAInwE,EAAMyQ,EAAQ60D,UAAY6K,EAAS/sE,QAAQ,cAAe,QAAU+sE,EAGpEE,EAAQ,gBAERC,EAAU7/D,EAAQ+7D,MAAQ,GAHf,eAG6B+D,KAAKvwE,GAC7C2M,EAAS2jE,EAAUtwE,EAAIO,MAAM,EAAG+vE,EAAQ3tE,OAAS3C,EAEjDP,EAAO,GAEX,GAAIkN,EAAQ,CAEV,IAAK8D,EAAQsiC,cAAgBJ,EAAIzxC,KAAKxD,OAAOc,UAAWmO,KACjD8D,EAAQgkC,gBACX,OAIJh1C,EAAKmC,KAAK+K,GAMZ,IAFA,IAAI5O,EAAI,EAED0S,EAAQ+7D,MAAQ,GAAqC,QAA/B8D,EAAUD,EAAME,KAAKvwE,KAAkBjC,EAAI0S,EAAQ+7D,OAAO,CAGrF,GAFAzuE,GAAK,GAEA0S,EAAQsiC,cAAgBJ,EAAIzxC,KAAKxD,OAAOc,UAAW8xE,EAAQ,GAAG/vE,MAAM,GAAI,MACtEkQ,EAAQgkC,gBACX,OAIJh1C,EAAKmC,KAAK0uE,EAAQ,IAQpB,OAJIA,GACF7wE,EAAKmC,KAAK,IAAM5B,EAAIO,MAAM+vE,EAAQ3tE,OAAS,KA5E7B,SAAqB6tE,EAAOluE,EAAKmO,EAAS2/D,GAG1D,IAFA,IAAIK,EAAOL,EAAe9tE,EAAM2tE,EAAgB3tE,EAAKmO,GAE5C1S,EAAIyyE,EAAMnwE,OAAS,EAAGtC,GAAK,IAAKA,EAAG,CAC1C,IAAIK,EACAsyE,EAAOF,EAAMzyE,GAEjB,GAAa,OAAT2yE,GAAiBjgE,EAAQq/D,YAC3B1xE,EAAM,GAAG6E,OAAOwtE,OACX,CACLryE,EAAMqS,EAAQsiC,aAAer1C,OAAO2Z,OAAO,MAAQ,GACnD,IAAIs5D,EAA+B,MAAnBD,EAAK//C,OAAO,IAA+C,MAAjC+/C,EAAK//C,OAAO+/C,EAAKrwE,OAAS,GAAaqwE,EAAKnwE,MAAM,GAAI,GAAKmwE,EACjG/tE,EAAQsD,SAAS0qE,EAAW,IAE3BlgE,EAAQq/D,aAA6B,KAAda,GAIhBrqE,MAAM3D,IAAU+tE,IAASC,GAAa1+D,OAAOtP,KAAWguE,GAAahuE,GAAS,GAAK8N,EAAQq/D,aAAentE,GAAS8N,EAAQi/D,YACrItxE,EAAM,IACFuE,GAAS8tE,EACU,cAAdE,IACTvyE,EAAIuyE,GAAaF,GAPjBryE,EAAM,CACJ,EAAGqyE,GAUTA,EAAOryE,EAGT,OAAOqyE,EAkDAG,CAAYnxE,EAAM6C,EAAKmO,EAAS2/D,KAsCzChzE,EAAOC,QAAU,SAAUyE,EAAK+kB,GAC9B,IAAIpW,EApCsB,SAA+BoW,GACzD,IAAKA,EACH,OAAOu+C,EAGT,GAAqB,OAAjBv+C,EAAK4sB,cAAqCrxC,IAAjBykB,EAAK4sB,SAAiD,oBAAjB5sB,EAAK4sB,QACrE,MAAM,IAAItoC,UAAU,iCAGtB,GAA4B,qBAAjB0b,EAAK6sB,SAA4C,UAAjB7sB,EAAK6sB,SAAwC,eAAjB7sB,EAAK6sB,QAC1E,MAAM,IAAIvoC,UAAU,qEAGtB,IAAIuoC,EAAkC,qBAAjB7sB,EAAK6sB,QAA0B0xB,EAAS1xB,QAAU7sB,EAAK6sB,QAC5E,MAAO,CACL4xB,UAAqC,qBAAnBz+C,EAAKy+C,UAA4BF,EAASE,YAAcz+C,EAAKy+C,UAC/E7wB,gBAAiD,mBAAzB5tB,EAAK4tB,gBAAgC5tB,EAAK4tB,gBAAkB2wB,EAAS3wB,gBAC7Fg7B,YAAyC,mBAArB5oD,EAAK4oD,YAA4B5oD,EAAK4oD,YAAcrK,EAASqK,YACjFC,WAAuC,kBAApB7oD,EAAK6oD,WAA0B7oD,EAAK6oD,WAAatK,EAASsK,WAC7Eh8B,QAASA,EACT6xB,gBAAiD,mBAAzB1+C,EAAK0+C,gBAAgC1+C,EAAK0+C,gBAAkBH,EAASG,gBAC7FT,MAA6B,mBAAfj+C,EAAKi+C,MAAsBj+C,EAAKi+C,MAAQM,EAASN,MAC/DrxB,QAAiC,oBAAjB5sB,EAAK4sB,QAAyB5sB,EAAK4sB,QAAU2xB,EAAS3xB,QACtE+xB,UAAqC,kBAAnB3+C,EAAK2+C,WAA0Bb,EAAMtwB,SAASxtB,EAAK2+C,WAAa3+C,EAAK2+C,UAAYJ,EAASI,UAE5GgH,MAA6B,kBAAf3lD,EAAK2lD,QAAqC,IAAf3lD,EAAK2lD,OAAmB3lD,EAAK2lD,MAAQpH,EAASoH,MACvFmD,mBAA8C,IAA3B9oD,EAAK8oD,kBACxBC,yBAAmE,mBAAlC/oD,EAAK+oD,yBAAyC/oD,EAAK+oD,yBAA2BxK,EAASwK,yBACxHC,eAA+C,kBAAxBhpD,EAAKgpD,eAA8BhpD,EAAKgpD,eAAiBzK,EAASyK,eACzFC,aAAkC,IAArBjpD,EAAKipD,YAClB/8B,aAA2C,mBAAtBlsB,EAAKksB,aAA6BlsB,EAAKksB,aAAeqyB,EAASryB,aACpF8yB,mBAAuD,mBAA5Bh/C,EAAKg/C,mBAAmCh/C,EAAKg/C,mBAAqBT,EAASS,oBAK1FgL,CAAsBhqD,GAEpC,GAAY,KAAR/kB,GAAsB,OAARA,GAA+B,qBAARA,EACvC,OAAO2O,EAAQsiC,aAAer1C,OAAO2Z,OAAO,MAAQ,GAQtD,IALA,IAAIy5D,EAAyB,kBAARhvE,EA3LL,SAAgCA,EAAK2O,GACrD,IAMI1S,EANAK,EAAM,GACN2yE,EAAWtgE,EAAQk/D,kBAAoB7tE,EAAIsB,QAAQ,MAAO,IAAMtB,EAChEkvE,EAAQvgE,EAAQo/D,iBAAmBnE,SAAWtpE,EAAYqO,EAAQo/D,eAClEvnE,EAAQyoE,EAAS7xE,MAAMuR,EAAQ+0D,UAAWwL,GAC1CC,GAAa,EAGbv9B,EAAUjjC,EAAQijC,QAEtB,GAAIjjC,EAAQ80D,gBACV,IAAKxnE,EAAI,EAAGA,EAAIuK,EAAMjI,SAAUtC,EACI,IAA9BuK,EAAMvK,GAAGooB,QAAQ,WAdL,mBAeV7d,EAAMvK,GACR21C,EAAU,QAnBF,wBAoBCprC,EAAMvK,KACf21C,EAAU,cAGZu9B,EAAYlzE,EACZA,EAAIuK,EAAMjI,QAKhB,IAAKtC,EAAI,EAAGA,EAAIuK,EAAMjI,SAAUtC,EAC9B,GAAIA,IAAMkzE,EAAV,CAIA,IAGIjxE,EAAKsC,EAHLsG,EAAON,EAAMvK,GACbmzE,EAAmBtoE,EAAKud,QAAQ,MAChCggD,GAA4B,IAAtB+K,EAA0BtoE,EAAKud,QAAQ,KAAO+qD,EAAmB,GAG9D,IAAT/K,GACFnmE,EAAMyQ,EAAQgjC,QAAQ7qC,EAAMw8D,EAAS3xB,QAASC,EAAS,OACvDpxC,EAAMmO,EAAQo1D,mBAAqB,KAAO,KAE1C7lE,EAAMyQ,EAAQgjC,QAAQ7qC,EAAKrI,MAAM,EAAG4lE,GAAMf,EAAS3xB,QAASC,EAAS,OACrEpxC,EAAMqiE,EAAMrwB,SAAS27B,EAAgBrnE,EAAKrI,MAAM4lE,EAAM,GAAI11D,IAAU,SAAU0gE,GAC5E,OAAO1gE,EAAQgjC,QAAQ09B,EAAY/L,EAAS3xB,QAASC,EAAS,aAI9DpxC,GAAOmO,EAAQm/D,0BAAwC,eAAZl8B,IAC7CpxC,EAAMstE,EAAyBttE,IAG7BsG,EAAKud,QAAQ,QAAU,IACzB7jB,EAAMyI,EAAQzI,GAAO,CAACA,GAAOA,GAG3BqwC,EAAIzxC,KAAK9C,EAAK4B,GAChB5B,EAAI4B,GAAO2kE,EAAM1xB,QAAQ70C,EAAI4B,GAAMsC,GAEnClE,EAAI4B,GAAOsC,EAIf,OAAOlE,EA+HiCgzE,CAAYtvE,EAAK2O,GAAW3O,EAChE1D,EAAMqS,EAAQsiC,aAAer1C,OAAO2Z,OAAO,MAAQ,GAEnD5X,EAAO/B,OAAO+B,KAAKqxE,GAEd/yE,EAAI,EAAGA,EAAI0B,EAAKY,SAAUtC,EAAG,CACpC,IAAIiC,EAAMP,EAAK1B,GACXszE,EAASnB,EAAUlwE,EAAK8wE,EAAQ9wE,GAAMyQ,EAAwB,kBAAR3O,GAC1D1D,EAAMumE,EAAMnwB,MAAMp2C,EAAKizE,EAAQ5gE,GAGjC,OAA4B,IAAxBA,EAAQg/D,YACHrxE,EAGFumE,EAAMzxB,QAAQ90C,K,oBC3PvB,0BAAmD,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,GAAQD,EAAQC,GAYzU,IASIkzE,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAezrE,SAGf0rE,EAAgF,WAAhD,qBAAX35C,EAAyB,YAAc75B,EAAQ65B,KAAwBA,GAAUA,EAAOt6B,SAAWA,QAAUs6B,EAGlI45C,EAA0E,WAA9C,qBAAT96D,KAAuB,YAAc3Y,EAAQ2Y,QAAsBA,MAAQA,KAAKpZ,SAAWA,QAAUoZ,KAGxH45D,EAAOiB,GAAcC,GAAYvjC,SAAS,cAATA,GAUjCk8B,EAPc7sE,OAAOc,UAOQwJ,SAG7B6pE,EAAYtsE,KAAKpD,IACjB2vE,EAAYvsE,KAAKrD,IAkBjB49B,EAAM,WACR,OAAO4wC,EAAKntE,KAAKu8B,OAkNnB,SAASiyC,EAAS3hE,GAChB,IAAI4L,EAAO7d,EAAQiS,GAEnB,QAASA,IAAkB,UAAR4L,GAA4B,YAARA,GAkDzC,SAASkwD,EAAS97D,GAChB,MAAyB,UAAlBjS,EAAQiS,IAvBjB,SAAsBA,GACpB,QAASA,GAA2B,UAAlBjS,EAAQiS,GAsBW4hE,CAAa5hE,IAjUpC,mBAiU8Cm6D,EAAerpE,KAAKkP,GA2BlF,SAAS6hE,EAAS7hE,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAGT,GAAI87D,EAAS97D,GACX,OArWM,IAwWR,GAAI2hE,EAAS3hE,GAAQ,CACnB,IAAI8hE,EAAgC,mBAAjB9hE,EAAMqG,QAAwBrG,EAAMqG,UAAYrG,EACnEA,EAAQ2hE,EAASG,GAASA,EAAQ,GAAKA,EAGzC,GAAoB,iBAAT9hE,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAGhCA,EAAQA,EAAMhN,QAAQkuE,EAAQ,IAC9B,IAAIa,EAAWX,EAAW5yE,KAAKwR,GAC/B,OAAO+hE,GAAYV,EAAU7yE,KAAKwR,GAASshE,EAAathE,EAAM7P,MAAM,GAAI4xE,EAAW,EAAI,GAAKZ,EAAW3yE,KAAKwR,GAnXpG,KAmXoHA,EAG9HhT,EAAOC,QAhQP,SAAkBmsE,EAAM4I,EAAM3hE,GAC5B,IAAI4hE,EACAC,EACAC,EACA3+D,EACA4+D,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARrJ,EACT,MAAM,IAAIr+D,UAtIQ,uBAkJpB,SAAS2nE,EAAWvuE,GAClB,IAAIqiB,EAAOyrD,EACPU,EAAUT,EAId,OAHAD,EAAWC,OAAWlwE,EACtBswE,EAAiBnuE,EACjBqP,EAAS41D,EAAK3lE,MAAMkvE,EAASnsD,GAI/B,SAASosD,EAAYzuE,GAMnB,OAJAmuE,EAAiBnuE,EAEjBiuE,EAAU/xE,WAAWwyE,EAAcb,GAE5BO,EAAUG,EAAWvuE,GAAQqP,EAUtC,SAASs/D,EAAa3uE,GACpB,IAAI4uE,EAAoB5uE,EAAOkuE,EAK/B,YAAwBrwE,IAAjBqwE,GAA8BU,GAAqBf,GAAQe,EAAoB,GAAKP,GAJjEruE,EAAOmuE,GAI2FH,EAG9H,SAASU,IACP,IAAI1uE,EAAOu7B,IAEX,GAAIozC,EAAa3uE,GACf,OAAO6uE,EAAa7uE,GAItBiuE,EAAU/xE,WAAWwyE,EAxBvB,SAAuB1uE,GACrB,IAEIqP,EAASw+D,GAFW7tE,EAAOkuE,GAG/B,OAAOG,EAASd,EAAUl+D,EAAQ2+D,GAFRhuE,EAAOmuE,IAEkC9+D,EAoBhCy/D,CAAc9uE,IAGnD,SAAS6uE,EAAa7uE,GAIpB,OAHAiuE,OAAUpwE,EAGNywE,GAAYR,EACPS,EAAWvuE,IAGpB8tE,EAAWC,OAAWlwE,EACfwR,GAgBT,SAAS0/D,IACP,IAAI/uE,EAAOu7B,IACPyzC,EAAaL,EAAa3uE,GAK9B,GAJA8tE,EAAW9wE,UACX+wE,EAAWxlE,KACX2lE,EAAeluE,EAEXgvE,EAAY,CACd,QAAgBnxE,IAAZowE,EACF,OAAOQ,EAAYP,GAGrB,GAAIG,EAGF,OADAJ,EAAU/xE,WAAWwyE,EAAcb,GAC5BU,EAAWL,GAQtB,YAJgBrwE,IAAZowE,IACFA,EAAU/xE,WAAWwyE,EAAcb,IAG9Bx+D,EAKT,OA3GAw+D,EAAOH,EAASG,IAAS,EAErBL,EAASthE,KACXkiE,IAAYliE,EAAQkiE,QAEpBJ,GADAK,EAAS,YAAaniE,GACHohE,EAAUI,EAASxhE,EAAQ8hE,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcpiE,IAAYA,EAAQoiE,SAAWA,GAmG1DS,EAAU/7B,OAvCV,gBACkBn1C,IAAZowE,GACFhyE,aAAagyE,GAGfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUpwE,GAkCjDkxE,EAAUE,MA/BV,WACE,YAAmBpxE,IAAZowE,EAAwB5+D,EAASw/D,EAAatzC,MA+BhDwzC,K","file":"js/vendors~application~front_pages~schedule-62f37ed408f1816f788e.chunk.js","sourcesContent":["module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","'use strict';\n\nvar stringify = require('./stringify');\n\nvar parse = require('./parse');\n\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar t = [\"Shift\", \"Meta\", \"Alt\", \"Control\"],\n e = \"object\" == (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) && /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? \"Meta\" : \"Control\";\n\nfunction n(t, e) {\n return \"function\" == typeof t.getModifierState && t.getModifierState(e);\n}\n\nfunction r(t) {\n return t.trim().split(\" \").map(function (t) {\n var n = t.split(/\\b\\+/),\n r = n.pop();\n return [n = n.map(function (t) {\n return \"$mod\" === t ? e : t;\n }), r];\n });\n}\n\nfunction o(e, o) {\n var i;\n void 0 === o && (o = {});\n var u = null != (i = o.timeout) ? i : 1e3,\n a = Object.keys(e).map(function (t) {\n return [r(t), e[t]];\n }),\n f = new Map(),\n c = null;\n return function (e) {\n e instanceof KeyboardEvent && (a.forEach(function (r) {\n var o = r[0],\n i = r[1],\n u = f.get(o) || o;\n !function (e, r) {\n return !(r[1].toUpperCase() !== e.key.toUpperCase() && r[1] !== e.code || r[0].find(function (t) {\n return !n(e, t);\n }) || t.find(function (t) {\n return !r[0].includes(t) && r[1] !== t && n(e, t);\n }));\n }(e, u[0]) ? n(e, e.key) || f.delete(o) : u.length > 1 ? f.set(o, u.slice(1)) : (f.delete(o), i(e));\n }), c && clearTimeout(c), c = setTimeout(f.clear.bind(f), u));\n };\n}\n\nfunction i(t, e, n) {\n var r;\n void 0 === n && (n = {});\n var i = null != (r = n.event) ? r : \"keydown\",\n u = o(e, n);\n return t.addEventListener(i, u), function () {\n t.removeEventListener(i, u);\n };\n}\n\nexport default i;\nexport { o as createKeybindingsHandler, r as parseKeybinding };","export function hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexport function lastItemOf(arr) {\n return arr[arr.length - 1];\n} // push only the items not included in the array\n\nexport function pushUnique(arr) {\n for (var _len = arguments.length, items = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n items[_key - 1] = arguments[_key];\n }\n\n items.forEach(function (item) {\n if (arr.includes(item)) {\n return;\n }\n\n arr.push(item);\n });\n return arr;\n}\nexport function stringToArray(str, separator) {\n // convert empty string to an empty array\n return str ? str.split(separator) : [];\n}\nexport function isInRange(testVal, min, max) {\n var minOK = min === undefined || testVal >= min;\n var maxOK = max === undefined || testVal <= max;\n return minOK && maxOK;\n}\nexport function limitToRange(val, min, max) {\n if (val < min) {\n return min;\n }\n\n if (val > max) {\n return max;\n }\n\n return val;\n}\nexport function createTagRepeat(tagName, repeat) {\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var html = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var openTagSrc = Object.keys(attributes).reduce(function (src, attr) {\n var val = attributes[attr];\n\n if (typeof val === 'function') {\n val = val(index);\n }\n\n return \"\".concat(src, \" \").concat(attr, \"=\\\"\").concat(val, \"\\\"\");\n }, tagName);\n html += \"<\".concat(openTagSrc, \">\");\n var next = index + 1;\n return next < repeat ? createTagRepeat(tagName, repeat, attributes, next, html) : html;\n} // Remove the spacing surrounding tags for HTML parser not to create text nodes\n// before/after elements\n\nexport function optimizeTemplateHTML(html) {\n return html.replace(/>\\s+/g, '>').replace(/\\s+ 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var baseDay = new Date(baseDate).getDay();\n return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));\n} // Get the ISO week of a date\n\nexport function getWeek(date) {\n // start of ISO week is Monday\n var thuOfTheWeek = dayOfTheWeekOf(date, 4, 1); // 1st week == the week where the 4th of January is in\n\n var firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);\n return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;\n} // Get the start year of the period of years that includes given date\n// years: length of the year period\n\nexport function startOfYearPeriod(date, years) {\n /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */\n var year = new Date(date).getFullYear();\n return Math.floor(year / years) * years;\n} // Convert date to the first/last date of the month/year of the date\n\nexport function regularizeDate(date, timeSpan, useLastDate) {\n if (timeSpan !== 1 && timeSpan !== 2) {\n return date;\n }\n\n var newDate = new Date(date);\n\n if (timeSpan === 1) {\n useLastDate ? newDate.setMonth(newDate.getMonth() + 1, 0) : newDate.setDate(1);\n } else {\n useLastDate ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0) : newDate.setMonth(0, 1);\n }\n\n return newDate.setHours(0, 0, 0, 0);\n}","import { stripTime, today } from './date.js';\nimport { lastItemOf } from './utils.js'; // pattern for format parts\n\nexport var reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/; // pattern for non date parts\n\nexport var reNonDateParts = /[\\s!-/:-@[-`{-~年月日]+/; // cache for persed formats\n\nvar knownFormats = {}; // parse funtions for date parts\n\nvar parseFns = {\n y: function y(date, year) {\n return new Date(date).setFullYear(parseInt(year, 10));\n },\n m: function m(date, month, locale) {\n var newDate = new Date(date);\n var monthIndex = parseInt(month, 10) - 1;\n\n if (isNaN(monthIndex)) {\n if (!month) {\n return NaN;\n }\n\n var monthName = month.toLowerCase();\n\n var compareNames = function compareNames(name) {\n return name.toLowerCase().startsWith(monthName);\n }; // compare with both short and full names because some locales have periods\n // in the short names (not equal to the first X letters of the full names)\n\n\n monthIndex = locale.monthsShort.findIndex(compareNames);\n\n if (monthIndex < 0) {\n monthIndex = locale.months.findIndex(compareNames);\n }\n\n if (monthIndex < 0) {\n return NaN;\n }\n }\n\n newDate.setMonth(monthIndex);\n return newDate.getMonth() !== normalizeMonth(monthIndex) ? newDate.setDate(0) : newDate.getTime();\n },\n d: function d(date, day) {\n return new Date(date).setDate(parseInt(day, 10));\n }\n}; // format functions for date parts\n\nvar formatFns = {\n d: function d(date) {\n return date.getDate();\n },\n dd: function dd(date) {\n return padZero(date.getDate(), 2);\n },\n D: function D(date, locale) {\n return locale.daysShort[date.getDay()];\n },\n DD: function DD(date, locale) {\n return locale.days[date.getDay()];\n },\n m: function m(date) {\n return date.getMonth() + 1;\n },\n mm: function mm(date) {\n return padZero(date.getMonth() + 1, 2);\n },\n M: function M(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MM: function MM(date, locale) {\n return locale.months[date.getMonth()];\n },\n y: function y(date) {\n return date.getFullYear();\n },\n yy: function yy(date) {\n return padZero(date.getFullYear(), 2).slice(-2);\n },\n yyyy: function yyyy(date) {\n return padZero(date.getFullYear(), 4);\n }\n}; // get month index in normal range (0 - 11) from any number\n\nfunction normalizeMonth(monthIndex) {\n return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);\n}\n\nfunction padZero(num, length) {\n return num.toString().padStart(length, '0');\n}\n\nfunction parseFormatString(format) {\n if (typeof format !== 'string') {\n throw new Error(\"Invalid date format.\");\n }\n\n if (format in knownFormats) {\n return knownFormats[format];\n } // sprit the format string into parts and seprators\n\n\n var separators = format.split(reFormatTokens);\n var parts = format.match(new RegExp(reFormatTokens, 'g'));\n\n if (separators.length === 0 || !parts) {\n throw new Error(\"Invalid date format.\");\n } // collect format functions used in the format\n\n\n var partFormatters = parts.map(function (token) {\n return formatFns[token];\n }); // collect parse function keys used in the format\n // iterate over parseFns' keys in order to keep the order of the keys.\n\n var partParserKeys = Object.keys(parseFns).reduce(function (keys, key) {\n var token = parts.find(function (part) {\n return part[0] !== 'D' && part[0].toLowerCase() === key;\n });\n\n if (token) {\n keys.push(key);\n }\n\n return keys;\n }, []);\n return knownFormats[format] = {\n parser: function parser(dateStr, locale) {\n var dateParts = dateStr.split(reNonDateParts).reduce(function (dtParts, part, index) {\n if (part.length > 0 && parts[index]) {\n var token = parts[index][0];\n\n if (token === 'M') {\n dtParts.m = part;\n } else if (token !== 'D') {\n dtParts[token] = part;\n }\n }\n\n return dtParts;\n }, {}); // iterate over partParserkeys so that the parsing is made in the oder\n // of year, month and day to prevent the day parser from correcting last\n // day of month wrongly\n\n return partParserKeys.reduce(function (origDate, key) {\n var newDate = parseFns[key](origDate, dateParts[key], locale); // ingnore the part failed to parse\n\n return isNaN(newDate) ? origDate : newDate;\n }, today());\n },\n formatter: function formatter(date, locale) {\n var dateStr = partFormatters.reduce(function (str, fn, index) {\n return str += \"\".concat(separators[index]).concat(fn(date, locale));\n }, ''); // separators' length is always parts' length + 1,\n\n return dateStr += lastItemOf(separators);\n }\n };\n}\n\nexport function parseDate(dateStr, format, locale) {\n if (dateStr instanceof Date || typeof dateStr === 'number') {\n var date = stripTime(dateStr);\n return isNaN(date) ? undefined : date;\n }\n\n if (!dateStr) {\n return undefined;\n }\n\n if (dateStr === 'today') {\n return today();\n }\n\n if (format && format.toValue) {\n var _date = format.toValue(dateStr, format, locale);\n\n return isNaN(_date) ? undefined : stripTime(_date);\n }\n\n return parseFormatString(format).parser(dateStr, locale);\n}\nexport function formatDate(date, format, locale) {\n if (isNaN(date) || !date && date !== 0) {\n return '';\n }\n\n var dateObj = typeof date === 'number' ? new Date(date) : date;\n\n if (format.toDisplay) {\n return format.toDisplay(dateObj, format, locale);\n }\n\n return parseFormatString(format).formatter(dateObj, locale);\n}","var range = document.createRange();\nexport function parseHTML(html) {\n return range.createContextualFragment(html);\n}\nexport function getParent(el) {\n return el.parentElement || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);\n}\nexport function isActiveElement(el) {\n return el.getRootNode().activeElement === el;\n} // equivalent to jQuery's :visble\n\nexport function isVisible(el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n}\nexport function hideElement(el) {\n if (el.style.display === 'none') {\n return;\n } // back up the existing display setting in data-style-display\n\n\n if (el.style.display) {\n el.dataset.styleDisplay = el.style.display;\n }\n\n el.style.display = 'none';\n}\nexport function showElement(el) {\n if (el.style.display !== 'none') {\n return;\n }\n\n if (el.dataset.styleDisplay) {\n // restore backed-up dispay property\n el.style.display = el.dataset.styleDisplay;\n delete el.dataset.styleDisplay;\n } else {\n el.style.display = '';\n }\n}\nexport function emptyChildNodes(el) {\n if (el.firstChild) {\n el.removeChild(el.firstChild);\n emptyChildNodes(el);\n }\n}\nexport function replaceChildNodes(el, newChildNodes) {\n emptyChildNodes(el);\n\n if (newChildNodes instanceof DocumentFragment) {\n el.appendChild(newChildNodes);\n } else if (typeof newChildNodes === 'string') {\n el.appendChild(parseHTML(newChildNodes));\n } else if (typeof newChildNodes.forEach === 'function') {\n newChildNodes.forEach(function (node) {\n el.appendChild(node);\n });\n }\n}","function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar listenerRegistry = new WeakMap();\nvar _EventTarget$prototyp = EventTarget.prototype,\n addEventListener = _EventTarget$prototyp.addEventListener,\n removeEventListener = _EventTarget$prototyp.removeEventListener; // Register event listeners to a key object\n// listeners: array of listener definitions;\n// - each definition must be a flat array of event target and the arguments\n// used to call addEventListener() on the target\n\nexport function registerListeners(keyObj, listeners) {\n var registered = listenerRegistry.get(keyObj);\n\n if (!registered) {\n registered = [];\n listenerRegistry.set(keyObj, registered);\n }\n\n listeners.forEach(function (listener) {\n addEventListener.call.apply(addEventListener, _toConsumableArray(listener));\n registered.push(listener);\n });\n}\nexport function unregisterListeners(keyObj) {\n var listeners = listenerRegistry.get(keyObj);\n\n if (!listeners) {\n return;\n }\n\n listeners.forEach(function (listener) {\n removeEventListener.call.apply(removeEventListener, _toConsumableArray(listener));\n });\n listenerRegistry.delete(keyObj);\n} // Event.composedPath() polyfill for Edge\n// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec\n\nif (!Event.prototype.composedPath) {\n var getComposedPath = function getComposedPath(node) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n path.push(node);\n var parent;\n\n if (node.parentNode) {\n parent = node.parentNode;\n } else if (node.host) {\n // ShadowRoot\n parent = node.host;\n } else if (node.defaultView) {\n // Document\n parent = node.defaultView;\n }\n\n return parent ? getComposedPath(parent, path) : path;\n };\n\n Event.prototype.composedPath = function () {\n return getComposedPath(this.target);\n };\n}\n\nfunction findFromPath(path, criteria, currentTarget) {\n var _path = _toArray(path),\n node = _path[0],\n rest = _path.slice(1);\n\n if (criteria(node)) {\n return node;\n }\n\n if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {\n // stop when reaching currentTarget or \n return;\n }\n\n return findFromPath(rest, criteria, currentTarget);\n} // Search for the actual target of a delegated event\n\n\nexport function findElementInEventPath(ev, selector) {\n var criteria = typeof selector === 'function' ? selector : function (el) {\n return el instanceof Element && el.matches(selector);\n };\n return findFromPath(ev.composedPath(), criteria, ev.currentTarget);\n}","// default locales\nexport var locales = {\n en: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n today: \"Today\",\n clear: \"Clear\",\n titleFormat: \"MM y\"\n }\n};","// config options updatable by setOptions() and their default values\nvar defaultOptions = {\n autohide: false,\n beforeShowDay: null,\n beforeShowDecade: null,\n beforeShowMonth: null,\n beforeShowYear: null,\n calendarWeeks: false,\n clearBtn: false,\n dateDelimiter: ',',\n datesDisabled: [],\n daysOfWeekDisabled: [],\n daysOfWeekHighlighted: [],\n defaultViewDate: undefined,\n // placeholder, defaults to today() by the program\n disableTouchKeyboard: false,\n format: 'mm/dd/yyyy',\n language: 'en',\n maxDate: null,\n maxNumberOfDates: 1,\n maxView: 3,\n minDate: null,\n nextArrow: '»',\n orientation: 'auto',\n pickLevel: 0,\n prevArrow: '«',\n showDaysOfWeek: true,\n showOnClick: true,\n showOnFocus: true,\n startView: 0,\n title: '',\n todayBtn: false,\n todayBtnMode: 0,\n todayHighlight: false,\n updateOnBlur: true,\n weekStart: 0\n};\nexport default defaultOptions;","import { hasProperty, pushUnique } from '../lib/utils.js';\nimport { dateValue, regularizeDate } from '../lib/date.js';\nimport { reFormatTokens, parseDate } from '../lib/date-format.js';\nimport { parseHTML } from '../lib/dom.js';\nimport defaultOptions from './defaultOptions.js';\nvar defaultLang = defaultOptions.language,\n defaultFormat = defaultOptions.format,\n defaultWeekStart = defaultOptions.weekStart; // Reducer function to filter out invalid day-of-week from the input\n\nfunction sanitizeDOW(dow, day) {\n return dow.length < 6 && day >= 0 && day < 7 ? pushUnique(dow, day) : dow;\n}\n\nfunction calcEndOfWeek(startOfWeek) {\n return (startOfWeek + 6) % 7;\n} // validate input date. if invalid, fallback to the original value\n\n\nfunction validateDate(value, format, locale, origValue) {\n var date = parseDate(value, format, locale);\n return date !== undefined ? date : origValue;\n} // Validate viewId. if invalid, fallback to the original value\n\n\nfunction validateViewId(value, origValue) {\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n var viewId = parseInt(value, 10);\n return viewId >= 0 && viewId <= max ? viewId : origValue;\n} // Create Datepicker configuration to set\n\n\nexport default function processOptions(options, datepicker) {\n var inOpts = Object.assign({}, options);\n var config = {};\n var locales = datepicker.constructor.locales;\n var rangeSideIndex = datepicker.rangeSideIndex;\n\n var _ref = datepicker.config || {},\n format = _ref.format,\n language = _ref.language,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n maxView = _ref.maxView,\n minDate = _ref.minDate,\n pickLevel = _ref.pickLevel,\n startView = _ref.startView,\n weekStart = _ref.weekStart;\n\n if (inOpts.language) {\n var lang;\n\n if (inOpts.language !== language) {\n if (locales[inOpts.language]) {\n lang = inOpts.language;\n } else {\n // Check if langauge + region tag can fallback to the one without\n // region (e.g. fr-CA → fr)\n lang = inOpts.language.split('-')[0];\n\n if (locales[lang] === undefined) {\n lang = false;\n }\n }\n }\n\n delete inOpts.language;\n\n if (lang) {\n language = config.language = lang; // update locale as well when updating language\n\n var origLocale = locale || locales[defaultLang]; // use default language's properties for the fallback\n\n locale = Object.assign({\n format: defaultFormat,\n weekStart: defaultWeekStart\n }, locales[defaultLang]);\n\n if (language !== defaultLang) {\n Object.assign(locale, locales[language]);\n }\n\n config.locale = locale; // if format and/or weekStart are the same as old locale's defaults,\n // update them to new locale's defaults\n\n if (format === origLocale.format) {\n format = config.format = locale.format;\n }\n\n if (weekStart === origLocale.weekStart) {\n weekStart = config.weekStart = locale.weekStart;\n config.weekEnd = calcEndOfWeek(locale.weekStart);\n }\n }\n }\n\n if (inOpts.format) {\n var hasToDisplay = typeof inOpts.format.toDisplay === 'function';\n var hasToValue = typeof inOpts.format.toValue === 'function';\n var validFormatString = reFormatTokens.test(inOpts.format);\n\n if (hasToDisplay && hasToValue || validFormatString) {\n format = config.format = inOpts.format;\n }\n\n delete inOpts.format;\n } //*** pick level ***//\n\n\n var newPickLevel = pickLevel;\n\n if (inOpts.pickLevel !== undefined) {\n newPickLevel = validateViewId(inOpts.pickLevel, 2);\n delete inOpts.pickLevel;\n }\n\n if (newPickLevel !== pickLevel) {\n if (newPickLevel > pickLevel) {\n // complement current minDate/madDate so that the existing range will be\n // expanded to fit the new level later\n if (inOpts.minDate === undefined) {\n inOpts.minDate = minDate;\n }\n\n if (inOpts.maxDate === undefined) {\n inOpts.maxDate = maxDate;\n }\n } // complement datesDisabled so that it will be reset later\n\n\n if (!inOpts.datesDisabled) {\n inOpts.datesDisabled = [];\n }\n\n pickLevel = config.pickLevel = newPickLevel;\n } //*** dates ***//\n // while min and maxDate for \"no limit\" in the options are better to be null\n // (especially when updating), the ones in the config have to be undefined\n // because null is treated as 0 (= unix epoch) when comparing with time value\n\n\n var minDt = minDate;\n var maxDt = maxDate;\n\n if (inOpts.minDate !== undefined) {\n var defaultMinDt = dateValue(0, 0, 1);\n minDt = inOpts.minDate === null ? defaultMinDt // set 0000-01-01 to prevent negative values for year\n : validateDate(inOpts.minDate, format, locale, minDt);\n\n if (minDt !== defaultMinDt) {\n minDt = regularizeDate(minDt, pickLevel, false);\n }\n\n delete inOpts.minDate;\n }\n\n if (inOpts.maxDate !== undefined) {\n maxDt = inOpts.maxDate === null ? undefined : validateDate(inOpts.maxDate, format, locale, maxDt);\n\n if (maxDt !== undefined) {\n maxDt = regularizeDate(maxDt, pickLevel, true);\n }\n\n delete inOpts.maxDate;\n }\n\n if (maxDt < minDt) {\n minDate = config.minDate = maxDt;\n maxDate = config.maxDate = minDt;\n } else {\n if (minDate !== minDt) {\n minDate = config.minDate = minDt;\n }\n\n if (maxDate !== maxDt) {\n maxDate = config.maxDate = maxDt;\n }\n }\n\n if (inOpts.datesDisabled) {\n config.datesDisabled = inOpts.datesDisabled.reduce(function (dates, dt) {\n var date = parseDate(dt, format, locale);\n return date !== undefined ? pushUnique(dates, regularizeDate(date, pickLevel, rangeSideIndex)) : dates;\n }, []);\n delete inOpts.datesDisabled;\n }\n\n if (inOpts.defaultViewDate !== undefined) {\n var viewDate = parseDate(inOpts.defaultViewDate, format, locale);\n\n if (viewDate !== undefined) {\n config.defaultViewDate = viewDate;\n }\n\n delete inOpts.defaultViewDate;\n } //*** days of week ***//\n\n\n if (inOpts.weekStart !== undefined) {\n var wkStart = Number(inOpts.weekStart) % 7;\n\n if (!isNaN(wkStart)) {\n weekStart = config.weekStart = wkStart;\n config.weekEnd = calcEndOfWeek(wkStart);\n }\n\n delete inOpts.weekStart;\n }\n\n if (inOpts.daysOfWeekDisabled) {\n config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekDisabled;\n }\n\n if (inOpts.daysOfWeekHighlighted) {\n config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);\n delete inOpts.daysOfWeekHighlighted;\n } //*** multi date ***//\n\n\n if (inOpts.maxNumberOfDates !== undefined) {\n var maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);\n\n if (maxNumberOfDates >= 0) {\n config.maxNumberOfDates = maxNumberOfDates;\n config.multidate = maxNumberOfDates !== 1;\n }\n\n delete inOpts.maxNumberOfDates;\n }\n\n if (inOpts.dateDelimiter) {\n config.dateDelimiter = String(inOpts.dateDelimiter);\n delete inOpts.dateDelimiter;\n } //*** view ***//\n\n\n var newMaxView = maxView;\n\n if (inOpts.maxView !== undefined) {\n newMaxView = validateViewId(inOpts.maxView, maxView);\n delete inOpts.maxView;\n } // ensure max view >= pick level\n\n\n newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;\n\n if (newMaxView !== maxView) {\n maxView = config.maxView = newMaxView;\n }\n\n var newStartView = startView;\n\n if (inOpts.startView !== undefined) {\n newStartView = validateViewId(inOpts.startView, newStartView);\n delete inOpts.startView;\n } // ensure pick level <= start view <= max view\n\n\n if (newStartView < pickLevel) {\n newStartView = pickLevel;\n } else if (newStartView > maxView) {\n newStartView = maxView;\n }\n\n if (newStartView !== startView) {\n config.startView = newStartView;\n } //*** template ***//\n\n\n if (inOpts.prevArrow) {\n var prevArrow = parseHTML(inOpts.prevArrow);\n\n if (prevArrow.childNodes.length > 0) {\n config.prevArrow = prevArrow.childNodes;\n }\n\n delete inOpts.prevArrow;\n }\n\n if (inOpts.nextArrow) {\n var nextArrow = parseHTML(inOpts.nextArrow);\n\n if (nextArrow.childNodes.length > 0) {\n config.nextArrow = nextArrow.childNodes;\n }\n\n delete inOpts.nextArrow;\n } //*** misc ***//\n\n\n if (inOpts.disableTouchKeyboard !== undefined) {\n config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;\n delete inOpts.disableTouchKeyboard;\n }\n\n if (inOpts.orientation) {\n var orientation = inOpts.orientation.toLowerCase().split(/\\s+/g);\n config.orientation = {\n x: orientation.find(function (x) {\n return x === 'left' || x === 'right';\n }) || 'auto',\n y: orientation.find(function (y) {\n return y === 'top' || y === 'bottom';\n }) || 'auto'\n };\n delete inOpts.orientation;\n }\n\n if (inOpts.todayBtnMode !== undefined) {\n switch (inOpts.todayBtnMode) {\n case 0:\n case 1:\n config.todayBtnMode = inOpts.todayBtnMode;\n }\n\n delete inOpts.todayBtnMode;\n } //*** copy the rest ***//\n\n\n Object.keys(inOpts).forEach(function (key) {\n if (inOpts[key] !== undefined && hasProperty(defaultOptions, key)) {\n config[key] = inOpts[key];\n }\n });\n return config;\n}","import { optimizeTemplateHTML } from '../../lib/utils.js';\nvar pickerTemplate = optimizeTemplateHTML(\"
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\");\nexport default pickerTemplate;","import { createTagRepeat, optimizeTemplateHTML } from '../../lib/utils.js';\nvar daysTemplate = optimizeTemplateHTML(\"
\\n
\".concat(createTagRepeat('span', 7, {\n class: 'dow'\n}), \"
\\n
\").concat(createTagRepeat('span', 42), \"
\\n
\"));\nexport default daysTemplate;","import { createTagRepeat, optimizeTemplateHTML } from '../../lib/utils.js';\nvar calendarWeeksTemplate = optimizeTemplateHTML(\"
\\n
\\n
\".concat(createTagRepeat('span', 6, {\n class: 'week'\n}), \"
\\n
\"));\nexport default calendarWeeksTemplate;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { pushUnique } from '../../lib/utils.js';\nimport { parseHTML, replaceChildNodes } from '../../lib/dom.js'; // Base class of the view classes\n\nvar View = /*#__PURE__*/function () {\n function View(picker, config) {\n _classCallCheck(this, View);\n\n Object.assign(this, config, {\n picker: picker,\n element: parseHTML(\"
\").firstChild,\n selected: []\n });\n this.init(this.picker.datepicker.config);\n }\n\n _createClass(View, [{\n key: \"init\",\n value: function init(options) {\n if (options.pickLevel !== undefined) {\n this.isMinView = this.id === options.pickLevel;\n }\n\n this.setOptions(options);\n this.updateFocus();\n this.updateSelection();\n } // Execute beforeShow() callback and apply the result to the element\n // args:\n // - current - current value on the iteration on view rendering\n // - timeValue - time value of the date to pass to beforeShow()\n\n }, {\n key: \"performBeforeHook\",\n value: function performBeforeHook(el, current, timeValue) {\n var result = this.beforeShow(new Date(timeValue));\n\n switch (_typeof(result)) {\n case 'boolean':\n result = {\n enabled: result\n };\n break;\n\n case 'string':\n result = {\n classes: result\n };\n }\n\n if (result) {\n if (result.enabled === false) {\n el.classList.add('disabled');\n pushUnique(this.disabled, current);\n }\n\n if (result.classes) {\n var _el$classList;\n\n var extraClasses = result.classes.split(/\\s+/);\n\n (_el$classList = el.classList).add.apply(_el$classList, _toConsumableArray(extraClasses));\n\n if (extraClasses.includes('disabled')) {\n pushUnique(this.disabled, current);\n }\n }\n\n if (result.content) {\n replaceChildNodes(el, result.content);\n }\n }\n }\n }]);\n\n return View;\n}();\n\nexport { View as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { hasProperty, pushUnique } from '../../lib/utils.js';\nimport { today, dateValue, addDays, addWeeks, dayOfTheWeekOf, getWeek } from '../../lib/date.js';\nimport { formatDate } from '../../lib/date-format.js';\nimport { parseHTML, showElement, hideElement } from '../../lib/dom.js';\nimport daysTemplate from '../templates/daysTemplate.js';\nimport calendarWeeksTemplate from '../templates/calendarWeeksTemplate.js';\nimport View from './View.js';\n\nvar DaysView = /*#__PURE__*/function (_View) {\n _inherits(DaysView, _View);\n\n var _super = _createSuper(DaysView);\n\n function DaysView(picker) {\n _classCallCheck(this, DaysView);\n\n return _super.call(this, picker, {\n id: 0,\n name: 'days',\n cellClass: 'day'\n });\n }\n\n _createClass(DaysView, [{\n key: \"init\",\n value: function init(options) {\n var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (onConstruction) {\n var inner = parseHTML(daysTemplate).firstChild;\n this.dow = inner.firstChild;\n this.grid = inner.lastChild;\n this.element.appendChild(inner);\n }\n\n _get(_getPrototypeOf(DaysView.prototype), \"init\", this).call(this, options);\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var _this = this;\n\n var updateDOW;\n\n if (hasProperty(options, 'minDate')) {\n this.minDate = options.minDate;\n }\n\n if (hasProperty(options, 'maxDate')) {\n this.maxDate = options.maxDate;\n }\n\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n\n if (options.daysOfWeekDisabled) {\n this.daysOfWeekDisabled = options.daysOfWeekDisabled;\n updateDOW = true;\n }\n\n if (options.daysOfWeekHighlighted) {\n this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;\n }\n\n if (options.todayHighlight !== undefined) {\n this.todayHighlight = options.todayHighlight;\n }\n\n if (options.weekStart !== undefined) {\n this.weekStart = options.weekStart;\n this.weekEnd = options.weekEnd;\n updateDOW = true;\n }\n\n if (options.locale) {\n var locale = this.locale = options.locale;\n this.dayNames = locale.daysMin;\n this.switchLabelFormat = locale.titleFormat;\n updateDOW = true;\n }\n\n if (options.beforeShowDay !== undefined) {\n this.beforeShow = typeof options.beforeShowDay === 'function' ? options.beforeShowDay : undefined;\n }\n\n if (options.calendarWeeks !== undefined) {\n if (options.calendarWeeks && !this.calendarWeeks) {\n var weeksElem = parseHTML(calendarWeeksTemplate).firstChild;\n this.calendarWeeks = {\n element: weeksElem,\n dow: weeksElem.firstChild,\n weeks: weeksElem.lastChild\n };\n this.element.insertBefore(weeksElem, this.element.firstChild);\n } else if (this.calendarWeeks && !options.calendarWeeks) {\n this.element.removeChild(this.calendarWeeks.element);\n this.calendarWeeks = null;\n }\n }\n\n if (options.showDaysOfWeek !== undefined) {\n if (options.showDaysOfWeek) {\n showElement(this.dow);\n\n if (this.calendarWeeks) {\n showElement(this.calendarWeeks.dow);\n }\n } else {\n hideElement(this.dow);\n\n if (this.calendarWeeks) {\n hideElement(this.calendarWeeks.dow);\n }\n }\n } // update days-of-week when locale, daysOfweekDisabled or weekStart is changed\n\n\n if (updateDOW) {\n Array.from(this.dow.children).forEach(function (el, index) {\n var dow = (_this.weekStart + index) % 7;\n el.textContent = _this.dayNames[dow];\n el.className = _this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';\n });\n }\n } // Apply update on the focused date to view's settings\n\n }, {\n key: \"updateFocus\",\n value: function updateFocus() {\n var viewDate = new Date(this.picker.viewDate);\n var viewYear = viewDate.getFullYear();\n var viewMonth = viewDate.getMonth();\n var firstOfMonth = dateValue(viewYear, viewMonth, 1);\n var start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart);\n this.first = firstOfMonth;\n this.last = dateValue(viewYear, viewMonth + 1, 0);\n this.start = start;\n this.focused = this.picker.viewDate;\n } // Apply update on the selected dates to view's settings\n\n }, {\n key: \"updateSelection\",\n value: function updateSelection() {\n var _this$picker$datepick = this.picker.datepicker,\n dates = _this$picker$datepick.dates,\n rangepicker = _this$picker$datepick.rangepicker;\n this.selected = dates;\n\n if (rangepicker) {\n this.range = rangepicker.dates;\n }\n } // Update the entire view UI\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // update today marker on ever render\n this.today = this.todayHighlight ? today() : undefined; // refresh disabled dates on every render in order to clear the ones added\n // by beforeShow hook at previous render\n\n this.disabled = _toConsumableArray(this.datesDisabled);\n var switchLabel = formatDate(this.focused, this.switchLabelFormat, this.locale);\n this.picker.setViewSwitchLabel(switchLabel);\n this.picker.setPrevBtnDisabled(this.first <= this.minDate);\n this.picker.setNextBtnDisabled(this.last >= this.maxDate);\n\n if (this.calendarWeeks) {\n // start of the UTC week (Monday) of the 1st of the month\n var startOfWeek = dayOfTheWeekOf(this.first, 1, 1);\n Array.from(this.calendarWeeks.weeks.children).forEach(function (el, index) {\n el.textContent = getWeek(addWeeks(startOfWeek, index));\n });\n }\n\n Array.from(this.grid.children).forEach(function (el, index) {\n var classList = el.classList;\n var current = addDays(_this2.start, index);\n var date = new Date(current);\n var day = date.getDay();\n el.className = \"datepicker-cell \".concat(_this2.cellClass);\n el.dataset.date = current;\n el.textContent = date.getDate();\n\n if (current < _this2.first) {\n classList.add('prev');\n } else if (current > _this2.last) {\n classList.add('next');\n }\n\n if (_this2.today === current) {\n classList.add('today');\n }\n\n if (current < _this2.minDate || current > _this2.maxDate || _this2.disabled.includes(current)) {\n classList.add('disabled');\n }\n\n if (_this2.daysOfWeekDisabled.includes(day)) {\n classList.add('disabled');\n pushUnique(_this2.disabled, current);\n }\n\n if (_this2.daysOfWeekHighlighted.includes(day)) {\n classList.add('highlighted');\n }\n\n if (_this2.range) {\n var _this2$range = _slicedToArray(_this2.range, 2),\n rangeStart = _this2$range[0],\n rangeEnd = _this2$range[1];\n\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n\n if (current === rangeStart) {\n classList.add('range-start');\n }\n\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n }\n\n if (_this2.selected.includes(current)) {\n classList.add('selected');\n }\n\n if (current === _this2.focused) {\n classList.add('focused');\n }\n\n if (_this2.beforeShow) {\n _this2.performBeforeHook(el, current, current);\n }\n });\n } // Update the view UI by applying the changes of selected and focused items\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this3 = this;\n\n var _ref = this.range || [],\n _ref2 = _slicedToArray(_ref, 2),\n rangeStart = _ref2[0],\n rangeEnd = _ref2[1];\n\n this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach(function (el) {\n var current = Number(el.dataset.date);\n var classList = el.classList;\n\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n\n if (current === rangeStart) {\n classList.add('range-start');\n }\n\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n\n if (_this3.selected.includes(current)) {\n classList.add('selected');\n }\n\n if (current === _this3.focused) {\n classList.add('focused');\n }\n });\n } // Update the view UI by applying the change of focused item\n\n }, {\n key: \"refreshFocus\",\n value: function refreshFocus() {\n var index = Math.round((this.focused - this.start) / 86400000);\n this.grid.querySelectorAll('.focused').forEach(function (el) {\n el.classList.remove('focused');\n });\n this.grid.children[index].classList.add('focused');\n }\n }]);\n\n return DaysView;\n}(View);\n\nexport { DaysView as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { hasProperty, pushUnique, createTagRepeat } from '../../lib/utils.js';\nimport { dateValue } from '../../lib/date.js';\nimport { parseHTML } from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction computeMonthRange(range, thisYear) {\n if (!range || !range[0] || !range[1]) {\n return;\n }\n\n var _range = _slicedToArray(range, 2),\n _range$ = _slicedToArray(_range[0], 2),\n startY = _range$[0],\n startM = _range$[1],\n _range$2 = _slicedToArray(_range[1], 2),\n endY = _range$2[0],\n endM = _range$2[1];\n\n if (startY > thisYear || endY < thisYear) {\n return;\n }\n\n return [startY === thisYear ? startM : -1, endY === thisYear ? endM : 12];\n}\n\nvar MonthsView = /*#__PURE__*/function (_View) {\n _inherits(MonthsView, _View);\n\n var _super = _createSuper(MonthsView);\n\n function MonthsView(picker) {\n _classCallCheck(this, MonthsView);\n\n return _super.call(this, picker, {\n id: 1,\n name: 'months',\n cellClass: 'month'\n });\n }\n\n _createClass(MonthsView, [{\n key: \"init\",\n value: function init(options) {\n var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (onConstruction) {\n this.grid = this.element;\n this.element.classList.add('months', 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {\n 'data-month': function dataMonth(ix) {\n return ix;\n }\n })));\n }\n\n _get(_getPrototypeOf(MonthsView.prototype), \"init\", this).call(this, options);\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n if (options.locale) {\n this.monthNames = options.locale.monthsShort;\n }\n\n if (hasProperty(options, 'minDate')) {\n if (options.minDate === undefined) {\n this.minYear = this.minMonth = this.minDate = undefined;\n } else {\n var minDateObj = new Date(options.minDate);\n this.minYear = minDateObj.getFullYear();\n this.minMonth = minDateObj.getMonth();\n this.minDate = minDateObj.setDate(1);\n }\n }\n\n if (hasProperty(options, 'maxDate')) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxMonth = this.maxDate = undefined;\n } else {\n var maxDateObj = new Date(options.maxDate);\n this.maxYear = maxDateObj.getFullYear();\n this.maxMonth = maxDateObj.getMonth();\n this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0);\n }\n }\n\n if (this.isMinView) {\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n } else {\n this.datesDisabled = [];\n }\n\n if (options.beforeShowMonth !== undefined) {\n this.beforeShow = typeof options.beforeShowMonth === 'function' ? options.beforeShowMonth : undefined;\n }\n } // Update view's settings to reflect the viewDate set on the picker\n\n }, {\n key: \"updateFocus\",\n value: function updateFocus() {\n var viewDate = new Date(this.picker.viewDate);\n this.year = viewDate.getFullYear();\n this.focused = viewDate.getMonth();\n } // Update view's settings to reflect the selected dates\n\n }, {\n key: \"updateSelection\",\n value: function updateSelection() {\n var _this$picker$datepick = this.picker.datepicker,\n dates = _this$picker$datepick.dates,\n rangepicker = _this$picker$datepick.rangepicker;\n this.selected = dates.reduce(function (selected, timeValue) {\n var date = new Date(timeValue);\n var year = date.getFullYear();\n var month = date.getMonth();\n\n if (selected[year] === undefined) {\n selected[year] = [month];\n } else {\n pushUnique(selected[year], month);\n }\n\n return selected;\n }, {});\n\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(function (timeValue) {\n var date = new Date(timeValue);\n return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];\n });\n }\n } // Update the entire view UI\n\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n\n // refresh disabled months on every render in order to clear the ones added\n // by beforeShow hook at previous render\n // this.disabled = [...this.datesDisabled];\n this.disabled = this.datesDisabled.reduce(function (arr, disabled) {\n var dt = new Date(disabled);\n\n if (_this.year === dt.getFullYear()) {\n arr.push(dt.getMonth());\n }\n\n return arr;\n }, []);\n this.picker.setViewSwitchLabel(this.year);\n this.picker.setPrevBtnDisabled(this.year <= this.minYear);\n this.picker.setNextBtnDisabled(this.year >= this.maxYear);\n var selected = this.selected[this.year] || [];\n var yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;\n var isMinYear = this.year === this.minYear;\n var isMaxYear = this.year === this.maxYear;\n var range = computeMonthRange(this.range, this.year);\n Array.from(this.grid.children).forEach(function (el, index) {\n var classList = el.classList;\n var date = dateValue(_this.year, index, 1);\n el.className = \"datepicker-cell \".concat(_this.cellClass);\n\n if (_this.isMinView) {\n el.dataset.date = date;\n } // reset text on every render to clear the custom content set\n // by beforeShow hook at previous render\n\n\n el.textContent = _this.monthNames[index];\n\n if (yrOutOfRange || isMinYear && index < _this.minMonth || isMaxYear && index > _this.maxMonth || _this.disabled.includes(index)) {\n classList.add('disabled');\n }\n\n if (range) {\n var _range2 = _slicedToArray(range, 2),\n rangeStart = _range2[0],\n rangeEnd = _range2[1];\n\n if (index > rangeStart && index < rangeEnd) {\n classList.add('range');\n }\n\n if (index === rangeStart) {\n classList.add('range-start');\n }\n\n if (index === rangeEnd) {\n classList.add('range-end');\n }\n }\n\n if (selected.includes(index)) {\n classList.add('selected');\n }\n\n if (index === _this.focused) {\n classList.add('focused');\n }\n\n if (_this.beforeShow) {\n _this.performBeforeHook(el, index, date);\n }\n });\n } // Update the view UI by applying the changes of selected and focused items\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this2 = this;\n\n var selected = this.selected[this.year] || [];\n\n var _ref = computeMonthRange(this.range, this.year) || [],\n _ref2 = _slicedToArray(_ref, 2),\n rangeStart = _ref2[0],\n rangeEnd = _ref2[1];\n\n this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach(function (el, index) {\n var classList = el.classList;\n\n if (index > rangeStart && index < rangeEnd) {\n classList.add('range');\n }\n\n if (index === rangeStart) {\n classList.add('range-start');\n }\n\n if (index === rangeEnd) {\n classList.add('range-end');\n }\n\n if (selected.includes(index)) {\n classList.add('selected');\n }\n\n if (index === _this2.focused) {\n classList.add('focused');\n }\n });\n } // Update the view UI by applying the change of focused item\n\n }, {\n key: \"refreshFocus\",\n value: function refreshFocus() {\n this.grid.querySelectorAll('.focused').forEach(function (el) {\n el.classList.remove('focused');\n });\n this.grid.children[this.focused].classList.add('focused');\n }\n }]);\n\n return MonthsView;\n}(View);\n\nexport { MonthsView as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { hasProperty, pushUnique, createTagRepeat } from '../../lib/utils.js';\nimport { dateValue, startOfYearPeriod } from '../../lib/date.js';\nimport { parseHTML } from '../../lib/dom.js';\nimport View from './View.js';\n\nfunction toTitleCase(word) {\n return _toConsumableArray(word).reduce(function (str, ch, ix) {\n return str += ix ? ch : ch.toUpperCase();\n }, '');\n} // Class representing the years and decades view elements\n\n\nvar YearsView = /*#__PURE__*/function (_View) {\n _inherits(YearsView, _View);\n\n var _super = _createSuper(YearsView);\n\n function YearsView(picker, config) {\n _classCallCheck(this, YearsView);\n\n return _super.call(this, picker, config);\n }\n\n _createClass(YearsView, [{\n key: \"init\",\n value: function init(options) {\n var onConstruction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (onConstruction) {\n this.navStep = this.step * 10;\n this.beforeShowOption = \"beforeShow\".concat(toTitleCase(this.cellClass));\n this.grid = this.element;\n this.element.classList.add(this.name, 'datepicker-grid');\n this.grid.appendChild(parseHTML(createTagRepeat('span', 12)));\n }\n\n _get(_getPrototypeOf(YearsView.prototype), \"init\", this).call(this, options);\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n if (hasProperty(options, 'minDate')) {\n if (options.minDate === undefined) {\n this.minYear = this.minDate = undefined;\n } else {\n this.minYear = startOfYearPeriod(options.minDate, this.step);\n this.minDate = dateValue(this.minYear, 0, 1);\n }\n }\n\n if (hasProperty(options, 'maxDate')) {\n if (options.maxDate === undefined) {\n this.maxYear = this.maxDate = undefined;\n } else {\n this.maxYear = startOfYearPeriod(options.maxDate, this.step);\n this.maxDate = dateValue(this.maxYear, 11, 31);\n }\n }\n\n if (this.isMinView) {\n if (options.datesDisabled) {\n this.datesDisabled = options.datesDisabled;\n }\n } else {\n this.datesDisabled = [];\n }\n\n if (options[this.beforeShowOption] !== undefined) {\n var beforeShow = options[this.beforeShowOption];\n this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;\n }\n } // Update view's settings to reflect the viewDate set on the picker\n\n }, {\n key: \"updateFocus\",\n value: function updateFocus() {\n var viewDate = new Date(this.picker.viewDate);\n var first = startOfYearPeriod(viewDate, this.navStep);\n var last = first + 9 * this.step;\n this.first = first;\n this.last = last;\n this.start = first - this.step;\n this.focused = startOfYearPeriod(viewDate, this.step);\n } // Update view's settings to reflect the selected dates\n\n }, {\n key: \"updateSelection\",\n value: function updateSelection() {\n var _this = this;\n\n var _this$picker$datepick = this.picker.datepicker,\n dates = _this$picker$datepick.dates,\n rangepicker = _this$picker$datepick.rangepicker;\n this.selected = dates.reduce(function (years, timeValue) {\n return pushUnique(years, startOfYearPeriod(timeValue, _this.step));\n }, []);\n\n if (rangepicker && rangepicker.dates) {\n this.range = rangepicker.dates.map(function (timeValue) {\n if (timeValue !== undefined) {\n return startOfYearPeriod(timeValue, _this.step);\n }\n });\n }\n } // Update the entire view UI\n\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n // refresh disabled years on every render in order to clear the ones added\n // by beforeShow hook at previous render\n // this.disabled = [...this.datesDisabled];\n this.disabled = this.datesDisabled.map(function (disabled) {\n return new Date(disabled).getFullYear();\n });\n this.picker.setViewSwitchLabel(\"\".concat(this.first, \"-\").concat(this.last));\n this.picker.setPrevBtnDisabled(this.first <= this.minYear);\n this.picker.setNextBtnDisabled(this.last >= this.maxYear);\n Array.from(this.grid.children).forEach(function (el, index) {\n var classList = el.classList;\n var current = _this2.start + index * _this2.step;\n var date = dateValue(current, 0, 1);\n el.className = \"datepicker-cell \".concat(_this2.cellClass);\n\n if (_this2.isMinView) {\n el.dataset.date = date;\n }\n\n el.textContent = el.dataset.year = current;\n\n if (index === 0) {\n classList.add('prev');\n } else if (index === 11) {\n classList.add('next');\n }\n\n if (current < _this2.minYear || current > _this2.maxYear || _this2.disabled.includes(current)) {\n classList.add('disabled');\n }\n\n if (_this2.range) {\n var _this2$range = _slicedToArray(_this2.range, 2),\n rangeStart = _this2$range[0],\n rangeEnd = _this2$range[1];\n\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n\n if (current === rangeStart) {\n classList.add('range-start');\n }\n\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n }\n\n if (_this2.selected.includes(current)) {\n classList.add('selected');\n }\n\n if (current === _this2.focused) {\n classList.add('focused');\n }\n\n if (_this2.beforeShow) {\n _this2.performBeforeHook(el, current, date);\n }\n });\n } // Update the view UI by applying the changes of selected and focused items\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this3 = this;\n\n var _ref = this.range || [],\n _ref2 = _slicedToArray(_ref, 2),\n rangeStart = _ref2[0],\n rangeEnd = _ref2[1];\n\n this.grid.querySelectorAll('.range, .range-start, .range-end, .selected, .focused').forEach(function (el) {\n el.classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');\n });\n Array.from(this.grid.children).forEach(function (el) {\n var current = Number(el.textContent);\n var classList = el.classList;\n\n if (current > rangeStart && current < rangeEnd) {\n classList.add('range');\n }\n\n if (current === rangeStart) {\n classList.add('range-start');\n }\n\n if (current === rangeEnd) {\n classList.add('range-end');\n }\n\n if (_this3.selected.includes(current)) {\n classList.add('selected');\n }\n\n if (current === _this3.focused) {\n classList.add('focused');\n }\n });\n } // Update the view UI by applying the change of focused item\n\n }, {\n key: \"refreshFocus\",\n value: function refreshFocus() {\n var index = Math.round((this.focused - this.start) / this.step);\n this.grid.querySelectorAll('.focused').forEach(function (el) {\n el.classList.remove('focused');\n });\n this.grid.children[index].classList.add('focused');\n }\n }]);\n\n return YearsView;\n}(View);\n\nexport { YearsView as default };","import { limitToRange } from '../lib/utils.js';\nimport { addMonths, addYears } from '../lib/date.js';\nexport function triggerDatepickerEvent(datepicker, type) {\n var detail = {\n date: datepicker.getDate(),\n viewDate: new Date(datepicker.picker.viewDate),\n viewId: datepicker.picker.currentView.id,\n datepicker: datepicker\n };\n datepicker.element.dispatchEvent(new CustomEvent(type, {\n detail: detail\n }));\n} // direction: -1 (to previous), 1 (to next)\n\nexport function goToPrevOrNext(datepicker, direction) {\n var _datepicker$config = datepicker.config,\n minDate = _datepicker$config.minDate,\n maxDate = _datepicker$config.maxDate;\n var _datepicker$picker = datepicker.picker,\n currentView = _datepicker$picker.currentView,\n viewDate = _datepicker$picker.viewDate;\n var newViewDate;\n\n switch (currentView.id) {\n case 0:\n newViewDate = addMonths(viewDate, direction);\n break;\n\n case 1:\n newViewDate = addYears(viewDate, direction);\n break;\n\n default:\n newViewDate = addYears(viewDate, direction * currentView.navStep);\n }\n\n newViewDate = limitToRange(newViewDate, minDate, maxDate);\n datepicker.picker.changeFocus(newViewDate).render();\n}\nexport function switchView(datepicker) {\n var viewId = datepicker.picker.currentView.id;\n\n if (viewId === datepicker.config.maxView) {\n return;\n }\n\n datepicker.picker.changeView(viewId + 1).render();\n}\nexport function unfocus(datepicker) {\n if (datepicker.config.updateOnBlur) {\n datepicker.update({\n revert: true\n });\n } else {\n datepicker.refresh('input');\n }\n\n datepicker.hide();\n}","import { today, addMonths, addYears } from '../lib/date.js';\nimport { findElementInEventPath } from '../lib/event.js';\nimport { goToPrevOrNext, switchView } from './functions.js';\n\nfunction goToSelectedMonthOrYear(datepicker, selection) {\n var picker = datepicker.picker;\n var viewDate = new Date(picker.viewDate);\n var viewId = picker.currentView.id;\n var newDate = viewId === 1 ? addMonths(viewDate, selection - viewDate.getMonth()) : addYears(viewDate, selection - viewDate.getFullYear());\n picker.changeFocus(newDate).changeView(viewId - 1).render();\n}\n\nexport function onClickTodayBtn(datepicker) {\n var picker = datepicker.picker;\n var currentDate = today();\n\n if (datepicker.config.todayBtnMode === 1) {\n if (datepicker.config.autohide) {\n datepicker.setDate(currentDate);\n return;\n }\n\n datepicker.setDate(currentDate, {\n render: false\n });\n picker.update();\n }\n\n if (picker.viewDate !== currentDate) {\n picker.changeFocus(currentDate);\n }\n\n picker.changeView(0).render();\n}\nexport function onClickClearBtn(datepicker) {\n datepicker.setDate({\n clear: true\n });\n}\nexport function onClickViewSwitch(datepicker) {\n switchView(datepicker);\n}\nexport function onClickPrevBtn(datepicker) {\n goToPrevOrNext(datepicker, -1);\n}\nexport function onClickNextBtn(datepicker) {\n goToPrevOrNext(datepicker, 1);\n} // For the picker's main block to delegete the events from `datepicker-cell`s\n\nexport function onClickView(datepicker, ev) {\n var target = findElementInEventPath(ev, '.datepicker-cell');\n\n if (!target || target.classList.contains('disabled')) {\n return;\n }\n\n var _datepicker$picker$cu = datepicker.picker.currentView,\n id = _datepicker$picker$cu.id,\n isMinView = _datepicker$picker$cu.isMinView;\n\n if (isMinView) {\n datepicker.setDate(Number(target.dataset.date));\n } else if (id === 1) {\n goToSelectedMonthOrYear(datepicker, Number(target.dataset.month));\n } else {\n goToSelectedMonthOrYear(datepicker, Number(target.dataset.year));\n }\n}\nexport function onMousedownPicker(ev) {\n ev.preventDefault();\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { hasProperty, lastItemOf, isInRange, limitToRange } from '../lib/utils.js';\nimport { today } from '../lib/date.js';\nimport { parseHTML, getParent, showElement, hideElement, emptyChildNodes } from '../lib/dom.js';\nimport { registerListeners } from '../lib/event.js';\nimport pickerTemplate from './templates/pickerTemplate.js';\nimport DaysView from './views/DaysView.js';\nimport MonthsView from './views/MonthsView.js';\nimport YearsView from './views/YearsView.js';\nimport { triggerDatepickerEvent } from '../events/functions.js';\nimport { onClickTodayBtn, onClickClearBtn, onClickViewSwitch, onClickPrevBtn, onClickNextBtn, onClickView, onMousedownPicker } from '../events/pickerListeners.js';\nvar orientClasses = ['left', 'top', 'right', 'bottom'].reduce(function (obj, key) {\n obj[key] = \"datepicker-orient-\".concat(key);\n return obj;\n}, {});\n\nvar toPx = function toPx(num) {\n return num ? \"\".concat(num, \"px\") : num;\n};\n\nfunction processPickerOptions(picker, options) {\n if (options.title !== undefined) {\n if (options.title) {\n picker.controls.title.textContent = options.title;\n showElement(picker.controls.title);\n } else {\n picker.controls.title.textContent = '';\n hideElement(picker.controls.title);\n }\n }\n\n if (options.prevArrow) {\n var prevBtn = picker.controls.prevBtn;\n emptyChildNodes(prevBtn);\n options.prevArrow.forEach(function (node) {\n prevBtn.appendChild(node.cloneNode(true));\n });\n }\n\n if (options.nextArrow) {\n var nextBtn = picker.controls.nextBtn;\n emptyChildNodes(nextBtn);\n options.nextArrow.forEach(function (node) {\n nextBtn.appendChild(node.cloneNode(true));\n });\n }\n\n if (options.locale) {\n picker.controls.todayBtn.textContent = options.locale.today;\n picker.controls.clearBtn.textContent = options.locale.clear;\n }\n\n if (options.todayBtn !== undefined) {\n if (options.todayBtn) {\n showElement(picker.controls.todayBtn);\n } else {\n hideElement(picker.controls.todayBtn);\n }\n }\n\n if (hasProperty(options, 'minDate') || hasProperty(options, 'maxDate')) {\n var _picker$datepicker$co = picker.datepicker.config,\n minDate = _picker$datepicker$co.minDate,\n maxDate = _picker$datepicker$co.maxDate;\n picker.controls.todayBtn.disabled = !isInRange(today(), minDate, maxDate);\n }\n\n if (options.clearBtn !== undefined) {\n if (options.clearBtn) {\n showElement(picker.controls.clearBtn);\n } else {\n hideElement(picker.controls.clearBtn);\n }\n }\n} // Compute view date to reset, which will be...\n// - the last item of the selected dates or defaultViewDate if no selection\n// - limitted to minDate or maxDate if it exceeds the range\n\n\nfunction computeResetViewDate(datepicker) {\n var dates = datepicker.dates,\n config = datepicker.config;\n var viewDate = dates.length > 0 ? lastItemOf(dates) : config.defaultViewDate;\n return limitToRange(viewDate, config.minDate, config.maxDate);\n} // Change current view's view date\n\n\nfunction setViewDate(picker, newDate) {\n var oldViewDate = new Date(picker.viewDate);\n var newViewDate = new Date(newDate);\n var _picker$currentView = picker.currentView,\n id = _picker$currentView.id,\n year = _picker$currentView.year,\n first = _picker$currentView.first,\n last = _picker$currentView.last;\n var viewYear = newViewDate.getFullYear();\n picker.viewDate = newDate;\n\n if (viewYear !== oldViewDate.getFullYear()) {\n triggerDatepickerEvent(picker.datepicker, 'changeYear');\n }\n\n if (newViewDate.getMonth() !== oldViewDate.getMonth()) {\n triggerDatepickerEvent(picker.datepicker, 'changeMonth');\n } // return whether the new date is in different period on time from the one\n // displayed in the current view\n // when true, the view needs to be re-rendered on the next UI refresh.\n\n\n switch (id) {\n case 0:\n return newDate < first || newDate > last;\n\n case 1:\n return viewYear !== year;\n\n default:\n return viewYear < first || viewYear > last;\n }\n}\n\nfunction getTextDirection(el) {\n return window.getComputedStyle(el).direction;\n} // find the closet scrollable ancestor elemnt under the body\n\n\nfunction findScrollParents(el) {\n var parent = getParent(el);\n\n if (parent === document.body || !parent) {\n return;\n } // checking overflow only is enough because computed overflow cannot be\n // visible or a combination of visible and other when either axis is set\n // to other than visible.\n // (Setting one axis to other than 'visible' while the other is 'visible'\n // results in the other axis turning to 'auto')\n\n\n return window.getComputedStyle(parent).overflow !== 'visible' ? parent : findScrollParents(parent);\n} // Class representing the picker UI\n\n\nvar Picker = /*#__PURE__*/function () {\n function Picker(datepicker) {\n _classCallCheck(this, Picker);\n\n var _this$datepicker = this.datepicker = datepicker,\n config = _this$datepicker.config;\n\n var template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass);\n var element = this.element = parseHTML(template).firstChild;\n\n var _element$firstChild$c = _slicedToArray(element.firstChild.children, 3),\n header = _element$firstChild$c[0],\n main = _element$firstChild$c[1],\n footer = _element$firstChild$c[2];\n\n var title = header.firstElementChild;\n\n var _header$lastElementCh = _slicedToArray(header.lastElementChild.children, 3),\n prevBtn = _header$lastElementCh[0],\n viewSwitch = _header$lastElementCh[1],\n nextBtn = _header$lastElementCh[2];\n\n var _footer$firstChild$ch = _slicedToArray(footer.firstChild.children, 2),\n todayBtn = _footer$firstChild$ch[0],\n clearBtn = _footer$firstChild$ch[1];\n\n var controls = {\n title: title,\n prevBtn: prevBtn,\n viewSwitch: viewSwitch,\n nextBtn: nextBtn,\n todayBtn: todayBtn,\n clearBtn: clearBtn\n };\n this.main = main;\n this.controls = controls;\n var elementClass = datepicker.inline ? 'inline' : 'dropdown';\n element.classList.add(\"datepicker-\".concat(elementClass));\n processPickerOptions(this, config);\n this.viewDate = computeResetViewDate(datepicker); // set up event listeners\n\n registerListeners(datepicker, [[element, 'mousedown', onMousedownPicker], [main, 'click', onClickView.bind(null, datepicker)], [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)], [controls.prevBtn, 'click', onClickPrevBtn.bind(null, datepicker)], [controls.nextBtn, 'click', onClickNextBtn.bind(null, datepicker)], [controls.todayBtn, 'click', onClickTodayBtn.bind(null, datepicker)], [controls.clearBtn, 'click', onClickClearBtn.bind(null, datepicker)]]); // set up views\n\n this.views = [new DaysView(this), new MonthsView(this), new YearsView(this, {\n id: 2,\n name: 'years',\n cellClass: 'year',\n step: 1\n }), new YearsView(this, {\n id: 3,\n name: 'decades',\n cellClass: 'decade',\n step: 10\n })];\n this.currentView = this.views[config.startView];\n this.currentView.render();\n this.main.appendChild(this.currentView.element);\n\n if (config.container) {\n config.container.appendChild(this.element);\n } else {\n datepicker.inputField.after(this.element);\n }\n }\n\n _createClass(Picker, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n processPickerOptions(this, options);\n this.views.forEach(function (view) {\n view.init(options, false);\n });\n this.currentView.render();\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.element.remove();\n }\n }, {\n key: \"show\",\n value: function show() {\n if (this.active) {\n return;\n }\n\n var datepicker = this.datepicker,\n element = this.element;\n\n if (datepicker.inline) {\n element.classList.add('active');\n } else {\n // ensure picker's direction matches input's\n var inputDirection = getTextDirection(datepicker.inputField);\n\n if (inputDirection !== getTextDirection(getParent(element))) {\n element.dir = inputDirection;\n } else if (element.dir) {\n element.removeAttribute('dir');\n }\n\n element.style.visiblity = 'hidden';\n element.classList.add('active');\n this.place();\n element.style.visiblity = '';\n\n if (datepicker.config.disableTouchKeyboard) {\n datepicker.inputField.blur();\n }\n }\n\n this.active = true;\n triggerDatepickerEvent(datepicker, 'show');\n }\n }, {\n key: \"hide\",\n value: function hide() {\n if (!this.active) {\n return;\n }\n\n this.datepicker.exitEditMode();\n this.element.classList.remove('active');\n this.active = false;\n triggerDatepickerEvent(this.datepicker, 'hide');\n }\n }, {\n key: \"place\",\n value: function place() {\n var _this$element = this.element,\n classList = _this$element.classList,\n offsetParent = _this$element.offsetParent,\n style = _this$element.style;\n var _this$datepicker2 = this.datepicker,\n config = _this$datepicker2.config,\n inputField = _this$datepicker2.inputField;\n\n var _this$element$getBoun = this.element.getBoundingClientRect(),\n calendarWidth = _this$element$getBoun.width,\n calendarHeight = _this$element$getBoun.height;\n\n var _inputField$getBoundi = inputField.getBoundingClientRect(),\n inputLeft = _inputField$getBoundi.left,\n inputTop = _inputField$getBoundi.top,\n inputRight = _inputField$getBoundi.right,\n inputBottom = _inputField$getBoundi.bottom,\n inputWidth = _inputField$getBoundi.width,\n inputHeight = _inputField$getBoundi.height;\n\n var _config$orientation = config.orientation,\n orientX = _config$orientation.x,\n orientY = _config$orientation.y;\n var left = inputLeft;\n var top = inputTop; // caliculate offsetLeft/Top of inputField\n\n if (offsetParent === document.body || !offsetParent) {\n left += window.scrollX;\n top += window.scrollY;\n } else {\n var offsetParentRect = offsetParent.getBoundingClientRect();\n left -= offsetParentRect.left - offsetParent.scrollLeft;\n top -= offsetParentRect.top - offsetParent.scrollTop;\n } // caliculate the boundaries of the visible area that contains inputField\n\n\n var scrollParent = findScrollParents(inputField);\n var scrollAreaLeft = 0;\n var scrollAreaTop = 0;\n var _document$documentEle = document.documentElement,\n scrollAreaRight = _document$documentEle.clientWidth,\n scrollAreaBottom = _document$documentEle.clientHeight;\n\n if (scrollParent) {\n var scrollParentRect = scrollParent.getBoundingClientRect();\n\n if (scrollParentRect.top > 0) {\n scrollAreaTop = scrollParentRect.top;\n }\n\n if (scrollParentRect.left > 0) {\n scrollAreaLeft = scrollParentRect.left;\n }\n\n if (scrollParentRect.right < scrollAreaRight) {\n scrollAreaRight = scrollParentRect.right;\n }\n\n if (scrollParentRect.bottom < scrollAreaBottom) {\n scrollAreaBottom = scrollParentRect.bottom;\n }\n } // determine the horizontal orientation and left position\n\n\n var adjustment = 0;\n\n if (orientX === 'auto') {\n if (inputLeft < scrollAreaLeft) {\n orientX = 'left';\n adjustment = scrollAreaLeft - inputLeft;\n } else if (inputLeft + calendarWidth > scrollAreaRight) {\n orientX = 'right';\n\n if (scrollAreaRight < inputRight) {\n adjustment = scrollAreaRight - inputRight;\n }\n } else if (getTextDirection(inputField) === 'rtl') {\n orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';\n } else {\n orientX = 'left';\n }\n }\n\n if (orientX === 'right') {\n left += inputWidth - calendarWidth;\n }\n\n left += adjustment; // determine the vertical orientation and top position\n\n if (orientY === 'auto') {\n if (inputTop - calendarHeight > scrollAreaTop) {\n orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';\n } else {\n orientY = 'bottom';\n }\n }\n\n if (orientY === 'top') {\n top -= calendarHeight;\n } else {\n top += inputHeight;\n }\n\n classList.remove.apply(classList, _toConsumableArray(Object.values(orientClasses)));\n classList.add(orientClasses[orientX], orientClasses[orientY]);\n style.left = toPx(left);\n style.top = toPx(top);\n }\n }, {\n key: \"setViewSwitchLabel\",\n value: function setViewSwitchLabel(labelText) {\n this.controls.viewSwitch.textContent = labelText;\n }\n }, {\n key: \"setPrevBtnDisabled\",\n value: function setPrevBtnDisabled(disabled) {\n this.controls.prevBtn.disabled = disabled;\n }\n }, {\n key: \"setNextBtnDisabled\",\n value: function setNextBtnDisabled(disabled) {\n this.controls.nextBtn.disabled = disabled;\n }\n }, {\n key: \"changeView\",\n value: function changeView(viewId) {\n var oldView = this.currentView;\n var newView = this.views[viewId];\n\n if (newView.id !== oldView.id) {\n this.currentView = newView;\n this._renderMethod = 'render';\n triggerDatepickerEvent(this.datepicker, 'changeView');\n this.main.replaceChild(newView.element, oldView.element);\n }\n\n return this;\n } // Change the focused date (view date)\n\n }, {\n key: \"changeFocus\",\n value: function changeFocus(newViewDate) {\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';\n this.views.forEach(function (view) {\n view.updateFocus();\n });\n return this;\n } // Apply the change of the selected dates\n\n }, {\n key: \"update\",\n value: function update() {\n var newViewDate = computeResetViewDate(this.datepicker);\n this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';\n this.views.forEach(function (view) {\n view.updateFocus();\n view.updateSelection();\n });\n return this;\n } // Refresh the picker UI\n\n }, {\n key: \"render\",\n value: function render() {\n var quickRender = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var renderMethod = quickRender && this._renderMethod || 'render';\n delete this._renderMethod;\n this.currentView[renderMethod]();\n }\n }]);\n\n return Picker;\n}();\n\nexport { Picker as default };","import { isInRange } from '../lib/utils.js';\nimport { isActiveElement } from '../lib/dom.js';\nimport { addDays, addMonths, addYears, startOfYearPeriod } from '../lib/date.js';\nimport { goToPrevOrNext, switchView, unfocus } from './functions.js'; // Find the closest date that doesn't meet the condition for unavailable date\n// Returns undefined if no available date is found\n// addFn: function to calculate the next date\n// - args: time value, amount\n// increase: amount to pass to addFn\n// testFn: function to test the unavailablity of the date\n// - args: time value; retun: true if unavailable\n\nfunction findNextAvailableOne(date, addFn, increase, testFn, min, max) {\n if (!isInRange(date, min, max)) {\n return;\n }\n\n if (testFn(date)) {\n var newDate = addFn(date, increase);\n return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);\n }\n\n return date;\n} // direction: -1 (left/up), 1 (right/down)\n// vertical: true for up/down, false for left/right\n\n\nfunction moveByArrowKey(datepicker, ev, direction, vertical) {\n var picker = datepicker.picker;\n var currentView = picker.currentView;\n var step = currentView.step || 1;\n var viewDate = picker.viewDate;\n var addFn;\n var testFn;\n\n switch (currentView.id) {\n case 0:\n if (vertical) {\n viewDate = addDays(viewDate, direction * 7);\n } else if (ev.ctrlKey || ev.metaKey) {\n viewDate = addYears(viewDate, direction);\n } else {\n viewDate = addDays(viewDate, direction);\n }\n\n addFn = addDays;\n\n testFn = function testFn(date) {\n return currentView.disabled.includes(date);\n };\n\n break;\n\n case 1:\n viewDate = addMonths(viewDate, vertical ? direction * 4 : direction);\n addFn = addMonths;\n\n testFn = function testFn(date) {\n var dt = new Date(date);\n var year = currentView.year,\n disabled = currentView.disabled;\n return dt.getFullYear() === year && disabled.includes(dt.getMonth());\n };\n\n break;\n\n default:\n viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step);\n addFn = addYears;\n\n testFn = function testFn(date) {\n return currentView.disabled.includes(startOfYearPeriod(date, step));\n };\n\n }\n\n viewDate = findNextAvailableOne(viewDate, addFn, direction < 0 ? -step : step, testFn, currentView.minDate, currentView.maxDate);\n\n if (viewDate !== undefined) {\n picker.changeFocus(viewDate).render();\n }\n}\n\nexport function onKeydown(datepicker, ev) {\n var key = ev.key;\n\n if (key === 'Tab') {\n unfocus(datepicker);\n return;\n }\n\n var picker = datepicker.picker;\n var _picker$currentView = picker.currentView,\n id = _picker$currentView.id,\n isMinView = _picker$currentView.isMinView;\n\n if (!picker.active) {\n if (key === 'ArrowDown') {\n picker.show();\n } else {\n if (key === 'Enter') {\n datepicker.update();\n } else if (key === 'Escape') {\n picker.show();\n }\n\n return;\n }\n } else if (datepicker.editMode) {\n if (key === 'Enter') {\n datepicker.exitEditMode({\n update: true,\n autohide: datepicker.config.autohide\n });\n } else if (key === 'Escape') {\n picker.hide();\n }\n\n return;\n } else {\n if (key === 'ArrowLeft') {\n if (ev.ctrlKey || ev.metaKey) {\n goToPrevOrNext(datepicker, -1);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, -1, false);\n }\n } else if (key === 'ArrowRight') {\n if (ev.ctrlKey || ev.metaKey) {\n goToPrevOrNext(datepicker, 1);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, 1, false);\n }\n } else if (key === 'ArrowUp') {\n if (ev.ctrlKey || ev.metaKey) {\n switchView(datepicker);\n } else if (ev.shiftKey) {\n datepicker.enterEditMode();\n return;\n } else {\n moveByArrowKey(datepicker, ev, -1, true);\n }\n } else if (key === 'ArrowDown') {\n if (ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n datepicker.enterEditMode();\n return;\n }\n\n moveByArrowKey(datepicker, ev, 1, true);\n } else if (key === 'Enter') {\n if (isMinView) {\n datepicker.setDate(picker.viewDate);\n return;\n }\n\n picker.changeView(id - 1).render();\n } else {\n if (key === 'Escape') {\n picker.hide();\n } else if (key === 'Backspace' || key === 'Delete' || key.length === 1 && !ev.ctrlKey && !ev.metaKey) {\n datepicker.enterEditMode();\n }\n\n return;\n }\n }\n\n ev.preventDefault();\n}\nexport function onFocus(datepicker) {\n if (datepicker.config.showOnFocus && !datepicker._showing) {\n datepicker.show();\n }\n} // for the prevention for entering edit mode while getting focus on click\n\nexport function onMousedown(datepicker, ev) {\n var el = ev.target;\n\n if (datepicker.picker.active || datepicker.config.showOnClick) {\n el._active = isActiveElement(el);\n el._clicking = setTimeout(function () {\n delete el._active;\n delete el._clicking;\n }, 2000);\n }\n}\nexport function onClickInput(datepicker, ev) {\n var el = ev.target;\n\n if (!el._clicking) {\n return;\n }\n\n clearTimeout(el._clicking);\n delete el._clicking;\n\n if (el._active) {\n datepicker.enterEditMode();\n }\n\n delete el._active;\n\n if (datepicker.config.showOnClick) {\n datepicker.show();\n }\n}\nexport function onPaste(datepicker, ev) {\n if (ev.clipboardData.types.includes('text/plain')) {\n datepicker.enterEditMode();\n }\n}","import { isActiveElement } from '../lib/dom.js';\nimport { findElementInEventPath } from '../lib/event.js';\nimport { unfocus } from './functions.js'; // for the `document` to delegate the events from outside the picker/input field\n\nexport function onClickOutside(datepicker, ev) {\n var element = datepicker.element,\n picker = datepicker.picker; // check both picker's and input's activeness to make updateOnBlur work in\n // the cases where...\n // - picker is hidden by ESC key press → input stays focused\n // - input is unfocused by closing mobile keyboard → piker is kept shown\n\n if (!picker.active && !isActiveElement(element)) {\n return;\n }\n\n var pickerElem = picker.element;\n\n if (findElementInEventPath(ev, function (el) {\n return el === element || el === pickerElem;\n })) {\n return;\n }\n\n unfocus(datepicker);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { lastItemOf, stringToArray, isInRange } from './lib/utils.js';\nimport { today, regularizeDate } from './lib/date.js';\nimport { parseDate as _parseDate, formatDate as _formatDate } from './lib/date-format.js';\nimport { isActiveElement } from './lib/dom.js';\nimport { registerListeners, unregisterListeners } from './lib/event.js';\nimport { locales } from './i18n/base-locales.js';\nimport defaultOptions from './options/defaultOptions.js';\nimport processOptions from './options/processOptions.js';\nimport Picker from './picker/Picker.js';\nimport { triggerDatepickerEvent } from './events/functions.js';\nimport { onKeydown, onFocus, onMousedown, onClickInput, onPaste } from './events/inputFieldListeners.js';\nimport { onClickOutside } from './events/otherListeners.js';\n\nfunction stringifyDates(dates, config) {\n return dates.map(function (dt) {\n return _formatDate(dt, config.format, config.locale);\n }).join(config.dateDelimiter);\n} // parse input dates and create an array of time values for selection\n// returns undefined if there are no valid dates in inputDates\n// when origDates (current selection) is passed, the function works to mix\n// the input dates into the current selection\n\n\nfunction processInputDates(datepicker, inputDates) {\n var clear = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // const {config, dates: origDates, rangepicker} = datepicker;\n var config = datepicker.config,\n origDates = datepicker.dates,\n rangeSideIndex = datepicker.rangeSideIndex;\n\n if (inputDates.length === 0) {\n // empty input is considered valid unless origiDates is passed\n return clear ? [] : undefined;\n } // const rangeEnd = rangepicker && datepicker === rangepicker.datepickers[1];\n\n\n var newDates = inputDates.reduce(function (dates, dt) {\n var date = _parseDate(dt, config.format, config.locale);\n\n if (date === undefined) {\n return dates;\n } // adjust to 1st of the month/Jan 1st of the year\n // or to the last day of the monh/Dec 31st of the year if the datepicker\n // is the range-end picker of a rangepicker\n\n\n date = regularizeDate(date, config.pickLevel, rangeSideIndex);\n\n if (isInRange(date, config.minDate, config.maxDate) && !dates.includes(date) && !config.datesDisabled.includes(date) && (config.pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))) {\n dates.push(date);\n }\n\n return dates;\n }, []);\n\n if (newDates.length === 0) {\n return;\n }\n\n if (config.multidate && !clear) {\n // get the synmetric difference between origDates and newDates\n newDates = newDates.reduce(function (dates, date) {\n if (!origDates.includes(date)) {\n dates.push(date);\n }\n\n return dates;\n }, origDates.filter(function (date) {\n return !newDates.includes(date);\n }));\n } // do length check always because user can input multiple dates regardless of the mode\n\n\n return config.maxNumberOfDates && newDates.length > config.maxNumberOfDates ? newDates.slice(config.maxNumberOfDates * -1) : newDates;\n} // refresh the UI elements\n// modes: 1: input only, 2, picker only, 3 both\n\n\nfunction refreshUI(datepicker) {\n var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n var quickRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var config = datepicker.config,\n picker = datepicker.picker,\n inputField = datepicker.inputField;\n\n if (mode & 2) {\n var newView = picker.active ? config.pickLevel : config.startView;\n picker.update().changeView(newView).render(quickRender);\n }\n\n if (mode & 1 && inputField) {\n inputField.value = stringifyDates(datepicker.dates, config);\n }\n}\n\nfunction _setDate(datepicker, inputDates, options) {\n var clear = options.clear,\n render = options.render,\n autohide = options.autohide,\n revert = options.revert;\n\n if (render === undefined) {\n render = true;\n }\n\n if (!render) {\n autohide = false;\n } else if (autohide === undefined) {\n autohide = datepicker.config.autohide;\n }\n\n var newDates = processInputDates(datepicker, inputDates, clear);\n\n if (!newDates && !revert) {\n return;\n }\n\n if (newDates && newDates.toString() !== datepicker.dates.toString()) {\n datepicker.dates = newDates;\n refreshUI(datepicker, render ? 3 : 1);\n triggerDatepickerEvent(datepicker, 'changeDate');\n } else {\n refreshUI(datepicker, 1);\n }\n\n if (autohide) {\n datepicker.hide();\n }\n}\n/**\n * Class representing a date picker\n */\n\n\nvar Datepicker = /*#__PURE__*/function () {\n /**\n * Create a date picker\n * @param {Element} element - element to bind a date picker\n * @param {Object} [options] - config options\n * @param {DateRangePicker} [rangepicker] - DateRangePicker instance the\n * date picker belongs to. Use this only when creating date picker as a part\n * of date range picker\n */\n function Datepicker(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rangepicker = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n _classCallCheck(this, Datepicker);\n\n element.datepicker = this;\n this.element = element;\n var config = this.config = Object.assign({\n buttonClass: options.buttonClass && String(options.buttonClass) || 'button',\n container: null,\n defaultViewDate: today(),\n maxDate: undefined,\n minDate: undefined\n }, processOptions(defaultOptions, this)); // configure by type\n\n var inline = this.inline = element.tagName !== 'INPUT';\n var inputField;\n\n if (inline) {\n config.container = element;\n } else {\n if (options.container) {\n // omit string type check because it doesn't guarantee to avoid errors\n // (invalid selector string causes abend with sytax error)\n config.container = options.container instanceof HTMLElement ? options.container : document.querySelector(options.container);\n }\n\n inputField = this.inputField = element;\n inputField.classList.add('datepicker-input');\n }\n\n if (rangepicker) {\n // check validiry\n var index = rangepicker.inputs.indexOf(inputField);\n var datepickers = rangepicker.datepickers;\n\n if (index < 0 || index > 1 || !Array.isArray(datepickers)) {\n throw Error('Invalid rangepicker object.');\n } // attach itaelf to the rangepicker here so that processInputDates() can\n // determine if this is the range-end picker of the rangepicker while\n // setting inital values when pickLevel > 0\n\n\n datepickers[index] = this; // add getter for rangepicker\n\n Object.defineProperty(this, 'rangepicker', {\n get: function get() {\n return rangepicker;\n }\n });\n Object.defineProperty(this, 'rangeSideIndex', {\n get: function get() {\n return index;\n }\n });\n } // set up config\n\n\n this._options = options;\n Object.assign(config, processOptions(options, this)); // set initial dates\n\n var initialDates;\n\n if (inline) {\n initialDates = stringToArray(element.dataset.date, config.dateDelimiter);\n delete element.dataset.date;\n } else {\n initialDates = stringToArray(inputField.value, config.dateDelimiter);\n }\n\n this.dates = []; // process initial value\n\n var inputDateValues = processInputDates(this, initialDates);\n\n if (inputDateValues && inputDateValues.length > 0) {\n this.dates = inputDateValues;\n }\n\n if (inputField) {\n inputField.value = stringifyDates(this.dates, config);\n }\n\n var picker = this.picker = new Picker(this);\n\n if (inline) {\n this.show();\n } else {\n // set up event listeners in other modes\n var onMousedownDocument = onClickOutside.bind(null, this);\n var listeners = [[inputField, 'keydown', onKeydown.bind(null, this)], [inputField, 'focus', onFocus.bind(null, this)], [inputField, 'mousedown', onMousedown.bind(null, this)], [inputField, 'click', onClickInput.bind(null, this)], [inputField, 'paste', onPaste.bind(null, this)], [document, 'mousedown', onMousedownDocument], [document, 'touchstart', onMousedownDocument], [window, 'resize', picker.place.bind(picker)]];\n registerListeners(this, listeners);\n }\n }\n /**\n * Format Date object or time value in given format and language\n * @param {Date|Number} date - date or time value to format\n * @param {String|Object} format - format string or object that contains\n * toDisplay() custom formatter, whose signature is\n * - args:\n * - date: {Date} - Date instance of the date passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {String} formatted date\n * @param {String} [lang=en] - language code for the locale to use\n * @return {String} formatted date\n */\n\n\n _createClass(Datepicker, [{\n key: \"active\",\n get:\n /**\n * @type {Boolean} - Whether the picker element is shown. `true` whne shown\n */\n function get() {\n return !!(this.picker && this.picker.active);\n }\n /**\n * @type {HTMLDivElement} - DOM object of picker element\n */\n\n }, {\n key: \"pickerElement\",\n get: function get() {\n return this.picker ? this.picker.element : undefined;\n }\n /**\n * Set new values to the config options\n * @param {Object} options - config options to update\n */\n\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var picker = this.picker;\n var newOptions = processOptions(options, this);\n Object.assign(this._options, options);\n Object.assign(this.config, newOptions);\n picker.setOptions(newOptions);\n refreshUI(this, 3);\n }\n /**\n * Show the picker element\n */\n\n }, {\n key: \"show\",\n value: function show() {\n if (this.inputField) {\n if (this.inputField.disabled) {\n return;\n }\n\n if (!isActiveElement(this.inputField) && !this.config.disableTouchKeyboard) {\n this._showing = true;\n this.inputField.focus();\n delete this._showing;\n }\n }\n\n this.picker.show();\n }\n /**\n * Hide the picker element\n * Not available on inline picker\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n if (this.inline) {\n return;\n }\n\n this.picker.hide();\n this.picker.update().changeView(this.config.startView).render();\n }\n /**\n * Destroy the Datepicker instance\n * @return {Detepicker} - the instance destroyed\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.hide();\n unregisterListeners(this);\n this.picker.detach();\n\n if (!this.inline) {\n this.inputField.classList.remove('datepicker-input');\n }\n\n delete this.element.datepicker;\n return this;\n }\n /**\n * Get the selected date(s)\n *\n * The method returns a Date object of selected date by default, and returns\n * an array of selected dates in multidate mode. If format string is passed,\n * it returns date string(s) formatted in given format.\n *\n * @param {String} [format] - Format string to stringify the date(s)\n * @return {Date|String|Date[]|String[]} - selected date(s), or if none is\n * selected, empty array in multidate mode and untitled in sigledate mode\n */\n\n }, {\n key: \"getDate\",\n value: function getDate() {\n var _this = this;\n\n var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n var callback = format ? function (date) {\n return _formatDate(date, format, _this.config.locale);\n } : function (date) {\n return new Date(date);\n };\n\n if (this.config.multidate) {\n return this.dates.map(callback);\n }\n\n if (this.dates.length > 0) {\n return callback(this.dates[0]);\n }\n }\n /**\n * Set selected date(s)\n *\n * In multidate mode, you can pass multiple dates as a series of arguments\n * or an array. (Since each date is parsed individually, the type of the\n * dates doesn't have to be the same.)\n * The given dates are used to toggle the select status of each date. The\n * number of selected dates is kept from exceeding the length set to\n * maxNumberOfDates.\n *\n * With clear: true option, the method can be used to clear the selection\n * and to replace the selection instead of toggling in multidate mode.\n * If the option is passed with no date arguments or an empty dates array,\n * it works as \"clear\" (clear the selection then set nothing), and if the\n * option is passed with new dates to select, it works as \"replace\" (clear\n * the selection then set the given dates)\n *\n * When render: false option is used, the method omits re-rendering the\n * picker element. In this case, you need to call refresh() method later in\n * order for the picker element to reflect the changes. The input field is\n * refreshed always regardless of this option.\n *\n * When invalid (unparsable, repeated, disabled or out-of-range) dates are\n * passed, the method ignores them and applies only valid ones. In the case\n * that all the given dates are invalid, which is distinguished from passing\n * no dates, the method considers it as an error and leaves the selection\n * untouched. (The input field also remains untouched unless revert: true\n * option is used.)\n *\n * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date\n * objects, time values or mix of those for new selection\n * @param {Object} [options] - function options\n * - clear: {boolean} - Whether to clear the existing selection\n * defualt: false\n * - render: {boolean} - Whether to re-render the picker element\n * default: true\n * - autohide: {boolean} - Whether to hide the picker element after re-render\n * Ignored when used with render: false\n * default: config.autohide\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n */\n\n }, {\n key: \"setDate\",\n value: function setDate() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var dates = [].concat(args);\n var opts = {};\n var lastArg = lastItemOf(args);\n\n if (_typeof(lastArg) === 'object' && !Array.isArray(lastArg) && !(lastArg instanceof Date) && lastArg) {\n Object.assign(opts, dates.pop());\n }\n\n var inputDates = Array.isArray(dates[0]) ? dates[0] : dates;\n\n _setDate(this, inputDates, opts);\n }\n /**\n * Update the selected date(s) with input field's value\n * Not available on inline picker\n *\n * The input field will be refreshed with properly formatted date string.\n *\n * In the case that all the entered dates are invalid (unparsable, repeated,\n * disabled or out-of-range), whixh is distinguished from empty input field,\n * the method leaves the input field untouched as well as the selection by\n * default. If revert: true option is used in this case, the input field is\n * refreshed with the existing selection.\n *\n * @param {Object} [options] - function options\n * - autohide: {boolean} - whether to hide the picker element after refresh\n * default: false\n * - revert: {boolean} - Whether to refresh the input field when all the\n * passed dates are invalid\n * default: false\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (this.inline) {\n return;\n }\n\n var opts = Object.assign(options || {}, {\n clear: true,\n render: true\n });\n var inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter);\n\n _setDate(this, inputDates, opts);\n }\n /**\n * Refresh the picker element and the associated input field\n * @param {String} [target] - target item when refreshing one item only\n * 'picker' or 'input'\n * @param {Boolean} [forceRender] - whether to re-render the picker element\n * regardless of its state instead of optimized refresh\n */\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n var forceRender = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (target && typeof target !== 'string') {\n forceRender = target;\n target = undefined;\n }\n\n var mode;\n\n if (target === 'picker') {\n mode = 2;\n } else if (target === 'input') {\n mode = 1;\n } else {\n mode = 3;\n }\n\n refreshUI(this, mode, !forceRender);\n }\n /**\n * Enter edit mode\n * Not available on inline picker or when the picker element is hidden\n */\n\n }, {\n key: \"enterEditMode\",\n value: function enterEditMode() {\n if (this.inline || !this.picker.active || this.editMode) {\n return;\n }\n\n this.editMode = true;\n this.inputField.classList.add('in-edit');\n }\n /**\n * Exit from edit mode\n * Not available on inline picker\n * @param {Object} [options] - function options\n * - update: {boolean} - whether to call update() after exiting\n * If false, input field is revert to the existing selection\n * default: false\n */\n\n }, {\n key: \"exitEditMode\",\n value: function exitEditMode() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (this.inline || !this.editMode) {\n return;\n }\n\n var opts = Object.assign({\n update: false\n }, options);\n delete this.editMode;\n this.inputField.classList.remove('in-edit');\n\n if (opts.update) {\n this.update(opts);\n }\n }\n }], [{\n key: \"formatDate\",\n value: function formatDate(date, format, lang) {\n return _formatDate(date, format, lang && locales[lang] || locales.en);\n }\n /**\n * Parse date string\n * @param {String|Date|Number} dateStr - date string, Date object or time\n * value to parse\n * @param {String|Object} format - format string or object that contains\n * toValue() custom parser, whose signature is\n * - args:\n * - dateStr: {String|Date|Number} - the dateStr passed to the method\n * - format: {Object} - the format object passed to the method\n * - locale: {Object} - locale for the language specified by `lang`\n * - return:\n * {Date|Number} parsed date or its time value\n * @param {String} [lang=en] - language code for the locale to use\n * @return {Number} time value of parsed date\n */\n\n }, {\n key: \"parseDate\",\n value: function parseDate(dateStr, format, lang) {\n return _parseDate(dateStr, format, lang && locales[lang] || locales.en);\n }\n /**\n * @type {Object} - Installed locales in `[languageCode]: localeObject` format\n * en`:_English (US)_ is pre-installed.\n */\n\n }, {\n key: \"locales\",\n get: function get() {\n return locales;\n }\n }]);\n\n return Datepicker;\n}();\n\nexport { Datepicker as default };","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\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 */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\n\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\n\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\n\n\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n } // NOTE: 1 DOM access here\n\n\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\n\n\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n\n return element.parentNode || element.host;\n}\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\n\n\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n\n case '#document':\n return element.body;\n } // Firefox want us to check `-x` and `-y` variations as well\n\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\n\n\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\n\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n\n if (version === 10) {\n return isIE10;\n }\n\n return isIE11 || isIE10;\n}\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\n\n\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here\n\n var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent\n\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n } // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n\n\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\n\n\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\n\n\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n } // Here we make sure to give as \"start\" the element that comes first in the DOM\n\n\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1; // Get common ancestor container\n\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n } // one of the nodes is inside shadowDOM, find which one\n\n\n var element1root = getRoot(element1);\n\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\n\n\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\n\n\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\n\n\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\n\n\nfunction getBoundingClientRect(element) {\n var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n }; // subtract scrollbar size from sizes\n\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them\n\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n return getClientRect(offset);\n}\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\n\n\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n\n var parentNode = getParentNode(element);\n\n if (!parentNode) {\n return false;\n }\n\n return isFixed(parentNode);\n}\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n\n var el = element.parentElement;\n\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n\n return el || document.documentElement;\n}\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\n\n\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); // Handle viewport case\n\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation\n\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n } // Add paddings\n\n\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n return width * height;\n}\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\n return computedPlacement + (variation ? '-' + variation : '');\n}\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\n\n\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\n\n\nfunction getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\n\n\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0]; // Get popper node sizes\n\n var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object\n\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n }; // depending by the popper placement we have to compute its offsets slightly differently\n\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n } // use `filter` to obtain the same behavior of `find`\n\n\n return arr.filter(check)[0];\n}\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\n\n\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n } // use `find` + `indexOf` if `findIndex` isn't supported\n\n\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\n\n\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n data = fn(data, modifier);\n }\n });\n return data;\n}\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\n\n\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n }; // compute reference element offsets\n\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`\n\n data.originalPlacement = data.placement;\n data.positionFixed = this.options.positionFixed; // compute the popper offsets\n\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers\n\n data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\n\n\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\n\n\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n\n return null;\n}\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\n\n\nfunction destroy() {\n this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled\n\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners(); // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n\n return this;\n}\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\n\n\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n passive: true\n });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n\n scrollParents.push(target);\n}\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n }); // Scroll event listener on scroll parents\n\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n return state;\n}\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\n\n\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\n\n\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents\n\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n }); // Reset state\n\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\n\n\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\n\n\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = ''; // add unit if the value is numeric and is one of the following\n\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n\n element.style[prop] = styles[prop] + unit;\n });\n}\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\n\n\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\n\n\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n\n setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties\n\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\n\n\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n\n setStyles(popper, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n}\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\n\n\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent); // Styles\n\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n\n var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n\n var left = void 0,\n top = void 0;\n\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n } // Attributes\n\n\n var attributes = {\n 'x-placement': data.placement\n }; // Update `data` attributes, styles and arrowStyles\n\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n return data;\n}\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\n\n\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n\n return isRequired;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction arrow(data, options) {\n var _data$offsets$arrow; // arrow depends on keepTogether in order to work\n\n\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier\n\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len]; //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n // top/left side\n\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n } // bottom/right side\n\n\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n\n data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper\n\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper\n\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n return data;\n}\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\n\n\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n\n return variation;\n}\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\n\n\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`\n\nvar validPlacements = placements.slice(3);\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\n\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here\n\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required\n\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries\n\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries\n\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\n\n\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2]; // If it's not a number it's an operator, I guess\n\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\n\n\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n }); // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n } // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n\n\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations\n\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, []) // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n }); // Loop trough the offsets arrays and execute the operations\n\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n } // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n\n\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n\n return defineProperty({}, mainSide, value);\n }\n };\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.popper = popper;\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier\n\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\n\n\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n return data;\n}\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\n\n\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: offset,\n\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: arrow,\n\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: flip,\n\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: computeStyle,\n\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n\n /** @prop {ModifierFn} */\n fn: applyStyle,\n\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\n\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n// Utils\n// Methods\n\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n }; // make update() debounced, so that it only runs at most once-per-tick\n\n\n this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it\n\n this.options = _extends({}, Popper.Defaults, options); // init state\n\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n }; // get reference and popper elements (allow jQuery wrappers)\n\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options\n\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n }); // Refactoring modifiers' list (Object => Array)\n\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n }) // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n }); // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n }); // fire the first update to position the popper in the right place\n\n this.update();\n var eventsEnabled = this.options.eventsEnabled;\n\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n } // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.autocomplete = factory());\n})(this, function () {\n 'use strict';\n /*\r\n * https://github.com/kraaden/autocomplete\r\n * Copyright (c) 2016 Denys Krasnoshchok\r\n * MIT License\r\n */\n\n function autocomplete(settings) {\n // just an alias to minimize JS file size\n var doc = document;\n var container = settings.container || doc.createElement(\"div\");\n var containerStyle = container.style;\n var userAgent = navigator.userAgent;\n var mobileFirefox = ~userAgent.indexOf(\"Firefox\") && ~userAgent.indexOf(\"Mobile\");\n var debounceWaitMs = settings.debounceWaitMs || 0;\n var preventSubmit = settings.preventSubmit || false;\n var disableAutoSelect = settings.disableAutoSelect || false; // 'keyup' event will not be fired on Mobile Firefox, so we have to use 'input' event instead\n\n var keyUpEventName = mobileFirefox ? \"input\" : \"keyup\";\n var items = [];\n var inputValue = \"\";\n var minLen = 2;\n var showOnFocus = settings.showOnFocus;\n var selected;\n var keypressCounter = 0;\n var debounceTimer;\n\n if (settings.minLength !== undefined) {\n minLen = settings.minLength;\n }\n\n if (!settings.input) {\n throw new Error(\"input undefined\");\n }\n\n var input = settings.input;\n container.className = \"autocomplete \" + (settings.className || \"\"); // IOS implementation for fixed positioning has many bugs, so we will use absolute positioning\n\n containerStyle.position = \"absolute\";\n /**\r\n * Detach the container from DOM\r\n */\n\n function detach() {\n var parent = container.parentNode;\n\n if (parent) {\n parent.removeChild(container);\n }\n }\n /**\r\n * Clear debouncing timer if assigned\r\n */\n\n\n function clearDebounceTimer() {\n if (debounceTimer) {\n window.clearTimeout(debounceTimer);\n }\n }\n /**\r\n * Attach the container to DOM\r\n */\n\n\n function attach() {\n if (!container.parentNode) {\n doc.body.appendChild(container);\n }\n }\n /**\r\n * Check if container for autocomplete is displayed\r\n */\n\n\n function containerDisplayed() {\n return !!container.parentNode;\n }\n /**\r\n * Clear autocomplete state and hide container\r\n */\n\n\n function clear() {\n // prevent the update call if there are pending AJAX requests\n keypressCounter++;\n items = [];\n inputValue = \"\";\n selected = undefined;\n detach();\n }\n /**\r\n * Update autocomplete position\r\n */\n\n\n function updatePosition() {\n if (!containerDisplayed()) {\n return;\n }\n\n containerStyle.height = \"auto\";\n containerStyle.width = input.offsetWidth + \"px\";\n var maxHeight = 0;\n var inputRect;\n\n function calc() {\n var docEl = doc.documentElement;\n var clientTop = docEl.clientTop || doc.body.clientTop || 0;\n var clientLeft = docEl.clientLeft || doc.body.clientLeft || 0;\n var scrollTop = window.pageYOffset || docEl.scrollTop;\n var scrollLeft = window.pageXOffset || docEl.scrollLeft;\n inputRect = input.getBoundingClientRect();\n var top = inputRect.top + input.offsetHeight + scrollTop - clientTop;\n var left = inputRect.left + scrollLeft - clientLeft;\n containerStyle.top = top + \"px\";\n containerStyle.left = left + \"px\";\n maxHeight = window.innerHeight - (inputRect.top + input.offsetHeight);\n\n if (maxHeight < 0) {\n maxHeight = 0;\n }\n\n containerStyle.top = top + \"px\";\n containerStyle.bottom = \"\";\n containerStyle.left = left + \"px\";\n containerStyle.maxHeight = maxHeight + \"px\";\n } // the calc method must be called twice, otherwise the calculation may be wrong on resize event (chrome browser)\n\n\n calc();\n calc();\n\n if (settings.customize && inputRect) {\n settings.customize(input, inputRect, container, maxHeight);\n }\n }\n /**\r\n * Redraw the autocomplete div element with suggestions\r\n */\n\n\n function update() {\n // delete all children from autocomplete DOM container\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n } // function for rendering autocomplete suggestions\n\n\n var render = function render(item, currentValue) {\n var itemElement = doc.createElement(\"div\");\n itemElement.textContent = item.label || \"\";\n return itemElement;\n };\n\n if (settings.render) {\n render = settings.render;\n } // function to render autocomplete groups\n\n\n var renderGroup = function renderGroup(groupName, currentValue) {\n var groupDiv = doc.createElement(\"div\");\n groupDiv.textContent = groupName;\n return groupDiv;\n };\n\n if (settings.renderGroup) {\n renderGroup = settings.renderGroup;\n }\n\n var fragment = doc.createDocumentFragment();\n var prevGroup = \"#9?$\";\n items.forEach(function (item) {\n if (item.group && item.group !== prevGroup) {\n prevGroup = item.group;\n var groupDiv = renderGroup(item.group, inputValue);\n\n if (groupDiv) {\n groupDiv.className += \" group\";\n fragment.appendChild(groupDiv);\n }\n }\n\n var div = render(item, inputValue);\n\n if (div) {\n div.addEventListener(\"click\", function (ev) {\n settings.onSelect(item, input);\n clear();\n ev.preventDefault();\n ev.stopPropagation();\n });\n\n if (item === selected) {\n div.className += \" selected\";\n }\n\n fragment.appendChild(div);\n }\n });\n container.appendChild(fragment);\n\n if (items.length < 1) {\n if (settings.emptyMsg) {\n var empty = doc.createElement(\"div\");\n empty.className = \"empty\";\n empty.textContent = settings.emptyMsg;\n container.appendChild(empty);\n } else {\n clear();\n return;\n }\n }\n\n attach();\n updatePosition();\n updateScroll();\n }\n\n function updateIfDisplayed() {\n if (containerDisplayed()) {\n update();\n }\n }\n\n function resizeEventHandler() {\n updateIfDisplayed();\n }\n\n function scrollEventHandler(e) {\n if (e.target !== container) {\n updateIfDisplayed();\n } else {\n e.preventDefault();\n }\n }\n\n function keyupEventHandler(ev) {\n var keyCode = ev.which || ev.keyCode || 0;\n var ignore = settings.keysToIgnore || [38\n /* Up */\n , 13\n /* Enter */\n , 27\n /* Esc */\n , 39\n /* Right */\n , 37\n /* Left */\n , 16\n /* Shift */\n , 17\n /* Ctrl */\n , 18\n /* Alt */\n , 20\n /* CapsLock */\n , 91\n /* WindowsKey */\n , 9\n /* Tab */\n ];\n\n for (var _i = 0, ignore_1 = ignore; _i < ignore_1.length; _i++) {\n var key = ignore_1[_i];\n\n if (keyCode === key) {\n return;\n }\n }\n\n if (keyCode >= 112\n /* F1 */\n && keyCode <= 123\n /* F12 */\n && !settings.keysToIgnore) {\n return;\n } // the down key is used to open autocomplete\n\n\n if (keyCode === 40\n /* Down */\n && containerDisplayed()) {\n return;\n }\n\n startFetch(0\n /* Keyboard */\n );\n }\n /**\r\n * Automatically move scroll bar if selected item is not visible\r\n */\n\n\n function updateScroll() {\n var elements = container.getElementsByClassName(\"selected\");\n\n if (elements.length > 0) {\n var element = elements[0]; // make group visible\n\n var previous = element.previousElementSibling;\n\n if (previous && previous.className.indexOf(\"group\") !== -1 && !previous.previousElementSibling) {\n element = previous;\n }\n\n if (element.offsetTop < container.scrollTop) {\n container.scrollTop = element.offsetTop;\n } else {\n var selectBottom = element.offsetTop + element.offsetHeight;\n var containerBottom = container.scrollTop + container.offsetHeight;\n\n if (selectBottom > containerBottom) {\n container.scrollTop += selectBottom - containerBottom;\n }\n }\n }\n }\n /**\r\n * Select the previous item in suggestions\r\n */\n\n\n function selectPrev() {\n if (items.length < 1) {\n selected = undefined;\n } else {\n if (selected === items[0]) {\n selected = items[items.length - 1];\n } else {\n for (var i = items.length - 1; i > 0; i--) {\n if (selected === items[i] || i === 1) {\n selected = items[i - 1];\n break;\n }\n }\n }\n }\n }\n /**\r\n * Select the next item in suggestions\r\n */\n\n\n function selectNext() {\n if (items.length < 1) {\n selected = undefined;\n }\n\n if (!selected || selected === items[items.length - 1]) {\n selected = items[0];\n return;\n }\n\n for (var i = 0; i < items.length - 1; i++) {\n if (selected === items[i]) {\n selected = items[i + 1];\n break;\n }\n }\n }\n\n function keydownEventHandler(ev) {\n var keyCode = ev.which || ev.keyCode || 0;\n\n if (keyCode === 38\n /* Up */\n || keyCode === 40\n /* Down */\n || keyCode === 27\n /* Esc */\n ) {\n var containerIsDisplayed = containerDisplayed();\n\n if (keyCode === 27\n /* Esc */\n ) {\n clear();\n } else {\n if (!containerIsDisplayed || items.length < 1) {\n return;\n }\n\n keyCode === 38\n /* Up */\n ? selectPrev() : selectNext();\n update();\n }\n\n ev.preventDefault();\n\n if (containerIsDisplayed) {\n ev.stopPropagation();\n }\n\n return;\n }\n\n if (keyCode === 13\n /* Enter */\n ) {\n if (selected) {\n settings.onSelect(selected, input);\n clear();\n }\n\n if (preventSubmit) {\n ev.preventDefault();\n }\n }\n }\n\n function focusEventHandler() {\n if (showOnFocus) {\n startFetch(1\n /* Focus */\n );\n }\n }\n\n function startFetch(trigger) {\n // If multiple keys were pressed, before we get an update from server,\n // this may cause redrawing autocomplete multiple times after the last key was pressed.\n // To avoid this, the number of times keyboard was pressed will be saved and checked before redraw.\n var savedKeypressCounter = ++keypressCounter;\n var inputText = input.value;\n var cursorPos = input.selectionStart || 0;\n\n if (inputText.length >= minLen || trigger === 1\n /* Focus */\n ) {\n clearDebounceTimer();\n debounceTimer = window.setTimeout(function () {\n settings.fetch(inputText, function (elements) {\n if (keypressCounter === savedKeypressCounter && elements) {\n items = elements;\n inputValue = inputText;\n selected = items.length < 1 || disableAutoSelect ? undefined : items[0];\n update();\n }\n }, trigger, cursorPos);\n }, trigger === 0\n /* Keyboard */\n ? debounceWaitMs : 0);\n } else {\n clear();\n }\n }\n\n function blurEventHandler() {\n // we need to delay clear, because when we click on an item, blur will be called before click and remove items from DOM\n setTimeout(function () {\n if (doc.activeElement !== input) {\n clear();\n }\n }, 200);\n }\n /**\r\n * Fixes #26: on long clicks focus will be lost and onSelect method will not be called\r\n */\n\n\n container.addEventListener(\"mousedown\", function (evt) {\n evt.stopPropagation();\n evt.preventDefault();\n });\n /**\r\n * Fixes #30: autocomplete closes when scrollbar is clicked in IE\r\n * See: https://stackoverflow.com/a/9210267/13172349\r\n */\n\n container.addEventListener(\"focus\", function () {\n return input.focus();\n });\n /**\r\n * This function will remove DOM elements and clear event handlers\r\n */\n\n function destroy() {\n input.removeEventListener(\"focus\", focusEventHandler);\n input.removeEventListener(\"keydown\", keydownEventHandler);\n input.removeEventListener(keyUpEventName, keyupEventHandler);\n input.removeEventListener(\"blur\", blurEventHandler);\n window.removeEventListener(\"resize\", resizeEventHandler);\n doc.removeEventListener(\"scroll\", scrollEventHandler, true);\n clearDebounceTimer();\n clear();\n } // setup event handlers\n\n\n input.addEventListener(\"keydown\", keydownEventHandler);\n input.addEventListener(keyUpEventName, keyupEventHandler);\n input.addEventListener(\"blur\", blurEventHandler);\n input.addEventListener(\"focus\", focusEventHandler);\n window.addEventListener(\"resize\", resizeEventHandler);\n doc.addEventListener(\"scroll\", scrollEventHandler, true);\n return {\n destroy: destroy\n };\n }\n\n return autocomplete;\n});","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction r() {\n return \"ambiki-\".concat(Math.random().toString().slice(2, 6));\n}\n\nfunction c(i, t, e) {\n var s = i.indexOf(t);\n s === i.length - 1 && e === 1 && (s = -1);\n var u = e === 1 ? 0 : i.length - 1;\n\n if (t && s >= 0) {\n var o = s + e;\n o >= 0 && o < i.length && (u = o);\n }\n\n return i[u];\n}\n\nvar h = !!navigator.userAgent.match(/Macintosh/),\n a = /*#__PURE__*/function () {\n function a(t, e) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$isMultiple = _ref.isMultiple,\n s = _ref$isMultiple === void 0 ? !1 : _ref$isMultiple;\n\n _classCallCheck(this, a);\n\n this.input = void 0;\n this.list = void 0;\n this.isMultiple = void 0;\n this.isMouseMoving = !1;\n this.input = t, this.list = e, this.isMultiple = s, this.list.id || (this.list.id = r()), this.input.setAttribute(\"aria-expanded\", \"false\"), this.input.setAttribute(\"role\", \"combobox\"), this.input.setAttribute(\"aria-haspopup\", \"listbox\"), this.input.setAttribute(\"aria-controls\", this.list.id), this.input.setAttribute(\"aria-autocomplete\", \"list\"), this.list.setAttribute(\"role\", \"listbox\"), this.isMultiple && this.input.setAttribute(\"aria-multiselectable\", \"true\"), this.onKeydown = this.onKeydown.bind(this), this.onClick = this.onClick.bind(this), this.onListMouseOver = this.onListMouseOver.bind(this), this.onListMouseMove = this.onListMouseMove.bind(this);\n }\n\n _createClass(a, [{\n key: \"start\",\n value: function start() {\n this.isMouseMoving = !1, this.input.setAttribute(\"aria-expanded\", \"true\"), this.setInitialAttributesOnOptions(), this.input.addEventListener(\"keydown\", this.onKeydown), this.list.addEventListener(\"click\", this.onClick), this.list.addEventListener(\"mouseover\", this.onListMouseOver), this.list.addEventListener(\"mousemove\", this.onListMouseMove);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.isMouseMoving = !1, this.clearActiveOption(), this.input.setAttribute(\"aria-expanded\", \"false\"), this.input.removeEventListener(\"keydown\", this.onKeydown), this.list.removeEventListener(\"click\", this.onClick), this.list.removeEventListener(\"mouseover\", this.onListMouseOver), this.list.removeEventListener(\"mousemove\", this.onListMouseMove);\n }\n }, {\n key: \"onKeydown\",\n value: function onKeydown(t) {\n if (this.isMouseMoving = !1, !(t.shiftKey || t.metaKey || t.altKey) && !(!h && t.ctrlKey)) switch (t.key) {\n case \"Enter\":\n case \"Tab\":\n d(this.list) && t.preventDefault();\n break;\n\n case \"Escape\":\n this.clearActiveOption();\n break;\n\n case \"ArrowDown\":\n this.move(1), t.preventDefault();\n break;\n\n case \"ArrowUp\":\n this.move(-1), t.preventDefault();\n break;\n\n default:\n break;\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick(t) {\n var e = l(t.target);\n !e || !n(e) || (this.selectOption(e), e.dispatchEvent(new CustomEvent(\"combobox:commit\", {\n bubbles: !0\n })));\n }\n }, {\n key: \"onListMouseOver\",\n value: function onListMouseOver(t) {\n if (!this.isMouseMoving) {\n t.preventDefault();\n return;\n }\n\n var e = l(t.target);\n !e || this.setActive(e, {\n scroll: !1\n });\n }\n }, {\n key: \"onListMouseMove\",\n value: function onListMouseMove(t) {\n if (this.isMouseMoving) return;\n this.isMouseMoving = !0;\n var e = l(t.target);\n !e || this.setActive(e, {\n scroll: !1\n });\n }\n }, {\n key: \"move\",\n value: function move(t) {\n var e = c(this.visibleOptions, this.activeOption, t);\n this.setActive(e);\n }\n }, {\n key: \"selectOption\",\n value: function selectOption(t) {\n if (this.isMultiple) t.setAttribute(\"aria-selected\", (t.getAttribute(\"aria-selected\") !== \"true\").toString());else {\n var _iterator = _createForOfIteratorHelper(this.options.filter(n)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var e = _step.value;\n e.setAttribute(\"aria-selected\", (e === t).toString());\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n }, {\n key: \"setActive\",\n value: function setActive(t) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$scroll = _ref2.scroll,\n e = _ref2$scroll === void 0 ? !0 : _ref2$scroll;\n\n if (!t) {\n this.clearActiveOption();\n return;\n }\n\n var _iterator2 = _createForOfIteratorHelper(this.options),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var s = _step2.value;\n s === t ? (this.input.setAttribute(\"aria-activedescendant\", s.id), s.setAttribute(\"data-tracking\", \"\"), e && s.scrollIntoView({\n block: \"nearest\"\n })) : s.removeAttribute(\"data-tracking\");\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }, {\n key: \"clearActiveOption\",\n value: function clearActiveOption() {\n this.input.removeAttribute(\"aria-activedescendant\");\n\n var _iterator3 = _createForOfIteratorHelper(this.list.querySelectorAll(\"[data-tracking]\")),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var t = _step3.value;\n t.removeAttribute(\"data-tracking\");\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"setInitialAttributesOnOptions\",\n value: function setInitialAttributesOnOptions() {\n var _iterator4 = _createForOfIteratorHelper(this.options),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var t = _step4.value;\n t.setAttribute(\"tabindex\", \"-1\"), n(t) && !t.hasAttribute(\"aria-selected\") && t.setAttribute(\"aria-selected\", \"false\"), t.id || (t.id = r());\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"activeOption\",\n get: function get() {\n return Array.from(this.list.querySelectorAll(\"[data-tracking]\"))[0];\n }\n }, {\n key: \"visibleOptions\",\n get: function get() {\n return this.options.filter(f);\n }\n }, {\n key: \"options\",\n get: function get() {\n return Array.from(this.list.querySelectorAll('[role=\"option\"]'));\n }\n }]);\n\n return a;\n}();\n\nfunction d(i) {\n var t = i.querySelector(\"[data-tracking]\");\n return t ? (n(t) && t.click(), !0) : !1;\n}\n\nfunction l(i) {\n if (!(i instanceof HTMLElement)) return !1;\n var t = i.closest('[role=\"option\"]');\n return t instanceof HTMLElement ? t : !1;\n}\n\nfunction f(i) {\n return !i.hidden && !(i instanceof HTMLInputElement && i.type === \"hidden\") && (i.offsetWidth > 0 || i.offsetHeight > 0);\n}\n\nfunction n(i) {\n return !i.hasAttribute(\"disabled\") && i.getAttribute(\"aria-disabled\") !== \"true\";\n}\n\nexport { a as default };","function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActionCable = {});\n})(this, function (exports) {\n \"use strict\";\n\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n\n messages.push(Date.now());\n\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [\"[ActionCable]\"].concat(messages));\n }\n }\n };\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n var classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var now = function now() {\n return new Date().getTime();\n };\n\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n\n var ConnectionMonitor = function () {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n\n this.pollTimeout = setTimeout(function () {\n _this.reconnectIfStale();\n\n _this.poll();\n }, this.getPollInterval());\n };\n\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval,\n min = _constructor$pollInte.min,\n max = _constructor$pollInte.max,\n multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n\n if (document.visibilityState === \"visible\") {\n setTimeout(function () {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n\n return ConnectionMonitor;\n }();\n\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n };\n var message_types = INTERNAL.message_types,\n protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n\n var Connection = function () {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n },\n allowReconnect = _ref.allowReconnect;\n\n if (!allowReconnect) {\n this.monitor.stop();\n }\n\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n\n return indexOf.call(states, this.getState()) >= 0;\n };\n\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n\n return null;\n };\n\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function () {};\n }\n };\n\n return Connection;\n }();\n\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n\n var _JSON$parse = JSON.parse(event.data),\n identifier = _JSON$parse.identifier,\n message = _JSON$parse.message,\n reason = _JSON$parse.reason,\n reconnect = _JSON$parse.reconnect,\n type = _JSON$parse.type;\n\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n\n if (this.disconnected) {\n return;\n }\n\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n\n return object;\n };\n\n var Subscription = function () {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n\n return Subscription;\n }();\n\n var Subscriptions = function () {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n\n return subscription;\n };\n\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n\n return this.findAll(identifier).map(function (subscription) {\n _this.forget(subscription);\n\n _this.notify(subscription, \"rejected\");\n\n return subscription;\n });\n };\n\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function (s) {\n return s !== subscription;\n });\n return subscription;\n };\n\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function (s) {\n return s.identifier === identifier;\n });\n };\n\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n\n return this.subscriptions.map(function (subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return this.subscriptions.map(function (subscription) {\n return _this3.notify.apply(_this3, [subscription, callbackName].concat(args));\n });\n };\n\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n var subscriptions = void 0;\n\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n\n return subscriptions.map(function (subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n\n return Subscriptions;\n }();\n\n var Consumer = function () {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n\n createClass(Consumer, [{\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n }]);\n return Consumer;\n }();\n\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar undefined;\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError; // eslint-disable-next-line consistent-return\n\nvar getEvalledConstructor = function getEvalledConstructor(expressionSyntax) {\n try {\n return $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n } catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nif ($gOPD) {\n try {\n $gOPD({}, '');\n } catch (e) {\n $gOPD = null; // this is IE 8, which has a broken gOPD\n }\n}\n\nvar throwTypeError = function throwTypeError() {\n throw new $TypeError();\n};\n\nvar ThrowTypeError = $gOPD ? function () {\n try {\n // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n arguments.callee; // IE 8 does not throw here\n\n return throwTypeError;\n } catch (calleeThrows) {\n try {\n // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n return $gOPD(arguments, 'callee').get;\n } catch (gOPDthrows) {\n return throwTypeError;\n }\n }\n}() : throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) {\n return x.__proto__;\n}; // eslint-disable-line no-proto\n\n\nvar needsEval = {};\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\nvar INTRINSICS = {\n '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n '%Array%': Array,\n '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n '%AsyncFromSyncIteratorPrototype%': undefined,\n '%AsyncFunction%': needsEval,\n '%AsyncGenerator%': needsEval,\n '%AsyncGeneratorFunction%': needsEval,\n '%AsyncIteratorPrototype%': needsEval,\n '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n '%Boolean%': Boolean,\n '%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n '%Date%': Date,\n '%decodeURI%': decodeURI,\n '%decodeURIComponent%': decodeURIComponent,\n '%encodeURI%': encodeURI,\n '%encodeURIComponent%': encodeURIComponent,\n '%Error%': Error,\n '%eval%': eval,\n // eslint-disable-line no-eval\n '%EvalError%': EvalError,\n '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n '%Function%': $Function,\n '%GeneratorFunction%': needsEval,\n '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n '%isFinite%': isFinite,\n '%isNaN%': isNaN,\n '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n '%JSON%': (typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) === 'object' ? JSON : undefined,\n '%Map%': typeof Map === 'undefined' ? undefined : Map,\n '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n '%Math%': Math,\n '%Number%': Number,\n '%Object%': Object,\n '%parseFloat%': parseFloat,\n '%parseInt%': parseInt,\n '%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n '%RangeError%': RangeError,\n '%ReferenceError%': ReferenceError,\n '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n '%RegExp%': RegExp,\n '%Set%': typeof Set === 'undefined' ? undefined : Set,\n '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n '%String%': String,\n '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n '%Symbol%': hasSymbols ? Symbol : undefined,\n '%SyntaxError%': $SyntaxError,\n '%ThrowTypeError%': ThrowTypeError,\n '%TypedArray%': TypedArray,\n '%TypeError%': $TypeError,\n '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n '%URIError%': URIError,\n '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n var value;\n\n if (name === '%AsyncFunction%') {\n value = getEvalledConstructor('async function () {}');\n } else if (name === '%GeneratorFunction%') {\n value = getEvalledConstructor('function* () {}');\n } else if (name === '%AsyncGeneratorFunction%') {\n value = getEvalledConstructor('async function* () {}');\n } else if (name === '%AsyncGenerator%') {\n var fn = doEval('%AsyncGeneratorFunction%');\n\n if (fn) {\n value = fn.prototype;\n }\n } else if (name === '%AsyncIteratorPrototype%') {\n var gen = doEval('%AsyncGenerator%');\n\n if (gen) {\n value = getProto(gen.prototype);\n }\n }\n\n INTRINSICS[name] = value;\n return value;\n};\n\nvar LEGACY_ALIASES = {\n '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n '%ArrayPrototype%': ['Array', 'prototype'],\n '%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n '%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n '%ArrayProto_values%': ['Array', 'prototype', 'values'],\n '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n '%BooleanPrototype%': ['Boolean', 'prototype'],\n '%DataViewPrototype%': ['DataView', 'prototype'],\n '%DatePrototype%': ['Date', 'prototype'],\n '%ErrorPrototype%': ['Error', 'prototype'],\n '%EvalErrorPrototype%': ['EvalError', 'prototype'],\n '%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n '%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n '%FunctionPrototype%': ['Function', 'prototype'],\n '%Generator%': ['GeneratorFunction', 'prototype'],\n '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n '%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n '%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n '%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n '%JSONParse%': ['JSON', 'parse'],\n '%JSONStringify%': ['JSON', 'stringify'],\n '%MapPrototype%': ['Map', 'prototype'],\n '%NumberPrototype%': ['Number', 'prototype'],\n '%ObjectPrototype%': ['Object', 'prototype'],\n '%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n '%PromisePrototype%': ['Promise', 'prototype'],\n '%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n '%Promise_all%': ['Promise', 'all'],\n '%Promise_reject%': ['Promise', 'reject'],\n '%Promise_resolve%': ['Promise', 'resolve'],\n '%RangeErrorPrototype%': ['RangeError', 'prototype'],\n '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n '%RegExpPrototype%': ['RegExp', 'prototype'],\n '%SetPrototype%': ['Set', 'prototype'],\n '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n '%StringPrototype%': ['String', 'prototype'],\n '%SymbolPrototype%': ['Symbol', 'prototype'],\n '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n '%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n '%TypeErrorPrototype%': ['TypeError', 'prototype'],\n '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n '%URIErrorPrototype%': ['URIError', 'prototype'],\n '%WeakMapPrototype%': ['WeakMap', 'prototype'],\n '%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\n\nvar hasOwn = require('has');\n\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\n\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/** Used to match backslashes in property paths. */\n\nvar stringToPath = function stringToPath(string) {\n var first = $strSlice(string, 0, 1);\n var last = $strSlice(string, -1);\n\n if (first === '%' && last !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n } else if (last === '%' && first !== '%') {\n throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n }\n\n var result = [];\n $replace(string, rePropName, function (match, number, quote, subString) {\n result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n });\n return result;\n};\n/* end adaptation */\n\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n var intrinsicName = name;\n var alias;\n\n if (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n alias = LEGACY_ALIASES[intrinsicName];\n intrinsicName = '%' + alias[0] + '%';\n }\n\n if (hasOwn(INTRINSICS, intrinsicName)) {\n var value = INTRINSICS[intrinsicName];\n\n if (value === needsEval) {\n value = doEval(intrinsicName);\n }\n\n if (typeof value === 'undefined' && !allowMissing) {\n throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n }\n\n return {\n alias: alias,\n name: intrinsicName,\n value: value\n };\n }\n\n throw new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n if (typeof name !== 'string' || name.length === 0) {\n throw new $TypeError('intrinsic name must be a non-empty string');\n }\n\n if (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n throw new $TypeError('\"allowMissing\" argument must be a boolean');\n }\n\n var parts = stringToPath(name);\n var intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n var intrinsicRealName = intrinsic.name;\n var value = intrinsic.value;\n var skipFurtherCaching = false;\n var alias = intrinsic.alias;\n\n if (alias) {\n intrinsicBaseName = alias[0];\n $spliceApply(parts, $concat([0, 1], alias));\n }\n\n for (var i = 1, isOwn = true; i < parts.length; i += 1) {\n var part = parts[i];\n var first = $strSlice(part, 0, 1);\n var last = $strSlice(part, -1);\n\n if ((first === '\"' || first === \"'\" || first === '`' || last === '\"' || last === \"'\" || last === '`') && first !== last) {\n throw new $SyntaxError('property names with quotes must have matching quotes');\n }\n\n if (part === 'constructor' || !isOwn) {\n skipFurtherCaching = true;\n }\n\n intrinsicBaseName += '.' + part;\n intrinsicRealName = '%' + intrinsicBaseName + '%';\n\n if (hasOwn(INTRINSICS, intrinsicRealName)) {\n value = INTRINSICS[intrinsicRealName];\n } else if (value != null) {\n if (!(part in value)) {\n if (!allowMissing) {\n throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n }\n\n return void undefined;\n }\n\n if ($gOPD && i + 1 >= parts.length) {\n var desc = $gOPD(value, part);\n isOwn = !!desc; // By convention, when a data property is converted to an accessor\n // property to emulate a data property that does not suffer from\n // the override mistake, that accessor's getter is marked with\n // an `originalValue` property. Here, when we detect this, we\n // uphold the illusion by pretending to see that original data\n // property, i.e., returning the value rather than the getter\n // itself.\n\n if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n value = desc.get;\n } else {\n value = value[part];\n }\n } else {\n isOwn = hasOwn(value, part);\n value = value[part];\n }\n\n if (isOwn && !skipFurtherCaching) {\n INTRINSICS[intrinsicRealName] = value;\n }\n }\n }\n\n return value;\n};","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function RFC1738(value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function RFC3986(value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = function () {\n var array = [];\n\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}();\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (_typeof(source) !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && _typeof(target) === 'object') {\n if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || _typeof(target) !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n\n if (targetItem && _typeof(targetItem) === 'object' && item && _typeof(item) === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function decode(str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n } // utf-8\n\n\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n\n if (_typeof(str) === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || c >= 0x30 && c <= 0x39 // 0-9\n || c >= 0x41 && c <= 0x5A // a-z\n || c >= 0x61 && c <= 0x7A // A-Z\n || format === formats.RFC1738 && (c === 0x28 || c === 0x29) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | c >> 6] + hexTable[0x80 | c & 0x3F]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | c >> 12] + hexTable[0x80 | c >> 6 & 0x3F] + hexTable[0x80 | c & 0x3F]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + ((c & 0x3FF) << 10 | string.charCodeAt(i) & 0x3FF);\n /* eslint operator-linebreak: [2, \"before\"] */\n\n out += hexTable[0xF0 | c >> 18] + hexTable[0x80 | c >> 12 & 0x3F] + hexTable[0x80 | c >> 6 & 0x3F] + hexTable[0x80 | c & 0x3F];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{\n obj: {\n o: value\n },\n prop: 'o'\n }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n var keys = Object.keys(obj);\n\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n\n if (_typeof(val) === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({\n obj: obj,\n prop: key\n });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || _typeof(obj) !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n\n return mapped;\n }\n\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function () {\n var t = this;\n (function () {\n (function () {\n this.Turbolinks = {\n supported: function () {\n return null != window.history.pushState && null != window.requestAnimationFrame && null != window.addEventListener;\n }(),\n visit: function visit(t, r) {\n return e.controller.visit(t, r);\n },\n clearCache: function clearCache() {\n return e.controller.clearCache();\n },\n setProgressBarDelay: function setProgressBarDelay(t) {\n return e.controller.setProgressBarDelay(t);\n }\n };\n }).call(this);\n }).call(t);\n var e = t.Turbolinks;\n (function () {\n (function () {\n var t,\n r,\n n,\n o = [].slice;\n e.copyObject = function (t) {\n var e, r, n;\n r = {};\n\n for (e in t) {\n n = t[e], r[e] = n;\n }\n\n return r;\n }, e.closest = function (e, r) {\n return t.call(e, r);\n }, t = function () {\n var t, e;\n return t = document.documentElement, null != (e = t.closest) ? e : function (t) {\n var e;\n\n for (e = this; e;) {\n if (e.nodeType === Node.ELEMENT_NODE && r.call(e, t)) return e;\n e = e.parentNode;\n }\n };\n }(), e.defer = function (t) {\n return setTimeout(t, 1);\n }, e.throttle = function (t) {\n var e;\n return e = null, function () {\n var r;\n return r = 1 <= arguments.length ? o.call(arguments, 0) : [], null != e ? e : e = requestAnimationFrame(function (n) {\n return function () {\n return e = null, t.apply(n, r);\n };\n }(this));\n };\n }, e.dispatch = function (t, e) {\n var r, o, i, s, a, u;\n return a = null != e ? e : {}, u = a.target, r = a.cancelable, o = a.data, i = document.createEvent(\"Events\"), i.initEvent(t, !0, r === !0), i.data = null != o ? o : {}, i.cancelable && !n && (s = i.preventDefault, i.preventDefault = function () {\n return this.defaultPrevented || Object.defineProperty(this, \"defaultPrevented\", {\n get: function get() {\n return !0;\n }\n }), s.call(this);\n }), (null != u ? u : document).dispatchEvent(i), i;\n }, n = function () {\n var t;\n return t = document.createEvent(\"Events\"), t.initEvent(\"test\", !0, !0), t.preventDefault(), t.defaultPrevented;\n }(), e.match = function (t, e) {\n return r.call(t, e);\n }, r = function () {\n var t, e, r, n;\n return t = document.documentElement, null != (e = null != (r = null != (n = t.matchesSelector) ? n : t.webkitMatchesSelector) ? r : t.msMatchesSelector) ? e : t.mozMatchesSelector;\n }(), e.uuid = function () {\n var t, e, r;\n\n for (r = \"\", t = e = 1; 36 >= e; t = ++e) {\n r += 9 === t || 14 === t || 19 === t || 24 === t ? \"-\" : 15 === t ? \"4\" : 20 === t ? (Math.floor(4 * Math.random()) + 8).toString(16) : Math.floor(15 * Math.random()).toString(16);\n }\n\n return r;\n };\n }).call(this), function () {\n e.Location = function () {\n function t(t) {\n var e, r;\n null == t && (t = \"\"), r = document.createElement(\"a\"), r.href = t.toString(), this.absoluteURL = r.href, e = r.hash.length, 2 > e ? this.requestURL = this.absoluteURL : (this.requestURL = this.absoluteURL.slice(0, -e), this.anchor = r.hash.slice(1));\n }\n\n var e, r, n, o;\n return t.wrap = function (t) {\n return t instanceof this ? t : new this(t);\n }, t.prototype.getOrigin = function () {\n return this.absoluteURL.split(\"/\", 3).join(\"/\");\n }, t.prototype.getPath = function () {\n var t, e;\n return null != (t = null != (e = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) ? e[1] : void 0) ? t : \"/\";\n }, t.prototype.getPathComponents = function () {\n return this.getPath().split(\"/\").slice(1);\n }, t.prototype.getLastPathComponent = function () {\n return this.getPathComponents().slice(-1)[0];\n }, t.prototype.getExtension = function () {\n var t, e;\n return null != (t = null != (e = this.getLastPathComponent().match(/\\.[^.]*$/)) ? e[0] : void 0) ? t : \"\";\n }, t.prototype.isHTML = function () {\n return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n }, t.prototype.isPrefixedBy = function (t) {\n var e;\n return e = r(t), this.isEqualTo(t) || o(this.absoluteURL, e);\n }, t.prototype.isEqualTo = function (t) {\n return this.absoluteURL === (null != t ? t.absoluteURL : void 0);\n }, t.prototype.toCacheKey = function () {\n return this.requestURL;\n }, t.prototype.toJSON = function () {\n return this.absoluteURL;\n }, t.prototype.toString = function () {\n return this.absoluteURL;\n }, t.prototype.valueOf = function () {\n return this.absoluteURL;\n }, r = function r(t) {\n return e(t.getOrigin() + t.getPath());\n }, e = function e(t) {\n return n(t, \"/\") ? t : t + \"/\";\n }, o = function o(t, e) {\n return t.slice(0, e.length) === e;\n }, n = function n(t, e) {\n return t.slice(-e.length) === e;\n }, t;\n }();\n }.call(this), function () {\n var t = function t(_t, e) {\n return function () {\n return _t.apply(e, arguments);\n };\n };\n\n e.HttpRequest = function () {\n function r(r, n, o) {\n this.delegate = r, this.requestCanceled = t(this.requestCanceled, this), this.requestTimedOut = t(this.requestTimedOut, this), this.requestFailed = t(this.requestFailed, this), this.requestLoaded = t(this.requestLoaded, this), this.requestProgressed = t(this.requestProgressed, this), this.url = e.Location.wrap(n).requestURL, this.referrer = e.Location.wrap(o).absoluteURL, this.createXHR();\n }\n\n return r.NETWORK_FAILURE = 0, r.TIMEOUT_FAILURE = -1, r.timeout = 60, r.prototype.send = function () {\n var t;\n return this.xhr && !this.sent ? (this.notifyApplicationBeforeRequestStart(), this.setProgress(0), this.xhr.send(), this.sent = !0, \"function\" == typeof (t = this.delegate).requestStarted ? t.requestStarted() : void 0) : void 0;\n }, r.prototype.cancel = function () {\n return this.xhr && this.sent ? this.xhr.abort() : void 0;\n }, r.prototype.requestProgressed = function (t) {\n return t.lengthComputable ? this.setProgress(t.loaded / t.total) : void 0;\n }, r.prototype.requestLoaded = function () {\n return this.endRequest(function (t) {\n return function () {\n var e;\n return 200 <= (e = t.xhr.status) && 300 > e ? t.delegate.requestCompletedWithResponse(t.xhr.responseText, t.xhr.getResponseHeader(\"Turbolinks-Location\")) : (t.failed = !0, t.delegate.requestFailedWithStatusCode(t.xhr.status, t.xhr.responseText));\n };\n }(this));\n }, r.prototype.requestFailed = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE);\n };\n }(this));\n }, r.prototype.requestTimedOut = function () {\n return this.endRequest(function (t) {\n return function () {\n return t.failed = !0, t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE);\n };\n }(this));\n }, r.prototype.requestCanceled = function () {\n return this.endRequest();\n }, r.prototype.notifyApplicationBeforeRequestStart = function () {\n return e.dispatch(\"turbolinks:request-start\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.notifyApplicationAfterRequestEnd = function () {\n return e.dispatch(\"turbolinks:request-end\", {\n data: {\n url: this.url,\n xhr: this.xhr\n }\n });\n }, r.prototype.createXHR = function () {\n return this.xhr = new XMLHttpRequest(), this.xhr.open(\"GET\", this.url, !0), this.xhr.timeout = 1e3 * this.constructor.timeout, this.xhr.setRequestHeader(\"Accept\", \"text/html, application/xhtml+xml\"), this.xhr.setRequestHeader(\"Turbolinks-Referrer\", this.referrer), this.xhr.onprogress = this.requestProgressed, this.xhr.onload = this.requestLoaded, this.xhr.onerror = this.requestFailed, this.xhr.ontimeout = this.requestTimedOut, this.xhr.onabort = this.requestCanceled;\n }, r.prototype.endRequest = function (t) {\n return this.xhr ? (this.notifyApplicationAfterRequestEnd(), null != t && t.call(this), this.destroy()) : void 0;\n }, r.prototype.setProgress = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.delegate).requestProgressed ? e.requestProgressed(this.progress) : void 0;\n }, r.prototype.destroy = function () {\n var t;\n return this.setProgress(1), \"function\" == typeof (t = this.delegate).requestFinished && t.requestFinished(), this.delegate = null, this.xhr = null;\n }, r;\n }();\n }.call(this), function () {\n var t = function t(_t2, e) {\n return function () {\n return _t2.apply(e, arguments);\n };\n };\n\n e.ProgressBar = function () {\n function e() {\n this.trickle = t(this.trickle, this), this.stylesheetElement = this.createStylesheetElement(), this.progressElement = this.createProgressElement();\n }\n\n var r;\n return r = 300, e.defaultCSS = \".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \" + r + \"ms ease-out, opacity \" + r / 2 + \"ms \" + r / 2 + \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\", e.prototype.show = function () {\n return this.visible ? void 0 : (this.visible = !0, this.installStylesheetElement(), this.installProgressElement(), this.startTrickling());\n }, e.prototype.hide = function () {\n return this.visible && !this.hiding ? (this.hiding = !0, this.fadeProgressElement(function (t) {\n return function () {\n return t.uninstallProgressElement(), t.stopTrickling(), t.visible = !1, t.hiding = !1;\n };\n }(this))) : void 0;\n }, e.prototype.setValue = function (t) {\n return this.value = t, this.refresh();\n }, e.prototype.installStylesheetElement = function () {\n return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }, e.prototype.installProgressElement = function () {\n return this.progressElement.style.width = 0, this.progressElement.style.opacity = 1, document.documentElement.insertBefore(this.progressElement, document.body), this.refresh();\n }, e.prototype.fadeProgressElement = function (t) {\n return this.progressElement.style.opacity = 0, setTimeout(t, 1.5 * r);\n }, e.prototype.uninstallProgressElement = function () {\n return this.progressElement.parentNode ? document.documentElement.removeChild(this.progressElement) : void 0;\n }, e.prototype.startTrickling = function () {\n return null != this.trickleInterval ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, r);\n }, e.prototype.stopTrickling = function () {\n return clearInterval(this.trickleInterval), this.trickleInterval = null;\n }, e.prototype.trickle = function () {\n return this.setValue(this.value + Math.random() / 100);\n }, e.prototype.refresh = function () {\n return requestAnimationFrame(function (t) {\n return function () {\n return t.progressElement.style.width = 10 + 90 * t.value + \"%\";\n };\n }(this));\n }, e.prototype.createStylesheetElement = function () {\n var t;\n return t = document.createElement(\"style\"), t.type = \"text/css\", t.textContent = this.constructor.defaultCSS, t;\n }, e.prototype.createProgressElement = function () {\n var t;\n return t = document.createElement(\"div\"), t.className = \"turbolinks-progress-bar\", t;\n }, e;\n }();\n }.call(this), function () {\n var t = function t(_t3, e) {\n return function () {\n return _t3.apply(e, arguments);\n };\n };\n\n e.BrowserAdapter = function () {\n function r(r) {\n this.controller = r, this.showProgressBar = t(this.showProgressBar, this), this.progressBar = new e.ProgressBar();\n }\n\n var n, o, i;\n return i = e.HttpRequest, n = i.NETWORK_FAILURE, o = i.TIMEOUT_FAILURE, r.prototype.visitProposedToLocationWithAction = function (t, e) {\n return this.controller.startVisitToLocationWithAction(t, e);\n }, r.prototype.visitStarted = function (t) {\n return t.issueRequest(), t.changeHistory(), t.loadCachedSnapshot();\n }, r.prototype.visitRequestStarted = function (t) {\n return this.progressBar.setValue(0), t.hasCachedSnapshot() || \"restore\" !== t.action ? this.showProgressBarAfterDelay() : this.showProgressBar();\n }, r.prototype.visitRequestProgressed = function (t) {\n return this.progressBar.setValue(t.progress);\n }, r.prototype.visitRequestCompleted = function (t) {\n return t.loadResponse();\n }, r.prototype.visitRequestFailedWithStatusCode = function (t, e) {\n switch (e) {\n case n:\n case o:\n return this.reload();\n\n default:\n return t.loadResponse();\n }\n }, r.prototype.visitRequestFinished = function (t) {\n return this.hideProgressBar();\n }, r.prototype.visitCompleted = function (t) {\n return t.followRedirect();\n }, r.prototype.pageInvalidated = function () {\n return this.reload();\n }, r.prototype.showProgressBarAfterDelay = function () {\n return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n }, r.prototype.showProgressBar = function () {\n return this.progressBar.show();\n }, r.prototype.hideProgressBar = function () {\n return this.progressBar.hide(), clearTimeout(this.progressBarTimeout);\n }, r.prototype.reload = function () {\n return window.location.reload();\n }, r;\n }();\n }.call(this), function () {\n var t = function t(_t4, e) {\n return function () {\n return _t4.apply(e, arguments);\n };\n };\n\n e.History = function () {\n function r(e) {\n this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this);\n }\n\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"popstate\", this.onPopState, !1), addEventListener(\"load\", this.onPageLoad, !1), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"popstate\", this.onPopState, !1), removeEventListener(\"load\", this.onPageLoad, !1), this.started = !1) : void 0;\n }, r.prototype.push = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"push\", t, r);\n }, r.prototype.replace = function (t, r) {\n return t = e.Location.wrap(t), this.update(\"replace\", t, r);\n }, r.prototype.onPopState = function (t) {\n var r, n, o, i;\n return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0;\n }, r.prototype.onPageLoad = function (t) {\n return e.defer(function (t) {\n return function () {\n return t.pageLoaded = !0;\n };\n }(this));\n }, r.prototype.shouldHandlePopState = function () {\n return this.pageIsLoaded();\n }, r.prototype.pageIsLoaded = function () {\n return this.pageLoaded || \"complete\" === document.readyState;\n }, r.prototype.update = function (t, e, r) {\n var n;\n return n = {\n turbolinks: {\n restorationIdentifier: r\n }\n }, history[t + \"State\"](n, null, e);\n }, r;\n }();\n }.call(this), function () {\n e.HeadDetails = function () {\n function t(t) {\n var e, r, n, s, a, u;\n\n for (this.elements = {}, n = 0, a = t.length; a > n; n++) {\n u = t[n], u.nodeType === Node.ELEMENT_NODE && (s = u.outerHTML, r = null != (e = this.elements)[s] ? e[s] : e[s] = {\n type: i(u),\n tracked: o(u),\n elements: []\n }, r.elements.push(u));\n }\n }\n\n var e, r, n, o, i;\n return t.fromHeadElement = function (t) {\n var e;\n return new this(null != (e = null != t ? t.childNodes : void 0) ? e : []);\n }, t.prototype.hasElementWithKey = function (t) {\n return t in this.elements;\n }, t.prototype.getTrackedElementSignature = function () {\n var t, e;\n return function () {\n var r, n;\n r = this.elements, n = [];\n\n for (t in r) {\n e = r[t].tracked, e && n.push(t);\n }\n\n return n;\n }.call(this).join(\"\");\n }, t.prototype.getScriptElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"script\", t);\n }, t.prototype.getStylesheetElementsNotInDetails = function (t) {\n return this.getElementsMatchingTypeNotInDetails(\"stylesheet\", t);\n }, t.prototype.getElementsMatchingTypeNotInDetails = function (t, e) {\n var r, n, o, i, s, a;\n o = this.elements, s = [];\n\n for (n in o) {\n i = o[n], a = i.type, r = i.elements, a !== t || e.hasElementWithKey(n) || s.push(r[0]);\n }\n\n return s;\n }, t.prototype.getProvisionalElements = function () {\n var t, e, r, n, o, i, s;\n r = [], n = this.elements;\n\n for (e in n) {\n o = n[e], s = o.type, i = o.tracked, t = o.elements, null != s || i ? t.length > 1 && r.push.apply(r, t.slice(1)) : r.push.apply(r, t);\n }\n\n return r;\n }, t.prototype.getMetaValue = function (t) {\n var e;\n return null != (e = this.findMetaElementByName(t)) ? e.getAttribute(\"content\") : void 0;\n }, t.prototype.findMetaElementByName = function (t) {\n var r, n, o, i;\n r = void 0, i = this.elements;\n\n for (o in i) {\n n = i[o].elements, e(n[0], t) && (r = n[0]);\n }\n\n return r;\n }, i = function i(t) {\n return r(t) ? \"script\" : n(t) ? \"stylesheet\" : void 0;\n }, o = function o(t) {\n return \"reload\" === t.getAttribute(\"data-turbolinks-track\");\n }, r = function r(t) {\n var e;\n return e = t.tagName.toLowerCase(), \"script\" === e;\n }, n = function n(t) {\n var e;\n return e = t.tagName.toLowerCase(), \"style\" === e || \"link\" === e && \"stylesheet\" === t.getAttribute(\"rel\");\n }, e = function e(t, _e) {\n var r;\n return r = t.tagName.toLowerCase(), \"meta\" === r && t.getAttribute(\"name\") === _e;\n }, t;\n }();\n }.call(this), function () {\n e.Snapshot = function () {\n function t(t, e) {\n this.headDetails = t, this.bodyElement = e;\n }\n\n return t.wrap = function (t) {\n return t instanceof this ? t : \"string\" == typeof t ? this.fromHTMLString(t) : this.fromHTMLElement(t);\n }, t.fromHTMLString = function (t) {\n var e;\n return e = document.createElement(\"html\"), e.innerHTML = t, this.fromHTMLElement(e);\n }, t.fromHTMLElement = function (t) {\n var r, n, o, i;\n return o = t.querySelector(\"head\"), r = null != (i = t.querySelector(\"body\")) ? i : document.createElement(\"body\"), n = e.HeadDetails.fromHeadElement(o), new this(n, r);\n }, t.prototype.clone = function () {\n return new this.constructor(this.headDetails, this.bodyElement.cloneNode(!0));\n }, t.prototype.getRootLocation = function () {\n var t, r;\n return r = null != (t = this.getSetting(\"root\")) ? t : \"/\", new e.Location(r);\n }, t.prototype.getCacheControlValue = function () {\n return this.getSetting(\"cache-control\");\n }, t.prototype.getElementForAnchor = function (t) {\n try {\n return this.bodyElement.querySelector(\"[id='\" + t + \"'], a[name='\" + t + \"']\");\n } catch (e) {}\n }, t.prototype.getPermanentElements = function () {\n return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementById = function (t) {\n return this.bodyElement.querySelector(\"#\" + t + \"[data-turbolinks-permanent]\");\n }, t.prototype.getPermanentElementsPresentInSnapshot = function (t) {\n var e, r, n, o, i;\n\n for (o = this.getPermanentElements(), i = [], r = 0, n = o.length; n > r; r++) {\n e = o[r], t.getPermanentElementById(e.id) && i.push(e);\n }\n\n return i;\n }, t.prototype.findFirstAutofocusableElement = function () {\n return this.bodyElement.querySelector(\"[autofocus]\");\n }, t.prototype.hasAnchor = function (t) {\n return null != this.getElementForAnchor(t);\n }, t.prototype.isPreviewable = function () {\n return \"no-preview\" !== this.getCacheControlValue();\n }, t.prototype.isCacheable = function () {\n return \"no-cache\" !== this.getCacheControlValue();\n }, t.prototype.isVisitable = function () {\n return \"reload\" !== this.getSetting(\"visit-control\");\n }, t.prototype.getSetting = function (t) {\n return this.headDetails.getMetaValue(\"turbolinks-\" + t);\n }, t;\n }();\n }.call(this), function () {\n var t = [].slice;\n\n e.Renderer = function () {\n function e() {}\n\n var r;\n return e.render = function () {\n var e, r, n, o;\n return n = arguments[0], r = arguments[1], e = 3 <= arguments.length ? t.call(arguments, 2) : [], o = function (t, e, r) {\n r.prototype = t.prototype;\n var n = new r(),\n o = t.apply(n, e);\n return Object(o) === o ? o : n;\n }(this, e, function () {}), o.delegate = n, o.render(r), o;\n }, e.prototype.renderView = function (t) {\n return this.delegate.viewWillRender(this.newBody), t(), this.delegate.viewRendered(this.newBody);\n }, e.prototype.invalidateView = function () {\n return this.delegate.viewInvalidated();\n }, e.prototype.createScriptElement = function (t) {\n var e;\n return \"false\" === t.getAttribute(\"data-turbolinks-eval\") ? t : (e = document.createElement(\"script\"), e.textContent = t.textContent, e.async = !1, r(e, t), e);\n }, r = function r(t, e) {\n var r, n, o, i, s, a, u;\n\n for (i = e.attributes, a = [], r = 0, n = i.length; n > r; r++) {\n s = i[r], o = s.name, u = s.value, a.push(t.setAttribute(o, u));\n }\n\n return a;\n }, e;\n }();\n }.call(this), function () {\n var t,\n r,\n n = function n(t, e) {\n function r() {\n this.constructor = t;\n }\n\n for (var n in e) {\n o.call(e, n) && (t[n] = e[n]);\n }\n\n return r.prototype = e.prototype, t.prototype = new r(), t.__super__ = e.prototype, t;\n },\n o = {}.hasOwnProperty;\n\n e.SnapshotRenderer = function (e) {\n function o(t, e, r) {\n this.currentSnapshot = t, this.newSnapshot = e, this.isPreview = r, this.currentHeadDetails = this.currentSnapshot.headDetails, this.newHeadDetails = this.newSnapshot.headDetails, this.currentBody = this.currentSnapshot.bodyElement, this.newBody = this.newSnapshot.bodyElement;\n }\n\n return n(o, e), o.prototype.render = function (t) {\n return this.shouldRender() ? (this.mergeHead(), this.renderView(function (e) {\n return function () {\n return e.replaceBody(), e.isPreview || e.focusFirstAutofocusableElement(), t();\n };\n }(this))) : this.invalidateView();\n }, o.prototype.mergeHead = function () {\n return this.copyNewHeadStylesheetElements(), this.copyNewHeadScriptElements(), this.removeCurrentHeadProvisionalElements(), this.copyNewHeadProvisionalElements();\n }, o.prototype.replaceBody = function () {\n var t;\n return t = this.relocateCurrentBodyPermanentElements(), this.activateNewBodyScriptElements(), this.assignNewBody(), this.replacePlaceholderElementsWithClonedPermanentElements(t);\n }, o.prototype.shouldRender = function () {\n return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n }, o.prototype.trackedElementsAreIdentical = function () {\n return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n }, o.prototype.copyNewHeadStylesheetElements = function () {\n var t, e, r, n, o;\n\n for (n = this.getNewHeadStylesheetElements(), o = [], e = 0, r = n.length; r > e; e++) {\n t = n[e], o.push(document.head.appendChild(t));\n }\n\n return o;\n }, o.prototype.copyNewHeadScriptElements = function () {\n var t, e, r, n, o;\n\n for (n = this.getNewHeadScriptElements(), o = [], e = 0, r = n.length; r > e; e++) {\n t = n[e], o.push(document.head.appendChild(this.createScriptElement(t)));\n }\n\n return o;\n }, o.prototype.removeCurrentHeadProvisionalElements = function () {\n var t, e, r, n, o;\n\n for (n = this.getCurrentHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) {\n t = n[e], o.push(document.head.removeChild(t));\n }\n\n return o;\n }, o.prototype.copyNewHeadProvisionalElements = function () {\n var t, e, r, n, o;\n\n for (n = this.getNewHeadProvisionalElements(), o = [], e = 0, r = n.length; r > e; e++) {\n t = n[e], o.push(document.head.appendChild(t));\n }\n\n return o;\n }, o.prototype.relocateCurrentBodyPermanentElements = function () {\n var e, n, o, i, s, a, u;\n\n for (a = this.getCurrentBodyPermanentElements(), u = [], e = 0, n = a.length; n > e; e++) {\n i = a[e], s = t(i), o = this.newSnapshot.getPermanentElementById(i.id), r(i, s.element), r(o, i), u.push(s);\n }\n\n return u;\n }, o.prototype.replacePlaceholderElementsWithClonedPermanentElements = function (t) {\n var e, n, o, i, s, a, u;\n\n for (u = [], o = 0, i = t.length; i > o; o++) {\n a = t[o], n = a.element, s = a.permanentElement, e = s.cloneNode(!0), u.push(r(n, e));\n }\n\n return u;\n }, o.prototype.activateNewBodyScriptElements = function () {\n var t, e, n, o, i, s;\n\n for (i = this.getNewBodyScriptElements(), s = [], e = 0, o = i.length; o > e; e++) {\n n = i[e], t = this.createScriptElement(n), s.push(r(n, t));\n }\n\n return s;\n }, o.prototype.assignNewBody = function () {\n return document.body = this.newBody;\n }, o.prototype.focusFirstAutofocusableElement = function () {\n var t;\n return null != (t = this.newSnapshot.findFirstAutofocusableElement()) ? t.focus() : void 0;\n }, o.prototype.getNewHeadStylesheetElements = function () {\n return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getNewHeadScriptElements = function () {\n return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n }, o.prototype.getCurrentHeadProvisionalElements = function () {\n return this.currentHeadDetails.getProvisionalElements();\n }, o.prototype.getNewHeadProvisionalElements = function () {\n return this.newHeadDetails.getProvisionalElements();\n }, o.prototype.getCurrentBodyPermanentElements = function () {\n return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n }, o.prototype.getNewBodyScriptElements = function () {\n return this.newBody.querySelectorAll(\"script\");\n }, o;\n }(e.Renderer), t = function t(_t5) {\n var e;\n return e = document.createElement(\"meta\"), e.setAttribute(\"name\", \"turbolinks-permanent-placeholder\"), e.setAttribute(\"content\", _t5.id), {\n element: e,\n permanentElement: _t5\n };\n }, r = function r(t, e) {\n var r;\n return (r = t.parentNode) ? r.replaceChild(e, t) : void 0;\n };\n }.call(this), function () {\n var t = function t(_t6, e) {\n function n() {\n this.constructor = _t6;\n }\n\n for (var o in e) {\n r.call(e, o) && (_t6[o] = e[o]);\n }\n\n return n.prototype = e.prototype, _t6.prototype = new n(), _t6.__super__ = e.prototype, _t6;\n },\n r = {}.hasOwnProperty;\n\n e.ErrorRenderer = function (e) {\n function r(t) {\n var e;\n e = document.createElement(\"html\"), e.innerHTML = t, this.newHead = e.querySelector(\"head\"), this.newBody = e.querySelector(\"body\");\n }\n\n return t(r, e), r.prototype.render = function (t) {\n return this.renderView(function (e) {\n return function () {\n return e.replaceHeadAndBody(), e.activateBodyScriptElements(), t();\n };\n }(this));\n }, r.prototype.replaceHeadAndBody = function () {\n var t, e;\n return e = document.head, t = document.body, e.parentNode.replaceChild(this.newHead, e), t.parentNode.replaceChild(this.newBody, t);\n }, r.prototype.activateBodyScriptElements = function () {\n var t, e, r, n, o, i;\n\n for (n = this.getScriptElements(), i = [], e = 0, r = n.length; r > e; e++) {\n o = n[e], t = this.createScriptElement(o), i.push(o.parentNode.replaceChild(t, o));\n }\n\n return i;\n }, r.prototype.getScriptElements = function () {\n return document.documentElement.querySelectorAll(\"script\");\n }, r;\n }(e.Renderer);\n }.call(this), function () {\n e.View = function () {\n function t(t) {\n this.delegate = t, this.htmlElement = document.documentElement;\n }\n\n return t.prototype.getRootLocation = function () {\n return this.getSnapshot().getRootLocation();\n }, t.prototype.getElementForAnchor = function (t) {\n return this.getSnapshot().getElementForAnchor(t);\n }, t.prototype.getSnapshot = function () {\n return e.Snapshot.fromHTMLElement(this.htmlElement);\n }, t.prototype.render = function (t, e) {\n var r, n, o;\n return o = t.snapshot, r = t.error, n = t.isPreview, this.markAsPreview(n), null != o ? this.renderSnapshot(o, n, e) : this.renderError(r, e);\n }, t.prototype.markAsPreview = function (t) {\n return t ? this.htmlElement.setAttribute(\"data-turbolinks-preview\", \"\") : this.htmlElement.removeAttribute(\"data-turbolinks-preview\");\n }, t.prototype.renderSnapshot = function (t, r, n) {\n return e.SnapshotRenderer.render(this.delegate, n, this.getSnapshot(), e.Snapshot.wrap(t), r);\n }, t.prototype.renderError = function (t, r) {\n return e.ErrorRenderer.render(this.delegate, r, t);\n }, t;\n }();\n }.call(this), function () {\n var t = function t(_t7, e) {\n return function () {\n return _t7.apply(e, arguments);\n };\n };\n\n e.ScrollManager = function () {\n function r(r) {\n this.delegate = r, this.onScroll = t(this.onScroll, this), this.onScroll = e.throttle(this.onScroll);\n }\n\n return r.prototype.start = function () {\n return this.started ? void 0 : (addEventListener(\"scroll\", this.onScroll, !1), this.onScroll(), this.started = !0);\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"scroll\", this.onScroll, !1), this.started = !1) : void 0;\n }, r.prototype.scrollToElement = function (t) {\n return t.scrollIntoView();\n }, r.prototype.scrollToPosition = function (t) {\n var e, r;\n return e = t.x, r = t.y, window.scrollTo(e, r);\n }, r.prototype.onScroll = function (t) {\n return this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n }, r.prototype.updatePosition = function (t) {\n var e;\n return this.position = t, null != (e = this.delegate) ? e.scrollPositionChanged(this.position) : void 0;\n }, r;\n }();\n }.call(this), function () {\n e.SnapshotCache = function () {\n function t(t) {\n this.size = t, this.keys = [], this.snapshots = {};\n }\n\n var r;\n return t.prototype.has = function (t) {\n var e;\n return e = r(t), e in this.snapshots;\n }, t.prototype.get = function (t) {\n var e;\n if (this.has(t)) return e = this.read(t), this.touch(t), e;\n }, t.prototype.put = function (t, e) {\n return this.write(t, e), this.touch(t), e;\n }, t.prototype.read = function (t) {\n var e;\n return e = r(t), this.snapshots[e];\n }, t.prototype.write = function (t, e) {\n var n;\n return n = r(t), this.snapshots[n] = e;\n }, t.prototype.touch = function (t) {\n var e, n;\n return n = r(t), e = this.keys.indexOf(n), e > -1 && this.keys.splice(e, 1), this.keys.unshift(n), this.trim();\n }, t.prototype.trim = function () {\n var t, e, r, n, o;\n\n for (n = this.keys.splice(this.size), o = [], t = 0, r = n.length; r > t; t++) {\n e = n[t], o.push(delete this.snapshots[e]);\n }\n\n return o;\n }, r = function r(t) {\n return e.Location.wrap(t).toCacheKey();\n }, t;\n }();\n }.call(this), function () {\n var t = function t(_t8, e) {\n return function () {\n return _t8.apply(e, arguments);\n };\n };\n\n e.Visit = function () {\n function r(r, n, o) {\n this.controller = r, this.action = o, this.performScroll = t(this.performScroll, this), this.identifier = e.uuid(), this.location = e.Location.wrap(n), this.adapter = this.controller.adapter, this.state = \"initialized\", this.timingMetrics = {};\n }\n\n var n;\n return r.prototype.start = function () {\n return \"initialized\" === this.state ? (this.recordTimingMetric(\"visitStart\"), this.state = \"started\", this.adapter.visitStarted(this)) : void 0;\n }, r.prototype.cancel = function () {\n var t;\n return \"started\" === this.state ? (null != (t = this.request) && t.cancel(), this.cancelRender(), this.state = \"canceled\") : void 0;\n }, r.prototype.complete = function () {\n var t;\n return \"started\" === this.state ? (this.recordTimingMetric(\"visitEnd\"), this.state = \"completed\", \"function\" == typeof (t = this.adapter).visitCompleted && t.visitCompleted(this), this.controller.visitCompleted(this)) : void 0;\n }, r.prototype.fail = function () {\n var t;\n return \"started\" === this.state ? (this.state = \"failed\", \"function\" == typeof (t = this.adapter).visitFailed ? t.visitFailed(this) : void 0) : void 0;\n }, r.prototype.changeHistory = function () {\n var t, e;\n return this.historyChanged ? void 0 : (t = this.location.isEqualTo(this.referrer) ? \"replace\" : this.action, e = n(t), this.controller[e](this.location, this.restorationIdentifier), this.historyChanged = !0);\n }, r.prototype.issueRequest = function () {\n return this.shouldIssueRequest() && null == this.request ? (this.progress = 0, this.request = new e.HttpRequest(this, this.location, this.referrer), this.request.send()) : void 0;\n }, r.prototype.getCachedSnapshot = function () {\n var t;\n return !(t = this.controller.getCachedSnapshotForLocation(this.location)) || null != this.location.anchor && !t.hasAnchor(this.location.anchor) || \"restore\" !== this.action && !t.isPreviewable() ? void 0 : t;\n }, r.prototype.hasCachedSnapshot = function () {\n return null != this.getCachedSnapshot();\n }, r.prototype.loadCachedSnapshot = function () {\n var t, e;\n return (e = this.getCachedSnapshot()) ? (t = this.shouldIssueRequest(), this.render(function () {\n var r;\n return this.cacheSnapshot(), this.controller.render({\n snapshot: e,\n isPreview: t\n }, this.performScroll), \"function\" == typeof (r = this.adapter).visitRendered && r.visitRendered(this), t ? void 0 : this.complete();\n })) : void 0;\n }, r.prototype.loadResponse = function () {\n return null != this.response ? this.render(function () {\n var t, e;\n return this.cacheSnapshot(), this.request.failed ? (this.controller.render({\n error: this.response\n }, this.performScroll), \"function\" == typeof (t = this.adapter).visitRendered && t.visitRendered(this), this.fail()) : (this.controller.render({\n snapshot: this.response\n }, this.performScroll), \"function\" == typeof (e = this.adapter).visitRendered && e.visitRendered(this), this.complete());\n }) : void 0;\n }, r.prototype.followRedirect = function () {\n return this.redirectedToLocation && !this.followedRedirect ? (this.location = this.redirectedToLocation, this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier), this.followedRedirect = !0) : void 0;\n }, r.prototype.requestStarted = function () {\n var t;\n return this.recordTimingMetric(\"requestStart\"), \"function\" == typeof (t = this.adapter).visitRequestStarted ? t.visitRequestStarted(this) : void 0;\n }, r.prototype.requestProgressed = function (t) {\n var e;\n return this.progress = t, \"function\" == typeof (e = this.adapter).visitRequestProgressed ? e.visitRequestProgressed(this) : void 0;\n }, r.prototype.requestCompletedWithResponse = function (t, r) {\n return this.response = t, null != r && (this.redirectedToLocation = e.Location.wrap(r)), this.adapter.visitRequestCompleted(this);\n }, r.prototype.requestFailedWithStatusCode = function (t, e) {\n return this.response = e, this.adapter.visitRequestFailedWithStatusCode(this, t);\n }, r.prototype.requestFinished = function () {\n var t;\n return this.recordTimingMetric(\"requestEnd\"), \"function\" == typeof (t = this.adapter).visitRequestFinished ? t.visitRequestFinished(this) : void 0;\n }, r.prototype.performScroll = function () {\n return this.scrolled ? void 0 : (\"restore\" === this.action ? this.scrollToRestoredPosition() || this.scrollToTop() : this.scrollToAnchor() || this.scrollToTop(), this.scrolled = !0);\n }, r.prototype.scrollToRestoredPosition = function () {\n var t, e;\n return t = null != (e = this.restorationData) ? e.scrollPosition : void 0, null != t ? (this.controller.scrollToPosition(t), !0) : void 0;\n }, r.prototype.scrollToAnchor = function () {\n return null != this.location.anchor ? (this.controller.scrollToAnchor(this.location.anchor), !0) : void 0;\n }, r.prototype.scrollToTop = function () {\n return this.controller.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.recordTimingMetric = function (t) {\n var e;\n return null != (e = this.timingMetrics)[t] ? e[t] : e[t] = new Date().getTime();\n }, r.prototype.getTimingMetrics = function () {\n return e.copyObject(this.timingMetrics);\n }, n = function n(t) {\n switch (t) {\n case \"replace\":\n return \"replaceHistoryWithLocationAndRestorationIdentifier\";\n\n case \"advance\":\n case \"restore\":\n return \"pushHistoryWithLocationAndRestorationIdentifier\";\n }\n }, r.prototype.shouldIssueRequest = function () {\n return \"restore\" === this.action ? !this.hasCachedSnapshot() : !0;\n }, r.prototype.cacheSnapshot = function () {\n return this.snapshotCached ? void 0 : (this.controller.cacheSnapshot(), this.snapshotCached = !0);\n }, r.prototype.render = function (t) {\n return this.cancelRender(), this.frame = requestAnimationFrame(function (e) {\n return function () {\n return e.frame = null, t.call(e);\n };\n }(this));\n }, r.prototype.cancelRender = function () {\n return this.frame ? cancelAnimationFrame(this.frame) : void 0;\n }, r;\n }();\n }.call(this), function () {\n var t = function t(_t9, e) {\n return function () {\n return _t9.apply(e, arguments);\n };\n };\n\n e.Controller = function () {\n function r() {\n this.clickBubbled = t(this.clickBubbled, this), this.clickCaptured = t(this.clickCaptured, this), this.pageLoaded = t(this.pageLoaded, this), this.history = new e.History(this), this.view = new e.View(this), this.scrollManager = new e.ScrollManager(this), this.restorationData = {}, this.clearCache(), this.setProgressBarDelay(500);\n }\n\n return r.prototype.start = function () {\n return e.supported && !this.started ? (addEventListener(\"click\", this.clickCaptured, !0), addEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.start(), this.startHistory(), this.started = !0, this.enabled = !0) : void 0;\n }, r.prototype.disable = function () {\n return this.enabled = !1;\n }, r.prototype.stop = function () {\n return this.started ? (removeEventListener(\"click\", this.clickCaptured, !0), removeEventListener(\"DOMContentLoaded\", this.pageLoaded, !1), this.scrollManager.stop(), this.stopHistory(), this.started = !1) : void 0;\n }, r.prototype.clearCache = function () {\n return this.cache = new e.SnapshotCache(10);\n }, r.prototype.visit = function (t, r) {\n var n, o;\n return null == r && (r = {}), t = e.Location.wrap(t), this.applicationAllowsVisitingLocation(t) ? this.locationIsVisitable(t) ? (n = null != (o = r.action) ? o : \"advance\", this.adapter.visitProposedToLocationWithAction(t, n)) : window.location = t : void 0;\n }, r.prototype.startVisitToLocationWithAction = function (t, r, n) {\n var o;\n return e.supported ? (o = this.getRestorationDataForIdentifier(n), this.startVisit(t, r, {\n restorationData: o\n })) : window.location = t;\n }, r.prototype.setProgressBarDelay = function (t) {\n return this.progressBarDelay = t;\n }, r.prototype.startHistory = function () {\n return this.location = e.Location.wrap(window.location), this.restorationIdentifier = e.uuid(), this.history.start(), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.stopHistory = function () {\n return this.history.stop();\n }, r.prototype.pushHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.push(this.location, this.restorationIdentifier);\n }, r.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function (t, r) {\n return this.restorationIdentifier = r, this.location = e.Location.wrap(t), this.history.replace(this.location, this.restorationIdentifier);\n }, r.prototype.historyPoppedToLocationWithRestorationIdentifier = function (t, r) {\n var n;\n return this.restorationIdentifier = r, this.enabled ? (n = this.getRestorationDataForIdentifier(this.restorationIdentifier), this.startVisit(t, \"restore\", {\n restorationIdentifier: this.restorationIdentifier,\n restorationData: n,\n historyChanged: !0\n }), this.location = e.Location.wrap(t)) : this.adapter.pageInvalidated();\n }, r.prototype.getCachedSnapshotForLocation = function (t) {\n var e;\n return null != (e = this.cache.get(t)) ? e.clone() : void 0;\n }, r.prototype.shouldCacheSnapshot = function () {\n return this.view.getSnapshot().isCacheable();\n }, r.prototype.cacheSnapshot = function () {\n var t, r;\n return this.shouldCacheSnapshot() ? (this.notifyApplicationBeforeCachingSnapshot(), r = this.view.getSnapshot(), t = this.lastRenderedLocation, e.defer(function (e) {\n return function () {\n return e.cache.put(t, r.clone());\n };\n }(this))) : void 0;\n }, r.prototype.scrollToAnchor = function (t) {\n var e;\n return (e = this.view.getElementForAnchor(t)) ? this.scrollToElement(e) : this.scrollToPosition({\n x: 0,\n y: 0\n });\n }, r.prototype.scrollToElement = function (t) {\n return this.scrollManager.scrollToElement(t);\n }, r.prototype.scrollToPosition = function (t) {\n return this.scrollManager.scrollToPosition(t);\n }, r.prototype.scrollPositionChanged = function (t) {\n var e;\n return e = this.getCurrentRestorationData(), e.scrollPosition = t;\n }, r.prototype.render = function (t, e) {\n return this.view.render(t, e);\n }, r.prototype.viewInvalidated = function () {\n return this.adapter.pageInvalidated();\n }, r.prototype.viewWillRender = function (t) {\n return this.notifyApplicationBeforeRender(t);\n }, r.prototype.viewRendered = function () {\n return this.lastRenderedLocation = this.currentVisit.location, this.notifyApplicationAfterRender();\n }, r.prototype.pageLoaded = function () {\n return this.lastRenderedLocation = this.location, this.notifyApplicationAfterPageLoad();\n }, r.prototype.clickCaptured = function () {\n return removeEventListener(\"click\", this.clickBubbled, !1), addEventListener(\"click\", this.clickBubbled, !1);\n }, r.prototype.clickBubbled = function (t) {\n var e, r, n;\n return this.enabled && this.clickEventIsSignificant(t) && (r = this.getVisitableLinkForNode(t.target)) && (n = this.getVisitableLocationForLink(r)) && this.applicationAllowsFollowingLinkToLocation(r, n) ? (t.preventDefault(), e = this.getActionForLink(r), this.visit(n, {\n action: e\n })) : void 0;\n }, r.prototype.applicationAllowsFollowingLinkToLocation = function (t, e) {\n var r;\n return r = this.notifyApplicationAfterClickingLinkToLocation(t, e), !r.defaultPrevented;\n }, r.prototype.applicationAllowsVisitingLocation = function (t) {\n var e;\n return e = this.notifyApplicationBeforeVisitingLocation(t), !e.defaultPrevented;\n }, r.prototype.notifyApplicationAfterClickingLinkToLocation = function (t, r) {\n return e.dispatch(\"turbolinks:click\", {\n target: t,\n data: {\n url: r.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationBeforeVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:before-visit\", {\n data: {\n url: t.absoluteURL\n },\n cancelable: !0\n });\n }, r.prototype.notifyApplicationAfterVisitingLocation = function (t) {\n return e.dispatch(\"turbolinks:visit\", {\n data: {\n url: t.absoluteURL\n }\n });\n }, r.prototype.notifyApplicationBeforeCachingSnapshot = function () {\n return e.dispatch(\"turbolinks:before-cache\");\n }, r.prototype.notifyApplicationBeforeRender = function (t) {\n return e.dispatch(\"turbolinks:before-render\", {\n data: {\n newBody: t\n }\n });\n }, r.prototype.notifyApplicationAfterRender = function () {\n return e.dispatch(\"turbolinks:render\");\n }, r.prototype.notifyApplicationAfterPageLoad = function (t) {\n return null == t && (t = {}), e.dispatch(\"turbolinks:load\", {\n data: {\n url: this.location.absoluteURL,\n timing: t\n }\n });\n }, r.prototype.startVisit = function (t, e, r) {\n var n;\n return null != (n = this.currentVisit) && n.cancel(), this.currentVisit = this.createVisit(t, e, r), this.currentVisit.start(), this.notifyApplicationAfterVisitingLocation(t);\n }, r.prototype.createVisit = function (t, r, n) {\n var o, i, s, a, u;\n return i = null != n ? n : {}, a = i.restorationIdentifier, s = i.restorationData, o = i.historyChanged, u = new e.Visit(this, t, r), u.restorationIdentifier = null != a ? a : e.uuid(), u.restorationData = e.copyObject(s), u.historyChanged = o, u.referrer = this.location, u;\n }, r.prototype.visitCompleted = function (t) {\n return this.notifyApplicationAfterPageLoad(t.getTimingMetrics());\n }, r.prototype.clickEventIsSignificant = function (t) {\n return !(t.defaultPrevented || t.target.isContentEditable || t.which > 1 || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey);\n }, r.prototype.getVisitableLinkForNode = function (t) {\n return this.nodeIsVisitable(t) ? e.closest(t, \"a[href]:not([target]):not([download])\") : void 0;\n }, r.prototype.getVisitableLocationForLink = function (t) {\n var r;\n return r = new e.Location(t.getAttribute(\"href\")), this.locationIsVisitable(r) ? r : void 0;\n }, r.prototype.getActionForLink = function (t) {\n var e;\n return null != (e = t.getAttribute(\"data-turbolinks-action\")) ? e : \"advance\";\n }, r.prototype.nodeIsVisitable = function (t) {\n var r;\n return (r = e.closest(t, \"[data-turbolinks]\")) ? \"false\" !== r.getAttribute(\"data-turbolinks\") : !0;\n }, r.prototype.locationIsVisitable = function (t) {\n return t.isPrefixedBy(this.view.getRootLocation()) && t.isHTML();\n }, r.prototype.getCurrentRestorationData = function () {\n return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n }, r.prototype.getRestorationDataForIdentifier = function (t) {\n var e;\n return null != (e = this.restorationData)[t] ? e[t] : e[t] = {};\n }, r;\n }();\n }.call(this), function () {\n !function () {\n var t, e;\n if ((t = e = document.currentScript) && !e.hasAttribute(\"data-turbolinks-suppress-warning\")) for (; t = t.parentNode;) {\n if (t === document.body) return console.warn(\"You are loading Turbolinks from a