{"version":3,"sources":["webpack:///./node_modules/@videojs/xhr/index.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/mux.js/lib/m2ts/timestamp-rollover-stream.js","webpack:///./node_modules/mux.js/lib/mp4/probe.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/xmldom/dom-parser.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/mux.js/lib/m2ts/probe.js","webpack:///./node_modules/mux.js/lib/utils/stream.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/mux.js/lib/m2ts/caption-stream.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@videojs/vhs-utils/dist/resolve-url.js","webpack:///./node_modules/xmldom/dom.js","webpack:///./node_modules/mux.js/lib/utils/bin.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/@videojs/vhs-utils/dist/decode-b64-to-uint8-array.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/ieee754/index.js","webpack:///./src/components/core/UVideo.vue?75c9","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/pkcs7/dist/pkcs7.es.js","webpack:///./node_modules/aes-decrypter/dist/aes-decrypter.es.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///src/components/core/UVideo.vue","webpack:///./src/components/core/UVideo.vue?0ec3","webpack:///./src/components/core/UVideo.vue","webpack:///./node_modules/mux.js/lib/tools/mp4-inspector.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/mux.js/lib/mp4/caption-parser.js","webpack:///./node_modules/mux.js/lib/m2ts/stream-types.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/video.js/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./node_modules/xmldom/sax.js","webpack:///./node_modules/@videojs/xhr/node_modules/global/window.js","webpack:///./node_modules/mux.js/lib/tools/ts-inspector.js","webpack:///./node_modules/mux.js/lib/tools/caption-packet-parser.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/mux.js/lib/aac/utils.js"],"names":["window","_extends","isFunction","parseHeaders","headers","result","trim","split","forEach","row","index","indexOf","key","slice","toLowerCase","value","Array","isArray","push","forEachArray","array","iterator","i","length","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","createXHR","_createXHR","Error","called","err","response","body","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","data","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","module","exports","default","toUpperCase","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","__proto__","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","len","charCodeAt","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","join","extraBytes","parts","maxChunkLength","len2","Stream","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover","reference","direction","Math","abs","TimestampRolloverStream","type","lastDTS","referenceDTS","init","call","this","type_","dts","pts","trigger","flush","endTimeline","discontinuity","reset","timescale","startTime","compositionStartTime","getVideoTrackIds","getTracks","toUnsigned","toHexString","mp4Inspector","traks","findBox","reduce","trak","tkhd","version","id","mdhd","fragment","trafs","baseTimes","concat","apply","map","traf","tfhd","scale","baseTime","tfdt","pow","Infinity","min","isFinite","timescales","trackId","trafBoxes","baseMediaDecodeTime","compositionTimeOffset","parsedTraf","parseTraf","boxes","samples","videoTrackIds","hdlrs","tkhds","hdlr","view","handlerType","parseType","subarray","DataView","buffer","byteOffset","getUint8","getUint32","tracks","track","stsd","sampleDescriptions","codec","codecConfig","codecConfigType","codecBox","test","replace","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","toString","DOMParser","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","Function","build","fn","msg","_locator","cdata","position","node","lineNumber","columnNumber","l","systemId","_toString","chars","substr","java","lang","String","appendElement","hander","currentElement","appendChild","doc","parseFromString","source","mimeType","sax","XMLReader","defaultNSMap","xmlns","entityMap","setDocumentLocator","nbsp","copy","xml","error","startDocument","DOMImplementation","createDocument","documentURI","startElement","namespaceURI","localName","qName","attrs","el","createElementNS","getURI","getValue","attr","getQName","createAttributeNS","getLocator","nodeValue","setAttributeNode","endElement","current","tagName","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","target","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","arguments","charNode","createCDATASection","createTextNode","skippedEntity","name","endDocument","normalize","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","warning","console","warn","fatalError","XMLSerializer","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","args","Class","a","Constructor","bind","instance","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","StreamTypes","parsePid","packet","pid","parsePayloadUnitStartIndicator","parseAdaptionField","offset","pmtPid","parsePat","pusi","parsePmt","programMapTable","payloadOffset","sectionLength","tableEnd","programInfoLength","parsePesType","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","parsePesTime","ptsDtsFlags","pes","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","listeners","on","listener","off","splice","callbacks","dispose","pipe","destination","flushSource","partialFlush","_getPrototypeOf","o","getPrototypeOf","assign","cea708Parser","CaptionStream","captionPackets_","ccStreams_","Cea608Stream","cc","event","sei","userData","newCaptionPackets","nalUnitType","parseSei","escapedRBSP","payloadType","USER_DATA_REGISTERED_ITU_T_T35","parseUserData","latestDts_","ignoreNextEqualDts_","numSameDts_","parseCaptionPackets","flushCCStreams","flushType","flushStream","elem","idx","presortIndex","sort","b","dispatchCea608Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","ccData","CHARACTER_TRANSLATION","getCharFromCode","fromCharCode","BOTTOM_ROW","ROWS","createDisplayBuffer","field","dataChannel","field_","dataChannel_","name_","setConstants","swap","char0","char1","text","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","flushDisplayed","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","content","startPts","endPts","stream","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","char","newBaseRow","format","reverse","popOn","baseRow","rollUp","paintOn","_setPrototypeOf","p","_interopDefault","ex","URLToolkit","resolveUrl","baseUrl","relativeUrl","buildAbsoluteURL","location","href","src","dest","Super","pt","ppt","t","htmlns","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","message","captureStackTrace","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","list","inc","_inc","ownerDocument","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","lastIndex","features","_features","feature","Node","_xmlEncoder","c","_visitNode","firstChild","nextSibling","Document","ns","_nsMap","remove","_onUpdateChild","newChild","cs","childNodes","child","_removeChild","previous","previousSibling","next","lastChild","_insertBefore","nextChild","cp","removeChild","nodeType","newFirst","newLast","pre","_appendSingleChild","Element","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","buf","refNode","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","isHTML","attributes","item","pubid","sysid","sub","internalSubset","importNode","deep","node2","cloneNode","n","v","attrs2","_ownerElement","object","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","versions","qualifiedName","doctype","root","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getAttribute","createElement","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagName","base","getElementsByTagNameNS","substringData","count","substring","insertData","replaceData","deleteData","splitText","newText","newNode","defineProperty","getTextContent","get","$$length","set","string","alert","confirm","prompt","atob","s","Buffer","from","decodeB64ToUint8Array","b64Text","decodedString","SafeParseTuple","reviver","read","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","NaN","write","rt","isNaN","floor","log","LN2","render","_vm","_h","$createElement","_c","_self","ref","staticClass","staticRenderFns","_assertThisInitialized","self","ReferenceError","_proto","LineStream","_Stream","_this","nextNewline","attributeSeparator","keyvalue","RegExp","parseAttributes","exec","ParseStream","customParsers","tagMappers","line","match","_this2","newLines","acc","mapper","mappedLine","newLine","tagType","duration","parseFloat","title","parseInt","number","playlistType","allowed","URI","BYTERANGE","_attributes$BYTERANGE","byterange","RESOLUTION","resolution","width","height","BANDWIDTH","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","addParser","_ref","_this3","expression","customType","dataParser","segment","addTagMapper","_ref2","mapFn","Parser","lineStream","parseStream","currentMap","_key","uris","currentUri","defaultMediaGroups","widevineUuid","currentTimeline","manifest","allowCache","discontinuityStarts","segments","entry","mediaGroup","rendition","tag","endlist","endList","inf","mediaSequence","discontinuitySequence","METHOD","KEYFORMAT","VALID_METHODS","KEYID","contentProtection","schemeIdUri","keyId","pssh","iv","playlist","playlists","mediaGroups","media","TYPE","NAME","mediaGroupType","DEFAULT","autoselect","AUTOSELECT","LANGUAGE","language","instreamId","CHARACTERISTICS","characteristics","FORCED","forced","targetduration","targetDuration","totalduration","totalDuration","timeOffset","precise","cueOut","cueOutCont","cueIn","timeline","custom","chunk","isObject","merge","_len","objects","keys","k","flatten","lists","x","y","findIndexes","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","resolvedUri","rangeStr","ranges","startRange","endRange","byteRangeToString","segmentRange","static","_attributes$timescale","sourceDuration","ceil","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$start","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","now","periodStartWC","periodEndWC","periodDuration","segmentCount","availableStart","availableEnd","max","toSegments","_attributes$timescale3","periodIndex","_attributes$startNumb","startNumber","time","parseByDuration","_attributes$type","_attributes$timescale4","_segmentRange$type","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","initSegment","sourceURL","segmentTimeInfo","addSegmentsToPlaylist","sidx","sidxByteRange","sidxEnd","mediaReferences","references","filter","r","referenceType","startIndex","firstOffset","size","referencedSize","subsegmentDuration","endIndex","mergeDiscontiguousPlaylists","mergedPlaylists","_acc$name$segments","addSegmentInfoFromSidx","sidxMapping","sidxKey","sidxMatch","formatAudioPlaylist","_attributes","bandwidth","CODECS","codecs","formatVttPlaylist","_attributes2","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","label","roleLabel","firstLabel","organizeVttPlaylists","formatVideoPlaylist","_ref3","_attributes3","AUDIO","SUBTITLES","toM3u8","dashPlaylists","_mediaGroups","_dashPlaylists$0$attr","_dashPlaylists$0$attr2","suggestedPresentationDelay","_dashPlaylists$0$attr3","videoOnly","_ref4","contentType","audioOnly","_ref5","vttOnly","_ref6","videoPlaylists","audioPlaylists","vttPlaylists","master","VIDEO","audio","subs","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","sIndex","S","repeat","segmentTime","nextS","identifierPattern","identifierReplacement","values","identifier","constructTemplateUrl","parseTemplateInfo","templateValues","RepresentationID","Bandwidth","mapSegment","Number","Time","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","getContent","textContent","parseDuration","str","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","_match$slice","year","month","day","hour","minute","second","parseDate","dateRegex","parsers","mediaPresentationDuration","parsedValue","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","keySystem","psshNode","psshBuffer","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","mpdAttributes","mpdBaseUrls","period","periodAtt","parsedPeriodId","adaptationSets","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periods","manifestString","parser","parseUTCTimingScheme","UTCTimingNode","parseUTCTiming","unpad","padded","classCallCheck","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","precompute","tables","encTable","decTable","sbox","sboxInv","xInv","th","x2","x4","x8","tEnc","tDec","aesTables","AES","_tables","j","encKey","decKey","keyLen","rcon","decrypt","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","b2","c2","nInnerRounds","kIndex","table","table0","table1","table2","table3","_length","_i","AsyncStream","jobs","delay","timeout_","processJob_","shift","job","ntoh","word","encrypted","initVector","encrypted32","Int32Array","decipher","decrypted","decrypted32","init0","init1","init2","init3","wordIx","Decrypter","done","step","STEP","asyncStream_","decryptChunk_","bytes","level","lvl","levels","lvlRegExp","unshift","info","createLogger","logByType","subname","all","debug","history","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","createLogger$1","each","initial","accum","sources","isPlain","computedStyle","prop","getComputedStyle","computedStyleValue","getPropertyValue","isNonBlankString","Boolean","throwIfWhitespace","classRegExp","className","isReal","document","isEl","isInFrame","parent","createQuerier","selector","context","querySelector","ctx","properties","getOwnPropertyNames","propName","val","attrName","appendContent","innerText","prependTo","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","getBoundingClientRect","rect","findPosition","box","left","top","docEl","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","round","getPointerPosition","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","pageY","pageX","changedTouches","isTextNode","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs","$","$$","Dom","freeze","createEl","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","style","setTextContent","styleSheet","cssText","_initialGuid","_guid","newGUID","WeakMap","FakeWeakMap","vdata","performance","access","_supportsPassive","DomData","_cleanUpEvents","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","clientY","which","charCode","keyCode","opts","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","bound","last","throttled","immediate","cancel","debounced","_later","EventTarget","allowedEvents_","ael","dispatchEvent","queueTrigger","Map","oldTimeout","isEvented","eventBusEl_","every","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","wrapper","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","StatefulMixin","state","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase","titleCaseEquals","str1","str2","mergeOptions","Component","ready","play","player_","isDisposed_","parentComponent_","options_","id_","SetSham","el_","children_","childIndex_","childNameIndex_","Set","set_","_proto2","thisArg","setTimeoutIds_","setIntervalIds_","rafIds_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","getDescendant","names","currentChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","childFound","compEl","workingChildren","parentOptions","handleAdd","playerOptions","Tech","some","wchild","isTech","buildCSSClass","isReady_","readyQueue_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","report","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","supportsRaf_","cancelAnimationFrame","_this4","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","pop","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","rangeCheck","fnName","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","createTimeRanges","bufferedPercent","buffered","bufferedDuration","browserApi","FullscreenApi","prefixed","apiMap","specApi","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","cues","cue","endTime","textTracksToJson","tech","trackEls","trackObjs","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","_Component","ModalDialog","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","tabIndex","previouslyActiveEl_","desc","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","close","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","empty","closeButton","content_","activeEl","activeElement","playerEl","isEventKey","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","_EventTarget","TrackList","tracks_","addTrack","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","disableOthers","enabled","_TrackList","AudioTrackList","changing_","enabledChange_","disableOthers$1","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","div","addToBody","host","protocol","innerHTML","details","getFileExtension","path","splitPathRe","pathParts","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseUrl","getAbsoluteURL","isCrossOrigin","srcContent","StringDecoder","errors","oncue","onparsingerror","onflush","groupCollapsed","groupEnd","responseBody","loaded_","tech_","_Track","TextTrack","settings","srclang","mode","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","newMode","ct","currentTime","active","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","ListClass","TrackClass","capitalName","video","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","onDurationChange","manualProgress","trackProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","error_","played","setCurrentTime","trackListChanges","addWebVttScript_","_this5","script","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","reduceRight","middlewareIterator","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","seekable","volume","allowedSetters","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","_middleware","mwrest","_src","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","m4a","mp3","aac","oga","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","techOrder","techName","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleMouseOver","handleMouseOut","clickHandler","_ClickableComponent","PosterImage","update","poster","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","trackList","userPref","selectedLanguage","clearDisplay","processCues","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","dir","Button","_Button","BigPlayButton","mouseused_","handleMouseDown","playPromise","cb","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","guide","h","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","updateContent","updateTextNode_","labelText_","textNode_","formattedTime_","oldNode","_TimeDisplay","CurrentTimeDisplay","ended","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","bar","barName","vertical","playerEvent","handleMouseMove","handleMouseUp","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent","percent_","part","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","updateTime","rafId_","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","_Slider","SeekBar","setEventHandlers_","update_","updateInterval","enableInterval_","disableInterval_","toggleVisibility_","getCurrentTime_","liveCurrentTime","currentTime_","seekableStart","videoWasPlaying","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","codes","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","seekBar","playProgressBar","seekBarEl","PictureInPictureToggle","handlePictureInPictureChange","pictureInPictureEnabled","isInPictureInPicture","exitPictureInPicture","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeBar","updateLastVolume_","updateARIAAttributes","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","menu","handleMenuKeyUp","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","_MenuButton","TrackButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","_MenuItem","TextTrackMenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","_TextTrackMenuItem","OffTextTrackMenuItem","allHidden","_TrackButton","TextTrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","_TextTrackButton","ChaptersButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","updateVisibility","updateLabel","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","_Spacer","CustomControlSpacer","ControlBar","_ModalDialog","ErrorDisplay","LOCAL_STORAGE_KEY","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","reset_","handleDurationchange","handleVisibilityChange","stopTracking","startTracking","trackLive_","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","handleFirstTimeupdate","timeDiff","skipNextSeeked_","lastSeekEnd_","seekableEnds","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","getOwnPropertyDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","setter","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","checkProgress","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","mpegurlRE","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","charAt","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","autoplay","plugins","scrubbing_","fullscreenchange","fluid_","updateStyleEl_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","aspectRatio","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","handleTechClick_","handleTechDoubleClick_","handleTechTouchStart_","handleTechTouchMove_","handleTechTouchEnd_","handleTechTap_","manualAutoplay_","promise","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","inAllowedEls","userActions","doubleClick","userWasActive","toggleFullscreenClass_","targetPlayer","isFs","fullscreenElement","matches","fullscreen","msMatchesSelector","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","_this8","resolve","play_","_this9","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","isScrubbing","applyInitTime_","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","_this10","enterFullWindow","exitFullscreenHelper_","_this11","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","foundSourceAndTech","_this12","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","flip","finder","sourceOrder","_this13","middlewareSource","src_","notSupportedMessage","_this14","sourceTech","_this15","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","_this$controlBar","durationDisplay","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","isAudio_","_obj","toJSON","createModal","_this16","modal","updateCurrentBreakpoint_","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this17","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","subClassMethods","methods","super_","normalizeId","videojs$1","getPlayer","defaultView","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","addLanguage","_mergeOptions","createTimeRange","dom","baseURL","relativeURL","resolveManifestRedirect","handleManifestRedirect","req","responseURL","get$1","property","receiver","getter","slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","Symbol","mergeOptions$1","EventTarget$1","log$1","forEachMediaGroup","mediaType","groupKey","labelKey","mediaProperties","updateSegments","resolveSegmentUris","baseUri","updateMaster","mergedPlaylist","createPlaylistID","setupMediaPlaylists","resolveMediaGroupUris","refreshDelay","lastSegment","PlaylistLoader","srcUrl","hls","_options$withCredenti","_options$handleManife","handleManifestRedirects","hls_","hlsOptions","customTagParsers","customTagMappers","playlistRequestError","haveMetadata","startingState","customParser","media_","mediaUpdateTimeout","stopRequest","finalRenditionTimeout","oldRequest","isFinalRendition","mediaChange","started","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","backward","forward","sumDurations","durations","safeLiveIndex","liveEdgePadding","lastSegmentDuration","safeDistance","distanceFromEnd","playlistEnd","useSafeLiveEnd","isWholeNumber","roundSignificantDigit","increment","numDecimalDigits","ceilLeastSignificantDigit","floorLeastSignificantDigit","getMediaInfoForTime","numSegments","mediaIndex","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isDisabled","isAes","isFmp4","estimateSegmentRequestTime","segmentDuration","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","Playlist","videojsXHR","mergeOptions$1$1","xhrFactory","XhrFunction","beforeRequest","Hls","newOptions","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","originalAbort","byterangeStr","byterangeStart","byterangeEnd","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","ArrayBuffer","isView","initSegmentId","segmentKeyId","hexDump","ascii","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","getTime","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","programDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","_ref$time","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","results","findRange","findNextRange","findGaps","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","createTextTracksIfNecessary","sourceBuffer","mediaSource","inbandTextTracks_","captionStreams","metadataTrack_","inBandMetadataTrackDispatchType","dispatchType","removeCuesFromTrack","deprecateOldCue","frame","privateData","durationOfVideo","dur","sourceHandler","captionArray","metadataArray","Cue","WebKitDataCue","caption","timestampOffset","videoDuration","mediaSource_","cueTime","frames","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","win","TARGET","SCRIPT_TYPE","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","URL","webkitURL","msURL","Worker","shimWorker","filename","forceFallback","objURL","createSourceObject","wrapTerminate","selfShim","postMessage","onmessage","isThisThread","testWorker","testArray","revokeObjectURL","terminate","createObjectURL","Blob","blob","getBlob","worker","term","TransmuxWorker","document$$1","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","mdia","sdtp","stbl","trex","trun","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","UINT32_MAX","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","flags","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","nalCount","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","generateSampleTable","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","silence","clock","sumFrameByteLengths","currentObj","sum","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","generateSampleTable$1","concatenateFrameData","audioFrameUtils","ONE_SECOND_IN_TS$1","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","trackDecodeInfo","RBSP_TRAILING_BITS","payloadSize","discardEmulationPreventionBytes","newLength","newData","emulationPreventionBytesPositions","sourceIndex","captionPacketParser","_char","captionStream","streamTypes","_MetadataStream","timestampRolloverStream","percentEncode","parseUtf8","decodeURIComponent","parseIso88591","unescape","parseSyncSafeInteger","tagParsers","TXXX","WXXX","PRIV","owner","tagSize","bufferSize","frameStart","frameSize","frameHeader","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","TimestampRolloverStream$1","MP2T_PACKET_LENGTH","SYNC_BYTE","bytesInBuffer","everything","parsePsi","packetsWaitingForPmt","psi","payloadUnitStartIndicator","pat","section_number","last_section_number","pmt","streamType","processPes_","STREAM_TYPES","h264","adts","timedMetadata","parsePes","packetLength","stream$$1","forceFlush","packetData","packetFlushable","flushStreams_","m2ts","PAT_PID","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES","handlePartialSegments","frameNum","frameLength","protectionSkipBytes","frameEnd","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","sarScale","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES$1","isLikelyAacData","parseSyncSafeInteger$1","percentEncode$1","parseIso88591$1","parseId3TagSize","header","byteIndex","returnSize","footerPresent","parseAdtsSize","lowThree","middle","highTwo","parseSampleRate","parseAacTimestamp","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","isLikelyAacData$1","ONE_SECOND_IN_TS$3","AUDIO_PROPERTIES","VIDEO_PROPERTIES","arrayEquals","generateVideoSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","align","alignEndIndex","matchFound","trimIndex","total","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","audioTrack","id3","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","pipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","transmuxer","Transmuxer","VideoSegmentStream","AudioSegmentStream","wireTransmuxerEvents","transmuxer$$1","initArray","typedArray","action","gopInfo","videoSegmentTimingInfo","MessageHandlers","appendStart","TransmuxerWorker","messageHandlers","transmuxerWorker","defaultCodecs","videoCodec","videoObjectTypeIndicator","audioProfile","translateLegacyCodecs","orig","profile","avcLevel","profileHex","avcLevelHex","parseCodecs","codecCount","parsed","mapLegacyAvcCodecs","codecString","makeMimeTypeString","container","getContainerType","getCodecs","mediaAttributes","audioProfileFromDefault","audioGroupId","audioGroup","audioType","mimeTypesForPlaylist","containerType","codecInfo","isMuxed","isMaat","groupId","codecStrings","justAudio","justVideo","bothVideoAudio","parseContentType","parameters","parameter","pair","isAudioCodec","isVideoCodec","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","videoBuffer","audioBuffer","audioDisabled","arity","extents","videoBuffered","audioBuffered","makeWrappedSourceBuffer","addSourceBuffer","updating","realBuffer_","VirtualSourceBuffer","_videojs$EventTarget","timestampOffset_","pendingBuffers_","bufferUpdating_","codecs_","audioCodec_","videoCodec_","audioDisabled_","appendAudioInitSegment_","gopBuffer_","timeMapping_","safeAppend_","transmuxer_","data_","done_","appendGopInfo_","videoSegmentTimingInfo_","videoBuffer_","audioBuffer_","appendWindowStart","processPendingSegments_","timingInfo","timingInfoInSeconds","decode","presentation","codecProperty","nativeMediaSource_","shouldTrigger","sortedSegments","segmentObj","createRealSourceBuffers_","triggerUpdateend","concatAndAppendSegments_","destinationBuffer","tempBuffer","appendBuffer","originalError","HtmlMediaSource","MediaSource","activeSourceBuffers_","sourceBuffers","updateActiveSourceBuffers_","disableCombined","disableAudioOnly","onPlayerMediachange_","onHlsReset_","onHlsSegmentTimeMapping_","url_","sourcebuffer","parsedType","urlCount","mediaSources","msObjectURL","swfId","isTypeSupported","supportsNativeMediaSources","URL$1","objectUrlPrefix","EventTarget$1$1","mergeOptions$2","updateMaster$1","oldMaster","newMaster","noChanges","playlistUpdate","group","_playlistUpdate","generateSidxKey","sidxInfo","sidxByteRangeEnd","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","masterXml","videoSidx","mediaGroupSidx","requestSidx_","sidxRange","finishProcessingFn","sidxRequestOptions","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","setupChildLoader","masterPlaylistLoader_","childPlaylist_","minimumUpdatePeriodTimeout_","mediaRequest_","doneFn","parseSidx","sidxRequestFinished_","masterXml_","clientOffset_","phonyUri","_phonyUri","haveMaster_","date","masterLoaded_","syncClientServerClock_","onClientServerClockSync_","utcTiming","serverTime","parseMasterXml","hasPendingRequest","updatedMaster","mediaID","logger","SourceUpdater","sourceBufferEmitter","callbacks_","pendingCallback_","processedAppend_","mimeType_","logger_","createSourceBuffer_","sourceBuffer_","start_","started_","onUpdateendCallback_","pendingCallback","removing","runCallback_","queueCallback_","videoSegmentTimingInfoCallback","disposeFn","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","loaded","handleErrors","handleKeyResponse","errorObj","captionParser","isInitialized","handleSegmentResponse","encryptedBytes","fmp4Captions","decryptSegment","decrypter","decryptionHandler","requestId","keyBytes","waitForCompletion","didError","endOfAllRequests","handleProgress","progressFn","firstBytesReceivedAt","mediaSegmentRequest","xhrOptions","decryptionWorker","keyRequestOptions","keyRequestCallback","keyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","stableSort","sortFn","newArray","cmp","leftBandwidth","rightBandwidth","leftWidth","rightWidth","playerBandwidth","playerWidth","playerHeight","limitRenditionByPlayerDimensions","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionBestRep","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","chosenRep","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","minRebufferMaxBandwidthSelector","duration$$1","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","createCaptionsTrackIfNotExists","inbandTextTracks","addCaptionData","CHECK_BUFFER_DELAY","detectEndOfStream","segmentIndex","appendedLastSegment","finite","illegalMediaSwitch","loaderType","startingMedia","newSegmentMedia","containsAudio","containsVideo","safeBackBufferTrimTime","seekable$$1","trimTime","maxTrimTime","segmentInfoString","_segmentInfo$segment","_segmentInfo$playlist","seq","_segmentInfo$playlist2","SegmentLoader","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","loaderType_","startingMedia_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceType","state_","checkBufferTimeout_","currentTimeline_","pendingSegment_","sourceUpdater_","xhrOptions_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","captionParser_","decrypter_","syncController_","syncPoint_","triggerSyncInfoUpdate_","ended_","fetchAtBuffer_","newState","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","abort_","monitorBuffer_","abortRequests","_error","set$$1","storedMap","storedKey","playlist_","setDateTimeMapping","couldBeginLoading_","init_","sourceBufferEmitter_","resetEverything","newPlaylist","oldPlaylist","syncInfo","oldId","mediaSequenceDiff","saveExpiredSegmentInfo","resyncLoader","_mimeType","resetLoader","clearAllCaptions","monitorBufferTick_","fillBuffer_","checkBuffer_","buffered_","isEndOfStream_","endOfStream","loadSegment_","lastBufferedEnd","bufferedTime","getSyncSegmentCandidate_","generateSegmentInfo_","mediaSourceInfo","_mediaSourceInfo","segmentIndexArray","isSyncRequest","random","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","simpleSegment","abortRequestEarly_","trimBackBuffer_","createSimplifiedSegmentObj_","handleProgress_","segmentRequestFinished_","removeToTime","segmentKey","processSegmentResponse_","clearParsedCaptions","handleSegment_","probeSegmentInfo","illegalMediaSwitchError","blacklistDuration","segmentTimestampInfo","ptsStartTime","ptsTime","dtsStartTime","dtsTime","timelineMapping","mappingForTimeline","initId","handleVideoSegmentTimingInfo_","handleUpdateEnd_","isWalkingForward","recordThroughput_","addSegmentMetadataCue_","segmentProcessingTime","segmentProcessingThroughput","uint8ToUtf8","uintArray","escape","VTT_LINE_TERMINATORS","_char2","_SegmentLoader","VTTSegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","combinedByteLength","combinedSegment","skipEmptySegments_","timestampOffsetForTimeline","checkTimestampOffset","loadHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","decoder","decodeBytesToString","TextDecoder","timestampmap","MPEGTS","LOCAL","ontimestampmap","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","adOffset","adTotal","_segment$cueOutCont$s","_segment$cueOutCont$s2","tsprobe","inspect","syncPointStrategies","run","datetimeToDisplayTime","lastDistance","segmentStart","discontinuitySync","discontinuities","SyncController","inspectCache_","syncPoints","runStrategies_","selectSyncPoint_","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","playlistTimestamp","probeMp4Segment_","probeTsSegment_","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","timeInfo","segmentStartTime","segmentEndTime","probedInfo","accuracy","mediaIndexDiff","Decrypter$1","inherits","possibleConstructorReturn","AsyncStream$$1","decrypt$$1","Decrypter$$1","DecrypterWorker","decrypterWorker","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","_settings$segmentLoad","segmentLoaders","mainSegmentLoader","mediaTypes","activeTrack","activeGroup","previousActiveLoader","onTrackChanged","_settings$segmentLoad2","onError","blacklistCurrentPlaylist","defaultTrack","setupListeners","requestOptions","initialize","_settings$mediaTypes$","groups","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","variants","setupMediaGroups","onAudioTrackChanged","createMediaTypes","ABORT_EARLY_BLACKLIST_SECONDS","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","forwardBuffer","bufferLowWaterLine","MasterPlaylistController","externHls","useCueTags","enableLowInitialPlaylist","useCueTags_","cueTagsTrack_","requestOptions_","mediaTypes_","handleSourceOpen_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","requestTimeout","triggerPresenceUsage_","setupSourceBuffers_","setupFirstPlay","updatedPlaylist","excludeUnsupportedVariants_","selectedMedia","selectInitialPlaylist","selectPlaylist","initialMedia_","updateAdCues_","updateDuration","addSeekableRange","addSeekableRange_","onDurationchange","playlistOutdated","stuckAtPlaylistEnd_","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","isEndOfStream","getExpiredTime","absolutePlaylistEnd","audioSeekable","mainSeekable","oldEnd","oldStart","oldDuration","newDuration","setDuration","mimeTypes","configureLoaderMimeTypes_","excludeIncompatibleVariants_","variant","variantCodecs","enableFunction","loader","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","hlsHandler","mpc","masterPlaylistController_","smoothQualityChange","changeType","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","canPlayHandler","monitorCurrentTime_","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","fixesBadSeeksHandler","fixesBadSeeks_","checkCurrentTime_","waiting_","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","currentRange","livePoint","nextRange","videoUnderflow_","difference","skipTheGap_","allowedEnd","gap","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reinitPlugin","reloadSourceOnError","version$1","Hls$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","comparePlaylistBandwidth","comparePlaylistResolution","LOCAL_STORAGE_KEY$1","simpleTypeFromSourceType","dashRE","handleHlsMediaChange","qualityLevels","selectedIndex_","handleHlsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioSegmentLoader","videoMimeType","audioMimeType","parsedMimeType","audioCodec","keySystemContentTypes","videoPlaylist","audioContentType","videoContentType","setupEmeOptions","sourceOptions","source_","keySystems","initializeMediaKeys","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","Component$1","HlsHandler","vhs","dash","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","featuresNativeAudioTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","smoothQualityChange_","pauseLoading","useBandwidthFromLocalStorage","option","playbackWatcher_","invBandwidth","invThroughput","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaSecondsLoaded_","currentTech","playerDimensions","setupQualityLevels_","qualityLevels_","HlsSourceHandler","_videojs$mergeOptions","supportedType","canUseMsePlayback","myVideo","disableRightClick","inspectMp4","textifyMp4","parseMp4Date","parseSampleFlags","subresults","nalParse","avcStream","avcView","dataReferenceIndex","getUint16","horizresolution","vertresolution","frameCount","depth","numOfPictureParameterSets","nalSize","configurationVersion","avcProfileIndication","avcLevelIndication","lengthSizeMinusOne","numOfSequenceParameterSets","bufferSizeDB","maxBitrate","avgBitrate","esId","streamPriority","decoderConfig","objectProfileIndication","decoderConfigDescriptor","audioObjectType","samplingFrequencyIndex","channelConfiguration","majorBrand","minorVersion","compatibleBrands","dataReferences","nals","modificationTime","streamDescriptor","matrix","nextTrackId","pdin","initialDelay","referenceId","earliestPresentationTime","referenceCount","startsWithSap","sapType","sapDeltaTime","balance","chunkOffsets","entryCount","sampleToChunks","firstChunk","samplesPerChunk","sampleDescriptionIndex","sampleSize","entries","timeToSamples","sampleDelta","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","layer","alternateGroup","defaultSampleDescriptionIndex","sampleDependsOn","sampleIsDependedOn","sampleHasRedundancy","samplePaddingValue","sampleIsDifferenceSample","sampleDegradationPriority","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","graphicsmode","opcolor","Uint16Array","ab","z","inspectedMp4","indent","byte","textify","parseTfdt","parseHdlr","parseTfhd","parseTrun","_inherits","probe","mapToSample","approximateOffset","findSeiNals","seiNal","lastMatchedSample","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","mdats","captionNals","mdatTrafPairs","matchingTraf","seiNals","headerInfo","parseEmbeddedCaptions","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isPartial","isNewInit","parsedData","cachedSegment","pushNals","nal","resetCaptionStream","autoKeyword","directionSetting","alignSetting","findDirectionSetting","findAlignSetting","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","SyntaxError","getCueAsHTML","convertCueToDOMTree","base64","ieee754","typedArraySupport","foo","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","allocUnsafe","fromArrayBuffer","fromString","fromObject","assertSize","alloc","encoding","checked","isEncoding","actual","fromArrayLike","isBuffer","isnan","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","global","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","MAX_ARGUMENTS_LENGTH","codePoints","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","dst","_typeof","assertThisInitialized","_possibleConstructorReturn","_objCreate","F","ParsingError","errorData","parseTimeStamp","input","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","lineAlign","snapToLines","center","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","TEXTAREA_ELEMENT","TAG_NAME","u","ruby","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","shouldAdd","annotation","rootDiv","tagStack","classes","cl","bgColor","colorName","propValue","strongRTLRanges","isStrongRTLChar","determineBidi","nodeStack","pushNodes","nextTextNode","computeLinePos","textTrackList","mediaElement","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","textPos","formatStyle","move","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","maxPosition","initialAxis","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","intersectArea","getSimpleBoxPosition","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","margin","reportOrThrowError","collectNextLine","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","parseHeader","alreadyCollectedLine","hasSubstring","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","builtParts","query","baseURLPath","newPath","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","setTagName","nsp","nsPrefix","_copy","elStartEnd","elEndStart","matchs","lastMatch","endDTD","_set_proto_","thiz","reg","getLocalName","parsePsi_","parseAudioPes_","pesType","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","isAacData","searchInput","hasKeyCode","search","foundNamedKey","aliases","nameOrCode","alias","doccy","minDoc","topLevel","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"kHACA,IAAIA,EAAS,EAAQ,QACjBC,EAAW,EAAQ,QACnBC,EAAa,EAAQ,QAUrBC,EAAe,SAASC,GACxB,IAAIC,EAAS,GAEb,OAAKD,GAILA,EAAQE,OAAOC,MAAM,MAAMC,SAAQ,SAASC,GACxC,IAAIC,EAAQD,EAAIE,QAAQ,KACpBC,EAAMH,EAAII,MAAM,EAAGH,GAAOJ,OAAOQ,cACjCC,EAAQN,EAAII,MAAMH,EAAQ,GAAGJ,OAEL,qBAAjBD,EAAOO,GAChBP,EAAOO,GAAOG,EACLC,MAAMC,QAAQZ,EAAOO,IAC9BP,EAAOO,GAAKM,KAAKH,GAEjBV,EAAOO,GAAO,CAAEP,EAAOO,GAAMG,MAI5BV,GAjBIA,GAkCf,SAASc,EAAaC,EAAOC,GACzB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IAC9BD,EAASD,EAAME,IAIvB,SAASE,EAAQC,GACb,IAAI,IAAIH,KAAKG,EACT,GAAGA,EAAIC,eAAeJ,GAAI,OAAO,EAErC,OAAO,EAGX,SAASK,EAAWC,EAAKC,EAASC,GAC9B,IAAIC,EAASH,EAYb,OAVI1B,EAAW2B,IACXC,EAAWD,EACQ,kBAARD,IACPG,EAAS,CAACH,IAAIA,KAGlBG,EAAS9B,EAAS,GAAI4B,EAAS,CAACD,IAAKA,IAGzCG,EAAOD,SAAWA,EACXC,EAGX,SAASC,EAAUJ,EAAKC,EAASC,GAE7B,OADAD,EAAUF,EAAWC,EAAKC,EAASC,GAC5BG,EAAWJ,GAGtB,SAASI,EAAWJ,GAChB,GAA+B,qBAArBA,EAAQC,SACd,MAAM,IAAII,MAAM,6BAGpB,IAAIC,GAAS,EACTL,EAAW,SAAgBM,EAAKC,EAAUC,GACtCH,IACAA,GAAS,EACTN,EAAQC,SAASM,EAAKC,EAAUC,KAIxC,SAASC,IACkB,IAAnBC,EAAIC,YACJC,WAAWC,EAAU,GAI7B,SAASC,IAEL,IAAIN,OAAOO,EAQX,GALIP,EADAE,EAAIH,SACGG,EAAIH,SAEJG,EAAIM,cAAgBC,EAAOP,GAGlCQ,EACA,IACIV,EAAOW,KAAKC,MAAMZ,GACpB,MAAOa,IAGb,OAAOb,EAGX,SAASc,EAAUC,GAMf,OALAC,aAAaC,GACRF,aAAenB,QAChBmB,EAAM,IAAInB,MAAM,IAAMmB,GAAO,kCAEjCA,EAAIG,WAAa,EACV1B,EAASuB,EAAKI,GAIzB,SAASd,IACL,IAAIe,EAAJ,CACA,IAAIC,EACJL,aAAaC,GAGTI,EAFD9B,EAAQ+B,aAAuBf,IAAbL,EAAImB,OAEZ,IAEgB,OAAfnB,EAAImB,OAAkB,IAAMnB,EAAImB,OAE9C,IAAItB,EAAWoB,EACXrB,EAAM,KAiBV,OAfe,IAAXuB,GACAtB,EAAW,CACPC,KAAMM,IACNY,WAAYG,EACZE,OAAQA,EACRzD,QAAS,GACT0D,IAAKlC,EACLmC,WAAYvB,GAEbA,EAAIwB,wBACH3B,EAASjC,QAAUD,EAAaqC,EAAIwB,2BAGxC5B,EAAM,IAAIF,MAAM,iCAEbJ,EAASM,EAAKC,EAAUA,EAASC,OAG5C,IAUI1B,EACA8C,EAXAlB,EAAMX,EAAQW,KAAO,KAEpBA,IAEGA,EADAX,EAAQoC,MAAQpC,EAAQ+B,OAClB,IAAI5B,EAAUkC,eAEd,IAAIlC,EAAUmC,gBAM5B,IAMIZ,EANA3B,EAAMY,EAAIsB,IAAMjC,EAAQD,KAAOC,EAAQiC,IACvCD,EAASrB,EAAIqB,OAAShC,EAAQgC,QAAU,MACxCvB,EAAOT,EAAQS,MAAQT,EAAQuC,KAC/BhE,EAAUoC,EAAIpC,QAAUyB,EAAQzB,SAAW,GAC3CiE,IAASxC,EAAQwC,KACjBrB,GAAS,EAETS,EAAkB,CAClBnB,UAAMO,EACNzC,QAAS,GACToD,WAAY,EACZK,OAAQA,EACRC,IAAKlC,EACLmC,WAAYvB,GA0ChB,GAvCI,SAAUX,IAA4B,IAAjBA,EAAQyC,OAC7BtB,GAAS,EACT5C,EAAQ,WAAaA,EAAQ,YAAcA,EAAQ,UAAY,oBAChD,QAAXyD,GAA+B,SAAXA,IACpBzD,EAAQ,iBAAmBA,EAAQ,kBAAoBA,EAAQ,gBAAkB,oBACjFkC,EAAOW,KAAKsB,WAA2B,IAAjB1C,EAAQyC,KAAgBhC,EAAOT,EAAQyC,QAIrE9B,EAAIgC,mBAAqBjC,EACzBC,EAAIiC,OAAS9B,EACbH,EAAIkC,QAAUtB,EAEdZ,EAAImC,WAAa,aAGjBnC,EAAIoC,QAAU,WACVlB,GAAU,GAEdlB,EAAIqC,UAAYzB,EAChBZ,EAAIsC,KAAKjB,EAAQjC,GAAMyC,EAAMxC,EAAQkD,SAAUlD,EAAQmD,UAEnDX,IACA7B,EAAIyC,kBAAoBpD,EAAQoD,kBAK/BZ,GAAQxC,EAAQqD,QAAU,IAC3B3B,EAAeb,YAAW,WACtB,IAAIgB,EAAJ,CACAA,GAAU,EACVlB,EAAI2C,MAAM,WACV,IAAIhC,EAAI,IAAIjB,MAAM,0BAClBiB,EAAEiC,KAAO,YACThC,EAAUD,MACXtB,EAAQqD,UAGX1C,EAAI6C,iBACJ,IAAIzE,KAAOR,EACJA,EAAQsB,eAAed,IACtB4B,EAAI6C,iBAAiBzE,EAAKR,EAAQQ,SAGvC,GAAIiB,EAAQzB,UAAYoB,EAAQK,EAAQzB,SAC3C,MAAM,IAAI8B,MAAM,qDAkBpB,MAfI,iBAAkBL,IAClBW,EAAI8C,aAAezD,EAAQyD,cAG3B,eAAgBzD,GACc,oBAAvBA,EAAQ0D,YAEf1D,EAAQ0D,WAAW/C,GAMvBA,EAAIgD,KAAKlD,GAAQ,MAEVE,EAKX,SAASO,EAAOP,GAGZ,IACI,GAAyB,aAArBA,EAAI8C,aACJ,OAAO9C,EAAIiD,YAEf,IAAIC,EAAwBlD,EAAIiD,aAA4D,gBAA7CjD,EAAIiD,YAAYE,gBAAgBC,SAC/E,GAAyB,KAArBpD,EAAI8C,eAAwBI,EAC5B,OAAOlD,EAAIiD,YAEjB,MAAOtC,IAET,OAAO,KAGX,SAAS0C,KAhPTC,EAAOC,QAAU/D,EAEjB8D,EAAOC,QAAQC,QAAUhE,EACzBA,EAAUmC,eAAiBnE,EAAOmE,gBAAkB0B,EACpD7D,EAAUkC,eAAiB,oBAAqB,IAAKlC,EAAUmC,eAAoBnC,EAAUmC,eAAiBnE,EAAOkE,eAErH/C,EAAa,CAAC,MAAO,MAAO,OAAQ,QAAS,OAAQ,WAAW,SAAS0C,GACrE7B,EAAqB,WAAX6B,EAAsB,MAAQA,GAAU,SAASjC,EAAKC,EAASC,GAGrE,OAFAD,EAAUF,EAAWC,EAAKC,EAASC,GACnCD,EAAQgC,OAASA,EAAOoC,cACjBhE,EAAWJ,Q,qBC/C1B,SAASqE,EAAeC,EAAUC,GAChCD,EAASE,UAAYC,OAAOC,OAAOH,EAAWC,WAC9CF,EAASE,UAAUG,YAAcL,EACjCA,EAASM,UAAYL,EAGvBN,EAAOC,QAAUG,G,sDCJjBH,EAAQW,WAAaA,EACrBX,EAAQY,YAAcA,EACtBZ,EAAQa,cAAgBA,EAOxB,IALA,IAAIC,EAAS,GACTC,EAAY,GACZC,EAA4B,qBAAfC,WAA6BA,WAAahG,MAEvDoE,EAAO,mEACF9D,EAAI,EAAG2F,EAAM7B,EAAK7D,OAAQD,EAAI2F,IAAO3F,EAC5CuF,EAAOvF,GAAK8D,EAAK9D,GACjBwF,EAAU1B,EAAK8B,WAAW5F,IAAMA,EAQlC,SAAS6F,EAASC,GAChB,IAAIH,EAAMG,EAAI7F,OAEd,GAAI0F,EAAM,EAAI,EACZ,MAAM,IAAI/E,MAAM,kDAKlB,IAAImF,EAAWD,EAAIzG,QAAQ,MACT,IAAd0G,IAAiBA,EAAWJ,GAEhC,IAAIK,EAAkBD,IAAaJ,EAC/B,EACA,EAAKI,EAAW,EAEpB,MAAO,CAACA,EAAUC,GAIpB,SAASZ,EAAYU,GACnB,IAAIG,EAAOJ,EAAQC,GACfC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAC3B,OAAuC,GAA9BF,EAAWC,GAAuB,EAAKA,EAGlD,SAASE,EAAaJ,EAAKC,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAGlD,SAASX,EAAaS,GACpB,IAAIK,EAcAnG,EAbAiG,EAAOJ,EAAQC,GACfC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAEvBG,EAAM,IAAIX,EAAIS,EAAYJ,EAAKC,EAAUC,IAEzCK,EAAU,EAGVV,EAAMK,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK/F,EAAI,EAAGA,EAAI2F,EAAK3F,GAAK,EACxBmG,EACGX,EAAUM,EAAIF,WAAW5F,KAAO,GAChCwF,EAAUM,EAAIF,WAAW5F,EAAI,KAAO,GACpCwF,EAAUM,EAAIF,WAAW5F,EAAI,KAAO,EACrCwF,EAAUM,EAAIF,WAAW5F,EAAI,IAC/BoG,EAAIC,KAAcF,GAAO,GAAM,IAC/BC,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,EAmBnB,OAhBwB,IAApBH,IACFG,EACGX,EAAUM,EAAIF,WAAW5F,KAAO,EAChCwF,EAAUM,EAAIF,WAAW5F,EAAI,KAAO,EACvCoG,EAAIC,KAAmB,IAANF,GAGK,IAApBH,IACFG,EACGX,EAAUM,EAAIF,WAAW5F,KAAO,GAChCwF,EAAUM,EAAIF,WAAW5F,EAAI,KAAO,EACpCwF,EAAUM,EAAIF,WAAW5F,EAAI,KAAO,EACvCoG,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,GAGZC,EAGT,SAASE,EAAiBC,GACxB,OAAOhB,EAAOgB,GAAO,GAAK,IACxBhB,EAAOgB,GAAO,GAAK,IACnBhB,EAAOgB,GAAO,EAAI,IAClBhB,EAAa,GAANgB,GAGX,SAASC,EAAaC,EAAOC,EAAOC,GAGlC,IAFA,IAAIR,EACAS,EAAS,GACJ5G,EAAI0G,EAAO1G,EAAI2G,EAAK3G,GAAK,EAChCmG,GACIM,EAAMzG,IAAM,GAAM,WAClByG,EAAMzG,EAAI,IAAM,EAAK,QACP,IAAfyG,EAAMzG,EAAI,IACb4G,EAAOhH,KAAK0G,EAAgBH,IAE9B,OAAOS,EAAOC,KAAK,IAGrB,SAASvB,EAAemB,GAQtB,IAPA,IAAIN,EACAR,EAAMc,EAAMxG,OACZ6G,EAAanB,EAAM,EACnBoB,EAAQ,GACRC,EAAiB,MAGZhH,EAAI,EAAGiH,EAAOtB,EAAMmB,EAAY9G,EAAIiH,EAAMjH,GAAKgH,EACtDD,EAAMnH,KAAK4G,EACTC,EAAOzG,EAAIA,EAAIgH,EAAkBC,EAAOA,EAAQjH,EAAIgH,IAsBxD,OAjBmB,IAAfF,GACFX,EAAMM,EAAMd,EAAM,GAClBoB,EAAMnH,KACJ2F,EAAOY,GAAO,GACdZ,EAAQY,GAAO,EAAK,IACpB,OAEsB,IAAfW,IACTX,GAAOM,EAAMd,EAAM,IAAM,GAAKc,EAAMd,EAAM,GAC1CoB,EAAMnH,KACJ2F,EAAOY,GAAO,IACdZ,EAAQY,GAAO,EAAK,IACpBZ,EAAQY,GAAO,EAAK,IACpB,MAIGY,EAAMF,KAAK,IApIpBrB,EAAU,IAAII,WAAW,IAAM,GAC/BJ,EAAU,IAAII,WAAW,IAAM,I,oCCN/B,IAAIsB,EAAS,EAAQ,QAEjBC,EAAS,WAETC,EAAY,WAEZC,EAAc,SAEdC,EAAiB,SAAS7H,EAAO8H,GACnC,IAAIC,EAAY,EAEZ/H,EAAQ8H,IAQVC,GAAa,GAKf,MAAOC,KAAKC,IAAIH,EAAY9H,GAAS2H,EACnC3H,GAAU+H,EAAYL,EAGxB,OAAO1H,GAGLkI,EAA0B,SAASC,GACrC,IAAIC,EAASC,EAEbH,EAAwB5C,UAAUgD,KAAKC,KAAKC,MAK5CA,KAAKC,MAAQN,GAAQP,EAErBY,KAAKrI,KAAO,SAASkD,GAIfmF,KAAKC,QAAUb,GAAevE,EAAK8E,OAASK,KAAKC,aAIhC3G,IAAjBuG,IACFA,EAAehF,EAAKqF,KAGtBrF,EAAKqF,IAAMb,EAAexE,EAAKqF,IAAKL,GACpChF,EAAKsF,IAAMd,EAAexE,EAAKsF,IAAKN,GAEpCD,EAAU/E,EAAKqF,IAEfF,KAAKI,QAAQ,OAAQvF,KAGvBmF,KAAKK,MAAQ,WACXR,EAAeD,EACfI,KAAKI,QAAQ,SAGfJ,KAAKM,YAAc,WACjBN,KAAKK,QACLL,KAAKI,QAAQ,kBAGfJ,KAAKO,cAAgB,WACnBV,OAAe,EACfD,OAAU,GAGZI,KAAKQ,MAAQ,WACXR,KAAKO,gBACLP,KAAKI,QAAQ,WAIjBV,EAAwB5C,UAAY,IAAImC,EAExC1C,EAAOC,QAAU,CACfkD,wBAAyBA,EACzBL,eAAgBA,I,kCCzFlB,IAGIoB,EAAWC,EAAWC,EAAsBC,EAAkBC,EAH9DC,EAAa,EAAQ,QAAgBA,WACrCC,EAAc,EAAQ,QAAgBA,YACtCC,EAAe,EAAQ,QAqB3BP,EAAY,SAASX,GACnB,IACEhJ,EAAS,GACTmK,EAAQD,EAAaE,QAAQpB,EAAM,CAAC,OAAQ,SAG9C,OAAOmB,EAAME,QAAO,SAASrK,EAAQsK,GACnC,IAAIC,EAAMC,EAASnK,EAAOoK,EAAIC,EAG9B,OADAH,EAAOL,EAAaE,QAAQE,EAAM,CAAC,SAAS,GACvCC,GAGLC,EAAUD,EAAK,GACflK,EAAoB,IAAZmK,EAAgB,GAAK,GAC7BC,EAAKT,EAAWO,EAAKlK,IAAc,GACnBkK,EAAKlK,EAAQ,IAAM,GACnBkK,EAAKlK,EAAQ,IAAO,EACpBkK,EAAKlK,EAAQ,IAE7BqK,EAAOR,EAAaE,QAAQE,EAAM,CAAC,OAAQ,SAAS,GAC/CI,GAGLF,EAAUE,EAAK,GACfrK,EAAoB,IAAZmK,EAAgB,GAAK,GAC7BxK,EAAOyK,GAAMT,EAAWU,EAAKrK,IAAc,GACnBqK,EAAKrK,EAAQ,IAAM,GACnBqK,EAAKrK,EAAQ,IAAO,EACpBqK,EAAKrK,EAAQ,IAC9BL,GARE,MAXA,OAoBRA,IAmBL4J,EAAY,SAASD,EAAWgB,GAC9B,IAAIC,EAAOC,EAAW7K,EA6CtB,OA1CA4K,EAAQV,EAAaE,QAAQO,EAAU,CAAC,OAAQ,SAGhDE,EAAY,GAAGC,OAAOC,MAAM,GAAIH,EAAMI,KAAI,SAASC,GACjD,OAAOf,EAAaE,QAAQa,EAAM,CAAC,SAASD,KAAI,SAASE,GACvD,IAAIT,EAAIU,EAAOC,EA+Bf,OA5BAX,EAAKT,EAAWkB,EAAK,IAAM,GACXA,EAAK,IAAM,GACXA,EAAK,IAAO,EACZA,EAAK,IAErBC,EAAQxB,EAAUc,IAAO,IAGzBW,EAAWlB,EAAaE,QAAQa,EAAM,CAAC,SAASD,KAAI,SAASK,GAC3D,IAAIb,EAASxK,EAcb,OAZAwK,EAAUa,EAAK,GACfrL,EAASgK,EAAWqB,EAAK,IAAM,GACXA,EAAK,IAAM,GACXA,EAAK,IAAO,EACZA,EAAK,IACR,IAAbb,IACFxK,GAAU0I,KAAK4C,IAAI,EAAG,IACtBtL,GAAUgK,EAAWqB,EAAK,IAAO,GACZA,EAAK,IAAO,GACZA,EAAK,KAAQ,EACbA,EAAK,MAErBrL,KACN,GACHoL,EAAWA,GAAYG,IAGhBH,EAAWD,SAKtBnL,EAAS0I,KAAK8C,IAAIT,MAAM,KAAMF,GACvBY,SAASzL,GAAUA,EAAS,GAsBrC6J,EAAuB,SAAS6B,EAAYf,GAC1C,IAGIgB,EAHAC,EAAY1B,EAAaE,QAAQO,EAAU,CAAC,OAAQ,SACpDkB,EAAsB,EACtBC,EAAwB,EAG5B,GAAIF,GAAaA,EAAU1K,OAMzB,IAFA,IAAI6K,EAAa7B,EAAa8B,UAAUJ,EAAU,IAEzC3K,EAAI,EAAGA,EAAI8K,EAAWE,MAAM/K,OAAQD,IACV,SAA7B8K,EAAWE,MAAMhL,GAAG4H,KACtB8C,EAAUI,EAAWE,MAAMhL,GAAG0K,QACQ,SAA7BI,EAAWE,MAAMhL,GAAG4H,KAC7BgD,EAAsBE,EAAWE,MAAMhL,GAAG4K,oBACJ,SAA7BE,EAAWE,MAAMhL,GAAG4H,MAAmBkD,EAAWE,MAAMhL,GAAGiL,QAAQhL,SAC5E4K,EAAwBC,EAAWE,MAAMhL,GAAGiL,QAAQ,GAAGJ,uBAAyB,GAOtF,IAAInC,EAAY+B,EAAWC,IAAY,IAGvC,OAAQE,EAAsBC,GAAyBnC,GAczDG,EAAmB,SAASd,GAC1B,IAAImB,EAAQD,EAAaE,QAAQpB,EAAM,CAAC,OAAQ,SAC5CmD,EAAgB,GAuBpB,OArBAhC,EAAMhK,SAAQ,SAASmK,GACrB,IAAI8B,EAAQlC,EAAaE,QAAQE,EAAM,CAAC,OAAQ,SAC5C+B,EAAQnC,EAAaE,QAAQE,EAAM,CAAC,SAExC8B,EAAMjM,SAAQ,SAASmM,EAAMjM,GAC3B,IAEIkM,EACA/B,EACAmB,EAJAa,EAActC,EAAauC,UAAUH,EAAKI,SAAS,EAAG,KACtDnC,EAAO8B,EAAMhM,GAKG,SAAhBmM,IACFD,EAAO,IAAII,SAASpC,EAAKqC,OAAQrC,EAAKsC,WAAYtC,EAAKlE,YACvDmE,EAAU+B,EAAKO,SAAS,GACxBnB,EAAuB,IAAZnB,EAAiB+B,EAAKQ,UAAU,IAAMR,EAAKQ,UAAU,IAEhEZ,EAActL,KAAK8K,UAKlBQ,GAOTpC,EAAY,SAASf,GACnB,IAAImB,EAAQD,EAAaE,QAAQpB,EAAM,CAAC,OAAQ,SAC5CgE,EAAS,GAmGb,OAjGA7C,EAAMhK,SAAQ,SAASmK,GACrB,IAEIiC,EAAM/B,EAFNyC,EAAQ,GACR1C,EAAOL,EAAaE,QAAQE,EAAM,CAAC,SAAS,GAI5CC,IACFgC,EAAO,IAAII,SAASpC,EAAKqC,OAAQrC,EAAKsC,WAAYtC,EAAKlE,YACvDmE,EAAU+B,EAAKO,SAAS,GAExBG,EAAMxC,GAAkB,IAAZD,EAAiB+B,EAAKQ,UAAU,IAAMR,EAAKQ,UAAU,KAGnE,IAAIT,EAAOpC,EAAaE,QAAQE,EAAM,CAAC,OAAQ,SAAS,GAGxD,GAAIgC,EAAM,CACR,IAAIzD,EAAOqB,EAAauC,UAAUH,EAAKI,SAAS,EAAG,KAGjDO,EAAMpE,KADK,SAATA,EACW,QACK,SAATA,EACI,QAEAA,EAMjB,IAAIqE,EAAOhD,EAAaE,QAAQE,EAAM,CAAC,OAAQ,OAAQ,OAAQ,SAAS,GAExE,GAAI4C,EAAM,CACR,IAAIC,EAAqBD,EAAKR,SAAS,GAEvCO,EAAMG,MAAQlD,EAAauC,UAAUU,EAAmBT,SAAS,EAAG,IAEpE,IACIW,EAAaC,EADbC,EAAWrD,EAAaE,QAAQ+C,EAAoB,CAACF,EAAMG,QAAQ,GAGnEG,IAEE,kBAAoBC,KAAKP,EAAMG,QAGjCC,EAAcE,EAASb,SAAS,IAChCY,EAAkBpD,EAAauC,UAAUY,EAAYX,SAAS,EAAG,IAEzC,SAApBY,GAA8BD,EAAYnM,OAAS,IACrD+L,EAAMG,OAAS,IAIfH,EAAMG,OAAUnD,EAAYoD,EAAY,IAExCJ,EAAMG,OAASnD,EAAYoD,EAAY,KAEvCJ,EAAMG,OAASnD,EAAYoD,EAAY,MAIvCJ,EAAMG,MAAQ,eAEP,cAAgBI,KAAKP,EAAMG,SAEpCC,EAAcE,EAASb,SAAS,IAChCY,EAAkBpD,EAAauC,UAAUY,EAAYX,SAAS,EAAG,IAEzC,SAApBY,GAA8BD,EAAYnM,OAAS,IAA0B,IAApBmM,EAAY,KACvEJ,EAAMG,OAAS,IAAMnD,EAAYoD,EAAY,KAE7CJ,EAAMG,OAAS,IAAMnD,EAAaoD,EAAY,MAAQ,EAAK,IAAMI,QAAQ,KAAM,KAI/ER,EAAMG,MAAQ,cAQtB,IAAI1C,EAAOR,EAAaE,QAAQE,EAAM,CAAC,OAAQ,SAAS,GAExD,GAAII,GAAQH,EAAM,CAChB,IAAIlK,EAAoB,IAAZmK,EAAgB,GAAK,GAEjCyC,EAAMtD,UAAYK,EAAWU,EAAKrK,IAAc,GACnBqK,EAAKrK,EAAQ,IAAM,GACnBqK,EAAKrK,EAAQ,IAAO,EACpBqK,EAAKrK,EAAQ,IAG5C2M,EAAOnM,KAAKoM,MAGPD,GAGTvH,EAAOC,QAAU,CAEf0E,QAASF,EAAaE,QACtBqC,UAAWvC,EAAauC,UACxB9C,UAAWA,EACXC,UAAWA,EACXC,qBAAsBA,EACtBsC,cAAerC,EACfkD,OAAQjD,I,mBCjVV,SAAS2D,IACP,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,KAAK/H,UAAUgI,SAAS/E,KAAK0E,QAAQC,UAAUG,KAAM,IAAI,iBAClD,EACP,MAAOjL,GACP,OAAO,GAIX2C,EAAOC,QAAUgI,G,uBCbjB,SAASO,EAAUzM,GAClB0H,KAAK1H,QAAUA,GAAU,CAAC0M,QAAQ,IA8BnC,SAASC,EAAkBC,EAAUC,EAAWH,GAC/C,IAAIE,EAAU,CACb,GAAGC,aAAsBC,EACxB,OAAOD,EAERD,EAAYC,EAEb,IAAIE,EAAe,GACfC,EAAaJ,aAAqBK,SAEtC,SAASC,EAAMnO,GACd,IAAIoO,EAAKP,EAAU7N,IACfoO,GAAMH,IACTG,EAAyB,GAApBP,EAAUlN,OAAY,SAAS0N,GAAKR,EAAU7N,EAAIqO,IAAMR,GAE9DG,EAAahO,GAAOoO,GAAM,SAASC,GAClCD,EAAG,WAAWpO,EAAI,MAAMqO,EAAIC,EAASX,MACnC,aAKJ,OAbAA,EAAUA,GAAS,GAUnBQ,EAAM,WACNA,EAAM,SACNA,EAAM,cACCH,EAaR,SAASD,IACLpF,KAAK4F,OAAQ,EAEjB,SAASC,EAASb,EAAQc,GACzBA,EAAKC,WAAaf,EAAQe,WAC1BD,EAAKE,aAAehB,EAAQgB,aAkH7B,SAASL,EAASM,GACjB,GAAGA,EACF,MAAO,OAAOA,EAAEC,UAAW,IAAI,UAAUD,EAAEF,WAAW,QAAQE,EAAED,aAAa,IAG/E,SAASG,EAAUC,EAAM3H,EAAMzG,GAC9B,MAAmB,iBAAToO,EACFA,EAAMC,OAAO5H,EAAMzG,GAEvBoO,EAAMpO,QAAUyG,EAAMzG,GAAUyG,EAC3B,IAAI6H,KAAKC,KAAKC,OAAOJ,EAAM3H,EAAMzG,GAAQ,GAE1CoO,EAwCT,SAASK,EAAeC,EAAOZ,GACtBY,EAAOC,eAGRD,EAAOC,eAAeC,YAAYd,GAFlCY,EAAOG,IAAID,YAAYd,GA3O/Bf,EAAUjI,UAAUgK,gBAAkB,SAASC,EAAOC,GACrD,IAAI1O,EAAU0H,KAAK1H,QACf2O,EAAO,IAAIC,EACX/B,EAAa7M,EAAQ6M,YAAc,IAAIC,EACvCC,EAAe/M,EAAQ+M,aACvBL,EAAU1M,EAAQ0M,QAClBmC,EAAe7O,EAAQ8O,OAAO,GAC9BC,EAAY,CAAC,GAAK,IAAI,GAAK,IAAI,IAAM,IAAI,KAAO,IAAI,KAAO,KAkB/D,OAjBGrC,GACFG,EAAWmC,mBAAmBtC,GAG/BiC,EAAI5B,aAAeJ,EAAkBI,EAAaF,EAAWH,GAC7DiC,EAAI9B,WAAa7M,EAAQ6M,YAAcA,EACpC,aAAab,KAAK0C,KACpBK,EAAUE,KAAO,IACjBF,EAAUG,KAAO,IACjBL,EAAa,IAAK,gCAEnBA,EAAaM,IAAMN,EAAaM,KAAO,uCACpCV,EACFE,EAAItN,MAAMoN,EAAOI,EAAaE,GAE9BJ,EAAI5B,aAAaqC,MAAM,sBAEjBvC,EAAW0B,KAgDnBzB,EAAWtI,UAAY,CACtB6K,cAAgB,WACZ3H,KAAK6G,KAAM,IAAIe,GAAoBC,eAAe,KAAM,KAAM,MAC1D7H,KAAKgF,UACLhF,KAAK6G,IAAIiB,YAAc9H,KAAKgF,QAAQkB,WAG5C6B,aAAa,SAASC,EAAcC,EAAWC,EAAOC,GACrD,IAAItB,EAAM7G,KAAK6G,IACRuB,EAAKvB,EAAIwB,gBAAgBL,EAAcE,GAAOD,GAC9CvK,EAAMyK,EAAMnQ,OAChByO,EAAczG,KAAMoI,GACpBpI,KAAK2G,eAAiByB,EAEzBpI,KAAKgF,SAAWa,EAAS7F,KAAKgF,QAAQoD,GACnC,IAAK,IAAIrQ,EAAI,EAAIA,EAAI2F,EAAK3F,IAAK,CACvBiQ,EAAeG,EAAMG,OAAOvQ,GAAhC,IACIP,EAAQ2Q,EAAMI,SAASxQ,GAE7ByQ,GADMN,EAAQC,EAAMM,SAAS1Q,GACtB8O,EAAI6B,kBAAkBV,EAAcE,IAC/ClI,KAAKgF,SAAUa,EAASsC,EAAMQ,WAAW5Q,GAAGyQ,GAC5CA,EAAKhR,MAAQgR,EAAKI,UAAYpR,EAC9B4Q,EAAGS,iBAAiBL,KAGtBM,WAAW,SAASd,EAAcC,EAAWC,GAC5C,IAAIa,EAAU/I,KAAK2G,eACLoC,EAAQC,QACtBhJ,KAAK2G,eAAiBoC,EAAQE,YAE/BC,mBAAmB,SAASC,EAAQ9Q,KAEpC+Q,iBAAiB,SAASD,KAE1BE,sBAAsB,SAASC,EAAQzO,GACnC,IAAI0O,EAAMvJ,KAAK6G,IAAI2C,4BAA4BF,EAAQzO,GACvDmF,KAAKgF,SAAWa,EAAS7F,KAAKgF,QAAQuE,GACtC9C,EAAczG,KAAMuJ,IAExBE,oBAAoB,SAASC,EAAIjL,EAAOzG,KAExC2R,WAAW,SAASvD,EAAO3H,EAAOzG,GAGjC,GAFAoO,EAAQD,EAAUtE,MAAM7B,KAAK4J,WAE1BxD,EAAM,CACR,GAAIpG,KAAK4F,MACR,IAAIiE,EAAW7J,KAAK6G,IAAIiD,mBAAmB1D,QAEvCyD,EAAW7J,KAAK6G,IAAIkD,eAAe3D,GAErCpG,KAAK2G,eACP3G,KAAK2G,eAAeC,YAAYiD,GACxB,QAAQvF,KAAK8B,IACrBpG,KAAK6G,IAAID,YAAYiD,GAGtB7J,KAAKgF,SAAWa,EAAS7F,KAAKgF,QAAQ6E,KAGxCG,cAAc,SAASC,KAEvBC,YAAY,WACXlK,KAAK6G,IAAIsD,aAEV7C,mBAAmB,SAAUtC,IACtBhF,KAAKgF,QAAUA,KACjBA,EAAQe,WAAa,IAI1BqE,QAAQ,SAAShE,EAAO3H,EAAOzG,GAC9BoO,EAAQD,EAAUtE,MAAM7B,KAAK4J,WAC1B,IAAIS,EAAOrK,KAAK6G,IAAIyD,cAAclE,GAClCpG,KAAKgF,SAAWa,EAAS7F,KAAKgF,QAAQqF,GACtC5D,EAAczG,KAAMqK,IAGxBE,WAAW,WAEPvK,KAAK4F,OAAQ,GAEjB4E,SAAS,WACLxK,KAAK4F,OAAQ,GAGjB6E,SAAS,SAASR,EAAMS,EAAUxE,GACjC,IAAIyE,EAAO3K,KAAK6G,IAAI+D,eACjB,GAAID,GAAQA,EAAKE,mBAAoB,CACjC,IAAIC,EAAKH,EAAKE,mBAAmBZ,EAAMS,EAAUxE,GACjDlG,KAAKgF,SAAWa,EAAS7F,KAAKgF,QAAQ8F,GACtCrE,EAAczG,KAAM8K,KAO5BC,QAAQ,SAASrD,GAChBsD,QAAQC,KAAK,qBAAqBvD,EAAM/B,EAAS3F,KAAKgF,WAEvD0C,MAAM,SAASA,GACdsD,QAAQtD,MAAM,mBAAmBA,EAAM/B,EAAS3F,KAAKgF,WAEtDkG,WAAW,SAASxD,GAEhB,MADHsD,QAAQtD,MAAM,wBAAwBA,EAAM/B,EAAS3F,KAAKgF,UACjD0C,IAkDX,+JAA+JnD,QAAQ,QAAO,SAASlN,GACtL+N,EAAWtI,UAAUzF,GAAO,WAAW,OAAO,SAa9C,IAAI6P,EAAY,EAAQ,QAASA,UAC7BU,EAAoBpL,EAAQoL,kBAAoB,EAAQ,QAASA,kBACrEpL,EAAQ2O,cAAgB,EAAQ,QAASA,cACzC3O,EAAQuI,UAAYA,G,uBCzPrB,IAAIqG,EAAiB,EAAQ,QAEzBC,EAA2B,EAAQ,QAEvC,SAASC,EAAWC,EAAQC,EAAMC,GAchC,OAbIJ,IACF9O,EAAOC,QAAU8O,EAAa7G,QAAQC,UAEtCnI,EAAOC,QAAU8O,EAAa,SAAoBC,EAAQC,EAAMC,GAC9D,IAAIC,EAAI,CAAC,MACTA,EAAE/T,KAAKkK,MAAM6J,EAAGF,GAChB,IAAIG,EAAcpG,SAASqG,KAAK/J,MAAM0J,EAAQG,GAC1CG,EAAW,IAAIF,EAEnB,OADIF,GAAOL,EAAeS,EAAUJ,EAAM3O,WACnC+O,GAIJP,EAAWzJ,MAAM,KAAM+H,WAGhCrN,EAAOC,QAAU8O,G,uBCAjB,IAAI7U,EAAS,EAAQ,QAEjBqV,EAAQvP,EAAOC,QAAU,CAC3BuP,OAAQ,EAAQ,QAChBC,OAAQ,EAAQ,QAChBC,UAAW,EAAQ,SAGrBxV,EAAOqV,MAAQA,EACfrV,EAAOsV,OAASD,EAAMC,OAEtB,IAAIG,EAAUJ,EAAME,OAChBG,EAAaL,EAAMG,UACnBG,EAAe3V,EAAOuV,OACtBK,EAAkB5V,EAAOwV,UAE7BH,EAAMQ,KAAO,WACX7V,EAAOuV,OAASE,EAChBzV,EAAOwV,UAAYE,GAGrBL,EAAMS,QAAU,WACd9V,EAAOuV,OAASI,EAChB3V,EAAOwV,UAAYI,GAGhB5V,EAAOuV,QACVF,EAAMQ,Q,qBC1CR,IAEEE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAC,EAAmB,IASrBP,EAAmB,SAASQ,GAC1B,OAAOA,EAAUD,GAGnBN,EAAmB,SAASO,EAASC,GACnC,OAAOD,EAAUC,GAGnBP,EAAmB,SAASQ,GAC1B,OAAOA,EAAYH,GAGrBJ,EAAmB,SAASO,EAAWD,GACrC,OAAOC,EAAYD,GAGrBL,EAAmB,SAASM,EAAWD,GACrC,OAAOT,EAAiBG,EAAiBO,EAAWD,KAGtDJ,EAAmB,SAASK,EAAWD,GACrC,OAAOR,EAAiBC,EAAiBQ,GAAYD,IAOvDH,EAAsB,SAASI,EAAWC,EAAkBC,GAC1D,OAAOV,EAAiBU,EAAyBF,EAAYA,EAAYC,IAG3E5Q,EAAOC,QAAU,CACfuQ,iBAAkBA,EAClBP,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,oBAAqBA,I,qCC9CvB,IAAIO,EAAc,EAAQ,QAEtBC,EAAW,SAASC,GACtB,IAAIC,EAAkB,GAAZD,EAAO,GAGjB,OAFAC,IAAQ,EACRA,GAAOD,EAAO,GACPC,GAGLC,EAAiC,SAASF,GAC5C,SAAsB,GAAZA,EAAO,KAGfG,EAAqB,SAASH,GAChC,IAAII,EAAS,EASb,OAHkB,GAAZJ,EAAO,MAAe,EAAK,IAC/BI,GAAUJ,EAAO,GAAK,GAEjBI,GAGLpK,EAAY,SAASgK,EAAQK,GAC/B,IAAIJ,EAAMF,EAASC,GACnB,OAAY,IAARC,EACK,MACEA,IAAQI,EACV,MACEA,EACF,MAEF,MAGLC,EAAW,SAASN,GACtB,IAAIO,EAAOL,EAA+BF,GACtCI,EAAS,EAAID,EAAmBH,GAMpC,OAJIO,IACFH,GAAUJ,EAAOI,GAAU,IAGC,GAAtBJ,EAAOI,EAAS,MAAe,EAAIJ,EAAOI,EAAS,KAGzDI,EAAW,SAASR,GACtB,IAAIS,EAAkB,GAClBF,EAAOL,EAA+BF,GACtCU,EAAgB,EAAIP,EAAmBH,GAW3C,GATIO,IACFG,GAAiBV,EAAOU,GAAiB,GAQT,EAA5BV,EAAOU,EAAgB,GAA7B,CAIA,IAAIC,EAAeC,EAAUC,EAE7BF,GAA6C,GAA5BX,EAAOU,EAAgB,KAAc,EAAIV,EAAOU,EAAgB,GACjFE,EAAW,EAAID,EAAgB,EAI/BE,GAAkD,GAA7Bb,EAAOU,EAAgB,MAAe,EAAIV,EAAOU,EAAgB,IAGtF,IAAIN,EAAS,GAAKS,EAClB,MAAOT,EAASQ,EAAU,CACxB,IAAIpW,EAAIkW,EAAgBN,EAExBK,GAAiC,GAAhBT,EAAOxV,EAAI,KAAc,EAAIwV,EAAOxV,EAAI,IAAMwV,EAAOxV,GAItE4V,GAA0D,IAA9B,GAAhBJ,EAAOxV,EAAI,KAAc,EAAIwV,EAAOxV,EAAI,IAEtD,OAAOiW,IAGLK,EAAe,SAASd,EAAQS,GAClC,IAAIR,EAAMF,EAASC,GACf5N,EAAOqO,EAAgBR,GAC3B,OAAQ7N,GACN,KAAK0N,EAAYiB,iBACf,MAAO,QACT,KAAKjB,EAAYkB,iBACf,MAAO,QACT,KAAKlB,EAAYmB,qBACf,MAAO,iBACT,QACE,OAAO,OAITC,EAAe,SAASlB,GAC1B,IAAIO,EAAOL,EAA+BF,GAC1C,IAAKO,EACH,OAAO,KAGT,IAAIH,EAAS,EAAID,EAAmBH,GAEpC,GAAII,GAAUJ,EAAOpQ,WAWnB,OAAO,KAGT,IACIuR,EADAC,EAAM,KAuCV,OAjCAD,EAAcnB,EAAOI,EAAS,GAUZ,IAAde,IACFC,EAAM,GAINA,EAAIxO,KAA4B,GAArBoN,EAAOI,EAAS,KAAc,IAChB,IAAtBJ,EAAOI,EAAS,MAAe,IACT,IAAtBJ,EAAOI,EAAS,MAAe,IACT,IAAtBJ,EAAOI,EAAS,MAAgB,GACV,IAAtBJ,EAAOI,EAAS,OAAiB,EACpCgB,EAAIxO,KAAO,EACXwO,EAAIxO,MAA8B,EAAtBoN,EAAOI,EAAS,OAAgB,EAC5CgB,EAAIzO,IAAMyO,EAAIxO,IACI,GAAduO,IACFC,EAAIzO,KAA6B,GAAtBqN,EAAOI,EAAS,MAAe,IACjB,IAAtBJ,EAAOI,EAAS,MAAe,IACT,IAAtBJ,EAAOI,EAAS,MAAe,IACT,IAAtBJ,EAAOI,EAAS,MAAe,GACT,IAAtBJ,EAAOI,EAAS,OAAgB,EACnCgB,EAAIzO,KAAO,EACXyO,EAAIzO,MAA8B,EAAtBqN,EAAOI,EAAS,OAAgB,IAGzCgB,GAGLC,EAAmB,SAASjP,GAC9B,OAAQA,GACN,KAAK,EACH,MAAO,4CACT,KAAK,EACH,MAAO,WACT,KAAK,EACH,MAAO,yBACT,KAAK,EACH,MAAO,yBACT,KAAK,EACH,MAAO,6BACT,QACE,OAAO,OAITkP,EAA8B,SAAStB,GASzC,IARA,IAKIuB,EALAnB,EAAS,EAAID,EAAmBH,GAChCwB,EAAcxB,EAAO/J,SAASmK,GAC9BqB,EAAS,EACTC,EAAiB,EACjBC,GAAgB,EAIbD,EAAiBF,EAAY5R,WAAa,EAAG8R,IAClD,GAAwC,IAApCF,EAAYE,EAAiB,GAAU,CAEzCD,EAASC,EAAiB,EAC1B,MAIJ,MAAOD,EAASD,EAAY5R,WAG1B,OAAQ4R,EAAYC,IACpB,KAAK,EAEH,GAAgC,IAA5BD,EAAYC,EAAS,GAAU,CACjCA,GAAU,EACV,MACK,GAAgC,IAA5BD,EAAYC,EAAS,GAAU,CACxCA,IACA,MAGEC,EAAiB,IAAMD,EAAS,IAClCF,EAAUF,EAAmD,GAAlCG,EAAYE,EAAiB,IACxC,8CAAZH,IACFI,GAAgB,IAKpB,GACEF,UAC+B,IAAxBD,EAAYC,IAAiBA,EAASD,EAAY/W,QAC3DiX,EAAiBD,EAAS,EAC1BA,GAAU,EACV,MACF,KAAK,EAEH,GAAgC,IAA5BD,EAAYC,EAAS,IACO,IAA5BD,EAAYC,EAAS,GAAU,CACjCA,GAAU,EACV,MAGFF,EAAUF,EAAmD,GAAlCG,EAAYE,EAAiB,IACxC,8CAAZH,IACFI,GAAgB,GAElBD,EAAiBD,EAAS,EAC1BA,GAAU,EACV,MACF,QAGEA,GAAU,EACV,MAcJ,OAXAD,EAAcA,EAAYvL,SAASyL,GACnCD,GAAUC,EACVA,EAAiB,EAEbF,GAAeA,EAAY5R,WAAa,IAC1C2R,EAAUF,EAAmD,GAAlCG,EAAYE,EAAiB,IACxC,8CAAZH,IACFI,GAAgB,IAIbA,GAIT3S,EAAOC,QAAU,CACf+G,UAAWA,EACXsK,SAAUA,EACVE,SAAUA,EACVN,+BAAgCA,EAChCY,aAAcA,EACdI,aAAcA,EACdI,4BAA6BA,I,kCClR/B,IAAI5P,EAAS,WACXe,KAAKF,KAAO,WACV,IAAIqP,EAAY,GAOhBnP,KAAKoP,GAAK,SAASzP,EAAM0P,GAClBF,EAAUxP,KACbwP,EAAUxP,GAAQ,IAEpBwP,EAAUxP,GAAQwP,EAAUxP,GAAMiC,OAAOyN,IAQ3CrP,KAAKsP,IAAM,SAAS3P,EAAM0P,GACxB,IAAIlY,EACJ,QAAKgY,EAAUxP,KAGfxI,EAAQgY,EAAUxP,GAAMvI,QAAQiY,GAChCF,EAAUxP,GAAQwP,EAAUxP,GAAMrI,QAClC6X,EAAUxP,GAAM4P,OAAOpY,EAAO,GACvBA,GAAS,IAOlB6I,KAAKI,QAAU,SAAST,GACtB,IAAI6P,EAAWzX,EAAGC,EAAQwT,EAE1B,GADAgE,EAAYL,EAAUxP,GACjB6P,EAOL,GAAyB,IAArB5F,UAAU5R,OAEZ,IADAA,EAASwX,EAAUxX,OACdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAGgI,KAAKC,KAAM4J,UAAU,QAE/B,CAGL,IAFA4B,EAAO,GACPzT,EAAI6R,UAAU5R,OACTD,EAAI,EAAGA,EAAI6R,UAAU5R,SAAUD,EAClCyT,EAAK7T,KAAKiS,UAAU7R,IAGtB,IADAC,EAASwX,EAAUxX,OACdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAG8J,MAAM7B,KAAMwL,KAO/BxL,KAAKyP,QAAU,WACbN,EAAY,MAclBlQ,EAAOnC,UAAU4S,KAAO,SAASC,GAqB/B,OApBA3P,KAAKoP,GAAG,QAAQ,SAASvU,GACvB8U,EAAYhY,KAAKkD,MAGnBmF,KAAKoP,GAAG,QAAQ,SAASQ,GACvBD,EAAYtP,MAAMuP,MAGpB5P,KAAKoP,GAAG,eAAe,SAASQ,GAC9BD,EAAYE,aAAaD,MAG3B5P,KAAKoP,GAAG,iBAAiB,SAASQ,GAChCD,EAAYrP,YAAYsP,MAG1B5P,KAAKoP,GAAG,SAAS,SAASQ,GACxBD,EAAYnP,MAAMoP,MAGbD,GAOT1Q,EAAOnC,UAAUnF,KAAO,SAASkD,GAC/BmF,KAAKI,QAAQ,OAAQvF,IAGvBoE,EAAOnC,UAAUuD,MAAQ,SAASuP,GAChC5P,KAAKI,QAAQ,OAAQwP,IAGvB3Q,EAAOnC,UAAU+S,aAAe,SAASD,GACvC5P,KAAKI,QAAQ,cAAewP,IAG9B3Q,EAAOnC,UAAUwD,YAAc,SAASsP,GACtC5P,KAAKI,QAAQ,gBAAiBwP,IAGhC3Q,EAAOnC,UAAU0D,MAAQ,SAASoP,GAChC5P,KAAKI,QAAQ,QAASwP,IAGxBrT,EAAOC,QAAUyC,G,qBC5IjB,SAAS6Q,EAAgBC,GAIvB,OAHAxT,EAAOC,QAAUsT,EAAkB/S,OAAOqO,eAAiBrO,OAAOiT,eAAiB,SAAyBD,GAC1G,OAAOA,EAAE7S,WAAaH,OAAOiT,eAAeD,IAEvCD,EAAgBC,GAGzBxT,EAAOC,QAAUsT,G,qBCPjB,SAASpZ,IAeP,OAdA6F,EAAOC,QAAU9F,EAAWqG,OAAOkT,QAAU,SAAU3G,GACrD,IAAK,IAAIvR,EAAI,EAAGA,EAAI6R,UAAU5R,OAAQD,IAAK,CACzC,IAAIgP,EAAS6C,UAAU7R,GAEvB,IAAK,IAAIV,KAAO0P,EACVhK,OAAOD,UAAU3E,eAAe4H,KAAKgH,EAAQ1P,KAC/CiS,EAAOjS,GAAO0P,EAAO1P,IAK3B,OAAOiS,GAGF5S,EAASmL,MAAM7B,KAAM4J,WAG9BrN,EAAOC,QAAU9F,G,oCCCjB,IAAIuI,EAAS,EAAQ,QACjBiR,EAAe,EAAQ,QAEvBC,EAAgB,WAElBA,EAAcrT,UAAUgD,KAAKC,KAAKC,MAElCA,KAAKoQ,gBAAkB,GAEvBpQ,KAAKqQ,WAAa,CAChB,IAAIC,EAAa,EAAG,GACpB,IAAIA,EAAa,EAAG,GACpB,IAAIA,EAAa,EAAG,GACpB,IAAIA,EAAa,EAAG,IAGtBtQ,KAAKQ,QAGLR,KAAKqQ,WAAWpZ,SAAQ,SAASsZ,GAC/BA,EAAGnB,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,SACtCuQ,EAAGnB,GAAG,cAAepP,KAAKI,QAAQwL,KAAK5L,KAAM,gBAC7CuQ,EAAGnB,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,WACrCA,OAILmQ,EAAcrT,UAAY,IAAImC,EAC9BkR,EAAcrT,UAAUnF,KAAO,SAAS6Y,GACtC,IAAIC,EAAKC,EAAUC,EAGnB,GAA0B,aAAtBH,EAAMI,cAKVH,EAAMP,EAAaW,SAASL,EAAMM,aAG9BL,EAAIM,cAAgBb,EAAac,iCAKrCN,EAAWR,EAAae,cAAcR,GAGjCC,IAYL,GAAIF,EAAMtQ,IAAMF,KAAKkR,WAEnBlR,KAAKmR,qBAAsB,MAF7B,CAIO,GAAKX,EAAMtQ,MAAQF,KAAKkR,YAAgBlR,KAAwB,oBAMrE,OALAA,KAAKoR,mBACApR,KAAKoR,cAERpR,KAAKmR,qBAAsB,IAM/BR,EAAoBT,EAAamB,oBAAoBb,EAAMrQ,IAAKuQ,GAChE1Q,KAAKoQ,gBAAkBpQ,KAAKoQ,gBAAgBxO,OAAO+O,GAC/C3Q,KAAKkR,aAAeV,EAAMtQ,MAC5BF,KAAKoR,YAAc,GAErBpR,KAAKoR,cACLpR,KAAKkR,WAAaV,EAAMtQ,MAG1BiQ,EAAcrT,UAAUwU,eAAiB,SAASC,GAChDvR,KAAKqQ,WAAWpZ,SAAQ,SAASsZ,GAC/B,MAAqB,UAAdgB,EAAwBhB,EAAGlQ,QAAUkQ,EAAGV,iBAC9C7P,OAGLmQ,EAAcrT,UAAU0U,YAAc,SAASD,GAExCvR,KAAKoQ,gBAAgBpY,QAO1BgI,KAAKoQ,gBAAgBnZ,SAAQ,SAASwa,EAAMC,GAC1CD,EAAKE,aAAeD,KAItB1R,KAAKoQ,gBAAgBwB,MAAK,SAASlG,EAAGmG,GACpC,OAAInG,EAAEvL,MAAQ0R,EAAE1R,IACPuL,EAAEiG,aAAeE,EAAEF,aAErBjG,EAAEvL,IAAM0R,EAAE1R,OAGnBH,KAAKoQ,gBAAgBnZ,SAAQ,SAASsW,GAChCA,EAAO5N,KAAO,GAEhBK,KAAK8R,qBAAqBvE,KAI3BvN,MAEHA,KAAKoQ,gBAAgBpY,OAAS,EAC9BgI,KAAKsR,eAAeC,IA5BlBvR,KAAKsR,eAAeC,IA+BxBpB,EAAcrT,UAAUuD,MAAQ,WAC9B,OAAOL,KAAKwR,YAAY,UAI1BrB,EAAcrT,UAAU+S,aAAe,WACrC,OAAO7P,KAAKwR,YAAY,iBAG1BrB,EAAcrT,UAAU0D,MAAQ,WAC9BR,KAAKkR,WAAa,KAClBlR,KAAKmR,qBAAsB,EAC3BnR,KAAKoR,YAAc,EACnBpR,KAAK+R,qBAAuB,CAAC,KAAM,MACnC/R,KAAKqQ,WAAWpZ,SAAQ,SAAS+a,GAC/BA,EAASxR,YAeb2P,EAAcrT,UAAUgV,qBAAuB,SAASvE,GAElDvN,KAAKiS,oBAAoB1E,GAC3BvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,KAChCK,KAAKkS,mBAAmB3E,GACjCvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,EAChCK,KAAKmS,mBAAmB5E,KACjCvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,GAEI,OAA3CK,KAAK+R,qBAAqBxE,EAAO5N,OAMrCK,KAAKqQ,YAAY9C,EAAO5N,MAAQ,GAAKK,KAAK+R,qBAAqBxE,EAAO5N,OAAOhI,KAAK4V,IAGpF4C,EAAcrT,UAAUoV,mBAAqB,SAAS3E,GACpD,OAAqC,QAAZ,MAAhBA,EAAO6E,SAElBjC,EAAcrT,UAAUqV,mBAAqB,SAAS5E,GACpD,OAAqC,QAAZ,MAAhBA,EAAO6E,SAElBjC,EAAcrT,UAAUmV,oBAAsB,SAAS1E,GACrD,OAAqC,OAAZ,MAAhBA,EAAO6E,SACgB,QAAZ,MAAhB7E,EAAO6E,SACqB,QAAZ,MAAhB7E,EAAO6E,SAcb,IAAIC,EAAwB,CAC1B,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,IACN,IAAM,KACN,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,KACR,IAAQ,IACR,IAAQ,IACR,IAAQ,KACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,KACR,IAAQ,IACR,IAAQ,GACR,IAAQ,GACR,IAAQ,KACR,IAAQ,IACR,IAAQ,KACR,IAAQ,KACR,IAAQ,KACR,IAAQ,KACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,GACR,IAAQ,GACR,IAAQ,GACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,KACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAQ,KACR,IAAQ,KACR,IAAQ,KACR,IAAQ,MAGNC,EAAkB,SAASzW,GAC7B,OAAa,OAATA,EACK,IAETA,EAAOwW,EAAsBxW,IAASA,EAC/B2K,OAAO+L,aAAa1W,KAIzB2W,EAAa,GAIbC,EAAO,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KACxD,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAIxDC,EAAsB,WACxB,IAAI5b,EAAS,GAAIiB,EAAIya,EAAa,EAClC,MAAOza,IACLjB,EAAOa,KAAK,IAEd,OAAOb,GAGLwZ,EAAe,SAASqC,EAAOC,GACjCtC,EAAaxT,UAAUgD,KAAKC,KAAKC,MAEjCA,KAAK6S,OAASF,GAAS,EACvB3S,KAAK8S,aAAeF,GAAe,EAEnC5S,KAAK+S,MAAQ,MAAmD,GAAzC/S,KAAK6S,QAAU,EAAK7S,KAAK8S,eAEhD9S,KAAKgT,eACLhT,KAAKQ,QAELR,KAAKrI,KAAO,SAAS4V,GACnB,IAAI1S,EAAMoY,EAAMC,EAAOC,EAAOC,EAK9B,GAHAvY,EAAuB,MAAhB0S,EAAO6E,OAGVvX,IAASmF,KAAKqT,kBAelB,GATwB,QAAZ,MAAPxY,GACHmF,KAAKqT,iBAAmBxY,EACfA,IAASmF,KAAKsT,WACvBtT,KAAKqT,iBAAmB,MAG1BH,EAAQrY,IAAS,EACjBsY,EAAe,IAAPtY,EAEJA,IAASmF,KAAKsT,SAGX,GAAIzY,IAASmF,KAAKuT,wBACvBvT,KAAKwT,MAAQ,aAER,GAAI3Y,IAASmF,KAAKyT,gBAKvBzT,KAAKwT,MAAQ,QACbxT,KAAK0T,gBAAgBnG,EAAOpN,KAE5BH,KAAK2T,eAAepG,EAAOpN,KAG3B8S,EAAOjT,KAAK4T,WACZ5T,KAAK4T,WAAa5T,KAAK6T,cACvB7T,KAAK6T,cAAgBZ,EAGrBjT,KAAK8T,UAAYvG,EAAOpN,SAEnB,GAAItF,IAASmF,KAAK+T,gBACvB/T,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKkU,gBACvBlU,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKmU,gBACvBnU,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKoU,iBACvBpU,KAAK0T,gBAAgBnG,EAAOpN,KAC5BH,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAKqU,eACLrU,KAAK8T,UAAYvG,EAAOpN,SAEnB,GAAItF,IAASmF,KAAKsU,WACJ,UAAftU,KAAKwT,MACPxT,KAAK6T,cAAc7T,KAAKuU,MAAQvU,KAAK6T,cAAc7T,KAAKuU,MAAMjd,MAAM,GAAI,GAExE0I,KAAK4T,WAAW5T,KAAKuU,MAAQvU,KAAK4T,WAAW5T,KAAKuU,MAAMjd,MAAM,GAAI,QAE/D,GAAIuD,IAASmF,KAAKwU,wBACvBxU,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAK4T,WAAalB,SACb,GAAI7X,IAASmF,KAAKyU,4BACvBzU,KAAK6T,cAAgBnB,SAEhB,GAAI7X,IAASmF,KAAK0U,0BACJ,YAAf1U,KAAKwT,QAGPxT,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAK4T,WAAalB,KAEpB1S,KAAKwT,MAAQ,UACbxT,KAAK8T,UAAYvG,EAAOpN,SAGnB,GAAIH,KAAK2U,mBAAmBzB,EAAOC,GAKxCD,GAAiB,EAARA,IAAiB,EAC1BE,EAAOd,EAAgBY,EAAQC,GAC/BnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,eAGA,GAAI5U,KAAK6U,eAAe3B,EAAOC,GAOjB,UAAfnT,KAAKwT,MACPxT,KAAK6T,cAAc7T,KAAKuU,MAAQvU,KAAK6T,cAAc7T,KAAKuU,MAAMjd,MAAM,GAAI,GAExE0I,KAAK4T,WAAW5T,KAAKuU,MAAQvU,KAAK4T,WAAW5T,KAAKuU,MAAMjd,MAAM,GAAI,GAOpE4b,GAAiB,EAARA,IAAiB,EAC1BE,EAAOd,EAAgBY,EAAQC,GAC/BnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,eAGA,GAAI5U,KAAK8U,aAAa5B,EAAOC,GAElCnT,KAAK0T,gBAAgBnG,EAAOpN,KAI5BH,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAK,KAC7BH,KAAK4U,UAEiB,MAAT,GAARzB,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,MAGZ,KAAT,EAARgT,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,WAI7B,GAAIH,KAAKgV,oBAAoB9B,EAAOC,GAKzCnT,KAAK4U,SAAoB,EAARzB,OAGZ,GAAInT,KAAKiV,MAAM/B,EAAOC,GAAQ,CAInC,IAAIjc,EAAMub,EAAKrb,QAAe,KAAPyD,GAGJ,WAAfmF,KAAKwT,QAIHtc,EAAM8I,KAAKgU,YAAc,EAAI,IAC/B9c,EAAM8I,KAAKgU,YAAc,GAG3BhU,KAAKiU,UAAU1G,EAAOpN,IAAKjJ,IAGzBA,IAAQ8I,KAAKuU,OAEfvU,KAAK0T,gBAAgBnG,EAAOpN,KAC5BH,KAAKuU,KAAOrd,GAID,EAARic,IAAoD,IAAnCnT,KAAKkV,YAAY9d,QAAQ,MAC3C4I,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,MAGd,MAAV,GAAPtF,KAKHmF,KAAK4U,QAAgC,IAAb,GAAP/Z,IAAe,IAG9BmF,KAAKmV,WAAWhC,IAKI,MAAT,GAARA,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,WAK3BH,KAAKoV,aAAalC,KACb,IAAVC,IACFA,EAAQ,MAEVC,EAAOd,EAAgBY,GACvBE,GAAQd,EAAgBa,GACxBnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,SAAWxB,EAAKpb,aA/LrBgI,KAAKqT,iBAAmB,OAqM9B/C,EAAaxT,UAAY,IAAImC,EAG7BqR,EAAaxT,UAAU6W,eAAiB,SAASxT,GAC/C,IAAIkV,EAAUrV,KAAK4T,WAEhB9R,KAAI,SAAS5K,GACZ,IACE,OAAOA,EAAIH,OACX,MAAO6C,GAMP,OADAoR,QAAQtD,MAAM,+BACP,OAIV9I,KAAK,MAEL2F,QAAQ,aAAc,IAErB8Q,EAAQrd,QACVgI,KAAKI,QAAQ,OAAQ,CACnBkV,SAAUtV,KAAK8T,UACfyB,OAAQpV,EACRiT,KAAMiC,EACNG,OAAQxV,KAAK+S,SAQnBzC,EAAaxT,UAAU0D,MAAQ,WAC7BR,KAAKwT,MAAQ,QAKbxT,KAAKyV,QAAU,EACfzV,KAAK8T,UAAY,EACjB9T,KAAK4T,WAAalB,IAClB1S,KAAK6T,cAAgBnB,IACrB1S,KAAKqT,iBAAmB,KAGxBrT,KAAK4U,QAAU,EACf5U,KAAKuU,KAAO/B,EACZxS,KAAKgU,YAAc,EAGnBhU,KAAKkV,YAAc,IAMrB5E,EAAaxT,UAAUkW,aAAe,WAaV,IAAtBhT,KAAK8S,cACP9S,KAAK0V,MAAY,GACjB1V,KAAK2V,KAAY,GACjB3V,KAAK4V,UAAa,GAAO5V,KAAK6S,SAAW,EACzC7S,KAAK6V,QAAY,IACc,IAAtB7V,KAAK8S,eACd9S,KAAK0V,MAAY,GACjB1V,KAAK2V,KAAY,GACjB3V,KAAK4V,UAAa,GAAO5V,KAAK6S,SAAW,EACzC7S,KAAK6V,QAAY,IAOnB7V,KAAKsT,SAA8B,EAEnCtT,KAAKuT,wBAA8C,GAAhBvT,KAAK4V,SACxC5V,KAAKyT,gBAA8C,GAAhBzT,KAAK4V,SAExC5V,KAAK+T,gBAA8C,GAAhB/T,KAAK4V,SACxC5V,KAAKkU,gBAA8C,GAAhBlU,KAAK4V,SACxC5V,KAAKmU,gBAA8C,GAAhBnU,KAAK4V,SACxC5V,KAAKoU,iBAA8C,GAAhBpU,KAAK4V,SAExC5V,KAAK0U,0BAA8C,GAAhB1U,KAAK4V,SAExC5V,KAAKsU,WAA8C,GAAhBtU,KAAK4V,SACxC5V,KAAKwU,wBAA8C,GAAhBxU,KAAK4V,SACxC5V,KAAKyU,4BAA8C,GAAhBzU,KAAK4V,UAc1CtF,EAAaxT,UAAU6X,mBAAqB,SAASzB,EAAOC,GAC1D,OAAQD,IAAUlT,KAAK2V,MAAQxC,GAAS,IAAQA,GAAS,IAc3D7C,EAAaxT,UAAU+X,eAAiB,SAAS3B,EAAOC,GACtD,OAASD,IAAWlT,KAAK2V,KAAO,GAAMzC,IAAWlT,KAAK2V,KAAO,IAC1DxC,GAAS,IAAQA,GAAS,IAc/B7C,EAAaxT,UAAUgY,aAAe,SAAS5B,EAAOC,GACpD,OAAQD,IAAUlT,KAAK2V,MAASxC,GAAS,IAAQA,GAAS,IAc5D7C,EAAaxT,UAAUkY,oBAAsB,SAAS9B,EAAOC,GAC3D,OAAQD,IAAUlT,KAAK6V,SAAY1C,GAAS,IAAQA,GAAS,IAc/D7C,EAAaxT,UAAUmY,MAAQ,SAAS/B,EAAOC,GAC7C,OAAQD,GAASlT,KAAK0V,OAASxC,EAASlT,KAAK0V,MAAQ,GAClDvC,GAAS,IAAQA,GAAS,KAY/B7C,EAAaxT,UAAUqY,WAAa,SAAShC,GAC3C,OAASA,GAAS,IAAQA,GAAS,IAAUA,GAAS,IAAQA,GAAS,KAWzE7C,EAAaxT,UAAUsY,aAAe,SAASU,GAC7C,OAAQA,GAAQ,IAAQA,GAAQ,KAUlCxF,EAAaxT,UAAUmX,UAAY,SAAS9T,EAAK4V,GAW/C,GATmB,WAAf/V,KAAKwT,QACPxT,KAAKuU,KAAO/B,EACZxS,KAAKwT,MAAQ,SAEbxT,KAAK2T,eAAexT,GACpBH,KAAK6T,cAAgBnB,IACrB1S,KAAK4T,WAAalB,UAGDpZ,IAAfyc,GAA4BA,IAAe/V,KAAKuU,KAElD,IAAK,IAAIxc,EAAI,EAAGA,EAAIiI,KAAKgU,YAAajc,IACpCiI,KAAK4T,WAAWmC,EAAahe,GAAKiI,KAAK4T,WAAW5T,KAAKuU,KAAOxc,GAC9DiI,KAAK4T,WAAW5T,KAAKuU,KAAOxc,GAAK,QAIlBuB,IAAfyc,IACFA,EAAa/V,KAAKuU,MAGpBvU,KAAKyV,QAAUM,EAAa/V,KAAKgU,YAAc,GAKjD1D,EAAaxT,UAAUiY,cAAgB,SAAS5U,EAAK6V,GACnDhW,KAAKkV,YAAclV,KAAKkV,YAAYtT,OAAOoU,GAC3C,IAAI5C,EAAO4C,EAAO7U,QAAO,SAASiS,EAAM4C,GACtC,OAAO5C,EAAO,IAAM4C,EAAS,MAC5B,IACHhW,KAAKA,KAAKwT,OAAOrT,EAAKiT,IAKxB9C,EAAaxT,UAAU4W,gBAAkB,SAASvT,GAChD,GAAKH,KAAKkV,YAAYld,OAAtB,CAGA,IAAIob,EAAOpT,KAAKkV,YAAYe,UAAU9U,QAAO,SAASiS,EAAM4C,GAC1D,OAAO5C,EAAO,KAAO4C,EAAS,MAC7B,IACHhW,KAAKkV,YAAc,GACnBlV,KAAKA,KAAKwT,OAAOrT,EAAKiT,KAIxB9C,EAAaxT,UAAUoZ,MAAQ,SAAS/V,EAAKiT,GAC3C,IAAI+C,EAAUnW,KAAK6T,cAAc7T,KAAKuU,MAGtC4B,GAAW/C,EACXpT,KAAK6T,cAAc7T,KAAKuU,MAAQ4B,GAGlC7F,EAAaxT,UAAUsZ,OAAS,SAASjW,EAAKiT,GAC5C,IAAI+C,EAAUnW,KAAK4T,WAAW5T,KAAKuU,MAEnC4B,GAAW/C,EACXpT,KAAK4T,WAAW5T,KAAKuU,MAAQ4B,GAI/B7F,EAAaxT,UAAUuX,aAAe,WACpC,IAAItc,EAEJ,IAAKA,EAAI,EAAGA,EAAIiI,KAAKyV,QAAS1d,IAC5BiI,KAAK4T,WAAW7b,GAAK,GAEvB,IAAKA,EAAIiI,KAAKuU,KAAO,EAAGxc,EAAIya,EAAa,EAAGza,IAC1CiI,KAAK4T,WAAW7b,GAAK,GAGvB,IAAKA,EAAIiI,KAAKyV,QAAS1d,EAAIiI,KAAKuU,KAAMxc,IACpCiI,KAAK4T,WAAW7b,GAAKiI,KAAK4T,WAAW7b,EAAI,GAG3CiI,KAAK4T,WAAW5T,KAAKuU,MAAQ,IAG/BjE,EAAaxT,UAAUuZ,QAAU,SAASlW,EAAKiT,GAC7C,IAAI+C,EAAUnW,KAAK4T,WAAW5T,KAAKuU,MAEnC4B,GAAW/C,EACXpT,KAAK4T,WAAW5T,KAAKuU,MAAQ4B,GAI/B5Z,EAAOC,QAAU,CACf2T,cAAeA,EACfG,aAAcA,I,mBCv1BhB,SAASgG,EAAgBvG,EAAGwG,GAM1B,OALAha,EAAOC,QAAU8Z,EAAkBvZ,OAAOqO,gBAAkB,SAAyB2E,EAAGwG,GAEtF,OADAxG,EAAE7S,UAAYqZ,EACPxG,GAGFuG,EAAgBvG,EAAGwG,GAG5Bha,EAAOC,QAAU8Z,G;2DCNjB,SAASE,EAAiBC,GAAM,OAAQA,GAAqB,kBAAPA,GAAoB,YAAaA,EAAMA,EAAG,WAAaA,EAE7G,IAAIC,EAAaF,EAAgB,EAAQ,SACrC/f,EAAS+f,EAAgB,EAAQ,SAEjCG,EAAa,SAAoBC,EAASC,GAE5C,MAAI,YAAYvS,KAAKuS,GACZA,GAIJ,QAAQvS,KAAKsS,KAChBA,EAAUF,EAAWI,iBAAiBrgB,EAAOsgB,UAAYtgB,EAAOsgB,SAASC,MAAQ,GAAIJ,IAGhFF,EAAWI,iBAAiBF,EAASC,KAG9Cta,EAAOC,QAAUma,G,qBCfjB,SAASnP,EAAKyP,EAAIC,GACjB,IAAI,IAAIX,KAAKU,EACZC,EAAKX,GAAKU,EAAIV,GAOhB,SAAS7f,EAAS+U,EAAM0L,GACvB,IAAIC,EAAK3L,EAAM3O,UACf,GAAGC,OAAOC,OAAO,CAChB,IAAIqa,EAAMta,OAAOC,OAAOma,EAAMra,WAC9Bsa,EAAGla,UAAYma,EAEhB,KAAKD,aAAcD,GAAO,CACzB,SAASG,KACTA,EAAExa,UAAYqa,EAAMra,UACpBwa,EAAI,IAAIA,EACR9P,EAAK4P,EAAGE,GACR7L,EAAM3O,UAAYsa,EAAKE,EAErBF,EAAGna,aAAewO,IACD,mBAATA,GACTT,QAAQtD,MAAM,gBAAgB+D,GAE/B2L,EAAGna,YAAcwO,GAGnB,IAAI8L,EAAS,+BAETC,EAAW,GACXC,EAA8BD,EAASC,aAA8B,EACrEC,EAA8BF,EAASE,eAA8B,EACrEC,EAA8BH,EAASG,UAA8B,EACrEC,EAA8BJ,EAASI,mBAA8B,EACrEC,EAA8BL,EAASK,sBAA8B,EACrEC,EAA8BN,EAASM,YAA8B,EACrEC,EAA8BP,EAASO,4BAA8B,EACrEC,EAA8BR,EAASQ,aAA8B,EACrEC,EAA8BT,EAASS,cAA8B,EACrEC,EAA8BV,EAASU,mBAA8B,GACrEC,EAA8BX,EAASW,uBAA8B,GACrEC,EAA8BZ,EAASY,cAA8B,GAGrEC,EAAgB,GAChBC,EAAmB,GAGnBC,GAF8BF,EAAcG,gBAAgCF,EAAiB,GAAG,mBAAoB,GACtFD,EAAcI,oBAAgCH,EAAiB,GAAG,uBAAwB,GAC1FD,EAAcE,uBAAgCD,EAAiB,GAAG,0BAA2B,IAK3HI,GAJ8BL,EAAcM,oBAAgCL,EAAiB,GAAG,iBAAkB,GACpFD,EAAcO,uBAAgCN,EAAiB,GAAG,oBAAqB,GACvFD,EAAcQ,qBAAgCP,EAAiB,GAAG,kBAAmB,GACrFD,EAAcS,6BAAgCR,EAAiB,GAAG,0BAA2B,GAC7FD,EAAcK,eAAgCJ,EAAiB,GAAG,YAAa,IAE7GS,GAD8BV,EAAcW,mBAAgCV,EAAiB,GAAG,gBAAiB,GACnFD,EAAcU,qBAAgCT,EAAiB,IAAI,mBAAoB,KAEzFD,EAAcY,mBAA8BX,EAAiB,IAAI,gBAAiB,IAClFD,EAAca,YAA8BZ,EAAiB,IAAI,eAAgB,IACjFD,EAAcc,0BAA8Bb,EAAiB,IAAI,uBAAwB,IACzFD,EAAce,eAA6Bd,EAAiB,IAAI,oBAAqB,IACrFD,EAAcgB,oBAA6Bf,EAAiB,IAAI,iBAAkB,IAGlH,SAASgB,EAAazd,EAAM0d,GAC3B,GAAGA,aAAmB5gB,MACrB,IAAI+O,EAAQ6R,OAEZ7R,EAAQ1H,KACRrH,MAAMoH,KAAKC,KAAMsY,EAAiBzc,IAClCmE,KAAKuZ,QAAUjB,EAAiBzc,GAC7BlD,MAAM6gB,mBAAmB7gB,MAAM6gB,kBAAkBxZ,KAAMsZ,GAI3D,OAFA5R,EAAM7L,KAAOA,EACV0d,IAASvZ,KAAKuZ,QAAUvZ,KAAKuZ,QAAU,KAAOA,GAC1C7R,EASR,SAAS+R,KA0BT,SAASC,EAAa5T,EAAK6T,GAC1B3Z,KAAK4Z,MAAQ9T,EACb9F,KAAK6Z,SAAWF,EAChBG,EAAgB9Z,MAEjB,SAAS8Z,EAAgBC,GACxB,IAAIC,EAAMD,EAAKH,MAAMK,MAAQF,EAAKH,MAAMM,cAAcD,KACtD,GAAGF,EAAKE,MAAQD,EAAI,CACnB,IAAIG,EAAKJ,EAAKF,SAASE,EAAKH,OAE5BQ,GAAQL,EAAK,SAASI,EAAGniB,QACzBwP,EAAK2S,EAAGJ,GACRA,EAAKE,KAAOD,GAed,SAASK,KAGT,SAASC,EAAeP,EAAKjU,GAC5B,IAAI/N,EAAIgiB,EAAK/hB,OACb,MAAMD,IACL,GAAGgiB,EAAKhiB,KAAO+N,EAAM,OAAO/N,EAI9B,SAASwiB,EAAcnS,EAAG2R,EAAKS,EAAQC,GAMtC,GALGA,EACFV,EAAKO,EAAeP,EAAKU,IAAYD,EAErCT,EAAKA,EAAK/hB,UAAYwiB,EAEpBpS,EAAG,CACLoS,EAAQE,aAAetS,EACvB,IAAIvB,EAAMuB,EAAG8R,cACVrT,IACF4T,GAAWE,EAAmB9T,EAAIuB,EAAGqS,GACrCG,EAAgB/T,EAAIuB,EAAGoS,KAI1B,SAASK,EAAiBzS,EAAG2R,EAAKvR,GAEjC,IAAIzQ,EAAIuiB,EAAeP,EAAKvR,GAC5B,KAAGzQ,GAAG,GAcL,MAAMuhB,EAAaZ,EAAc,IAAI/f,MAAMyP,EAAGY,QAAQ,IAAIR,IAb1D,IAAIsS,EAAYf,EAAK/hB,OAAO,EAC5B,MAAMD,EAAE+iB,EACPf,EAAKhiB,GAAKgiB,IAAOhiB,GAGlB,GADAgiB,EAAK/hB,OAAS8iB,EACX1S,EAAG,CACL,IAAIvB,EAAMuB,EAAG8R,cACVrT,IACF8T,EAAmB9T,EAAIuB,EAAGI,GAC1BA,EAAKkS,aAAe,OAyExB,SAAS9S,EAA+BmT,GAEvC,GADA/a,KAAKgb,UAAY,GACbD,EACH,IAAK,IAAIE,KAAWF,EAClB/a,KAAKgb,UAAYD,EAASE,GAmD9B,SAASC,KAmGT,SAASC,EAAYC,GACpB,OAAY,KAALA,EAAY,OACN,KAALA,GAAY,SACP,KAALA,GAAY,SACP,KAALA,GAAY,UACZ,KAAKA,EAAEzd,aAAa,IAW7B,SAAS0d,EAAWvV,EAAKvN,GACxB,GAAGA,EAASuN,GACX,OAAO,EAER,GAAGA,EAAOA,EAAKwV,WACd,GACC,GAAGD,EAAWvV,EAAKvN,GAAW,OAAO,QACzBuN,EAAKA,EAAKyV,aAMzB,SAASC,KAET,SAASZ,EAAgB/T,EAAIuB,EAAGoS,GAC/B3T,GAAOA,EAAIoT,OACX,IAAIwB,EAAKjB,EAAQxS,aACR,iCAANyT,IAEFrT,EAAGsT,OAAOlB,EAAQrR,OAAOqR,EAAQvS,UAAU,IAAMuS,EAAQhjB,OAG3D,SAASmjB,EAAmB9T,EAAIuB,EAAGoS,EAAQmB,GAC1C9U,GAAOA,EAAIoT,OACX,IAAIwB,EAAKjB,EAAQxS,aACR,iCAANyT,UAEKrT,EAAGsT,OAAOlB,EAAQrR,OAAOqR,EAAQvS,UAAU,IAGpD,SAAS2T,EAAe/U,EAAIuB,EAAGyT,GAC9B,GAAGhV,GAAOA,EAAIoT,KAAK,CAClBpT,EAAIoT,OAEJ,IAAI6B,EAAK1T,EAAG2T,WACZ,GAAGF,EACFC,EAAGA,EAAG9jB,UAAY6jB,MACd,CAEJ,IAAIG,EAAQ5T,EAAGkT,WACXvjB,EAAI,EACR,MAAMikB,EACLF,EAAG/jB,KAAOikB,EACVA,EAAOA,EAAMT,YAEdO,EAAG9jB,OAASD,IAaf,SAASkkB,EAAahT,EAAW+S,GAChC,IAAIE,EAAWF,EAAMG,gBACjBC,EAAOJ,EAAMT,YAYjB,OAXGW,EACFA,EAASX,YAAca,EAEvBnT,EAAWqS,WAAac,EAEtBA,EACFA,EAAKD,gBAAkBD,EAEvBjT,EAAWoT,UAAYH,EAExBN,EAAe3S,EAAWiR,cAAcjR,GACjC+S,EAKR,SAASM,EAAcrT,EAAW4S,EAASU,GAC1C,IAAIC,EAAKX,EAAS5S,WAIlB,GAHGuT,GACFA,EAAGC,YAAYZ,GAEbA,EAASa,WAAavE,EAAuB,CAC/C,IAAIwE,EAAWd,EAASP,WACxB,GAAgB,MAAZqB,EACH,OAAOd,EAER,IAAIe,EAAUf,EAASQ,eAEvBM,EAAWC,EAAUf,EAEtB,IAAIgB,EAAMN,EAAYA,EAAUJ,gBAAkBlT,EAAWoT,UAE7DM,EAASR,gBAAkBU,EAC3BD,EAAQrB,YAAcgB,EAGnBM,EACFA,EAAItB,YAAcoB,EAElB1T,EAAWqS,WAAaqB,EAET,MAAbJ,EACFtT,EAAWoT,UAAYO,EAEvBL,EAAUJ,gBAAkBS,EAE7B,GACCD,EAAS1T,WAAaA,QAChB0T,IAAaC,IAAYD,EAAUA,EAASpB,cAMnD,OALAK,EAAe3S,EAAWiR,eAAejR,EAAWA,GAEhD4S,EAASa,UAAYvE,IACxB0D,EAASP,WAAaO,EAASQ,UAAY,MAErCR,EAER,SAASiB,EAAmB7T,EAAW4S,GACtC,IAAIW,EAAKX,EAAS5S,WAClB,GAAGuT,EAAG,CACL,IAAIK,EAAM5T,EAAWoT,UACrBG,EAAGC,YAAYZ,GACXgB,EAAM5T,EAAWoT,UAElBQ,EAAM5T,EAAWoT,UAWrB,OAVAR,EAAS5S,WAAaA,EACtB4S,EAASM,gBAAkBU,EAC3BhB,EAASN,YAAc,KACpBsB,EACFA,EAAItB,YAAcM,EAElB5S,EAAWqS,WAAaO,EAEzB5S,EAAWoT,UAAYR,EACvBD,EAAe3S,EAAWiR,cAAcjR,EAAW4S,GAC5CA,EAsJR,SAASkB,IACR/c,KAAK0b,OAAS,GA6Ff,SAASsB,KAMT,SAASC,KA+BT,SAASC,KAmBT,SAASC,KAQT,SAASC,KAST,SAASC,KAKT,SAASC,KAKT,SAASC,KAKT,SAASC,KAKT,SAASC,KAOT,SAASC,KAIT,SAASvS,MAKT,SAASwS,GAAsBC,EAAOC,GACrC,IAAIC,EAAM,GACNC,EAA2B,GAAjB/d,KAAK0c,SAAc1c,KAAK5D,gBAAgB4D,KAClDmJ,EAAS4U,EAAQ5U,OACjB9Q,EAAM0lB,EAAQ/V,aAElB,GAAG3P,GAAiB,MAAV8Q,EAAe,CAEpBA,EAAS4U,EAAQC,aAAa3lB,GAClC,GAAa,MAAV8Q,EAEF,IAAI8U,EAAkB,CACtB,CAACC,UAAU7lB,EAAI8Q,OAAO,OAOxB,OAFAgV,GAAkBne,KAAK8d,EAAIF,EAAOC,EAAWI,GAEtCH,EAAIlf,KAAK,IAEjB,SAASwf,GAAoBtY,EAAKuY,EAAQJ,GACzC,IAAI9U,EAASrD,EAAKqD,QAAQ,GACtB9Q,EAAMyN,EAAKkC,aACf,IAAKmB,IAAW9Q,EACf,OAAO,EAER,GAAe,QAAX8Q,GAA4B,yCAAR9Q,GACb,iCAAPA,EACH,OAAO,EAGR,IAAIN,EAAIkmB,EAAkBjmB,OAE1B,MAAOD,IAAK,CACX,IAAI0jB,EAAKwC,EAAkBlmB,GAG3B,GAAI0jB,EAAGtS,QAAUA,EAChB,OAAOsS,EAAGyC,WAAa7lB,EASzB,OAAO,EAER,SAAS8lB,GAAkBrY,EAAKgY,EAAIO,EAAOR,EAAWI,GACrD,GAAGJ,EAAW,CAEb,GADA/X,EAAO+X,EAAW/X,IACfA,EAMF,OALA,GAAkB,iBAARA,EAET,YADAgY,EAAInmB,KAAKmO,GAQZ,OAAOA,EAAK4W,UACZ,KAAKjF,EACCwG,IAAmBA,EAAoB,IACfA,EAAkBjmB,OAA/C,IACImQ,EAAQrC,EAAKwY,WACb5gB,EAAMyK,EAAMnQ,OACZgkB,EAAQlW,EAAKwV,WACbjf,EAAWyJ,EAAKkD,QAEpBqV,EAAW9G,IAAWzR,EAAKkC,cAAgBqW,EAC3CP,EAAInmB,KAAK,IAAI0E,GAIb,IAAI,IAAItE,EAAE,EAAEA,EAAE2F,EAAI3F,IAAI,CAErB,IAAIyQ,EAAOL,EAAMoW,KAAKxmB,GACH,SAAfyQ,EAAKW,OACR8U,EAAkBtmB,KAAK,CAAEwR,OAAQX,EAAKP,UAAWiW,UAAW1V,EAAKhR,QACxC,SAAjBgR,EAAKnM,UACb4hB,EAAkBtmB,KAAK,CAAEwR,OAAQ,GAAI+U,UAAW1V,EAAKhR,QAGvD,IAAQO,EAAE,EAAEA,EAAE2F,EAAI3F,IAAI,CACjByQ,EAAOL,EAAMoW,KAAKxmB,GACtB,GAAIqmB,GAAoB5V,EAAK6V,EAAQJ,GAAoB,CACxD,IAAI9U,EAASX,EAAKW,QAAQ,GACtB9Q,EAAMmQ,EAAKR,aACXyT,EAAKtS,EAAS,UAAYA,EAAS,SACvC2U,EAAInmB,KAAK8jB,EAAI,KAAOpjB,EAAM,KAC1B4lB,EAAkBtmB,KAAK,CAAEwR,OAAQA,EAAQ+U,UAAU7lB,IAEpD8lB,GAAkB3V,EAAKsV,EAAIO,EAAOR,EAAWI,GAG9C,GAAIG,GAAoBtY,EAAKuY,EAAQJ,GAAoB,CACpD9U,EAASrD,EAAKqD,QAAQ,GACtB9Q,EAAMyN,EAAKkC,aACXyT,EAAKtS,EAAS,UAAYA,EAAS,SACvC2U,EAAInmB,KAAK8jB,EAAI,KAAOpjB,EAAM,KAC1B4lB,EAAkBtmB,KAAK,CAAEwR,OAAQA,EAAQ+U,UAAU7lB,IAGpD,GAAG2jB,GAASqC,IAAW,mCAAmC/Z,KAAKjI,GAAU,CAGxE,GAFAyhB,EAAInmB,KAAK,KAEN0mB,GAAU,YAAY/Z,KAAKjI,GAC7B,MAAM2f,EACFA,EAAMnhB,KACRijB,EAAInmB,KAAKqkB,EAAMnhB,MAEfsjB,GAAkBnC,EAAM8B,EAAIO,EAAOR,EAAWI,GAE/CjC,EAAQA,EAAMT,iBAIf,MAAMS,EACLmC,GAAkBnC,EAAM8B,EAAIO,EAAOR,EAAWI,GAC9CjC,EAAQA,EAAMT,YAGhBuC,EAAInmB,KAAK,KAAK0E,EAAS,UAEvByhB,EAAInmB,KAAK,MAIV,OACD,KAAKsgB,EACL,KAAKE,EACA6D,EAAQlW,EAAKwV,WACjB,MAAMU,EACLmC,GAAkBnC,EAAM8B,EAAIO,EAAOR,EAAWI,GAC9CjC,EAAQA,EAAMT,YAEf,OACD,KAAK7D,EACJ,OAAOoG,EAAInmB,KAAK,IAAImO,EAAKmE,KAAK,KAAKnE,EAAKtO,MAAM+M,QAAQ,SAAS4W,GAAa,KAC7E,KAAKxD,EACJ,OAAOmG,EAAInmB,KAAKmO,EAAKjL,KAAK0J,QAAQ,QAAQ4W,IAC3C,KAAKvD,EACJ,OAAOkG,EAAInmB,KAAM,YAAYmO,EAAKjL,KAAK,OACxC,KAAKmd,EACJ,OAAO8F,EAAInmB,KAAM,UAAOmO,EAAKjL,KAAK,UACnC,KAAKqd,EACJ,IAAIsG,EAAQ1Y,EAAK4E,SACb+T,EAAQ3Y,EAAKI,SAEjB,GADA4X,EAAInmB,KAAK,aAAamO,EAAKmE,MACxBuU,EACFV,EAAInmB,KAAK,YAAY6mB,GACjBC,GAAgB,KAAPA,GACZX,EAAInmB,KAAM,MAAM8mB,GAEjBX,EAAInmB,KAAK,WACJ,GAAG8mB,GAAgB,KAAPA,EACjBX,EAAInmB,KAAK,YAAY8mB,EAAM,UACvB,CACJ,IAAIC,EAAM5Y,EAAK6Y,eACZD,GACFZ,EAAInmB,KAAK,KAAK+mB,EAAI,KAEnBZ,EAAInmB,KAAK,KAEV,OACD,KAAKogB,EACJ,OAAO+F,EAAInmB,KAAM,KAAKmO,EAAKwD,OAAO,IAAIxD,EAAKjL,KAAK,MACjD,KAAKgd,EACJ,OAAOiG,EAAInmB,KAAM,IAAImO,EAAKzJ,SAAS,KAGpC,QACCyhB,EAAInmB,KAAK,KAAKmO,EAAKzJ,WAGrB,SAASuiB,GAAW/X,EAAIf,EAAK+Y,GAC5B,IAAIC,EACJ,OAAQhZ,EAAK4W,UACb,KAAKjF,EACJqH,EAAQhZ,EAAKiZ,WAAU,GACvBD,EAAM5E,cAAgBrT,EAMvB,KAAKsR,EACJ,MACD,KAAKT,EACJmH,GAAO,EACP,MAqBD,GALIC,IACHA,EAAQhZ,EAAKiZ,WAAU,IAExBD,EAAM5E,cAAgBrT,EACtBiY,EAAM7V,WAAa,KAChB4V,EAAK,CACP,IAAI7C,EAAQlW,EAAKwV,WACjB,MAAMU,EACL8C,EAAMlY,YAAYgY,GAAW/X,EAAImV,EAAM6C,IACvC7C,EAAQA,EAAMT,YAGhB,OAAOuD,EAKR,SAASC,GAAUlY,EAAIf,EAAK+Y,GAC3B,IAAIC,EAAQ,IAAIhZ,EAAK7I,YACrB,IAAI,IAAI+hB,KAAKlZ,EAAK,CACjB,IAAImZ,EAAInZ,EAAKkZ,GACE,iBAALC,GACNA,GAAKH,EAAME,KACbF,EAAME,GAAKC,GAQd,OAJGnZ,EAAKiW,aACP+C,EAAM/C,WAAa,IAAItC,GAExBqF,EAAM5E,cAAgBrT,EACdiY,EAAMpC,UACd,KAAKjF,EACJ,IAAItP,EAAQrC,EAAKwY,WACbY,EAASJ,EAAMR,WAAa,IAAIjE,EAChC3c,EAAMyK,EAAMnQ,OAChBknB,EAAOC,cAAgBL,EACvB,IAAI,IAAI/mB,EAAE,EAAEA,EAAE2F,EAAI3F,IACjB+mB,EAAMjW,iBAAiBkW,GAAUlY,EAAIsB,EAAMoW,KAAKxmB,IAAG,IAEpD,MACD,KAAK2f,EACJmH,GAAO,EAER,GAAGA,EAAK,CACP,IAAI7C,EAAQlW,EAAKwV,WACjB,MAAMU,EACL8C,EAAMlY,YAAYmY,GAAUlY,EAAImV,EAAM6C,IACtC7C,EAAQA,EAAMT,YAGhB,OAAOuD,EAGR,SAAS1E,GAAQgF,EAAO/nB,EAAIG,GAC3B4nB,EAAO/nB,GAAOG,EAtkCf8hB,EAAaxc,UAAYnE,MAAMmE,UAC/B0K,EAAK6Q,EAAciB,GAQnBG,EAAS3c,UAAY,CAKpB9E,OAAO,EASPumB,KAAM,SAASpnB,GACd,OAAO6I,KAAK7I,IAAU,MAEvB2N,SAAS,SAASuZ,EAAOR,GACxB,IAAI,IAAIC,EAAM,GAAI/lB,EAAI,EAAEA,EAAEiI,KAAKhI,OAAOD,IACrComB,GAAkBne,KAAKjI,GAAG+lB,EAAIO,EAAOR,GAEtC,OAAOC,EAAIlf,KAAK,MAkBlB8a,EAAa5c,UAAUyhB,KAAO,SAASxmB,GAEtC,OADA+hB,EAAgB9Z,MACTA,KAAKjI,IAGbrB,EAASgjB,EAAaD,GAoDtBY,EAAavd,UAAY,CACxB9E,OAAO,EACPumB,KAAK9E,EAAS3c,UAAUyhB,KACxBc,aAAc,SAAShoB,GAKtB,IAAIU,EAAIiI,KAAKhI,OACb,MAAMD,IAAI,CACT,IAAIyQ,EAAOxI,KAAKjI,GAEhB,GAAGyQ,EAAKnM,UAAYhF,EACnB,OAAOmR,IAIV8W,aAAc,SAAS9W,GACtB,IAAIJ,EAAKI,EAAKkS,aACd,GAAGtS,GAAMA,GAAIpI,KAAKmf,cACjB,MAAM,IAAI7F,EAAaP,GAExB,IAAI0B,EAAUza,KAAKqf,aAAa7W,EAAKnM,UAErC,OADAke,EAAcva,KAAKmf,cAAcnf,KAAKwI,EAAKiS,GACpCA,GAGR8E,eAAgB,SAAS/W,GACxB,IAA4BiS,EAAxBrS,EAAKI,EAAKkS,aACd,GAAGtS,GAAMA,GAAIpI,KAAKmf,cACjB,MAAM,IAAI7F,EAAaP,GAIxB,OAFA0B,EAAUza,KAAKwf,eAAehX,EAAKR,aAAaQ,EAAKP,WACrDsS,EAAcva,KAAKmf,cAAcnf,KAAKwI,EAAKiS,GACpCA,GAIRgF,gBAAiB,SAASpoB,GACzB,IAAImR,EAAOxI,KAAKqf,aAAahoB,GAE7B,OADAwjB,EAAiB7a,KAAKmf,cAAcnf,KAAKwI,GAClCA,GAMRkX,kBAAkB,SAAS1X,EAAaC,GACvC,IAAIO,EAAOxI,KAAKwf,eAAexX,EAAaC,GAE5C,OADA4S,EAAiB7a,KAAKmf,cAAcnf,KAAKwI,GAClCA,GAERgX,eAAgB,SAASxX,EAAcC,GACtC,IAAIlQ,EAAIiI,KAAKhI,OACb,MAAMD,IAAI,CACT,IAAI+N,EAAO9F,KAAKjI,GAChB,GAAG+N,EAAKmC,WAAaA,GAAanC,EAAKkC,cAAgBA,EACtD,OAAOlC,EAGT,OAAO,OAeT8B,EAAkB9K,UAAY,CAC7B6iB,WAAY,SAAsB1E,EAAsB3Z,GACvD,IAAIse,EAAW5f,KAAKgb,UAAUC,EAAQ1jB,eACtC,SAAIqoB,GAActe,KAAWA,KAAWse,KAOzC/X,eAAe,SAASG,EAAe6X,EAAeC,GACrD,IAAIjZ,EAAM,IAAI2U,EAOd,GANA3U,EAAI+D,eAAiB5K,KACrB6G,EAAIkV,WAAa,IAAItC,EACrB5S,EAAIiZ,QAAUA,EACXA,GACFjZ,EAAID,YAAYkZ,GAEdD,EAAc,CAChB,IAAIE,EAAOlZ,EAAIwB,gBAAgBL,EAAa6X,GAC5ChZ,EAAID,YAAYmZ,GAEjB,OAAOlZ,GAGRgE,mBAAmB,SAASgV,EAAenV,EAAUxE,GACpD,IAAIJ,EAAO,IAAIuX,EAWf,OAVAvX,EAAKmE,KAAO4V,EACZ/Z,EAAKzJ,SAAWwjB,EAChB/Z,EAAK4E,SAAWA,EAChB5E,EAAKI,SAAWA,EAOTJ,IAYToV,EAAKpe,UAAY,CAChBwe,WAAa,KACbe,UAAY,KACZF,gBAAkB,KAClBZ,YAAc,KACd+C,WAAa,KACbrV,WAAa,KACb8S,WAAa,KACb7B,cAAgB,KAChBtR,UAAY,KACZZ,aAAe,KACfmB,OAAS,KACTlB,UAAY,KAEZ+X,aAAa,SAASnE,EAAUoE,GAC/B,OAAO3D,EAActc,KAAK6b,EAASoE,IAEpCC,aAAa,SAASrE,EAAUsE,GAC/BngB,KAAKggB,aAAanE,EAASsE,GACxBA,GACFngB,KAAKyc,YAAY0D,IAGnB1D,YAAY,SAAS0D,GACpB,OAAOlE,EAAajc,KAAKmgB,IAE1BvZ,YAAY,SAASiV,GACpB,OAAO7b,KAAKggB,aAAanE,EAAS,OAEnCuE,cAAc,WACb,OAA0B,MAAnBpgB,KAAKsb,YAEbyD,UAAU,SAASF,GAClB,OAAOE,GAAU/e,KAAKka,eAAela,KAAKA,KAAK6e,IAGhD1U,UAAU,WACT,IAAI6R,EAAQhc,KAAKsb,WACjB,MAAMU,EAAM,CACX,IAAII,EAAOJ,EAAMT,YACda,GAAQA,EAAKM,UAAY/E,GAAaqE,EAAMU,UAAY/E,GAC1D3X,KAAKyc,YAAYL,GACjBJ,EAAMqE,WAAWjE,EAAKvhB,QAEtBmhB,EAAM7R,YACN6R,EAAQI,KAKXkE,YAAY,SAASrF,EAAS3Z,GAC7B,OAAOtB,KAAKka,cAActP,eAAe+U,WAAW1E,EAAQ3Z,IAG1Dif,cAAc,WACb,OAAOvgB,KAAKse,WAAWtmB,OAAO,GAE/BgmB,aAAa,SAAShW,GACrB,IAAII,EAAKpI,KACT,MAAMoI,EAAG,CACR,IAAItG,EAAMsG,EAAGsT,OAEb,GAAG5Z,EACF,IAAI,IAAIkd,KAAKld,EACZ,GAAGA,EAAIkd,IAAMhX,EACZ,OAAOgX,EAIV5W,EAAKA,EAAGsU,UAAYhF,EAAetP,EAAG8R,cAAgB9R,EAAGa,WAE1D,OAAO,MAGRuX,mBAAmB,SAASrX,GAC3B,IAAIf,EAAKpI,KACT,MAAMoI,EAAG,CACR,IAAItG,EAAMsG,EAAGsT,OAEb,GAAG5Z,GACCqH,KAAUrH,EACZ,OAAOA,EAAIqH,GAGbf,EAAKA,EAAGsU,UAAYhF,EAAetP,EAAG8R,cAAgB9R,EAAGa,WAE1D,OAAO,MAGRwX,mBAAmB,SAASzY,GAC3B,IAAImB,EAASnJ,KAAKge,aAAahW,GAC/B,OAAiB,MAAVmB,IAcZ3B,EAAKgQ,EAAS0D,GACd1T,EAAKgQ,EAAS0D,EAAKpe,WAiJnB0e,EAAS1e,UAAY,CAEpBT,SAAY,YACZqgB,SAAYzE,EACZ6H,QAAW,KACX1jB,gBAAmB,KACnB6d,KAAO,EAEP+F,aAAgB,SAASnE,EAAUoE,GAClC,GAAGpE,EAASa,UAAYvE,EAAuB,CAC9C,IAAI6D,EAAQH,EAASP,WACrB,MAAMU,EAAM,CACX,IAAII,EAAOJ,EAAMT,YACjBvb,KAAKggB,aAAahE,EAAMiE,GACxBjE,EAAQI,EAET,OAAOP,EAMR,OAJ2B,MAAxB7b,KAAK5D,iBAA2Byf,EAASa,UAAYjF,IACvDzX,KAAK5D,gBAAkByf,GAGjBS,EAActc,KAAK6b,EAASoE,GAAWpE,EAAS3B,cAAgBla,KAAM6b,GAE9EY,YAAe,SAAS0D,GAIvB,OAHGngB,KAAK5D,iBAAmB+jB,IAC1BngB,KAAK5D,gBAAkB,MAEjB6f,EAAajc,KAAKmgB,IAG1BvB,WAAa,SAAS8B,EAAa7B,GAClC,OAAOD,GAAW5e,KAAK0gB,EAAa7B,IAGrC8B,eAAiB,SAASpf,GACzB,IAAIqf,EAAM,KASV,OARAvF,EAAWrb,KAAK5D,iBAAgB,SAAS0J,GACxC,GAAGA,EAAK4W,UAAYjF,GAChB3R,EAAK+a,aAAa,OAAStf,EAE7B,OADAqf,EAAM9a,GACC,KAIH8a,GAIRE,cAAgB,SAAS9X,GACxB,IAAIlD,EAAO,IAAIiX,EACfjX,EAAKoU,cAAgBla,KACrB8F,EAAKzJ,SAAW2M,EAChBlD,EAAKkD,QAAUA,EACflD,EAAKiW,WAAa,IAAItC,EACtB,IAAItR,EAAQrC,EAAKwY,WAAa,IAAIjE,EAElC,OADAlS,EAAMgX,cAAgBrZ,EACfA,GAERib,uBAAyB,WACxB,IAAIjb,EAAO,IAAI2X,EAGf,OAFA3X,EAAKoU,cAAgBla,KACrB8F,EAAKiW,WAAa,IAAItC,EACf3T,GAERiE,eAAiB,SAASlP,GACzB,IAAIiL,EAAO,IAAIoX,EAGf,OAFApX,EAAKoU,cAAgBla,KACrB8F,EAAKua,WAAWxlB,GACTiL,GAERwE,cAAgB,SAASzP,GACxB,IAAIiL,EAAO,IAAIqX,EAGf,OAFArX,EAAKoU,cAAgBla,KACrB8F,EAAKua,WAAWxlB,GACTiL,GAERgE,mBAAqB,SAASjP,GAC7B,IAAIiL,EAAO,IAAIsX,EAGf,OAFAtX,EAAKoU,cAAgBla,KACrB8F,EAAKua,WAAWxlB,GACTiL,GAER0D,4BAA8B,SAASF,EAAOzO,GAC7C,IAAIiL,EAAO,IAAI4X,EAIf,OAHA5X,EAAKoU,cAAgBla,KACrB8F,EAAKkD,QAAUlD,EAAKwD,OAASA,EAC7BxD,EAAK8C,UAAW9C,EAAKjL,KAAOA,EACrBiL,GAERkb,gBAAkB,SAAS/W,GAC1B,IAAInE,EAAO,IAAIkX,EAMf,OALAlX,EAAKoU,cAAgBla,KACrB8F,EAAKmE,KAAOA,EACZnE,EAAKzJ,SAAW4N,EAChBnE,EAAKmC,UAAYgC,EACjBnE,EAAKmb,WAAY,EACVnb,GAERob,sBAAwB,SAASjX,GAChC,IAAInE,EAAO,IAAI0X,EAGf,OAFA1X,EAAKoU,cAAgBla,KACrB8F,EAAKzJ,SAAW4N,EACTnE,GAGRuC,gBAAkB,SAASL,EAAa6X,GACvC,IAAI/Z,EAAO,IAAIiX,EACXoE,EAAKtB,EAAc7oB,MAAM,KACzBmR,EAAQrC,EAAKwY,WAAa,IAAIjE,EAclC,OAbAvU,EAAKiW,WAAa,IAAItC,EACtB3T,EAAKoU,cAAgBla,KACrB8F,EAAKzJ,SAAWwjB,EAChB/Z,EAAKkD,QAAU6W,EACf/Z,EAAKkC,aAAeA,EACJ,GAAbmZ,EAAGnpB,QACL8N,EAAKqD,OAASgY,EAAG,GACjBrb,EAAKmC,UAAYkZ,EAAG,IAGpBrb,EAAKmC,UAAY4X,EAElB1X,EAAMgX,cAAgBrZ,EACfA,GAGR4C,kBAAoB,SAASV,EAAa6X,GACzC,IAAI/Z,EAAO,IAAIkX,EACXmE,EAAKtB,EAAc7oB,MAAM,KAa7B,OAZA8O,EAAKoU,cAAgBla,KACrB8F,EAAKzJ,SAAWwjB,EAChB/Z,EAAKmE,KAAO4V,EACZ/Z,EAAKkC,aAAeA,EACpBlC,EAAKmb,WAAY,EACD,GAAbE,EAAGnpB,QACL8N,EAAKqD,OAASgY,EAAG,GACjBrb,EAAKmC,UAAYkZ,EAAG,IAGpBrb,EAAKmC,UAAY4X,EAEX/Z,IAGTpP,EAAS8kB,EAASN,GAMlB6B,EAAQjgB,UAAY,CACnB4f,SAAWjF,EACX2J,aAAe,SAASnX,GACvB,OAAoC,MAA7BjK,KAAKqhB,iBAAiBpX,IAE9B4W,aAAe,SAAS5W,GACvB,IAAIzB,EAAOxI,KAAKqhB,iBAAiBpX,GACjC,OAAOzB,GAAQA,EAAKhR,OAAS,IAE9B6pB,iBAAmB,SAASpX,GAC3B,OAAOjK,KAAKse,WAAWe,aAAapV,IAErCqX,aAAe,SAASrX,EAAMzS,GAC7B,IAAIgR,EAAOxI,KAAKka,cAAc8G,gBAAgB/W,GAC9CzB,EAAKhR,MAAQgR,EAAKI,UAAY,GAAKpR,EACnCwI,KAAK6I,iBAAiBL,IAEvB+Y,gBAAkB,SAAStX,GAC1B,IAAIzB,EAAOxI,KAAKqhB,iBAAiBpX,GACjCzB,GAAQxI,KAAKwhB,oBAAoBhZ,IAIlC5B,YAAY,SAASiV,GACpB,OAAGA,EAASa,WAAavE,EACjBnY,KAAKggB,aAAanE,EAAS,MAE3BiB,EAAmB9c,KAAK6b,IAGjChT,iBAAmB,SAAS2R,GAC3B,OAAOxa,KAAKse,WAAWgB,aAAa9E,IAErCiH,mBAAqB,SAASjH,GAC7B,OAAOxa,KAAKse,WAAWiB,eAAe/E,IAEvCgH,oBAAsB,SAAS/G,GAE9B,OAAOza,KAAKse,WAAWmB,gBAAgBhF,EAAQpe,WAGhDqlB,kBAAoB,SAAS1Z,EAAcC,GAC1C,IAAI0Z,EAAM3hB,KAAK4hB,mBAAmB5Z,EAAcC,GAChD0Z,GAAO3hB,KAAKwhB,oBAAoBG,IAGjCE,eAAiB,SAAS7Z,EAAcC,GACvC,OAAyD,MAAlDjI,KAAK4hB,mBAAmB5Z,EAAcC,IAE9C6Z,eAAiB,SAAS9Z,EAAcC,GACvC,IAAIO,EAAOxI,KAAK4hB,mBAAmB5Z,EAAcC,GACjD,OAAOO,GAAQA,EAAKhR,OAAS,IAE9BuqB,eAAiB,SAAS/Z,EAAc6X,EAAeroB,GACtD,IAAIgR,EAAOxI,KAAKka,cAAcxR,kBAAkBV,EAAc6X,GAC9DrX,EAAKhR,MAAQgR,EAAKI,UAAY,GAAKpR,EACnCwI,KAAK6I,iBAAiBL,IAEvBoZ,mBAAqB,SAAS5Z,EAAcC,GAC3C,OAAOjI,KAAKse,WAAWkB,eAAexX,EAAcC,IAGrD+Z,qBAAuB,SAAShZ,GAC/B,OAAO,IAAI0Q,EAAa1Z,MAAK,SAASiiB,GACrC,IAAI9H,EAAK,GAMT,OALAkB,EAAW4G,GAAK,SAASnc,GACrBA,IAASmc,GAAQnc,EAAK4W,UAAYjF,GAA6B,MAAZzO,GAAmBlD,EAAKkD,SAAWA,GACxFmR,EAAGxiB,KAAKmO,MAGHqU,MAGT+H,uBAAyB,SAASla,EAAcC,GAC/C,OAAO,IAAIyR,EAAa1Z,MAAK,SAASiiB,GACrC,IAAI9H,EAAK,GAMT,OALAkB,EAAW4G,GAAK,SAASnc,GACrBA,IAASmc,GAAQnc,EAAK4W,WAAajF,GAAkC,MAAjBzP,GAAwBlC,EAAKkC,eAAiBA,GAAgC,MAAdC,GAAqBnC,EAAKmC,WAAaA,GAC7JkS,EAAGxiB,KAAKmO,MAGHqU,OAKVqB,EAAS1e,UAAUklB,qBAAuBjF,EAAQjgB,UAAUklB,qBAC5DxG,EAAS1e,UAAUolB,uBAAyBnF,EAAQjgB,UAAUolB,uBAG9DxrB,EAASqmB,EAAQ7B,GAGjB8B,EAAKlgB,UAAU4f,SAAWhF,EAC1BhhB,EAASsmB,EAAK9B,GAKd+B,EAAcngB,UAAY,CACzBjC,KAAO,GACPsnB,cAAgB,SAASxU,EAAQyU,GAChC,OAAOpiB,KAAKnF,KAAKwnB,UAAU1U,EAAQA,EAAOyU,IAE3C/B,WAAY,SAASjN,GACpBA,EAAOpT,KAAKnF,KAAKuY,EACjBpT,KAAK4I,UAAY5I,KAAKnF,KAAOuY,EAC7BpT,KAAKhI,OAASob,EAAKpb,QAEpBsqB,WAAY,SAAS3U,EAAOyF,GAC3BpT,KAAKuiB,YAAY5U,EAAO,EAAEyF,IAG3BxM,YAAY,SAASiV,GACpB,MAAM,IAAIljB,MAAM2f,EAAiBC,KAElCiK,WAAY,SAAS7U,EAAQyU,GAC5BpiB,KAAKuiB,YAAY5U,EAAOyU,EAAM,KAE/BG,YAAa,SAAS5U,EAAQyU,EAAOhP,GACpC,IAAI3U,EAAQuB,KAAKnF,KAAKwnB,UAAU,EAAE1U,GAC9BjP,EAAMsB,KAAKnF,KAAKwnB,UAAU1U,EAAOyU,GACrChP,EAAO3U,EAAQ2U,EAAO1U,EACtBsB,KAAK4I,UAAY5I,KAAKnF,KAAOuY,EAC7BpT,KAAKhI,OAASob,EAAKpb,SAGrBtB,EAASumB,EAAc/B,GAGvBgC,EAAKpgB,UAAY,CAChBT,SAAW,QACXqgB,SAAW/E,EACX8K,UAAY,SAAS9U,GACpB,IAAIyF,EAAOpT,KAAKnF,KACZ6nB,EAAUtP,EAAKiP,UAAU1U,GAC7ByF,EAAOA,EAAKiP,UAAU,EAAG1U,GACzB3N,KAAKnF,KAAOmF,KAAK4I,UAAYwK,EAC7BpT,KAAKhI,OAASob,EAAKpb,OACnB,IAAI2qB,EAAU3iB,KAAKka,cAAcnQ,eAAe2Y,GAIhD,OAHG1iB,KAAKiJ,YACPjJ,KAAKiJ,WAAW+W,aAAa2C,EAAS3iB,KAAKub,aAErCoH,IAGTjsB,EAASwmB,EAAKD,GAGdE,EAAQrgB,UAAY,CACnBT,SAAW,WACXqgB,SAAW1E,GAEZthB,EAASymB,EAAQF,GAIjBG,EAAatgB,UAAY,CACxBT,SAAW,iBACXqgB,SAAW9E,GAEZlhB,EAAS0mB,EAAaH,GAKtBI,EAAavgB,UAAU4f,SAAWxE,EAClCxhB,EAAS2mB,EAAanC,GAItBoC,EAASxgB,UAAU4f,SAAWtE,EAC9B1hB,EAAS4mB,EAASpC,GAIlBqC,EAAOzgB,UAAU4f,SAAW5E,EAC5BphB,EAAS6mB,EAAOrC,GAIhBsC,EAAgB1gB,UAAU4f,SAAW7E,EACrCnhB,EAAS8mB,EAAgBtC,GAIzBuC,EAAiB3gB,UAAUT,SAAW,qBACtCohB,EAAiB3gB,UAAU4f,SAAWvE,EACtCzhB,EAAS+mB,EAAiBvC,GAK1BwC,EAAsB5gB,UAAU4f,SAAW3E,EAC3CrhB,EAASgnB,EAAsBxC,GAE/B/P,GAAcrO,UAAUqhB,kBAAoB,SAASrY,EAAK8X,EAAOC,GAChE,OAAOF,GAAsB5d,KAAK+F,EAAK8X,EAAOC,IAE/C3C,EAAKpe,UAAUgI,SAAW6Y,GA4Q1B,IACC,GAAG5gB,OAAO6lB,eAAe,CA+BxB,SAASC,GAAe/c,GACvB,OAAOA,EAAK4W,UACZ,KAAKjF,EACL,KAAKU,EACJ,IAAI2F,EAAM,GACVhY,EAAOA,EAAKwV,WACZ,MAAMxV,EACc,IAAhBA,EAAK4W,UAAiC,IAAjB5W,EAAK4W,UAC5BoB,EAAInmB,KAAKkrB,GAAe/c,IAEzBA,EAAOA,EAAKyV,YAEb,OAAOuC,EAAIlf,KAAK,IACjB,QACC,OAAOkH,EAAK8C,WA5Cd7L,OAAO6lB,eAAelJ,EAAa5c,UAAU,SAAS,CACrDgmB,IAAI,WAEH,OADAhJ,EAAgB9Z,MACTA,KAAK+iB,YAGdhmB,OAAO6lB,eAAe1H,EAAKpe,UAAU,cAAc,CAClDgmB,IAAI,WACH,OAAOD,GAAe7iB,OAEvBgjB,IAAI,SAASnoB,GACZ,OAAOmF,KAAK0c,UACZ,KAAKjF,EACL,KAAKU,EACJ,MAAMnY,KAAKsb,WACVtb,KAAKyc,YAAYzc,KAAKsb,aAEpBzgB,GAAQ2L,OAAO3L,KACjBmF,KAAK4G,YAAY5G,KAAKka,cAAcnQ,eAAelP,IAEpD,MACD,QAECmF,KAAKnF,KAAOA,EACZmF,KAAKxI,MAAQqD,EACbmF,KAAK4I,UAAY/N,MAsBpBuf,GAAU,SAASgF,EAAO/nB,EAAIG,GAE7B4nB,EAAO,KAAK/nB,GAAOG,IAGrB,MAAMoC,KAIN4C,EAAQoL,kBAAoBA,EAC5BpL,EAAQ2O,cAAgBA,I,qBCptCzB,IAAIrK,EAAa,SAAStJ,GACxB,OAAOA,IAAU,GAGfuJ,EAAc,SAASvJ,GACzB,OAAQ,KAAOA,EAAMsN,SAAS,KAAKxN,OAAO,IAG5CiF,EAAOC,QAAU,CACfsE,WAAYA,EACZC,YAAaA,I,mBChBfxE,EAAOC,QAAU7F,EAEjB,IAAImO,EAAW/H,OAAOD,UAAUgI,SAEhC,SAASnO,EAAY8O,GACnB,IAAKA,EACH,OAAO,EAET,IAAIwd,EAASne,EAAS/E,KAAK0F,GAC3B,MAAkB,sBAAXwd,GACU,oBAAPxd,GAAgC,oBAAXwd,GACV,qBAAXxsB,SAENgP,IAAOhP,OAAO0C,YACdsM,IAAOhP,OAAOysB,OACdzd,IAAOhP,OAAO0sB,SACd1d,IAAOhP,OAAO2sB,U,mCChBpB;AAGA,SAAS5M,EAAiBC,GAAM,OAAQA,GAAqB,kBAAPA,GAAoB,YAAaA,EAAMA,EAAG,WAAaA,EAE7G,IAAIhgB,EAAS+f,EAAgB,EAAQ,SAEjC6M,EAAO,SAAcC,GACvB,OAAO7sB,EAAO4sB,KAAO5sB,EAAO4sB,KAAKC,GAAKC,EAAOC,KAAKF,EAAG,UAAUxe,SAAS,WAG1E,SAAS2e,EAAsBC,GAI7B,IAHA,IAAIC,EAAgBN,EAAKK,GACrB7rB,EAAQ,IAAI4F,WAAWkmB,EAAc3rB,QAEhCD,EAAI,EAAGA,EAAI4rB,EAAc3rB,OAAQD,IACxCF,EAAME,GAAK4rB,EAAchmB,WAAW5F,GAGtC,OAAOF,EAGT0E,EAAOC,QAAUinB,I,kDCpBjB,SAASG,EAAe1rB,EAAK2rB,GACzB,IAAI9oB,EACA2M,EAAQ,KAEZ,IACI3M,EAAOrB,KAAKC,MAAMzB,EAAK2rB,GACzB,MAAOhrB,GACL6O,EAAQ7O,EAGZ,MAAO,CAAC6O,EAAO3M,GAZnBwB,EAAOC,QAAUonB,G,mBCAjBpnB,EAAQsnB,KAAO,SAAUpgB,EAAQiK,EAAQoW,EAAMC,EAAMC,GACnD,IAAIrqB,EAAGsqB,EACHC,EAAiB,EAATF,EAAcD,EAAO,EAC7BI,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTvsB,EAAIgsB,EAAQE,EAAS,EAAK,EAC1BM,EAAIR,GAAQ,EAAI,EAChBT,EAAI5f,EAAOiK,EAAS5V,GAOxB,IALAA,GAAKwsB,EAEL3qB,EAAI0pB,GAAM,IAAOgB,GAAU,EAC3BhB,KAAQgB,EACRA,GAASH,EACFG,EAAQ,EAAG1qB,EAAS,IAAJA,EAAW8J,EAAOiK,EAAS5V,GAAIA,GAAKwsB,EAAGD,GAAS,GAKvE,IAHAJ,EAAItqB,GAAM,IAAO0qB,GAAU,EAC3B1qB,KAAQ0qB,EACRA,GAASN,EACFM,EAAQ,EAAGJ,EAAS,IAAJA,EAAWxgB,EAAOiK,EAAS5V,GAAIA,GAAKwsB,EAAGD,GAAS,GAEvE,GAAU,IAAN1qB,EACFA,EAAI,EAAIyqB,MACH,IAAIzqB,IAAMwqB,EACf,OAAOF,EAAIM,IAAsBniB,KAAdihB,GAAK,EAAI,GAE5BY,GAAQ1kB,KAAK4C,IAAI,EAAG4hB,GACpBpqB,GAAQyqB,EAEV,OAAQf,GAAK,EAAI,GAAKY,EAAI1kB,KAAK4C,IAAI,EAAGxI,EAAIoqB,IAG5CxnB,EAAQioB,MAAQ,SAAU/gB,EAAQlM,EAAOmW,EAAQoW,EAAMC,EAAMC,GAC3D,IAAIrqB,EAAGsqB,EAAG9I,EACN+I,EAAiB,EAATF,EAAcD,EAAO,EAC7BI,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBM,EAAe,KAATV,EAAcxkB,KAAK4C,IAAI,GAAI,IAAM5C,KAAK4C,IAAI,GAAI,IAAM,EAC1DrK,EAAIgsB,EAAO,EAAKE,EAAS,EACzBM,EAAIR,EAAO,GAAK,EAChBT,EAAI9rB,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQgI,KAAKC,IAAIjI,GAEbmtB,MAAMntB,IAAUA,IAAU6K,KAC5B6hB,EAAIS,MAAMntB,GAAS,EAAI,EACvBoC,EAAIwqB,IAEJxqB,EAAI4F,KAAKolB,MAAMplB,KAAKqlB,IAAIrtB,GAASgI,KAAKslB,KAClCttB,GAAS4jB,EAAI5b,KAAK4C,IAAI,GAAIxI,IAAM,IAClCA,IACAwhB,GAAK,GAGL5jB,GADEoC,EAAIyqB,GAAS,EACNK,EAAKtJ,EAELsJ,EAAKllB,KAAK4C,IAAI,EAAG,EAAIiiB,GAE5B7sB,EAAQ4jB,GAAK,IACfxhB,IACAwhB,GAAK,GAGHxhB,EAAIyqB,GAASD,GACfF,EAAI,EACJtqB,EAAIwqB,GACKxqB,EAAIyqB,GAAS,GACtBH,GAAM1sB,EAAQ4jB,EAAK,GAAK5b,KAAK4C,IAAI,EAAG4hB,GACpCpqB,GAAQyqB,IAERH,EAAI1sB,EAAQgI,KAAK4C,IAAI,EAAGiiB,EAAQ,GAAK7kB,KAAK4C,IAAI,EAAG4hB,GACjDpqB,EAAI,IAIDoqB,GAAQ,EAAGtgB,EAAOiK,EAAS5V,GAAS,IAAJmsB,EAAUnsB,GAAKwsB,EAAGL,GAAK,IAAKF,GAAQ,GAI3E,IAFApqB,EAAKA,GAAKoqB,EAAQE,EAClBC,GAAQH,EACDG,EAAO,EAAGzgB,EAAOiK,EAAS5V,GAAS,IAAJ6B,EAAU7B,GAAKwsB,EAAG3qB,GAAK,IAAKuqB,GAAQ,GAE1EzgB,EAAOiK,EAAS5V,EAAIwsB,IAAU,IAAJjB,I,yCClF5B,IAAIyB,EAAS,WAAa,IAAIC,EAAIhlB,KAASilB,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACE,IAAI,cAAcC,YAAY,WAAWnd,MAAM,CAAC,aAAa,yBAC/Kod,EAAkB,G;;ACEtB,SAAS7uB,IAeP,OAdAA,EAAWqG,OAAOkT,QAAU,SAAU3G,GACpC,IAAK,IAAIvR,EAAI,EAAGA,EAAI6R,UAAU5R,OAAQD,IAAK,CACzC,IAAIgP,EAAS6C,UAAU7R,GAEvB,IAAK,IAAIV,KAAO0P,EACVhK,OAAOD,UAAU3E,eAAe4H,KAAKgH,EAAQ1P,KAC/CiS,EAAOjS,GAAO0P,EAAO1P,IAK3B,OAAOiS,GAGF5S,EAASmL,MAAM7B,KAAM4J,WAG9B,SAASjN,EAAeC,EAAUC,GAChCD,EAASE,UAAYC,OAAOC,OAAOH,EAAWC,WAC9CF,EAASE,UAAUG,YAAcL,EACjCA,EAASM,UAAYL,EAGvB,SAAS2oB,EAAuBC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EAYT,IAAIxmB,EAEJ,WACE,SAASA,IACPe,KAAKmP,UAAY,GAWnB,IAAIwW,EAAS1mB,EAAOnC,UAyFpB,OAvFA6oB,EAAOvW,GAAK,SAAYzP,EAAM0P,GACvBrP,KAAKmP,UAAUxP,KAClBK,KAAKmP,UAAUxP,GAAQ,IAGzBK,KAAKmP,UAAUxP,GAAMhI,KAAK0X,IAY5BsW,EAAOrW,IAAM,SAAa3P,EAAM0P,GAC9B,IAAKrP,KAAKmP,UAAUxP,GAClB,OAAO,EAGT,IAAIxI,EAAQ6I,KAAKmP,UAAUxP,GAAMvI,QAAQiY,GAEzC,OADArP,KAAKmP,UAAUxP,GAAM4P,OAAOpY,EAAO,GAC5BA,GAAS,GAUlBwuB,EAAOvlB,QAAU,SAAiBT,GAChC,IACI5H,EACAC,EACAwT,EAHAgE,EAAYxP,KAAKmP,UAAUxP,GAK/B,GAAK6P,EAQL,GAAyB,IAArB5F,UAAU5R,OAGZ,IAFAA,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAGgI,KAAKC,KAAM4J,UAAU,SAMpC,IAHA4B,EAAO/T,MAAMqF,UAAUxF,MAAMyI,KAAK6J,UAAW,GAC7C5R,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAG8J,MAAM7B,KAAMwL,IAS/Bma,EAAOlW,QAAU,WACfzP,KAAKmP,UAAY,IAYnBwW,EAAOjW,KAAO,SAAcC,GAC1B3P,KAAKoP,GAAG,QAAQ,SAAUvU,GACxB8U,EAAYhY,KAAKkD,OAIdoE,EAtGT,GAiHI2mB,EAEJ,SAAUC,GAGR,SAASD,IACP,IAAIE,EAIJ,OAFAA,EAAQD,EAAQ9lB,KAAKC,OAASA,KAC9B8lB,EAAMpiB,OAAS,GACRoiB,EAPTnpB,EAAeipB,EAAYC,GAgB3B,IAAIF,EAASC,EAAW9oB,UAaxB,OAXA6oB,EAAOhuB,KAAO,SAAckD,GAC1B,IAAIkrB,EAIJ,IAHA/lB,KAAK0D,QAAU7I,EACfkrB,EAAc/lB,KAAK0D,OAAOtM,QAAQ,MAE3B2uB,GAAe,EAAGA,EAAc/lB,KAAK0D,OAAOtM,QAAQ,MACzD4I,KAAKI,QAAQ,OAAQJ,KAAK0D,OAAO2e,UAAU,EAAG0D,IAC9C/lB,KAAK0D,OAAS1D,KAAK0D,OAAO2e,UAAU0D,EAAc,IAI/CH,EA9BT,CA+BE3mB,GAUE+mB,EAAqB,WACvB,IAAI3uB,EAAM,QACNG,EAAQ,gBACRyuB,EAAW,MAAQ5uB,EAAM,QAAUG,EAAQ,IAC/C,OAAO,IAAI0uB,OAAO,WAAaD,EAAW,MASxCE,EAAkB,SAAyB7H,GAE7C,IAGI9V,EAHAL,EAAQmW,EAAWtnB,MAAMgvB,KACzBlvB,EAAS,GACTiB,EAAIoQ,EAAMnQ,OAGd,MAAOD,IAEY,KAAboQ,EAAMpQ,KAKVyQ,EAAO,eAAe4d,KAAKje,EAAMpQ,IAAIT,MAAM,GAE3CkR,EAAK,GAAKA,EAAK,GAAGjE,QAAQ,aAAc,IACxCiE,EAAK,GAAKA,EAAK,GAAGjE,QAAQ,aAAc,IACxCiE,EAAK,GAAKA,EAAK,GAAGjE,QAAQ,kBAAmB,MAC7CzN,EAAO0R,EAAK,IAAMA,EAAK,IAGzB,OAAO1R,GA4BLuvB,EAEJ,SAAUR,GAGR,SAASQ,IACP,IAAIP,EAKJ,OAHAA,EAAQD,EAAQ9lB,KAAKC,OAASA,KAC9B8lB,EAAMQ,cAAgB,GACtBR,EAAMS,WAAa,GACZT,EARTnpB,EAAe0pB,EAAaR,GAiB5B,IAAIF,EAASU,EAAYvpB,UA0hBzB,OAxhBA6oB,EAAOhuB,KAAO,SAAc6uB,GAC1B,IAEIC,EACAjW,EAHAkW,EAAS1mB,KAOb,GAFAwmB,EAAOA,EAAKzvB,OAEQ,IAAhByvB,EAAKxuB,OAMT,GAAgB,MAAZwuB,EAAK,GAAT,CASA,IAAIG,EAAW3mB,KAAKumB,WAAWplB,QAAO,SAAUylB,EAAKC,GACnD,IAAIC,EAAaD,EAAOL,GAExB,OAAIM,IAAeN,EACVI,EAGFA,EAAIhlB,OAAO,CAACklB,MAClB,CAACN,IACJG,EAAS1vB,SAAQ,SAAU8vB,GACzB,IAAK,IAAIhvB,EAAI,EAAGA,EAAI2uB,EAAOJ,cAActuB,OAAQD,IAC/C,GAAI2uB,EAAOJ,cAAcvuB,GAAGgI,KAAK2mB,EAAQK,GACvC,OAKJ,GAAgC,IAA5BA,EAAQ3vB,QAAQ,QAepB,GAJA2vB,EAAUA,EAAQxiB,QAAQ,KAAM,IAEhCkiB,EAAQ,WAAWL,KAAKW,GAEpBN,EACFC,EAAOtmB,QAAQ,OAAQ,CACrBT,KAAM,MACNqnB,QAAS,YAHb,CAWA,GAFAP,EAAQ,gCAAgCL,KAAKW,GAEzCN,EAgBF,OAfAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,OAGPP,EAAM,KACRjW,EAAMyW,SAAWC,WAAWT,EAAM,KAGhCA,EAAM,KACRjW,EAAM2W,MAAQV,EAAM,SAGtBC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,qCAAqCL,KAAKW,GAE9CN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,kBAGPP,EAAM,KACRjW,EAAMyW,SAAWG,SAASX,EAAM,GAAI,UAGtCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,mCAAmCL,KAAKW,GAE5CN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,iBAGPP,EAAM,KACRjW,EAAMyW,SAAWG,SAASX,EAAM,GAAI,UAGtCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,8BAA8BL,KAAKW,GAEvCN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,WAGPP,EAAM,KACRjW,EAAMlP,QAAU8lB,SAASX,EAAM,GAAI,UAGrCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,wCAAwCL,KAAKW,GAEjDN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,kBAGPP,EAAM,KACRjW,EAAM6W,OAASD,SAASX,EAAM,GAAI,UAGpCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,gDAAgDL,KAAKW,GAEzDN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,0BAGPP,EAAM,KACRjW,EAAM6W,OAASD,SAASX,EAAM,GAAI,UAGpCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,gCAAgCL,KAAKW,GAEzCN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,iBAGPP,EAAM,KACRjW,EAAM8W,aAAeb,EAAM,SAG7BC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,4CAA4CL,KAAKW,GAErDN,EAgBF,OAfAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,aAGPP,EAAM,KACRjW,EAAMxY,OAASovB,SAASX,EAAM,GAAI,KAGhCA,EAAM,KACRjW,EAAM7C,OAASyZ,SAASX,EAAM,GAAI,UAGpCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,iCAAiCL,KAAKW,GAE1CN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,eAGPP,EAAM,KACRjW,EAAM+W,SAAW,KAAKjjB,KAAKmiB,EAAM,UAGnCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,qBAAqBL,KAAKW,GAE9BN,EAAJ,CAME,GALAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,OAGPP,EAAM,GAAI,CACZ,IAAInI,EAAa6H,EAAgBM,EAAM,IAMvC,GAJInI,EAAWkJ,MACbhX,EAAMnY,IAAMimB,EAAWkJ,KAGrBlJ,EAAWmJ,UAAW,CACxB,IAAIC,EAAwBpJ,EAAWmJ,UAAUzwB,MAAM,KACnDgB,EAAS0vB,EAAsB,GAC/B/Z,EAAS+Z,EAAsB,GAEnClX,EAAMmX,UAAY,GAEd3vB,IACFwY,EAAMmX,UAAU3vB,OAASovB,SAASpvB,EAAQ,KAGxC2V,IACF6C,EAAMmX,UAAUha,OAASyZ,SAASzZ,EAAQ,MAKhD+Y,EAAOtmB,QAAQ,OAAQoQ,QAOzB,GAFAiW,EAAQ,4BAA4BL,KAAKW,GAErCN,EAAJ,CAME,GALAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,cAGPP,EAAM,GAAI,CAGZ,GAFAjW,EAAM8N,WAAa6H,EAAgBM,EAAM,IAErCjW,EAAM8N,WAAWsJ,WAAY,CAC/B,IAAI5wB,EAAQwZ,EAAM8N,WAAWsJ,WAAW5wB,MAAM,KAC1C6wB,EAAa,GAEb7wB,EAAM,KACR6wB,EAAWC,MAAQV,SAASpwB,EAAM,GAAI,KAGpCA,EAAM,KACR6wB,EAAWE,OAASX,SAASpwB,EAAM,GAAI,KAGzCwZ,EAAM8N,WAAWsJ,WAAaC,EAG5BrX,EAAM8N,WAAW0J,YACnBxX,EAAM8N,WAAW0J,UAAYZ,SAAS5W,EAAM8N,WAAW0J,UAAW,KAGhExX,EAAM8N,WAAW,gBACnB9N,EAAM8N,WAAW,cAAgB8I,SAAS5W,EAAM8N,WAAW,cAAe,KAI9EoI,EAAOtmB,QAAQ,OAAQoQ,OAjCzB,CAwCA,GAFAiW,EAAQ,uBAAuBL,KAAKW,GAEhCN,EAYF,OAXAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,SAGPP,EAAM,KACRjW,EAAM8N,WAAa6H,EAAgBM,EAAM,UAG3CC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,kBAAkBL,KAAKW,GAE3BN,EACFC,EAAOtmB,QAAQ,OAAQ,CACrBT,KAAM,MACNqnB,QAAS,iBAQb,GAFAP,EAAQ,wBAAwBL,KAAKW,GAEjCN,EACFC,EAAOtmB,QAAQ,OAAQ,CACrBT,KAAM,MACNqnB,QAAS,sBAHb,CAWA,GAFAP,EAAQ,mCAAmCL,KAAKW,GAE5CN,EAaF,OAZAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,qBAGPP,EAAM,KACRjW,EAAMyX,eAAiBxB,EAAM,GAC7BjW,EAAM0X,eAAiB,IAAIrjB,KAAK4hB,EAAM,UAGxCC,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,qBAAqBL,KAAKW,GAE9BN,EAyBF,OAxBAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,OAGPP,EAAM,KACRjW,EAAM8N,WAAa6H,EAAgBM,EAAM,IAErCjW,EAAM8N,WAAW6J,KACuC,OAAtD3X,EAAM8N,WAAW6J,GAAG9F,UAAU,EAAG,GAAG9qB,gBACtCiZ,EAAM8N,WAAW6J,GAAK3X,EAAM8N,WAAW6J,GAAG9F,UAAU,IAGtD7R,EAAM8N,WAAW6J,GAAK3X,EAAM8N,WAAW6J,GAAG1B,MAAM,SAChDjW,EAAM8N,WAAW6J,GAAG,GAAKf,SAAS5W,EAAM8N,WAAW6J,GAAG,GAAI,IAC1D3X,EAAM8N,WAAW6J,GAAG,GAAKf,SAAS5W,EAAM8N,WAAW6J,GAAG,GAAI,IAC1D3X,EAAM8N,WAAW6J,GAAG,GAAKf,SAAS5W,EAAM8N,WAAW6J,GAAG,GAAI,IAC1D3X,EAAM8N,WAAW6J,GAAG,GAAKf,SAAS5W,EAAM8N,WAAW6J,GAAG,GAAI,IAC1D3X,EAAM8N,WAAW6J,GAAK,IAAIC,YAAY5X,EAAM8N,WAAW6J,WAI3DzB,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,uBAAuBL,KAAKW,GAEhCN,EAcF,OAbAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,SAGPP,EAAM,KACRjW,EAAM8N,WAAa6H,EAAgBM,EAAM,IACzCjW,EAAM8N,WAAW,eAAiB4I,WAAW1W,EAAM8N,WAAW,gBAC9D9N,EAAM8N,WAAW+J,QAAU,MAAM/jB,KAAKkM,EAAM8N,WAAW+J,eAGzD3B,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,+BAA+BL,KAAKW,GAExCN,EAcF,OAbAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,gBAGPP,EAAM,GACRjW,EAAM3V,KAAO4rB,EAAM,GAEnBjW,EAAM3V,KAAO,QAGf6rB,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,0BAA0BL,KAAKW,GAEnCN,EAcF,OAbAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,WAGPP,EAAM,GACRjW,EAAM3V,KAAO4rB,EAAM,GAEnBjW,EAAM3V,KAAO,QAGf6rB,EAAOtmB,QAAQ,OAAQoQ,GAOzB,GAFAiW,EAAQ,yBAAyBL,KAAKW,GAElCN,EAcF,OAbAjW,EAAQ,CACN7Q,KAAM,MACNqnB,QAAS,UAGPP,EAAM,GACRjW,EAAM3V,KAAO4rB,EAAM,GAEnBjW,EAAM3V,KAAO,QAGf6rB,EAAOtmB,QAAQ,OAAQoQ,GAMzBkW,EAAOtmB,QAAQ,OAAQ,CACrBT,KAAM,MACN9E,KAAMksB,EAAQzvB,MAAM,YA3apBovB,EAAOtmB,QAAQ,OAAQ,CACrBT,KAAM,UACNyT,KAAM2T,EAAQzvB,MAAM,aA5BxB0I,KAAKI,QAAQ,OAAQ,CACnBT,KAAM,MACNtH,IAAKmuB,KAkdXb,EAAO2C,UAAY,SAAmBC,GACpC,IAAIC,EAASxoB,KAETyoB,EAAaF,EAAKE,WAClBC,EAAaH,EAAKG,WAClBC,EAAaJ,EAAKI,WAClBC,EAAUL,EAAKK,QAEO,oBAAfD,IACTA,EAAa,SAAoBnC,GAC/B,OAAOA,IAIXxmB,KAAKsmB,cAAc3uB,MAAK,SAAU6uB,GAChC,IAAIC,EAAQgC,EAAWrC,KAAKI,GAE5B,GAAIC,EAQF,OAPA+B,EAAOpoB,QAAQ,OAAQ,CACrBT,KAAM,SACN9E,KAAM8tB,EAAWnC,GACjBkC,WAAYA,EACZE,QAASA,KAGJ,MAabjD,EAAOkD,aAAe,SAAsBC,GAC1C,IAAIL,EAAaK,EAAML,WACnB3mB,EAAMgnB,EAAMhnB,IAEZinB,EAAQ,SAAevC,GACzB,OAAIiC,EAAWnkB,KAAKkiB,GACX1kB,EAAI0kB,GAGNA,GAGTxmB,KAAKumB,WAAW5uB,KAAKoxB,IAGhB1C,EA5iBT,CA6iBEpnB,GAEF,SAASwkB,EAAsBC,GAI7B,IAHA,IAAIC,EAAgB,IAAON,KAAKK,GAAW,IACvC7rB,EAAQ,IAAI4F,WAAWkmB,EAAc3rB,QAEhCD,EAAI,EAAGA,EAAI4rB,EAAc3rB,OAAQD,IACxCF,EAAME,GAAK4rB,EAAchmB,WAAW5F,GAGtC,OAAOF,EAyBT,IAAImxB,EAEJ,SAAUnD,GAGR,SAASmD,IACP,IAAIlD,EAEJA,EAAQD,EAAQ9lB,KAAKC,OAASA,KAC9B8lB,EAAMmD,WAAa,IAAIrD,EACvBE,EAAMoD,YAAc,IAAI7C,EAExBP,EAAMmD,WAAWvZ,KAAKoW,EAAMoD,aAI5B,IAOIC,EAEAC,EATA3D,EAAOD,EAAuBM,GAI9BuD,EAAO,GACPC,EAAa,GAMbhtB,EAAO,aAEPitB,EAAqB,CACvB,MAAS,GACT,MAAS,GACT,kBAAmB,GACnB,UAAa,IAIXC,EAAe,gDAEfC,EAAkB,EAkXtB,OAhXA3D,EAAM4D,SAAW,CACfC,YAAY,EACZC,oBAAqB,GACrBC,SAAU,IAGZ/D,EAAMoD,YAAY9Z,GAAG,QAAQ,SAAU0a,GACrC,IAAIC,EACAC,GACJ,CACEC,IAAK,YAEF,CACC,cAAe,WACbjqB,KAAK0pB,SAASC,WAAaG,EAAMvC,QAE3B,YAAauC,IACjB9pB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,iCAEXvZ,KAAK0pB,SAASC,YAAa,IAG/BhC,UAAW,WACT,IAAIA,EAAY,GAEZ,WAAYmC,IACdR,EAAW3B,UAAYA,EACvBA,EAAU3vB,OAAS8xB,EAAM9xB,OAEnB,WAAY8xB,IAChB9pB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,8BAEXuQ,EAAMnc,OAAS,IAIf,WAAYmc,IACdR,EAAW3B,UAAYA,EACvBA,EAAUha,OAASmc,EAAMnc,SAG7Buc,QAAS,WACPlqB,KAAK0pB,SAASS,SAAU,GAE1BC,IAAK,WACG,kBAAmBpqB,KAAK0pB,WAC5B1pB,KAAK0pB,SAASW,cAAgB,EAC9BrqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,uCAIP,0BAA2BvZ,KAAK0pB,WACpC1pB,KAAK0pB,SAASY,sBAAwB,EACtCtqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,+CAITuQ,EAAM7C,SAAW,IACnBqC,EAAWrC,SAAW6C,EAAM7C,UAGP,IAAnB6C,EAAM7C,WACRqC,EAAWrC,SAAW,IACtBjnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,qDAIbvZ,KAAK0pB,SAASG,SAAWR,GAE3BhyB,IAAK,WACH,GAAKyyB,EAAMxL,WAQX,GAAgC,SAA5BwL,EAAMxL,WAAWiM,OAKrB,GAAKT,EAAMxL,WAAWkJ,IAAtB,CASA,GAAIsC,EAAMxL,WAAWkM,YAAchB,EAAc,CAC/C,IAAIiB,EAAgB,CAAC,aAAc,iBAAkB,mBAErD,OAAwD,IAApDA,EAAcrzB,QAAQ0yB,EAAMxL,WAAWiM,aACzCvqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,8CAKmB,oBAA5BuQ,EAAMxL,WAAWiM,QACnBvqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,qEAIiC,4BAA1CuQ,EAAMxL,WAAWkJ,IAAInF,UAAU,EAAG,SACpCriB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,0CAKPuQ,EAAMxL,WAAWoM,OAAoD,OAA3CZ,EAAMxL,WAAWoM,MAAMrI,UAAU,EAAG,QASpEriB,KAAK0pB,SAASiB,kBAAoB,CAChC,qBAAsB,CACpBrM,WAAY,CACVsM,YAAad,EAAMxL,WAAWkM,UAE9BK,MAAOf,EAAMxL,WAAWoM,MAAMrI,UAAU,IAG1CyI,KAAMrH,EAAsBqG,EAAMxL,WAAWkJ,IAAIxwB,MAAM,KAAK,YAhB9DgJ,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,0CAqBVuQ,EAAMxL,WAAWiM,QACpBvqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,qCAKb6P,EAAO,CACL9uB,OAAQwvB,EAAMxL,WAAWiM,QAAU,UACnClyB,IAAKyxB,EAAMxL,WAAWkJ,KAGW,qBAAxBsC,EAAMxL,WAAW6J,KAC1BiB,EAAK2B,GAAKjB,EAAMxL,WAAW6J,SAnE3BnoB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,8CANX6P,EAAO,UARPppB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,qDAkFf,iBAAkB,WACXhX,SAASunB,EAAMzC,QAOpBrnB,KAAK0pB,SAASW,cAAgBP,EAAMzC,OANlCrnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,oCAAsCuQ,EAAMzC,UAO3D,yBAA0B,WACnB9kB,SAASunB,EAAMzC,SAOpBrnB,KAAK0pB,SAASY,sBAAwBR,EAAMzC,OAC5CoC,EAAkBK,EAAMzC,QAPtBrnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,4CAA8CuQ,EAAMzC,UAQnE,gBAAiB,WACV,YAAY/iB,KAAKwlB,EAAMxC,cAO5BtnB,KAAK0pB,SAASpC,aAAewC,EAAMxC,aANjCtnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,mCAAqCuQ,EAAMkB,YAO1DlpB,IAAK,WACHqnB,EAAa,GAETW,EAAMzxB,MACR8wB,EAAW9wB,IAAMyxB,EAAMzxB,KAGrByxB,EAAMnC,YACRwB,EAAWxB,UAAYmC,EAAMnC,YAGjC,aAAc,WACZ3nB,KAAK0pB,SAASuB,UAAY5B,EAC1BrpB,KAAK0pB,SAASwB,YAAclrB,KAAK0pB,SAASwB,aAAe3B,EAEpDO,EAAMxL,YAONgL,EAAWhL,aACdgL,EAAWhL,WAAa,IAG1B5nB,EAAS4yB,EAAWhL,WAAYwL,EAAMxL,aAVpCte,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,0CAWf4R,MAAO,WAGL,GAFAnrB,KAAK0pB,SAASwB,YAAclrB,KAAK0pB,SAASwB,aAAe3B,EAEnDO,EAAMxL,YAAcwL,EAAMxL,WAAW8M,MAAQtB,EAAMxL,WAAW,aAAewL,EAAMxL,WAAW+M,KAApG,CAQA,IAAIC,EAAiBtrB,KAAK0pB,SAASwB,YAAYpB,EAAMxL,WAAW8M,MAChEE,EAAexB,EAAMxL,WAAW,aAAegN,EAAexB,EAAMxL,WAAW,cAAgB,GAC/FyL,EAAauB,EAAexB,EAAMxL,WAAW,aAE7C0L,EAAY,CACVvtB,QAAS,OAAO6H,KAAKwlB,EAAMxL,WAAWiN,UAGpCvB,EAAUvtB,QACZutB,EAAUwB,YAAa,EAEvBxB,EAAUwB,WAAa,OAAOlnB,KAAKwlB,EAAMxL,WAAWmN,YAGlD3B,EAAMxL,WAAWoN,WACnB1B,EAAU2B,SAAW7B,EAAMxL,WAAWoN,UAGpC5B,EAAMxL,WAAWkJ,MACnBwC,EAAU3xB,IAAMyxB,EAAMxL,WAAWkJ,KAG/BsC,EAAMxL,WAAW,iBACnB0L,EAAU4B,WAAa9B,EAAMxL,WAAW,gBAGtCwL,EAAMxL,WAAWuN,kBACnB7B,EAAU8B,gBAAkBhC,EAAMxL,WAAWuN,iBAG3C/B,EAAMxL,WAAWyN,SACnB/B,EAAUgC,OAAS,OAAO1nB,KAAKwlB,EAAMxL,WAAWyN,SAIlDhC,EAAWD,EAAMxL,WAAW+M,MAAQrB,OA1ClChqB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,gDA2CfhZ,cAAe,WACbkpB,GAAmB,EACnBH,EAAW/oB,eAAgB,EAC3BP,KAAK0pB,SAASE,oBAAoBjyB,KAAK0xB,EAAKrxB,SAE9C,oBAAqB,WACyB,qBAAjCgI,KAAK0pB,SAASzB,iBAKvBjoB,KAAK0pB,SAASzB,eAAiB6B,EAAM7B,eACrCjoB,KAAK0pB,SAASxB,eAAiB4B,EAAM5B,gBAGvCoB,EAAWrB,eAAiB6B,EAAM7B,eAClCqB,EAAWpB,eAAiB4B,EAAM5B,gBAEpC+D,eAAgB,YACT1pB,SAASunB,EAAM7C,WAAa6C,EAAM7C,SAAW,EAChDjnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,qCAAuCuQ,EAAM7C,WAK1DjnB,KAAK0pB,SAASwC,eAAiBpC,EAAM7C,UAEvCkF,cAAe,YACR5pB,SAASunB,EAAM7C,WAAa6C,EAAM7C,SAAW,EAChDjnB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,oCAAsCuQ,EAAM7C,WAKzDjnB,KAAK0pB,SAAS0C,cAAgBtC,EAAM7C,UAEtCxoB,MAAO,WACAqrB,EAAMxL,aAAcqG,MAAMmF,EAAMxL,WAAW,gBAOhDte,KAAK0pB,SAASjrB,MAAQ,CACpB4tB,WAAYvC,EAAMxL,WAAW,eAC7BgO,QAASxC,EAAMxL,WAAW+J,SAR1BroB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,mEAUf,UAAW,WACT+P,EAAWiD,OAASzC,EAAMjvB,MAE5B,eAAgB,WACdyuB,EAAWkD,WAAa1C,EAAMjvB,MAEhC,SAAU,WACRyuB,EAAWmD,MAAQ3C,EAAMjvB,OAE1BivB,EAAM9C,UAAY1qB,GAAMyD,KAAK0lB,IAElCptB,IAAK,WACHixB,EAAWjxB,IAAMyxB,EAAMzxB,IACvBgxB,EAAK1xB,KAAK2xB,IAENtpB,KAAK0pB,SAASwC,gBAAoB,aAAc5C,IAClDtpB,KAAKI,QAAQ,OAAQ,CACnBmZ,QAAS,uDAEX+P,EAAWrC,SAAWjnB,KAAK0pB,SAASwC,gBAIlC9C,IACFE,EAAWjyB,IAAM+xB,GAGnBE,EAAWoD,SAAWjD,EAElBN,IACFG,EAAWxnB,IAAMqnB,GAInBG,EAAa,IAEflf,QAAS,aAETuiB,OAAQ,WAEF7C,EAAMlB,SACRU,EAAWqD,OAASrD,EAAWqD,QAAU,GACzCrD,EAAWqD,OAAO7C,EAAMpB,YAAcoB,EAAMjvB,OAE5CmF,KAAK0pB,SAASiD,OAAS3sB,KAAK0pB,SAASiD,QAAU,GAC/C3sB,KAAK0pB,SAASiD,OAAO7C,EAAMpB,YAAcoB,EAAMjvB,SAGlDivB,EAAMnqB,MAAMI,KAAK0lB,MAGfK,EAtZTnpB,EAAeqsB,EAAQnD,GA+ZvB,IAAIF,EAASqD,EAAOlsB,UA2CpB,OAzCA6oB,EAAOhuB,KAAO,SAAci1B,GAC1B5sB,KAAKipB,WAAWtxB,KAAKi1B,IASvBjH,EAAOjnB,IAAM,WAEXsB,KAAKipB,WAAWtxB,KAAK,OAavBguB,EAAO2C,UAAY,SAAmBhwB,GACpC0H,KAAKkpB,YAAYZ,UAAUhwB,IAW7BqtB,EAAOkD,aAAe,SAAsBvwB,GAC1C0H,KAAKkpB,YAAYL,aAAavwB,IAGzB0wB,EA3cT,CA4cE/pB,G,sDCjyCE4tB,EAAW,SAAkB30B,GAC/B,QAASA,GAAsB,kBAARA,GAGrB40B,EAAQ,SAASA,IACnB,IAAK,IAAIC,EAAOnjB,UAAU5R,OAAQg1B,EAAU,IAAIv1B,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAClF4D,EAAQ5D,GAAQxf,UAAUwf,GAG5B,OAAO4D,EAAQ7rB,QAAO,SAAUrK,EAAQiQ,GAUtC,OATAhK,OAAOkwB,KAAKlmB,GAAQ9P,SAAQ,SAAUI,GAChCI,MAAMC,QAAQZ,EAAOO,KAASI,MAAMC,QAAQqP,EAAO1P,IACrDP,EAAOO,GAAOP,EAAOO,GAAKuK,OAAOmF,EAAO1P,IAC/Bw1B,EAAS/1B,EAAOO,KAASw1B,EAAS9lB,EAAO1P,IAClDP,EAAOO,GAAOy1B,EAAMh2B,EAAOO,GAAM0P,EAAO1P,IAExCP,EAAOO,GAAO0P,EAAO1P,MAGlBP,IACN,KAED,EAAS,SAAgBiZ,GAC3B,OAAOhT,OAAOkwB,KAAKld,GAAGjO,KAAI,SAAUorB,GAClC,OAAOnd,EAAEmd,OAIT,EAAQ,SAAezuB,EAAOC,GAGhC,IAFA,IAAI5H,EAAS,GAEJiB,EAAI0G,EAAO1G,EAAI2G,EAAK3G,IAC3BjB,EAAOa,KAAKI,GAGd,OAAOjB,GAELq2B,EAAU,SAAiBC,GAC7B,OAAOA,EAAMjsB,QAAO,SAAUksB,EAAGC,GAC/B,OAAOD,EAAEzrB,OAAO0rB,KACf,KAED9J,EAAO,SAAczJ,GACvB,IAAKA,EAAK/hB,OACR,MAAO,GAKT,IAFA,IAAIlB,EAAS,GAEJiB,EAAI,EAAGA,EAAIgiB,EAAK/hB,OAAQD,IAC/BjB,EAAOa,KAAKoiB,EAAKhiB,IAGnB,OAAOjB,GAELy2B,EAAc,SAAqBtnB,EAAG5O,GACxC,OAAO4O,EAAE9E,QAAO,SAAUuK,EAAG9R,EAAG7B,GAK9B,OAJI6B,EAAEvC,IACJqU,EAAE/T,KAAKI,GAGF2T,IACN,KAGD,EAAS,CACX8hB,yBAA0B,2BAC1BC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,YAAa,cACbC,4BAA6B,8BAC7BC,yBAA0B,2BAC1BC,8BAA+B,iCA6B7B,EAAmB,SAA0BvF,GAC/C,IAAIwF,EAAexF,EAAK3R,QACpBA,OAA2B,IAAjBmX,EAA0B,GAAKA,EACzCC,EAAczF,EAAKxhB,OACnBA,OAAyB,IAAhBinB,EAAyB,GAAKA,EACvCC,EAAa1F,EAAK2F,MAClBA,OAAuB,IAAfD,EAAwB,GAAKA,EACrCE,EAAkB5F,EAAK6F,WACvBA,OAAiC,IAApBD,EAA6B,GAAKA,EAC/CvF,EAAU,CACZvwB,IAAK0O,EACLsnB,YAAa,IAAWzX,GAAW,GAAI7P,IAGzC,GAAImnB,GAASE,EAAY,CACvB,IAAIE,EAAWJ,GAAgBE,EAC3BG,EAASD,EAASt3B,MAAM,KACxBw3B,EAAapH,SAASmH,EAAO,GAAI,IACjCE,EAAWrH,SAASmH,EAAO,GAAI,IAGnC3F,EAAQjB,UAAY,CAClB3vB,OAAQy2B,EAAWD,EAAa,EAChC7gB,OAAQ6gB,GAIZ,OAAO5F,GAEL8F,EAAoB,SAA2B/G,GAGjD,IAAI8G,EAAW9G,EAAUha,OAASga,EAAU3vB,OAAS,EACrD,OAAO2vB,EAAUha,OAAS,IAAM8gB,GAQ9BE,GAAe,CASjBC,OAAQ,SAAiBtQ,GACvB,IAAI2I,EAAW3I,EAAW2I,SACtB4H,EAAwBvQ,EAAW7d,UACnCA,OAAsC,IAA1BouB,EAAmC,EAAIA,EACnDC,EAAiBxQ,EAAWwQ,eAChC,MAAO,CACLrwB,MAAO,EACPC,IAAKc,KAAKuvB,KAAKD,GAAkB7H,EAAWxmB,MAYhDuuB,QAAS,SAAiB1Q,GACxB,IAAI2Q,EAAM3Q,EAAW2Q,IACjBC,EAAe5Q,EAAW4Q,aAC1BC,EAAwB7Q,EAAW6Q,sBACnCC,EAAyB9Q,EAAW7d,UACpCA,OAAuC,IAA3B2uB,EAAoC,EAAIA,EACpDnI,EAAW3I,EAAW2I,SACtBoI,EAAoB/Q,EAAW7f,MAC/BA,OAA8B,IAAtB4wB,EAA+B,EAAIA,EAC3CC,EAAwBhR,EAAWiR,oBACnCA,OAAgD,IAA1BD,EAAmC,EAAIA,EAC7DE,EAAwBlR,EAAWmR,qBACnCA,OAAiD,IAA1BD,EAAmCntB,IAAWmtB,EACrEE,GAAOT,EAAMC,GAAgB,IAC7BS,EAAgBR,EAAwB1wB,EACxCmxB,EAAcF,EAAMH,EACpBM,EAAiBD,EAAcD,EAC/BG,EAAetwB,KAAKuvB,KAAKc,EAAiBpvB,EAAYwmB,GACtD8I,EAAiBvwB,KAAKolB,OAAO8K,EAAMC,EAAgBF,GAAwBhvB,EAAYwmB,GACvF+I,EAAexwB,KAAKolB,OAAO8K,EAAMC,GAAiBlvB,EAAYwmB,GAClE,MAAO,CACLxoB,MAAOe,KAAKywB,IAAI,EAAGF,GACnBrxB,IAAKc,KAAK8C,IAAIwtB,EAAcE,MA4B9BE,GAAa,SAAoB5R,GACnC,OAAO,SAAU+I,EAAQlwB,GACvB,IAAI8vB,EAAW3I,EAAW2I,SACtBkJ,EAAyB7R,EAAW7d,UACpCA,OAAuC,IAA3B0vB,EAAoC,EAAIA,EACpDC,EAAc9R,EAAW8R,YACzBC,EAAwB/R,EAAWgS,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACzD,MAAO,CACLhJ,OAAQiJ,EAAcjJ,EACtBJ,SAAUA,EAAWxmB,EACrBisB,SAAU0D,EACVG,KAAMp5B,EAAQ8vB,KAehBuJ,GAAkB,SAAyBlS,GAC7C,IAAImS,EAAmBnS,EAAW3e,KAC9BA,OAA4B,IAArB8wB,EAA8B,SAAWA,EAChDxJ,EAAW3I,EAAW2I,SACtByJ,EAAyBpS,EAAW7d,UACpCA,OAAuC,IAA3BiwB,EAAoC,EAAIA,EACpD5B,EAAiBxQ,EAAWwQ,eAE5B6B,EAAqBhC,GAAahvB,GAAM2e,GACxC7f,EAAQkyB,EAAmBlyB,MAC3BC,EAAMiyB,EAAmBjyB,IAEzBmrB,EAAW,EAAMprB,EAAOC,GAAKoD,IAAIouB,GAAW5R,IAEhD,GAAa,WAAT3e,EAAmB,CACrB,IAAIxI,EAAQ0yB,EAAS7xB,OAAS,EAE9B6xB,EAAS1yB,GAAO8vB,SAAW6H,EAAiB7H,EAAWxmB,EAAYtJ,EAGrE,OAAO0yB,GAcL+G,GAAmB,SAA0BtS,GAC/C,IAAI1H,EAAU0H,EAAW1H,QACrBia,EAAwBvS,EAAWwS,eACnCA,OAA2C,IAA1BD,EAAmC,GAAKA,EACzD/B,EAAiBxQ,EAAWwQ,eAC5BD,EAAwBvQ,EAAW7d,UACnCA,OAAsC,IAA1BouB,EAAmC,EAAIA,EACnDkC,EAAwBzS,EAAW8P,WACnCA,OAAuC,IAA1B2C,EAAmC,GAAKA,EACrD9J,EAAW3I,EAAW2I,SAE1B,IAAKrQ,EACH,MAAM,IAAIje,MAAM,EAAOg1B,aAGzB,IAAIqD,EAAc,EAAiB,CACjCpa,QAASA,EACT7P,OAAQ+pB,EAAeG,UACvB/C,MAAO4C,EAAe5C,QAEpBtF,EAAU,EAAiB,CAC7BhS,QAASA,EACT7P,OAAQ6P,EACRwX,WAAYA,IAKd,GAHAxF,EAAQ9mB,IAAMkvB,EAGV/J,EAAU,CACZ,IAAIiK,EAAkBV,GAAgBlS,GAElC4S,EAAgBl5B,SAClB4wB,EAAQ3B,SAAWiK,EAAgB,GAAGjK,SACtC2B,EAAQ8D,SAAWwE,EAAgB,GAAGxE,eAE/BoC,IACTlG,EAAQ3B,SAAW6H,EAAiBruB,EACpCmoB,EAAQ8D,SAAW,GAKrB,OADA9D,EAAQvB,OAAS,EACV,CAACuB,IAcNuI,GAAwB,SAA+BnG,EAAUoG,EAAMxa,GAmBzE,IAjBA,IAAIoa,EAAchG,EAASoG,KAAKtvB,IAAMkpB,EAASoG,KAAKtvB,IAAM,KAEtDgtB,EAAiB9D,EAASoG,KAAKnK,SAE/ByF,EAAW1B,EAAS0B,UAAY,EAChC2E,EAAgBrG,EAASoG,KAAKzJ,UAC9B2J,EAAUD,EAAc1jB,OAAS0jB,EAAcr5B,OAE/CyI,EAAY2wB,EAAK3wB,UAEjB8wB,EAAkBH,EAAKI,WAAWC,QAAO,SAAUC,GACrD,OAA2B,IAApBA,EAAEC,iBAEP9H,EAAW,GAEX+H,EAAaN,EAAUF,EAAKS,YAEvB95B,EAAI,EAAGA,EAAIw5B,EAAgBv5B,OAAQD,IAAK,CAC/C,IAAIuH,EAAY8xB,EAAKI,WAAWz5B,GAE5B+5B,EAAOxyB,EAAUyyB,eAGjB9K,EAAW3nB,EAAU0yB,mBAErBC,EAAWL,EAAaE,EAAO,EAC/B1D,EAAawD,EAAa,IAAMK,EAChC3T,EAAa,CACf1H,QAASA,EACTnW,UAAWA,EACXisB,SAAUA,EAEV0D,YAAa1D,EACbzF,SAAUA,EACV6H,eAAgBA,EAChBV,WAAYA,GAEVxF,EAAUgI,GAAiBtS,GAAY,GAEvC0S,IACFpI,EAAQ9mB,IAAMkvB,GAGhBnH,EAASlyB,KAAKixB,GACdgJ,GAAcE,EAIhB,OADA9G,EAASnB,SAAWA,EACbmB,GAGLkH,GAA8B,SAAqCjH,GACrE,IAAIkH,EAAkB,EAAOlH,EAAU9pB,QAAO,SAAUylB,EAAKoE,GAI3D,IAGMoH,EAHFnoB,EAAO+gB,EAAS1M,WAAW/c,IAAMypB,EAAS1M,WAAW/X,MAAQ,IAE7DqgB,EAAI3c,IAIF+gB,EAASnB,SAAS,KACpBmB,EAASnB,SAAS,GAAGtpB,eAAgB,IAGtC6xB,EAAqBxL,EAAI3c,GAAM4f,UAAUlyB,KAAKkK,MAAMuwB,EAAoBpH,EAASnB,UAI9EmB,EAAS1M,WAAWqM,oBACtB/D,EAAI3c,GAAMqU,WAAWqM,kBAAoBK,EAAS1M,WAAWqM,oBAI/D/D,EAAI3c,GAAQ+gB,EAGd,OAAOpE,IACN,KACH,OAAOuL,EAAgBrwB,KAAI,SAAUkpB,GAEnC,OADAA,EAASpB,oBAAsB2D,EAAYvC,EAASnB,SAAU,iBACvDmB,MAIPqH,GAAyB,SAAgCpH,EAAWqH,GAKtE,QAJoB,IAAhBA,IACFA,EAAc,KAGXv1B,OAAOkwB,KAAKqF,GAAat6B,OAC5B,OAAOizB,EAGT,IAAK,IAAIlzB,KAAKkzB,EAAW,CACvB,IAAID,EAAWC,EAAUlzB,GAEzB,GAAKizB,EAASoG,KAAd,CAIA,IAAImB,EAAUvH,EAASoG,KAAK/4B,IAAM,IAAMq2B,EAAkB1D,EAASoG,KAAKzJ,WACpE6K,EAAYF,EAAYC,IAAYD,EAAYC,GAASnB,KAEzDpG,EAASoG,MAAQoB,GACnBrB,GAAsBnG,EAAUwH,EAAWxH,EAASoG,KAAK/C,cAI7D,OAAOpD,GAGLwH,GAAsB,SAA6BlK,GACrD,IAAImK,EAEApU,EAAaiK,EAAKjK,WAClBuL,EAAWtB,EAAKsB,SAChBuH,EAAO7I,EAAK6I,KACZpG,EAAW,CACb1M,YAAaoU,EAAc,CACzBrH,KAAM/M,EAAW/c,GACjBymB,UAAW1J,EAAWqU,UACtBC,OAAQtU,EAAWuU,QAClBH,EAAY,cAAgB,EAAGA,GAClCr6B,IAAK,GACL8xB,QAA2C,YAAjC7L,EAAW3e,MAAQ,UAC7B+sB,SAAUpO,EAAW8R,YACrB/B,YAAa,GACbnC,eAAgB5N,EAAW2I,SAC3B4C,SAAUA,EACVQ,cAAeR,EAAS7xB,OAAS6xB,EAAS,GAAGxC,OAAS,GAWxD,OARI/I,EAAWqM,oBACbK,EAASL,kBAAoBrM,EAAWqM,mBAGtCyG,IACFpG,EAASoG,KAAOA,GAGXpG,GAEL8H,GAAoB,SAA2BhK,GACjD,IAAIiK,EAEAzU,EAAawK,EAAMxK,WACnBuL,EAAWf,EAAMe,SAerB,MAbwB,qBAAbA,IAETA,EAAW,CAAC,CACVxxB,IAAKimB,EAAW1H,QAChB8V,SAAUpO,EAAW8R,YACrB/B,YAAa/P,EAAW1H,SAAW,GACnCqQ,SAAU3I,EAAWwQ,eACrBzH,OAAQ,IAGV/I,EAAW2I,SAAW3I,EAAWwQ,gBAG5B,CACLxQ,YAAayU,EAAe,CAC1B1H,KAAM/M,EAAW/c,GACjBymB,UAAW1J,EAAWqU,WACrBI,EAAa,cAAgB,EAAGA,GACnC16B,IAAK,GACL8xB,QAA2C,YAAjC7L,EAAW3e,MAAQ,UAC7B+sB,SAAUpO,EAAW8R,YACrB/B,YAAa/P,EAAW1H,SAAW,GACnCsV,eAAgB5N,EAAW2I,SAC3B4C,SAAUA,EACVQ,cAAeR,EAAS7xB,OAAS6xB,EAAS,GAAGxC,OAAS,IAGtD2L,GAAyB,SAAgC/H,EAAWqH,GAKtE,IAAIW,OAJgB,IAAhBX,IACFA,EAAc,IAIhB,IAAIY,EAAqBjI,EAAU9pB,QAAO,SAAUuK,EAAGsf,GACrD,IAAImI,EAAOnI,EAAS1M,WAAW6U,MAAQnI,EAAS1M,WAAW6U,KAAK37B,OAAS,GACrEm0B,EAAWX,EAAS1M,WAAW/X,MAAQ,GACvC6sB,EAAQ,OAEZ,GAAIzH,EAAU,CACZ,IAAI0H,EAAYF,EAAO,KAAOA,EAAO,IAAM,GAC3CC,EAAQ,GAAKpI,EAAS1M,WAAW/X,KAAO8sB,EAI1C,OAAI3nB,EAAE0nB,IAAU1nB,EAAE0nB,GAAOnI,UAAU,GAAG3M,WAAW0J,UAAYgD,EAAS1M,WAAWqU,UACxEjnB,GAGTA,EAAE0nB,GAAS,CACTzH,SAAUA,EACVH,YAAY,EACZ/uB,QAAkB,SAAT02B,EACTlI,UAAWoH,GAAuB,CAACI,GAAoBzH,IAAYsH,GACnEj6B,IAAK,IAGqB,qBAAjB46B,GAAyC,SAATE,IACzCF,EAAejI,EACfiI,EAAax2B,SAAU,GAGlBiP,KACN,IAEH,IAAKunB,EAAc,CACjB,IAAIK,EAAav2B,OAAOkwB,KAAKiG,GAAoB,GACjDA,EAAmBI,GAAY72B,SAAU,EAG3C,OAAOy2B,GAELK,GAAuB,SAA8BtI,EAAWqH,GAKlE,YAJoB,IAAhBA,IACFA,EAAc,IAGTrH,EAAU9pB,QAAO,SAAUuK,EAAGsf,GACnC,IAAIoI,EAAQpI,EAAS1M,WAAW/X,MAAQ,OAExC,OAAImF,EAAE0nB,GACG1nB,GAGTA,EAAE0nB,GAAS,CACTzH,SAAUyH,EACV32B,SAAS,EACT+uB,YAAY,EACZP,UAAWoH,GAAuB,CAACS,GAAkB9H,IAAYsH,GACjEj6B,IAAK,IAEAqT,KACN,KAED8nB,GAAsB,SAA6BC,GACrD,IAAIC,EAEApV,EAAamV,EAAMnV,WACnBuL,EAAW4J,EAAM5J,SACjBuH,EAAOqC,EAAMrC,KACbpG,EAAW,CACb1M,YAAaoV,EAAe,CAC1BrI,KAAM/M,EAAW/c,GACjBoyB,MAAO,QACPC,UAAW,OACXhM,WAAY,CACVE,MAAOxJ,EAAWwJ,MAClBC,OAAQzJ,EAAWyJ,QAErB6K,OAAQtU,EAAWuU,OACnB7K,UAAW1J,EAAWqU,WACrBe,EAAa,cAAgB,EAAGA,GACnCr7B,IAAK,GACL8xB,QAA2C,YAAjC7L,EAAW3e,MAAQ,UAC7B+sB,SAAUpO,EAAW8R,YACrB/B,YAAa,GACbnC,eAAgB5N,EAAW2I,SAC3B4C,SAAUA,EACVQ,cAAeR,EAAS7xB,OAAS6xB,EAAS,GAAGxC,OAAS,GAWxD,OARI/I,EAAWqM,oBACbK,EAASL,kBAAoBrM,EAAWqM,mBAGtCyG,IACFpG,EAASoG,KAAOA,GAGXpG,GAEL6I,GAAS,SAAgBC,EAAexB,GAC1C,IAAIyB,EAMJ,QAJoB,IAAhBzB,IACFA,EAAc,KAGXwB,EAAc97B,OACjB,MAAO,GAIT,IAAIg8B,EAAwBF,EAAc,GAAGxV,WACzC2I,EAAW+M,EAAsBlF,eACjCmF,EAAyBD,EAAsBr0B,KAC/CA,OAAkC,IAA3Bs0B,EAAoC,SAAWA,EACtDC,EAA6BF,EAAsBE,2BACnDC,EAAyBH,EAAsBzE,oBAC/CA,OAAiD,IAA3B4E,EAAoC,EAAIA,EAE9DC,EAAY,SAAmBC,GACjC,IAAI/V,EAAa+V,EAAM/V,WACvB,MAA+B,cAAxBA,EAAWtX,UAAuD,UAA3BsX,EAAWgW,aAGvDC,EAAY,SAAmBC,GACjC,IAAIlW,EAAakW,EAAMlW,WACvB,MAA+B,cAAxBA,EAAWtX,UAAuD,UAA3BsX,EAAWgW,aAGvDG,EAAU,SAAiBC,GAC7B,IAAIpW,EAAaoW,EAAMpW,WACvB,MAA+B,aAAxBA,EAAWtX,UAAsD,SAA3BsX,EAAWgW,aAGtDK,EAAiBzC,GAA4B4B,EAAcrC,OAAO2C,IAAYtyB,IAAI0xB,IAClFoB,EAAiB1C,GAA4B4B,EAAcrC,OAAO8C,IAClEM,EAAef,EAAcrC,OAAOgD,GACpCK,EAAS,CACXnL,YAAY,EACZC,oBAAqB,GACrBC,SAAU,GACVM,SAAS,EACTe,aAAc6I,EAAe,CAC3BJ,MAAO,GACPoB,MAAO,IACNhB,EAAa,mBAAqB,GAAIA,EAAaH,UAAY,GAAIG,GACtE17B,IAAK,GACL4uB,SAAUA,EACVgE,UAAWoH,GAAuBsC,EAAgBrC,GAClD/C,oBAA2C,IAAtBA,GAevB,MAZa,YAAT5vB,IACFm1B,EAAOZ,2BAA6BA,GAGlCU,EAAe58B,SACjB88B,EAAO5J,YAAYyI,MAAMqB,MAAQhC,GAAuB4B,EAAgBtC,IAGtEuC,EAAa78B,SACf88B,EAAO5J,YAAY0I,UAAUqB,KAAO1B,GAAqBsB,EAAcvC,IAGlEwC,GAkBLI,GAAgB,SAAuB5W,EAAYiS,EAAMtJ,GAC3D,IAAIgI,EAAM3Q,EAAW2Q,IACjBC,EAAe5Q,EAAW4Q,aAC1BC,EAAwB7Q,EAAW6Q,sBACnCN,EAAwBvQ,EAAW7d,UACnCA,OAAsC,IAA1BouB,EAAmC,EAAIA,EACnDQ,EAAoB/Q,EAAW7f,MAC/BA,OAA8B,IAAtB4wB,EAA+B,EAAIA,EAC3CC,EAAwBhR,EAAWiR,oBACnCA,OAAgD,IAA1BD,EAAmC,EAAIA,EAC7DI,GAAOT,EAAMC,GAAgB,IAC7BS,EAAgBR,EAAwB1wB,EACxCmxB,EAAcF,EAAMH,EACpBM,EAAiBD,EAAcD,EACnC,OAAOnwB,KAAKuvB,MAAMc,EAAiBpvB,EAAY8vB,GAAQtJ,IAiBrDkO,GAAkB,SAAyB7W,EAAY8W,GAgBzD,IAfA,IAAI3E,EAAmBnS,EAAW3e,KAC9BA,OAA4B,IAArB8wB,EAA8B,SAAWA,EAChD4E,EAAyB/W,EAAWiR,oBACpCA,OAAiD,IAA3B8F,EAAoC,EAAIA,EAC9DC,EAAoBhX,EAAW6M,MAC/BA,OAA8B,IAAtBmK,EAA+B,GAAKA,EAC5CxG,EAAiBxQ,EAAWwQ,eAC5BM,EAAyB9Q,EAAW7d,UACpCA,OAAuC,IAA3B2uB,EAAoC,EAAIA,EACpDiB,EAAwB/R,EAAWgS,YACnCA,OAAwC,IAA1BD,EAAmC,EAAIA,EACrD3D,EAAWpO,EAAW8R,YACtBvG,EAAW,GACX0G,GAAQ,EAEHgF,EAAS,EAAGA,EAASH,EAAgBp9B,OAAQu9B,IAAU,CAC9D,IAAIC,EAAIJ,EAAgBG,GACpBtO,EAAWuO,EAAEjR,EACbkR,EAASD,EAAE9D,GAAK,EAChBgE,EAAcF,EAAEle,GAAK,EAErBiZ,EAAO,IAETA,EAAOmF,GAGLA,GAAeA,EAAcnF,IAqB/BA,EAAOmF,GAGT,IAAItT,OAAQ,EAEZ,GAAIqT,EAAS,EAAG,CACd,IAAIE,EAAQJ,EAAS,EAKjBnT,EAHAuT,IAAUP,EAAgBp9B,OAEf,YAAT2H,GAAsB4vB,EAAsB,GAAKpE,EAAM/zB,QAAQ,YAAc,EACvE89B,GAAc5W,EAAYiS,EAAMtJ,IAG/B6H,EAAiBruB,EAAY8vB,GAAQtJ,GAGvCmO,EAAgBO,GAAOre,EAAIiZ,GAAQtJ,OAG9C7E,EAAQqT,EAAS,EAGnB,IAAI/2B,EAAM4xB,EAAczG,EAAS7xB,OAASoqB,EACtCiF,EAASiJ,EAAczG,EAAS7xB,OAEpC,MAAOqvB,EAAS3oB,EACdmrB,EAASlyB,KAAK,CACZ0vB,OAAQA,EACRJ,SAAUA,EAAWxmB,EACrB8vB,KAAMA,EACN7D,SAAUA,IAEZ6D,GAAQtJ,EACRI,IAIJ,OAAOwC,GAGL+L,GAAoB,kCAsCpBC,GAAwB,SAA+BC,GACzD,OAAO,SAAUrP,EAAOsP,EAAY/f,EAAQ8R,GAC1C,GAAc,OAAVrB,EAEF,MAAO,IAGT,GAAkC,qBAAvBqP,EAAOC,GAChB,OAAOtP,EAGT,IAAIjvB,EAAQ,GAAKs+B,EAAOC,GAExB,MAAmB,qBAAfA,EAEKv+B,GAMPswB,EAHG9R,EAGKoR,SAASU,EAAO,IAFhB,EAKNtwB,EAAMQ,QAAU8vB,EACXtwB,EAGF,GAAK,IAAIC,MAAMqwB,EAAQtwB,EAAMQ,OAAS,GAAG4G,KAAK,KAAOpH,KAsB5Dw+B,GAAuB,SAA8Bz7B,EAAKu7B,GAC5D,OAAOv7B,EAAIgK,QAAQqxB,GAAmBC,GAAsBC,KAgB1DG,GAAoB,SAA2B3X,EAAY8W,GAC7D,OAAK9W,EAAW2I,UAAamO,EAWzB9W,EAAW2I,SACNuJ,GAAgBlS,GAGlB6W,GAAgB7W,EAAY8W,GAZ1B,CAAC,CACN/N,OAAQ/I,EAAWgS,aAAe,EAClCrJ,SAAU3I,EAAWwQ,eACrByB,KAAM,EACN7D,SAAUpO,EAAW8R,eAuBvB,GAAuB,SAA8B9R,EAAY8W,GACnE,IAAIc,EAAiB,CACnBC,iBAAkB7X,EAAW/c,GAC7B60B,UAAW9X,EAAWqU,WAAa,GAEjC9B,EAAwBvS,EAAWwS,eACnCA,OAA2C,IAA1BD,EAAmC,CACtDI,UAAW,GACX/C,MAAO,IACL2C,EACAwF,EAAa,EAAiB,CAChCzf,QAAS0H,EAAW1H,QACpB7P,OAAQivB,GAAqBlF,EAAeG,UAAWiF,GACvDhI,MAAO4C,EAAe5C,QAEpBrE,EAAWoM,GAAkB3X,EAAY8W,GAC7C,OAAOvL,EAAS/nB,KAAI,SAAU8mB,GAC5BsN,EAAeI,OAAS1N,EAAQvB,OAChC6O,EAAeK,KAAO3N,EAAQ2H,KAC9B,IAAIl4B,EAAM29B,GAAqB1X,EAAW6M,OAAS,GAAI+K,GACvD,MAAO,CACL79B,IAAKA,EACLq0B,SAAU9D,EAAQ8D,SAClBzF,SAAU2B,EAAQ3B,SAClBoH,YAAa,IAAW/P,EAAW1H,SAAW,GAAIve,GAClDyJ,IAAKu0B,EACLhP,OAAQuB,EAAQvB,YAiBlBmP,GAA4B,SAAmClY,EAAYmY,GAC7E,IAAI7f,EAAU0H,EAAW1H,QACrBia,EAAwBvS,EAAWwS,eACnCA,OAA2C,IAA1BD,EAAmC,GAAKA,EACzDG,EAAc,EAAiB,CACjCpa,QAASA,EACT7P,OAAQ+pB,EAAeG,UACvB/C,MAAO4C,EAAe5C,QAEpBtF,EAAU,EAAiB,CAC7BhS,QAASA,EACT7P,OAAQ0vB,EAAWtL,MACnB+C,MAAOuI,EAAWC,aAGpB,OADA9N,EAAQ9mB,IAAMkvB,EACPpI,GAiBL+N,GAAmB,SAA0BrY,EAAY8W,GAC3D,IAAInO,EAAW3I,EAAW2I,SACtB2P,EAAwBtY,EAAWuY,YACnCA,OAAwC,IAA1BD,EAAmC,GAAKA,EAG1D,IAAK3P,IAAamO,GAAmBnO,GAAYmO,EAC/C,MAAM,IAAIz8B,MAAM,EAAOk1B,0BAGzB,IAGIqD,EAHA4F,EAAgBD,EAAY/0B,KAAI,SAAUi1B,GAC5C,OAAOP,GAA0BlY,EAAYyY,MAI3C9P,IACFiK,EAAkBV,GAAgBlS,IAGhC8W,IACFlE,EAAkBiE,GAAgB7W,EAAY8W,IAGhD,IAAIvL,EAAWqH,EAAgBpvB,KAAI,SAAU4zB,EAAav+B,GACxD,GAAI2/B,EAAc3/B,GAAQ,CACxB,IAAIyxB,EAAUkO,EAAc3/B,GAI5B,OAHAyxB,EAAQ8D,SAAWgJ,EAAYhJ,SAC/B9D,EAAQ3B,SAAWyO,EAAYzO,SAC/B2B,EAAQvB,OAASqO,EAAYrO,OACtBuB,MAKR6I,QAAO,SAAU7I,GAClB,OAAOA,KAET,OAAOiB,GAGLmN,GAAmB,SAA0BzO,GAC/C,IAEI0O,EACAC,EAHA5Y,EAAaiK,EAAKjK,WAClB6Y,EAAc5O,EAAK4O,YAInBA,EAAYC,UACdF,EAAa,GACbD,EAAoBnK,EAAMxO,EAAY6Y,EAAYC,WACzCD,EAAYlV,MACrBiV,EAAatG,GACbqG,EAAoBnK,EAAMxO,EAAY6Y,EAAYlV,OACzCkV,EAAYpd,OACrBmd,EAAaP,GACbM,EAAoBnK,EAAMxO,EAAY6Y,EAAYpd,OAGpD,IAAIsd,EAAe,CACjB/Y,WAAYA,GAGd,IAAK4Y,EACH,OAAOG,EAGT,IAAIxN,EAAWqN,EAAWD,EAAmBE,EAAYzK,UAIzD,GAAIuK,EAAkBhQ,SAAU,CAC9B,IAAIqQ,EAAqBL,EACrBhQ,EAAWqQ,EAAmBrQ,SAC9BsQ,EAAwBD,EAAmB72B,UAC3CA,OAAsC,IAA1B82B,EAAmC,EAAIA,EACvDN,EAAkBhQ,SAAWA,EAAWxmB,OAC/BopB,EAAS7xB,OAGlBi/B,EAAkBhQ,SAAW4C,EAAS1oB,QAAO,SAAU8uB,EAAKrH,GAC1D,OAAOppB,KAAKywB,IAAIA,EAAKzwB,KAAKuvB,KAAKnG,EAAQ3B,aACtC,GAEHgQ,EAAkBhQ,SAAW,EAW/B,OARAoQ,EAAa/Y,WAAa2Y,EAC1BI,EAAaxN,SAAWA,EAEpBsN,EAAYlV,MAAQgV,EAAkB7I,aACxCiJ,EAAajG,KAAOvH,EAAS,GAC7BwN,EAAaxN,SAAW,IAGnBwN,GAELG,GAAc,SAAqBC,GACrC,OAAOA,EAAgB31B,IAAIk1B,KAGzBU,GAAe,SAAsBC,EAAS1tB,GAChD,OAAOuZ,EAAKmU,EAAQ5b,YAAY0V,QAAO,SAAUlJ,GAC/C,IAAIvf,EAAUuf,EAAKvf,QACnB,OAAOA,IAAYiB,MAGnB2tB,GAAa,SAAoBD,GACnC,OAAOA,EAAQE,YAAY9gC,QAGzB+gC,GAAgB,SAAuBC,GACzC,IAAIC,EAAkB,QAClBC,EAAmB,OACnBC,EAAiB,MACjBC,EAAkB,KAClBC,EAAiB,GAEjBC,EAAgB,+EAChB5R,EAAQ4R,EAAcjS,KAAK2R,GAE/B,IAAKtR,EACH,OAAO,EAGT,IAAI6R,EAAe7R,EAAMnvB,MAAM,GAC3BihC,EAAOD,EAAa,GACpBE,EAAQF,EAAa,GACrBG,EAAMH,EAAa,GACnBI,EAAOJ,EAAa,GACpBK,EAASL,EAAa,GACtBM,EAASN,EAAa,GAE1B,OAAOpR,WAAWqR,GAAQ,GAAKP,EAAkB9Q,WAAWsR,GAAS,GAAKP,EAAmB/Q,WAAWuR,GAAO,GAAKP,EAAiBhR,WAAWwR,GAAQ,GAAKP,EAAkBjR,WAAWyR,GAAU,GAAKP,EAAiBlR,WAAW0R,GAAU,IAE7OC,GAAY,SAAmBd,GAGjC,IAAIe,EAAY,oCAOhB,OAJIA,EAAUx0B,KAAKyzB,KACjBA,GAAO,KAGFlzB,KAAKlL,MAAMo+B,IAGhBgB,GAAU,CAUZC,0BAA2B,SAAmCxhC,GAC5D,OAAOsgC,GAActgC,IAavB23B,sBAAuB,SAA+B33B,GACpD,OAAOqhC,GAAUrhC,GAAS,KAY5B+3B,oBAAqB,SAA6B/3B,GAChD,OAAOsgC,GAActgC,IAYvB08B,2BAA4B,SAAoC18B,GAC9D,OAAOsgC,GAActgC,IAYvBmI,KAAM,SAAcnI,GAClB,OAAOA,GAYTi4B,qBAAsB,SAA8Bj4B,GAClD,OAAOsgC,GAActgC,IAYvBiH,MAAO,SAAejH,GACpB,OAAOsgC,GAActgC,IAWvBswB,MAAO,SAAetwB,GACpB,OAAO4vB,SAAS5vB,EAAO,KAWzBuwB,OAAQ,SAAgBvwB,GACtB,OAAO4vB,SAAS5vB,EAAO,KAWzBm7B,UAAW,SAAmBn7B,GAC5B,OAAO4vB,SAAS5vB,EAAO,KAWzB84B,YAAa,SAAqB94B,GAChC,OAAO4vB,SAAS5vB,EAAO,KAWzBiJ,UAAW,SAAmBjJ,GAC5B,OAAO4vB,SAAS5vB,EAAO,KAezByvB,SAAU,SAAkBzvB,GAC1B,IAAIyhC,EAAc7R,SAAS5vB,EAAO,IAElC,OAAImtB,MAAMsU,GACDnB,GAActgC,GAGhByhC,GAWT1U,EAAG,SAAW/sB,GACZ,OAAO4vB,SAAS5vB,EAAO,KAYzB8f,EAAG,SAAW9f,GACZ,OAAO4vB,SAAS5vB,EAAO,KAYzBk6B,EAAG,SAAWl6B,GACZ,OAAO4vB,SAAS5vB,EAAO,KAYzB+zB,QAAS,SAAiB/zB,GACxB,OAAOA,IAaP,GAAkB,SAAyB4Q,GAC7C,OAAMA,GAAMA,EAAGkW,WAIRkF,EAAKpb,EAAGkW,YAAYnd,QAAO,SAAUuK,EAAG9R,GAC7C,IAAIs/B,EAAUH,GAAQn/B,EAAEqQ,OAAS8uB,GAAQxN,QAEzC,OADA7f,EAAE9R,EAAEqQ,MAAQivB,EAAQt/B,EAAEpC,OACfkU,IACN,IAPM,IAUPytB,GAAgB,CAClB,gDAAiD,kBACjD,gDAAiD,qBACjD,gDAAiD,0BACjD,gDAAiD,uBAa/C,GAAgB,SAAuBC,EAAeC,GACxD,OAAKA,EAAgBrhC,OAIdm1B,EAAQiM,EAAct3B,KAAI,SAAUxC,GACzC,OAAO+5B,EAAgBv3B,KAAI,SAAUw3B,GACnC,OAAO,IAAWh6B,EAAWs4B,GAAW0B,WALnCF,GAgCPG,GAAwB,SAA+BC,GACzD,IAAIC,EAAkB/B,GAAa8B,EAAe,mBAAmB,GACjEE,EAAchC,GAAa8B,EAAe,eAAe,GACzD3C,EAAc6C,GAAehC,GAAagC,EAAa,cAAc53B,KAAI,SAAUwhB,GACrF,OAAOwJ,EAAM,CACX7C,IAAK,cACJ,GAAgB3G,OAEjBqW,EAAcjC,GAAa8B,EAAe,eAAe,GACzDI,EAA4BF,GAAeD,EAC3CrE,EAAkBwE,GAA6BlC,GAAakC,EAA2B,mBAAmB,GAC1GC,EAAkCH,GAAeC,GAAeF,EAChEK,EAAwBD,GAAmCnC,GAAamC,EAAiC,kBAAkB,GAM3HzC,EAAWqC,GAAmB,GAAgBA,GAE9CrC,GAAY0C,EACd1C,EAAStG,eAAiBgJ,GAAyB,GAAgBA,GAC1D1C,GAAYA,EAAStG,iBAI9BsG,EAAStG,eAAiB,CACxBG,UAAWmG,EAAStG,iBAIxB,IAAIqG,EAAc,CAChBC,SAAUA,EACV1K,SAAU0I,GAAmBsC,GAAatC,EAAiB,KAAKtzB,KAAI,SAAUwhB,GAC5E,OAAO,GAAgBA,MAEzBvJ,KAAM2f,GAAe5M,EAAM,GAAgB4M,GAAc,CACvD7C,YAAaA,EACb/F,eAAgB,GAAgBgJ,KAElC7X,KAAM0X,GAAe7M,EAAM,GAAgB6M,GAAc,CACvD7I,eAAgB,GAAgBgJ,MAQpC,OALA/8B,OAAOkwB,KAAKkK,GAAalgC,SAAQ,SAAUI,GACpC8/B,EAAY9/B,WACR8/B,EAAY9/B,MAGhB8/B,GAsCL4C,GAAkB,SAAyBC,EAAyBC,EAAuBC,GAC7F,OAAO,SAAUC,GACf,IAAIC,EAAqB1C,GAAayC,EAAgB,WAClDE,EAAc,GAAcJ,EAAuBG,GACnD9b,EAAawO,EAAMkN,EAAyB,GAAgBG,IAC5DG,EAA4Bf,GAAsBY,GACtD,OAAOE,EAAYv4B,KAAI,SAAU8U,GAC/B,MAAO,CACLugB,YAAarK,EAAMoN,EAA0BI,GAC7Chc,WAAYwO,EAAMxO,EAAY,CAC5B1H,QAASA,UAgBf,GAA+B,SAAsC2jB,GACvE,OAAOA,EAAuBp5B,QAAO,SAAUylB,EAAK9gB,GAClD,IAAIwY,EAAa,GAAgBxY,GAC7B00B,EAAYrB,GAAc7a,EAAWsM,aAEzC,GAAI4P,EAAW,CACb5T,EAAI4T,GAAa,CACflc,WAAYA,GAEd,IAAImc,EAAW/C,GAAa5xB,EAAM,aAAa,GAE/C,GAAI20B,EAAU,CACZ,IAAI3P,EAAO8M,GAAW6C,GAClBC,EAAa5P,GAAQ,IAAsBA,GAC/ClE,EAAI4T,GAAW1P,KAAO4P,GAI1B,OAAO9T,IACN,KA4BD+T,GAAoB,SAA2BC,EAAkBC,EAAgBC,GACnF,OAAO,SAAUtB,GACf,IAAIQ,EAA0B,GAAgBR,GAC1CS,EAAwB,GAAcY,EAAgBnD,GAAa8B,EAAe,YAClFrG,EAAOuE,GAAa8B,EAAe,QAAQ,GAC3CuB,EAAiB,CACnB5H,KAAM,GAAgBA,IAEpBhrB,EAAQ2kB,EAAM8N,EAAkBZ,EAAyBe,GACzDpQ,EAAoB,GAA6B+M,GAAa8B,EAAe,sBAE7Ez8B,OAAOkwB,KAAKtC,GAAmB3yB,SACjCmQ,EAAQ2kB,EAAM3kB,EAAO,CACnBwiB,kBAAmBA,KAIvB,IAAIwM,EAAcoC,GAAsBC,GACpC/B,EAAkBC,GAAa8B,EAAe,kBAC9CU,EAA2BpN,EAAMgO,EAAmB3D,GACxD,OAAOhK,EAAQsK,EAAgB31B,IAAIi4B,GAAgB5xB,EAAO8xB,EAAuBC,OA6BjF,GAAmB,SAA0Bc,EAAeC,GAC9D,OAAO,SAAUC,EAAQ/jC,GACvB,IAAI0jC,EAAiB,GAAcI,EAAavD,GAAawD,EAAQ,YACjEC,EAAY,GAAgBD,GAC5BE,EAAiBhU,SAAS+T,EAAU55B,GAAI,IAExC6uB,EAAc,IAAOzL,MAAMyW,GAAkBjkC,EAAQikC,EACrDR,EAAmB9N,EAAMkO,EAAe,CAC1C5K,YAAaA,IAEXiL,EAAiB3D,GAAawD,EAAQ,iBACtCJ,EAAoBvB,GAAsB2B,GAC9C,OAAO/N,EAAQkO,EAAev5B,IAAI64B,GAAkBC,EAAkBC,EAAgBC,OAqBtFQ,GAAoB,SAA2BC,EAAKjjC,QACtC,IAAZA,IACFA,EAAU,IAGZ,IAAIkjC,EAAWljC,EACXmjC,EAAuBD,EAASE,YAChCA,OAAuC,IAAzBD,EAAkC,GAAKA,EACrDE,EAAeH,EAASvM,IACxBA,OAAuB,IAAjB0M,EAA0B92B,KAAK6qB,MAAQiM,EAC7CC,EAAwBJ,EAAStM,aACjCA,OAAyC,IAA1B0M,EAAmC,EAAIA,EACtDC,EAAUnE,GAAa6D,EAAK,UAEhC,IAAKM,EAAQ7jC,OACX,MAAM,IAAIW,MAAM,EAAO60B,0BAGzB,IAAIwN,EAAgB,GAAgBO,GAChCN,EAAc,GAAc,CAACS,GAAchE,GAAa6D,EAAK,YAIjE,OAHAP,EAAclM,eAAiBkM,EAAchC,2BAA6B,EAC1EgC,EAAc/L,IAAMA,EACpB+L,EAAc9L,aAAeA,EACtB/B,EAAQ0O,EAAQ/5B,IAAI,GAAiBk5B,EAAeC,MAGzD,GAAiB,SAAwBa,GAC3C,GAAuB,KAAnBA,EACF,MAAM,IAAInjC,MAAM,EAAO80B,qBAGzB,IAAIsO,EAAS,IAAI,eACbt0B,EAAMs0B,EAAOj1B,gBAAgBg1B,EAAgB,mBAC7CP,EAAM9zB,GAAuC,QAAhCA,EAAIrL,gBAAgB4M,QAAoBvB,EAAIrL,gBAAkB,KAE/E,IAAKm/B,GAAOA,GAAOA,EAAIvZ,qBAAqB,eAAehqB,OAAS,EAClE,MAAM,IAAIW,MAAM,EAAO+0B,kBAGzB,OAAO6N,GAYLS,GAAuB,SAA8BT,GACvD,IAAIU,EAAgBvE,GAAa6D,EAAK,aAAa,GAEnD,IAAKU,EACH,OAAO,KAGT,IAAI3d,EAAa,GAAgB2d,GAEjC,OAAQ3d,EAAWsM,aACjB,IAAK,mCACL,IAAK,mCACHtM,EAAWhkB,OAAS,OACpB,MAEF,IAAK,qCACL,IAAK,kCACL,IAAK,qCACL,IAAK,kCACHgkB,EAAWhkB,OAAS,MACpB,MAEF,IAAK,gCACL,IAAK,gCACHgkB,EAAWhkB,OAAS,SACpBgkB,EAAW9mB,MAAQqN,KAAKlL,MAAM2kB,EAAW9mB,OACzC,MAEF,IAAK,kCACL,IAAK,6BACL,IAAK,8BACL,QACE,MAAM,IAAImB,MAAM,EAAOm1B,+BAG3B,OAAOxP,GAKL3kB,GAAQ,SAAemiC,EAAgBxjC,GAKzC,YAJgB,IAAZA,IACFA,EAAU,IAGLu7B,GAAO2D,GAAY8D,GAAkB,GAAeQ,GAAiBxjC,IAAWA,EAAQg6B,cAY7F4J,GAAiB,SAAwBJ,GAC3C,OAAOE,GAAqB,GAAeF,K,gGC3wD7C,SAASK,GAAMC,GACb,OAAOA,EAAO54B,SAAS,EAAG44B,EAAOj/B,WAAai/B,EAAOA,EAAOj/B,WAAa,IAG3E,ICpCIk/B,GAAiB,SAAUxwB,EAAUF,GACvC,KAAME,aAAoBF,GACxB,MAAM,IAAI2wB,UAAU,sCAIpBC,GAAc,WAChB,SAASC,EAAiBlzB,EAAQmzB,GAChC,IAAK,IAAI1kC,EAAI,EAAGA,EAAI0kC,EAAMzkC,OAAQD,IAAK,CACrC,IAAI2kC,EAAaD,EAAM1kC,GACvB2kC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD9/B,OAAO6lB,eAAetZ,EAAQozB,EAAWrlC,IAAKqlC,IAIlD,OAAO,SAAU/wB,EAAamxB,EAAYC,GAGxC,OAFID,GAAYN,EAAiB7wB,EAAY7O,UAAWggC,GACpDC,GAAaP,EAAiB7wB,EAAaoxB,GACxCpxB,GAdO,GA0Bd,GAAW,SAAU/O,EAAUC,GACjC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIy/B,UAAU,kEAAoEz/B,GAG1FD,EAASE,UAAYC,OAAOC,OAAOH,GAAcA,EAAWC,UAAW,CACrEG,YAAa,CACXzF,MAAOoF,EACP+/B,YAAY,EACZE,UAAU,EACVD,cAAc,KAGd//B,IAAYE,OAAOqO,eAAiBrO,OAAOqO,eAAexO,EAAUC,GAAcD,EAASM,UAAYL,IAazG,GAA4B,SAAU4oB,EAAM1lB,GAC9C,IAAK0lB,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAO3lB,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B0lB,EAAP1lB,GA+CxEi9B,GAAa,WACf,IAAIC,EAAS,CAAC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,GAAI,KACjDC,EAAWD,EAAO,GAClBE,EAAWF,EAAO,GAClBG,EAAOF,EAAS,GAChBG,EAAUF,EAAS,GACnBplC,OAAI,EACJs1B,OAAI,EACJiQ,OAAO,EACP/Y,EAAI,GACJgZ,EAAK,GACLC,OAAK,EACLC,OAAK,EACLC,OAAK,EACLpa,OAAI,EACJqa,OAAO,EACPC,OAAO,EAGX,IAAK7lC,EAAI,EAAGA,EAAI,IAAKA,IACnBwlC,GAAIhZ,EAAExsB,GAAKA,GAAK,EAAe,KAAVA,GAAK,IAAYA,GAAKA,EAG7C,IAAKs1B,EAAIiQ,EAAO,GAAIF,EAAK/P,GAAIA,GAAKmQ,GAAM,EAAGF,EAAOC,EAAGD,IAAS,EAY5D,IAVAha,EAAIga,EAAOA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EACvDha,EAAIA,GAAK,EAAQ,IAAJA,EAAU,GACvB8Z,EAAK/P,GAAK/J,EACV+Z,EAAQ/Z,GAAK+J,EAGbqQ,EAAKnZ,EAAEkZ,EAAKlZ,EAAEiZ,EAAKjZ,EAAE8I,KACrBuQ,EAAY,SAALF,EAAsB,MAALD,EAAoB,IAALD,EAAiB,SAAJnQ,EACpDsQ,EAAc,IAAPpZ,EAAEjB,GAAiB,SAAJA,EAEjBvrB,EAAI,EAAGA,EAAI,EAAGA,IACjBmlC,EAASnlC,GAAGs1B,GAAKsQ,EAAOA,GAAQ,GAAKA,IAAS,EAC9CR,EAASplC,GAAGurB,GAAKsa,EAAOA,GAAQ,GAAKA,IAAS,EAKlD,IAAK7lC,EAAI,EAAGA,EAAI,EAAGA,IACjBmlC,EAASnlC,GAAKmlC,EAASnlC,GAAGT,MAAM,GAChC6lC,EAASplC,GAAKolC,EAASplC,GAAGT,MAAM,GAElC,OAAO2lC,GAELY,GAAY,KAUZC,GAAM,WACR,SAASA,EAAIzmC,GACXglC,GAAer8B,KAAM89B,GAgBhBD,KACHA,GAAYb,MAGdh9B,KAAK+9B,QAAU,CAAC,CAACF,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,SAAU,CAACumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,QAASumC,GAAU,GAAG,GAAGvmC,UACpQ,IAAIS,OAAI,EACJimC,OAAI,EACJ9/B,OAAM,EACN+/B,OAAS,EACTC,OAAS,EACTd,EAAOp9B,KAAK+9B,QAAQ,GAAG,GACvBZ,EAAWn9B,KAAK+9B,QAAQ,GACxBI,EAAS9mC,EAAIW,OACbomC,EAAO,EAEX,GAAe,IAAXD,GAA2B,IAAXA,GAA2B,IAAXA,EAClC,MAAM,IAAIxlC,MAAM,wBAQlB,IALAslC,EAAS5mC,EAAIC,MAAM,GACnB4mC,EAAS,GACTl+B,KAAKopB,KAAO,CAAC6U,EAAQC,GAGhBnmC,EAAIomC,EAAQpmC,EAAI,EAAIomC,EAAS,GAAIpmC,IACpCmG,EAAM+/B,EAAOlmC,EAAI,IAGbA,EAAIomC,IAAW,GAAgB,IAAXA,GAAgBpmC,EAAIomC,IAAW,KACrDjgC,EAAMk/B,EAAKl/B,IAAQ,KAAO,GAAKk/B,EAAKl/B,GAAO,GAAK,MAAQ,GAAKk/B,EAAKl/B,GAAO,EAAI,MAAQ,EAAIk/B,EAAW,IAANl/B,GAG1FnG,EAAIomC,IAAW,IACjBjgC,EAAMA,GAAO,EAAIA,IAAQ,GAAKkgC,GAAQ,GACtCA,EAAOA,GAAQ,EAAkB,KAAbA,GAAQ,KAIhCH,EAAOlmC,GAAKkmC,EAAOlmC,EAAIomC,GAAUjgC,EAInC,IAAK8/B,EAAI,EAAGjmC,EAAGimC,IAAKjmC,IAClBmG,EAAM+/B,EAAW,EAAJD,EAAQjmC,EAAIA,EAAI,GAE3BmmC,EAAOF,GADLjmC,GAAK,GAAKimC,EAAI,EACJ9/B,EAEAi/B,EAAS,GAAGC,EAAKl/B,IAAQ,KAAOi/B,EAAS,GAAGC,EAAKl/B,GAAO,GAAK,MAAQi/B,EAAS,GAAGC,EAAKl/B,GAAO,EAAI,MAAQi/B,EAAS,GAAGC,EAAW,IAANl/B,IA6D5I,OAzCA4/B,EAAIhhC,UAAUuhC,QAAU,SAAiBC,EAAYC,EAAYC,EAAYC,EAAYC,EAAK/wB,GAC5F,IAAItW,EAAM2I,KAAKopB,KAAK,GAEhB1d,EAAI4yB,EAAajnC,EAAI,GACrBwa,EAAI4sB,EAAapnC,EAAI,GACrB+jB,EAAIojB,EAAannC,EAAI,GACrBktB,EAAIga,EAAalnC,EAAI,GACrBsnC,OAAK,EACLC,OAAK,EACLC,OAAK,EAGLC,EAAeznC,EAAIW,OAAS,EAAI,EAChCD,OAAI,EACJgnC,EAAS,EACTC,EAAQh/B,KAAK+9B,QAAQ,GAGrBkB,EAASD,EAAM,GACfE,EAASF,EAAM,GACfG,EAASH,EAAM,GACfI,EAASJ,EAAM,GACf5B,EAAO4B,EAAM,GAGjB,IAAKjnC,EAAI,EAAGA,EAAI+mC,EAAc/mC,IAC5B4mC,EAAKM,EAAOvzB,IAAM,IAAMwzB,EAAOrtB,GAAK,GAAK,KAAOstB,EAAO/jB,GAAK,EAAI,KAAOgkB,EAAW,IAAJ7a,GAAWltB,EAAI0nC,GAC7FH,EAAKK,EAAOptB,IAAM,IAAMqtB,EAAO9jB,GAAK,GAAK,KAAO+jB,EAAO5a,GAAK,EAAI,KAAO6a,EAAW,IAAJ1zB,GAAWrU,EAAI0nC,EAAS,GACtGF,EAAKI,EAAO7jB,IAAM,IAAM8jB,EAAO3a,GAAK,GAAK,KAAO4a,EAAOzzB,GAAK,EAAI,KAAO0zB,EAAW,IAAJvtB,GAAWxa,EAAI0nC,EAAS,GACtGxa,EAAI0a,EAAO1a,IAAM,IAAM2a,EAAOxzB,GAAK,GAAK,KAAOyzB,EAAOttB,GAAK,EAAI,KAAOutB,EAAW,IAAJhkB,GAAW/jB,EAAI0nC,EAAS,GACrGA,GAAU,EACVrzB,EAAIizB,EAAG9sB,EAAI+sB,EAAGxjB,EAAIyjB,EAIpB,IAAK9mC,EAAI,EAAGA,EAAI,EAAGA,IACjB2mC,GAAK,GAAK3mC,GAAK4V,GAAUyvB,EAAK1xB,IAAM,KAAO,GAAK0xB,EAAKvrB,GAAK,GAAK,MAAQ,GAAKurB,EAAKhiB,GAAK,EAAI,MAAQ,EAAIgiB,EAAS,IAAJ7Y,GAAWltB,EAAI0nC,KAC1HJ,EAAKjzB,EAAEA,EAAImG,EAAEA,EAAIuJ,EAAEA,EAAImJ,EAAEA,EAAIoa,GAI1Bb,EA9HC,GAyIN,GAAS,WACX,SAAS7+B,IACPo9B,GAAer8B,KAAMf,GAErBe,KAAKmP,UAAY,GAmGnB,OAvFAlQ,EAAOnC,UAAUsS,GAAK,SAAYzP,EAAM0P,GACjCrP,KAAKmP,UAAUxP,KAClBK,KAAKmP,UAAUxP,GAAQ,IAEzBK,KAAKmP,UAAUxP,GAAMhI,KAAK0X,IAa5BpQ,EAAOnC,UAAUwS,IAAM,SAAa3P,EAAM0P,GACxC,IAAKrP,KAAKmP,UAAUxP,GAClB,OAAO,EAGT,IAAIxI,EAAQ6I,KAAKmP,UAAUxP,GAAMvI,QAAQiY,GAGzC,OADArP,KAAKmP,UAAUxP,GAAM4P,OAAOpY,EAAO,GAC5BA,GAAS,GAWlB8H,EAAOnC,UAAUsD,QAAU,SAAiBT,GAC1C,IAAI6P,EAAYxP,KAAKmP,UAAUxP,GAE/B,GAAK6P,EAQL,GAAyB,IAArB5F,UAAU5R,OAGZ,IAFA,IAAIA,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EAC5ByX,EAAUzX,GAAGgI,KAAKC,KAAM4J,UAAU,SAMpC,IAHA,IAAI4B,EAAO/T,MAAMqF,UAAUxF,MAAMyI,KAAK6J,UAAW,GAC7Cy1B,EAAU7vB,EAAUxX,OAEfsnC,EAAK,EAAGA,EAAKD,IAAWC,EAC/B9vB,EAAU8vB,GAAIz9B,MAAM7B,KAAMwL,IAUhCvM,EAAOnC,UAAU2S,QAAU,WACzBzP,KAAKmP,UAAY,IAYnBlQ,EAAOnC,UAAU4S,KAAO,SAAcC,GACpC3P,KAAKoP,GAAG,QAAQ,SAAUvU,GACxB8U,EAAYhY,KAAKkD,OAIdoE,EAvGI,GAqHTsgC,GAAc,SAAU1Z,GAG1B,SAAS0Z,IACPlD,GAAer8B,KAAMu/B,GAErB,IAAIzZ,EAAQ,GAA0B9lB,KAAM6lB,EAAQ9lB,KAAKC,KAAM,KAK/D,OAHA8lB,EAAM0Z,KAAO,GACb1Z,EAAM2Z,MAAQ,EACd3Z,EAAM4Z,SAAW,KACV5Z,EAiCT,OA3CA,GAASyZ,EAAa1Z,GAoBtB0Z,EAAYziC,UAAU6iC,YAAc,WAClC3/B,KAAKw/B,KAAKI,OAAV5/B,GACIA,KAAKw/B,KAAKxnC,OACZgI,KAAK0/B,SAAWvmC,WAAW6G,KAAK2/B,YAAY/zB,KAAK5L,MAAOA,KAAKy/B,OAE7Dz/B,KAAK0/B,SAAW,MAWpBH,EAAYziC,UAAUnF,KAAO,SAAckoC,GACzC7/B,KAAKw/B,KAAK7nC,KAAKkoC,GACV7/B,KAAK0/B,WACR1/B,KAAK0/B,SAAWvmC,WAAW6G,KAAK2/B,YAAY/zB,KAAK5L,MAAOA,KAAKy/B,SAI1DF,EA5CS,CA6ChB,IAaEO,GAAO,SAAcC,GACvB,OAAOA,GAAQ,IAAa,MAAPA,IAAkB,GAAY,SAAPA,IAAoB,EAAIA,IAAS,IAgB3E1B,GAAU,SAAiB2B,EAAW3oC,EAAK4oC,GAE7C,IAAIC,EAAc,IAAIC,WAAWH,EAAUt8B,OAAQs8B,EAAUr8B,WAAYq8B,EAAU7iC,YAAc,GAE7FijC,EAAW,IAAItC,GAAIrmC,MAAMqF,UAAUxF,MAAMyI,KAAK1I,IAG9CgpC,EAAY,IAAI5iC,WAAWuiC,EAAU7iC,YACrCmjC,EAAc,IAAIH,WAAWE,EAAU38B,QAIvC68B,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRpC,OAAa,EACbC,OAAa,EACbC,OAAa,EACbC,OAAa,EAGbkC,OAAS,EAWb,IAPAJ,EAAQN,EAAW,GACnBO,EAAQP,EAAW,GACnBQ,EAAQR,EAAW,GACnBS,EAAQT,EAAW,GAIdU,EAAS,EAAGA,EAAST,EAAYloC,OAAQ2oC,GAAU,EAGtDrC,EAAawB,GAAKI,EAAYS,IAC9BpC,EAAauB,GAAKI,EAAYS,EAAS,IACvCnC,EAAasB,GAAKI,EAAYS,EAAS,IACvClC,EAAaqB,GAAKI,EAAYS,EAAS,IAGvCP,EAAS/B,QAAQC,EAAYC,EAAYC,EAAYC,EAAY6B,EAAaK,GAI9EL,EAAYK,GAAUb,GAAKQ,EAAYK,GAAUJ,GACjDD,EAAYK,EAAS,GAAKb,GAAKQ,EAAYK,EAAS,GAAKH,GACzDF,EAAYK,EAAS,GAAKb,GAAKQ,EAAYK,EAAS,GAAKF,GACzDH,EAAYK,EAAS,GAAKb,GAAKQ,EAAYK,EAAS,GAAKD,GAGzDH,EAAQjC,EACRkC,EAAQjC,EACRkC,EAAQjC,EACRkC,EAAQjC,EAGV,OAAO4B,GAeL,GAAY,WACd,SAASO,EAAUZ,EAAW3oC,EAAK4oC,EAAYY,GAC7CxE,GAAer8B,KAAM4gC,GAErB,IAAIE,EAAOF,EAAUG,KACjBb,EAAc,IAAIC,WAAWH,EAAUt8B,QACvC28B,EAAY,IAAI5iC,WAAWuiC,EAAU7iC,YACrCpF,EAAI,EAMR,IAJAiI,KAAKghC,aAAe,IAAIzB,GAGxBv/B,KAAKghC,aAAarpC,KAAKqI,KAAKihC,cAAcf,EAAY18B,SAASzL,EAAGA,EAAI+oC,GAAOzpC,EAAK4oC,EAAYI,IACzFtoC,EAAI+oC,EAAM/oC,EAAImoC,EAAYloC,OAAQD,GAAK+oC,EAC1Cb,EAAa,IAAI7X,YAAY,CAAC0X,GAAKI,EAAYnoC,EAAI,IAAK+nC,GAAKI,EAAYnoC,EAAI,IAAK+nC,GAAKI,EAAYnoC,EAAI,IAAK+nC,GAAKI,EAAYnoC,EAAI,MACjIiI,KAAKghC,aAAarpC,KAAKqI,KAAKihC,cAAcf,EAAY18B,SAASzL,EAAGA,EAAI+oC,GAAOzpC,EAAK4oC,EAAYI,IAGhGrgC,KAAKghC,aAAarpC,MAAK,WAErBkpC,EAAK,KAAM1E,GAAMkE,OA6BrB,OAfAO,EAAU9jC,UAAUmkC,cAAgB,SAAuBjB,EAAW3oC,EAAK4oC,EAAYI,GACrF,OAAO,WACL,IAAIa,EAAQ7C,GAAQ2B,EAAW3oC,EAAK4oC,GAEpCI,EAAUrd,IAAIke,EAAOlB,EAAUr8B,cAInC44B,GAAYqE,EAAW,KAAM,CAAC,CAC5BvpC,IAAK,OACLyrB,IAAK,WAEH,OAAO,SAGJ8d,EAjDO,GC1hBZ,GAAU,QAOV,GAAU,GAYV,GAAmB,SAA0B32B,EAAM4a,GACrD,OAAO,SAAUllB,EAAMwhC,EAAO31B,GAC5B,IAAI41B,EAAMvc,EAAIwc,OAAOF,GACjBG,EAAY,IAAIpb,OAAO,KAAOkb,EAAM,MAUxC,GARa,QAATzhC,GAEF6L,EAAK+1B,QAAQ5hC,EAAKjD,cAAgB,KAIpC8O,EAAK+1B,QAAQt3B,EAAO,KAEhB,GAAS,CACX,GAAQtS,KAAK,GAAGiK,OAAO4J,IAEvB,IAAI+D,EAAS,GAAQvX,OAAS,IAC9B,GAAQuX,OAAO,EAAGA,EAAS,EAAIA,EAAS,GAK1C,GAAK,IAASvE,QAAd,CAOA,IAAIvF,EAAK,IAASuF,QAAQrL,GAErB8F,GAAe,UAAT9F,IAGT8F,EAAK,IAASuF,QAAQw2B,MAAQ,IAASx2B,QAAQ6Z,KAK5Cpf,GAAO27B,GAAQE,EAAUh9B,KAAK3E,IAInC8F,EAAGhO,MAAMC,QAAQ8T,GAAQ,QAAU,QAAQ,IAASR,QAASQ,MAIjE,SAASi2B,GAAax3B,GAEpB,IAEIy3B,EAFAP,EAAQ,OAyBRtc,EAAM,WACR,IAAK,IAAIkI,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzBsY,EAAU,MAAOP,EAAO31B,IA0L1B,OAtLAk2B,EAAY,GAAiBz3B,EAAM4a,GAenCA,EAAI4c,aAAe,SAAUE,GAC3B,OAAOF,GAAax3B,EAAO,KAAO03B,IAuBpC9c,EAAIwc,OAAS,CACXO,IAAK,uBACLtyB,IAAK,GACLuyB,MAAO,uBACPL,KAAM,iBACNv2B,KAAM,aACNvD,MAAO,QACP6jB,QAAS4V,GAeXtc,EAAIsc,MAAQ,SAAUC,GACpB,GAAmB,kBAARA,EAAkB,CAC3B,IAAKvc,EAAIwc,OAAOlpC,eAAeipC,GAC7B,MAAM,IAAIzoC,MAAM,IAAOyoC,EAAM,8BAG/BD,EAAQC,EAGV,OAAOD,GAaTtc,EAAIid,QAAU,WACZ,OAAO,GAAU,GAAGlgC,OAAO,IAAW,IAaxCijB,EAAIid,QAAQrQ,OAAS,SAAUsQ,GAC7B,OAAQ,IAAW,IAAItQ,QAAO,SAAUuQ,GAEtC,OAAO,IAAI9b,OAAO,KAAO6b,EAAQ,MAAMz9B,KAAK09B,EAAY,QAS5Dnd,EAAIid,QAAQG,MAAQ,WACd,KACF,GAAQjqC,OAAS,IAQrB6sB,EAAIid,QAAQI,QAAU,WACJ,OAAZ,KACF,GAAQlqC,OAAS,EACjB,GAAU,OAQd6sB,EAAIid,QAAQK,OAAS,WACH,OAAZ,KACF,GAAU,KAWdtd,EAAInd,MAAQ,WACV,IAAK,IAAI06B,EAAQx4B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM2qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF72B,EAAK62B,GAASz4B,UAAUy4B,GAG1B,OAAOX,EAAU,QAASP,EAAO31B,IAUnCqZ,EAAI5Z,KAAO,WACT,IAAK,IAAIq3B,EAAQ14B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM6qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF/2B,EAAK+2B,GAAS34B,UAAU24B,GAG1B,OAAOb,EAAU,OAAQP,EAAO31B,IAWlCqZ,EAAIgd,MAAQ,WACV,IAAK,IAAIW,EAAQ54B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM+qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFj3B,EAAKi3B,GAAS74B,UAAU64B,GAG1B,OAAOf,EAAU,QAASP,EAAO31B,IAG5BqZ,EAOT,IAAI,GAAM4c,GAAa,WACnBiB,GAAiB,GAAIjB,aAgCrB,GAAW1kC,OAAOD,UAAUgI,SAc5BmoB,GAAO,SAAc7N,GACvB,OAAO,GAASA,GAAUriB,OAAOkwB,KAAK7N,GAAU,IAalD,SAASujB,GAAKvjB,EAAQ3Z,GACpBwnB,GAAK7N,GAAQnoB,SAAQ,SAAUI,GAC7B,OAAOoO,EAAG2Z,EAAO/nB,GAAMA,MAqB3B,SAAS8J,GAAOie,EAAQ3Z,EAAIm9B,GAK1B,YAJgB,IAAZA,IACFA,EAAU,GAGL3V,GAAK7N,GAAQje,QAAO,SAAU0hC,EAAOxrC,GAC1C,OAAOoO,EAAGo9B,EAAOzjB,EAAO/nB,GAAMA,KAC7BurC,GAUL,SAAS,GAAOt5B,GACd,IAAK,IAAIyjB,EAAOnjB,UAAU5R,OAAQ8qC,EAAU,IAAIrrC,MAAMs1B,EAAO,EAAIA,EAAO,EAAI,GAAI3D,EAAO,EAAGA,EAAO2D,EAAM3D,IACrG0Z,EAAQ1Z,EAAO,GAAKxf,UAAUwf,GAGhC,OAAIrsB,OAAOkT,OACF,IAASpO,WAAM,EAAQ,CAACyH,GAAQ1H,OAAOkhC,KAGhDA,EAAQ7rC,SAAQ,SAAU8P,GACnBA,GAIL47B,GAAK57B,GAAQ,SAAUvP,EAAOH,GAC5BiS,EAAOjS,GAAOG,QAGX8R,GAaT,SAAS,GAAS9R,GAChB,QAASA,GAA0B,kBAAVA,EAU3B,SAASurC,GAAQvrC,GACf,OAAO,GAASA,IAAmC,oBAAzB,GAASuI,KAAKvI,IAAgCA,EAAMyF,cAAgBF,OAwBhG,SAASimC,GAAc56B,EAAI66B,GACzB,IAAK76B,IAAO66B,EACV,MAAO,GAGT,GAAyC,oBAA9B,IAASC,iBAAiC,CACnD,IAAIC,EAAqB,IAASD,iBAAiB96B,GACnD,OAAO+6B,EAAqBA,EAAmBC,iBAAiBH,IAASE,EAAmBF,GAAQ,GAGtG,MAAO,GAmBT,SAASI,GAAiBtL,GAMxB,MAAsB,kBAARA,GAAoBuL,QAAQvL,EAAIhhC,QAehD,SAASwsC,GAAkBxL,GAEzB,GAAIA,EAAI3gC,QAAQ,MAAQ,EACtB,MAAM,IAAIuB,MAAM,2CAgBpB,SAAS6qC,GAAYC,GACnB,OAAO,IAAIvd,OAAO,UAAYud,EAAY,WAU5C,SAASC,KAEP,OAAO,MAAa,IAASC,SAY/B,SAASC,GAAKpsC,GACZ,OAAO,GAASA,IAA6B,IAAnBA,EAAMklB,SAUlC,SAASmnB,KAGP,IACE,OAAO,IAASC,SAAW,IAASre,KACpC,MAAO4H,GACP,OAAO,GAcX,SAAS0W,GAAczpC,GACrB,OAAO,SAAU0pC,EAAUC,GACzB,IAAKZ,GAAiBW,GACpB,OAAO,IAAS1pC,GAAQ,MAGtB+oC,GAAiBY,KACnBA,EAAU,IAASC,cAAcD,IAGnC,IAAIE,EAAMP,GAAKK,GAAWA,EAAU,IACpC,OAAOE,EAAI7pC,IAAW6pC,EAAI7pC,GAAQ0pC,IAuBtC,SAAS,GAASh7B,EAASo7B,EAAY9lB,EAAYjJ,QACjC,IAAZrM,IACFA,EAAU,YAGO,IAAfo7B,IACFA,EAAa,SAGI,IAAf9lB,IACFA,EAAa,IAGf,IAAIlW,EAAK,IAAS0Y,cAAc9X,GAwBhC,OAvBAjM,OAAOsnC,oBAAoBD,GAAYntC,SAAQ,SAAUqtC,GACvD,IAAIC,EAAMH,EAAWE,IAIc,IAA/BA,EAASltC,QAAQ,UAAgC,SAAbktC,GAAoC,SAAbA,GAC7D,GAAIr5B,KAAK,4KAAyLq5B,EAAW,OAASC,EAAM,KAC5Nn8B,EAAGkZ,aAAagjB,EAAUC,IAEJ,gBAAbD,EACTzM,GAAYzvB,EAAIm8B,GACPn8B,EAAGk8B,KAAcC,IAC1Bn8B,EAAGk8B,GAAYC,MAGnBxnC,OAAOsnC,oBAAoB/lB,GAAYrnB,SAAQ,SAAUutC,GACvDp8B,EAAGkZ,aAAakjB,EAAUlmB,EAAWkmB,OAGnCnvB,GACFovB,GAAcr8B,EAAIiN,GAGbjN,EAeT,SAASyvB,GAAYzvB,EAAIgL,GAOvB,MAN8B,qBAAnBhL,EAAGyvB,YACZzvB,EAAGs8B,UAAYtxB,EAEfhL,EAAGyvB,YAAczkB,EAGZhL,EAYT,SAASu8B,GAAU3oB,EAAO8nB,GACpBA,EAAOxoB,WACTwoB,EAAO9jB,aAAahE,EAAO8nB,EAAOxoB,YAElCwoB,EAAOl9B,YAAYoV,GAmBvB,SAAS4oB,GAASjN,EAASkN,GAGzB,OAFAtB,GAAkBsB,GAEdlN,EAAQmN,UACHnN,EAAQmN,UAAUC,SAASF,GAG7BrB,GAAYqB,GAAcvgC,KAAKqzB,EAAQ8L,WAehD,SAASuB,GAASrN,EAASsN,GAQzB,OAPItN,EAAQmN,UACVnN,EAAQmN,UAAUI,IAAID,GAEZL,GAASjN,EAASsN,KAC5BtN,EAAQ8L,WAAa9L,EAAQ8L,UAAY,IAAMwB,GAAYluC,QAGtD4gC,EAeT,SAASwN,GAAYxN,EAASyN,GAU5B,OATIzN,EAAQmN,UACVnN,EAAQmN,UAAUnpB,OAAOypB,IAEzB7B,GAAkB6B,GAClBzN,EAAQ8L,UAAY9L,EAAQ8L,UAAUzsC,MAAM,OAAOy6B,QAAO,SAAUrW,GAClE,OAAOA,IAAMgqB,KACZxmC,KAAK,MAGH+4B,EAmCT,SAAS0N,GAAY1N,EAAS2N,EAAeC,GAI3C,IAAIC,EAAMZ,GAASjN,EAAS2N,GAY5B,GAVyB,oBAAdC,IACTA,EAAYA,EAAU5N,EAAS2N,IAGR,mBAAdC,IACTA,GAAaC,GAKXD,IAAcC,EAUlB,OANID,EACFP,GAASrN,EAAS2N,GAElBH,GAAYxN,EAAS2N,GAGhB3N,EAYT,SAAS8N,GAAcr9B,EAAIkW,GACzBvhB,OAAOsnC,oBAAoB/lB,GAAYrnB,SAAQ,SAAUutC,GACvD,IAAIkB,EAAYpnB,EAAWkmB,GAET,OAAdkB,GAA2C,qBAAdA,IAA2C,IAAdA,EAC5Dt9B,EAAGmZ,gBAAgBijB,GAEnBp8B,EAAGkZ,aAAakjB,GAAwB,IAAdkB,EAAqB,GAAKA,MAkB1D,SAASC,GAAc1b,GACrB,IAAI/xB,EAAM,GAIN0tC,EAAgB,kEAEpB,GAAI3b,GAAOA,EAAI3L,YAAc2L,EAAI3L,WAAWtmB,OAAS,EAGnD,IAFA,IAAImQ,EAAQ8hB,EAAI3L,WAEPvmB,EAAIoQ,EAAMnQ,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC1C,IAAIysC,EAAWr8B,EAAMpQ,GAAGkS,KACpB47B,EAAU19B,EAAMpQ,GAAGP,MAGM,mBAAlByyB,EAAIua,KAA4E,IAAjDoB,EAAcxuC,QAAQ,IAAMotC,EAAW,OAI/EqB,EAAsB,OAAZA,GAGZ3tC,EAAIssC,GAAYqB,EAIpB,OAAO3tC,EAeT,SAAS2oB,GAAazY,EAAI09B,GACxB,OAAO19B,EAAGyY,aAAailB,GAezB,SAASxkB,GAAalZ,EAAI09B,EAAWtuC,GACnC4Q,EAAGkZ,aAAawkB,EAAWtuC,GAY7B,SAAS+pB,GAAgBnZ,EAAI09B,GAC3B19B,EAAGmZ,gBAAgBukB,GAMrB,SAASC,KACP,IAAShtC,KAAKitC,QAEd,IAASC,cAAgB,WACvB,OAAO,GAOX,SAASC,KACP,IAASD,cAAgB,WACvB,OAAO,GAuBX,SAASE,GAAsB/9B,GAC7B,GAAIA,GAAMA,EAAG+9B,uBAAyB/9B,EAAGa,WAAY,CACnD,IAAIm9B,EAAOh+B,EAAG+9B,wBACVrvC,EAAS,GAeb,MAdA,CAAC,SAAU,SAAU,OAAQ,QAAS,MAAO,SAASG,SAAQ,SAAUi2B,QACtD5zB,IAAZ8sC,EAAKlZ,KACPp2B,EAAOo2B,GAAKkZ,EAAKlZ,OAIhBp2B,EAAOixB,SACVjxB,EAAOixB,OAASb,WAAW8b,GAAc56B,EAAI,YAG1CtR,EAAOgxB,QACVhxB,EAAOgxB,MAAQZ,WAAW8b,GAAc56B,EAAI,WAGvCtR,GA6BX,SAASuvC,GAAaj+B,GACpB,IAAIk+B,EAMJ,GAJIl+B,EAAG+9B,uBAAyB/9B,EAAGa,aACjCq9B,EAAMl+B,EAAG+9B,0BAGNG,EACH,MAAO,CACLC,KAAM,EACNC,IAAK,GAIT,IAAIC,EAAQ,IAASrqC,gBACjBrD,EAAO,IAASA,KAChB2tC,EAAaD,EAAMC,YAAc3tC,EAAK2tC,YAAc,EACpDC,EAAa,IAASC,aAAe7tC,EAAK4tC,WAC1CJ,EAAOD,EAAIC,KAAOI,EAAaD,EAC/BG,EAAYJ,EAAMI,WAAa9tC,EAAK8tC,WAAa,EACjDC,EAAY,IAASC,aAAehuC,EAAK+tC,UACzCN,EAAMF,EAAIE,IAAMM,EAAYD,EAEhC,MAAO,CACLN,KAAM/mC,KAAKwnC,MAAMT,GACjBC,IAAKhnC,KAAKwnC,MAAMR,IA+BpB,SAASS,GAAmB7+B,EAAIoI,GAC9B,IAAI3K,EAAW,GACXygC,EAAMD,GAAaj+B,GACnB8+B,EAAO9+B,EAAG++B,YACVC,EAAOh/B,EAAGi/B,aACVC,EAAOhB,EAAIE,IACXe,EAAOjB,EAAIC,KACXiB,EAAQh3B,EAAMg3B,MACdC,EAAQj3B,EAAMi3B,MASlB,OAPIj3B,EAAMk3B,iBACRD,EAAQj3B,EAAMk3B,eAAe,GAAGD,MAChCD,EAAQh3B,EAAMk3B,eAAe,GAAGF,OAGlC3hC,EAASynB,EAAI9tB,KAAKywB,IAAI,EAAGzwB,KAAK8C,IAAI,GAAIglC,EAAOE,EAAQJ,GAAQA,IAC7DvhC,EAASwnB,EAAI7tB,KAAKywB,IAAI,EAAGzwB,KAAK8C,IAAI,GAAImlC,EAAQF,GAAQL,IAC/CrhC,EAYT,SAAS8hC,GAAWnwC,GAClB,OAAO,GAASA,IAA6B,IAAnBA,EAAMklB,SAYlC,SAASkrB,GAAQx/B,GACf,MAAOA,EAAGkT,WACRlT,EAAGqU,YAAYrU,EAAGkT,YAGpB,OAAOlT,EAmCT,SAASy/B,GAAiBxyB,GASxB,MANuB,oBAAZA,IACTA,EAAUA,MAKJ5d,MAAMC,QAAQ2d,GAAWA,EAAU,CAACA,IAAUvT,KAAI,SAAUtK,GAOlE,MAJqB,oBAAVA,IACTA,EAAQA,KAGNosC,GAAKpsC,IAAUmwC,GAAWnwC,GACrBA,EAGY,kBAAVA,GAAsB,KAAK8M,KAAK9M,GAClC,IAASuS,eAAevS,QADjC,KAGCi6B,QAAO,SAAUj6B,GAClB,OAAOA,KAgBX,SAASitC,GAAcr8B,EAAIiN,GAIzB,OAHAwyB,GAAiBxyB,GAASpe,SAAQ,SAAU6O,GAC1C,OAAOsC,EAAGxB,YAAYd,MAEjBsC,EAgBT,SAAS0/B,GAAc1/B,EAAIiN,GACzB,OAAOovB,GAAcmD,GAAQx/B,GAAKiN,GAYpC,SAAS0yB,GAAkBv3B,GAIzB,YAAqBlX,IAAjBkX,EAAMw3B,aAA0C1uC,IAAlBkX,EAAMy3B,UAcnB,IAAjBz3B,EAAMw3B,aAAkC1uC,IAAlBkX,EAAMy3B,UAQb,YAAfz3B,EAAM7Q,MAAuC,IAAjB6Q,EAAMw3B,QAAkC,IAAlBx3B,EAAMy3B,SAIvC,IAAjBz3B,EAAMw3B,QAAkC,IAAlBx3B,EAAMy3B,UA2BlC,IA6DIC,GA7DAC,GAAIpE,GAAc,iBAoBlBqE,GAAKrE,GAAc,oBAEnBsE,GAAmBtrC,OAAOurC,OAAO,CACnCprC,UAAW,KACXwmC,OAAQA,GACRE,KAAMA,GACNC,UAAWA,GACX0E,SAAU,GACV1Q,YAAaA,GACb8M,UAAWA,GACXC,SAAUA,GACVI,SAAUA,GACVG,YAAaA,GACbE,YAAaA,GACbI,cAAeA,GACfE,cAAeA,GACf9kB,aAAcA,GACdS,aAAcA,GACdC,gBAAiBA,GACjBwkB,mBAAoBA,GACpBG,qBAAsBA,GACtBC,sBAAuBA,GACvBE,aAAcA,GACdY,mBAAoBA,GACpBU,WAAYA,GACZC,QAASA,GACTC,iBAAkBA,GAClBpD,cAAeA,GACfqD,cAAeA,GACfC,kBAAmBA,GACnBI,EAAGA,GACHC,GAAIA,KASFI,IAAgB,EAMhB,GAAY,WAEd,GAAK9E,OAA0C,IAA9BwE,GAAQ5vC,QAAQmwC,UAAjC,CAIA,IAAIC,EAAOjxC,MAAMqF,UAAUxF,MAAMyI,KAAK,IAASiiB,qBAAqB,UAChE2mB,EAASlxC,MAAMqF,UAAUxF,MAAMyI,KAAK,IAASiiB,qBAAqB,UAClE4mB,EAAOnxC,MAAMqF,UAAUxF,MAAMyI,KAAK,IAASiiB,qBAAqB,aAChE6mB,EAAWH,EAAK9mC,OAAO+mC,EAAQC,GAEnC,GAAIC,GAAYA,EAAS7wC,OAAS,EAChC,IAAK,IAAID,EAAI,EAAG6B,EAAIivC,EAAS7wC,OAAQD,EAAI6B,EAAG7B,IAAK,CAC/C,IAAI+wC,EAAUD,EAAS9wC,GAEvB,IAAI+wC,IAAWA,EAAQjoB,aAYhB,CACLkoB,GAAiB,GACjB,MAZA,QAAuBzvC,IAAnBwvC,EAAQE,OAAsB,CAChC,IAAI1wC,EAAUwwC,EAAQjoB,aAAa,cAGnB,OAAZvoB,GAEF4vC,GAAQY,SAUNN,IACVO,GAAiB,KAerB,SAASA,GAAiBE,EAAMC,GAC1BA,IACFhB,GAAUgB,GAGZ,IAAS/vC,WAAW,GAAW8vC,GASjC,SAASE,KACPX,IAAgB,EAChB,IAASY,oBAAoB,OAAQD,IAGnCzF,OAC0B,aAAxB,IAASxqC,WACXiwC,KAUA,IAASE,iBAAiB,OAAQF,KAkBtC,IAwDI,GAxDA,GAAqB,SAA4B1F,GACnD,IAAI6F,EAAQ,IAASxoB,cAAc,SAEnC,OADAwoB,EAAM7F,UAAYA,EACX6F,GAYLC,GAAiB,SAAwBnhC,EAAIiN,GAC3CjN,EAAGohC,WACLphC,EAAGohC,WAAWC,QAAUp0B,EAExBjN,EAAGyvB,YAAcxiB,GAcjBq0B,GAAe,EAOfC,GAAQD,GAQZ,SAASE,KACP,OAAOD,KASJ,IAASE,UACZ,GAA2B,WACzB,SAASC,IACP9pC,KAAK+pC,MAAQ,QAAUvqC,KAAKolB,MAAM,IAASolB,aAAe,IAASA,YAAYta,OAAS7qB,KAAK6qB,OAC7F1vB,KAAKnF,KAAO,GAGd,IAAI8qB,EAASmkB,EAAYhtC,UAwCzB,OAtCA6oB,EAAO3C,IAAM,SAAa3rB,EAAKG,GAC7B,IAAIyyC,EAAS5yC,EAAI2I,KAAK+pC,QAAUH,KAOhC,OALKvyC,EAAI2I,KAAK+pC,SACZ1yC,EAAI2I,KAAK+pC,OAASE,GAGpBjqC,KAAKnF,KAAKovC,GAAUzyC,EACbwI,MAGT2lB,EAAO7C,IAAM,SAAazrB,GACxB,IAAI4yC,EAAS5yC,EAAI2I,KAAK+pC,OAEtB,GAAIE,EACF,OAAOjqC,KAAKnF,KAAKovC,GAKnB,GAAI,mCAAoC5yC,IAI1CsuB,EAAO6f,IAAM,SAAanuC,GACxB,IAAI4yC,EAAS5yC,EAAI2I,KAAK+pC,OACtB,OAAOE,KAAUjqC,KAAKnF,MAGxB8qB,EAAO,UAAY,SAAiBtuB,GAClC,IAAI4yC,EAAS5yC,EAAI2I,KAAK+pC,OAElBE,WACKjqC,KAAKnF,KAAKovC,UACV5yC,EAAI2I,KAAK+pC,SAIbD,EA9CkB,IA6D7B,IAwMII,GAxMAC,GAAU,IAASN,QAAU,IAAIA,QAAY,IAAI,GAqBrD,SAASO,GAAe34B,EAAM9R,GAC5B,GAAKwqC,GAAQ3E,IAAI/zB,GAAjB,CAIA,IAAI5W,EAAOsvC,GAAQrnB,IAAIrR,GAEY,IAA/B5W,EAAKwvC,SAAS1qC,GAAM3H,gBACf6C,EAAKwvC,SAAS1qC,GAIjB8R,EAAK23B,oBACP33B,EAAK23B,oBAAoBzpC,EAAM9E,EAAKyvC,YAAY,GACvC74B,EAAK84B,aACd94B,EAAK84B,YAAY,KAAO5qC,EAAM9E,EAAKyvC,aAKnCvtC,OAAOsnC,oBAAoBxpC,EAAKwvC,UAAUryC,QAAU,WAC/C6C,EAAKwvC,gBACLxvC,EAAKyvC,kBACLzvC,EAAK2vC,UAIkC,IAA5CztC,OAAOsnC,oBAAoBxpC,GAAM7C,QACnCmyC,GAAQ,UAAU14B,IAoBtB,SAASg5B,GAAsBhlC,EAAIgM,EAAMi5B,EAAOnyC,GAC9CmyC,EAAMzzC,SAAQ,SAAU0I,GAEtB8F,EAAGgM,EAAM9R,EAAMpH,MAcnB,SAASoyC,GAASn6B,GAChB,GAAIA,EAAMo6B,OACR,OAAOp6B,EAGT,SAASq6B,IACP,OAAO,EAGT,SAASC,IACP,OAAO,EAQT,IAAKt6B,IAAUA,EAAMu6B,qBAAsB,CACzC,IAAIppB,EAAMnR,GAAS,IAASA,MAO5B,IAAK,IAAInZ,KANTmZ,EAAQ,GAMQmR,EAIF,WAARtqB,GAA4B,WAARA,GAA4B,gBAARA,GAAiC,oBAARA,GAAqC,oBAARA,IAGlF,gBAARA,GAAyBsqB,EAAIqpB,iBACjCx6B,EAAMnZ,GAAOsqB,EAAItqB,KAmDvB,GA7CKmZ,EAAMlH,SACTkH,EAAMlH,OAASkH,EAAMy6B,YAAc,KAIhCz6B,EAAM06B,gBACT16B,EAAM06B,cAAgB16B,EAAM26B,cAAgB36B,EAAMlH,OAASkH,EAAM46B,UAAY56B,EAAM26B,aAIrF36B,EAAMw6B,eAAiB,WACjBrpB,EAAIqpB,gBACNrpB,EAAIqpB,iBAGNx6B,EAAM66B,aAAc,EACpB1pB,EAAI0pB,aAAc,EAClB76B,EAAM86B,kBAAmB,GAG3B96B,EAAM86B,kBAAmB,EAEzB96B,EAAM+6B,gBAAkB,WAClB5pB,EAAI4pB,iBACN5pB,EAAI4pB,kBAGN/6B,EAAMg7B,cAAe,EACrB7pB,EAAI6pB,cAAe,EACnBh7B,EAAMu6B,qBAAuBF,GAG/Br6B,EAAMu6B,qBAAuBD,EAE7Bt6B,EAAMi7B,yBAA2B,WAC3B9pB,EAAI8pB,0BACN9pB,EAAI8pB,2BAGNj7B,EAAMk7B,8BAAgCb,EACtCr6B,EAAM+6B,mBAGR/6B,EAAMk7B,8BAAgCZ,EAEhB,OAAlBt6B,EAAMm7B,cAAsCryC,IAAlBkX,EAAMm7B,QAAuB,CACzD,IAAI9kC,EAAM,IAASzK,gBACfrD,EAAO,IAASA,KACpByX,EAAMi3B,MAAQj3B,EAAMm7B,SAAW9kC,GAAOA,EAAI8/B,YAAc5tC,GAAQA,EAAK4tC,YAAc,IAAM9/B,GAAOA,EAAI6/B,YAAc3tC,GAAQA,EAAK2tC,YAAc,GAC7Il2B,EAAMg3B,MAAQh3B,EAAMo7B,SAAW/kC,GAAOA,EAAIigC,WAAa/tC,GAAQA,EAAK+tC,WAAa,IAAMjgC,GAAOA,EAAIggC,WAAa9tC,GAAQA,EAAK8tC,WAAa,GAI3Ir2B,EAAMq7B,MAAQr7B,EAAMs7B,UAAYt7B,EAAMu7B,QAGjB,OAAjBv7B,EAAMw3B,aAAoC1uC,IAAjBkX,EAAMw3B,SAKjCx3B,EAAMw3B,OAAwB,EAAfx3B,EAAMw3B,OAAa,EAAmB,EAAfx3B,EAAMw3B,OAAa,EAAmB,EAAfx3B,EAAMw3B,OAAa,EAAI,GAOxF,OAFAx3B,EAAMo6B,QAAS,EAERp6B,EAQT,IAAI,GAAkB,WACpB,GAAgC,mBAArB05B,GAAgC,CACzCA,IAAmB,EAEnB,IACE,IAAI8B,EAAOjvC,OAAO6lB,eAAe,GAAI,UAAW,CAC9CE,IAAK,WACHonB,IAAmB,KAGvB,IAASb,iBAAiB,OAAQ,KAAM2C,GACxC,IAAS5C,oBAAoB,OAAQ,KAAM4C,GAC3C,MAAOpyC,KAIX,OAAOswC,IAOL+B,GAAgB,CAAC,aAAc,aAiBnC,SAAS78B,GAAGqC,EAAM9R,EAAM8F,GACtB,GAAIhO,MAAMC,QAAQiI,GAChB,OAAO8qC,GAAsBr7B,GAAIqC,EAAM9R,EAAM8F,GAG1C0kC,GAAQ3E,IAAI/zB,IACf04B,GAAQnnB,IAAIvR,EAAM,IAGpB,IAAI5W,EAAOsvC,GAAQrnB,IAAIrR,GA8CvB,GA5CK5W,EAAKwvC,WACRxvC,EAAKwvC,SAAW,IAGbxvC,EAAKwvC,SAAS1qC,KACjB9E,EAAKwvC,SAAS1qC,GAAQ,IAGnB8F,EAAGymC,OACNzmC,EAAGymC,KAAOtC,MAGZ/uC,EAAKwvC,SAAS1qC,GAAMhI,KAAK8N,GAEpB5K,EAAKyvC,aACRzvC,EAAK2vC,UAAW,EAEhB3vC,EAAKyvC,WAAa,SAAU95B,EAAO27B,GACjC,IAAItxC,EAAK2vC,SAAT,CAIAh6B,EAAQm6B,GAASn6B,GACjB,IAAI65B,EAAWxvC,EAAKwvC,SAAS75B,EAAM7Q,MAEnC,GAAI0qC,EAIF,IAFA,IAAI+B,EAAe/B,EAAS/yC,MAAM,GAEzB4sB,EAAI,EAAGlF,EAAIotB,EAAap0C,OAAQksB,EAAIlF,EAAGkF,IAAK,CACnD,GAAI1T,EAAMk7B,gCACR,MAEA,IACEU,EAAaloB,GAAGnkB,KAAK0R,EAAMjB,EAAO27B,GAClC,MAAOvyC,GACP,GAAI8N,MAAM9N,QAQa,IAA/BiB,EAAKwvC,SAAS1qC,GAAM3H,OACtB,GAAIyZ,EAAK43B,iBAAkB,CACzB,IAAI/wC,GAAU,EAEV,MAAqB2zC,GAAc70C,QAAQuI,IAAS,IACtDrH,EAAU,CACR+zC,SAAS,IAIb56B,EAAK43B,iBAAiB1pC,EAAM9E,EAAKyvC,WAAYhyC,QACpCmZ,EAAK66B,aACd76B,EAAK66B,YAAY,KAAO3sC,EAAM9E,EAAKyvC,YAkBzC,SAASh7B,GAAImC,EAAM9R,EAAM8F,GAEvB,GAAK0kC,GAAQ3E,IAAI/zB,GAAjB,CAIA,IAAI5W,EAAOsvC,GAAQrnB,IAAIrR,GAEvB,GAAK5W,EAAKwvC,SAAV,CAIA,GAAI5yC,MAAMC,QAAQiI,GAChB,OAAO8qC,GAAsBn7B,GAAKmC,EAAM9R,EAAM8F,GAIhD,IAAI8mC,EAAa,SAAoBnkC,EAAIkP,GACvCzc,EAAKwvC,SAAS/yB,GAAK,GAEnB8yB,GAAehiC,EAAIkP,IAIrB,QAAahe,IAATqG,EAAJ,CAUA,IAAI0qC,EAAWxvC,EAAKwvC,SAAS1qC,GAE7B,GAAK0qC,EAKL,GAAK5kC,EAAL,CAMA,GAAIA,EAAGymC,KACL,IAAK,IAAIltB,EAAI,EAAGA,EAAIqrB,EAASryC,OAAQgnB,IAC/BqrB,EAASrrB,GAAGktB,OAASzmC,EAAGymC,MAC1B7B,EAAS96B,OAAOyP,IAAK,GAK3BorB,GAAe34B,EAAM9R,QAbnB4sC,EAAW96B,EAAM9R,QAjBjB,IAAK,IAAI2X,KAAKzc,EAAKwvC,SACbttC,OAAOD,UAAU3E,eAAe4H,KAAKlF,EAAKwvC,UAAY,GAAI/yB,IAC5Di1B,EAAW96B,EAAM6F,KA+CzB,SAASlX,GAAQqR,EAAMjB,EAAO27B,GAI5B,IAAIK,EAAWrC,GAAQ3E,IAAI/zB,GAAQ04B,GAAQrnB,IAAIrR,GAAQ,GACnDqyB,EAASryB,EAAKxI,YAAcwI,EAAKyI,cAsBrC,GAlBqB,kBAAV1J,EACTA,EAAQ,CACN7Q,KAAM6Q,EACNlH,OAAQmI,GAEAjB,EAAMlH,SAChBkH,EAAMlH,OAASmI,GAIjBjB,EAAQm6B,GAASn6B,GAEbg8B,EAASlC,YACXkC,EAASlC,WAAWvqC,KAAK0R,EAAMjB,EAAO27B,GAKpCrI,IAAWtzB,EAAMu6B,yBAA4C,IAAlBv6B,EAAMi8B,QACnDrsC,GAAQL,KAAK,KAAM+jC,EAAQtzB,EAAO27B,QAC7B,IAAKrI,IAAWtzB,EAAM86B,kBAAoB96B,EAAMlH,QAAUkH,EAAMlH,OAAOkH,EAAM7Q,MAAO,CACpFwqC,GAAQ3E,IAAIh1B,EAAMlH,SACrB6gC,GAAQnnB,IAAIxS,EAAMlH,OAAQ,IAG5B,IAAIojC,EAAavC,GAAQrnB,IAAItS,EAAMlH,QAE/BkH,EAAMlH,OAAOkH,EAAM7Q,QAErB+sC,EAAWlC,UAAW,EAEkB,oBAA7Bh6B,EAAMlH,OAAOkH,EAAM7Q,OAC5B6Q,EAAMlH,OAAOkH,EAAM7Q,QAIrB+sC,EAAWlC,UAAW,GAK1B,OAAQh6B,EAAM86B,iBAehB,SAASqB,GAAIl7B,EAAM9R,EAAM8F,GACvB,GAAIhO,MAAMC,QAAQiI,GAChB,OAAO8qC,GAAsBkC,GAAKl7B,EAAM9R,EAAM8F,GAGhD,IAAImnC,EAAO,SAASA,IAClBt9B,GAAImC,EAAM9R,EAAMitC,GAChBnnC,EAAG5D,MAAM7B,KAAM4J,YAIjBgjC,EAAKV,KAAOzmC,EAAGymC,KAAOzmC,EAAGymC,MAAQtC,KACjCx6B,GAAGqC,EAAM9R,EAAMitC,GAgBjB,SAASC,GAAIp7B,EAAM9R,EAAM8F,GACvB,IAAImnC,EAAO,SAASA,IAClBt9B,GAAImC,EAAM9R,EAAMitC,GAChBnnC,EAAG5D,MAAM7B,KAAM4J,YAIjBgjC,EAAKV,KAAOzmC,EAAGymC,KAAOzmC,EAAGymC,MAAQtC,KAEjCx6B,GAAGqC,EAAM9R,EAAMitC,GAGjB,IA4UIE,GA5UAC,GAAsBhwC,OAAOurC,OAAO,CACtCprC,UAAW,KACXytC,SAAUA,GACVv7B,GAAIA,GACJE,IAAKA,GACLlP,QAASA,GACTusC,IAAKA,GACLE,IAAKA,KAOHG,GAA0B,GAsB1BphC,GAAO,SAAcq4B,EAASx+B,EAAIwnC,GAE/BxnC,EAAGymC,OACNzmC,EAAGymC,KAAOtC,MAIZ,IAAIsD,EAAQznC,EAAGmG,KAAKq4B,GAQpB,OADAiJ,EAAMhB,KAAOe,EAAMA,EAAM,IAAMxnC,EAAGymC,KAAOzmC,EAAGymC,KACrCgB,GAgBL,GAAW,SAAkBznC,EAAIwjC,GACnC,IAAIkE,EAAO,IAASnD,YAAYta,MAE5B0d,EAAY,WACd,IAAI1d,EAAM,IAASsa,YAAYta,MAE3BA,EAAMyd,GAAQlE,IAChBxjC,EAAG5D,WAAM,EAAQ+H,WACjBujC,EAAOzd,IAIX,OAAO0d,GA6BL,GAAW,SAAkBR,EAAM3D,EAAMoE,EAAWpJ,GAKtD,IAAItoC,OAJY,IAAZsoC,IACFA,EAAU,KAKZ,IAAIqJ,EAAS,WACXrJ,EAAQlqC,aAAa4B,GACrBA,EAAU,MAKR4xC,EAAY,WACd,IAAI9nB,EAAOzlB,KACPwL,EAAO5B,UAEP4jC,EAAS,WACX7xC,EAAU,KACV6xC,EAAS,KAEJH,GACHT,EAAK/qC,MAAM4jB,EAAMja,KAIhB7P,GAAW0xC,GACdT,EAAK/qC,MAAM4jB,EAAMja,GAGnBy4B,EAAQlqC,aAAa4B,GACrBA,EAAUsoC,EAAQ9qC,WAAWq0C,EAAQvE,IAMvC,OADAsE,EAAUD,OAASA,EACZC,GAeLE,GAAc,aAgClBA,GAAY3wC,UAAU4wC,eAAiB,GAYvCD,GAAY3wC,UAAUsS,GAAK,SAAUzP,EAAM8F,GAGzC,IAAIkoC,EAAM3tC,KAAKqpC,iBAEfrpC,KAAKqpC,iBAAmB,aAExBj6B,GAAGpP,KAAML,EAAM8F,GACfzF,KAAKqpC,iBAAmBsE,GAW1BF,GAAY3wC,UAAUusC,iBAAmBoE,GAAY3wC,UAAUsS,GAa/Dq+B,GAAY3wC,UAAUwS,IAAM,SAAU3P,EAAM8F,GAC1C6J,GAAItP,KAAML,EAAM8F,IAWlBgoC,GAAY3wC,UAAUssC,oBAAsBqE,GAAY3wC,UAAUwS,IAalEm+B,GAAY3wC,UAAU6vC,IAAM,SAAUhtC,EAAM8F,GAG1C,IAAIkoC,EAAM3tC,KAAKqpC,iBAEfrpC,KAAKqpC,iBAAmB,aAExBsD,GAAI3sC,KAAML,EAAM8F,GAChBzF,KAAKqpC,iBAAmBsE,GAG1BF,GAAY3wC,UAAU+vC,IAAM,SAAUltC,EAAM8F,GAG1C,IAAIkoC,EAAM3tC,KAAKqpC,iBAEfrpC,KAAKqpC,iBAAmB,aAExBwD,GAAI7sC,KAAML,EAAM8F,GAChBzF,KAAKqpC,iBAAmBsE,GAoB1BF,GAAY3wC,UAAUsD,QAAU,SAAUoQ,GACxC,IAAI7Q,EAAO6Q,EAAM7Q,MAAQ6Q,EAMJ,kBAAVA,IACTA,EAAQ,CACN7Q,KAAMA,IAIV6Q,EAAQm6B,GAASn6B,GAEbxQ,KAAK0tC,eAAe/tC,IAASK,KAAK,KAAOL,IAC3CK,KAAK,KAAOL,GAAM6Q,GAGpBpQ,GAAQJ,KAAMwQ,IAWhBi9B,GAAY3wC,UAAU8wC,cAAgBH,GAAY3wC,UAAUsD,QAG5DqtC,GAAY3wC,UAAU+wC,aAAe,SAAUr9B,GAC7C,IAAIsV,EAAQ9lB,KAGP8sC,KACHA,GAAY,IAAIgB,KAGlB,IAAInuC,EAAO6Q,EAAM7Q,MAAQ6Q,EACrB1O,EAAMgrC,GAAUhqB,IAAI9iB,MAEnB8B,IACHA,EAAM,IAAIgsC,IACVhB,GAAU9pB,IAAIhjB,KAAM8B,IAGtB,IAAIisC,EAAajsC,EAAIghB,IAAInjB,GACzBmC,EAAI,UAAUnC,GACd,IAAS5F,aAAag0C,GACtB,IAAIpyC,EAAU,IAASxC,YAAW,WAEf,IAAb2I,EAAIgwB,OACNhwB,EAAM,KACNgrC,GAAU,UAAUhnB,IAGtBA,EAAM1lB,QAAQoQ,KACb,GACH1O,EAAIkhB,IAAIrjB,EAAMhE,IAiBhB,IAAIqyC,GAAY,SAAmB5uB,GACjC,OAAOA,aAAkBquB,MAAiBruB,EAAO6uB,aAAe,CAAC,KAAM,MAAO,MAAO,WAAWC,OAAM,SAAUhhB,GAC9G,MAA4B,oBAAd9N,EAAO8N,OAarBihB,GAAqB,SAA4B7kC,EAAQ/Q,GACvDy1C,GAAU1kC,GACZ/Q,KAEK+Q,EAAO8kC,mBACV9kC,EAAO8kC,iBAAmB,IAG5B9kC,EAAO8kC,iBAAiBz2C,KAAKY,KAe7B81C,GAAmB,SAA0B1uC,GAC/C,MAEkB,kBAATA,GAAqB,KAAK2E,KAAK3E,IAASlI,MAAMC,QAAQiI,MAAWA,EAAK3H,QAe7Es2C,GAAiB,SAAwBhlC,GAC3C,IAAKA,EAAOjN,WAAa2xC,GAAU1kC,GACjC,MAAM,IAAI3Q,MAAM,0DAehB41C,GAAoB,SAA2B5uC,GACjD,IAAK0uC,GAAiB1uC,GACpB,MAAM,IAAIhH,MAAM,6DAehB61C,GAAmB,SAA0Bn/B,GAC/C,GAAwB,oBAAbA,EACT,MAAM,IAAI1W,MAAM,0CAoBhB81C,GAAsB,SAA6BhpB,EAAMja,GAG3D,IACIlC,EACA3J,EACA0P,EAHAq/B,EAAkBljC,EAAKxT,OAAS,GAAKwT,EAAK,KAAOia,GAAQja,EAAK,KAAOia,EAAKwoB,YAyB9E,OApBIS,GACFplC,EAASmc,EAAKwoB,YAGVziC,EAAKxT,QAAU,GACjBwT,EAAKo0B,QAGPjgC,EAAO6L,EAAK,GACZ6D,EAAW7D,EAAK,KAEhBlC,EAASkC,EAAK,GACd7L,EAAO6L,EAAK,GACZ6D,EAAW7D,EAAK,IAGlB8iC,GAAehlC,GACfilC,GAAkB5uC,GAClB6uC,GAAiBn/B,GACjBA,EAAWzD,GAAK6Z,EAAMpW,GACf,CACLq/B,gBAAiBA,EACjBplC,OAAQA,EACR3J,KAAMA,EACN0P,SAAUA,IAsBVs/B,GAAS,SAAgBrlC,EAAQhP,EAAQqF,EAAM0P,GACjDi/B,GAAehlC,GAEXA,EAAOjN,SACT0wC,GAAOzyC,GAAQgP,EAAQ3J,EAAM0P,GAE7B/F,EAAOhP,GAAQqF,EAAM0P,IAWrBu/B,GAAe,CAwBjBx/B,GAAI,WAGF,IAFA,IAAI0W,EAAQ9lB,KAEH+sB,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzB,IAAIylB,EAAuBJ,GAAoBzuC,KAAMwL,GACjDkjC,EAAkBG,EAAqBH,gBACvCplC,EAASulC,EAAqBvlC,OAC9B3J,EAAOkvC,EAAqBlvC,KAC5B0P,EAAWw/B,EAAqBx/B,SAIpC,GAFAs/B,GAAOrlC,EAAQ,KAAM3J,EAAM0P,IAEtBq/B,EAAiB,CAEpB,IAAII,EAA0B,WAC5B,OAAOhpB,EAAMxW,IAAIhG,EAAQ3J,EAAM0P,IAKjCy/B,EAAwB5C,KAAO78B,EAAS68B,KAIxC,IAAI6C,EAA+B,WACjC,OAAOjpB,EAAMxW,IAAI,UAAWw/B,IAK9BC,EAA6B7C,KAAO78B,EAAS68B,KAC7CyC,GAAO3uC,KAAM,KAAM,UAAW8uC,GAC9BH,GAAOrlC,EAAQ,KAAM,UAAWylC,KA2BpCpC,IAAK,WAGH,IAFA,IAAIjmB,EAAS1mB,KAEJoiC,EAAQx4B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM2qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF72B,EAAK62B,GAASz4B,UAAUy4B,GAG1B,IAAI2M,EAAwBP,GAAoBzuC,KAAMwL,GAClDkjC,EAAkBM,EAAsBN,gBACxCplC,EAAS0lC,EAAsB1lC,OAC/B3J,EAAOqvC,EAAsBrvC,KAC7B0P,EAAW2/B,EAAsB3/B,SAGrC,GAAIq/B,EACFC,GAAOrlC,EAAQ,MAAO3J,EAAM0P,OACvB,CAKL,IAAI4/B,EAAU,SAASA,IACrBvoB,EAAOpX,IAAIhG,EAAQ3J,EAAMsvC,GAEzB,IAAK,IAAI3M,EAAQ14B,UAAU5R,OAAQk3C,EAAQ,IAAIz3C,MAAM6qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrF2M,EAAM3M,GAAS34B,UAAU24B,GAG3BlzB,EAASxN,MAAM,KAAMqtC,IAKvBD,EAAQ/C,KAAO78B,EAAS68B,KACxByC,GAAOrlC,EAAQ,MAAO3J,EAAMsvC,KA4BhCpC,IAAK,WAGH,IAFA,IAAIrkB,EAASxoB,KAEJwiC,EAAQ54B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM+qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFj3B,EAAKi3B,GAAS74B,UAAU64B,GAG1B,IAAI0M,EAAwBV,GAAoBzuC,KAAMwL,GAClDkjC,EAAkBS,EAAsBT,gBACxCplC,EAAS6lC,EAAsB7lC,OAC/B3J,EAAOwvC,EAAsBxvC,KAC7B0P,EAAW8/B,EAAsB9/B,SAGrC,GAAIq/B,EACFC,GAAOrlC,EAAQ,MAAO3J,EAAM0P,OACvB,CACL,IAAI4/B,EAAU,SAASA,IACrBzmB,EAAOlZ,IAAIhG,EAAQ3J,EAAMsvC,GAEzB,IAAK,IAAIG,EAAQxlC,UAAU5R,OAAQk3C,EAAQ,IAAIz3C,MAAM23C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrFH,EAAMG,GAASzlC,UAAUylC,GAG3BhgC,EAASxN,MAAM,KAAMqtC,IAKvBD,EAAQ/C,KAAO78B,EAAS68B,KACxByC,GAAOrlC,EAAQ,MAAO3J,EAAMsvC,KAuBhC3/B,IAAK,SAAeggC,EAAcC,EAAgBlgC,GAEhD,IAAKigC,GAAgBjB,GAAiBiB,GACpChgC,GAAItP,KAAKiuC,YAAaqB,EAAcC,OAC/B,CACL,IAAIjmC,EAASgmC,EACT3vC,EAAO4vC,EAEXjB,GAAehlC,GACfilC,GAAkB5uC,GAClB6uC,GAAiBn/B,GAEjBA,EAAWzD,GAAK5L,KAAMqP,GAGtBrP,KAAKsP,IAAI,UAAWD,GAEhB/F,EAAOjN,UACTiT,GAAIhG,EAAQ3J,EAAM0P,GAClBC,GAAIhG,EAAQ,UAAW+F,IACd2+B,GAAU1kC,KACnBA,EAAOgG,IAAI3P,EAAM0P,GACjB/F,EAAOgG,IAAI,UAAWD,MAiB5BjP,QAAS,SAAmBoQ,EAAO27B,GACjC,OAAO/rC,GAAQJ,KAAKiuC,YAAaz9B,EAAO27B,KAqB5C,SAASqD,GAAQlmC,EAAQhR,QACP,IAAZA,IACFA,EAAU,IAGZ,IAAIkjC,EAAWljC,EACXm3C,EAAcjU,EAASiU,YAE3B,GAAIA,EAAa,CACf,IAAKnmC,EAAOmmC,GAAapzC,SACvB,MAAM,IAAI1D,MAAM,oBAAuB82C,EAAc,mCAGvDnmC,EAAO2kC,YAAc3kC,EAAOmmC,QAE5BnmC,EAAO2kC,YAAc,GAAS,OAAQ,CACpCxK,UAAW,kBAmBf,OAfA,GAAOn6B,EAAQslC,IAEXtlC,EAAO8kC,kBACT9kC,EAAO8kC,iBAAiBn3C,SAAQ,SAAUsB,GACxCA,OAKJ+Q,EAAO8F,GAAG,WAAW,WACnB9F,EAAOgG,MACP,IAASnW,YAAW,WAClBmQ,EAAO2kC,YAAc,OACpB,MAEE3kC,EAcT,IAAIomC,GAAgB,CAOlBC,MAAO,GAePC,SAAU,SAAkBC,GAC1B,IAOIC,EAPAhqB,EAAQ9lB,KA0CZ,MAvC4B,oBAAjB6vC,IACTA,EAAeA,KAIjBlN,GAAKkN,GAAc,SAAUr4C,EAAOH,GAG9ByuB,EAAM6pB,MAAMt4C,KAASG,IACvBs4C,EAAUA,GAAW,GACrBA,EAAQz4C,GAAO,CACbmsB,KAAMsC,EAAM6pB,MAAMt4C,GAClB04C,GAAIv4C,IAIRsuB,EAAM6pB,MAAMt4C,GAAOG,KAKjBs4C,GAAW9B,GAAUhuC,OAYvBA,KAAKI,QAAQ,CACX0vC,QAASA,EACTnwC,KAAM,iBAIHmwC,IAsBX,SAASE,GAAS1mC,EAAQ2mC,GAUxB,OATA,GAAO3mC,EAAQomC,IAGfpmC,EAAOqmC,MAAQ,GAAO,GAAIrmC,EAAOqmC,MAAOM,GAEC,oBAA9B3mC,EAAO4mC,oBAAqClC,GAAU1kC,IAC/DA,EAAO8F,GAAG,eAAgB9F,EAAO4mC,oBAG5B5mC,EAiBT,IAAI/R,GAAc,SAAqB0rB,GACrC,MAAsB,kBAAXA,EACFA,EAGFA,EAAO1e,QAAQ,KAAK,SAAU4rC,GACnC,OAAOA,EAAE54C,kBAaT64C,GAAc,SAAqBntB,GACrC,MAAsB,kBAAXA,EACFA,EAGFA,EAAO1e,QAAQ,KAAK,SAAU4rC,GACnC,OAAOA,EAAEzzC,kBAgBT2zC,GAAkB,SAAyBC,EAAMC,GACnD,OAAOH,GAAYE,KAAUF,GAAYG,IAyB3C,SAASC,KAGP,IAFA,IAAI15C,EAAS,GAEJi2B,EAAOnjB,UAAU5R,OAAQ8qC,EAAU,IAAIrrC,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAClF0Z,EAAQ1Z,GAAQxf,UAAUwf,GAqB5B,OAlBA0Z,EAAQ7rC,SAAQ,SAAU8P,GACnBA,GAIL47B,GAAK57B,GAAQ,SAAUvP,EAAOH,GACvB0rC,GAAQvrC,IAKRurC,GAAQjsC,EAAOO,MAClBP,EAAOO,GAAO,IAGhBP,EAAOO,GAAOm5C,GAAa15C,EAAOO,GAAMG,IARtCV,EAAOO,GAAOG,QAWbV,EAiBT,IAAI,GAAyB,WA0B3B,SAAS25C,EAAUzH,EAAQ1wC,EAASo4C,GAkBlC,IAhBK1H,GAAUhpC,KAAK2wC,KAClB3wC,KAAK4wC,QAAU5H,EAAShpC,KAExBA,KAAK4wC,QAAU5H,EAGjBhpC,KAAK6wC,aAAc,EAEnB7wC,KAAK8wC,iBAAmB,KAExB9wC,KAAK+wC,SAAWP,GAAa,GAAIxwC,KAAK+wC,UAEtCz4C,EAAU0H,KAAK+wC,SAAWP,GAAaxwC,KAAK+wC,SAAUz4C,GAEtD0H,KAAKgxC,IAAM14C,EAAQiJ,IAAMjJ,EAAQ8P,IAAM9P,EAAQ8P,GAAG7G,IAE7CvB,KAAKgxC,IAAK,CAEb,IAAIzvC,EAAKynC,GAAUA,EAAOznC,IAAMynC,EAAOznC,MAAQ,YAC/CvB,KAAKgxC,IAAMzvC,EAAK,cAAgBqoC,KAuBlC,IAAIqH,EApBJjxC,KAAK+S,MAAQza,EAAQ2R,MAAQ,KAEzB3R,EAAQ8P,GACVpI,KAAKkxC,IAAM54C,EAAQ8P,IACW,IAArB9P,EAAQiwC,WACjBvoC,KAAKkxC,IAAMlxC,KAAKuoC,aAIM,IAApBjwC,EAAQk3C,SAEVA,GAAQxvC,KAAM,CACZyvC,YAAazvC,KAAKkxC,IAAM,MAAQ,OAIpClB,GAAShwC,KAAMA,KAAK/C,YAAYgzC,cAChCjwC,KAAKmxC,UAAY,GACjBnxC,KAAKoxC,YAAc,GACnBpxC,KAAKqxC,gBAAkB,GAGlB,IAASC,MACZL,EAAuB,WACrB,SAASA,IACPjxC,KAAKuxC,KAAO,GAGd,IAAIC,EAAUP,EAAQn0C,UAuBtB,OArBA00C,EAAQhM,IAAM,SAAanuC,GACzB,OAAOA,KAAO2I,KAAKuxC,MAGrBC,EAAQ,UAAY,SAAiBn6C,GACnC,IAAImuC,EAAMxlC,KAAKwlC,IAAInuC,GAEnB,cADO2I,KAAKuxC,KAAKl6C,GACVmuC,GAGTgM,EAAQtM,IAAM,SAAa7tC,GAEzB,OADA2I,KAAKuxC,KAAKl6C,GAAO,EACV2I,MAGTwxC,EAAQv6C,QAAU,SAAiBsB,EAAUk5C,GAC3C,IAAK,IAAIp6C,KAAO2I,KAAKuxC,KACnBh5C,EAASwH,KAAK0xC,EAASp6C,EAAKA,EAAK2I,OAI9BixC,EA5Bc,IAgCzBjxC,KAAK0xC,eAAiB,IAASJ,IAAM,IAAIA,IAAQ,IAAIL,EACrDjxC,KAAK2xC,gBAAkB,IAASL,IAAM,IAAIA,IAAQ,IAAIL,EACtDjxC,KAAK4xC,QAAU,IAASN,IAAM,IAAIA,IAAQ,IAAIL,EAC9CjxC,KAAK6xC,0BAA2B,GAEH,IAAzBv5C,EAAQw5C,cACV9xC,KAAK8xC,eAGP9xC,KAAK0wC,MAAMA,IAGyB,IAAhCp4C,EAAQy5C,qBACV/xC,KAAKgyC,sBAUT,IAAIrsB,EAAS8qB,EAAU3zC,UAoiDvB,OAliDA6oB,EAAOlW,QAAU,WAEf,IAAIzP,KAAK6wC,YAAT,CAqBA,GANA7wC,KAAKI,QAAQ,CACXT,KAAM,UACN8sC,SAAS,IAEXzsC,KAAK6wC,aAAc,EAEf7wC,KAAKmxC,UACP,IAAK,IAAIp5C,EAAIiI,KAAKmxC,UAAUn5C,OAAS,EAAGD,GAAK,EAAGA,IAC1CiI,KAAKmxC,UAAUp5C,GAAG0X,SACpBzP,KAAKmxC,UAAUp5C,GAAG0X,UAMxBzP,KAAKmxC,UAAY,KACjBnxC,KAAKoxC,YAAc,KACnBpxC,KAAKqxC,gBAAkB,KACvBrxC,KAAK8wC,iBAAmB,KAEpB9wC,KAAKkxC,MAEHlxC,KAAKkxC,IAAIjoC,YACXjJ,KAAKkxC,IAAIjoC,WAAWwT,YAAYzc,KAAKkxC,KAGnC/G,GAAQ3E,IAAIxlC,KAAKkxC,MACnB/G,GAAQ,UAAUnqC,KAAKkxC,KAGzBlxC,KAAKkxC,IAAM,MAIblxC,KAAK4wC,QAAU,OAUjBjrB,EAAOssB,WAAa,WAClB,OAAO3O,QAAQtjC,KAAK6wC,cAUtBlrB,EAAOqjB,OAAS,WACd,OAAOhpC,KAAK4wC,SAedjrB,EAAOrtB,QAAU,SAAiBJ,GAChC,OAAKA,GAIL8H,KAAK+wC,SAAWP,GAAaxwC,KAAK+wC,SAAU74C,GACrC8H,KAAK+wC,UAJH/wC,KAAK+wC,UAchBprB,EAAOvd,GAAK,WACV,OAAOpI,KAAKkxC,KAmBdvrB,EAAO4iB,SAAW,SAAoBv/B,EAASo7B,EAAY9lB,GACzD,OAAO,GAAStV,EAASo7B,EAAY9lB,IA0CvCqH,EAAOusB,SAAW,SAAkBjvB,EAAQkvB,EAAQC,QAC7B,IAAjBA,IACFA,EAAenvB,GAGjB,IAAIpnB,EAAOmE,KAAK4wC,QAAQjlB,UAAY3rB,KAAK4wC,QAAQjlB,WAC7C0mB,EAAYryC,KAAK4wC,QAAQyB,WAAaryC,KAAK4wC,QAAQyB,YACnD1mB,EAAW0mB,GAAaA,EAAUx2C,GAClCy2C,EAAcz2C,GAAQA,EAAK7E,MAAM,KAAK,GACtCu7C,EAAcF,GAAaA,EAAUC,GACrCE,EAAkBJ,EAqBtB,OAnBIzmB,GAAYA,EAAS1I,GACvBuvB,EAAkB7mB,EAAS1I,GAClBsvB,GAAeA,EAAYtvB,KACpCuvB,EAAkBD,EAAYtvB,IAG5BkvB,IACFK,EAAkBA,EAAgBjuC,QAAQ,cAAc,SAAUkiB,EAAOtvB,GACvE,IAAIK,EAAQ26C,EAAOh7C,EAAQ,GACvBs7C,EAAMj7C,EAMV,MAJqB,qBAAVA,IACTi7C,EAAMhsB,GAGDgsB,MAIJD,GAWT7sB,EAAO+sB,UAAY,WACjB,OAAO1yC,KAAK2yC,YAAc3yC,KAAKkxC,KAUjCvrB,EAAOpkB,GAAK,WACV,OAAOvB,KAAKgxC,KAWdrrB,EAAO1b,KAAO,WACZ,OAAOjK,KAAK+S,OAUd4S,EAAOitB,SAAW,WAChB,OAAO5yC,KAAKmxC,WAadxrB,EAAOktB,aAAe,SAAsBtxC,GAC1C,OAAOvB,KAAKoxC,YAAY7vC,IAa1BokB,EAAOmtB,SAAW,SAAkB7oC,GAClC,GAAKA,EAIL,OAAOjK,KAAKqxC,gBAAgBpnC,IAkB9B0b,EAAOotB,cAAgB,WACrB,IAAK,IAAIhmB,EAAOnjB,UAAU5R,OAAQg7C,EAAQ,IAAIv7C,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAChF4pB,EAAM5pB,GAAQxf,UAAUwf,GAI1B4pB,EAAQA,EAAM7xC,QAAO,SAAUylB,EAAK5H,GAClC,OAAO4H,EAAIhlB,OAAOod,KACjB,IAGH,IAFA,IAAIi0B,EAAejzC,KAEVjI,EAAI,EAAGA,EAAIi7C,EAAMh7C,OAAQD,IAGhC,GAFAk7C,EAAeA,EAAaH,SAASE,EAAMj7C,KAEtCk7C,IAAiBA,EAAaH,SACjC,OAIJ,OAAOG,GAsBTttB,EAAOutB,SAAW,SAAkBl3B,EAAO1jB,EAASnB,GASlD,IAAIg8C,EACAC,EAEJ,QAXgB,IAAZ96C,IACFA,EAAU,SAGE,IAAVnB,IACFA,EAAQ6I,KAAKmxC,UAAUn5C,QAMJ,kBAAVgkB,EAAoB,CAC7Bo3B,EAAgBhD,GAAYp0B,GAC5B,IAAIq3B,EAAqB/6C,EAAQg7C,gBAAkBF,EAEnD96C,EAAQ2R,KAAOmpC,EAGf,IAAIG,EAAiB9C,EAAU+C,aAAaH,GAE5C,IAAKE,EACH,MAAM,IAAI56C,MAAM,aAAe06C,EAAqB,mBAOtD,GAA8B,oBAAnBE,EACT,OAAO,KAGTJ,EAAY,IAAII,EAAevzC,KAAK4wC,SAAW5wC,KAAM1H,QAErD66C,EAAYn3B,EAyBd,GAtBIm3B,EAAUrC,kBACZqC,EAAUrC,iBAAiBr0B,YAAY02B,GAGzCnzC,KAAKmxC,UAAU5hC,OAAOpY,EAAO,EAAGg8C,GAChCA,EAAUrC,iBAAmB9wC,KAED,oBAAjBmzC,EAAU5xC,KACnBvB,KAAKoxC,YAAY+B,EAAU5xC,MAAQ4xC,GAKrCC,EAAgBA,GAAiBD,EAAUlpC,MAAQmmC,GAAY+C,EAAUlpC,QAErEmpC,IACFpzC,KAAKqxC,gBAAgB+B,GAAiBD,EACtCnzC,KAAKqxC,gBAAgB95C,GAAY67C,IAAkBD,GAKzB,oBAAjBA,EAAU/qC,IAAqB+qC,EAAU/qC,KAAM,CAExD,IAAI2V,EAAU,KAEV/d,KAAKmxC,UAAUh6C,EAAQ,KAErB6I,KAAKmxC,UAAUh6C,EAAQ,GAAG+5C,IAC5BnzB,EAAU/d,KAAKmxC,UAAUh6C,EAAQ,GAAG+5C,IAC3BtN,GAAK5jC,KAAKmxC,UAAUh6C,EAAQ,MACrC4mB,EAAU/d,KAAKmxC,UAAUh6C,EAAQ,KAIrC6I,KAAK0yC,YAAY1yB,aAAamzB,EAAU/qC,KAAM2V,GAIhD,OAAOo1B,GAWTxtB,EAAOlJ,YAAc,SAAqB02B,GAKxC,GAJyB,kBAAdA,IACTA,EAAYnzC,KAAK8yC,SAASK,IAGvBA,GAAcnzC,KAAKmxC,UAAxB,CAMA,IAFA,IAAIsC,GAAa,EAER17C,EAAIiI,KAAKmxC,UAAUn5C,OAAS,EAAGD,GAAK,EAAGA,IAC9C,GAAIiI,KAAKmxC,UAAUp5C,KAAOo7C,EAAW,CACnCM,GAAa,EACbzzC,KAAKmxC,UAAU5hC,OAAOxX,EAAG,GACzB,MAIJ,GAAK07C,EAAL,CAIAN,EAAUrC,iBAAmB,KAC7B9wC,KAAKoxC,YAAY+B,EAAU5xC,MAAQ,KACnCvB,KAAKqxC,gBAAgBjB,GAAY+C,EAAUlpC,SAAW,KACtDjK,KAAKqxC,gBAAgB95C,GAAY47C,EAAUlpC,SAAW,KACtD,IAAIypC,EAASP,EAAU/qC,KAEnBsrC,GAAUA,EAAOzqC,aAAejJ,KAAK0yC,aACvC1yC,KAAK0yC,YAAYj2B,YAAY02B,EAAU/qC,SAQ3Cud,EAAOmsB,aAAe,WACpB,IAAIhsB,EAAQ9lB,KAER4yC,EAAW5yC,KAAK+wC,SAAS6B,SAE7B,GAAIA,EAAU,CAEZ,IAwCIe,EAxCAC,EAAgB5zC,KAAK+wC,SAErB8C,EAAY,SAAmB73B,GACjC,IAAI/R,EAAO+R,EAAM/R,KACb+hC,EAAOhwB,EAAMgwB,KAUjB,QAN4B1yC,IAAxBs6C,EAAc3pC,KAChB+hC,EAAO4H,EAAc3pC,KAKV,IAAT+hC,EAAJ,EAMa,IAATA,IACFA,EAAO,IAMTA,EAAK8H,cAAgBhuB,EAAMirB,SAAS+C,cAKpC,IAAIj4B,EAAWiK,EAAMotB,SAASjpC,EAAM+hC,GAEhCnwB,IACFiK,EAAM7b,GAAQ4R,KAMdk4B,EAAOtD,EAAU+C,aAAa,QAGhCG,EADEl8C,MAAMC,QAAQk7C,GACEA,EAEA71C,OAAOkwB,KAAK2lB,GAGhCe,EAEC/xC,OAAO7E,OAAOkwB,KAAKjtB,KAAK+wC,UAAUtf,QAAO,SAAUzV,GAClD,OAAQ23B,EAAgBK,MAAK,SAAUC,GACrC,MAAsB,kBAAXA,EACFj4B,IAAUi4B,EAGZj4B,IAAUi4B,EAAOhqC,YAExBnI,KAAI,SAAUka,GAChB,IAAI/R,EACA+hC,EAUJ,MARqB,kBAAVhwB,GACT/R,EAAO+R,EACPgwB,EAAO4G,EAAS3oC,IAAS6b,EAAMirB,SAAS9mC,IAAS,KAEjDA,EAAO+R,EAAM/R,KACb+hC,EAAOhwB,GAGF,CACL/R,KAAMA,EACN+hC,KAAMA,MAEPva,QAAO,SAAUzV,GAIlB,IAAIZ,EAAIq1B,EAAU+C,aAAax3B,EAAMgwB,KAAKsH,gBAAkBlD,GAAYp0B,EAAM/R,OAC9E,OAAOmR,IAAM24B,EAAKG,OAAO94B,MACxBnkB,QAAQ48C,KAafluB,EAAOwuB,cAAgB,WAGrB,MAAO,IAYTxuB,EAAO+qB,MAAQ,SAAejrC,EAAI3K,GAKhC,QAJa,IAATA,IACFA,GAAO,GAGJ2K,EAIL,OAAKzF,KAAKo0C,cAMNt5C,EACF2K,EAAG1F,KAAKC,MAGRA,KAAK7G,WAAWsM,EAAI,KATpBzF,KAAKq0C,YAAcr0C,KAAKq0C,aAAe,QACvCr0C,KAAKq0C,YAAY18C,KAAK8N,KAkB1BkgB,EAAO2uB,aAAe,WACpBt0C,KAAKo0C,UAAW,EAEhBp0C,KAAK7G,YAAW,WACd,IAAIo7C,EAAav0C,KAAKq0C,YAEtBr0C,KAAKq0C,YAAc,GAEfE,GAAcA,EAAWv8C,OAAS,GACpCu8C,EAAWt9C,SAAQ,SAAUwO,GAC3BA,EAAG1F,KAAKC,QACPA,MAWLA,KAAKI,QAAQ,WACZ,IAsBLulB,EAAOwiB,EAAI,SAAanE,EAAUC,GAChC,OAAOkE,GAAEnE,EAAUC,GAAWjkC,KAAK0yC,cAsBrC/sB,EAAOyiB,GAAK,SAAcpE,EAAUC,GAClC,OAAOmE,GAAGpE,EAAUC,GAAWjkC,KAAK0yC,cActC/sB,EAAOif,SAAW,SAAoBC,GACpC,OAAOD,GAAS5kC,KAAKkxC,IAAKrM,IAU5Blf,EAAOqf,SAAW,SAAoBC,GACpCD,GAAShlC,KAAKkxC,IAAKjM,IAUrBtf,EAAOwf,YAAc,SAAuBC,GAC1CD,GAAYnlC,KAAKkxC,IAAK9L,IAexBzf,EAAO0f,YAAc,SAAuBC,EAAeC,GACzDF,GAAYrlC,KAAKkxC,IAAK5L,EAAeC,IAQvC5f,EAAO6uB,KAAO,WACZx0C,KAAKmlC,YAAY,eAQnBxf,EAAO8uB,KAAO,WACZz0C,KAAKglC,SAAS,eAUhBrf,EAAO+uB,YAAc,WACnB10C,KAAKglC,SAAS,qBAUhBrf,EAAOgvB,cAAgB,WACrB30C,KAAKmlC,YAAY,qBAmBnBxf,EAAO9E,aAAe,SAAwBilB,GAC5C,OAAOjlB,GAAa7gB,KAAKkxC,IAAKpL,IAehCngB,EAAOrE,aAAe,SAAwBwkB,EAAWtuC,GACvD8pB,GAAathB,KAAKkxC,IAAKpL,EAAWtuC,IAYpCmuB,EAAOpE,gBAAkB,SAA2BukB,GAClDvkB,GAAgBvhB,KAAKkxC,IAAKpL,IAkB5BngB,EAAOmC,MAAQ,SAAexpB,EAAKs2C,GACjC,OAAO50C,KAAK60C,UAAU,QAASv2C,EAAKs2C,IAkBtCjvB,EAAOoC,OAAS,SAAgBzpB,EAAKs2C,GACnC,OAAO50C,KAAK60C,UAAU,SAAUv2C,EAAKs2C,IAavCjvB,EAAOmvB,WAAa,SAAoBhtB,EAAOC,GAE7C/nB,KAAK8nB,MAAMA,GAAO,GAClB9nB,KAAK+nB,OAAOA,IAgCdpC,EAAOkvB,UAAY,SAAmBE,EAAez2C,EAAKs2C,GACxD,QAAYt7C,IAARgF,EA0BF,OAxBY,OAARA,GAAgBA,IAAQA,IAC1BA,EAAM,IAIyB,KAA5B,GAAKA,GAAKlH,QAAQ,OAA6C,KAA7B,GAAKkH,GAAKlH,QAAQ,MACvD4I,KAAKkxC,IAAI5H,MAAMyL,GAAiBz2C,EAEhC0B,KAAKkxC,IAAI5H,MAAMyL,GADE,SAARz2C,EACuB,GAEAA,EAAM,UAInCs2C,GAOH50C,KAAKI,QAAQ,oBAQjB,IAAKJ,KAAKkxC,IACR,OAAO,EAIT,IAAI3M,EAAMvkC,KAAKkxC,IAAI5H,MAAMyL,GACrBC,EAAUzQ,EAAIntC,QAAQ,MAE1B,OAAiB,IAAb49C,EAEK5tB,SAASmd,EAAIjtC,MAAM,EAAG09C,GAAU,IAMlC5tB,SAASpnB,KAAKkxC,IAAI,SAAWd,GAAY2E,IAAiB,KAgBnEpvB,EAAOsvB,iBAAmB,SAA0BF,GAClD,IAAIG,EAAwB,EAE5B,GAAsB,UAAlBH,GAA+C,WAAlBA,EAC/B,MAAM,IAAIp8C,MAAM,uDASlB,GANAu8C,EAAwBlS,GAAchjC,KAAKkxC,IAAK6D,GAEhDG,EAAwBhuB,WAAWguB,GAIL,IAA1BA,GAA+BvwB,MAAMuwB,GAAwB,CAC/D,IAAIC,EAAO,SAAW/E,GAAY2E,GAClCG,EAAwBl1C,KAAKkxC,IAAIiE,GAGnC,OAAOD,GA0BTvvB,EAAOyvB,kBAAoB,WACzB,MAAO,CACLttB,MAAO9nB,KAAKi1C,iBAAiB,SAC7BltB,OAAQ/nB,KAAKi1C,iBAAiB,YAalCtvB,EAAO0vB,aAAe,WACpB,OAAOr1C,KAAKi1C,iBAAiB,UAY/BtvB,EAAO2vB,cAAgB,WACrB,OAAOt1C,KAAKi1C,iBAAiB,WAO/BtvB,EAAOqgB,MAAQ,WACbhmC,KAAKkxC,IAAIlL,SAOXrgB,EAAO4vB,KAAO,WACZv1C,KAAKkxC,IAAIqE,QAWX5vB,EAAO6vB,cAAgB,SAAuBhlC,GACxCxQ,KAAK4wC,UAGPpgC,EAAM+6B,kBACNvrC,KAAK4wC,QAAQ4E,cAAchlC,KAc/BmV,EAAO8vB,eAAiB,SAAwBjlC,GAC9CxQ,KAAKw1C,cAAchlC,IAiBrBmV,EAAO+vB,cAAgB,WAErB,IAQIC,EARAC,EAAa,EACbC,EAAa,KAIbC,EAAuB,GAEvBC,EAAqB,IAEzB/1C,KAAKoP,GAAG,cAAc,SAAUoB,GAED,IAAzBA,EAAMwlC,QAAQh+C,SAEhB69C,EAAa,CACXpO,MAAOj3B,EAAMwlC,QAAQ,GAAGvO,MACxBD,MAAOh3B,EAAMwlC,QAAQ,GAAGxO,OAG1BoO,EAAa,IAAS5L,YAAYta,MAElCimB,GAAa,MAGjB31C,KAAKoP,GAAG,aAAa,SAAUoB,GAE7B,GAAIA,EAAMwlC,QAAQh+C,OAAS,EACzB29C,GAAa,OACR,GAAIE,EAAY,CAGrB,IAAII,EAAQzlC,EAAMwlC,QAAQ,GAAGvO,MAAQoO,EAAWpO,MAC5CyO,EAAQ1lC,EAAMwlC,QAAQ,GAAGxO,MAAQqO,EAAWrO,MAC5C2O,EAAgB32C,KAAK42C,KAAKH,EAAQA,EAAQC,EAAQA,GAElDC,EAAgBL,IAClBH,GAAa,OAKnB,IAAIU,EAAQ,WACVV,GAAa,GAIf31C,KAAKoP,GAAG,aAAcinC,GACtBr2C,KAAKoP,GAAG,cAAeinC,GAGvBr2C,KAAKoP,GAAG,YAAY,SAAUoB,GAG5B,GAFAqlC,EAAa,MAEM,IAAfF,EAAqB,CAEvB,IAAIW,EAAY,IAAStM,YAAYta,MAAQkmB,EAEzCU,EAAYP,IAEdvlC,EAAMw6B,iBAQNhrC,KAAKI,QAAQ,aAgCrBulB,EAAOqsB,oBAAsB,WAE3B,GAAKhyC,KAAKgpC,UAAahpC,KAAKgpC,SAASuN,mBAArC,CAKA,IACIC,EADAC,EAAS7qC,GAAK5L,KAAKgpC,SAAUhpC,KAAKgpC,SAASuN,oBAE/Cv2C,KAAKoP,GAAG,cAAc,WACpBqnC,IAIAz2C,KAAK02C,cAAcF,GAEnBA,EAAex2C,KAAK22C,YAAYF,EAAQ,QAG1C,IAAIG,EAAW,SAAkBpmC,GAC/BimC,IAEAz2C,KAAK02C,cAAcF,IAGrBx2C,KAAKoP,GAAG,YAAaqnC,GACrBz2C,KAAKoP,GAAG,WAAYwnC,GACpB52C,KAAKoP,GAAG,cAAewnC,KAqCzBjxB,EAAOxsB,WAAa,SAAoBsM,EAAI9J,GAC1C,IAIIk7C,EAJAnwB,EAAS1mB,KAeb,OAVAyF,EAAKmG,GAAK5L,KAAMyF,GAChBzF,KAAK82C,wBACLD,EAAY,IAAS19C,YAAW,WAC1ButB,EAAOgrB,eAAelM,IAAIqR,IAC5BnwB,EAAOgrB,eAAe,UAAUmF,GAGlCpxC,MACC9J,GACHqE,KAAK0xC,eAAexM,IAAI2R,GACjBA,GAmBTlxB,EAAO5rB,aAAe,SAAsB88C,GAM1C,OALI72C,KAAK0xC,eAAelM,IAAIqR,KAC1B72C,KAAK0xC,eAAe,UAAUmF,GAC9B,IAAS98C,aAAa88C,IAGjBA,GAwBTlxB,EAAOgxB,YAAc,SAAqBlxC,EAAIsxC,GAC5CtxC,EAAKmG,GAAK5L,KAAMyF,GAChBzF,KAAK82C,wBACL,IAAIE,EAAa,IAASL,YAAYlxC,EAAIsxC,GAE1C,OADA/2C,KAAK2xC,gBAAgBzM,IAAI8R,GAClBA,GAmBTrxB,EAAO+wB,cAAgB,SAAuBM,GAM5C,OALIh3C,KAAK2xC,gBAAgBnM,IAAIwR,KAC3Bh3C,KAAK2xC,gBAAgB,UAAUqF,GAC/B,IAASN,cAAcM,IAGlBA,GA6BTrxB,EAAOsxB,sBAAwB,SAA+BxxC,GAC5D,IAUIlE,EAVAinB,EAASxoB,KAGb,OAAKA,KAAKk3C,cAIVl3C,KAAK82C,wBAILrxC,EAAKmG,GAAK5L,KAAMyF,GAChBlE,EAAK,IAAS01C,uBAAsB,WAC9BzuB,EAAOopB,QAAQpM,IAAIjkC,IACrBinB,EAAOopB,QAAQ,UAAUrwC,GAG3BkE,OAEFzF,KAAK4xC,QAAQ1M,IAAI3jC,GACVA,GAhBEvB,KAAK7G,WAAWsM,EAAI,IAAO,KAoCtCkgB,EAAOwxB,qBAAuB,SAA8B51C,GAE1D,OAAKvB,KAAKk3C,cAINl3C,KAAK4xC,QAAQpM,IAAIjkC,KACnBvB,KAAK4xC,QAAQ,UAAUrwC,GACvB,IAAS41C,qBAAqB51C,IAGzBA,GAREvB,KAAKjG,aAAawH,IAsB7BokB,EAAOmxB,sBAAwB,WAC7B,IAAIM,EAASp3C,KAETA,KAAK6xC,2BAIT7xC,KAAK6xC,0BAA2B,EAChC7xC,KAAK2sC,IAAI,WAAW,WAClB,CAAC,CAAC,UAAW,wBAAyB,CAAC,iBAAkB,gBAAiB,CAAC,kBAAmB,kBAAkB11C,SAAQ,SAAUsxB,GAChI,IAAI8uB,EAAS9uB,EAAK,GACd+uB,EAAa/uB,EAAK,GAEtB6uB,EAAOC,GAAQpgD,QAAQmgD,EAAOE,GAAaF,MAE7CA,EAAOvF,0BAA2B,OAwBtCpB,EAAU8G,kBAAoB,SAA2BttC,EAAMutC,GAC7D,GAAoB,kBAATvtC,IAAsBA,EAC/B,MAAM,IAAItR,MAAM,4BAA+BsR,EAAO,kCAGxD,IAMMwtC,EANF1D,EAAOtD,EAAU+C,aAAa,QAE9BU,EAASH,GAAQA,EAAKG,OAAOsD,GAC7BE,EAASjH,IAAc+G,GAAuB/G,EAAU3zC,UAAU66C,cAAcH,EAAoB16C,WAExG,GAAIo3C,IAAWwD,EASb,MALED,EADEvD,EACO,qDAEA,+BAGL,IAAIv7C,MAAM,uBAA0BsR,EAAO,MAASwtC,EAAS,KAGrExtC,EAAOmmC,GAAYnmC,GAEdwmC,EAAUmH,cACbnH,EAAUmH,YAAc,IAG1B,IAAIC,EAASpH,EAAU+C,aAAa,UAEpC,GAAa,WAATvpC,GAAqB4tC,GAAUA,EAAOC,QAAS,CACjD,IAAIA,EAAUD,EAAOC,QACjBC,EAAch7C,OAAOkwB,KAAK6qB,GAK9B,GAAIA,GAAWC,EAAY//C,OAAS,GAAK+/C,EAAYj2C,KAAI,SAAUk2C,GACjE,OAAOF,EAAQE,MACd9J,MAAM5K,SACP,MAAM,IAAI3qC,MAAM,oEAMpB,OAFA83C,EAAUmH,YAAY3tC,GAAQutC,EAC9B/G,EAAUmH,YAAYrgD,GAAY0S,IAASutC,EACpCA,GAkBT/G,EAAU+C,aAAe,SAAsBvpC,GAC7C,GAAKA,GAASwmC,EAAUmH,YAIxB,OAAOnH,EAAUmH,YAAY3tC,IAGxBwmC,EApqDoB,GAgrD7B,GAAU3zC,UAAUo6C,aAAyD,oBAAnC,IAASD,uBAAiF,oBAAlC,IAASE,qBAC3G,GAAUI,kBAAkB,YAAa,IAMzC,IAAIU,GAAa,IAASC,WAAa,IAASA,UAAUC,WAAa,GACnEC,GAAmB,yBAAyBhyB,KAAK6xB,IACjDI,GAAqBD,GAAmBlxB,WAAWkxB,GAAiBE,OAAS,KAS7EC,GAAU,QAAQj0C,KAAK2zC,IASvBO,GAAc,WAChB,IAAI/xB,EAAQwxB,GAAWxxB,MAAM,cAE7B,OAAIA,GAASA,EAAM,GACVA,EAAM,GAGR,KAPS,GAiBdgyB,GAAa,WAAWn0C,KAAK2zC,IAS7BS,GAAkB,WAGpB,IAAIjyB,EAAQwxB,GAAWxxB,MAAM,0CAE7B,IAAKA,EACH,OAAO,KAGT,IAAIkyB,EAAQlyB,EAAM,IAAMS,WAAWT,EAAM,IACrCmyB,EAAQnyB,EAAM,IAAMS,WAAWT,EAAM,IAEzC,OAAIkyB,GAASC,EACJ1xB,WAAWT,EAAM,GAAK,IAAMA,EAAM,IAChCkyB,GAIJ,KAlBa,GA4BlBE,GAAoBJ,IAAcC,GAAkB,GAAKL,GAAqB,IAS9ES,GAAa,WAAWx0C,KAAK2zC,IAS7Bc,GAAU,OAAOz0C,KAAK2zC,IAYtBe,IAAaD,KAAY,UAAUz0C,KAAK2zC,KAAe,SAAS3zC,KAAK2zC,KASrEgB,GAAiB,WACnB,IAAIxyB,EAAQwxB,GAAWxxB,MAAM,yBAE7B,OAAIA,GAASA,EAAM,GACVS,WAAWT,EAAM,IAGnB,KAPY,GAiBjByyB,GAAa,WACf,IAAIpiD,EAAS,kBAAkBsvB,KAAK6xB,IAChC32C,EAAUxK,GAAUowB,WAAWpwB,EAAO,IAO1C,OALKwK,GAAW,gBAAgBgD,KAAK2zC,KAAe,UAAU3zC,KAAK2zC,MAEjE32C,EAAU,IAGLA,EATQ,GAmBb63C,GAAY,UAAU70C,KAAK2zC,MAAgBe,KAAcP,KAAeM,GASxEK,GAAa,WAAW90C,KAAK2zC,IAS7BoB,GAAgB3V,OAAa,iBAAkB,KAAY,IAASwU,UAAUoB,gBAAkB,IAASC,eAAiB,IAAS5V,oBAAoB,IAAS4V,eAShKC,GAAU,QAAQl1C,KAAK2zC,KAAekB,IAAaE,KAAkB,UAAU/0C,KAAK2zC,IAYpFwB,GAAY,UAAUn1C,KAAK2zC,MAAgBuB,GAS3CE,GAASD,IAAaD,IAAWjB,GASjCoB,IAAiBR,IAAaO,MAAYV,GAE1CY,GAAuB78C,OAAOurC,OAAO,CACvCprC,UAAW,KACXq7C,QAASA,GACTC,YAAaA,GACbC,WAAYA,GACZC,gBAAiBA,GACjBG,kBAAmBA,GACnBC,WAAYA,GACZC,QAASA,GACTC,UAAWA,GACXC,eAAgBA,GAChBC,WAAYA,GACZC,UAAWA,GACXC,WAAYA,GACZC,cAAeA,GACfG,QAASA,GACTC,UAAWA,GACXC,OAAQA,GACRC,cAAeA,KAwDjB,SAASE,GAAWC,EAAQ3iD,EAAO4iD,GACjC,GAAqB,kBAAV5iD,GAAsBA,EAAQ,GAAKA,EAAQ4iD,EACpD,MAAM,IAAIphD,MAAM,sBAAwBmhD,EAAS,0CAA4C3iD,EAAQ,wCAA0C4iD,EAAW,MA6B9J,SAASC,GAASF,EAAQG,EAAY1rB,EAAQ2rB,GAE5C,OADAL,GAAWC,EAAQI,EAAY3rB,EAAOv2B,OAAS,GACxCu2B,EAAO2rB,GAAYD,GAW5B,SAASE,GAAoB5rB,GAC3B,YAAej1B,IAAXi1B,GAA0C,IAAlBA,EAAOv2B,OAC1B,CACLA,OAAQ,EACRyG,MAAO,WACL,MAAM,IAAI9F,MAAM,oCAElB+F,IAAK,WACH,MAAM,IAAI/F,MAAM,qCAKf,CACLX,OAAQu2B,EAAOv2B,OACfyG,MAAOu7C,GAASpuC,KAAK,KAAM,QAAS,EAAG2iB,GACvC7vB,IAAKs7C,GAASpuC,KAAK,KAAM,MAAO,EAAG2iB,IAiBvC,SAAS6rB,GAAiB37C,EAAOC,GAC/B,OAAIjH,MAAMC,QAAQ+G,GACT07C,GAAoB17C,QACRnF,IAAVmF,QAA+BnF,IAARoF,EACzBy7C,KAGFA,GAAoB,CAAC,CAAC17C,EAAOC,KAoBtC,SAAS27C,GAAgBC,EAAUrzB,GACjC,IACIxoB,EACAC,EAFA67C,EAAmB,EAIvB,IAAKtzB,EACH,OAAO,EAGJqzB,GAAaA,EAAStiD,SACzBsiD,EAAWF,GAAiB,EAAG,IAGjC,IAAK,IAAIriD,EAAI,EAAGA,EAAIuiD,EAAStiD,OAAQD,IACnC0G,EAAQ67C,EAAS77C,MAAM1G,GACvB2G,EAAM47C,EAAS57C,IAAI3G,GAEf2G,EAAMuoB,IACRvoB,EAAMuoB,GAGRszB,GAAoB77C,EAAMD,EAG5B,OAAO87C,EAAmBtzB,EA2B5B,IAXA,IASIuzB,GATAC,GAAgB,CAClBC,UAAU,GAGRC,GAAS,CAAC,CAAC,oBAAqB,iBAAkB,oBAAqB,oBAAqB,mBAAoB,kBAAmB,cACvI,CAAC,0BAA2B,uBAAwB,0BAA2B,0BAA2B,yBAA0B,wBAAyB,uBAC7J,CAAC,uBAAwB,sBAAuB,uBAAwB,uBAAwB,sBAAuB,qBAAsB,oBAC7I,CAAC,sBAAuB,mBAAoB,sBAAuB,sBAAuB,qBAAsB,oBAAqB,mBACjIC,GAAUD,GAAO,GAGZ,GAAI,EAAG,GAAIA,GAAO3iD,OAAQ,KAEjC,GAAI2iD,GAAO,IAAG,KAAM,IAAU,CAC5BH,GAAaG,GAAO,IACpB,MAKJ,GAAIH,GAAY,CACd,IAAK,IAAIlb,GAAK,EAAGA,GAAKkb,GAAWxiD,OAAQsnC,KACvCmb,GAAcG,GAAQtb,KAAOkb,GAAWlb,IAG1Cmb,GAAcC,SAAWF,GAAW,KAAOI,GAAQ,GAwBrD,SAASC,GAAWrjD,GAGlB,GAAIA,aAAiBqjD,GACnB,OAAOrjD,EAGY,kBAAVA,EACTwI,KAAKnE,KAAOrE,EACc,kBAAVA,EAEhBwI,KAAKuZ,QAAU/hB,EACN,GAASA,KAGQ,kBAAfA,EAAMqE,OACfmE,KAAKnE,KAAOrE,EAAMqE,MAGpB,GAAOmE,KAAMxI,IAGVwI,KAAKuZ,UACRvZ,KAAKuZ,QAAUshC,GAAWC,gBAAgB96C,KAAKnE,OAAS,IAU5Dg/C,GAAW/9C,UAAUjB,KAAO,EAQ5Bg/C,GAAW/9C,UAAUyc,QAAU,GAW/BshC,GAAW/9C,UAAU1C,OAAS,KAe9BygD,GAAWE,WAAa,CAAC,mBAAoB,oBAAqB,oBAAqB,mBAAoB,8BAA+B,uBAQ1IF,GAAWC,gBAAkB,CAC3BE,EAAG,iCACHC,EAAG,8DACHC,EAAG,8HACHC,EAAG,qHACHC,EAAG,qEAIL,IAAK,IAAIC,GAAS,EAAGA,GAASR,GAAWE,WAAW/iD,OAAQqjD,KAC1DR,GAAWA,GAAWE,WAAWM,KAAWA,GAE5CR,GAAW/9C,UAAU+9C,GAAWE,WAAWM,KAAWA,GAYxD,SAASC,GAAU9jD,GACjB,YAAiB8B,IAAV9B,GAAiC,OAAVA,GAAwC,oBAAfA,EAAM+jD,KAY/D,SAASC,GAAehkD,GAClB8jD,GAAU9jD,IACZA,EAAM+jD,KAAK,MAAM,SAAU3hD,OAsB/B,IAAI6hD,GAAe,SAAsB13C,GACvC,IAAI0uC,EAAM,CAAC,OAAQ,QAAS,WAAY,KAAM,kCAAmC,OAAQ,OAAOtxC,QAAO,SAAUylB,EAAKqc,EAAMlrC,GAK1H,OAJIgM,EAAMk/B,KACRrc,EAAIqc,GAAQl/B,EAAMk/B,IAGbrc,IACN,CACD80B,KAAM33C,EAAM23C,MAAQjkD,MAAMqF,UAAUgF,IAAI/B,KAAKgE,EAAM23C,MAAM,SAAUC,GACjE,MAAO,CACLj7C,UAAWi7C,EAAIj7C,UACfk7C,QAASD,EAAIC,QACbxoC,KAAMuoC,EAAIvoC,KACV7R,GAAIo6C,EAAIp6C,SAId,OAAOkxC,GAgBLoJ,GAAmB,SAA0BC,GAC/C,IAAIC,EAAWD,EAAK1T,GAAG,SACnB4T,EAAYvkD,MAAMqF,UAAUgF,IAAI/B,KAAKg8C,GAAU,SAAUzkC,GAC3D,OAAOA,EAAEvT,SAEPD,EAASrM,MAAMqF,UAAUgF,IAAI/B,KAAKg8C,GAAU,SAAUE,GACxD,IAAIlhD,EAAO0gD,GAAaQ,EAAQl4C,OAMhC,OAJIk4C,EAAQhlC,MACVlc,EAAKkc,IAAMglC,EAAQhlC,KAGdlc,KAET,OAAO+I,EAAOlC,OAAOnK,MAAMqF,UAAU20B,OAAO1xB,KAAK+7C,EAAKI,cAAc,SAAUn4C,GAC5E,OAAqC,IAA9Bi4C,EAAU5kD,QAAQ2M,MACxBjC,IAAI25C,MAeLU,GAAmB,SAA0BphD,EAAM+gD,GAUrD,OATA/gD,EAAK9D,SAAQ,SAAU8M,GACrB,IAAIq4C,EAAaN,EAAKO,mBAAmBt4C,GAAOA,OAE3CA,EAAMkT,KAAOlT,EAAM23C,MACtB33C,EAAM23C,KAAKzkD,SAAQ,SAAU0kD,GAC3B,OAAOS,EAAWE,OAAOX,SAIxBG,EAAKI,cAGVK,GAAqB,CACvBV,iBAAkBA,GAClBM,iBAAkBA,GAClBV,aAAcA,IAGZe,GAAmB,mBAWnB,GAA2B,SAAUC,GAuCvC,SAASC,EAAY1T,EAAQ1wC,GAC3B,IAAIwtB,EA2BJ,OAzBAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM62B,QAAU72B,EAAM82B,eAAiB92B,EAAM+2B,gBAAiB,EAE9D/2B,EAAMg3B,WAAWh3B,EAAMirB,SAASgM,aAEhCj3B,EAAMzQ,QAAQyQ,EAAMirB,SAAS17B,SAK7ByQ,EAAM6sB,WAAa,GAAS,MAAO,CACjClP,UAAW+Y,GAAmB,YAC7B,CACDrpB,KAAM,aAERrN,EAAMk3B,QAAU,GAAS,IAAK,CAC5BvZ,UAAW+Y,GAAmB,gCAC9Bj7C,GAAIukB,EAAM1d,KAAKyY,aAAa,sBAE9BgX,GAAY/R,EAAMk3B,QAASl3B,EAAMm3B,eAEjCn3B,EAAMorB,IAAItqC,YAAYkf,EAAMk3B,SAE5Bl3B,EAAMorB,IAAItqC,YAAYkf,EAAM6sB,YAErB7sB,EAlET,IAAe42B,EAAaD,GA4E5B,IAAI92B,EAAS+2B,EAAY5/C,UAoazB,OAlaA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAWzjC,KAAKm0C,gBAChB+I,UAAW,GACV,CACD,mBAAoBl9C,KAAKuB,KAAO,eAChC,cAAe,OACf,aAAcvB,KAAKozB,QACnB,KAAQ,YAIZzN,EAAOlW,QAAU,WACfzP,KAAK2yC,WAAa,KAClB3yC,KAAKg9C,QAAU,KACfh9C,KAAKm9C,oBAAsB,KAE3BV,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAUpC2lB,EAAOwuB,cAAgB,WACrB,OAAOqI,GAAmB,eAAiBC,EAAW3/C,UAAUq3C,cAAcp0C,KAAKC,OAUrF2lB,EAAOyN,MAAQ,WACb,OAAOpzB,KAAKkyC,SAASlyC,KAAK+wC,SAAS3d,OAAS,iBAW9CzN,EAAOs3B,YAAc,WACnB,IAAIG,EAAOp9C,KAAK+wC,SAASkM,aAAej9C,KAAKkyC,SAAS,2BAMtD,OAJIlyC,KAAK88C,cACPM,GAAQ,IAAMp9C,KAAKkyC,SAAS,wFAGvBkL,GAUTz3B,EAAOpqB,KAAO,WACZ,IAAKyE,KAAK28C,QAAS,CACjB,IAAI3T,EAAShpC,KAAKgpC,SAQlBhpC,KAAKI,QAAQ,mBACbJ,KAAK28C,SAAU,GAGX38C,KAAK+wC,SAASsM,aAAer9C,KAAK48C,iBAAmB58C,KAAK68C,iBAC5D78C,KAAKs9C,OAKPt9C,KAAKu9C,aAAevU,EAAOwU,SAEvBx9C,KAAK+wC,SAAS0M,aAAez9C,KAAKu9C,aACpCvU,EAAO0U,QAGT19C,KAAKoP,GAAG,UAAWpP,KAAKw1C,eAExBx1C,KAAK29C,aAAe3U,EAAO4U,WAC3B5U,EAAO4U,UAAS,GAChB59C,KAAKw0C,OACLx0C,KAAK69C,oBACL79C,KAAKoI,KAAKkZ,aAAa,cAAe,SAQtCthB,KAAKI,QAAQ,aACbJ,KAAK48C,gBAAiB,IAc1Bj3B,EAAOm4B,OAAS,SAAgBtmD,GAK9B,MAJqB,mBAAVA,GACTwI,KAAKxI,EAAQ,OAAS,WAGjBwI,KAAK28C,SAWdh3B,EAAOo4B,MAAQ,WACb,GAAK/9C,KAAK28C,QAAV,CAIA,IAAI3T,EAAShpC,KAAKgpC,SAQlBhpC,KAAKI,QAAQ,oBACbJ,KAAK28C,SAAU,EAEX38C,KAAKu9C,aAAev9C,KAAK+wC,SAAS0M,aACpCzU,EAAO2H,OAGT3wC,KAAKsP,IAAI,UAAWtP,KAAKw1C,eAErBx1C,KAAK29C,cACP3U,EAAO4U,UAAS,GAGlB59C,KAAKy0C,OACLz0C,KAAKoI,KAAKkZ,aAAa,cAAe,QAQtCthB,KAAKI,QAAQ,cACbJ,KAAKg+C,mBAEDh+C,KAAK+wC,SAASkN,WAChBj+C,KAAKyP,YAcTkW,EAAOm3B,UAAY,SAAmBtlD,GACpC,GAAqB,mBAAVA,EAAqB,CAC9B,IAAIslD,EAAY98C,KAAKk+C,aAAe1mD,EAChCumD,EAAQ/9C,KAAK8yC,SAAS,eAE1B,GAAIgK,IAAciB,EAAO,CAGvB,IAAII,EAAOn+C,KAAK2yC,WAChB3yC,KAAK2yC,WAAa3yC,KAAKkxC,IACvB6M,EAAQ/9C,KAAKkzC,SAAS,cAAe,CACnCkL,YAAa,uBAEfp+C,KAAK2yC,WAAawL,EAClBn+C,KAAKoP,GAAG2uC,EAAO,QAAS/9C,KAAK+9C,QAI1BjB,GAAaiB,IAChB/9C,KAAKsP,IAAIyuC,EAAO,QAAS/9C,KAAK+9C,OAC9B/9C,KAAKyc,YAAYshC,GACjBA,EAAMtuC,WAIV,OAAOzP,KAAKk+C,YAQdv4B,EAAO23B,KAAO,WACZt9C,KAAKq+C,SAASr+C,KAAKqV,YAcrBsQ,EAAO04B,SAAW,SAAkBhpC,GAClC,IAAIq9B,EAAY1yC,KAAK0yC,YACjB4L,EAAW5L,EAAUzpC,WACrBs1C,EAAgB7L,EAAUn3B,YAQ9Bvb,KAAKI,QAAQ,mBACbJ,KAAK68C,gBAAiB,EAGtByB,EAAS7hC,YAAYi2B,GACrB1yC,KAAKw+C,QACL1W,GAAc4K,EAAWr9B,GAQzBrV,KAAKI,QAAQ,aAETm+C,EACFD,EAASt+B,aAAa0yB,EAAW6L,GAEjCD,EAAS13C,YAAY8rC,GAIvB,IAAI+L,EAAcz+C,KAAK8yC,SAAS,eAE5B2L,GACFH,EAAS13C,YAAY63C,EAAYvN,MAWrCvrB,EAAO64B,MAAQ,WAObx+C,KAAKI,QAAQ,oBACbwnC,GAAQ5nC,KAAK0yC,aAQb1yC,KAAKI,QAAQ,eAmBfulB,EAAOtQ,QAAU,SAAiB7d,GAKhC,MAJqB,qBAAVA,IACTwI,KAAK0+C,SAAWlnD,GAGXwI,KAAK0+C,UASd/4B,EAAOk4B,kBAAoB,WACzB,IAAIc,EAAW,IAASC,cACpBC,EAAW7+C,KAAK4wC,QAAQM,IAC5BlxC,KAAKm9C,oBAAsB,MAEvB0B,EAAS9Z,SAAS4Z,IAAaE,IAAaF,KAC9C3+C,KAAKm9C,oBAAsBwB,EAC3B3+C,KAAKgmC,UAUTrgB,EAAOq4B,iBAAmB,WACpBh+C,KAAKm9C,sBACPn9C,KAAKm9C,oBAAoBnX,QACzBhmC,KAAKm9C,oBAAsB,OAU/Bx3B,EAAO6vB,cAAgB,SAAuBhlC,GAI5C,GAFAA,EAAM+6B,kBAEF,IAAQuT,WAAWtuC,EAAO,WAAaxQ,KAAK88C,YAG9C,OAFAtsC,EAAMw6B,sBACNhrC,KAAK+9C,QAKP,GAAK,IAAQe,WAAWtuC,EAAO,OAA/B,CAQA,IAJA,IAEIuuC,EAFAC,EAAeh/C,KAAKi/C,gBACpBN,EAAW3+C,KAAKkxC,IAAIhN,cAAc,UAG7BnsC,EAAI,EAAGA,EAAIinD,EAAahnD,OAAQD,IACvC,GAAI4mD,IAAaK,EAAajnD,GAAI,CAChCgnD,EAAahnD,EACb,MAIA,IAAS6mD,gBAAkB5+C,KAAKkxC,MAClC6N,EAAa,GAGXvuC,EAAM0uC,UAA2B,IAAfH,GACpBC,EAAaA,EAAahnD,OAAS,GAAGguC,QACtCx1B,EAAMw6B,kBACIx6B,EAAM0uC,UAAYH,IAAeC,EAAahnD,OAAS,IACjEgnD,EAAa,GAAGhZ,QAChBx1B,EAAMw6B,oBAUVrlB,EAAOs5B,cAAgB,WACrB,IAAIE,EAAcn/C,KAAKkxC,IAAIkO,iBAAiB,KAC5C,OAAO3nD,MAAMqF,UAAU20B,OAAO1xB,KAAKo/C,GAAa,SAAUnjC,GACxD,OAAQA,aAAiB,IAASqjC,mBAAqBrjC,aAAiB,IAASsjC,kBAAoBtjC,EAAMoF,aAAa,UAAYpF,aAAiB,IAASujC,kBAAoBvjC,aAAiB,IAASwjC,mBAAqBxjC,aAAiB,IAASyjC,qBAAuBzjC,aAAiB,IAAS0jC,qBAAuB1jC,EAAMoF,aAAa,aAAepF,aAAiB,IAAS2jC,mBAAqB3jC,aAAiB,IAAS4jC,mBAAqB5jC,aAAiB,IAAS6jC,kBAAoB7jC,EAAMoF,aAAa,cAAmD,IAApCpF,EAAM6E,aAAa,aAAsB7E,EAAMoF,aAAa,uBAI5kBs7B,EAjfsB,CAkf7B,IASF,GAAY5/C,UAAUi0C,SAAW,CAC/B0M,aAAa,EACbQ,WAAW,GAEb,GAAU1G,kBAAkB,cAAe,IAS3C,IAAI,GAAyB,SAAUuI,GAWrC,SAASC,EAAUj8C,GACjB,IAAIgiB,OAEW,IAAXhiB,IACFA,EAAS,IAGXgiB,EAAQg6B,EAAa//C,KAAKC,OAASA,KACnC8lB,EAAMk6B,QAAU,GAQhBjjD,OAAO6lB,eAAe,IAAuBkD,GAAQ,SAAU,CAC7DhD,IAAK,WACH,OAAO9iB,KAAKggD,QAAQhoD,UAIxB,IAAK,IAAID,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IACjC+tB,EAAMm6B,SAASn8C,EAAO/L,IAGxB,OAAO+tB,EApCT,IAAei6B,EAAWD,GAgD1B,IAAIn6B,EAASo6B,EAAUjjD,UAsGvB,OApGA6oB,EAAOs6B,SAAW,SAAkBl8C,GAClC,IAAI5M,EAAQ6I,KAAKggD,QAAQhoD,OAEnB,GAAKb,KAAS6I,MAClBjD,OAAO6lB,eAAe5iB,KAAM7I,EAAO,CACjC2rB,IAAK,WACH,OAAO9iB,KAAKggD,QAAQ7oD,OAMW,IAAjC6I,KAAKggD,QAAQ5oD,QAAQ2M,KACvB/D,KAAKggD,QAAQroD,KAAKoM,GAUlB/D,KAAKI,QAAQ,CACX2D,MAAOA,EACPpE,KAAM,WACN2J,OAAQtJ,SAcd2lB,EAAOu6B,YAAc,SAAqBC,GAGxC,IAFA,IAAIp8C,EAEKhM,EAAI,EAAGkO,EAAIjG,KAAKhI,OAAQD,EAAIkO,EAAGlO,IACtC,GAAIiI,KAAKjI,KAAOooD,EAAQ,CACtBp8C,EAAQ/D,KAAKjI,GAETgM,EAAMuL,KACRvL,EAAMuL,MAGRtP,KAAKggD,QAAQzwC,OAAOxX,EAAG,GACvB,MAICgM,GAaL/D,KAAKI,QAAQ,CACX2D,MAAOA,EACPpE,KAAM,cACN2J,OAAQtJ,QAaZ2lB,EAAOy6B,aAAe,SAAsB7+C,GAG1C,IAFA,IAAIzK,EAAS,KAEJiB,EAAI,EAAGkO,EAAIjG,KAAKhI,OAAQD,EAAIkO,EAAGlO,IAAK,CAC3C,IAAIgM,EAAQ/D,KAAKjI,GAEjB,GAAIgM,EAAMxC,KAAOA,EAAI,CACnBzK,EAASiN,EACT,OAIJ,OAAOjN,GAGFipD,EAvJoB,CAwJ3BtS,IAsBF,IAAK,IAAI,MANT,GAAU3wC,UAAU4wC,eAAiB,CACnC2S,OAAQ,SACRC,SAAU,WACVC,YAAa,eAGG,GAAUzjD,UAAU4wC,eACpC,GAAU5wC,UAAU,KAAO,IAAS,KAgBtC,IAAI0jD,GAAgB,SAAuBzmC,EAAMhW,GAC/C,IAAK,IAAIhM,EAAI,EAAGA,EAAIgiB,EAAK/hB,OAAQD,IAC1BgF,OAAOkwB,KAAKlT,EAAKhiB,IAAIC,QAAU+L,EAAMxC,KAAOwY,EAAKhiB,GAAGwJ,KAKzDwY,EAAKhiB,GAAG0oD,SAAU,IAWlB,GAA8B,SAAUC,GAS1C,SAASC,EAAe78C,GACtB,IAAIgiB,OAEW,IAAXhiB,IACFA,EAAS,IAKX,IAAK,IAAI/L,EAAI+L,EAAO9L,OAAS,EAAGD,GAAK,EAAGA,IACtC,GAAI+L,EAAO/L,GAAG0oD,QAAS,CACrBD,GAAc18C,EAAQA,EAAO/L,IAC7B,MAMJ,OAFA+tB,EAAQ46B,EAAW3gD,KAAKC,KAAM8D,IAAW9D,KACzC8lB,EAAM86B,WAAY,EACX96B,EA1BT,IAAe66B,EAAgBD,GAsC/B,IAAI/6B,EAASg7B,EAAe7jD,UAgD5B,OA9CA6oB,EAAOs6B,SAAW,SAAkBl8C,GAClC,IAAI2iB,EAAS1mB,KAET+D,EAAM08C,SACRD,GAAcxgD,KAAM+D,GAGtB28C,EAAW5jD,UAAUmjD,SAASlgD,KAAKC,KAAM+D,GAGpCA,EAAMslC,mBAIXtlC,EAAM88C,eAAiB,WAIjBn6B,EAAOk6B,YAIXl6B,EAAOk6B,WAAY,EACnBJ,GAAc95B,EAAQ3iB,GACtB2iB,EAAOk6B,WAAY,EAEnBl6B,EAAOtmB,QAAQ,YAQjB2D,EAAMslC,iBAAiB,gBAAiBtlC,EAAM88C,kBAGhDl7B,EAAOu6B,YAAc,SAAqBC,GACxCO,EAAW5jD,UAAUojD,YAAYngD,KAAKC,KAAMmgD,GAExCA,EAAO/W,qBAAuB+W,EAAOU,iBACvCV,EAAO/W,oBAAoB,gBAAiB+W,EAAOU,gBACnDV,EAAOU,eAAiB,OAIrBF,EAvFyB,CAwFhC,IAcEG,GAAkB,SAAuB/mC,EAAMhW,GACjD,IAAK,IAAIhM,EAAI,EAAGA,EAAIgiB,EAAK/hB,OAAQD,IAC1BgF,OAAOkwB,KAAKlT,EAAKhiB,IAAIC,QAAU+L,EAAMxC,KAAOwY,EAAKhiB,GAAGwJ,KAKzDwY,EAAKhiB,GAAGgpD,UAAW,IAWnB,GAA8B,SAAUL,GAS1C,SAASM,EAAel9C,GACtB,IAAIgiB,OAEW,IAAXhiB,IACFA,EAAS,IAKX,IAAK,IAAI/L,EAAI+L,EAAO9L,OAAS,EAAGD,GAAK,EAAGA,IACtC,GAAI+L,EAAO/L,GAAGgpD,SAAU,CACtBD,GAAgBh9C,EAAQA,EAAO/L,IAC/B,MAuBJ,OAnBA+tB,EAAQ46B,EAAW3gD,KAAKC,KAAM8D,IAAW9D,KACzC8lB,EAAM86B,WAAY,EAMlB7jD,OAAO6lB,eAAe,IAAuBkD,GAAQ,gBAAiB,CACpEhD,IAAK,WACH,IAAK,IAAIwc,EAAK,EAAGA,EAAKt/B,KAAKhI,OAAQsnC,IACjC,GAAIt/B,KAAKs/B,GAAIyhB,SACX,OAAOzhB,EAIX,OAAQ,GAEVtc,IAAK,eAEA8C,EA3CT,IAAek7B,EAAgBN,GAuD/B,IAAI/6B,EAASq7B,EAAelkD,UA6C5B,OA3CA6oB,EAAOs6B,SAAW,SAAkBl8C,GAClC,IAAI2iB,EAAS1mB,KAET+D,EAAMg9C,UACRD,GAAgB9gD,KAAM+D,GAGxB28C,EAAW5jD,UAAUmjD,SAASlgD,KAAKC,KAAM+D,GAGpCA,EAAMslC,mBAIXtlC,EAAMk9C,gBAAkB,WAClBv6B,EAAOk6B,YAIXl6B,EAAOk6B,WAAY,EACnBE,GAAgBp6B,EAAQ3iB,GACxB2iB,EAAOk6B,WAAY,EAEnBl6B,EAAOtmB,QAAQ,YAQjB2D,EAAMslC,iBAAiB,iBAAkBtlC,EAAMk9C,mBAGjDt7B,EAAOu6B,YAAc,SAAqBC,GACxCO,EAAW5jD,UAAUojD,YAAYngD,KAAKC,KAAMmgD,GAExCA,EAAO/W,qBAAuB+W,EAAOc,kBACvCd,EAAO/W,oBAAoB,iBAAkB+W,EAAOc,iBACpDd,EAAOc,gBAAkB,OAItBD,EArGyB,CAsGhC,IASE,GAA6B,SAAUN,GAGzC,SAASQ,IACP,OAAOR,EAAW7+C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAekhD,EAAeR,GAM9B,IAAI/6B,EAASu7B,EAAcpkD,UAuD3B,OA7CA6oB,EAAOs6B,SAAW,SAAkBl8C,GAClC,IAAI+hB,EAAQ9lB,KAEZ0gD,EAAW5jD,UAAUmjD,SAASlgD,KAAKC,KAAM+D,GAEpC/D,KAAKmhD,eACRnhD,KAAKmhD,aAAe,WAClB,OAAOr7B,EAAM+nB,aAAa,YAIzB7tC,KAAKohD,gCACRphD,KAAKqhD,+BAAiC,WACpC,OAAOv7B,EAAM1lB,QAAQ,4BASzB2D,EAAMslC,iBAAiB,aAAcrpC,KAAKmhD,cAC1C,IAAIG,EAA2B,CAAC,WAAY,aAEU,IAAlDA,EAAyBlqD,QAAQ2M,EAAMw9C,OACzCx9C,EAAMslC,iBAAiB,aAAcrpC,KAAKqhD,iCAI9C17B,EAAOu6B,YAAc,SAAqBC,GACxCO,EAAW5jD,UAAUojD,YAAYngD,KAAKC,KAAMmgD,GAGxCA,EAAO/W,sBACLppC,KAAKmhD,cACPhB,EAAO/W,oBAAoB,aAAcppC,KAAKmhD,cAG5CnhD,KAAKwhD,yBACPrB,EAAO/W,oBAAoB,aAAcppC,KAAKqhD,kCAK7CH,EA9DwB,CA+D/B,IASEO,GAAoC,WAOtC,SAASA,EAAqBC,QACN,IAAlBA,IACFA,EAAgB,IAGlB1hD,KAAK2hD,eAAiB,GAQtB5kD,OAAO6lB,eAAe5iB,KAAM,SAAU,CACpC8iB,IAAK,WACH,OAAO9iB,KAAK2hD,eAAe3pD,UAI/B,IAAK,IAAID,EAAI,EAAGC,EAAS0pD,EAAc1pD,OAAQD,EAAIC,EAAQD,IACzDiI,KAAK4hD,iBAAiBF,EAAc3pD,IAaxC,IAAI4tB,EAAS87B,EAAqB3kD,UAuElC,OArEA6oB,EAAOi8B,iBAAmB,SAA0BC,GAClD,IAAI1qD,EAAQ6I,KAAK2hD,eAAe3pD,OAE1B,GAAKb,KAAS6I,MAClBjD,OAAO6lB,eAAe5iB,KAAM7I,EAAO,CACjC2rB,IAAK,WACH,OAAO9iB,KAAK2hD,eAAexqD,OAMkB,IAA/C6I,KAAK2hD,eAAevqD,QAAQyqD,IAC9B7hD,KAAK2hD,eAAehqD,KAAKkqD,IAiB7Bl8B,EAAOm8B,wBAA0B,SAAiC/9C,GAGhE,IAFA,IAAIg+C,EAEKhqD,EAAI,EAAGC,EAASgI,KAAK2hD,eAAe3pD,OAAQD,EAAIC,EAAQD,IAC/D,GAAIgM,IAAU/D,KAAK2hD,eAAe5pD,GAAGgM,MAAO,CAC1Cg+C,EAAgB/hD,KAAK2hD,eAAe5pD,GACpC,MAIJ,OAAOgqD,GAYTp8B,EAAOq8B,oBAAsB,SAA6BH,GACxD,IAAK,IAAI9pD,EAAI,EAAGC,EAASgI,KAAK2hD,eAAe3pD,OAAQD,EAAIC,EAAQD,IAC/D,GAAI8pD,IAAiB7hD,KAAK2hD,eAAe5pD,GAAI,CACvCiI,KAAK2hD,eAAe5pD,GAAGgM,OAAqD,oBAArC/D,KAAK2hD,eAAe5pD,GAAGgM,MAAMuL,KACtEtP,KAAK2hD,eAAe5pD,GAAGgM,MAAMuL,MAGW,oBAA/BtP,KAAK2hD,eAAe5pD,GAAGuX,KAChCtP,KAAK2hD,eAAe5pD,GAAGuX,MAGzBtP,KAAK2hD,eAAepyC,OAAOxX,EAAG,GAC9B,QAKC0pD,EA/G+B,GA6IpCQ,GAAgC,WAOlC,SAASA,EAAiBvG,GACxBuG,EAAiBnlD,UAAUolD,SAASniD,KAAKC,KAAM07C,GAQ/C3+C,OAAO6lB,eAAe5iB,KAAM,SAAU,CACpC8iB,IAAK,WACH,OAAO9iB,KAAKmiD,WAelB,IAAIx8B,EAASs8B,EAAiBnlD,UAqD9B,OAnDA6oB,EAAOu8B,SAAW,SAAkBxG,GAClC,IAAI0G,EAAYpiD,KAAKhI,QAAU,EAC3BD,EAAI,EACJkO,EAAIy1C,EAAK1jD,OACbgI,KAAKqiD,MAAQ3G,EACb17C,KAAKmiD,QAAUzG,EAAK1jD,OAEpB,IAAIsqD,EAAa,SAAoBnrD,GAC7B,GAAKA,KAAS6I,MAClBjD,OAAO6lB,eAAe5iB,KAAM,GAAK7I,EAAO,CACtC2rB,IAAK,WACH,OAAO9iB,KAAKqiD,MAAMlrD,OAM1B,GAAIirD,EAAYn8C,EAGd,IAFAlO,EAAIqqD,EAEGrqD,EAAIkO,EAAGlO,IACZuqD,EAAWviD,KAAKC,KAAMjI,IAe5B4tB,EAAO48B,WAAa,SAAoBhhD,GAGtC,IAFA,IAAIzK,EAAS,KAEJiB,EAAI,EAAGkO,EAAIjG,KAAKhI,OAAQD,EAAIkO,EAAGlO,IAAK,CAC3C,IAAI4jD,EAAM37C,KAAKjI,GAEf,GAAI4jD,EAAIp6C,KAAOA,EAAI,CACjBzK,EAAS6kD,EACT,OAIJ,OAAO7kD,GAGFmrD,EAtF2B,GAoGhCO,GAAiB,CACnBC,YAAa,cACbC,SAAU,WACVC,KAAM,OACNC,KAAM,OACNC,UAAW,YACXC,WAAY,cAUVC,GAAiB,CACnB,YAAe,cACf,aAAgB,eAChB,KAAQ,OACR,YAAa,YACb,YAAe,cACf,WAAc,cAUZC,GAAgB,CAClBH,UAAW,YACXH,SAAU,WACVO,aAAc,eACdC,SAAU,WACVC,SAAU,YAURC,GAAgB,CAClB5Y,SAAU,WACV6Y,OAAQ,SACRC,QAAS,WAcP,GAAqB,SAAUxD,GAuBjC,SAASyD,EAAMjrD,GACb,IAAIwtB,OAEY,IAAZxtB,IACFA,EAAU,IAGZwtB,EAAQg6B,EAAa//C,KAAKC,OAASA,KACnC,IAAIwjD,EAAa,CACfjiD,GAAIjJ,EAAQiJ,IAAM,aAAeqoC,KACjC2X,KAAMjpD,EAAQipD,MAAQ,GACtBnuB,MAAO96B,EAAQ86B,OAAS,GACxBzH,SAAUrzB,EAAQqzB,UAAY,IAuC5B83B,EAAQ,SAAepsD,GACzB0F,OAAO6lB,eAAe,IAAuBkD,GAAQzuB,EAAK,CACxDyrB,IAAK,WACH,OAAO0gC,EAAWnsD,IAEpB2rB,IAAK,gBAIT,IAAK,IAAI3rB,KAAOmsD,EACdC,EAAMpsD,GAGR,OAAOyuB,EAGT,OAzFA,IAAey9B,EAAOzD,GAyFfyD,EA1FgB,CA2FvB9V,IA0CE,GAAW,SAAkBlzC,GAC/B,IAAIkiC,EAAQ,CAAC,WAAY,WAAY,OAAQ,WAAY,SAAU,OAAQ,QAEvE/wB,EAAI,IAASoV,cAAc,KAC/BpV,EAAEsL,KAAOzc,EAIT,IACImpD,EADAC,EAAuB,KAAXj4C,EAAEk4C,MAA8B,UAAfl4C,EAAEm4C,SAG/BF,IACFD,EAAM,IAAS5iC,cAAc,OAC7B4iC,EAAII,UAAY,YAAevpD,EAAM,SACrCmR,EAAIg4C,EAAIpoC,WAERooC,EAAIpiC,aAAa,QAAS,oCAC1B,IAASvoB,KAAK6N,YAAY88C,IAQ5B,IAFA,IAAIK,EAAU,GAELhsD,EAAI,EAAGA,EAAI0kC,EAAMzkC,OAAQD,IAChCgsD,EAAQtnB,EAAM1kC,IAAM2T,EAAE+wB,EAAM1kC,IAqB9B,MAhByB,UAArBgsD,EAAQF,WACVE,EAAQH,KAAOG,EAAQH,KAAKr/C,QAAQ,OAAQ,KAGrB,WAArBw/C,EAAQF,WACVE,EAAQH,KAAOG,EAAQH,KAAKr/C,QAAQ,QAAS,KAG1Cw/C,EAAQF,WACXE,EAAQF,SAAW,IAAS9sC,SAAS8sC,UAGnCF,GACF,IAAS5qD,KAAK0jB,YAAYinC,GAGrBK,GAeL,GAAiB,SAAwBxpD,GAE3C,IAAKA,EAAIksB,MAAM,gBAAiB,CAE9B,IAAIi9B,EAAM,IAAS5iC,cAAc,OACjC4iC,EAAII,UAAY,YAAevpD,EAAM,UACrCA,EAAMmpD,EAAIpoC,WAAWtE,KAGvB,OAAOzc,GAeLypD,GAAmB,SAA0BC,GAC/C,GAAoB,kBAATA,EAAmB,CAC5B,IAAIC,EAAc,yEACdC,EAAYD,EAAY99B,KAAK69B,GAEjC,GAAIE,EACF,OAAOA,EAAU7L,MAAM/gD,cAI3B,MAAO,IAsBL,GAAgB,SAAuBgD,EAAK6pD,QAC/B,IAAXA,IACFA,EAAS,IAASrtC,UAGpB,IAAIstC,EAAU,GAAS9pD,GAEnB+pD,EAAmC,MAArBD,EAAQR,SAAmBO,EAAOP,SAAWQ,EAAQR,SAGnEU,EAAcD,EAAcD,EAAQT,OAASQ,EAAOP,SAAWO,EAAOR,KAC1E,OAAOW,GAGLC,GAAmBznD,OAAOurC,OAAO,CACnCprC,UAAW,KACXunD,SAAU,GACVC,eAAgB,GAChBV,iBAAkBA,GAClBW,cAAe,KAeb,GAAY,SAAmBC,EAAY7gD,GAC7C,IAAIg4B,EAAS,IAAI,IAAShwB,OAAOid,OAAO,IAAU,IAASld,MAAO,IAASC,OAAO84C,iBAC9EC,EAAS,GAEb/oB,EAAOgpB,MAAQ,SAAUpJ,GACvB53C,EAAMu4C,OAAOX,IAGf5f,EAAOipB,eAAiB,SAAUt9C,GAChCo9C,EAAOntD,KAAK+P,IAGdq0B,EAAOkpB,QAAU,WACflhD,EAAM3D,QAAQ,CACZT,KAAM,aACN2J,OAAQvF,KAIZg4B,EAAOpiC,MAAMirD,GAETE,EAAO9sD,OAAS,IACd,IAASgT,SAAW,IAASA,QAAQk6C,gBACvC,IAASl6C,QAAQk6C,eAAe,iCAAmCnhD,EAAMkT,KAG3E6tC,EAAO7tD,SAAQ,SAAUyQ,GACvB,OAAO,GAAIA,MAAMA,MAGf,IAASsD,SAAW,IAASA,QAAQm6C,UACvC,IAASn6C,QAAQm6C,YAIrBppB,EAAO17B,SAeL,GAAY,SAAmB4W,EAAKlT,GACtC,IAAIioC,EAAO,CACT3zC,IAAK4e,GAEHstC,EAAc,GAActtC,GAE5BstC,IACFvY,EAAKtxC,KAAO6pD,GAGd,IAAIvY,EAAMpgC,GAAK5L,MAAM,SAAUnH,EAAKC,EAAUssD,GAC5C,GAAIvsD,EACF,OAAO,GAAI6O,MAAM7O,EAAKC,GAGxBiL,EAAMshD,SAAU,EAGe,oBAApB,IAASt5C,OACdhI,EAAMuhD,OAGRvhD,EAAMuhD,MAAMzY,IAAI,CAAC,cAAe,eAAe,SAAUr8B,GACvD,GAAmB,eAAfA,EAAM7Q,KAKV,OAAO,GAAUylD,EAAcrhD,GAJ7B,GAAI2D,MAAM,oDAAsD3D,EAAMkT,QAQ5E,GAAUmuC,EAAcrhD,QAY1B,GAAyB,SAAUwhD,GAqCrC,SAASC,EAAUltD,GACjB,IAAIwtB,EAMJ,QAJgB,IAAZxtB,IACFA,EAAU,KAGPA,EAAQwjD,KACX,MAAM,IAAInjD,MAAM,4BAGlB,IAAI8sD,EAAWjV,GAAal4C,EAAS,CACnCipD,KAAMyB,GAAc1qD,EAAQipD,OAAS,YACrC51B,SAAUrzB,EAAQqzB,UAAYrzB,EAAQotD,SAAW,KAE/CC,EAAOvC,GAAcqC,EAASE,OAAS,WACvCC,EAAWH,EAAS,WAEF,aAAlBA,EAASlE,MAAyC,aAAlBkE,EAASlE,OAC3CoE,EAAO,UAGT7/B,EAAQy/B,EAAOxlD,KAAKC,KAAMylD,IAAazlD,KACvC8lB,EAAMw/B,MAAQG,EAAS3J,KACvBh2B,EAAMu8B,MAAQ,GACdv8B,EAAM+/B,YAAc,GACpB//B,EAAMggC,UAA6C,IAAlChgC,EAAMw/B,MAAMS,kBAC7B,IAAIrK,EAAO,IAAIuG,GAAiBn8B,EAAMu8B,OAClC2D,EAAa,IAAI/D,GAAiBn8B,EAAM+/B,aACxCI,GAAU,EACVC,EAAoBt6C,GAAK,IAAuBka,IAAQ,WAK1D9lB,KAAKgmD,WAAahmD,KAAKgmD,WAEnBC,IACFjmD,KAAKI,QAAQ,aACb6lD,GAAU,MAgKd,MA5Ja,aAATN,GACF7/B,EAAMw/B,MAAM5U,OAAM,WAChB5qB,EAAMw/B,MAAMl2C,GAAG,aAAc82C,MAC5B,GAGLnpD,OAAOy/B,iBAAiB,IAAuB1W,GAAQ,CAUrD,QAAW,CACThD,IAAK,WACH,OAAO8iC,GAET5iC,IAAK,cAYP2iC,KAAM,CACJ7iC,IAAK,WACH,OAAO6iC,GAET3iC,IAAK,SAAamjC,GAChB,IAAIz/B,EAAS1mB,KAERojD,GAAc+C,KAInBR,EAAOQ,EAEFnmD,KAAK8lD,UAAqB,aAATH,GAA4C,IAArB3lD,KAAK07C,KAAK1jD,QAErD,GAAUgI,KAAKiX,IAAKjX,MAGT,aAAT2lD,EACF3lD,KAAKslD,MAAM5U,OAAM,WACfhqB,EAAO4+B,MAAMl2C,GAAG,aAAc82C,MAC7B,GAEHlmD,KAAKslD,MAAMh2C,IAAI,aAAc42C,GAa/BlmD,KAAKI,QAAQ,iBAUjBs7C,KAAM,CACJ54B,IAAK,WACH,OAAK9iB,KAAKqlD,QAIH3J,EAHE,MAKX14B,IAAK,cASPgjC,WAAY,CACVljC,IAAK,WACH,IAAK9iB,KAAKqlD,QACR,OAAO,KAIT,GAAyB,IAArBrlD,KAAK07C,KAAK1jD,OACZ,OAAOguD,EAMT,IAHA,IAAII,EAAKpmD,KAAKslD,MAAMe,cAChBC,EAAS,GAEJvuD,EAAI,EAAGkO,EAAIjG,KAAK07C,KAAK1jD,OAAQD,EAAIkO,EAAGlO,IAAK,CAChD,IAAI4jD,EAAM37C,KAAK07C,KAAK3jD,GAEhB4jD,EAAIj7C,WAAa0lD,GAAMzK,EAAIC,SAAWwK,EACxCE,EAAO3uD,KAAKgkD,GACHA,EAAIj7C,YAAci7C,EAAIC,SAAWD,EAAIj7C,WAAa0lD,GAAMzK,EAAIj7C,UAAY,IAAO0lD,GACxFE,EAAO3uD,KAAKgkD,GAMhB,GAFAsK,GAAU,EAENK,EAAOtuD,SAAWgI,KAAK6lD,YAAY7tD,OACrCiuD,GAAU,OAEV,IAAK,IAAI3mB,EAAK,EAAGA,EAAKgnB,EAAOtuD,OAAQsnC,KACW,IAA1Ct/B,KAAK6lD,YAAYzuD,QAAQkvD,EAAOhnB,MAClC2mB,GAAU,GAOhB,OAFAjmD,KAAK6lD,YAAcS,EACnBN,EAAW9D,SAASliD,KAAK6lD,aAClBG,GAGThjC,IAAK,gBAILyiC,EAASxuC,KACX6O,EAAM7O,IAAMwuC,EAASxuC,IAEhB6O,EAAMggC,WAGThgC,EAAMu/B,SAAU,IAGdv/B,EAAMggC,UAAYF,GAA8B,cAAlBH,EAASlE,MAA0C,aAAlBkE,EAASlE,OAC1E,GAAUz7B,EAAM7O,IAAK,IAAuB6O,KAG9CA,EAAMu/B,SAAU,EAGXv/B,EA3OT,IAAe0/B,EAAWD,GAqP1B,IAAI5/B,EAAS6/B,EAAU1oD,UAoDvB,OAlDA6oB,EAAO22B,OAAS,SAAgBiK,GAC9B,IAAI5K,EAAM4K,EAEV,GAAI,IAASz6C,SAAWy6C,aAAuB,IAASz6C,MAAME,QAAS,CAGrE,IAAK,IAAIi3B,KAFT0Y,EAAM,IAAI,IAAS7vC,MAAME,OAAOu6C,EAAY7lD,UAAW6lD,EAAY3K,QAAS2K,EAAYnzC,MAEvEmzC,EACTtjB,KAAQ0Y,IACZA,EAAI1Y,GAAQsjB,EAAYtjB,IAK5B0Y,EAAIp6C,GAAKglD,EAAYhlD,GACrBo6C,EAAI6K,aAAeD,EAKrB,IAFA,IAAIziD,EAAS9D,KAAKslD,MAAMpJ,aAEfnkD,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAC7B+L,EAAO/L,KAAOiI,MAChB8D,EAAO/L,GAAG0uD,UAAU9K,GAIxB37C,KAAKqiD,MAAM1qD,KAAKgkD,GAChB37C,KAAK07C,KAAKwG,SAASliD,KAAKqiD,QAU1B18B,EAAO8gC,UAAY,SAAmBC,GACpC,IAAI3uD,EAAIiI,KAAKqiD,MAAMrqD,OAEnB,MAAOD,IAAK,CACV,IAAI4jD,EAAM37C,KAAKqiD,MAAMtqD,GAErB,GAAI4jD,IAAQ+K,GAAc/K,EAAI6K,cAAgB7K,EAAI6K,eAAiBE,EAAY,CAC7E1mD,KAAKqiD,MAAM9yC,OAAOxX,EAAG,GACrBiI,KAAK07C,KAAKwG,SAASliD,KAAKqiD,OACxB,SAKCmD,EA1SoB,CA2S3B,IAMF,GAAU1oD,UAAU4wC,eAAiB,CACnCiZ,UAAW,aAWb,IAAI,GAA0B,SAAUpB,GAyBtC,SAASqB,EAAWtuD,GAClB,IAAIwtB,OAEY,IAAZxtB,IACFA,EAAU,IAGZ,IAAImtD,EAAWjV,GAAal4C,EAAS,CACnCipD,KAAMwB,GAAezqD,EAAQipD,OAAS,KAExCz7B,EAAQy/B,EAAOxlD,KAAKC,KAAMylD,IAAazlD,KACvC,IAAIygD,GAAU,EA4Cd,OAjCA1jD,OAAO6lB,eAAe,IAAuBkD,GAAQ,UAAW,CAC9DhD,IAAK,WACH,OAAO29B,GAETz9B,IAAK,SAAa6jC,GAEU,mBAAfA,GAA4BA,IAAepG,IAItDA,EAAUoG,EAYV7mD,KAAKI,QAAQ,qBAMbqlD,EAAShF,UACX36B,EAAM26B,QAAUgF,EAAShF,SAG3B36B,EAAMu/B,SAAU,EACTv/B,EAGT,OAlFA,IAAe8gC,EAAYrB,GAkFpBqB,EAnFqB,CAoF5B,IASE,GAA0B,SAAUrB,GAwBtC,SAASuB,EAAWxuD,GAClB,IAAIwtB,OAEY,IAAZxtB,IACFA,EAAU,IAGZ,IAAImtD,EAAWjV,GAAal4C,EAAS,CACnCipD,KAAMiB,GAAelqD,EAAQipD,OAAS,KAExCz7B,EAAQy/B,EAAOxlD,KAAKC,KAAMylD,IAAazlD,KACvC,IAAI+gD,GAAW,EA2Cf,OAhCAhkD,OAAO6lB,eAAe,IAAuBkD,GAAQ,WAAY,CAC/DhD,IAAK,WACH,OAAOi+B,GAET/9B,IAAK,SAAa+jC,GAEW,mBAAhBA,GAA6BA,IAAgBhG,IAIxDA,EAAWgG,EAYX/mD,KAAKI,QAAQ,sBAMbqlD,EAAS1E,WACXj7B,EAAMi7B,SAAW0E,EAAS1E,UAGrBj7B,EAGT,OAhFA,IAAeghC,EAAYvB,GAgFpBuB,EAjFqB,CAkF5B,IAQEE,GAAO,EACPC,GAAU,EACVC,GAAS,EACTC,GAAQ,EAQR,GAAgC,SAAUrH,GAqC5C,SAASsH,EAAiB9uD,GACxB,IAAIwtB,EAOA5sB,OALY,IAAZZ,IACFA,EAAU,IAGZwtB,EAAQg6B,EAAa//C,KAAKC,OAASA,KAEnC,IAAI+D,EAAQ,IAAI,GAAUzL,GA8C1B,OA7CAwtB,EAAMy7B,KAAOx9C,EAAMw9C,KACnBz7B,EAAM7O,IAAMlT,EAAMkT,IAClB6O,EAAM4/B,QAAU3hD,EAAM4nB,SACtB7F,EAAMsN,MAAQrvB,EAAMqvB,MACpBtN,EAAM,WAAa/hB,EAAM,WACzBhH,OAAOy/B,iBAAiB,IAAuB1W,GAAQ,CAOrD5sB,WAAY,CACV4pB,IAAK,WACH,OAAO5pB,IAWX6K,MAAO,CACL+e,IAAK,WACH,OAAO/e,MAIb7K,EAAa8tD,GAMbjjD,EAAMslC,iBAAiB,cAAc,WACnCnwC,EAAaguD,GAEbphC,EAAM1lB,QAAQ,CACZT,KAAM,OACN2J,OAAQ,IAAuBwc,QAG5BA,EAGT,OA9FA,IAAeshC,EAAkBtH,GA8F1BsH,EA/F2B,CAgGlC3Z,IAEF,GAAiB3wC,UAAU4wC,eAAiB,CAC1C2Z,KAAM,QAER,GAAiBL,KAAOA,GACxB,GAAiBC,QAAUA,GAC3B,GAAiBC,OAASA,GAC1B,GAAiBC,MAAQA,GAOzB,IAAIG,GAAS,CACXtyB,MAAO,CACLuyB,UAAW,GACXC,WAAY,GACZC,YAAa,SAEfC,MAAO,CACLH,UAAW,GACXC,WAAY,GACZC,YAAa,SAEfr0C,KAAM,CACJm0C,UAAW,GACXC,WAAY,GACZC,YAAa,SAGjB1qD,OAAOkwB,KAAKq6B,IAAQrwD,SAAQ,SAAU0I,GACpC2nD,GAAO3nD,GAAMgoD,WAAahoD,EAAO,SACjC2nD,GAAO3nD,GAAMioD,YAAcjoD,EAAO,aAEpC,IAAIkoD,GAAS,CACXC,WAAY,CACVP,UAAW,GACXC,WAAY,GACZC,YAAa,aACbE,WAAY,mBACZC,YAAa,qBAEfG,aAAc,CACZR,UAAW9F,GACX+F,WAAY,GACZC,YAAa,qBACbE,WAAY,qBACZC,YAAa,wBAIbI,GAAM,IAAS,GAAIV,GAAQO,IA6C/B,SAASI,GAAkBxiC,EAAM87B,EAAMnuB,EAAOzH,EAAUrzB,QACtC,IAAZA,IACFA,EAAU,IAGZ,IAAIwL,EAAS2hB,EAAKy2B,aAClB5jD,EAAQipD,KAAOA,EAEXnuB,IACF96B,EAAQ86B,MAAQA,GAGdzH,IACFrzB,EAAQqzB,SAAWA,GAGrBrzB,EAAQwjD,KAAOr2B,EACf,IAAI1hB,EAAQ,IAAIikD,GAAI50C,KAAKo0C,WAAWlvD,GAEpC,OADAwL,EAAOm8C,SAASl8C,GACTA,EA9DT8jD,GAAO7U,MAAQj2C,OAAOkwB,KAAK46B,IAC3BP,GAAOtU,MAAQj2C,OAAOkwB,KAAKq6B,IAC3BU,GAAIhV,MAAQ,GAAGpxC,OAAOimD,GAAO7U,OAAOpxC,OAAO0lD,GAAOtU,OAsElD,IAAI,GAAoB,SAAUyJ,GAYhC,SAAS1I,EAAKz7C,EAASo4C,GACrB,IAAI5qB,EAyEJ,YAvEgB,IAAZxtB,IACFA,EAAU,SAGE,IAAVo4C,IACFA,EAAQ,cAKVp4C,EAAQy5C,qBAAsB,EAC9BjsB,EAAQ22B,EAAW18C,KAAKC,KAAM,KAAM1H,EAASo4C,IAAU1wC,KAGvD8lB,EAAMoiC,aAAc,EAEpBpiC,EAAM1W,GAAG,WAAW,WAClBpP,KAAKkoD,aAAc,KAGrBpiC,EAAM1W,GAAG,aAAa,WACpBpP,KAAKkoD,aAAc,KAGrBF,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAEZ3R,GAAWA,EAAQmkC,EAAMkrB,cAC3B7hC,EAAM2W,EAAMmrB,aAAetvD,EAAQmkC,EAAMkrB,gBAIxC7hC,EAAMqiC,wBACTriC,EAAMsiC,mBAIHtiC,EAAMuiC,0BACTviC,EAAMwiC,sBAGR,CAAC,OAAQ,QAAS,SAASrxD,SAAQ,SAAU8M,IACE,IAAzCzL,EAAQ,SAAWyL,EAAQ,YAC7B+hB,EAAM,iBAAmB/hB,EAAQ,WAAY,OAIlB,IAA3BzL,EAAQiwD,iBAAyD,IAA7BjwD,EAAQkwD,iBAC9C1iC,EAAM2iC,0BAA2B,GACG,IAA3BnwD,EAAQiwD,iBAAwD,IAA7BjwD,EAAQkwD,mBACpD1iC,EAAM2iC,0BAA2B,GAG9B3iC,EAAM2iC,0BACT3iC,EAAM4iC,oBAGR5iC,EAAMigC,mBAAkD,IAA9BztD,EAAQytD,kBAClCjgC,EAAM6iC,sBAAwB,IAAIX,GAAI50C,KAAKm0C,UAE3CzhC,EAAM8iC,qBAGDtwD,EAAQuwD,wBACX/iC,EAAM4vB,gBAGJ5vB,EAAM7oB,cACR6oB,EAAM/S,MAAQ+S,EAAM7oB,YAAYgN,MAAQ,gBAGnC6b,EArFT,IAAeiuB,EAAM0I,GAgGrB,IAAI92B,EAASouB,EAAKj3C,UAg2BlB,OA91BA6oB,EAAOmjC,iBAAmB,SAA0B7xC,GAClD,IAAIyP,EAAS1mB,KAERA,KAAKo0C,UAGRp0C,KAAK2sC,IAAI,SAAS,WAChB,OAAOjmB,EAAOvtB,YAAW,WACvB,OAAOutB,EAAOoiC,iBAAiB7xC,KAC9B,MAaPjX,KAAKI,QAAQ,CACX6W,IAAKA,EACLtX,KAAM,eAaVgmB,EAAOyiC,iBAAmB,WACxBpoD,KAAKoP,GAAG,iBAAkBpP,KAAK+oD,kBAC/B/oD,KAAKgpD,gBAAiB,EAEtBhpD,KAAK2sC,IAAI,QAAS3sC,KAAKipD,gBAQzBtjC,EAAOujC,kBAAoB,WACzBlpD,KAAKgpD,gBAAiB,EACtBhpD,KAAKmpD,uBACLnpD,KAAKsP,IAAI,iBAAkBtP,KAAK+oD,mBAiBlCpjC,EAAOsjC,cAAgB,SAAuBz4C,GAC5CxQ,KAAKmpD,uBACLnpD,KAAKopD,iBAAmBppD,KAAK22C,YAAY/qC,GAAK5L,MAAM,WAElD,IAAIqpD,EAAqBrpD,KAAKq6C,kBAE1Br6C,KAAKspD,mBAAqBD,GAO5BrpD,KAAKI,QAAQ,YAGfJ,KAAKspD,iBAAmBD,EAEG,IAAvBA,GACFrpD,KAAKmpD,0BAEL,MAaNxjC,EAAOojC,iBAAmB,SAA0Bv4C,GAClDxQ,KAAKupD,UAAYvpD,KAAKinB,YAUxBtB,EAAO20B,SAAW,WAChB,OAAOF,GAAiB,EAAG,IAY7Bz0B,EAAO00B,gBAAkB,WACvB,OAAOA,GAAgBr6C,KAAKs6C,WAAYt6C,KAAKupD,YAU/C5jC,EAAOwjC,qBAAuB,WAC5BnpD,KAAK02C,cAAc12C,KAAKopD,mBAS1BzjC,EAAO2iC,oBAAsB,WAC3BtoD,KAAKwpD,mBAAoB,EACzBxpD,KAAKoP,GAAG,OAAQpP,KAAKypD,kBACrBzpD,KAAKoP,GAAG,QAASpP,KAAK0pD,0BAQxB/jC,EAAOgkC,qBAAuB,WAC5B3pD,KAAKwpD,mBAAoB,EACzBxpD,KAAK0pD,0BACL1pD,KAAKsP,IAAI,OAAQtP,KAAKypD,kBACtBzpD,KAAKsP,IAAI,QAAStP,KAAK0pD,0BAWzB/jC,EAAO8jC,iBAAmB,WACpBzpD,KAAK4pD,qBACP5pD,KAAK0pD,0BAGP1pD,KAAK4pD,oBAAsB5pD,KAAK22C,aAAY,WAO1C32C,KAAKI,QAAQ,CACXT,KAAM,aACN2J,OAAQtJ,KACR6pD,mBAAmB,MAEpB,MAULlkC,EAAO+jC,wBAA0B,WAC/B1pD,KAAK02C,cAAc12C,KAAK4pD,qBAGxB5pD,KAAKI,QAAQ,CACXT,KAAM,aACN2J,OAAQtJ,KACR6pD,mBAAmB,KAWvBlkC,EAAOlW,QAAU,WAEfzP,KAAK8pD,YAAYxC,GAAOtU,OAEpBhzC,KAAKgpD,gBACPhpD,KAAKkpD,oBAGHlpD,KAAKwpD,mBACPxpD,KAAK2pD,uBAGPlN,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAcpC2lB,EAAOmkC,YAAc,SAAqBpf,GACxC,IAAIliB,EAASxoB,KAEb0qC,EAAQ,GAAG9oC,OAAO8oC,GAElBA,EAAMzzC,SAAQ,SAAU0I,GACtB,IAAIoa,EAAOyO,EAAO7oB,EAAO,aAAe,GACpC5H,EAAIgiB,EAAK/hB,OAEb,MAAOD,IAAK,CACV,IAAIgM,EAAQgW,EAAKhiB,GAEJ,SAAT4H,GACF6oB,EAAOuhC,sBAAsBhmD,GAG/BgW,EAAKmmC,YAAYn8C,QAUvB4hB,EAAOqkC,sBAAwB,WAC7B,IAAIjwC,EAAO/Z,KAAK2oD,uBAAyB,GACrC5wD,EAAIgiB,EAAK/hB,OAEb,MAAOD,IAAK,CACV,IAAIgM,EAAQgW,EAAKhiB,GACjBiI,KAAK+pD,sBAAsBhmD,KAU/B4hB,EAAOnlB,MAAQ,aAYfmlB,EAAOje,MAAQ,SAAe7O,GAM5B,YALYS,IAART,IACFmH,KAAKiqD,OAAS,IAAIpP,GAAWhiD,GAC7BmH,KAAKI,QAAQ,UAGRJ,KAAKiqD,QAcdtkC,EAAOukC,OAAS,WACd,OAAIlqD,KAAKkoD,YACA9N,GAAiB,EAAG,GAGtBA,MAUTz0B,EAAOwkC,eAAiB,WAElBnqD,KAAKwpD,mBAOPxpD,KAAKI,QAAQ,CACXT,KAAM,aACN2J,OAAQtJ,KACR6pD,mBAAmB,KAgBzBlkC,EAAOijC,mBAAqB,WAC1B,IAAIxR,EAASp3C,KAsBbsnD,GAAOtU,MAAM/7C,SAAQ,SAAUgT,GAC7B,IAAIwyB,EAAQ6qB,GAAOr9C,GAEfmgD,EAAmB,WACrBhT,EAAOh3C,QAAQ6J,EAAO,gBAGpBnG,EAASszC,EAAO3a,EAAMkrB,cAE1B7jD,EAAOulC,iBAAiB,cAAe+gB,GACvCtmD,EAAOulC,iBAAiB,WAAY+gB,GAEpChT,EAAOhoC,GAAG,WAAW,WACnBtL,EAAOslC,oBAAoB,cAAeghB,GAC1CtmD,EAAOslC,oBAAoB,WAAYghB,UAY7CzkC,EAAO0kC,iBAAmB,WACxB,IAAIC,EAAStqD,KAEb,IAAI,IAAS+L,OAOb,GAAI,IAAShT,KAAKgsC,SAAS/kC,KAAKoI,MAAO,CAIrC,IAAKpI,KAAK+wC,SAAS,WAAahO,GAAQ,MAAQhmC,OAAOkwB,KAAK,KAAKj1B,OAAS,EAExE,YADAgI,KAAKI,QAAQ,eAMf,IAAImqD,EAAS,IAASzpC,cAAc,UACpCypC,EAAOtzC,IAAMjX,KAAK+wC,SAAS,WAAa,iDAExCwZ,EAAOrvD,OAAS,WAOdovD,EAAOlqD,QAAQ,gBAGjBmqD,EAAOpvD,QAAU,WAOfmvD,EAAOlqD,QAAQ,eAGjBJ,KAAKoP,GAAG,WAAW,WACjBm7C,EAAOrvD,OAAS,KAChBqvD,EAAOpvD,QAAU,QAInB,IAAS4Q,QAAS,EAClB/L,KAAKoI,KAAKa,WAAWrC,YAAY2jD,QAEjCvqD,KAAK0wC,MAAM1wC,KAAKqqD,mBASpB1kC,EAAO+iC,kBAAoB,WACzB,IAAI8B,EAASxqD,KAET8D,EAAS9D,KAAKk8C,aACduO,EAAezqD,KAAK0qD,mBAEpBC,EAAiB,SAAwB/wD,GAC3C,OAAOkK,EAAOm8C,SAASrmD,EAAEmK,QAGvB6mD,EAAoB,SAA2BhxD,GACjD,OAAOkK,EAAOo8C,YAAYtmD,EAAEmK,QAG9B0mD,EAAar7C,GAAG,WAAYu7C,GAC5BF,EAAar7C,GAAG,cAAew7C,GAC/B5qD,KAAKqqD,mBAEL,IAAIQ,EAAgB,WAClB,OAAOL,EAAOpqD,QAAQ,oBAGpB0qD,EAAoB,WACtBD,IAEA,IAAK,IAAI9yD,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GACnBgM,EAAMqlC,oBAAoB,YAAayhB,GAEpB,YAAf9mD,EAAM4hD,MACR5hD,EAAMslC,iBAAiB,YAAawhB,KAK1CC,IACAhnD,EAAOulC,iBAAiB,SAAUyhB,GAClChnD,EAAOulC,iBAAiB,WAAYyhB,GACpChnD,EAAOulC,iBAAiB,cAAeyhB,GACvC9qD,KAAKoP,GAAG,WAAW,WACjBq7C,EAAan7C,IAAI,WAAYq7C,GAC7BF,EAAan7C,IAAI,cAAes7C,GAChC9mD,EAAOslC,oBAAoB,SAAU0hB,GACrChnD,EAAOslC,oBAAoB,WAAY0hB,GACvChnD,EAAOslC,oBAAoB,cAAe0hB,GAE1C,IAAK,IAAI/yD,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GACnBgM,EAAMqlC,oBAAoB,YAAayhB,QAqB7CllC,EAAOolC,aAAe,SAAsBxJ,EAAMnuB,EAAOzH,GACvD,IAAK41B,EACH,MAAM,IAAI5oD,MAAM,mDAGlB,OAAOsvD,GAAkBjoD,KAAMuhD,EAAMnuB,EAAOzH,IAyB9ChG,EAAOqlC,sBAAwB,SAA+B1yD,GAC5D,IAAIyL,EAAQysC,GAAal4C,EAAS,CAChCwjD,KAAM97C,OAER,OAAO,IAAI6nD,GAAOE,aAAaP,WAAWzjD,IAwB5C4hB,EAAO02B,mBAAqB,SAA4B/jD,EAAS2yD,GAC/D,IAAIC,EAASlrD,UAEG,IAAZ1H,IACFA,EAAU,IAGZ,IAAI6yD,EAAmBnrD,KAAKgrD,sBAAsB1yD,GAmBlD,OAjBsB,IAAlB2yD,IAA4C,IAAlBA,IAE5B,GAAIhgD,KAAK,oKACTggD,GAAgB,GAIlBjrD,KAAKorD,qBAAqBxJ,iBAAiBuJ,GAC3CnrD,KAAK0qD,mBAAmBzK,SAASkL,EAAiBpnD,QAE5B,IAAlBknD,GAEFjrD,KAAK0wC,OAAM,WACT,OAAOwa,EAAOvC,sBAAsB1I,SAASkL,EAAiBpnD,UAI3DonD,GAUTxlC,EAAOokC,sBAAwB,SAA+BhmD,GAC5D,IAAI89C,EAAe7hD,KAAKorD,qBAAqBtJ,wBAAwB/9C,GAErE/D,KAAKorD,qBAAqBpJ,oBAAoBH,GAC9C7hD,KAAK0qD,mBAAmBxK,YAAYn8C,GACpC/D,KAAK2oD,sBAAsBzI,YAAYn8C,IAezC4hB,EAAO0lC,wBAA0B,WAC/B,MAAO,IAkBT1lC,EAAO2lC,wBAA0B,WAC/B,IAAIC,EAAevrD,KAAK+wC,SAASya,SAAW,IAASA,QAErD,GAAID,EACF,OAAOA,EAAaE,UAUxB9lC,EAAO+lC,UAAY,aAQnB/lC,EAAOgmC,YAAc,aAQrBhmC,EAAOimC,eAAiB,aAWxBjmC,EAAOkmC,0BAA4B,aAWnClmC,EAAOmmC,0BAA4B,aAmBnCnmC,EAAOomC,YAAc,WACnB,MAAO,IAcThY,EAAKgY,YAAc,WACjB,MAAO,IAaThY,EAAKiY,cAAgB,SAAuBC,EAAQ3zD,GAClD,OAAOy7C,EAAKgY,YAAYE,EAAOtsD,OAgBjCo0C,EAAKG,OAAS,SAAgBf,GAC5B,OAAOA,EAAUr2C,qBAAqBi3C,GAAQZ,aAAqBY,GAAQZ,IAAcY,GAa3FA,EAAKmY,aAAe,SAAsBjiD,EAAM6xC,GAK9C,GAJK/H,EAAKoY,SACRpY,EAAKoY,OAAS,KAGXpY,EAAKG,OAAO4H,GACf,MAAM,IAAInjD,MAAM,QAAUsR,EAAO,mBAGnC,IAAK8pC,EAAKgY,YACR,MAAM,IAAIpzD,MAAM,uDAGlB,IAAKo7C,EAAKiY,cACR,MAAM,IAAIrzD,MAAM,yDAYlB,OATAsR,EAAOmmC,GAAYnmC,GACnB8pC,EAAKoY,OAAOliD,GAAQ6xC,EACpB/H,EAAKoY,OAAO50D,GAAY0S,IAAS6xC,EAEpB,SAAT7xC,GAEF8pC,EAAKqY,kBAAkBz0D,KAAKsS,GAGvB6xC,GAaT/H,EAAKsY,QAAU,SAAiBpiD,GAC9B,GAAKA,EAIL,OAAI8pC,EAAKoY,QAAUpY,EAAKoY,OAAOliD,GACtB8pC,EAAKoY,OAAOliD,IAGrBA,EAAOmmC,GAAYnmC,GAEf,KAAY,IAASi+B,SAAW,IAASA,QAAQj+B,IACnD,GAAIgB,KAAK,OAAShB,EAAO,6GAClB,IAASi+B,QAAQj+B,SAF1B,IAMK8pC,EAj8Be,CAk8BtB,IAqCFiU,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAEhB,GAAKnN,UAAU2/B,EAAMkrB,YAAc,WAEjC,OADA3nD,KAAKy8B,EAAMmrB,aAAe5nD,KAAKy8B,EAAMmrB,cAAgB,IAAInrB,EAAM8qB,UACxDvnD,KAAKy8B,EAAMmrB,iBAkCtB,GAAK9qD,UAAUwvD,uBAAwB,EAQvC,GAAKxvD,UAAUyvD,qBAAsB,EASrC,GAAKzvD,UAAU0vD,0BAA2B,EAW1C,GAAK1vD,UAAU2vD,sBAAuB,EAUtC,GAAK3vD,UAAUqrD,wBAAyB,EAYxC,GAAKrrD,UAAU4vD,mBAAoB,EAUnC,GAAK5vD,UAAUurD,0BAA2B,EAS1C,GAAKvrD,UAAU2rD,0BAA2B,EAc1C,GAAKkE,mBAAqB,SAAUC,GAUlCA,EAAMC,sBAAwB,SAAUC,EAAS31D,GAC/C,IAAIkzC,EAAWuiB,EAAMG,eAEhB1iB,IACHA,EAAWuiB,EAAMG,eAAiB,SAGtBzzD,IAAVnC,IAEFA,EAAQkzC,EAASryC,QAGnBqyC,EAAS96B,OAAOpY,EAAO,EAAG21D,IAc5BF,EAAMb,YAAc,SAAUpsD,GAI5B,IAHA,IACIqtD,EADA3iB,EAAWuiB,EAAMG,gBAAkB,GAG9Bh1D,EAAI,EAAGA,EAAIsyC,EAASryC,OAAQD,IAGnC,GAFAi1D,EAAM3iB,EAAStyC,GAAGg0D,YAAYpsD,GAE1BqtD,EACF,OAAOA,EAIX,MAAO,IAmBTJ,EAAMK,oBAAsB,SAAUlmD,EAAQzO,GAI5C,IAHA,IACI00D,EADA3iB,EAAWuiB,EAAMG,gBAAkB,GAG9Bh1D,EAAI,EAAGA,EAAIsyC,EAASryC,OAAQD,IAGnC,GAFAi1D,EAAM3iB,EAAStyC,GAAGm1D,gBAAgBnmD,EAAQzO,GAEtC00D,EACF,OAAO3iB,EAAStyC,GAIpB,OAAO,MAgBT60D,EAAMZ,cAAgB,SAAUC,EAAQ3zD,GACtC,IAAI60D,EAAKP,EAAMK,oBAAoBhB,EAAQ3zD,GAE3C,OAAI60D,EACKA,EAAGD,gBAAgBjB,EAAQ3zD,GAG7B,IAQT,IAAI80D,EAAa,CAAC,WAAY,UAAW,YAezCA,EAAWn2D,SAAQ,SAAU6iD,GAC3B,IAAIuT,EAAartD,KAAK85C,GAEI,oBAAfuT,IAIXrtD,KAAK85C,GAAU,WACb,OAAI95C,KAAKstD,gBAAkBttD,KAAKstD,eAAexT,GACtC95C,KAAKstD,eAAexT,GAAQj4C,MAAM7B,KAAKstD,eAAgB1jD,WAGzDyjD,EAAWxrD,MAAM7B,KAAM4J,eAE/BgjD,EAAM9vD,WAUT8vD,EAAM9vD,UAAUywD,UAAY,SAAUxmD,GACpC,IAAIomD,EAAKP,EAAMK,oBAAoBlmD,EAAQ/G,KAAK+wC,UAE3Coc,IAGCP,EAAMY,oBACRL,EAAKP,EAAMY,oBAEX,GAAI9lD,MAAM,oDAKd1H,KAAKytD,uBACLztD,KAAKsP,IAAI,UAAWtP,KAAKytD,sBAErBN,IAAOP,EAAMY,sBACfxtD,KAAK0tD,eAAiB3mD,GAGxB/G,KAAKstD,eAAiBH,EAAGQ,aAAa5mD,EAAQ/G,KAAMA,KAAK+wC,UACzD/wC,KAAK2sC,IAAI,UAAW3sC,KAAKytD,uBAS3Bb,EAAM9vD,UAAU2wD,qBAAuB,WAIjCztD,KAAK0tD,iBACP1tD,KAAK8pD,YAAY,CAAC,QAAS,UAC3B9pD,KAAK0tD,eAAiB,MAIxB1tD,KAAKgqD,wBAEDhqD,KAAKstD,iBACHttD,KAAKstD,eAAe79C,SACtBzP,KAAKstD,eAAe79C,UAGtBzP,KAAKstD,eAAiB,QAO5B,GAAU/V,kBAAkB,OAAQ,IACpC,GAAK2U,aAAa,OAAQ,IAO1B,GAAKE,kBAAoB,GAMzB,IAAIwB,GAAc,GACdC,GAAsB,GACtBC,GAAa,GAmCjB,SAASC,GAAIpuD,EAAMquD,GACjBJ,GAAYjuD,GAAQiuD,GAAYjuD,IAAS,GACzCiuD,GAAYjuD,GAAMhI,KAAKq2D,GAiBzB,SAAST,GAAUvkB,EAAQ/xB,EAAKmF,GAC9B4sB,EAAO7vC,YAAW,WAChB,OAAO80D,GAAgBh3C,EAAK22C,GAAY32C,EAAItX,MAAOyc,EAAM4sB,KACxD,GAYL,SAASklB,GAAQF,EAAYlS,GAC3BkS,EAAW/2D,SAAQ,SAAUk3D,GAC3B,OAAOA,EAAGD,SAAWC,EAAGD,QAAQpS,MAoBpC,SAAS,GAAIkS,EAAYlS,EAAMxhD,GAC7B,OAAO0zD,EAAWI,YAAYC,GAAmB/zD,GAASwhD,EAAKxhD,MAsBjE,SAAS,GAAI0zD,EAAYlS,EAAMxhD,EAAQg0D,GACrC,OAAOxS,EAAKxhD,GAAQ0zD,EAAW7sD,OAAOktD,GAAmB/zD,GAASg0D,IA0BpE,SAASC,GAAQP,EAAYlS,EAAMxhD,EAAQg0D,QAC7B,IAARA,IACFA,EAAM,MAGR,IAAIE,EAAa,OAASpe,GAAY91C,GAClCm0D,EAAkBT,EAAW7sD,OAAOktD,GAAmBG,GAAaF,GACpEI,EAAaD,IAAoBX,GAGjCziB,EAAcqjB,EAAa,KAAO5S,EAAKxhD,GAAQm0D,GAEnD,OADAE,GAAaX,EAAY1zD,EAAQ+wC,EAAaqjB,GACvCrjB,EAQT,IAAIujB,GAAiB,CACnBtU,SAAU,EACV+L,YAAa,EACbp/B,SAAU,EACV4nC,MAAO,EACP3E,OAAQ,EACR1M,OAAQ,EACRsR,SAAU,EACVC,OAAQ,GAQNC,GAAiB,CACnB7E,eAAgB,EAChB8E,SAAU,EACVC,UAAW,GAQTC,GAAmB,CACrBxe,KAAM,EACN+M,MAAO,GAGT,SAAS2Q,GAAmB/zD,GAC1B,OAAO,SAAU9C,EAAO22D,GAEtB,OAAI32D,IAAUs2D,GACLA,GAGLK,EAAG7zD,GACE6zD,EAAG7zD,GAAQ9C,GAGbA,GAIX,SAASm3D,GAAaS,EAAK90D,EAAQ9C,EAAOk3D,GACxC,IAAK,IAAI32D,EAAIq3D,EAAIp3D,OAAS,EAAGD,GAAK,EAAGA,IAAK,CACxC,IAAIo2D,EAAKiB,EAAIr3D,GAETo2D,EAAG7zD,IACL6zD,EAAG7zD,GAAQo0D,EAAYl3D,IAY7B,SAAS63D,GAAoBrmB,GAC3B6kB,GAAoB7kB,EAAOznC,MAAQ,KAUrC,SAAS+tD,GAAmBtmB,EAAQumB,GAClC,IAAIH,EAAMvB,GAAoB7kB,EAAOznC,MACjC4sD,EAAK,KAET,QAAY70D,IAAR81D,GAA6B,OAARA,EAGvB,OAFAjB,EAAKoB,EAAUvmB,GACf6kB,GAAoB7kB,EAAOznC,MAAQ,CAAC,CAACguD,EAAWpB,IACzCA,EAGT,IAAK,IAAIp2D,EAAI,EAAGA,EAAIq3D,EAAIp3D,OAAQD,IAAK,CACnC,IAAIy3D,EAASJ,EAAIr3D,GACb03D,EAAMD,EAAO,GACbE,EAAMF,EAAO,GAEbC,IAAQF,IAIZpB,EAAKuB,GAQP,OALW,OAAPvB,IACFA,EAAKoB,EAAUvmB,GACfomB,EAAIz3D,KAAK,CAAC43D,EAAWpB,KAGhBA,EAGT,SAASF,GAAgBh3C,EAAK+2C,EAAY5xC,EAAM4sB,EAAQpiB,EAAK+oC,QAC/C,IAAR14C,IACFA,EAAM,SAGW,IAAf+2C,IACFA,EAAa,SAGH,IAARpnC,IACFA,EAAM,SAGQ,IAAZ+oC,IACFA,GAAU,GAGZ,IAAIC,EAAc5B,EACduB,EAAYK,EAAY,GACxBC,EAASD,EAAYt4D,MAAM,GAG/B,GAAyB,kBAAdi4D,EACTtB,GAAgBh3C,EAAK22C,GAAY2B,GAAYnzC,EAAM4sB,EAAQpiB,EAAK+oC,QAE3D,GAAIJ,EAAW,CACpB,IAAIpB,EAAKmB,GAAmBtmB,EAAQumB,GAEpC,IAAKpB,EAAGZ,UAEN,OADA3mC,EAAIjvB,KAAKw2D,GACFF,GAAgBh3C,EAAK44C,EAAQzzC,EAAM4sB,EAAQpiB,EAAK+oC,GAGzDxB,EAAGZ,UAAU,GAAO,GAAIt2C,IAAM,SAAUpe,EAAKi3D,GAG3C,GAAIj3D,EACF,OAAOo1D,GAAgBh3C,EAAK44C,EAAQzzC,EAAM4sB,EAAQpiB,EAAK+oC,GAIzD/oC,EAAIjvB,KAAKw2D,GAGTF,GAAgB6B,EAAM74C,EAAItX,OAASmwD,EAAKnwD,KAAOkwD,EAASjC,GAAYkC,EAAKnwD,MAAOyc,EAAM4sB,EAAQpiB,EAAK+oC,WAE5FE,EAAO73D,OAChBi2D,GAAgBh3C,EAAK44C,EAAQzzC,EAAM4sB,EAAQpiB,EAAK+oC,GACvCA,EACTvzC,EAAKnF,EAAK2P,GAEVqnC,GAAgBh3C,EAAK22C,GAAY,KAAMxxC,EAAM4sB,EAAQpiB,GAAK,GAY9D,IAAImpC,GAAgB,CAClBC,KAAM,YACNC,IAAK,YACLC,IAAK,YACLC,IAAK,YACLC,IAAK,YACLC,IAAK,mBACLC,IAAK,YACLC,IAAK,aACLC,IAAK,YACLC,IAAK,YACLC,KAAM,wBACNC,IAAK,aACLC,KAAM,aACNC,IAAK,YACLC,IAAK,YACLC,IAAK,gBACLC,KAAM,cAYJC,GAAc,SAAqBh6C,QACzB,IAARA,IACFA,EAAM,IAGR,IAAIi6C,EAAMlN,GAAiB/sC,GACvBk6C,EAAWpB,GAAcmB,EAAI35D,eACjC,OAAO45D,GAAY,IAgBjBC,GAAe,SAAsBpoB,EAAQ/xB,GAC/C,IAAKA,EACH,MAAO,GAIT,GAAI+xB,EAAOqoB,OAAOtqD,OAAOkQ,MAAQA,GAAO+xB,EAAOqoB,OAAOtqD,OAAOpH,KAC3D,OAAOqpC,EAAOqoB,OAAOtqD,OAAOpH,KAI9B,IAAI2xD,EAAkBtoB,EAAOqoB,OAAOvuB,QAAQrR,QAAO,SAAUnO,GAC3D,OAAOA,EAAErM,MAAQA,KAGnB,GAAIq6C,EAAgBt5D,OAClB,OAAOs5D,EAAgB,GAAG3xD,KAM5B,IAFA,IAAImjC,EAAUkG,EAAOZ,GAAG,UAEfrwC,EAAI,EAAGA,EAAI+qC,EAAQ9qC,OAAQD,IAAK,CACvC,IAAIurB,EAAIwf,EAAQ/qC,GAEhB,GAAIurB,EAAE3jB,MAAQ2jB,EAAErM,KAAOqM,EAAErM,MAAQA,EAC/B,OAAOqM,EAAE3jB,KAKb,OAAOsxD,GAAYh6C,IAoBjBs6C,GAAe,SAASA,EAAat6C,GAEvC,GAAIxf,MAAMC,QAAQuf,GAAM,CACtB,IAAIu6C,EAAS,GACbv6C,EAAIhgB,SAAQ,SAAUw6D,GACpBA,EAASF,EAAaE,GAElBh6D,MAAMC,QAAQ+5D,GAChBD,EAASA,EAAO5vD,OAAO6vD,GACd,GAASA,IAClBD,EAAO75D,KAAK85D,MAGhBx6C,EAAMu6C,OAGNv6C,EAFwB,kBAARA,GAAoBA,EAAIlgB,OAElC,CAAC26D,GAAU,CACfz6C,IAAKA,KAEE,GAASA,IAA2B,kBAAZA,EAAIA,KAAoBA,EAAIA,KAAOA,EAAIA,IAAIlgB,OAEtE,CAAC26D,GAAUz6C,IAGX,GAGR,OAAOA,GAYT,SAASy6C,GAAUz6C,GACjB,IAAKA,EAAItX,KAAM,CACb,IAAIwxD,EAAWF,GAAYh6C,EAAIA,KAE3Bk6C,IACFl6C,EAAItX,KAAOwxD,GAIf,OAAOl6C,EAUT,IAAI,GAA2B,SAAUwlC,GAevC,SAASkV,EAAY3oB,EAAQ1wC,EAASo4C,GACpC,IAAI5qB,EAGAirB,EAAWP,GAAa,CAC1BjI,UAAU,GACTjwC,GAIH,GAHAwtB,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ+H,EAAUL,IAAU1wC,KAGrD1H,EAAQw7C,cAAchR,SAAoD,IAAzCxqC,EAAQw7C,cAAchR,QAAQ9qC,OAqBlEgxC,EAAO/xB,IAAI3e,EAAQw7C,cAAchR,cApBjC,IAAK,IAAI/qC,EAAI,EAAGimC,EAAI1lC,EAAQw7C,cAAc8d,UAAW75D,EAAIimC,EAAEhmC,OAAQD,IAAK,CACtE,IAAI85D,EAAWzhB,GAAYpS,EAAEjmC,IACzB+jD,EAAO,GAAKuQ,QAAQwF,GAQxB,GALKA,IACH/V,EAAO,GAAUtI,aAAaqe,IAI5B/V,GAAQA,EAAKx7B,cAAe,CAC9B0oB,EAAO8oB,UAAUD,GACjB,OAWN,OAAO/rC,EAGT,OAnDA,IAAe6rC,EAAalV,GAmDrBkV,EApDsB,CAqD7B,IAEF,GAAUpa,kBAAkB,cAAe,IAS3C,IAAI,GAAkC,SAAUkF,GAe9C,SAASsV,EAAmB/oB,EAAQ1wC,GAClC,IAAIwtB,EAQJ,OANAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD8lB,EAAM4vB,gBAEN5vB,EAAMqc,SAECrc,EAvBT,IAAeisC,EAAoBtV,GA0CnC,IAAI92B,EAASosC,EAAmBj1D,UAmMhC,OAjMA6oB,EAAO4iB,SAAW,SAAkBte,EAAKwS,EAAOne,QAClC,IAAR2L,IACFA,EAAM,YAGM,IAAVwS,IACFA,EAAQ,SAGS,IAAfne,IACFA,EAAa,IAGfme,EAAQ,GAAO,CACbqnB,UAAW,gEACXrgB,UAAWzjC,KAAKm0C,gBAChB+I,SAAU,GACTzgB,GAES,WAARxS,GACF,GAAIviB,MAAM,yDAA2DuiB,EAAM,4CAI7E3L,EAAa,GAAO,CAClB6U,KAAM,UACL7U,GACHte,KAAKgyD,UAAYv1B,EAAMygB,SAEvB,IAAI90C,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAMiqB,EAAKwS,EAAOne,GAG9D,OADAte,KAAKiyD,oBAAoB7pD,GAClBA,GAGTud,EAAOlW,QAAU,WAEfzP,KAAKkyD,eAAiB,KAEtBzV,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAapC2lB,EAAOssC,oBAAsB,SAA6B7pD,GAaxD,OAZApI,KAAKkyD,eAAiB,GAAS,OAAQ,CACrCzuB,UAAW,oBACV,CAED,YAAa,WAGXr7B,GACFA,EAAGxB,YAAY5G,KAAKkyD,gBAGtBlyD,KAAKo+C,YAAYp+C,KAAKmyD,aAAc/pD,GAC7BpI,KAAKkyD,gBAgBdvsC,EAAOy4B,YAAc,SAAqBhrC,EAAMhL,GAK9C,QAJW,IAAPA,IACFA,EAAKpI,KAAKoI,WAGC9O,IAAT8Z,EACF,OAAOpT,KAAKmyD,cAAgB,YAG9B,IAAIC,EAAgBpyD,KAAKkyC,SAAS9+B,GAClCpT,KAAKmyD,aAAe/+C,EACpBykB,GAAY73B,KAAKkyD,eAAgBE,GAE5BpyD,KAAKqyD,gBAERjqD,EAAGkZ,aAAa,QAAS8wC,IAW7BzsC,EAAOwuB,cAAgB,WACrB,MAAO,0BAA4BsI,EAAW3/C,UAAUq3C,cAAcp0C,KAAKC,OAO7E2lB,EAAOwc,OAAS,WACTniC,KAAKsyD,WACRtyD,KAAKsyD,UAAW,EAChBtyD,KAAKmlC,YAAY,gBACjBnlC,KAAKkxC,IAAI5vB,aAAa,gBAAiB,SAET,qBAAnBthB,KAAKgyD,WACdhyD,KAAKkxC,IAAI5vB,aAAa,WAAYthB,KAAKgyD,WAGzChyD,KAAKoP,GAAG,CAAC,MAAO,SAAUpP,KAAKuyD,aAC/BvyD,KAAKoP,GAAG,UAAWpP,KAAKw1C,iBAQ5B7vB,EAAOuc,QAAU,WACfliC,KAAKsyD,UAAW,EAChBtyD,KAAKglC,SAAS,gBACdhlC,KAAKkxC,IAAI5vB,aAAa,gBAAiB,QAET,qBAAnBthB,KAAKgyD,WACdhyD,KAAKkxC,IAAI3vB,gBAAgB,YAG3BvhB,KAAKsP,IAAI,YAAatP,KAAKwyD,iBAC3BxyD,KAAKsP,IAAI,WAAYtP,KAAKyyD,gBAC1BzyD,KAAKsP,IAAI,CAAC,MAAO,SAAUtP,KAAKuyD,aAChCvyD,KAAKsP,IAAI,UAAWtP,KAAKw1C,gBAe3B7vB,EAAO4sC,YAAc,SAAqB/hD,GACpCxQ,KAAK+wC,SAAS2hB,cAChB1yD,KAAK+wC,SAAS2hB,aAAa3yD,KAAKC,KAAM4J,YAgB1C+b,EAAO6vB,cAAgB,SAAuBhlC,GAIxC,IAAQsuC,WAAWtuC,EAAO,UAAY,IAAQsuC,WAAWtuC,EAAO,UAClEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKI,QAAQ,UAGbq8C,EAAW3/C,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAI3CuhD,EA9O6B,CA+OpC,IAEF,GAAUxa,kBAAkB,qBAAsB,IAQlD,IAAI,GAA2B,SAAUob,GAYvC,SAASC,EAAY5pB,EAAQ1wC,GAC3B,IAAIwtB,EAOJ,OALAA,EAAQ6sC,EAAoB5yD,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE3D8lB,EAAM+sC,SAEN7pB,EAAO55B,GAAG,eAAgBxD,GAAK,IAAuBka,GAAQA,EAAM+sC,SAC7D/sC,EAnBT,IAAe8sC,EAAaD,GA0B5B,IAAIhtC,EAASitC,EAAY91D,UAiGzB,OA/FA6oB,EAAOlW,QAAU,WACfzP,KAAKgpC,SAAS15B,IAAI,eAAgBtP,KAAK6yD,QAEvCF,EAAoB71D,UAAU2S,QAAQ1P,KAAKC,OAU7C2lB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAK,GAAS,MAAO,CACvBq7B,UAAW,aAEXyZ,UAAW,IAEb,OAAO90C,GAYTud,EAAOktC,OAAS,SAAgBriD,GAC9B,IAAIjW,EAAMyF,KAAKgpC,SAAS8pB,SACxB9yD,KAAK+yD,OAAOx4D,GAGRA,EACFyF,KAAKw0C,OAELx0C,KAAKy0C,QAWT9uB,EAAOotC,OAAS,SAAgBx4D,GAC9B,IAAIy4D,EAAkB,GAGlBz4D,IACFy4D,EAAkB,QAAWz4D,EAAM,MAGrCyF,KAAKkxC,IAAI5H,MAAM0pB,gBAAkBA,GAenCrtC,EAAO4sC,YAAc,SAAqB/hD,GAExC,GAAKxQ,KAAK4wC,QAAQgN,WAAlB,CAIA,IAAIqV,EAAoBjzD,KAAK4wC,QAAQsiB,YAAY,QAAUlzD,KAAK4wC,QAAQuiB,IAAIC,UAAYpzD,KAAK4wC,QAAQuiB,IAAIC,SAASp7D,OAAS,GAEvHgI,KAAK4wC,QAAQkL,MAAK,KAGnB5C,IAAcH,KAAYka,GAC3BjzD,KAAK4wC,QAAQkL,MAAK,GAAM9V,QAGtBhmC,KAAK4wC,QAAQ4M,SACfhC,GAAex7C,KAAK4wC,QAAQD,QAE5B3wC,KAAK4wC,QAAQ8M,UAIVkV,EA5HsB,CA6H7B,IAEF,GAAUrb,kBAAkB,cAAe,IAE3C,IAAI8b,GAAW,OACXC,GAAY,OACZC,GAAU,CACZC,UAAW,YACXC,UAAW,aACXC,MAAO,QACPC,mBAAoB,6CACpBC,eAAgB,2BAChBC,sBAAuB,aACvBC,kBAAmB,QACnBC,OAAQ,mCACRxJ,OAAQ,8BACRyJ,UAAW,0DAeb,SAASC,GAAeC,EAAOC,GAC7B,IAAIC,EAEJ,GAAqB,IAAjBF,EAAMl8D,OAERo8D,EAAMF,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,OAC9D,IAAqB,IAAjBA,EAAMl8D,OAIf,MAAM,IAAIW,MAAM,gCAAkCu7D,EAAQ,gDAF1DE,EAAMF,EAAM58D,MAAM,GAKpB,MAAO,QAAU8vB,SAASgtC,EAAI98D,MAAM,EAAG,GAAI,IAAM,IAAM8vB,SAASgtC,EAAI98D,MAAM,EAAG,GAAI,IAAM,IAAM8vB,SAASgtC,EAAI98D,MAAM,EAAG,GAAI,IAAM,IAAM68D,EAAU,IAkB/I,SAASE,GAAejsD,EAAIkhC,EAAO6L,GACjC,IACE/sC,EAAGkhC,MAAMA,GAAS6L,EAClB,MAAOv7C,GAEP,QAUJ,IAAI,GAAgC,SAAU6iD,GAe5C,SAAS6X,EAAiBtrB,EAAQ1wC,EAASo4C,GACzC,IAAI5qB,EAEJA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,EAASo4C,IAAU1wC,KACzD,IAAIu0D,EAAuB3oD,GAAK,IAAuBka,GAAQA,EAAM+kC,eA4BrE,OA3BA7hB,EAAO55B,GAAG,YAAaxD,GAAK,IAAuBka,GAAQA,EAAM0uC,gBACjExrB,EAAO55B,GAAG,kBAAmBmlD,GAC7BvrB,EAAO55B,GAAG,iBAAkBxD,GAAK,IAAuBka,GAAQA,EAAM2uC,iBAKtEzrB,EAAO0H,MAAM9kC,GAAK,IAAuBka,IAAQ,WAC/C,GAAIkjB,EAAOsc,OAAStc,EAAOsc,MAAMmD,yBAC/BzoD,KAAKy0C,WADP,CAKAzL,EAAO55B,GAAG,mBAAoBmlD,GAC9BvrB,EAAO55B,GAAG,eAAgBmlD,GAC1B,IAASlrB,iBAAiB,oBAAqBkrB,GAC/CvrB,EAAO55B,GAAG,WAAW,WACnB,OAAO,IAASg6B,oBAAoB,oBAAqBmrB,MAI3D,IAFA,IAAIzwD,EAAS9D,KAAK+wC,SAAS+C,cAAchwC,QAAU,GAE1C/L,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IACjCiI,KAAK4wC,QAAQyL,mBAAmBv4C,EAAO/L,IAAI,GAG7CiI,KAAKy0D,sBAEA3uC,EA9CT,IAAewuC,EAAkB7X,GA2DjC,IAAI92B,EAAS2uC,EAAiBx3D,UAsR9B,OApRA6oB,EAAO8uC,eAAiB,WAWtB,IAVA,IAMIC,EACAC,EACAC,EARAC,EAAQ,CACVnS,SAAU,EACVG,UAAW,GAETiS,EAAY90D,KAAK4wC,QAAQsL,aACzB6Y,EAAW/0D,KAAK4wC,QAAQygB,OAAO2D,iBAK1Bj9D,EAAI,EAAGA,EAAI+8D,EAAU98D,OAAQD,IAAK,CACzC,IAAIgM,EAAQ+wD,EAAU/8D,GAElBg9D,GAAYA,EAAStU,SAAWsU,EAASppC,UAAYopC,EAASppC,WAAa5nB,EAAM4nB,UAAY5nB,EAAMw9C,QAAQsT,EAEzG9wD,EAAMw9C,OAASwT,EAASxT,KAC1BqT,EAAiB7wD,EACP6wD,IACVA,EAAiB7wD,GAGVgxD,IAAaA,EAAStU,SAC/BmU,EAAiB,KACjBF,EAAY,KACZC,EAAgB,MACP5wD,EAAM,aACI,iBAAfA,EAAMw9C,MAA4BmT,EAE3B3wD,EAAMw9C,QAAQsT,IAAUF,IACjCA,EAAgB5wD,GAFhB2wD,EAAY3wD,GAWd6wD,EACFA,EAAejP,KAAO,UACbgP,EACTA,EAAchP,KAAO,UACZ+O,IACTA,EAAU/O,KAAO,YAarBhgC,EAAO6uC,cAAgB,WACjBx0D,KAAK4wC,QAAQ0U,OAAStlD,KAAK4wC,QAAQ0U,MAAMmD,yBAC3CzoD,KAAKy0C,OAELz0C,KAAKw0C,QAWT7uB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,0BACV,CACD,YAAa,MACb,cAAe,UAQnB9d,EAAOsvC,aAAe,WACW,oBAApB,IAASlpD,QAClB,IAASA,OAAOmpD,YAAY,IAAU,GAAIl1D,KAAKkxC,MAYnDvrB,EAAOklC,cAAgB,WACrB,IAAI/mD,EAAS9D,KAAK4wC,QAAQsL,aACtBiZ,EAA6Bn1D,KAAK+wC,SAASokB,2BAG/C,GAFAn1D,KAAKi1D,eAEDE,EAAJ,CAGE,IAFA,IAAIC,EAAgB,GAEX91B,EAAK,EAAGA,EAAKx7B,EAAO9L,SAAUsnC,EAAI,CACzC,IAAIv7B,EAAQD,EAAOw7B,GAEA,YAAfv7B,EAAM4hD,MAIVyP,EAAcz9D,KAAKoM,GAGrB/D,KAAKq1D,eAAeD,OAbtB,CAoBA,IAAIE,EAAoB,KACpBC,EAAyB,KACzBx9D,EAAI+L,EAAO9L,OAEf,MAAOD,IAAK,CACV,IAAIy9D,EAAS1xD,EAAO/L,GAEA,YAAhBy9D,EAAO7P,OACW,iBAAhB6P,EAAOjU,KACT+T,EAAoBE,EAEpBD,EAAyBC,GAK3BD,GACqC,QAAnCv1D,KAAK6gB,aAAa,cACpB7gB,KAAKshB,aAAa,YAAa,OAGjCthB,KAAKq1D,eAAeE,IACXD,IAC8B,cAAnCt1D,KAAK6gB,aAAa,cACpB7gB,KAAKshB,aAAa,YAAa,aAGjCthB,KAAKq1D,eAAeC,MAWxB3vC,EAAO8vC,mBAAqB,SAA4B1xD,GACtD,IAAI2xD,EAAY11D,KAAK4wC,QAAQ+kB,kBAAkBC,YAC3Cla,EAAO33C,EAAMiiD,WACbjuD,EAAI2jD,EAAK1jD,OAEb,MAAOD,IAAK,CACV,IAAI4jD,EAAMD,EAAK3jD,GAEf,GAAK4jD,EAAL,CAIA,IAAIka,EAASla,EAAIma,aAsCjB,GApCIJ,EAAUxB,QACZ2B,EAAOv6C,WAAWguB,MAAM4qB,MAAQwB,EAAUxB,OAGxCwB,EAAUK,aACZ1B,GAAewB,EAAOv6C,WAAY,QAAS24C,GAAeyB,EAAUxB,OAAS,OAAQwB,EAAUK,cAG7FL,EAAUM,kBACZH,EAAOv6C,WAAWguB,MAAM0sB,gBAAkBN,EAAUM,iBAGlDN,EAAUO,mBACZ5B,GAAewB,EAAOv6C,WAAY,kBAAmB24C,GAAeyB,EAAUM,iBAAmB,OAAQN,EAAUO,oBAGjHP,EAAUQ,cACRR,EAAUS,cACZ9B,GAAewB,EAAQ,kBAAmB5B,GAAeyB,EAAUQ,YAAaR,EAAUS,gBAE1FN,EAAOvsB,MAAM0sB,gBAAkBN,EAAUQ,aAIzCR,EAAUU,YACgB,eAAxBV,EAAUU,UACZP,EAAOv6C,WAAWguB,MAAM+sB,WAAa,eAAiBhD,GAAW,iBAAmBA,GAAW,iBAAmBA,GACjF,WAAxBqC,EAAUU,UACnBP,EAAOv6C,WAAWguB,MAAM+sB,WAAa,WAAahD,GAAW,aAAeA,GAAW,aAAeA,GACrE,cAAxBqC,EAAUU,UACnBP,EAAOv6C,WAAWguB,MAAM+sB,WAAa,WAAa/C,GAAY,WAAaA,GAAY,eAAiBD,GAAW,YAAcA,GAChG,YAAxBqC,EAAUU,YACnBP,EAAOv6C,WAAWguB,MAAM+sB,WAAa,WAAahD,GAAW,aAAeA,GAAW,aAAeA,GAAW,aAAeA,KAIhIqC,EAAUY,aAAyC,IAA1BZ,EAAUY,YAAmB,CACxD,IAAIC,EAAW,IAASrvC,WAAW2uC,EAAOvsB,MAAMitB,UAChDV,EAAOvsB,MAAMitB,SAAWA,EAAWb,EAAUY,YAAc,KAC3DT,EAAOvsB,MAAMvhB,OAAS,OACtB8tC,EAAOvsB,MAAM9C,IAAM,OACnBqvB,EAAOvsB,MAAMktB,OAAS,MAGpBd,EAAUe,YAAuC,YAAzBf,EAAUe,aACP,eAAzBf,EAAUe,WACZZ,EAAOv6C,WAAWguB,MAAMotB,YAAc,aAEtCb,EAAOv6C,WAAWguB,MAAMmtB,WAAalD,GAAQmC,EAAUe,gBAa/D9wC,EAAO0vC,eAAiB,SAAwBvxD,GAK9C,GAJKrM,MAAMC,QAAQoM,KACjBA,EAAS,CAACA,IAGmB,oBAApB,IAASiI,SAAyBjI,EAAOoqC,OAAM,SAAUnqC,GAClE,OAAQA,EAAMiiD,cADhB,CAQA,IAFA,IAAItK,EAAO,GAEF3jD,EAAI,EAAGA,EAAI+L,EAAO9L,SAAUD,EAGnC,IAFA,IAAIgM,EAAQD,EAAO/L,GAEVimC,EAAI,EAAGA,EAAIj6B,EAAMiiD,WAAWhuD,SAAUgmC,EAC7C0d,EAAK/jD,KAAKoM,EAAMiiD,WAAWhoB,IAK/B,IAASjyB,OAAOmpD,YAAY,IAAUxZ,EAAM17C,KAAKkxC,KAEjD,IAAK,IAAIylB,EAAM,EAAGA,EAAM7yD,EAAO9L,SAAU2+D,EAAK,CAG5C,IAFA,IAAIC,EAAU9yD,EAAO6yD,GAEZE,EAAK,EAAGA,EAAKD,EAAQ5Q,WAAWhuD,SAAU6+D,EAAI,CACrD,IAAIC,EAAQF,EAAQ5Q,WAAW6Q,GAAIf,aACnC9wB,GAAS8xB,EAAO,sBAChB9xB,GAAS8xB,EAAO,uBAAyBF,EAAQjrC,SAAWirC,EAAQjrC,SAAWgrC,IAG7E32D,KAAK4wC,QAAQ+kB,mBACf31D,KAAKy1D,mBAAmBmB,MAKvBtC,EAlV2B,CAmVlC,IAEF,GAAU/c,kBAAkB,mBAAoB,IAQhD,IAAI,GAA8B,SAAUkF,GAG1C,SAASsa,IACP,OAAOta,EAAW56C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAe+2D,EAAgBta,GAM/B,IAAI92B,EAASoxC,EAAej6D,UAyB5B,OAjBA6oB,EAAO4iB,SAAW,WAChB,IAAIyuB,EAAUh3D,KAAK4wC,QAAQomB,UACvBC,EAAaj3D,KAAKkyC,SAAS8kB,EAAU,eAAiB,gBACtD5Y,EAAc,GAAS,OAAQ,CACjC3a,UAAW,mBACXqgB,UAAW9jD,KAAKkyC,SAAS,kBAAmB,CAAC+kB,MAG3C7uD,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACvDyjC,UAAW,sBACXyzB,IAAK,QAIP,OADA9uD,EAAGxB,YAAYw3C,GACRh2C,GAGF2uD,EAhCyB,CAiChC,IAEF,GAAUxf,kBAAkB,iBAAkB,IAQ9C,IAAI,GAAsB,SAAUob,GAGlC,SAASwE,IACP,OAAOxE,EAAoB9wD,MAAM7B,KAAM4J,YAAc5J,KAHvD,IAAem3D,EAAQxE,GAMvB,IAAIhtC,EAASwxC,EAAOr6D,UAqHpB,OAnGA6oB,EAAO4iB,SAAW,SAAkBte,EAAKwS,EAAOne,QAChC,IAAVme,IACFA,EAAQ,SAGS,IAAfne,IACFA,EAAa,IAGf2L,EAAM,SACNwS,EAAQ,GAAO,CACbqnB,UAAW,gEACXrgB,UAAWzjC,KAAKm0C,iBACf1X,GAEHne,EAAa,GAAO,CAElB3e,KAAM,UACL2e,GACH,IAAIlW,EAAK,GAAUtL,UAAUyrC,SAASxoC,KAAKC,KAAMiqB,EAAKwS,EAAOne,GAE7D,OADAte,KAAKiyD,oBAAoB7pD,GAClBA,GAoBTud,EAAOutB,SAAW,SAAkBl3B,EAAO1jB,QACzB,IAAZA,IACFA,EAAU,IAGZ,IAAImrC,EAAYzjC,KAAK/C,YAAYgN,KAGjC,OAFA,GAAIgB,KAAK,+DAAiEw4B,EAAY,yDAE/E,GAAU3mC,UAAUo2C,SAASnzC,KAAKC,KAAMgc,EAAO1jB,IAQxDqtB,EAAOwc,OAAS,WACdwwB,EAAoB71D,UAAUqlC,OAAOpiC,KAAKC,MAE1CA,KAAKkxC,IAAI3vB,gBAAgB,aAQ3BoE,EAAOuc,QAAU,WACfywB,EAAoB71D,UAAUolC,QAAQniC,KAAKC,MAE3CA,KAAKkxC,IAAI5vB,aAAa,WAAY,aAapCqE,EAAO6vB,cAAgB,SAAuBhlC,GAMxC,IAAQsuC,WAAWtuC,EAAO,UAAY,IAAQsuC,WAAWtuC,EAAO,SAClEA,EAAM+6B,kBAKRonB,EAAoB71D,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAGlD2mD,EA5HiB,CA6HxB,IAEF,GAAU5f,kBAAkB,SAAU,IAStC,IAAI,GAA6B,SAAU6f,GAGzC,SAASC,EAAcruB,EAAQ1wC,GAC7B,IAAIwtB,EAOJ,OALAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAC/C8lB,EAAMwxC,YAAa,EAEnBxxC,EAAM1W,GAAG,YAAa0W,EAAMyxC,iBAErBzxC,EAVT,IAAeuxC,EAAeD,GAoB9B,IAAIzxC,EAAS0xC,EAAcv6D,UAgE3B,OA9DA6oB,EAAOwuB,cAAgB,WACrB,MAAO,uBAeTxuB,EAAO4sC,YAAc,SAAqB/hD,GACxC,IAAIgnD,EAAcx3D,KAAK4wC,QAAQD,OAE/B,GAAI3wC,KAAKs3D,YAAc9mD,EAAMm7B,SAAWn7B,EAAMo7B,QAAS,CACrD,IAAIqnB,EAAoBjzD,KAAK4wC,QAAQsiB,YAAY,QAAUlzD,KAAK4wC,QAAQuiB,IAAIC,UAAYpzD,KAAK4wC,QAAQuiB,IAAIC,SAASp7D,OAAS,EAU3H,OATAwjD,GAAegc,SAEXx3D,KAAK4wC,QAAQkL,MAAK,KAGnB5C,IAAcH,KAAYka,GAC3BjzD,KAAK4wC,QAAQkL,MAAK,GAAM9V,SAM5B,IAAIyxB,EAAKz3D,KAAK4wC,QAAQkC,SAAS,cAC3B4kB,EAAaD,GAAMA,EAAG3kB,SAAS,cAEnC,GAAK4kB,EAAL,CAKA,IAAIC,EAAY,WACd,OAAOD,EAAW1xB,SAGhBsV,GAAUkc,GACZA,EAAYjc,KAAKoc,GAAW,eAE5B33D,KAAK7G,WAAWw+D,EAAW,QAX3B33D,KAAK4wC,QAAQkL,MAAK,GAAM9V,SAe5BrgB,EAAO6vB,cAAgB,SAAuBhlC,GAC5CxQ,KAAKs3D,YAAa,EAElBF,EAAQt6D,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAG7CmV,EAAO4xC,gBAAkB,SAAyB/mD,GAChDxQ,KAAKs3D,YAAa,GAGbD,EArFwB,CAsF/B,IASF,GAAcv6D,UAAUq1D,aAAe,aACvC,GAAU5a,kBAAkB,gBAAiB,IAS7C,IAAI,GAA2B,SAAU6f,GAYvC,SAASQ,EAAY5uB,EAAQ1wC,GAC3B,IAAIwtB,EAMJ,OAJAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAMs4B,YAAY9lD,GAAWA,EAAQ8lD,aAAet4B,EAAMosB,SAAS,UAE5DpsB,EAlBT,IAAe8xC,EAAaR,GA4B5B,IAAIzxC,EAASiyC,EAAY96D,UA6DzB,OA3DA6oB,EAAOwuB,cAAgB,WACrB,MAAO,oBAAsBijB,EAAQt6D,UAAUq3C,cAAcp0C,KAAKC,OAiBpE2lB,EAAO4sC,YAAc,SAAqB/hD,GAWxCxQ,KAAKI,QAAQ,CACXT,KAAM,QACN8sC,SAAS,KAgBb9mB,EAAO6vB,cAAgB,SAAuBhlC,GAExC,IAAQsuC,WAAWtuC,EAAO,QAC5BA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKI,QAAQ,UAGbg3D,EAAQt6D,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAIxConD,EA1FsB,CA2F7B,IAEF,GAAUrgB,kBAAkB,cAAe,IAQ3C,IAAI,GAA0B,SAAU6f,GAYtC,SAASS,EAAW7uB,EAAQ1wC,GAC1B,IAAIwtB,EAkBJ,YAhBgB,IAAZxtB,IACFA,EAAU,IAGZwtB,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C1H,EAAQw/D,YAA4Bx+D,IAAnBhB,EAAQw/D,QAAwBx/D,EAAQw/D,OAEzDhyC,EAAM1W,GAAG45B,EAAQ,OAAQljB,EAAMiyC,YAE/BjyC,EAAM1W,GAAG45B,EAAQ,QAASljB,EAAMkyC,aAE5B1/D,EAAQw/D,QACVhyC,EAAM1W,GAAG45B,EAAQ,QAASljB,EAAMmyC,aAG3BnyC,EA9BT,IAAe+xC,EAAYT,GAwC3B,IAAIzxC,EAASkyC,EAAW/6D,UAiGxB,OA/FA6oB,EAAOwuB,cAAgB,WACrB,MAAO,oBAAsBijB,EAAQt6D,UAAUq3C,cAAcp0C,KAAKC,OAepE2lB,EAAO4sC,YAAc,SAAqB/hD,GACpCxQ,KAAK4wC,QAAQ4M,SACfx9C,KAAK4wC,QAAQD,OAEb3wC,KAAK4wC,QAAQ8M,SAcjB/3B,EAAOuyC,aAAe,SAAsB1nD,GAC1CxQ,KAAKmlC,YAAY,aAEbnlC,KAAK4wC,QAAQ4M,SACfx9C,KAAKg4D,YAAYxnD,GAEjBxQ,KAAK+3D,WAAWvnD,IAapBmV,EAAOoyC,WAAa,SAAoBvnD,GACtCxQ,KAAKmlC,YAAY,aACjBnlC,KAAKmlC,YAAY,cACjBnlC,KAAKglC,SAAS,eAEdhlC,KAAKo+C,YAAY,UAYnBz4B,EAAOqyC,YAAc,SAAqBxnD,GACxCxQ,KAAKmlC,YAAY,eACjBnlC,KAAKglC,SAAS,cAEdhlC,KAAKo+C,YAAY,SAYnBz4B,EAAOsyC,YAAc,SAAqBznD,GACxCxQ,KAAKmlC,YAAY,eACjBnlC,KAAKglC,SAAS,aAEdhlC,KAAKo+C,YAAY,UAEjBp+C,KAAK2sC,IAAI3sC,KAAK4wC,QAAS,SAAU5wC,KAAKk4D,eAGjCL,EA1IqB,CA2I5B,IASF,GAAW/6D,UAAUq1D,aAAe,OACpC,GAAU5a,kBAAkB,aAAc,IAsB1C,IAAI4gB,GAAwB,SAA+BnrD,EAASorD,GAClEprD,EAAUA,EAAU,EAAI,EAAIA,EAC5B,IAAIsW,EAAI9jB,KAAKolB,MAAM5X,EAAU,IACzBkX,EAAI1kB,KAAKolB,MAAM5X,EAAU,GAAK,IAC9BqrD,EAAI74D,KAAKolB,MAAM5X,EAAU,MACzBsrD,EAAK94D,KAAKolB,MAAMwzC,EAAQ,GAAK,IAC7BG,EAAK/4D,KAAKolB,MAAMwzC,EAAQ,MAe5B,OAbIzzC,MAAM3X,IAAYA,IAAY3K,OAGhCg2D,EAAIn0C,EAAIZ,EAAI,KAId+0C,EAAIA,EAAI,GAAKE,EAAK,EAAIF,EAAI,IAAM,GAGhCn0C,IAAMm0C,GAAKC,GAAM,KAAOp0C,EAAI,GAAK,IAAMA,EAAIA,GAAK,IAEhDZ,EAAIA,EAAI,GAAK,IAAMA,EAAIA,EAChB+0C,EAAIn0C,EAAIZ,GAIb1Y,GAAiButD,GAUrB,SAASK,GAAcC,GACrB7tD,GAAiB6tD,EAMnB,SAASC,KACP9tD,GAAiButD,GAsBnB,SAASQ,GAAW3rD,EAASorD,GAK3B,YAJc,IAAVA,IACFA,EAAQprD,GAGHpC,GAAeoC,EAASorD,GASjC,IAAI,GAA2B,SAAU3b,GAYvC,SAASmc,EAAY5vB,EAAQ1wC,GAC3B,IAAIwtB,EAQJ,OANAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD8lB,EAAM1W,GAAG45B,EAAQ,CAAC,aAAc,SAAUljB,EAAM+yC,eAEhD/yC,EAAMgzC,kBAEChzC,EApBT,IAAe8yC,EAAanc,GA8B5B,IAAI92B,EAASizC,EAAY97D,UAsFzB,OApFA6oB,EAAO4iB,SAAW,WAChB,IAAI9E,EAAYzjC,KAAKm0C,gBAEjB/rC,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACvDyjC,UAAWA,EAAY,gCACvBqgB,UAAW,sDAA4D9jD,KAAKkyC,SAASlyC,KAAK+4D,YAAc,aAe1G,OAZA/4D,KAAK2yC,WAAa,GAAS,OAAQ,CACjClP,UAAWA,EAAY,YACtB,CAED,YAAa,MAKb,KAAQ,iBAEVr7B,EAAGxB,YAAY5G,KAAK2yC,YACbvqC,GAGTud,EAAOlW,QAAU,WACfzP,KAAK2yC,WAAa,KAClB3yC,KAAKg5D,UAAY,KAEjBvc,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAWpC2lB,EAAOmzC,gBAAkB,SAAyBvoC,GAChD,IAAI7J,EAAS1mB,UAEA,IAATuwB,IACFA,EAAO,GAGTA,EAAOooC,GAAWpoC,GAEdvwB,KAAKi5D,iBAAmB1oC,IAI5BvwB,KAAKi5D,eAAiB1oC,EACtBvwB,KAAKi3C,uBAAsB,WACzB,GAAKvwB,EAAOisB,WAAZ,CAIA,IAAIumB,EAAUxyC,EAAOsyC,UACrBtyC,EAAOsyC,UAAY,IAASjvD,eAAe2c,EAAOuyC,gBAE7CvyC,EAAOsyC,YAIRE,EACFxyC,EAAOisB,WAAWzyB,aAAawG,EAAOsyC,UAAWE,GAEjDxyC,EAAOisB,WAAW/rC,YAAY8f,EAAOsyC,kBAe3CrzC,EAAOkzC,cAAgB,SAAuBroD,KAEvCooD,EArHsB,CAsH7B,IASF,GAAY97D,UAAUi8D,WAAa,OAUnC,GAAYj8D,UAAUq1D,aAAe,OACrC,GAAU5a,kBAAkB,cAAe,IAQ3C,IAAI,GAAkC,SAAU4hB,GAG9C,SAASC,IACP,OAAOD,EAAat3D,MAAM7B,KAAM4J,YAAc5J,KAHhD,IAAeo5D,EAAoBD,GAMnC,IAAIxzC,EAASyzC,EAAmBt8D,UAkChC,OA1BA6oB,EAAOwuB,cAAgB,WACrB,MAAO,oBAYTxuB,EAAOkzC,cAAgB,SAAuBroD,GAE5C,IAAI+f,EAGFA,EADEvwB,KAAK4wC,QAAQyoB,QACRr5D,KAAK4wC,QAAQ3pB,WAEbjnB,KAAK4wC,QAAQ0oB,YAAct5D,KAAK4wC,QAAQ2oB,WAAWlT,YAAcrmD,KAAK4wC,QAAQyV,cAGvFrmD,KAAK84D,gBAAgBvoC,IAGhB6oC,EAzC6B,CA0CpC,IASF,GAAmBt8D,UAAUi8D,WAAa,eAU1C,GAAmBj8D,UAAUq1D,aAAe,eAC5C,GAAU5a,kBAAkB,qBAAsB,IAQlD,IAAI,GAA+B,SAAU4hB,GAY3C,SAASK,EAAgBxwB,EAAQ1wC,GAC/B,IAAIwtB,EAkBJ,OAhBAA,EAAQqzC,EAAap5D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAIpD8lB,EAAM1W,GAAG45B,EAAQ,iBAAkBljB,EAAM+yC,eAKzC/yC,EAAM1W,GAAG45B,EAAQ,YAAaljB,EAAM+yC,eAKpC/yC,EAAM1W,GAAG45B,EAAQ,iBAAkBljB,EAAM+yC,eAElC/yC,EA9BT,IAAe0zC,EAAiBL,GAwChC,IAAIxzC,EAAS6zC,EAAgB18D,UAuB7B,OArBA6oB,EAAOwuB,cAAgB,WACrB,MAAO,gBAeTxuB,EAAOkzC,cAAgB,SAAuBroD,GAC5C,IAAIyW,EAAWjnB,KAAK4wC,QAAQ3pB,WAC5BjnB,KAAK84D,gBAAgB7xC,IAGhBuyC,EAhE0B,CAiEjC,IASF,GAAgB18D,UAAUi8D,WAAa,WAUvC,GAAgBj8D,UAAUq1D,aAAe,WACzC,GAAU5a,kBAAkB,kBAAmB,IAS/C,IAAI,GAA2B,SAAUkF,GAGvC,SAASgd,IACP,OAAOhd,EAAW56C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAey5D,EAAahd,GAM5B,IAAI92B,EAAS8zC,EAAY38D,UAoBzB,OAZA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,oCACXqgB,UAAW,6BACV,CAID,eAAe,KAIZ2V,EA3BsB,CA4B7B,IAEF,GAAUliB,kBAAkB,cAAe,IAQ3C,IAAI,GAAoC,SAAU4hB,GAYhD,SAASO,EAAqB1wB,EAAQ1wC,GACpC,IAAIwtB,EAMJ,OAJAA,EAAQqzC,EAAap5D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAEpD8lB,EAAM1W,GAAG45B,EAAQ,iBAAkBljB,EAAM+yC,eAElC/yC,EAlBT,IAAe4zC,EAAsBP,GA4BrC,IAAIxzC,EAAS+zC,EAAqB58D,UAmDlC,OAjDA6oB,EAAOwuB,cAAgB,WACrB,MAAO,sBAUTxuB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAK+wD,EAAar8D,UAAUyrC,SAASxoC,KAAKC,MAK9C,OAHAoI,EAAG4X,aAAa,GAAS,OAAQ,GAAI,CACnC,eAAe,GACd,KAAMhgB,KAAK2yC,YACPvqC,GAaTud,EAAOkzC,cAAgB,SAAuBroD,GAK5C,IAAI+f,EAJmC,kBAA5BvwB,KAAK4wC,QAAQ3pB,aAQtBsJ,EADEvwB,KAAK4wC,QAAQyoB,QACR,EACEr5D,KAAK4wC,QAAQ+oB,qBACf35D,KAAK4wC,QAAQ+oB,uBAEb35D,KAAK4wC,QAAQgpB,gBAGtB55D,KAAK84D,gBAAgBvoC,KAGhBmpC,EAhF+B,CAiFtC,IASF,GAAqB58D,UAAUi8D,WAAa,iBAU5C,GAAqBj8D,UAAUq1D,aAAe,iBAC9C,GAAU5a,kBAAkB,uBAAwB,IAQpD,IAAI,GAA2B,SAAUkF,GAYvC,SAASod,EAAY7wB,EAAQ1wC,GAC3B,IAAIwtB,EAQJ,OANAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD8lB,EAAMg0C,gBAENh0C,EAAM1W,GAAG0W,EAAMkjB,SAAU,iBAAkBljB,EAAMg0C,eAE1Ch0C,EApBT,IAAe+zC,EAAapd,GA8B5B,IAAI92B,EAASk0C,EAAY/8D,UAyCzB,OAvCA6oB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACvDyjC,UAAW,iCAUb,OAPAzjC,KAAK2yC,WAAa,GAAS,MAAO,CAChClP,UAAW,mBACXqgB,UAAW,kCAAsC9jD,KAAKkyC,SAAS,eAAiB,WAAgBlyC,KAAKkyC,SAAS,SAC7G,CACD,YAAa,QAEf9pC,EAAGxB,YAAY5G,KAAK2yC,YACbvqC,GAGTud,EAAOlW,QAAU,WACfzP,KAAK2yC,WAAa,KAElB8J,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAapC2lB,EAAOm0C,cAAgB,SAAuBtpD,GACxCxQ,KAAKgpC,SAAS/hB,aAAe5kB,IAC/BrC,KAAKw0C,OAELx0C,KAAKy0C,QAIFolB,EAxEsB,CAyE7B,IAEF,GAAUtiB,kBAAkB,cAAe,IAQ3C,IAAI,GAA0B,SAAU6f,GAYtC,SAAS2C,EAAW/wB,EAAQ1wC,GAC1B,IAAIwtB,EAUJ,OARAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAMk0C,uBAEFl0C,EAAM8qB,QAAQqpB,aAChBn0C,EAAM1W,GAAG0W,EAAM8qB,QAAQqpB,YAAa,iBAAkBn0C,EAAMk0C,sBAGvDl0C,EAtBT,IAAei0C,EAAY3C,GAgC3B,IAAIzxC,EAASo0C,EAAWj9D,UA2DxB,OAzDA6oB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAKgvD,EAAQt6D,UAAUyrC,SAASxoC,KAAKC,KAAM,SAAU,CACvDyjC,UAAW,yCAUb,OAPAzjC,KAAKk6D,QAAU,GAAS,OAAQ,CAC9Bz2B,UAAW,wBACXqgB,UAAW9jD,KAAKkyC,SAAS,SACxB,CACD,cAAe,SAEjB9pC,EAAGxB,YAAY5G,KAAKk6D,SACb9xD,GAQTud,EAAOq0C,qBAAuB,YAEvBh6D,KAAK4wC,QAAQqpB,aAAej6D,KAAK4wC,QAAQqpB,YAAYE,cACxDn6D,KAAKshB,aAAa,iBAAiB,GACnCthB,KAAKglC,SAAS,oBACdhlC,KAAKo+C,YAAY,0CAEjBp+C,KAAKshB,aAAa,iBAAiB,GACnCthB,KAAKmlC,YAAY,oBACjBnlC,KAAKo+C,YAAY,yCAUrBz4B,EAAO4sC,YAAc,WACnBvyD,KAAK4wC,QAAQqpB,YAAYG,kBAO3Bz0C,EAAOlW,QAAU,WACXzP,KAAK4wC,QAAQqpB,aACfj6D,KAAKsP,IAAItP,KAAK4wC,QAAQqpB,YAAa,iBAAkBj6D,KAAKg6D,sBAG5Dh6D,KAAKk6D,QAAU,KAEf9C,EAAQt6D,UAAU2S,QAAQ1P,KAAKC,OAG1B+5D,EA5FqB,CA6F5B,IAEF,GAAWj9D,UAAUq1D,aAAe,uCACpC,GAAU5a,kBAAkB,aAAc,IAgB1C,IAAI8iB,GAAQ,SAAehzC,EAAQ/kB,EAAK2tB,GAEtC,OADA5I,EAASiP,OAAOjP,GACT7nB,KAAK8C,IAAI2tB,EAAKzwB,KAAKywB,IAAI3tB,EAAKqiB,MAAM0C,GAAU/kB,EAAM+kB,KAUvD,GAAsB,SAAUo1B,GAYlC,SAAS6d,EAAOtxB,EAAQ1wC,GACtB,IAAIwtB,EAUJ,OARAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD8lB,EAAMy0C,IAAMz0C,EAAMgtB,SAAShtB,EAAMirB,SAASypB,SAE1C10C,EAAM20C,WAAW30C,EAAMirB,SAAS0pB,UAEhC30C,EAAMqc,SAECrc,EAtBT,IAAew0C,EAAQ7d,GAgCvB,IAAI92B,EAAS20C,EAAOx9D,UAsUpB,OApUA6oB,EAAO86B,QAAU,WACf,OAAOzgD,KAAKsyD,UAOd3sC,EAAOwc,OAAS,WACVniC,KAAKygD,YAITzgD,KAAKoP,GAAG,YAAapP,KAAKu3D,iBAC1Bv3D,KAAKoP,GAAG,aAAcpP,KAAKu3D,iBAC3Bv3D,KAAKoP,GAAG,UAAWpP,KAAKw1C,eACxBx1C,KAAKoP,GAAG,QAASpP,KAAKuyD,aAEtBvyD,KAAKoP,GAAGpP,KAAK4wC,QAAS,kBAAmB5wC,KAAK6yD,QAE1C7yD,KAAK06D,aACP16D,KAAKoP,GAAGpP,KAAK4wC,QAAS5wC,KAAK06D,YAAa16D,KAAK6yD,QAG/C7yD,KAAKmlC,YAAY,YACjBnlC,KAAKshB,aAAa,WAAY,GAC9BthB,KAAKsyD,UAAW,IAOlB3sC,EAAOuc,QAAU,WACf,GAAKliC,KAAKygD,UAAV,CAIA,IAAI55C,EAAM7G,KAAKu6D,IAAIrpB,IAAIh3B,cACvBla,KAAKsP,IAAI,YAAatP,KAAKu3D,iBAC3Bv3D,KAAKsP,IAAI,aAActP,KAAKu3D,iBAC5Bv3D,KAAKsP,IAAI,UAAWtP,KAAKw1C,eACzBx1C,KAAKsP,IAAI,QAAStP,KAAKuyD,aACvBvyD,KAAKsP,IAAItP,KAAK4wC,QAAS,kBAAmB5wC,KAAK6yD,QAC/C7yD,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK26D,iBAChC36D,KAAKsP,IAAIzI,EAAK,UAAW7G,KAAK46D,eAC9B56D,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK26D,iBAChC36D,KAAKsP,IAAIzI,EAAK,WAAY7G,KAAK46D,eAC/B56D,KAAKuhB,gBAAgB,YACrBvhB,KAAKglC,SAAS,YAEVhlC,KAAK06D,aACP16D,KAAKsP,IAAItP,KAAK4wC,QAAS5wC,KAAK06D,YAAa16D,KAAK6yD,QAGhD7yD,KAAKsyD,UAAW,IAmBlB3sC,EAAO4iB,SAAW,SAAkB5oC,EAAM88B,EAAOne,GAqB/C,YApBc,IAAVme,IACFA,EAAQ,SAGS,IAAfne,IACFA,EAAa,IAIfme,EAAMgH,UAAYhH,EAAMgH,UAAY,cACpChH,EAAQ,GAAO,CACbygB,SAAU,GACTzgB,GACHne,EAAa,GAAO,CAClB,KAAQ,SACR,gBAAiB,EACjB,gBAAiB,EACjB,gBAAiB,IACjB,SAAY,GACXA,GACIm+B,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAML,EAAM88B,EAAOne,IAc/DqH,EAAO4xC,gBAAkB,SAAyB/mD,GAChD,IAAI3J,EAAM7G,KAAKu6D,IAAIrpB,IAAIh3B,cAEJ,cAAf1J,EAAM7Q,MACR6Q,EAAMw6B,iBAOW,eAAfx6B,EAAM7Q,MAA0Bq5C,IAClCxoC,EAAMw6B,iBAGRjF,KACA/lC,KAAKglC,SAAS,eAQdhlC,KAAKI,QAAQ,gBACbJ,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAK26D,iBAC/B36D,KAAKoP,GAAGvI,EAAK,UAAW7G,KAAK46D,eAC7B56D,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAK26D,iBAC/B36D,KAAKoP,GAAGvI,EAAK,WAAY7G,KAAK46D,eAC9B56D,KAAK26D,gBAAgBnqD,IAiBvBmV,EAAOg1C,gBAAkB,SAAyBnqD,KAalDmV,EAAOi1C,cAAgB,WACrB,IAAI/zD,EAAM7G,KAAKu6D,IAAIrpB,IAAIh3B,cACvBgsB,KACAlmC,KAAKmlC,YAAY,eAQjBnlC,KAAKI,QAAQ,kBACbJ,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK26D,iBAChC36D,KAAKsP,IAAIzI,EAAK,UAAW7G,KAAK46D,eAC9B56D,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK26D,iBAChC36D,KAAKsP,IAAIzI,EAAK,WAAY7G,KAAK46D,eAC/B56D,KAAK6yD,UAWPltC,EAAOktC,OAAS,WACd,IAAInsC,EAAS1mB,KAMb,GAAKA,KAAKkxC,KAAQlxC,KAAKu6D,IAAvB,CAMA,IAAIM,EAAW76D,KAAK86D,cAEpB,OAAID,IAAa76D,KAAK+6D,UACbF,GAGT76D,KAAK+6D,UAAYF,EACjB76D,KAAKi3C,uBAAsB,WAEzB,IAAI+jB,EAAUt0C,EAAO+zC,WAAa,SAAW,QAE7C/zC,EAAO6zC,IAAInyD,KAAKkhC,MAAM0xB,IAAuB,IAAXH,GAAgBI,QAAQ,GAAK,OAE1DJ,KAWTl1C,EAAOm1C,YAAc,WACnB,OAAOxkC,OAAO+jC,GAAMr6D,KAAKk7D,aAAc,EAAG,GAAGD,QAAQ,KAevDt1C,EAAOw1C,kBAAoB,SAA2B3qD,GACpD,IAAI3K,EAAWohC,GAAmBjnC,KAAKkxC,IAAK1gC,GAE5C,OAAIxQ,KAAKy6D,WACA50D,EAASynB,EAGXznB,EAASwnB,GAclB1H,EAAO6vB,cAAgB,SAAuBhlC,GAExC,IAAQsuC,WAAWtuC,EAAO,SAAW,IAAQsuC,WAAWtuC,EAAO,SACjEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKo7D,YACI,IAAQtc,WAAWtuC,EAAO,UAAY,IAAQsuC,WAAWtuC,EAAO,OACzEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKq7D,eAGL5e,EAAW3/C,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAYlDmV,EAAO4sC,YAAc,SAAqB/hD,GACxCA,EAAM+6B,kBACN/6B,EAAMw6B,kBAeRrlB,EAAO80C,SAAW,SAAkBa,GAClC,QAAahiE,IAATgiE,EACF,OAAOt7D,KAAKu7D,YAAa,EAG3Bv7D,KAAKu7D,YAAcD,EAEft7D,KAAKu7D,UACPv7D,KAAKglC,SAAS,uBAEdhlC,KAAKglC,SAAS,0BAIXs1B,EAvWiB,CAwWxB,IAEF,GAAU/iB,kBAAkB,SAAU,IAEtC,IAAIikB,GAAa,SAAoBjrC,EAAM7xB,GACzC,OAAO27D,GAAM9pC,EAAO7xB,EAAM,IAAK,EAAG,KAAKu8D,QAAQ,GAAK,KASlD,GAA+B,SAAUxe,GAY3C,SAASgf,EAAgBzyB,EAAQ1wC,GAC/B,IAAIwtB,EAOJ,OALAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM41C,SAAW,GAEjB51C,EAAM1W,GAAG45B,EAAQ,WAAYljB,EAAM+sC,QAE5B/sC,EAnBT,IAAe21C,EAAiBhf,GA6BhC,IAAI92B,EAAS81C,EAAgB3+D,UAgG7B,OA9FA6oB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACvDyjC,UAAW,sBAGTwL,EAAU,GAAS,OAAQ,CAC7BxL,UAAW,qBAETk4B,EAAa,GAAS,OAAQ,CAChC9jC,YAAa73B,KAAKkyC,SAAS,YAEzB0pB,EAAY,IAAS7xD,eAAe,MASxC,OARA/J,KAAK67D,cAAgB,GAAS,OAAQ,CACpCp4B,UAAW,qCACX5L,YAAa,OAEfzvB,EAAGxB,YAAYqoC,GACfA,EAAQroC,YAAY+0D,GACpB1sB,EAAQroC,YAAYg1D,GACpB3sB,EAAQroC,YAAY5G,KAAK67D,eAClBzzD,GAGTud,EAAOlW,QAAU,WACfzP,KAAK07D,SAAW,KAChB17D,KAAK67D,cAAgB,KAErBpf,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAYpC2lB,EAAOktC,OAAS,SAAgBriD,GAC9B,IAAIkW,EAAS1mB,KAEbA,KAAKi3C,uBAAsB,WACzB,IAAIgjB,EAAcvzC,EAAOkqB,QAAQqpB,YAE7B3f,EAAW5zB,EAAOkqB,QAAQ0J,WAE1BrzB,EAAWgzC,GAAeA,EAAY6B,SAAW7B,EAAY8B,cAAgBr1C,EAAOkqB,QAAQ3pB,WAE5F+0C,EAAct1C,EAAOkqB,QAAQorB,cAE7BppB,EAAWlsB,EAAOg1C,SAClBO,EAAUT,GAAWQ,EAAa/0C,GAElCP,EAAOw1C,WAAaD,IAEtBv1C,EAAOwqB,IAAI5H,MAAMxhB,MAAQm0C,EAEzBpkC,GAAYnR,EAAOm1C,cAAeI,GAClCv1C,EAAOw1C,SAAWD,GAIpB,IAAK,IAAIlkE,EAAI,EAAGA,EAAIuiD,EAAStiD,OAAQD,IAAK,CACxC,IAAI0G,EAAQ67C,EAAS77C,MAAM1G,GACvB2G,EAAM47C,EAAS57C,IAAI3G,GACnBokE,EAAOvpB,EAAS76C,GAEfokE,IACHA,EAAOz1C,EAAOwqB,IAAItqC,YAAY,MAC9BgsC,EAAS76C,GAAKokE,GAIZA,EAAKC,QAAQ39D,QAAUA,GAAS09D,EAAKC,QAAQ19D,MAAQA,IAIzDy9D,EAAKC,QAAQ39D,MAAQA,EACrB09D,EAAKC,QAAQ19D,IAAMA,EAEnBy9D,EAAK7yB,MAAM/C,KAAOi1B,GAAW/8D,EAAOu9D,GACpCG,EAAK7yB,MAAMxhB,MAAQ0zC,GAAW98D,EAAMD,EAAOu9D,IAI7C,IAAK,IAAI18B,EAAKsT,EAAS56C,OAAQsnC,EAAKgb,EAAStiD,OAAQsnC,IACnD5Y,EAAOwqB,IAAIz0B,YAAYm2B,EAAStT,EAAK,IAGvCsT,EAAS56C,OAASsiD,EAAStiD,WAIxByjE,EA9H0B,CA+HjC,IAEF,GAAUlkB,kBAAkB,kBAAmB,IAQ/C,IAAI,GAA2B,SAAUkF,GAYvC,SAAS4f,EAAYrzB,EAAQ1wC,GAC3B,IAAIwtB,EAIJ,OAFAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM+sC,OAAS,GAASjnD,GAAK,IAAuBka,GAAQA,EAAM+sC,QAAS7lB,IACpElnB,EAhBT,IAAeu2C,EAAa5f,GA0B5B,IAAI92B,EAAS02C,EAAYv/D,UA4HzB,OA1HA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,oBACV,CACD,cAAe,UAenB9d,EAAOktC,OAAS,SAAgByJ,EAAaC,EAAclnD,GACzD,IAAImnD,EAAcr2B,GAAsBnmC,KAAKkxC,KACzCurB,EAAat2B,GAAsBnmC,KAAK4wC,QAAQxoC,MAChDs0D,EAAiBJ,EAAYx0C,MAAQy0C,EAGzC,GAAKE,GAAeD,EAApB,CAQA,IAAIG,EAAmBL,EAAY/1B,KAAOk2B,EAAWl2B,KAAOm2B,EAKxDE,EAAoBN,EAAYx0C,MAAQ40C,GAAkBD,EAAWI,MAAQP,EAAYO,OAGzFC,EAAgBN,EAAY10C,MAAQ,EAGpC60C,EAAmBG,EACrBA,GAAiBA,EAAgBH,EACxBC,EAAoBE,IAC7BA,EAAgBF,GAMdE,EAAgB,EAClBA,EAAgB,EACPA,EAAgBN,EAAY10C,QACrCg1C,EAAgBN,EAAY10C,OAG9B9nB,KAAKkxC,IAAI5H,MAAMuzB,MAAQ,IAAMC,EAAgB,KAC7C98D,KAAKykB,MAAMpP,KAUbsQ,EAAOlB,MAAQ,SAAepP,GAC5BwiB,GAAY73B,KAAKkxC,IAAK77B,IAqBxBsQ,EAAOo3C,WAAa,SAAoBT,EAAaC,EAAchsC,EAAMknC,GACvE,IAAI/wC,EAAS1mB,KAGTA,KAAKg9D,QACPh9D,KAAKm3C,qBAAqBn3C,KAAKg9D,QAGjCh9D,KAAKg9D,OAASh9D,KAAKi3C,uBAAsB,WACvC,IAAI5hC,EAEA4R,EAAWP,EAAOkqB,QAAQ3pB,WAE9B,GAAIP,EAAOkqB,QAAQqpB,aAAevzC,EAAOkqB,QAAQqpB,YAAY6B,SAAU,CACrE,IAAImB,EAAav2C,EAAOkqB,QAAQqpB,YAAYgD,aAExCC,EAAgBD,EAAaV,EAAeU,EAChD5nD,GAAW6nD,EAAgB,EAAI,GAAK,KAAOvE,GAAWuE,EAAeD,QAErE5nD,EAAUsjD,GAAWpoC,EAAMtJ,GAG7BP,EAAOmsC,OAAOyJ,EAAaC,EAAclnD,GAErCoiD,GACFA,QAKC4E,EAvJsB,CAwJ7B,IAEF,GAAU9kB,kBAAkB,cAAe,IAS3C,IAAI,GAA+B,SAAUkF,GAY3C,SAAS0gB,EAAgBn0B,EAAQ1wC,GAC/B,IAAIwtB,EAIJ,OAFAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM+sC,OAAS,GAASjnD,GAAK,IAAuBka,GAAQA,EAAM+sC,QAAS7lB,IACpElnB,EAhBT,IAAeq3C,EAAiB1gB,GA0BhC,IAAI92B,EAASw3C,EAAgBrgE,UAiC7B,OA/BA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,oCACV,CACD,cAAe,UAgBnB9d,EAAOktC,OAAS,SAAgByJ,EAAaC,GAC3C,IAAIa,EAAcp9D,KAAK8yC,SAAS,eAEhC,GAAKsqB,EAAL,CAIA,IAAI7sC,EAAOvwB,KAAK4wC,QAAQ0oB,YAAct5D,KAAK4wC,QAAQ2oB,WAAWlT,YAAcrmD,KAAK4wC,QAAQyV,cACzF+W,EAAYL,WAAWT,EAAaC,EAAchsC,KAG7C4sC,EA5D0B,CA6DjC,IASF,GAAgBrgE,UAAUi0C,SAAW,CACnC6B,SAAU,IAGP8G,IAAWjB,IACd,GAAgB37C,UAAUi0C,SAAS6B,SAASj7C,KAAK,eAGnD,GAAU4/C,kBAAkB,kBAAmB,IAW/C,IAAI,GAAgC,SAAUkF,GAY5C,SAAS4gB,EAAiBr0B,EAAQ1wC,GAChC,IAAIwtB,EAIJ,OAFAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM+sC,OAAS,GAASjnD,GAAK,IAAuBka,GAAQA,EAAM+sC,QAAS7lB,IACpElnB,EAhBT,IAAeu3C,EAAkB5gB,GA0BjC,IAAI92B,EAAS03C,EAAiBvgE,UA6B9B,OA3BA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,uBAgBf9d,EAAOktC,OAAS,SAAgByJ,EAAaC,GAC3C,IAAI71C,EAAS1mB,KAETuwB,EAAOgsC,EAAev8D,KAAK4wC,QAAQ3pB,WACvCjnB,KAAK8yC,SAAS,eAAeiqB,WAAWT,EAAaC,EAAchsC,GAAM,WACvE7J,EAAOwqB,IAAI5H,MAAM/C,KAAO+1B,EAAYx0C,MAAQy0C,EAAe,SAIxDc,EAxD2B,CAyDlC,IASF,GAAiBvgE,UAAUi0C,SAAW,CACpC6B,SAAU,CAAC,gBAEb,GAAU2E,kBAAkB,mBAAoB,IAEhD,IAAI+lB,GAAe,EAEfC,GAAsB,GAQtB,GAAuB,SAAUC,GAYnC,SAASC,EAAQz0B,EAAQ1wC,GACvB,IAAIwtB,EAMJ,OAJAA,EAAQ03C,EAAQz9D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAM43C,oBAEC53C,EAlBT,IAAe23C,EAASD,GA2BxB,IAAI73C,EAAS83C,EAAQ3gE,UAoZrB,OAlZA6oB,EAAO+3C,kBAAoB,WACzB19D,KAAK29D,QAAU/xD,GAAK5L,KAAMA,KAAK6yD,QAC/B7yD,KAAK6yD,OAAS,GAAS7yD,KAAK29D,QAAS3wB,IACrChtC,KAAKoP,GAAGpP,KAAK4wC,QAAS,CAAC,QAAS,iBAAkB,cAAe5wC,KAAK6yD,QAElE7yD,KAAK4wC,QAAQqpB,aACfj6D,KAAKoP,GAAGpP,KAAK4wC,QAAQqpB,YAAa,iBAAkBj6D,KAAK6yD,QAK3D7yD,KAAK49D,eAAiB,KACtB59D,KAAKoP,GAAGpP,KAAK4wC,QAAS,CAAC,WAAY5wC,KAAK69D,iBACxC79D,KAAKoP,GAAGpP,KAAK4wC,QAAS,CAAC,QAAS,QAAS,WAAY5wC,KAAK89D,kBAGtD,WAAY,KAAY,oBAAqB,KAC/C99D,KAAKoP,GAAG,IAAU,mBAAoBpP,KAAK+9D,oBAI/Cp4C,EAAOo4C,kBAAoB,SAA2BnkE,GAChD,IAASypD,OACXrjD,KAAK89D,iBAAiBlkE,IAEtBoG,KAAK69D,kBAEL79D,KAAK6yD,WAITltC,EAAOk4C,gBAAkB,WACnB79D,KAAK49D,iBAIT59D,KAAK49D,eAAiB59D,KAAK22C,YAAY32C,KAAK6yD,OAAQ7lB,MAGtDrnB,EAAOm4C,iBAAmB,SAA0BlkE,GAC9CoG,KAAK4wC,QAAQqpB,aAAej6D,KAAK4wC,QAAQqpB,YAAY6B,UAAYliE,GAAgB,UAAXA,EAAE+F,MAIvEK,KAAK49D,iBAIV59D,KAAK02C,cAAc12C,KAAK49D,gBACxB59D,KAAK49D,eAAiB,OAUxBj4C,EAAO4iB,SAAW,WAChB,OAAOi1B,EAAQ1gE,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CAClDyjC,UAAW,uBACV,CACD,aAAczjC,KAAKkyC,SAAS,mBAiBhCvsB,EAAOktC,OAAS,SAAgBriD,GAC9B,IAAIkW,EAAS1mB,KAETi8D,EAAUuB,EAAQ1gE,UAAU+1D,OAAO9yD,KAAKC,MAgC5C,OA9BAA,KAAKi3C,uBAAsB,WACzB,IAAIoP,EAAc3/B,EAAOkqB,QAAQyoB,QAAU3yC,EAAOkqB,QAAQ3pB,WAAaP,EAAOs3C,kBAC1E/D,EAAcvzC,EAAOkqB,QAAQqpB,YAE7BhzC,EAAWP,EAAOkqB,QAAQ3pB,WAE1BgzC,GAAeA,EAAY6B,WAC7B70C,EAAWP,EAAOkqB,QAAQqpB,YAAYgE,mBAGpCv3C,EAAOw1C,WAAaD,IAEtBv1C,EAAOwqB,IAAI5vB,aAAa,iBAA4B,IAAV26C,GAAehB,QAAQ,IAEjEv0C,EAAOw1C,SAAWD,GAGhBv1C,EAAOw3C,eAAiB7X,GAAe3/B,EAAO6iC,YAActiC,IAE9DP,EAAOwqB,IAAI5vB,aAAa,iBAAkBoF,EAAOwrB,SAAS,oDAAqD,CAACymB,GAAWtS,EAAap/B,GAAW0xC,GAAW1xC,EAAUA,IAAY,eAEpLP,EAAOw3C,aAAe7X,EACtB3/B,EAAO6iC,UAAYtiC,GAIjBP,EAAO6zC,KACT7zC,EAAO6zC,IAAI1H,OAAO1sB,GAAsBzf,EAAOte,MAAOse,EAAOo0C,kBAG1DmB,GAaTt2C,EAAOq4C,gBAAkB,WACvB,OAAOh+D,KAAK4wC,QAAQ0oB,YAAct5D,KAAK4wC,QAAQ2oB,WAAWlT,YAAcrmD,KAAK4wC,QAAQyV,eAUvF1gC,EAAOu1C,WAAa,WAClB,IACIe,EADA5V,EAAcrmD,KAAKg+D,kBAEnB/D,EAAcj6D,KAAK4wC,QAAQqpB,YAY/B,OAVIA,GAAeA,EAAY6B,UAC7BG,GAAW5V,EAAc4T,EAAYkE,iBAAmBlE,EAAYgD,aAEhEhD,EAAYE,eACd8B,EAAU,IAGZA,EAAU5V,EAAcrmD,KAAK4wC,QAAQ3pB,WAGhCg1C,GAYTt2C,EAAO4xC,gBAAkB,SAAyB/mD,GAC3Cu3B,GAAkBv3B,KAKvBA,EAAM+6B,kBACNvrC,KAAK4wC,QAAQ0oB,WAAU,GACvBt5D,KAAKo+D,iBAAmBp+D,KAAK4wC,QAAQ4M,SACrCx9C,KAAK4wC,QAAQ8M,QAEb8f,EAAQ1gE,UAAUy6D,gBAAgBx3D,KAAKC,KAAMwQ,KAY/CmV,EAAOg1C,gBAAkB,SAAyBnqD,GAChD,GAAKu3B,GAAkBv3B,GAAvB,CAIA,IAAI6tD,EACAC,EAAWt+D,KAAKm7D,kBAAkB3qD,GAClCypD,EAAcj6D,KAAK4wC,QAAQqpB,YAE/B,GAAKA,GAAgBA,EAAY6B,SAM1B,CACL,GAAIwC,GAAY,IAEd,YADArE,EAAYG,iBAId,IAAI+D,EAAgBlE,EAAYkE,gBAC5BpC,EAAc9B,EAAYgE,kBAgB9B,GAfAI,EAAUF,EAAgBG,EAAWrE,EAAYgD,aAE7CoB,GAAWtC,IACbsC,EAAUtC,GAKRsC,GAAWF,IACbE,EAAUF,EAAgB,IAMxBE,IAAYh8D,IACd,YA7BFg8D,EAAUC,EAAWt+D,KAAK4wC,QAAQ3pB,WAE9Bo3C,IAAYr+D,KAAK4wC,QAAQ3pB,aAC3Bo3C,GAAoB,IA+BxBr+D,KAAK4wC,QAAQyV,YAAYgY,KAG3B14C,EAAOwc,OAAS,WACdq7B,EAAQ1gE,UAAUqlC,OAAOpiC,KAAKC,MAE9B,IAAIu+D,EAAmBv+D,KAAK8yC,SAAS,oBAEhCyrB,GAILA,EAAiB/pB,QAGnB7uB,EAAOuc,QAAU,WACfs7B,EAAQ1gE,UAAUolC,QAAQniC,KAAKC,MAE/B,IAAIu+D,EAAmBv+D,KAAK8yC,SAAS,oBAEhCyrB,GAILA,EAAiB9pB,QAYnB9uB,EAAOi1C,cAAgB,SAAuBpqD,GAC5CgtD,EAAQ1gE,UAAU89D,cAAc76D,KAAKC,KAAMwQ,GAGvCA,GACFA,EAAM+6B,kBAGRvrC,KAAK4wC,QAAQ0oB,WAAU,GASvBt5D,KAAK4wC,QAAQxwC,QAAQ,CACnBT,KAAM,aACN2J,OAAQtJ,KACR6pD,mBAAmB,IAGjB7pD,KAAKo+D,gBACP5iB,GAAex7C,KAAK4wC,QAAQD,QAI5B3wC,KAAK29D,WAQTh4C,EAAO01C,YAAc,WACnBr7D,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQyV,cAAgBiX,KAOxD33C,EAAOy1C,SAAW,WAChBp7D,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQyV,cAAgBiX,KAYxD33C,EAAO64C,aAAe,SAAsBhuD,GACtCxQ,KAAK4wC,QAAQ4M,SACfx9C,KAAK4wC,QAAQD,OAEb3wC,KAAK4wC,QAAQ8M,SAqBjB/3B,EAAO6vB,cAAgB,SAAuBhlC,GAC5C,GAAI,IAAQsuC,WAAWtuC,EAAO,UAAY,IAAQsuC,WAAWtuC,EAAO,SAClEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKw+D,aAAahuD,QACb,GAAI,IAAQsuC,WAAWtuC,EAAO,QACnCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAK4wC,QAAQyV,YAAY,QACpB,GAAI,IAAQvH,WAAWtuC,EAAO,OACnCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQ3pB,iBACjC,GAAI,UAAU3iB,KAAK,IAAQkM,IAAS,CACzCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACN,IAAIkzB,EAAsE,IAAtD,IAAQC,MAAM,IAAQluD,IAAU,IAAQkuD,MAAM,MAAe,IACjF1+D,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQ3pB,WAAaw3C,QAC1C,IAAQ3f,WAAWtuC,EAAO,SACnCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQyV,cAAgBiX,GAAeC,KAC5D,IAAQze,WAAWtuC,EAAO,SACnCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAK4wC,QAAQyV,YAAYrmD,KAAK4wC,QAAQyV,cAAgBiX,GAAeC,KAGrEC,EAAQ1gE,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAI/CmV,EAAOlW,QAAU,WACfzP,KAAK89D,mBACL99D,KAAKsP,IAAItP,KAAK4wC,QAAS,CAAC,QAAS,iBAAkB,cAAe5wC,KAAK6yD,QAEnE7yD,KAAK4wC,QAAQqpB,aACfj6D,KAAKoP,GAAGpP,KAAK4wC,QAAQqpB,YAAa,iBAAkBj6D,KAAK6yD,QAG3D7yD,KAAKsP,IAAItP,KAAK4wC,QAAS,CAAC,WAAY5wC,KAAK69D,iBACzC79D,KAAKsP,IAAItP,KAAK4wC,QAAS,CAAC,QAAS,QAAS,WAAY5wC,KAAK89D,kBAGvD,WAAY,KAAY,oBAAqB,KAC/C99D,KAAKsP,IAAI,IAAU,mBAAoBtP,KAAK+9D,mBAG9CP,EAAQ1gE,UAAU2S,QAAQ1P,KAAKC,OAG1By9D,EAhbkB,CAibzB,IASF,GAAQ3gE,UAAUi0C,SAAW,CAC3B6B,SAAU,CAAC,kBAAmB,mBAC9B4nB,QAAS,mBAGN9gB,IAAWjB,IACd,GAAQ37C,UAAUi0C,SAAS6B,SAASrjC,OAAO,EAAG,EAAG,oBAGnD,GAAUgoC,kBAAkB,UAAW,IASvC,IAAI,GAA+B,SAAUkF,GAY3C,SAASkiB,EAAgB31B,EAAQ1wC,GAC/B,IAAIwtB,EAQJ,OANAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM60C,gBAAkB,GAAS/uD,GAAK,IAAuBka,GAAQA,EAAM60C,iBAAkB3tB,IAC7FlnB,EAAM84C,yBAA2B,GAAShzD,GAAK,IAAuBka,GAAQA,EAAM+4C,iBAAkB7xB,IAEtGlnB,EAAMqc,SAECrc,EApBT,IAAe64C,EAAiBliB,GA8BhC,IAAI92B,EAASg5C,EAAgB7hE,UAgL7B,OA9KA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,sCAcf9d,EAAOg1C,gBAAkB,SAAyBnqD,GAChD,IAAIsuD,EAAU9+D,KAAK8yC,SAAS,WAE5B,GAAKgsB,EAAL,CAIA,IAAIC,EAAkBD,EAAQhsB,SAAS,mBACnCyrB,EAAmBO,EAAQhsB,SAAS,oBAExC,GAAKisB,GAAoBR,EAAzB,CAIA,IAAIS,EAAYF,EAAQ12D,KACpBk0D,EAAcn2B,GAAsB64B,GACpCzC,EAAet1B,GAAmB+3B,EAAWxuD,GAAO6c,EAIxDkvC,EAAelC,GAAM,EAAG,EAAGkC,GAEvBgC,GACFA,EAAiB1L,OAAOyJ,EAAaC,GAGnCwC,GACFA,EAAgBlM,OAAOyJ,EAAawC,EAAQhE,kBAyBhDn1C,EAAOk5C,gBAAkB,SAAyBruD,GAChD,IAAIsuD,EAAU9+D,KAAK8yC,SAAS,WAExBgsB,GACFA,EAAQnE,gBAAgBnqD,IAW5BmV,EAAO86B,QAAU,WACf,OAAOzgD,KAAKsyD,UAOd3sC,EAAOuc,QAAU,WACfliC,KAAK4yC,WAAW37C,SAAQ,SAAU+kB,GAChC,OAAOA,EAAMkmB,SAAWlmB,EAAMkmB,aAG3BliC,KAAKygD,YAIVzgD,KAAKsP,IAAI,CAAC,YAAa,cAAetP,KAAKu3D,iBAC3Cv3D,KAAKsP,IAAItP,KAAKkxC,IAAK,YAAalxC,KAAK26D,iBACrC36D,KAAK46D,gBACL56D,KAAKglC,SAAS,YACdhlC,KAAKsyD,UAAW,IAOlB3sC,EAAOwc,OAAS,WACdniC,KAAK4yC,WAAW37C,SAAQ,SAAU+kB,GAChC,OAAOA,EAAMmmB,QAAUnmB,EAAMmmB,YAG3BniC,KAAKygD,YAITzgD,KAAKoP,GAAG,CAAC,YAAa,cAAepP,KAAKu3D,iBAC1Cv3D,KAAKoP,GAAGpP,KAAKkxC,IAAK,YAAalxC,KAAK26D,iBACpC36D,KAAKmlC,YAAY,YACjBnlC,KAAKsyD,UAAW,IAalB3sC,EAAO4xC,gBAAkB,SAAyB/mD,GAChD,IAAI3J,EAAM7G,KAAKkxC,IAAIh3B,cACf4kD,EAAU9+D,KAAK8yC,SAAS,WAExBgsB,GACFA,EAAQvH,gBAAgB/mD,GAG1BxQ,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAK4+D,0BAC/B5+D,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAK4+D,0BAC/B5+D,KAAKoP,GAAGvI,EAAK,UAAW7G,KAAK46D,eAC7B56D,KAAKoP,GAAGvI,EAAK,WAAY7G,KAAK46D,gBAahCj1C,EAAOi1C,cAAgB,SAAuBpqD,GAC5C,IAAI3J,EAAM7G,KAAKkxC,IAAIh3B,cACf4kD,EAAU9+D,KAAK8yC,SAAS,WAExBgsB,GACFA,EAAQlE,cAAcpqD,GAGxBxQ,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK4+D,0BAChC5+D,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAK4+D,0BAChC5+D,KAAKsP,IAAIzI,EAAK,UAAW7G,KAAK46D,eAC9B56D,KAAKsP,IAAIzI,EAAK,WAAY7G,KAAK46D,gBAG1B+D,EA/M0B,CAgNjC,IASF,GAAgB7hE,UAAUi0C,SAAW,CACnC6B,SAAU,CAAC,YAEb,GAAU2E,kBAAkB,kBAAmB,IAQ/C,IAAI,GAAsC,SAAU6f,GAelD,SAAS6H,EAAuBj2B,EAAQ1wC,GACtC,IAAIwtB,EAaJ,OAXAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAM1W,GAAG45B,EAAQ,CAAC,wBAAyB,yBAA0BljB,EAAMo5C,8BAKtE,IAASC,yBACZr5C,EAAMoc,UAGDpc,EA5BT,IAAem5C,EAAwB7H,GAsCvC,IAAIzxC,EAASs5C,EAAuBniE,UA6CpC,OA3CA6oB,EAAOwuB,cAAgB,WACrB,MAAO,kCAAoCijB,EAAQt6D,UAAUq3C,cAAcp0C,KAAKC,OAclF2lB,EAAOu5C,6BAA+B,SAAsC1uD,GACtExQ,KAAK4wC,QAAQwuB,uBACfp/D,KAAKo+C,YAAY,2BAEjBp+C,KAAKo+C,YAAY,uBAgBrBz4B,EAAO4sC,YAAc,SAAqB/hD,GACnCxQ,KAAK4wC,QAAQwuB,uBAGhBp/D,KAAK4wC,QAAQyuB,uBAFbr/D,KAAK4wC,QAAQ0a,2BAMV2T,EApFiC,CAqFxC,IASF,GAAuBniE,UAAUq1D,aAAe,qBAChD,GAAU5a,kBAAkB,yBAA0B,IAQtD,IAAI,GAAgC,SAAU6f,GAY5C,SAASkI,EAAiBt2B,EAAQ1wC,GAChC,IAAIwtB,EAUJ,OARAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAM1W,GAAG45B,EAAQ,mBAAoBljB,EAAMy5C,yBAEO,IAA9C,IAASv2B,EAAOw2B,OAAOC,oBACzB35C,EAAMoc,UAGDpc,EAtBT,IAAew5C,EAAkBlI,GAgCjC,IAAIzxC,EAAS25C,EAAiBxiE,UA4C9B,OA1CA6oB,EAAOwuB,cAAgB,WACrB,MAAO,0BAA4BijB,EAAQt6D,UAAUq3C,cAAcp0C,KAAKC,OAa1E2lB,EAAO45C,uBAAyB,SAAgC/uD,GAC1DxQ,KAAK4wC,QAAQ8uB,eACf1/D,KAAKo+C,YAAY,kBAEjBp+C,KAAKo+C,YAAY,eAgBrBz4B,EAAO4sC,YAAc,SAAqB/hD,GACnCxQ,KAAK4wC,QAAQ8uB,eAGhB1/D,KAAK4wC,QAAQ+uB,iBAFb3/D,KAAK4wC,QAAQgvB,qBAMVN,EA7E2B,CA8ElC,IASF,GAAiBxiE,UAAUq1D,aAAe,aAC1C,GAAU5a,kBAAkB,mBAAoB,IAchD,IAAIsoB,GAAqB,SAA4Bp6C,EAAMujB,GAErDA,EAAOsc,QAAUtc,EAAOsc,MAAMgH,uBAChC7mC,EAAKuf,SAAS,cAGhBvf,EAAKrW,GAAG45B,EAAQ,aAAa,WACtBA,EAAOsc,MAAMgH,sBAGhB7mC,EAAK0f,YAAY,cAFjB1f,EAAKuf,SAAS,kBAahB,GAA2B,SAAUyX,GAGvC,SAASqjB,IACP,OAAOrjB,EAAW56C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAe8/D,EAAarjB,GAM5B,IAAI92B,EAASm6C,EAAYhjE,UAezB,OAPA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,mBACXqgB,UAAW,4CAIRgc,EAtBsB,CAuB7B,IAEF,GAAUvoB,kBAAkB,cAAe,IAQ3C,IAAI,GAAyB,SAAUimB,GAYrC,SAASuC,EAAU/2B,EAAQ1wC,GACzB,IAAIwtB,EAWJ,OATAA,EAAQ03C,EAAQz9D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAM1W,GAAG,eAAgB0W,EAAMk6C,mBAE/Bl6C,EAAM1W,GAAG45B,EAAQ,eAAgBljB,EAAMm6C,sBAEvCj3B,EAAO0H,OAAM,WACX,OAAO5qB,EAAMm6C,0BAERn6C,EAvBT,IAAei6C,EAAWvC,GAiC1B,IAAI73C,EAASo6C,EAAUjjE,UAsIvB,OApIA6oB,EAAO4iB,SAAW,WAChB,OAAOi1B,EAAQ1gE,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CAClDyjC,UAAW,iCACV,CACD,aAAczjC,KAAKkyC,SAAS,gBAC5B,YAAa,YAajBvsB,EAAO4xC,gBAAkB,SAAyB/mD,GAC3Cu3B,GAAkBv3B,IAIvBgtD,EAAQ1gE,UAAUy6D,gBAAgBx3D,KAAKC,KAAMwQ,IAY/CmV,EAAOg1C,gBAAkB,SAAyBnqD,GAC3Cu3B,GAAkBv3B,KAIvBxQ,KAAKkgE,aACLlgE,KAAK4wC,QAAQme,OAAO/uD,KAAKm7D,kBAAkB3qD,MAO7CmV,EAAOu6C,WAAa,WACdlgE,KAAK4wC,QAAQie,SACf7uD,KAAK4wC,QAAQie,OAAM,IAWvBlpC,EAAOu1C,WAAa,WAClB,OAAIl7D,KAAK4wC,QAAQie,QACR,EAGF7uD,KAAK4wC,QAAQme,UAOtBppC,EAAO01C,YAAc,WACnBr7D,KAAKkgE,aACLlgE,KAAK4wC,QAAQme,OAAO/uD,KAAK4wC,QAAQme,SAAW,KAO9CppC,EAAOy1C,SAAW,WAChBp7D,KAAKkgE,aACLlgE,KAAK4wC,QAAQme,OAAO/uD,KAAK4wC,QAAQme,SAAW,KAY9CppC,EAAOs6C,qBAAuB,SAA8BzvD,GAC1D,IAAI2vD,EAAYngE,KAAK4wC,QAAQie,QAAU,EAAI7uD,KAAKogE,sBAChDpgE,KAAKkxC,IAAI5vB,aAAa,gBAAiB6+C,GACvCngE,KAAKkxC,IAAI5vB,aAAa,iBAAkB6+C,EAAY,MAStDx6C,EAAOy6C,oBAAsB,WAC3B,OAAO5gE,KAAKwnC,MAA8B,IAAxBhnC,KAAK4wC,QAAQme,WAYjCppC,EAAOq6C,kBAAoB,WACzB,IAAIt5C,EAAS1mB,KAETqgE,EAAmBrgE,KAAK4wC,QAAQme,SACpC/uD,KAAK2sC,IAAI,kBAAkB,WACO,IAA5BjmB,EAAOkqB,QAAQme,UACjBroC,EAAOkqB,QAAQ0vB,YAAYD,OAK1BN,EAxKoB,CAyK3B,IASF,GAAUjjE,UAAUi0C,SAAW,CAC7B6B,SAAU,CAAC,eACX4nB,QAAS,eAQX,GAAU19D,UAAU49D,YAAc,eAClC,GAAUnjB,kBAAkB,YAAa,IAQzC,IAAI,GAA6B,SAAUkF,GAYzC,SAAS8jB,EAAcv3B,EAAQ1wC,GAC7B,IAAIwtB,EAyCJ,YAvCgB,IAAZxtB,IACFA,EAAU,IAGZA,EAAQmiE,SAAWniE,EAAQmiE,WAAY,GAGN,qBAAtBniE,EAAQkoE,WAA6Bz9B,GAAQzqC,EAAQkoE,cAC9DloE,EAAQkoE,UAAYloE,EAAQkoE,WAAa,GACzCloE,EAAQkoE,UAAU/F,SAAWniE,EAAQmiE,UAGvC30C,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD6/D,GAAmB,IAAuB/5C,GAAQkjB,GAClDljB,EAAM26C,yBAA2B,GAAS70D,GAAK,IAAuBka,GAAQA,EAAM60C,iBAAkB3tB,IAEtGlnB,EAAM1W,GAAG,YAAa0W,EAAMyxC,iBAE5BzxC,EAAM1W,GAAG,aAAc0W,EAAMyxC,iBAI7BzxC,EAAM1W,GAAG0W,EAAM06C,UAAW,CAAC,QAAS,iBAAiB,WACnD16C,EAAM06C,UAAUx7B,SAAS,qBAEzBlf,EAAMkf,SAAS,qBAEflf,EAAM1lB,QAAQ,mBAGhB0lB,EAAM1W,GAAG0W,EAAM06C,UAAW,CAAC,OAAQ,mBAAmB,WACpD16C,EAAM06C,UAAUr7B,YAAY,qBAE5Brf,EAAMqf,YAAY,qBAElBrf,EAAM1lB,QAAQ,qBAGT0lB,EArDT,IAAey6C,EAAe9jB,GA+D9B,IAAI92B,EAAS46C,EAAczjE,UAgE3B,OA9DA6oB,EAAO4iB,SAAW,WAChB,IAAIm4B,EAAmB,wBAMvB,OAJI1gE,KAAK+wC,SAAS0pB,WAChBiG,EAAmB,uBAGdjkB,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,kCAAoCi9B,KAcnD/6C,EAAO4xC,gBAAkB,SAAyB/mD,GAChD,IAAI3J,EAAM7G,KAAKkxC,IAAIh3B,cACnBla,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAKygE,0BAC/BzgE,KAAKoP,GAAGvI,EAAK,YAAa7G,KAAKygE,0BAC/BzgE,KAAKoP,GAAGvI,EAAK,UAAW7G,KAAK46D,eAC7B56D,KAAKoP,GAAGvI,EAAK,WAAY7G,KAAK46D,gBAahCj1C,EAAOi1C,cAAgB,SAAuBpqD,GAC5C,IAAI3J,EAAM7G,KAAKkxC,IAAIh3B,cACnBla,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAKygE,0BAChCzgE,KAAKsP,IAAIzI,EAAK,YAAa7G,KAAKygE,0BAChCzgE,KAAKsP,IAAIzI,EAAK,UAAW7G,KAAK46D,eAC9B56D,KAAKsP,IAAIzI,EAAK,WAAY7G,KAAK46D,gBAajCj1C,EAAOg1C,gBAAkB,SAAyBnqD,GAChDxQ,KAAKwgE,UAAU7F,gBAAgBnqD,IAG1B+vD,EAhIwB,CAiI/B,IASF,GAAczjE,UAAUi0C,SAAW,CACjC6B,SAAU,CAAC,cAEb,GAAU2E,kBAAkB,gBAAiB,IAc7C,IAAIopB,GAAmB,SAA0Bl7C,EAAMujB,GAEjDA,EAAOsc,QAAUtc,EAAOsc,MAAMiH,qBAChC9mC,EAAKuf,SAAS,cAGhBvf,EAAKrW,GAAG45B,EAAQ,aAAa,WACtBA,EAAOsc,MAAMiH,oBAGhB9mC,EAAK0f,YAAY,cAFjB1f,EAAKuf,SAAS,kBAahB,GAA0B,SAAUoyB,GAYtC,SAASwJ,EAAW53B,EAAQ1wC,GAC1B,IAAIwtB,EAQJ,OANAA,EAAQsxC,EAAQr3D,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C2gE,GAAiB,IAAuB76C,GAAQkjB,GAEhDljB,EAAM1W,GAAG45B,EAAQ,CAAC,YAAa,gBAAiBljB,EAAM+sC,QAE/C/sC,EApBT,IAAe86C,EAAYxJ,GA8B3B,IAAIzxC,EAASi7C,EAAW9jE,UAuGxB,OArGA6oB,EAAOwuB,cAAgB,WACrB,MAAO,oBAAsBijB,EAAQt6D,UAAUq3C,cAAcp0C,KAAKC,OAepE2lB,EAAO4sC,YAAc,SAAqB/hD,GACxC,IAAIqwD,EAAM7gE,KAAK4wC,QAAQme,SACnB+R,EAAa9gE,KAAK4wC,QAAQ0vB,cAE9B,GAAY,IAARO,EAAW,CACb,IAAIE,EAAcD,EAAa,GAAM,GAAMA,EAC3C9gE,KAAK4wC,QAAQme,OAAOgS,GACpB/gE,KAAK4wC,QAAQie,OAAM,QAEnB7uD,KAAK4wC,QAAQie,OAAM7uD,KAAK4wC,QAAQie,UAgBpClpC,EAAOktC,OAAS,SAAgBriD,GAC9BxQ,KAAKghE,cACLhhE,KAAKihE,sBAePt7C,EAAOq7C,YAAc,WACnB,IAAIH,EAAM7gE,KAAK4wC,QAAQme,SACnB5tB,EAAQ,EAIRuY,IAAU15C,KAAK4wC,QAAQ0U,OAAStlD,KAAK4wC,QAAQ0U,MAAMpU,KACrDlxC,KAAK4wC,QAAQie,MAAM7uD,KAAK4wC,QAAQ0U,MAAMpU,IAAI2d,OAGhC,IAARgS,GAAa7gE,KAAK4wC,QAAQie,QAC5B1tB,EAAQ,EACC0/B,EAAM,IACf1/B,EAAQ,EACC0/B,EAAM,MACf1/B,EAAQ,GAIV,IAAK,IAAIppC,EAAI,EAAGA,EAAI,EAAGA,IACrBotC,GAAYnlC,KAAKkxC,IAAK,WAAan5C,GAGrCitC,GAAShlC,KAAKkxC,IAAK,WAAa/P,IAWlCxb,EAAOs7C,mBAAqB,WAC1B,IAAIC,EAAWlhE,KAAK4wC,QAAQie,SAAqC,IAA1B7uD,KAAK4wC,QAAQme,SAChD37C,EAAO8tD,EAAW,SAAW,OAE7BlhE,KAAKo+C,gBAAkBhrC,GACzBpT,KAAKo+C,YAAYhrC,IAIdwtD,EAtIqB,CAuI5B,IASF,GAAW9jE,UAAUq1D,aAAe,OACpC,GAAU5a,kBAAkB,aAAc,IAS1C,IAAI,GAA2B,SAAUkF,GAYvC,SAAS0kB,EAAYn4B,EAAQ1wC,GAC3B,IAAIwtB,EAuCJ,YArCgB,IAAZxtB,IACFA,EAAU,IAGkB,qBAAnBA,EAAQ8oE,OACjB9oE,EAAQ8oE,OAAS9oE,EAAQ8oE,OAEzB9oE,EAAQ8oE,QAAS,GAKkB,qBAA1B9oE,EAAQ+oE,eAAiCt+B,GAAQzqC,EAAQ+oE,kBAClE/oE,EAAQ+oE,cAAgB/oE,EAAQ+oE,eAAiB,GACjD/oE,EAAQ+oE,cAAc5G,UAAYniE,EAAQ8oE,QAG5Ct7C,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAElD8lB,EAAM1W,GAAG45B,EAAQ,CAAC,aAAcljB,EAAMw7C,mBAEtCx7C,EAAM1W,GAAG0W,EAAMy7C,WAAY,QAASz7C,EAAM2vB,gBAE1C3vB,EAAM1W,GAAG0W,EAAMu7C,cAAe,QAASv7C,EAAM07C,0BAE7C17C,EAAM1W,GAAG,UAAW0W,EAAM2vB,gBAE1B3vB,EAAM1W,GAAG,YAAa0W,EAAM0sC,iBAE5B1sC,EAAM1W,GAAG,WAAY0W,EAAM2sC,gBAI3B3sC,EAAM1W,GAAG0W,EAAMu7C,cAAe,CAAC,gBAAiBv7C,EAAM27C,eAEtD37C,EAAM1W,GAAG0W,EAAMu7C,cAAe,CAAC,kBAAmBv7C,EAAM47C,iBAEjD57C,EAnDT,IAAeq7C,EAAa1kB,GA6D5B,IAAI92B,EAASw7C,EAAYrkE,UAoIzB,OAlIA6oB,EAAO87C,cAAgB,WACrBzhE,KAAKglC,SAAS,sBAUhBrf,EAAO+7C,gBAAkB,WACvB1hE,KAAKmlC,YAAY,sBAWnBxf,EAAO27C,kBAAoB,WAGrBthE,KAAKqhE,cAAcz8B,SAAS,eAAiB5kC,KAAKuhE,WAAW38B,SAAS,eACxE5kC,KAAKglC,SAAS,cAKZhlC,KAAKqhE,cAAcz8B,SAAS,gBAAkB5kC,KAAKuhE,WAAW38B,SAAS,eACzE5kC,KAAKglC,SAAS,yBAWlBrf,EAAO4iB,SAAW,WAChB,IAAIm4B,EAAmB,8BAMvB,OAJK1gE,KAAK+wC,SAASqwB,SACjBV,EAAmB,6BAGdjkB,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,gCAAkCi9B,KAQjD/6C,EAAOlW,QAAU,WACfzP,KAAKyyD,iBAELhW,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAapC2lB,EAAO67C,yBAA2B,SAAkChxD,GAC9D,IAAQsuC,WAAWtuC,EAAO,QAC5BxQ,KAAKuhE,WAAWv7B,SAepBrgB,EAAO6sC,gBAAkB,SAAyBhiD,GAChDxQ,KAAKglC,SAAS,aACd51B,GAAG,IAAU,QAASxD,GAAK5L,KAAMA,KAAKy1C,kBAcxC9vB,EAAO8sC,eAAiB,SAAwBjiD,GAC9CxQ,KAAKmlC,YAAY,aACjB71B,GAAI,IAAU,QAAS1D,GAAK5L,KAAMA,KAAKy1C,kBAazC9vB,EAAO8vB,eAAiB,SAAwBjlC,GAC1C,IAAQsuC,WAAWtuC,EAAO,QAC5BxQ,KAAKyyD,kBAIF0O,EAlMsB,CAmM7B,IASF,GAAYrkE,UAAUi0C,SAAW,CAC/B6B,SAAU,CAAC,aAAc,kBAE3B,GAAU2E,kBAAkB,cAAe,IAS3C,IAAI,GAAoB,SAAUkF,GAahC,SAASklB,EAAK34B,EAAQ1wC,GACpB,IAAIwtB,EAeJ,OAbAA,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE9C1H,IACFwtB,EAAM87C,YAActpE,EAAQupE,YAG9B/7C,EAAMg8C,eAAiB,EAEvBh8C,EAAM1W,GAAG,UAAW0W,EAAM0vB,eAG1B1vB,EAAMi8C,iBAAmBn2D,GAAK,IAAuBka,GAAQA,EAAMk8C,YACnEl8C,EAAMm8C,qBAAuBr2D,GAAK,IAAuBka,GAAQA,EAAMo8C,gBAChEp8C,EA5BT,IAAe67C,EAAMllB,GAuCrB,IAAI92B,EAASg8C,EAAK7kE,UAgPlB,OA9OA6oB,EAAOw8C,wBAA0B,SAAiChvB,GAC1DA,aAAqB,KAI3BnzC,KAAKoP,GAAG+jC,EAAW,OAAQnzC,KAAK+hE,kBAChC/hE,KAAKoP,GAAG+jC,EAAW,CAAC,MAAO,SAAUnzC,KAAKiiE,wBAW5Ct8C,EAAOy8C,2BAA6B,SAAoCjvB,GAChEA,aAAqB,KAI3BnzC,KAAKsP,IAAI6jC,EAAW,OAAQnzC,KAAK+hE,kBACjC/hE,KAAKsP,IAAI6jC,EAAW,CAAC,MAAO,SAAUnzC,KAAKiiE,wBAa7Ct8C,EAAOlJ,YAAc,SAAqB02B,GACf,kBAAdA,IACTA,EAAYnzC,KAAK8yC,SAASK,IAG5BnzC,KAAKoiE,2BAA2BjvB,GAEhCsJ,EAAW3/C,UAAU2f,YAAY1c,KAAKC,KAAMmzC,IAW9CxtB,EAAO08C,QAAU,SAAiBlvB,GAChC,IAAImvB,EAAiBtiE,KAAKkzC,SAASC,GAE/BmvB,GACFtiE,KAAKmiE,wBAAwBG,IAWjC38C,EAAO4iB,SAAW,WAChB,IAAIg6B,EAAgBviE,KAAK+wC,SAASwxB,eAAiB,KACnDviE,KAAK2yC,WAAa,GAAS4vB,EAAe,CACxC9+B,UAAW,qBAEbzjC,KAAK2yC,WAAWrxB,aAAa,OAAQ,QAErC,IAAIlZ,EAAKq0C,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACvDwiE,OAAQxiE,KAAK2yC,WACblP,UAAW,aAUb,OAPAr7B,EAAGxB,YAAY5G,KAAK2yC,YAGpBvjC,GAAGhH,EAAI,SAAS,SAAUoI,GACxBA,EAAMw6B,iBACNx6B,EAAMi7B,8BAEDrjC,GAGTud,EAAOlW,QAAU,WACfzP,KAAK2yC,WAAa,KAClB3yC,KAAK+hE,iBAAmB,KACxB/hE,KAAKiiE,qBAAuB,KAE5BxlB,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAYpC2lB,EAAOq8C,WAAa,SAAoBxxD,GACtC,IAAI06B,EAAgB16B,EAAM06B,eAAiB,IAAS0T,cAEpD,IAAK5+C,KAAK4yC,WAAWoB,MAAK,SAAUrc,GAClC,OAAOA,EAAQvvB,OAAS8iC,KACtB,CACF,IAAIu3B,EAAMziE,KAAK4hE,YAEXa,GAAOA,EAAIC,gBAAkBx3B,IAAkBu3B,EAAIr6D,KAAKkT,YAC1DmnD,EAAIE,kBAcVh9C,EAAOu8C,eAAiB,SAAwB1xD,GAE9C,GAAIxQ,KAAK4hE,YAAa,CACpB5hE,KAAK4hE,YAAYe,gBACjB,IAAIC,EAAkB5iE,KAAK4yC,WAE3B,IAAKn7C,MAAMC,QAAQkrE,GACjB,OAGF,IAAIC,EAAiBD,EAAgBnxC,QAAO,SAAU0hB,GACpD,OAAOA,EAAU/qC,OAASoI,EAAMlH,UAC/B,GAEH,IAAKu5D,EACH,OAK4B,4BAA1BA,EAAe54D,QACjBjK,KAAK4hE,YAAY57B,UAcvBrgB,EAAO6vB,cAAgB,SAAuBhlC,GAExC,IAAQsuC,WAAWtuC,EAAO,SAAW,IAAQsuC,WAAWtuC,EAAO,SACjEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKq7D,gBACI,IAAQvc,WAAWtuC,EAAO,UAAY,IAAQsuC,WAAWtuC,EAAO,SACzEA,EAAMw6B,iBACNx6B,EAAM+6B,kBACNvrC,KAAKo7D,aAQTz1C,EAAO01C,YAAc,WACnB,IAAIyH,EAAY,OAEWxpE,IAAvB0G,KAAK8hE,gBACPgB,EAAY9iE,KAAK8hE,cAAgB,GAGnC9hE,KAAKgmC,MAAM88B,IAObn9C,EAAOy1C,SAAW,WAChB,IAAI0H,EAAY,OAEWxpE,IAAvB0G,KAAK8hE,gBACPgB,EAAY9iE,KAAK8hE,cAAgB,GAGnC9hE,KAAKgmC,MAAM88B,IAUbn9C,EAAOqgB,MAAQ,SAAeznB,QACf,IAATA,IACFA,EAAO,GAGT,IAAIq0B,EAAW5yC,KAAK4yC,WAAWt7C,QAC3ByrE,EAAYnwB,EAAS56C,QAAU46C,EAAS,GAAGnP,WAAa,iBAAiBn/B,KAAKsuC,EAAS,GAAGnP,WAE1Fs/B,GACFnwB,EAAShT,QAGPgT,EAAS56C,OAAS,IAChBumB,EAAO,EACTA,EAAO,EACEA,GAAQq0B,EAAS56C,SAC1BumB,EAAOq0B,EAAS56C,OAAS,GAG3BgI,KAAK8hE,cAAgBvjD,EACrBq0B,EAASr0B,GAAM2yB,IAAIlL,UAIhB27B,EAxRe,CAyRtB,IAEF,GAAUpqB,kBAAkB,OAAQ,IAQpC,IAAI,GAA0B,SAAUkF,GAYtC,SAASumB,EAAWh6B,EAAQ1wC,GAC1B,IAAIwtB,OAEY,IAAZxtB,IACFA,EAAU,IAGZwtB,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAClD8lB,EAAM87C,YAAc,IAAI,GAAO54B,EAAQ1wC,GAEvCwtB,EAAM87C,YAAYxjB,YAAYt4B,EAAMqsC,cAEpCrsC,EAAM87C,YAAY1wB,IAAI5vB,aAAa,gBAAiB,QAGpD,IAAI2hD,EAAc,GAAOnmE,UAAUq3C,gBA6BnC,OA5BAruB,EAAM87C,YAAY1wB,IAAIzN,UAAY3d,EAAMquB,gBAAkB,IAAM8uB,EAEhEn9C,EAAM87C,YAAYz8B,YAAY,eAE9Brf,EAAMotB,SAASptB,EAAM87C,aAErB97C,EAAM+sC,SAEN/sC,EAAMwsC,UAAW,EAEjBxsC,EAAM1W,GAAG0W,EAAM87C,YAAa,MAAO97C,EAAMysC,aAEzCzsC,EAAM1W,GAAG0W,EAAM87C,YAAa,QAAS97C,EAAMysC,aAE3CzsC,EAAM1W,GAAG0W,EAAM87C,YAAa,UAAW97C,EAAM0vB,eAE7C1vB,EAAM1W,GAAG0W,EAAM87C,YAAa,cAAc,WACxC97C,EAAMkf,SAAS,aAEflf,EAAMo9C,KAAK1uB,OAEXplC,GAAG,IAAU,QAASxD,GAAK,IAAuBka,GAAQA,EAAMq9C,qBAGlEr9C,EAAM1W,GAAG,aAAc0W,EAAMs9C,kBAE7Bt9C,EAAM1W,GAAG,UAAW0W,EAAMu9C,sBAEnBv9C,EAvDT,IAAek9C,EAAYvmB,GA8D3B,IAAI92B,EAASq9C,EAAWlmE,UA2WxB,OAzWA6oB,EAAOktC,OAAS,WACd,IAAIqQ,EAAOljE,KAAKsjE,aAEZtjE,KAAKkjE,OACPljE,KAAKkjE,KAAKzzD,UACVzP,KAAKyc,YAAYzc,KAAKkjE,OAGxBljE,KAAKkjE,KAAOA,EACZljE,KAAKkzC,SAASgwB,GAQdljE,KAAK0iE,gBAAiB,EACtB1iE,KAAK4hE,YAAY1wB,IAAI5vB,aAAa,gBAAiB,SAE/CthB,KAAKujE,OAASvjE,KAAKujE,MAAMvrE,QAAUgI,KAAKwjE,eAC1CxjE,KAAKy0C,OAELz0C,KAAKw0C,QAWT7uB,EAAO29C,WAAa,WAClB,IAAIJ,EAAO,IAAI,GAAKljE,KAAK4wC,QAAS,CAChCixB,WAAY7hE,OAad,GAFAA,KAAKwjE,eAAiB,EAElBxjE,KAAK+wC,SAAS5pB,MAAO,CACvB,IAAIs8C,EAAU,GAAS,KAAM,CAC3BhgC,UAAW,iBACXqgB,UAAW1T,GAAYpwC,KAAK+wC,SAAS5pB,OACrC+1B,UAAW,IAEbl9C,KAAKwjE,gBAAkB,EACvB,IAAIE,EAAiB,IAAI,GAAU1jE,KAAK4wC,QAAS,CAC/CxoC,GAAIq7D,IAENP,EAAKb,QAAQqB,GAKf,GAFA1jE,KAAKujE,MAAQvjE,KAAK2jE,cAEd3jE,KAAKujE,MAEP,IAAK,IAAIxrE,EAAI,EAAGA,EAAIiI,KAAKujE,MAAMvrE,OAAQD,IACrCmrE,EAAKb,QAAQriE,KAAKujE,MAAMxrE,IAI5B,OAAOmrE,GASTv9C,EAAOg+C,YAAc,aASrBh+C,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAWzjC,KAAK4jE,wBACf,KAULj+C,EAAOi+C,qBAAuB,WAC5B,IAAIC,EAAkB,mBAEO,IAAzB7jE,KAAK+wC,SAASqwB,OAChByC,GAAmB,UAEnBA,GAAmB,SAIrB,IAAIZ,EAAc,GAAOnmE,UAAUq3C,gBACnC,MAAO,mBAAqB0vB,EAAkB,IAAMZ,EAAc,IAAMxmB,EAAW3/C,UAAUq3C,cAAcp0C,KAAKC,OAUlH2lB,EAAOwuB,cAAgB,WACrB,IAAI0vB,EAAkB,kBAQtB,OAN6B,IAAzB7jE,KAAK+wC,SAASqwB,OAChByC,GAAmB,UAEnBA,GAAmB,SAGd,mBAAqBA,EAAkB,IAAMpnB,EAAW3/C,UAAUq3C,cAAcp0C,KAAKC,OAkB9F2lB,EAAOy4B,YAAc,SAAqBhrC,EAAMhL,GAK9C,YAJW,IAAPA,IACFA,EAAKpI,KAAK4hE,YAAYx5D,MAGjBpI,KAAK4hE,YAAYxjB,YAAYhrC,EAAMhL,IAO5Cud,EAAOlW,QAAU,WACfzP,KAAKojE,mBAEL3mB,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAepC2lB,EAAO4sC,YAAc,SAAqB/hD,GACpCxQ,KAAK0iE,eACP1iE,KAAK2iE,gBAEL3iE,KAAK8jE,eAaTn+C,EAAOy9C,iBAAmB,SAA0B5yD,GAClDxQ,KAAKmlC,YAAY,aACjB71B,GAAI,IAAU,QAAS1D,GAAK5L,KAAMA,KAAKmjE,mBAOzCx9C,EAAOqgB,MAAQ,WACbhmC,KAAK4hE,YAAY57B,SAOnBrgB,EAAO4vB,KAAO,WACZv1C,KAAK4hE,YAAYrsB,QAanB5vB,EAAO6vB,cAAgB,SAAuBhlC,GAExC,IAAQsuC,WAAWtuC,EAAO,QAAU,IAAQsuC,WAAWtuC,EAAO,QAC5DxQ,KAAK0iE,gBACP1iE,KAAK2iE,gBAIF,IAAQ7jB,WAAWtuC,EAAO,SAC7BA,EAAMw6B,iBAENhrC,KAAK4hE,YAAY57B,WAGV,IAAQ8Y,WAAWtuC,EAAO,OAAS,IAAQsuC,WAAWtuC,EAAO,WACjExQ,KAAK0iE,iBACRlyD,EAAMw6B,iBACNhrC,KAAK8jE,iBAeXn+C,EAAOw9C,gBAAkB,SAAyB3yD,IAE5C,IAAQsuC,WAAWtuC,EAAO,QAAU,IAAQsuC,WAAWtuC,EAAO,SAChExQ,KAAKmlC,YAAY,cAarBxf,EAAOo+C,sBAAwB,SAA+BvzD,GAC5DxQ,KAAKqjE,qBAAqB7yD,IAa5BmV,EAAO09C,qBAAuB,SAA8B7yD,IAEtD,IAAQsuC,WAAWtuC,EAAO,QAAU,IAAQsuC,WAAWtuC,EAAO,UAC5DxQ,KAAK0iE,gBACP1iE,KAAK2iE,gBAIF,IAAQ7jB,WAAWtuC,EAAO,SAC7BA,EAAMw6B,iBAENhrC,KAAK4hE,YAAY57B,WASvBrgB,EAAOm+C,YAAc,WACnB,GAAI9jE,KAAKsyD,SAAU,CAOjB,GANAtyD,KAAK0iE,gBAAiB,EACtB1iE,KAAKkjE,KAAK1uB,OACVx0C,KAAKkjE,KAAKxuB,cACV10C,KAAK4hE,YAAY1wB,IAAI5vB,aAAa,gBAAiB,QAG/Co4B,IAAU7V,KAEZ,OAGF7jC,KAAKkjE,KAAKl9B,UAQdrgB,EAAOg9C,cAAgB,WACjB3iE,KAAKsyD,WACPtyD,KAAK0iE,gBAAiB,EACtB1iE,KAAKkjE,KAAKvuB,gBACV30C,KAAKkjE,KAAKzuB,OACVz0C,KAAK4hE,YAAY1wB,IAAI5vB,aAAa,gBAAiB,WAQvDqE,EAAOuc,QAAU,WACfliC,KAAK2iE,gBACL3iE,KAAKsyD,UAAW,EAChBtyD,KAAKglC,SAAS,gBACdhlC,KAAK4hE,YAAY1/B,WAOnBvc,EAAOwc,OAAS,WACdniC,KAAKsyD,UAAW,EAChBtyD,KAAKmlC,YAAY,gBACjBnlC,KAAK4hE,YAAYz/B,UAGZ6gC,EA1aqB,CA2a5B,IAEF,GAAUzrB,kBAAkB,aAAc,IAQ1C,IAAI,GAA2B,SAAUysB,GAYvC,SAASC,EAAYj7B,EAAQ1wC,GAC3B,IAAIwtB,EAEAhiB,EAASxL,EAAQwL,OAOrB,GANAgiB,EAAQk+C,EAAYjkE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE/C8lB,EAAMy9C,MAAMvrE,QAAU,GACxB8tB,EAAM2uB,QAGH3wC,EACH,OAAO,IAAuBgiB,GAGhC,IAAIo+C,EAAgBt4D,GAAK,IAAuBka,GAAQA,EAAM+sC,QAW9D,OAVA/uD,EAAOulC,iBAAiB,cAAe66B,GACvCpgE,EAAOulC,iBAAiB,WAAY66B,GAEpCp+C,EAAM8qB,QAAQxhC,GAAG,QAAS80D,GAE1Bp+C,EAAM8qB,QAAQxhC,GAAG,WAAW,WAC1BtL,EAAOslC,oBAAoB,cAAe86B,GAC1CpgE,EAAOslC,oBAAoB,WAAY86B,MAGlCp+C,EAGT,OAvCA,IAAem+C,EAAaD,GAuCrBC,EAxCsB,CAyC7B,IAEF,GAAU1sB,kBAAkB,cAAe,IAa3C,IAAI4sB,GAAW,CAAC,MAAO,MAAO,KAAM,OAAQ,QAAS,QAQjD,GAAwB,SAAUxR,GAapC,SAASyR,EAASp7B,EAAQ1wC,GACxB,IAAIwtB,EAmBJ,OAjBAA,EAAQ6sC,EAAoB5yD,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAC3D8lB,EAAMu+C,WAAa/rE,EAAQ+rE,WAC3Bv+C,EAAMw+C,YAAchsE,EAAQyoD,WAAY,EACxCj7B,EAAMy+C,gBAAkBjsE,EAAQisE,gBAEhCz+C,EAAMi7B,SAASj7B,EAAMw+C,aAEjBx+C,EAAMu+C,WACJv+C,EAAMy+C,gBACRz+C,EAAMorB,IAAI5vB,aAAa,OAAQ,oBAE/BwE,EAAMorB,IAAI5vB,aAAa,OAAQ,iBAGjCwE,EAAMorB,IAAI5vB,aAAa,OAAQ,YAG1BwE,EAhCT,IAAes+C,EAAUzR,GAmDzB,IAAIhtC,EAASy+C,EAAStnE,UAyEtB,OAvEA6oB,EAAO4iB,SAAW,SAAkB5oC,EAAM88B,EAAOt0B,GAG/C,OADAnI,KAAKqyD,gBAAiB,EACfM,EAAoB71D,UAAUyrC,SAASxoC,KAAKC,KAAM,KAAM,GAAO,CACpEyjC,UAAW,gBACXqgB,UAAW,oCAAwC9jD,KAAKkyC,SAASlyC,KAAK+wC,SAAS3d,OAAS,UACxF8pB,UAAW,GACVzgB,GAAQt0B,IAabwd,EAAO6vB,cAAgB,SAAuBhlC,GACvC2zD,GAASnwB,MAAK,SAAU38C,GAC3B,OAAO,IAAQynD,WAAWtuC,EAAOnZ,OAGjCs7D,EAAoB71D,UAAU04C,cAAcz1C,KAAKC,KAAMwQ,IAgB3DmV,EAAO4sC,YAAc,SAAqB/hD,GACxCxQ,KAAK+gD,UAAS,IAUhBp7B,EAAOo7B,SAAW,SAAkByjB,GAC9BxkE,KAAKqkE,aACHG,GACFxkE,KAAKglC,SAAS,gBACdhlC,KAAKkxC,IAAI5vB,aAAa,eAAgB,QAGtCthB,KAAKo+C,YAAY,cACjBp+C,KAAKskE,aAAc,IAEnBtkE,KAAKmlC,YAAY,gBACjBnlC,KAAKkxC,IAAI5vB,aAAa,eAAgB,SAEtCthB,KAAKo+C,YAAY,IACjBp+C,KAAKskE,aAAc,KAKlBF,EA7HmB,CA8H1B,IAEF,GAAU7sB,kBAAkB,WAAY,IAQxC,IAAI,GAAiC,SAAUktB,GAY7C,SAASC,EAAkB17B,EAAQ1wC,GACjC,IAAIwtB,EAEA/hB,EAAQzL,EAAQyL,MAChBD,EAASklC,EAAOkT,aAEpB5jD,EAAQ86B,MAAQrvB,EAAMqvB,OAASrvB,EAAM4nB,UAAY,UACjDrzB,EAAQyoD,SAA0B,YAAfh9C,EAAM4hD,KACzB7/B,EAAQ2+C,EAAU1kE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KACjD8lB,EAAM/hB,MAAQA,EAGd+hB,EAAM6+C,OAASrsE,EAAQqsE,OAAS,CAACrsE,EAAQipD,MAAQz7B,EAAM/hB,MAAMw9C,OAAO9vB,OAAO6R,SAE3E,IAiCM9yB,EAjCFo0D,EAAgB,WAClB,IAAK,IAAI73C,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzBtD,EAAM++C,mBAAmBhjE,MAAM,IAAuBikB,GAAQta,IAG5Ds5D,EAAgC,WAClC,IAAK,IAAI1iC,EAAQx4B,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAM2qC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF72B,EAAK62B,GAASz4B,UAAUy4B,GAG1Bvc,EAAMi/C,6BAA6BljE,MAAM,IAAuBikB,GAAQta,KAG1Ew9B,EAAO55B,GAAG,CAAC,YAAa,mBAAoBw1D,GAC5C9gE,EAAOulC,iBAAiB,SAAUu7B,GAClC9gE,EAAOulC,iBAAiB,yBAA0By7B,GAElDh/C,EAAM1W,GAAG,WAAW,WAClB45B,EAAO15B,IAAI,CAAC,YAAa,mBAAoBs1D,GAC7C9gE,EAAOslC,oBAAoB,SAAUw7B,GACrC9gE,EAAOslC,oBAAoB,yBAA0B07B,WAS/BxrE,IAApBwK,EAAOkhE,WAGTl/C,EAAM1W,GAAG,CAAC,MAAO,UAAU,WACzB,GAA8B,kBAAnB,IAAS61D,MAElB,IACEz0D,EAAQ,IAAI,IAASy0D,MAAM,UAC3B,MAAOpsE,IAIN2X,IACHA,EAAQ,IAAS00D,YAAY,SAC7B10D,EAAM20D,UAAU,UAAU,GAAM,IAGlCrhE,EAAO8pC,cAAcp9B,MAOzB,OAFAsV,EAAM++C,qBAEC/+C,EAjFT,IAAe4+C,EAAmBD,GAgGlC,IAAI9+C,EAAS++C,EAAkB5nE,UA2E/B,OAzEA6oB,EAAO4sC,YAAc,SAAqB/hD,GACxC,IAAI40D,EAAiBplE,KAAK+D,MACtBD,EAAS9D,KAAK4wC,QAAQsL,aAI1B,GAFAuoB,EAAU3nE,UAAUy1D,YAAYxyD,KAAKC,KAAMwQ,GAEtC1M,EAIL,IAAK,IAAI/L,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,IAGqB,IAApCiI,KAAK2kE,MAAMvtE,QAAQ2M,EAAMw9C,QAMzBx9C,IAAUqhE,EACO,YAAfrhE,EAAM4hD,OACR5hD,EAAM4hD,KAAO,WAIS,aAAf5hD,EAAM4hD,OACf5hD,EAAM4hD,KAAO,eAcnBhgC,EAAOk/C,mBAAqB,SAA4Br0D,GACtD,IAAI60D,EAAuC,YAApBrlE,KAAK+D,MAAM4hD,KAG9B0f,IAAqBrlE,KAAKskE,aAC5BtkE,KAAK+gD,SAASskB,IAIlB1/C,EAAOo/C,6BAA+B,SAAsCv0D,GAC1E,GAAwB,YAApBxQ,KAAK+D,MAAM4hD,KAAoB,CACjC,IAAIqP,EAAmBh1D,KAAK4wC,QAAQygB,OAAO2D,iBAE3C,GAAIA,GAAoBA,EAAiBvU,SAAWuU,EAAiBrpC,WAAa3rB,KAAK+D,MAAM4nB,UAAYqpC,EAAiBzT,OAASvhD,KAAK+D,MAAMw9C,KAC5I,OAGFvhD,KAAK4wC,QAAQygB,OAAO2D,iBAAmB,CACrCvU,SAAS,EACT90B,SAAU3rB,KAAK+D,MAAM4nB,SACrB41B,KAAMvhD,KAAK+D,MAAMw9C,QAKvB57B,EAAOlW,QAAU,WAEfzP,KAAK+D,MAAQ,KAEb0gE,EAAU3nE,UAAU2S,QAAQ1P,KAAKC,OAG5B0kE,EA5K4B,CA6KnC,IAEF,GAAUntB,kBAAkB,oBAAqB,IAQjD,IAAI,GAAoC,SAAU+tB,GAYhD,SAASC,EAAqBv8B,EAAQ1wC,GA4BpC,OAzBAA,EAAQyL,MAAQ,CACdilC,OAAQA,EAIRuY,KAAMjpD,EAAQipD,KACdojB,MAAOrsE,EAAQqsE,MACf,SAAW,EACXhf,KAAM,YAGHrtD,EAAQqsE,QACXrsE,EAAQqsE,MAAQ,CAACrsE,EAAQipD,OAGvBjpD,EAAQ86B,MACV96B,EAAQyL,MAAMqvB,MAAQ96B,EAAQ86B,MAE9B96B,EAAQyL,MAAMqvB,MAAQ96B,EAAQqsE,MAAM/lE,KAAK,SAAW,OAItDtG,EAAQ+rE,YAAa,EAErB/rE,EAAQisE,iBAAkB,EACnBe,EAAmBvlE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAvC3D,IAAeulE,EAAsBD,GAiDrC,IAAI3/C,EAAS4/C,EAAqBzoE,UA0ClC,OAxCA6oB,EAAOk/C,mBAAqB,SAA4Br0D,GAItD,IAHA,IAAI1M,EAAS9D,KAAKgpC,SAASkT,aACvBmpB,GAAmB,EAEdttE,EAAI,EAAGkO,EAAInC,EAAO9L,OAAQD,EAAIkO,EAAGlO,IAAK,CAC7C,IAAIgM,EAAQD,EAAO/L,GAEnB,GAAIiI,KAAK+wC,SAAS4zB,MAAMvtE,QAAQ2M,EAAMw9C,OAAS,GAAoB,YAAfx9C,EAAM4hD,KAAoB,CAC5E0f,GAAmB,EACnB,OAMAA,IAAqBrlE,KAAKskE,aAC5BtkE,KAAK+gD,SAASskB,IAIlB1/C,EAAOo/C,6BAA+B,SAAsCv0D,GAI1E,IAHA,IAAI1M,EAAS9D,KAAKgpC,SAASkT,aACvBspB,GAAY,EAEPztE,EAAI,EAAGkO,EAAInC,EAAO9L,OAAQD,EAAIkO,EAAGlO,IAAK,CAC7C,IAAIgM,EAAQD,EAAO/L,GAEnB,GAAI,CAAC,WAAY,eAAgB,aAAaX,QAAQ2M,EAAMw9C,OAAS,GAAoB,YAAfx9C,EAAM4hD,KAAoB,CAClG6f,GAAY,EACZ,OAIAA,IACFxlE,KAAK4wC,QAAQygB,OAAO2D,iBAAmB,CACrCvU,SAAS,KAKR8kB,EA5F+B,CA6FtC,IAEF,GAAUhuB,kBAAkB,uBAAwB,IAQpD,IAAI,GAA+B,SAAUkuB,GAY3C,SAASC,EAAgB18B,EAAQ1wC,GAM/B,YALgB,IAAZA,IACFA,EAAU,IAGZA,EAAQwL,OAASklC,EAAOkT,aACjBupB,EAAa1lE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAjBrD,IAAe0lE,EAAiBD,GA8BhC,IAAI9/C,EAAS+/C,EAAgB5oE,UAqD7B,OAnDA6oB,EAAOg+C,YAAc,SAAqBJ,EAAOoC,GAW/C,IAAIvyC,OAVU,IAAVmwC,IACFA,EAAQ,SAGY,IAAlBoC,IACFA,EAAgB,IAOd3lE,KAAK4lE,SACPxyC,EAAQpzB,KAAK4lE,OAAS,QAIxBrC,EAAM5rE,KAAK,IAAI,GAAqBqI,KAAK4wC,QAAS,CAChD+zB,MAAO3kE,KAAK6lE,OACZtkB,KAAMvhD,KAAK8lE,MACX1yC,MAAOA,KAETpzB,KAAKwjE,gBAAkB,EACvB,IAAI1/D,EAAS9D,KAAK4wC,QAAQsL,aAErBzkD,MAAMC,QAAQsI,KAAK6lE,UACtB7lE,KAAK6lE,OAAS,CAAC7lE,KAAK8lE,QAGtB,IAAK,IAAI/tE,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GAEnB,GAAIiI,KAAK6lE,OAAOzuE,QAAQ2M,EAAMw9C,OAAS,EAAG,CACxC,IAAIhjC,EAAO,IAAIonD,EAAc3lE,KAAK4wC,QAAS,CACzC7sC,MAAOA,EACP4gE,MAAO3kE,KAAK6lE,OACZtkB,KAAMvhD,KAAK8lE,MAEXzB,YAAY,EAEZE,iBAAiB,IAEnBhmD,EAAKymB,SAAS,OAASjhC,EAAMw9C,KAAO,cACpCgiB,EAAM5rE,KAAK4mB,IAIf,OAAOglD,GAGFmC,EApF0B,CAqFjC,IAEF,GAAUnuB,kBAAkB,kBAAmB,IAQ/C,IAAI,GAAqC,SAAUktB,GAYjD,SAASsB,EAAsB/8B,EAAQ1wC,GACrC,IAAIwtB,EAEA/hB,EAAQzL,EAAQyL,MAChB43C,EAAMrjD,EAAQqjD,IACd0K,EAAcrd,EAAOqd,cAUzB,OARA/tD,EAAQ+rE,YAAa,EACrB/rE,EAAQisE,iBAAkB,EAC1BjsE,EAAQ86B,MAAQuoB,EAAIvoC,KACpB9a,EAAQyoD,SAAWpF,EAAIj7C,WAAa2lD,GAAeA,EAAc1K,EAAIC,QACrE91B,EAAQ2+C,EAAU1kE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KACjD8lB,EAAM/hB,MAAQA,EACd+hB,EAAM61B,IAAMA,EACZ53C,EAAMslC,iBAAiB,YAAaz9B,GAAK,IAAuBka,GAAQA,EAAM+sC,SACvE/sC,EA1BT,IAAeigD,EAAuBtB,GAyCtC,IAAI9+C,EAASogD,EAAsBjpE,UAyBnC,OAvBA6oB,EAAO4sC,YAAc,SAAqB/hD,GACxCi0D,EAAU3nE,UAAUy1D,YAAYxyD,KAAKC,MAErCA,KAAK4wC,QAAQyV,YAAYrmD,KAAK27C,IAAIj7C,WAClCV,KAAK6yD,OAAO7yD,KAAK27C,IAAIj7C,YAYvBilB,EAAOktC,OAAS,SAAgBriD,GAC9B,IAAImrC,EAAM37C,KAAK27C,IACX0K,EAAcrmD,KAAK4wC,QAAQyV,cAE/BrmD,KAAK+gD,SAASpF,EAAIj7C,WAAa2lD,GAAeA,EAAc1K,EAAIC,UAG3DmqB,EAnEgC,CAoEvC,IAEF,GAAUxuB,kBAAkB,wBAAyB,IAUrD,IAAI,GAA8B,SAAUyuB,GAe1C,SAASC,EAAej9B,EAAQ1wC,EAASo4C,GACvC,OAAOs1B,EAAiBjmE,KAAKC,KAAMgpC,EAAQ1wC,EAASo4C,IAAU1wC,KAfhE,IAAeimE,EAAgBD,GAyB/B,IAAIrgD,EAASsgD,EAAenpE,UAsJ5B,OApJA6oB,EAAOwuB,cAAgB,WACrB,MAAO,uBAAyB6xB,EAAiBlpE,UAAUq3C,cAAcp0C,KAAKC,OAGhF2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,uBAAyBoC,EAAiBlpE,UAAU8mE,qBAAqB7jE,KAAKC,OAcvF2lB,EAAOktC,OAAS,SAAgBriD,GACzBxQ,KAAKkmE,UAAU11D,GAAyB,aAAfA,EAAM7Q,MAAsC,gBAAf6Q,EAAM7Q,OAC/DK,KAAKmmE,SAASnmE,KAAKomE,qBAGrBJ,EAAiBlpE,UAAU+1D,OAAO9yD,KAAKC,OAWzC2lB,EAAOwgD,SAAW,SAAkBpiE,GAClC,GAAI/D,KAAKkmE,SAAWniE,EAApB,CASA,GALK/D,KAAKqmE,iBACRrmE,KAAKqmE,eAAiBrmE,KAAK6yD,OAAOjnD,KAAK5L,OAIrCA,KAAKkmE,OAAQ,CACf,IAAII,EAAoBtmE,KAAK4wC,QAAQwa,qBAAqBtJ,wBAAwB9hD,KAAKkmE,QAEnFI,GACFA,EAAkBl9B,oBAAoB,OAAQppC,KAAKqmE,gBAGrDrmE,KAAKkmE,OAAS,KAKhB,GAFAlmE,KAAKkmE,OAASniE,EAEV/D,KAAKkmE,OAAQ,CACflmE,KAAKkmE,OAAOvgB,KAAO,SAEnB,IAAI4gB,EAAqBvmE,KAAK4wC,QAAQwa,qBAAqBtJ,wBAAwB9hD,KAAKkmE,QAEpFK,GACFA,EAAmBl9B,iBAAiB,OAAQrpC,KAAKqmE,mBAYvD1gD,EAAOygD,kBAAoB,WAGzB,IAFA,IAAItiE,EAAS9D,KAAK4wC,QAAQsL,cAAgB,GAEjCnkD,EAAI+L,EAAO9L,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAE3C,IAAIgM,EAAQD,EAAO/L,GAEnB,GAAIgM,EAAMw9C,OAASvhD,KAAK8lE,MACtB,OAAO/hE,IAab4hB,EAAO6gD,eAAiB,WACtB,OAAIxmE,KAAKkmE,QAAUlmE,KAAKkmE,OAAO9yC,MACtBpzB,KAAKkmE,OAAO9yC,MAGdpzB,KAAKkyC,SAAS9B,GAAYpwC,KAAK8lE,SAUxCngD,EAAO29C,WAAa,WAElB,OADAtjE,KAAK+wC,SAAS5pB,MAAQnnB,KAAKwmE,iBACpBR,EAAiBlpE,UAAUwmE,WAAWvjE,KAAKC,OAUpD2lB,EAAOg+C,YAAc,WACnB,IAAIJ,EAAQ,GAEZ,IAAKvjE,KAAKkmE,OACR,OAAO3C,EAGT,IAAI7nB,EAAO17C,KAAKkmE,OAAOxqB,KAEvB,IAAKA,EACH,OAAO6nB,EAGT,IAAK,IAAIxrE,EAAI,EAAGkO,EAAIy1C,EAAK1jD,OAAQD,EAAIkO,EAAGlO,IAAK,CAC3C,IAAI4jD,EAAMD,EAAK3jD,GACX0uE,EAAK,IAAI,GAAsBzmE,KAAK4wC,QAAS,CAC/C7sC,MAAO/D,KAAKkmE,OACZvqB,IAAKA,IAEP4nB,EAAM5rE,KAAK8uE,GAGb,OAAOlD,GAGF0C,EAhLyB,CAiLhC,IASF,GAAenpE,UAAUgpE,MAAQ,WAQjC,GAAehpE,UAAUq1D,aAAe,WACxC,GAAU5a,kBAAkB,iBAAkB,IAQ9C,IAAI,GAAkC,SAAUyuB,GAe9C,SAASU,EAAmB19B,EAAQ1wC,EAASo4C,GAC3C,IAAI5qB,EAEJA,EAAQkgD,EAAiBjmE,KAAKC,KAAMgpC,EAAQ1wC,EAASo4C,IAAU1wC,KAC/D,IAAI8D,EAASklC,EAAOkT,aAChB0oB,EAAgBh5D,GAAK,IAAuBka,GAAQA,EAAM++C,oBAO9D,OANA/gE,EAAOulC,iBAAiB,SAAUu7B,GAElC9+C,EAAM1W,GAAG,WAAW,WAClBtL,EAAOslC,oBAAoB,SAAUw7B,MAGhC9+C,EA1BT,IAAe4gD,EAAoBV,GAsCnC,IAAIrgD,EAAS+gD,EAAmB5pE,UAsChC,OApCA6oB,EAAOk/C,mBAAqB,SAA4Br0D,GAItD,IAHA,IAAI1M,EAAS9D,KAAKgpC,SAASkT,aACvB1R,GAAW,EAENzyC,EAAI,EAAGkO,EAAInC,EAAO9L,OAAQD,EAAIkO,EAAGlO,IAAK,CAC7C,IAAIgM,EAAQD,EAAO/L,GAEnB,GAAIgM,EAAMw9C,OAASvhD,KAAK8lE,OAAwB,YAAf/hE,EAAM4hD,KAAoB,CACzDnb,GAAW,EACX,OAKAA,EACFxqC,KAAKkiC,UAELliC,KAAKmiC,UAWTxc,EAAOwuB,cAAgB,WACrB,MAAO,2BAA6B6xB,EAAiBlpE,UAAUq3C,cAAcp0C,KAAKC,OAGpF2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,2BAA6BoC,EAAiBlpE,UAAU8mE,qBAAqB7jE,KAAKC,OAGpF0mE,EA7E6B,CA8EpC,IASF,GAAmB5pE,UAAUgpE,MAAQ,eAQrC,GAAmBhpE,UAAUq1D,aAAe,eAC5C,GAAU5a,kBAAkB,qBAAsB,IAQlD,IAAI,GAA+B,SAAUyuB,GAe3C,SAASW,EAAgB39B,EAAQ1wC,EAASo4C,GACxC,OAAOs1B,EAAiBjmE,KAAKC,KAAMgpC,EAAQ1wC,EAASo4C,IAAU1wC,KAfhE,IAAe2mE,EAAiBX,GAyBhC,IAAIrgD,EAASghD,EAAgB7pE,UAU7B,OARA6oB,EAAOwuB,cAAgB,WACrB,MAAO,wBAA0B6xB,EAAiBlpE,UAAUq3C,cAAcp0C,KAAKC,OAGjF2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,wBAA0BoC,EAAiBlpE,UAAU8mE,qBAAqB7jE,KAAKC,OAGjF2mE,EApC0B,CAqCjC,IASF,GAAgB7pE,UAAUgpE,MAAQ,YAQlC,GAAgBhpE,UAAUq1D,aAAe,YACzC,GAAU5a,kBAAkB,kBAAmB,IAQ/C,IAAI,GAAuC,SAAU+tB,GAYnD,SAASsB,EAAwB59B,EAAQ1wC,GACvC,IAAIwtB,EAmBJ,OAjBAxtB,EAAQyL,MAAQ,CACdilC,OAAQA,EACRuY,KAAMjpD,EAAQipD,KACdnuB,MAAO96B,EAAQipD,KAAO,YACtB8iB,YAAY,EACZ,SAAW,EACX1e,KAAM,YAGRrtD,EAAQ+rE,YAAa,EACrB/rE,EAAQ2R,KAAO,0BACf6b,EAAQw/C,EAAmBvlE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAE1D8lB,EAAMkf,SAAS,0BAEflf,EAAMs4B,YAAY,WAAa9lD,EAAQipD,KAAO,oBAEvCz7B,EA/BT,IAAe8gD,EAAyBtB,GA8CxC,IAAI3/C,EAASihD,EAAwB9pE,UAMrC,OAJA6oB,EAAO4sC,YAAc,SAAqB/hD,GACxCxQ,KAAKgpC,SAAS8J,SAAS,qBAAqBv3C,QAGvCqrE,EArDkC,CAsDzC,IAEF,GAAUrvB,kBAAkB,0BAA2B,IAQvD,IAAI,GAA8B,SAAUyuB,GAe1C,SAASa,EAAe79B,EAAQ1wC,EAASo4C,GACvC,OAAOs1B,EAAiBjmE,KAAKC,KAAMgpC,EAAQ1wC,EAASo4C,IAAU1wC,KAfhE,IAAe6mE,EAAgBb,GAyB/B,IAAIrgD,EAASkhD,EAAe/pE,UA8B5B,OA5BA6oB,EAAOwuB,cAAgB,WACrB,MAAO,uBAAyB6xB,EAAiBlpE,UAAUq3C,cAAcp0C,KAAKC,OAGhF2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,uBAAyBoC,EAAiBlpE,UAAU8mE,qBAAqB7jE,KAAKC,OAUvF2lB,EAAOg+C,YAAc,WACnB,IAAIJ,EAAQ,GASZ,OAPMvjE,KAAKgpC,SAASsc,OAAStlD,KAAKgpC,SAASsc,MAAMmD,2BAA6BzoD,KAAKgpC,SAAS8J,SAAS,uBACnGywB,EAAM5rE,KAAK,IAAI,GAAwBqI,KAAK4wC,QAAS,CACnD2Q,KAAMvhD,KAAK8lE,SAEb9lE,KAAKwjE,gBAAkB,GAGlBwC,EAAiBlpE,UAAU6mE,YAAY5jE,KAAKC,KAAMujE,IAGpDsD,EAxDyB,CAyDhC,IASF,GAAe/pE,UAAUgpE,MAAQ,WAQjC,GAAehpE,UAAUq1D,aAAe,WACxC,GAAU5a,kBAAkB,iBAAkB,IAS9C,IAAI,GAAgC,SAAU+tB,GAG5C,SAASwB,IACP,OAAOxB,EAAmBzjE,MAAM7B,KAAM4J,YAAc5J,KAHtD,IAAe8mE,EAAkBxB,GAMjC,IAAI3/C,EAASmhD,EAAiBhqE,UAkB9B,OAhBA6oB,EAAO4iB,SAAW,SAAkB5oC,EAAM88B,EAAOt0B,GAC/C,IAAI27C,EAAY,oCAAwC9jD,KAAKkyC,SAASlyC,KAAK+wC,SAAS3d,OAEnD,aAA7BpzB,KAAK+wC,SAAShtC,MAAMw9C,OACtBuC,GAAa,oHAA4H9jD,KAAKkyC,SAAS,YAAc,mBAGvK4R,GAAa,UAEb,IAAI17C,EAAKk9D,EAAmBxoE,UAAUyrC,SAASxoC,KAAKC,KAAML,EAAM,GAAO,CACrEmkD,UAAWA,GACVrnB,GAAQt0B,GAEX,OAAOC,GAGF0+D,EAzB2B,CA0BlC,IAEF,GAAUvvB,kBAAkB,mBAAoB,IAQhD,IAAI,GAA8B,SAAUyuB,GAG1C,SAASe,EAAe/9B,EAAQ1wC,GAC9B,IAAIwtB,EAiBJ,YAfgB,IAAZxtB,IACFA,EAAU,IAGZwtB,EAAQkgD,EAAiBjmE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAGxD8lB,EAAM8/C,OAAS,YAEX,CAAC,KAAM,QAAS,QAAS,SAASxuE,QAAQ0uB,EAAM8qB,QAAQo2B,YAAc,IACxElhD,EAAM8/C,OAAS,YAGjB9/C,EAAM87C,YAAYxjB,YAAYhO,GAAYtqB,EAAM8/C,SAEzC9/C,EApBT,IAAeihD,EAAgBf,GA8B/B,IAAIrgD,EAASohD,EAAejqE,UA+B5B,OA7BA6oB,EAAOwuB,cAAgB,WACrB,MAAO,wBAA0B6xB,EAAiBlpE,UAAUq3C,cAAcp0C,KAAKC,OAGjF2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,wBAA0BoC,EAAiBlpE,UAAU8mE,qBAAqB7jE,KAAKC,OAUxF2lB,EAAOg+C,YAAc,WACnB,IAAIJ,EAAQ,GAUZ,OARMvjE,KAAKgpC,SAASsc,OAAStlD,KAAKgpC,SAASsc,MAAMmD,2BAA6BzoD,KAAKgpC,SAAS8J,SAAS,uBACnGywB,EAAM5rE,KAAK,IAAI,GAAwBqI,KAAK4wC,QAAS,CACnD2Q,KAAMvhD,KAAK4lE,UAEb5lE,KAAKwjE,gBAAkB,GAGzBD,EAAQyC,EAAiBlpE,UAAU6mE,YAAY5jE,KAAKC,KAAMujE,EAAO,IAC1DA,GAGFwD,EA9DyB,CA+DhC,IASF,GAAejqE,UAAU+oE,OAAS,CAAC,WAAY,aAS/C,GAAe/oE,UAAUq1D,aAAe,YACxC,GAAU5a,kBAAkB,iBAAkB,IAQ9C,IAAI,GAAkC,SAAUktB,GAY9C,SAASwC,EAAmBj+B,EAAQ1wC,GAClC,IAAIwtB,EAEA/hB,EAAQzL,EAAQyL,MAChBD,EAASklC,EAAOk+B,cAEpB5uE,EAAQ86B,MAAQrvB,EAAMqvB,OAASrvB,EAAM4nB,UAAY,UACjDrzB,EAAQyoD,SAAWh9C,EAAM08C,QACzB36B,EAAQ2+C,EAAU1kE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KACjD8lB,EAAM/hB,MAAQA,EAEd+hB,EAAMkf,SAAS,OAASjhC,EAAMw9C,KAAO,cAErC,IAAIqjB,EAAgB,WAClB,IAAK,IAAI73C,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzBtD,EAAM++C,mBAAmBhjE,MAAM,IAAuBikB,GAAQta,IAShE,OANA1H,EAAOulC,iBAAiB,SAAUu7B,GAElC9+C,EAAM1W,GAAG,WAAW,WAClBtL,EAAOslC,oBAAoB,SAAUw7B,MAGhC9+C,EAtCT,IAAemhD,EAAoBxC,GAyCnC,IAAI9+C,EAASshD,EAAmBnqE,UAsDhC,OApDA6oB,EAAO4iB,SAAW,SAAkB5oC,EAAM88B,EAAOt0B,GAC/C,IAAI27C,EAAY,oCAAwC9jD,KAAKkyC,SAASlyC,KAAK+wC,SAAS3d,OAEnD,cAA7BpzB,KAAK+wC,SAAShtC,MAAMw9C,OACtBuC,GAAa,oHAA4H9jD,KAAKkyC,SAAS,gBAAkB,mBAG3K4R,GAAa,UAEb,IAAI17C,EAAKq8D,EAAU3nE,UAAUyrC,SAASxoC,KAAKC,KAAML,EAAM,GAAO,CAC5DmkD,UAAWA,GACVrnB,GAAQt0B,GAEX,OAAOC,GAeTud,EAAO4sC,YAAc,SAAqB/hD,GACxC,IAAI1M,EAAS9D,KAAK4wC,QAAQs2B,cAE1BzC,EAAU3nE,UAAUy1D,YAAYxyD,KAAKC,KAAMwQ,GAE3C,IAAK,IAAIzY,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GACnBgM,EAAM08C,QAAU18C,IAAU/D,KAAK+D,QAanC4hB,EAAOk/C,mBAAqB,SAA4Br0D,GACtDxQ,KAAK+gD,SAAS/gD,KAAK+D,MAAM08C,UAGpBwmB,EAhG6B,CAiGpC,IAEF,GAAU1vB,kBAAkB,qBAAsB,IAQlD,IAAI,GAAgC,SAAUkuB,GAY5C,SAAS0B,EAAiBn+B,EAAQ1wC,GAMhC,YALgB,IAAZA,IACFA,EAAU,IAGZA,EAAQwL,OAASklC,EAAOk+B,cACjBzB,EAAa1lE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAjBrD,IAAemnE,EAAkB1B,GA2BjC,IAAI9/C,EAASwhD,EAAiBrqE,UA2C9B,OAzCA6oB,EAAOwuB,cAAgB,WACrB,MAAO,oBAAsBsxB,EAAa3oE,UAAUq3C,cAAcp0C,KAAKC,OAGzE2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,oBAAsB6B,EAAa3oE,UAAU8mE,qBAAqB7jE,KAAKC,OAahF2lB,EAAOg+C,YAAc,SAAqBJ,QAC1B,IAAVA,IACFA,EAAQ,IAIVvjE,KAAKwjE,eAAiB,EAGtB,IAFA,IAAI1/D,EAAS9D,KAAK4wC,QAAQs2B,cAEjBnvE,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GACnBwrE,EAAM5rE,KAAK,IAAI,GAAmBqI,KAAK4wC,QAAS,CAC9C7sC,MAAOA,EAEPsgE,YAAY,EAEZE,iBAAiB,KAIrB,OAAOhB,GAGF4D,EAvE2B,CAwElC,IASF,GAAiBrqE,UAAUq1D,aAAe,cAC1C,GAAU5a,kBAAkB,mBAAoB,IAQhD,IAAI,GAAoC,SAAUktB,GAYhD,SAAS2C,EAAqBp+B,EAAQ1wC,GACpC,IAAIwtB,EAEAsN,EAAQ96B,EAAQ+uE,KAChBA,EAAOngD,WAAWkM,EAAO,IAY7B,OAVA96B,EAAQ86B,MAAQA,EAChB96B,EAAQyoD,SAAoB,IAATsmB,EACnB/uE,EAAQ+rE,YAAa,EACrB/rE,EAAQisE,iBAAkB,EAC1Bz+C,EAAQ2+C,EAAU1kE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KACjD8lB,EAAMsN,MAAQA,EACdtN,EAAMuhD,KAAOA,EAEbvhD,EAAM1W,GAAG45B,EAAQ,aAAcljB,EAAM+sC,QAE9B/sC,EA3BT,IAAeshD,EAAsB3C,GA0CrC,IAAI9+C,EAASyhD,EAAqBtqE,UAqBlC,OAnBA6oB,EAAO4sC,YAAc,SAAqB/hD,GACxCi0D,EAAU3nE,UAAUy1D,YAAYxyD,KAAKC,MAErCA,KAAKgpC,SAASs+B,aAAatnE,KAAKqnE,OAYlC1hD,EAAOktC,OAAS,SAAgBriD,GAC9BxQ,KAAK+gD,SAAS/gD,KAAKgpC,SAASs+B,iBAAmBtnE,KAAKqnE,OAG/CD,EAhE+B,CAiEtC,IASF,GAAqBtqE,UAAUylE,cAAgB,SAC/C,GAAUhrB,kBAAkB,uBAAwB,IAQpD,IAAI,GAAsC,SAAUysB,GAYlD,SAASuD,EAAuBv+B,EAAQ1wC,GACtC,IAAIwtB,EAYJ,OAVAA,EAAQk+C,EAAYjkE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAEnD8lB,EAAM0hD,mBAEN1hD,EAAM2hD,cAEN3hD,EAAM1W,GAAG45B,EAAQ,YAAaljB,EAAM0hD,kBAEpC1hD,EAAM1W,GAAG45B,EAAQ,aAAcljB,EAAM2hD,aAE9B3hD,EAxBT,IAAeyhD,EAAwBvD,GAkCvC,IAAIr+C,EAAS4hD,EAAuBzqE,UAqJpC,OAnJA6oB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAK47D,EAAYlnE,UAAUyrC,SAASxoC,KAAKC,MAO7C,OALAA,KAAK0nE,SAAW,GAAS,MAAO,CAC9BjkC,UAAW,0BACXqgB,UAAW,OAEb17C,EAAGxB,YAAY5G,KAAK0nE,UACbt/D,GAGTud,EAAOlW,QAAU,WACfzP,KAAK0nE,SAAW,KAEhB1D,EAAYlnE,UAAU2S,QAAQ1P,KAAKC,OAUrC2lB,EAAOwuB,cAAgB,WACrB,MAAO,qBAAuB6vB,EAAYlnE,UAAUq3C,cAAcp0C,KAAKC,OAGzE2lB,EAAOi+C,qBAAuB,WAC5B,MAAO,qBAAuBI,EAAYlnE,UAAU8mE,qBAAqB7jE,KAAKC,OAUhF2lB,EAAO29C,WAAa,WAClB,IAAIJ,EAAO,IAAI,GAAKljE,KAAKgpC,UACrB2+B,EAAQ3nE,KAAK4nE,gBAEjB,GAAID,EACF,IAAK,IAAI5vE,EAAI4vE,EAAM3vE,OAAS,EAAGD,GAAK,EAAGA,IACrCmrE,EAAKhwB,SAAS,IAAI,GAAqBlzC,KAAKgpC,SAAU,CACpDq+B,KAAMM,EAAM5vE,GAAK,OAKvB,OAAOmrE,GAOTv9C,EAAOs6C,qBAAuB,WAE5BjgE,KAAKoI,KAAKkZ,aAAa,gBAAiBthB,KAAKgpC,SAASs+B,iBAexD3hD,EAAO4sC,YAAc,SAAqB/hD,GAOxC,IALA,IAAIq3D,EAAc7nE,KAAKgpC,SAASs+B,eAC5BK,EAAQ3nE,KAAK4nE,gBAEbE,EAAUH,EAAM,GAEX5vE,EAAI,EAAGA,EAAI4vE,EAAM3vE,OAAQD,IAChC,GAAI4vE,EAAM5vE,GAAK8vE,EAAa,CAC1BC,EAAUH,EAAM5vE,GAChB,MAIJiI,KAAKgpC,SAASs+B,aAAaQ,IAU7BniD,EAAOiiD,cAAgB,WACrB,OAAO5nE,KAAK+wC,SAAS62B,eAAiB5nE,KAAK+wC,SAAS+C,eAAiB9zC,KAAK+wC,SAAS+C,cAAc8zB,eAWnGjiD,EAAOoiD,sBAAwB,WAC7B,OAAO/nE,KAAKgpC,SAASsc,OAAStlD,KAAKgpC,SAASsc,MAAMmH,sBAAwBzsD,KAAK4nE,iBAAmB5nE,KAAK4nE,gBAAgB5vE,OAAS,GAYlI2tB,EAAO6hD,iBAAmB,SAA0Bh3D,GAC9CxQ,KAAK+nE,wBACP/nE,KAAKmlC,YAAY,cAEjBnlC,KAAKglC,SAAS,eAalBrf,EAAO8hD,YAAc,SAAqBj3D,GACpCxQ,KAAK+nE,0BACP/nE,KAAK0nE,SAAS5jB,UAAY9jD,KAAKgpC,SAASs+B,eAAiB,MAItDC,EAxLiC,CAyLxC,IASF,GAAuBzqE,UAAUq1D,aAAe,gBAChD,GAAU5a,kBAAkB,yBAA0B,IAStD,IAAI,GAAsB,SAAUkF,GAGlC,SAASurB,IACP,OAAOvrB,EAAW56C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAegoE,EAAQvrB,GAMvB,IAAI92B,EAASqiD,EAAOlrE,UAyBpB,OAjBA6oB,EAAOwuB,cAAgB,WACrB,MAAO,cAAgBsI,EAAW3/C,UAAUq3C,cAAcp0C,KAAKC,OAUjE2lB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAWzjC,KAAKm0C,mBAIb6zB,EAhCiB,CAiCxB,IAEF,GAAUzwB,kBAAkB,SAAU,IAQtC,IAAI,GAAmC,SAAU0wB,GAG/C,SAASC,IACP,OAAOD,EAAQpmE,MAAM7B,KAAM4J,YAAc5J,KAH3C,IAAekoE,EAAqBD,GAMpC,IAAItiD,EAASuiD,EAAoBprE,UA8BjC,OAtBA6oB,EAAOwuB,cAAgB,WACrB,MAAO,6BAA+B8zB,EAAQnrE,UAAUq3C,cAAcp0C,KAAKC,OAU7E2lB,EAAO4iB,SAAW,WAChB,IAAIngC,EAAK6/D,EAAQnrE,UAAUyrC,SAASxoC,KAAKC,KAAM,CAC7CyjC,UAAWzjC,KAAKm0C,kBAMlB,OADA/rC,EAAG07C,UAAY,IACR17C,GAGF8/D,EArC8B,CAsCrC,IAEF,GAAU3wB,kBAAkB,sBAAuB,IAQnD,IAAI,GAA0B,SAAUkF,GAGtC,SAAS0rB,IACP,OAAO1rB,EAAW56C,MAAM7B,KAAM4J,YAAc5J,KAH9C,IAAemoE,EAAY1rB,GAM3B,IAAI92B,EAASwiD,EAAWrrE,UAexB,OAPA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,MAAO,CACrDyjC,UAAW,kBACXyzB,IAAK,SAIFiR,EAtBqB,CAuB5B,IASF,GAAWrrE,UAAUi0C,SAAW,CAC9B6B,SAAU,CAAC,aAAc,cAAe,qBAAsB,cAAe,kBAAmB,kBAAmB,cAAe,aAAc,uBAAwB,sBAAuB,yBAA0B,iBAAkB,qBAAsB,iBAAkB,mBAAoB,qBAGrS,yBAA0B,KAC5B,GAAW91C,UAAUi0C,SAAS6B,SAASrjC,OAAO,GAAWzS,UAAUi0C,SAAS6B,SAAS56C,OAAS,EAAG,EAAG,0BAGtG,GAAUu/C,kBAAkB,aAAc,IAS1C,IAAI,GAA4B,SAAU6wB,GAYxC,SAASC,EAAar/B,EAAQ1wC,GAC5B,IAAIwtB,EAMJ,OAJAA,EAAQsiD,EAAaroE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KAEpD8lB,EAAM1W,GAAG45B,EAAQ,QAASljB,EAAMvqB,MAEzBuqB,EAlBT,IAAeuiD,EAAcD,GA8B7B,IAAIziD,EAAS0iD,EAAavrE,UAkB1B,OAhBA6oB,EAAOwuB,cAAgB,WACrB,MAAO,qBAAuBi0B,EAAatrE,UAAUq3C,cAAcp0C,KAAKC,OAU1E2lB,EAAOtQ,QAAU,WACf,IAAI3N,EAAQ1H,KAAKgpC,SAASthC,QAC1B,OAAOA,EAAQ1H,KAAKkyC,SAASxqC,EAAM6R,SAAW,IAGzC8uD,EAjDuB,CAkD9B,IAQF,GAAavrE,UAAUi0C,SAAW,IAAS,GAAI,GAAYj0C,UAAUi0C,SAAU,CAC7E0M,aAAa,EACbJ,YAAY,EACZY,WAAW,EACXlB,aAAa,IAEf,GAAUxF,kBAAkB,eAAgB,IAE5C,IAAI+wB,GAAoB,0BACpBC,GAAc,CAAC,OAAQ,SACvBC,GAAa,CAAC,OAAQ,QACtBC,GAAa,CAAC,OAAQ,QACtBC,GAAc,CAAC,OAAQ,SACvBC,GAAgB,CAAC,OAAQ,WACzBC,GAAY,CAAC,OAAQ,OACrBC,GAAc,CAAC,OAAQ,SACvBC,GAAe,CAAC,OAAQ,UACxBC,GAAiB,CAAC,IAAK,UACvBC,GAAe,CAAC,MAAO,oBACvBC,GAAgB,CAAC,IAAK,eAYtBC,GAAgB,CAClBlT,gBAAiB,CACfhyB,SAAU,yBACVziC,GAAI,+BACJ6xB,MAAO,QACP96B,QAAS,CAACiwE,GAAaM,GAAaD,GAAWF,GAAaF,GAAYM,GAAcH,GAAeF,KAEvGxS,kBAAmB,CACjBjyB,SAAU,2BACVziC,GAAI,iCACJ6xB,MAAO,eACP96B,QAAS,CAACywE,GAAgBC,GAAcC,KAE1C/U,MAAO,CACLlwB,SAAU,yBACVziC,GAAI,+BACJ6xB,MAAO,QACP96B,QAAS,CAACuwE,GAAaN,GAAaK,GAAWF,GAAaF,GAAYM,GAAcH,GAAeF,KAEvGrS,UAAW,CACTpyB,SAAU,2BACVziC,GAAI,KACJ6xB,MAAO,kBACP96B,QAAS,CAAC,CAAC,OAAQ,QAAS,CAAC,SAAU,UAAW,CAAC,YAAa,aAAc,CAAC,UAAW,WAAY,CAAC,aAAc,gBAEvHm+D,WAAY,CACVzyB,SAAU,4BACVziC,GAAI,0BACJ6xB,MAAO,cACP96B,QAAS,CAAC,CAAC,wBAAyB,2BAA4B,CAAC,qBAAsB,wBAAyB,CAAC,oBAAqB,sBAAuB,CAAC,iBAAkB,mBAAoB,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,aAAc,gBAEjQg+D,YAAa,CACXtyB,SAAU,6BACVziC,GAAI,wBACJ6xB,MAAO,YACP96B,QAAS,CAAC,CAAC,OAAQ,OAAQ,CAAC,OAAQ,OAAQ,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,QAAS,CAAC,OAAQ,SACjK,QAAW,EACXyjC,OAAQ,SAAgB9c,GACtB,MAAa,SAANA,EAAe,KAAOqX,OAAOrX,KAGxC82C,YAAa,CACX/xB,SAAU,6BACVziC,GAAI,iCACJ6xB,MAAO,eACP96B,QAAS,CAACywE,GAAgBC,KAG5B9S,YAAa,CACXlyB,SAAU,6BACVziC,GAAI,2BACJ6xB,MAAO,SAGT+iC,cAAe,CACbnyB,SAAU,+BACVziC,GAAI,6BACJ6xB,MAAO,eACP96B,QAAS,CAAC2wE,GAAeD,GAAcD,MAqB3C,SAASI,GAAiB3xE,EAAOukC,GAK/B,GAJIA,IACFvkC,EAAQukC,EAAOvkC,IAGbA,GAAmB,SAAVA,EACX,OAAOA,EAqBX,SAAS4xE,GAAuBhhE,EAAI2zB,GAClC,IAAIvkC,EAAQ4Q,EAAG9P,QAAQ8P,EAAG9P,QAAQ+wE,eAAe7xE,MACjD,OAAO2xE,GAAiB3xE,EAAOukC,GAmBjC,SAASutC,GAAkBlhE,EAAI5Q,EAAOukC,GACpC,GAAKvkC,EAIL,IAAK,IAAIO,EAAI,EAAGA,EAAIqQ,EAAG9P,QAAQN,OAAQD,IACrC,GAAIoxE,GAAiB/gE,EAAG9P,QAAQP,GAAGP,MAAOukC,KAAYvkC,EAAO,CAC3D4Q,EAAGihE,cAAgBtxE,EACnB,OA1ENmxE,GAAchT,YAAY59D,QAAU4wE,GAAclT,gBAAgB19D,QAqFlE,IAAI,GAAiC,SAAU8vE,GAY7C,SAASmB,EAAkBvgC,EAAQ1wC,GACjC,IAAIwtB,EA2CJ,OAzCAxtB,EAAQ2lD,WAAY,EACpBn4B,EAAQsiD,EAAaroE,KAAKC,KAAMgpC,EAAQ1wC,IAAY0H,KACpD8lB,EAAM+kC,cAAgBj/C,GAAK,IAAuBka,GAAQA,EAAM+kC,eAEhE/kC,EAAMw3B,OAENx3B,EAAM82B,eAAiB92B,EAAM+2B,gBAAiB,EAC9C/2B,EAAM0jD,UAAY,GAAS,IAAK,CAC9B/lC,UAAW,mBACX5L,YAAa/R,EAAMosB,SAAS,2BAG9BpsB,EAAM1d,KAAKxB,YAAYkf,EAAM0jD,WAE7B1jD,EAAM2jD,mBAGmCnwE,IAArChB,EAAQoxE,2BACV5jD,EAAMirB,SAAS24B,yBAA2B5jD,EAAMirB,SAAS+C,cAAc41B,0BAGzE5jD,EAAM1W,GAAG0W,EAAMqiB,EAAE,oBAAqB,SAAS,WAC7CriB,EAAM6jD,eAEN7jD,EAAMi4B,WAGRj4B,EAAM1W,GAAG0W,EAAMqiB,EAAE,uBAAwB,SAAS,WAChDriB,EAAM2jD,cAEN3jD,EAAM+kC,mBAGRloB,GAAKumC,IAAe,SAAUU,GAC5B9jD,EAAM1W,GAAG0W,EAAMqiB,EAAEyhC,EAAO5lC,UAAW,SAAUle,EAAM+kC,kBAGjD/kC,EAAMirB,SAAS24B,0BACjB5jD,EAAM+jD,kBAGD/jD,EAvDT,IAAeyjD,EAAmBnB,GA0DlC,IAAIziD,EAAS4jD,EAAkBzsE,UA2Q/B,OAzQA6oB,EAAOlW,QAAU,WACfzP,KAAKwpE,UAAY,KAEjBpB,EAAatrE,UAAU2S,QAAQ1P,KAAKC,OAetC2lB,EAAOmkD,gBAAkB,SAAyBzyE,EAAK0yE,EAAUpqE,GAC/D,IAAI+mB,EAAS1mB,UAEI,IAAb+pE,IACFA,EAAW,SAGA,IAATpqE,IACFA,EAAO,SAGT,IAAIiqE,EAASV,GAAc7xE,GACvBkK,EAAKqoE,EAAOroE,GAAGgD,QAAQ,KAAMvE,KAAKgxC,KAClCg5B,EAAsB,CAACD,EAAUxoE,GAAI3C,KAAK,KAAK7H,OACnD,MAAO,CAAC,IAAM4I,EAAO,QAAW4B,EAAK,aAA0B,UAAT5B,EAAmB,YAAc,IAAM,KAAOK,KAAKkyC,SAAS03B,EAAOx2C,OAAQ,KAAOzzB,EAAO,IAAK,4BAA+BqqE,EAAsB,MAAOpoE,OAAOgoE,EAAOtxE,QAAQwJ,KAAI,SAAUiO,GAClP,IAAIk6D,EAAW1oE,EAAK,IAAMwO,EAAE,GAAGxL,QAAQ,OAAQ,IAC/C,MAAO,CAAC,eAAkB0lE,EAAW,YAAgBl6D,EAAE,GAAK,KAAO,oBAAuBi6D,EAAsB,IAAMC,EAAW,KAAOvjD,EAAOwrB,SAASniC,EAAE,IAAK,aAAanR,KAAK,QAC/KgD,OAAO,aAAahD,KAAK,KAY/B+mB,EAAOukD,iBAAmB,WACxB,IAAIH,EAAW,wBAA0B/pE,KAAKgxC,IAC9C,MAAO,CAAC,oDAAqD,eAAkB+4B,EAAW,KAAO/pE,KAAKkyC,SAAS,QAAS,YAAalyC,KAAK8pE,gBAAgB,QAASC,GAAW,8CAA+C/pE,KAAK8pE,gBAAgB,cAAeC,GAAW,UAAW,eAAenrE,KAAK,KAY7S+mB,EAAOwkD,iBAAmB,WACxB,IAAIJ,EAAW,uBAAyB/pE,KAAKgxC,IAC7C,MAAO,CAAC,oDAAqD,eAAkB+4B,EAAW,KAAO/pE,KAAKkyC,SAAS,cAAe,YAAalyC,KAAK8pE,gBAAgB,kBAAmBC,GAAW,4CAA6C/pE,KAAK8pE,gBAAgB,oBAAqBC,GAAW,UAAW,eAAenrE,KAAK,KAYjU+mB,EAAOykD,kBAAoB,WACzB,IAAIL,EAAW,mBAAqB/pE,KAAKgxC,IACzC,MAAO,CAAC,wDAAyD,eAAkB+4B,EAAW,KAAO/pE,KAAKkyC,SAAS,UAAW,YAAalyC,KAAK8pE,gBAAgB,cAAeC,GAAW,gDAAiD/pE,KAAK8pE,gBAAgB,gBAAiBC,GAAW,UAAW,eAAenrE,KAAK,KAY7T+mB,EAAO0kD,gBAAkB,WACvB,OAAO,GAAS,MAAO,CACrB5mC,UAAW,4BACXqgB,UAAW,CAAC9jD,KAAKkqE,mBAAoBlqE,KAAKmqE,mBAAoBnqE,KAAKoqE,qBAAqBxrE,KAAK,OAajG+mB,EAAO2kD,cAAgB,WACrB,OAAO,GAAS,MAAO,CACrB7mC,UAAW,0BACXqgB,UAAW,CAAC,wDAAyD9jD,KAAK8pE,gBAAgB,cAAe,GAAI,UAAW,cAAe,sDAAuD9pE,KAAK8pE,gBAAgB,YAAa,GAAI,UAAW,cAAe,uDAAwD9pE,KAAK8pE,gBAAgB,aAAc,GAAI,UAAW,eAAelrE,KAAK,OAahY+mB,EAAO4kD,kBAAoB,WACzB,IAAIC,EAAsBxqE,KAAKkyC,SAAS,8CACxC,OAAO,GAAS,MAAO,CACrBzO,UAAW,8BACXqgB,UAAW,CAAC,2DAAkE0mB,EAAsB,KAAOxqE,KAAKkyC,SAAS,SAAU,mCAAuCs4B,EAAsB,UAAW,YAAa,iDAAuDxqE,KAAKkyC,SAAS,QAAU,aAAatzC,KAAK,OAI7T+mB,EAAOtQ,QAAU,WACf,MAAO,CAACrV,KAAKqqE,kBAAmBrqE,KAAKsqE,gBAAiBtqE,KAAKuqE,sBAG7D5kD,EAAOyN,MAAQ,WACb,OAAOpzB,KAAKkyC,SAAS,4BAGvBvsB,EAAOs3B,YAAc,WACnB,OAAOj9C,KAAKkyC,SAAS,yEAGvBvsB,EAAOwuB,cAAgB,WACrB,OAAOi0B,EAAatrE,UAAUq3C,cAAcp0C,KAAKC,MAAQ,4BAU3D2lB,EAAOiwC,UAAY,WACjB,IAAIptC,EAASxoB,KAEb,OAAOmB,GAAO+nE,IAAe,SAAUrmC,EAAO+mC,EAAQvyE,GACpD,IAAIG,EAAQ4xE,GAAuB5gD,EAAO2f,EAAEyhC,EAAO5lC,UAAW4lC,EAAO7tC,QAMrE,YAJcziC,IAAV9B,IACFqrC,EAAMxrC,GAAOG,GAGRqrC,IACN,KAULld,EAAO8kD,UAAY,SAAmB30C,GACpC,IAAIshB,EAASp3C,KAEb2iC,GAAKumC,IAAe,SAAUU,EAAQvyE,GACpCiyE,GAAkBlyB,EAAOjP,EAAEyhC,EAAO5lC,UAAWlO,EAAOz+B,GAAMuyE,EAAO7tC,YAQrEpW,EAAO8jD,YAAc,WACnB,IAAInf,EAAStqD,KAEb2iC,GAAKumC,IAAe,SAAUU,GAC5B,IAAIzyE,EAAQyyE,EAAOzxE,eAAe,WAAayxE,EAAO,WAAa,EACnEtf,EAAOniB,EAAEyhC,EAAO5lC,UAAUqlC,cAAgBlyE,MAQ9CwuB,EAAOkkD,gBAAkB,WACvB,IAAI/zC,EAEJ,IACEA,EAASp8B,KAAKC,MAAM,IAAS+wE,aAAaC,QAAQrC,KAClD,MAAOzvE,GACP,GAAIoS,KAAKpS,GAGPi9B,GACF91B,KAAKyqE,UAAU30C,IAQnBnQ,EAAOgkD,aAAe,WACpB,GAAK3pE,KAAK+wC,SAAS24B,yBAAnB,CAIA,IAAI5zC,EAAS91B,KAAK41D,YAElB,IACM74D,OAAOkwB,KAAK6I,GAAQ99B,OACtB,IAAS0yE,aAAaE,QAAQtC,GAAmB5uE,KAAKsB,UAAU86B,IAEhE,IAAS40C,aAAaG,WAAWvC,IAEnC,MAAOzvE,GACP,GAAIoS,KAAKpS,MAQb8sB,EAAOklC,cAAgB,WACrB,IAAIigB,EAAY9qE,KAAK4wC,QAAQkC,SAAS,oBAElCg4B,GACFA,EAAUjgB,iBAUdllC,EAAOq4B,iBAAmB,WACxBh+C,KAAKm9C,oBAAsB,KAC3B,IAAIsa,EAAKz3D,KAAK4wC,QAAQm6B,WAClBC,EAAcvT,GAAMA,EAAGwT,eACvBC,EAAQzT,GAAMA,EAAG0T,eAEjBH,EACFA,EAAYhlC,QACHklC,GACTA,EAAMllC,SAIHujC,EAtU4B,CAuUnC,IAEF,GAAUhyB,kBAAkB,oBAAqB,IAmBjD,IAAI,GAA6B,SAAUkF,GAgBzC,SAAS2uB,EAAcpiC,EAAQ1wC,GAC7B,IAAIwtB,EAEAulD,EAA4B/yE,EAAQgzE,gBAAkB,IAASA,eAEpC,OAA3BhzE,EAAQgzE,iBACVD,GAA4B,GAI9B,IAAIt6B,EAAWP,GAAa,CAC1BjI,UAAW8iC,EACXt5B,qBAAqB,GACpBz5C,GAoCH,OAnCAwtB,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ+H,IAAa/wC,KACnD8lB,EAAMwlD,eAAiBhzE,EAAQgzE,gBAAkB,IAASA,eAC1DxlD,EAAMylD,cAAgB,KACtBzlD,EAAM0lD,gBAAkB,KACxB1lD,EAAM2lD,kBAAoB,IAAS,WACjC3lD,EAAM4lD,kBACL,KAAK,EAAO,IAAuB5lD,IAElCulD,GACFvlD,EAAM0lD,gBAAkB,IAAI1lD,EAAMwlD,eAAexlD,EAAM2lD,mBAEvD3lD,EAAM0lD,gBAAgBG,QAAQ3iC,EAAO5gC,QAErC0d,EAAMylD,cAAgB,WACpB,GAAKzlD,EAAMorB,KAAQprB,EAAMorB,IAAI06B,cAA7B,CAIA,IAAIH,EAAoB3lD,EAAM2lD,kBAE1BI,EAAkB/lD,EAAM+lD,gBAAkB,WAC5Cv8D,GAAItP,KAAM,SAAUyrE,GACpBn8D,GAAItP,KAAM,SAAU6rE,GACpBA,EAAkB,MAKpBz8D,GAAG0W,EAAMorB,IAAI06B,cAAe,SAAUC,GACtCz8D,GAAG0W,EAAMorB,IAAI06B,cAAe,SAAUH,KAGxC3lD,EAAM6mB,IAAI,OAAQ7mB,EAAMylD,gBAGnBzlD,EAhET,IAAeslD,EAAe3uB,GAmE9B,IAAI92B,EAASylD,EAActuE,UA8D3B,OA5DA6oB,EAAO4iB,SAAW,WAChB,OAAOkU,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,SAAU,CACxDyjC,UAAW,qBACXyZ,UAAW,GACV,CACD,cAAe,UAUnBv3B,EAAO+lD,cAAgB,WAShB1rE,KAAK4wC,SAAY5wC,KAAK4wC,QAAQxwC,SAInCJ,KAAK4wC,QAAQxwC,QAAQ,iBAGvBulB,EAAOlW,QAAU,WACXzP,KAAKyrE,mBACPzrE,KAAKyrE,kBAAkBn+B,SAGrBttC,KAAKwrE,kBACHxrE,KAAK4wC,QAAQxoC,MACfpI,KAAKwrE,gBAAgBM,UAAU9rE,KAAK4wC,QAAQxoC,MAG9CpI,KAAKwrE,gBAAgBO,cAGnB/rE,KAAKurE,eACPvrE,KAAKsP,IAAI,OAAQtP,KAAKurE,eAGpBvrE,KAAKkxC,KAAOlxC,KAAKkxC,IAAI06B,eAAiB5rE,KAAK6rE,iBAC7C7rE,KAAK6rE,gBAAgB9rE,KAAKC,KAAKkxC,IAAI06B,eAGrC5rE,KAAKsrE,eAAiB,KACtBtrE,KAAKgsE,eAAiB,KACtBhsE,KAAKyrE,kBAAoB,KACzBzrE,KAAKurE,cAAgB,KAErB9uB,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAG7BorE,EAlIwB,CAmI/B,IAEF,GAAU7zB,kBAAkB,gBAAiB,IAE7C,IAAI00B,GAAW,CACbC,kBAAmB,GACnBC,cAAe,IAUb,GAA2B,SAAU1vB,GAsBvC,SAAS2vB,EAAYpjC,EAAQ1wC,GAC3B,IAAIwtB,EAGAirB,EAAWP,GAAay7B,GAAU3zE,EAAS,CAC7CiwC,UAAU,IAeZ,OAbAziB,EAAQ22B,EAAW18C,KAAKC,KAAMgpC,EAAQ+H,IAAa/wC,KAEnD8lB,EAAMumD,SAENvmD,EAAM1W,GAAG0W,EAAM8qB,QAAS,iBAAkB9qB,EAAMwmD,sBAK5CpzB,IAAc,WAAY,KAAY,oBAAqB,KAC7DpzB,EAAM1W,GAAG,IAAU,mBAAoB0W,EAAMymD,wBAGxCzmD,EAzCT,IAAesmD,EAAa3vB,GAgD5B,IAAI92B,EAASymD,EAAYtvE,UAwUzB,OAtUA6oB,EAAO4mD,uBAAyB,WAC1BvsE,KAAK4wC,QAAQ3pB,aAAe5kB,MAI5B,IAASghD,OACXrjD,KAAKwsE,eAELxsE,KAAKysE,kBAST9mD,EAAO+mD,WAAa,WAClB,IAAI5d,EAAW9uD,KAAK4wC,QAAQke,WAE5B,GAAKA,GAAaA,EAAS92D,OAA3B,CAIA,IAAIqmE,EAAU/nC,OAAO,IAAS0T,YAAYta,MAAMurC,QAAQ,IACpD0R,GAAgC,IAApB3sE,KAAK4sE,UAAmB,GAAKvO,EAAUr+D,KAAK4sE,WAAa,IACzE5sE,KAAK4sE,UAAYvO,EACjBr+D,KAAK6sE,aAAe7sE,KAAK8sE,cAAgBH,EACzC,IAAI1O,EAAkBj+D,KAAKi+D,kBACvB5X,EAAcrmD,KAAK4wC,QAAQyV,cAM3B0mB,EAAW/sE,KAAK4wC,QAAQ4M,UAAYx9C,KAAKgtE,mBAAqBxtE,KAAKC,IAAIw+D,EAAkB5X,GAAermD,KAAK+wC,SAASo7B,cAIrHnsE,KAAKitE,iBAAmBhP,IAAoB57D,MAC/C0qE,GAAW,GAGTA,IAAa/sE,KAAKktE,kBACpBltE,KAAKktE,gBAAkBH,EACvB/sE,KAAKI,QAAQ,qBASjBulB,EAAO2mD,qBAAuB,WACxBtsE,KAAK4wC,QAAQ3pB,aAAe5kB,KAAYrC,KAAKi9D,cAAgBj9D,KAAK+wC,SAASm7B,mBACzElsE,KAAK4wC,QAAQG,SAASo8B,QACxBntE,KAAK4wC,QAAQ5L,SAAS,cAGxBhlC,KAAKysE,kBAELzsE,KAAK4wC,QAAQzL,YAAY,cACzBnlC,KAAKwsE,iBAQT7mD,EAAO8mD,cAAgB,WACjBzsE,KAAKotE,eAOJptE,KAAKitE,kBACRjtE,KAAKitE,gBAAkBjtE,KAAK4wC,QAAQy8B,cAGtCrtE,KAAKstE,kBAAoBttE,KAAK22C,YAAY32C,KAAK0sE,WAAY1/B,IAC3DhtC,KAAK0sE,aACL1sE,KAAKoP,GAAGpP,KAAK4wC,QAAS,CAAC,OAAQ,SAAU5wC,KAAK0sE,YAEzC1sE,KAAKitE,gBAIRjtE,KAAKoP,GAAGpP,KAAK4wC,QAAS,SAAU5wC,KAAKk4D,eAHrCl4D,KAAK2sC,IAAI3sC,KAAK4wC,QAAS,OAAQ5wC,KAAK+3D,YACpC/3D,KAAK2sC,IAAI3sC,KAAK4wC,QAAS,aAAc5wC,KAAKutE,0BAW9C5nD,EAAO4nD,sBAAwB,WAC7BvtE,KAAKitE,iBAAkB,EACvBjtE,KAAKoP,GAAGpP,KAAK4wC,QAAS,SAAU5wC,KAAKk4D,eAQvCvyC,EAAOuyC,aAAe,WACpB,IAAIsV,EAAWhuE,KAAKC,IAAIO,KAAKi+D,kBAAoBj+D,KAAK4wC,QAAQyV,eAC9DrmD,KAAKgtE,mBAAoBhtE,KAAKytE,iBAA0BD,EAAW,EACnExtE,KAAKytE,iBAAkB,EACvBztE,KAAK0sE,cAQP/mD,EAAOoyC,WAAa,WAClB/3D,KAAK2sC,IAAI3sC,KAAK4wC,QAAS,aAAc5wC,KAAKo6D,iBAQ5Cz0C,EAAO0mD,OAAS,WACdrsE,KAAK4sE,WAAa,EAClB5sE,KAAK6sE,aAAe,EACpB7sE,KAAK0tE,cAAgB,EACrB1tE,KAAKktE,iBAAkB,EACvBltE,KAAKitE,iBAAkB,EACvBjtE,KAAKgtE,mBAAoB,EACzBhtE,KAAKytE,iBAAkB,EACvBztE,KAAK02C,cAAc12C,KAAKstE,mBACxBttE,KAAKstE,kBAAoB,KACzBttE,KAAKsP,IAAItP,KAAK4wC,QAAS,CAAC,OAAQ,SAAU5wC,KAAK0sE,YAC/C1sE,KAAKsP,IAAItP,KAAK4wC,QAAS,SAAU5wC,KAAKk4D,cACtCl4D,KAAKsP,IAAItP,KAAK4wC,QAAS,OAAQ5wC,KAAK+3D,YACpC/3D,KAAKsP,IAAItP,KAAK4wC,QAAS,aAAc5wC,KAAKutE,uBAC1CvtE,KAAKsP,IAAItP,KAAK4wC,QAAS,aAAc5wC,KAAKo6D,iBAO5Cz0C,EAAO6mD,aAAe,WACfxsE,KAAKotE,eAIVptE,KAAKqsE,SACLrsE,KAAKI,QAAQ,oBAWfulB,EAAOo2C,YAAc,WACnB,IAAIjN,EAAW9uD,KAAK4wC,QAAQke,WACxB6e,EAAe,GACf51E,EAAI+2D,EAAWA,EAAS92D,OAAS,EAErC,MAAOD,IACL41E,EAAah2E,KAAKm3D,EAASpwD,IAAI3G,IAKjC,OAAO41E,EAAa31E,OAAS21E,EAAa/7D,OAAO+7D,EAAa31E,OAAS,GAAKqK,KAW9EsjB,EAAOw4C,cAAgB,WACrB,IAAIrP,EAAW9uD,KAAK4wC,QAAQke,WACxB8e,EAAiB,GACjB71E,EAAI+2D,EAAWA,EAAS92D,OAAS,EAErC,MAAOD,IACL61E,EAAej2E,KAAKm3D,EAASrwD,MAAM1G,IAKrC,OAAO61E,EAAe51E,OAAS41E,EAAeh8D,OAAO,GAAK,GAa5D+T,EAAOs3C,WAAa,WAClB,IAAIgB,EAAkBj+D,KAAKi+D,kBAE3B,OAAIA,IAAoB57D,IACfA,IAGF47D,EAAkBj+D,KAAKm+D,iBAWhCx4C,EAAOm2C,OAAS,WACd,OAAO97D,KAAKotE,cAWdznD,EAAOw0C,WAAa,WAClB,OAAQn6D,KAAK6tE,kBAUfloD,EAAOs4C,gBAAkB,WACvB,OAAOj+D,KAAK8sE,cAAgB9sE,KAAK+7D,eAWnCp2C,EAAOmnD,YAAc,WACnB,IAAI/Q,EAAc/7D,KAAK+7D,cAOvB,OAL2B,IAAvB/7D,KAAK0tE,cAAuB3R,IAAgB/7D,KAAK0tE,eACnD1tE,KAAK6sE,aAAe,GAGtB7sE,KAAK0tE,aAAe3R,EACb/7D,KAAK6sE,cAWdlnD,EAAOkoD,eAAiB,WACtB,OAAO7tE,KAAKktE,iBAOdvnD,EAAOynD,WAAa,WAClB,MAAyC,kBAA3BptE,KAAKstE,mBAOrB3nD,EAAOy0C,eAAiB,WACtBp6D,KAAKgtE,mBAAoB,EAErBhtE,KAAKm6D,eAKTn6D,KAAKytE,iBAAkB,EACvBztE,KAAK4wC,QAAQyV,YAAYrmD,KAAKi+D,qBAOhCt4C,EAAOlW,QAAU,WACfzP,KAAKsP,IAAI,IAAU,mBAAoBtP,KAAKusE,wBAC5CvsE,KAAKwsE,eAEL/vB,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAG7BosE,EAzXsB,CA0X7B,IAEF,GAAU70B,kBAAkB,cAAe,IAgB3C,IAuiDIwU,GAviDA+hB,GAAgB,SAAuBhyB,GACzC,IAAI1zC,EAAK0zC,EAAK1zC,KAEd,GAAIA,EAAGgZ,aAAa,OAElB,OADA06B,EAAKgN,iBAAiB1gD,EAAG6O,MAClB,EAgBT,IAAI6rB,EAAUgZ,EAAK1T,GAAG,UAClB2lC,EAAU,GACV92D,EAAM,GAEV,IAAK6rB,EAAQ9qC,OACX,OAAO,EAIT,IAAK,IAAID,EAAI,EAAGA,EAAI+qC,EAAQ9qC,OAAQD,IAAK,CACvC,IAAIwC,EAAMuoC,EAAQ/qC,GAAGkf,IAEjB1c,IAAiC,IAA1BwzE,EAAQ32E,QAAQmD,IACzBwzE,EAAQp2E,KAAK4C,GAKjB,QAAKwzE,EAAQ/1E,SAMU,IAAnB+1E,EAAQ/1E,SACVif,EAAM82D,EAAQ,IAGhBjyB,EAAKgN,iBAAiB7xC,IACf,IAQL+2D,GAA8BjxE,OAAO6lB,eAAe,GAAI,YAAa,CACvEE,IAAK,WACH,OAAO9iB,KAAK+e,WAAU,GAAM+kC,WAE9B9gC,IAAK,SAAa/D,GAEhB,IAAIgvD,EAAQ,IAASntD,cAAc9gB,KAAK3D,SAAS9E,eAEjD02E,EAAMnqB,UAAY7kC,EAElB,IAAIivD,EAAU,IAASntD,yBAGvB,MAAOktD,EAAMlyD,WAAW/jB,OACtBk2E,EAAQtnE,YAAYqnE,EAAMlyD,WAAW,IASvC,OALA/b,KAAK0kC,UAAY,GAGjB,IAAS3nB,QAAQjgB,UAAU8J,YAAY7G,KAAKC,KAAMkuE,GAE3CluE,KAAK8jD,aAQZqqB,GAAgB,SAAuBC,EAAUnrC,GAGnD,IAFA,IAAIvG,EAAa,GAER3kC,EAAI,EAAGA,EAAIq2E,EAASp2E,OAAQD,IAGnC,GAFA2kC,EAAa3/B,OAAOsxE,yBAAyBD,EAASr2E,GAAIkrC,GAEtDvG,GAAcA,EAAW1Z,KAAO0Z,EAAW5Z,IAC7C,MAMJ,OAFA4Z,EAAWC,YAAa,EACxBD,EAAWE,cAAe,EACnBF,GAGL,GAAyB,SAAgCof,GAC3D,OAAOqyB,GAAc,CAACryB,EAAK1zC,KAAM,IAASkmE,iBAAiBxxE,UAAW,IAASigB,QAAQjgB,UAAWkxE,IAA8B,cAsB9HO,GAAmB,SAA0BzyB,GAC/C,IAAI1zC,EAAK0zC,EAAK1zC,KAEd,IAAIA,EAAGomE,kBAAP,CAIA,IAAI7sD,EAAM,GACN8sD,EAAkB,GAAuB3yB,GAEzC4yB,EAAgB,SAAuBC,GACzC,OAAO,WACL,IAAK,IAAI5hD,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzB,IAAIwlD,EAASD,EAAS9sE,MAAMuG,EAAIoD,GAEhC,OADAsiE,GAAchyB,GACP8yB,IAIX,CAAC,SAAU,cAAe,sBAAsB33E,SAAQ,SAAUi2B,GAC3D9kB,EAAG8kB,KAKRvL,EAAIuL,GAAK9kB,EAAG8kB,GAGZ9kB,EAAG8kB,GAAKwhD,EAAc/sD,EAAIuL,QAE5BnwB,OAAO6lB,eAAexa,EAAI,YAAaooC,GAAai+B,EAAiB,CACnEzrD,IAAK0rD,EAAcD,EAAgBzrD,QAGrC5a,EAAGomE,kBAAoB,WACrBpmE,EAAGomE,kBAAoB,KACvBzxE,OAAOkwB,KAAKtL,GAAK1qB,SAAQ,SAAUi2B,GACjC9kB,EAAG8kB,GAAKvL,EAAIuL,MAEdnwB,OAAO6lB,eAAexa,EAAI,YAAaqmE,IAIzC3yB,EAAKnP,IAAI,YAAavkC,EAAGomE,qBAQvBK,GAAwB9xE,OAAO6lB,eAAe,GAAI,MAAO,CAC3DE,IAAK,WACH,OAAI9iB,KAAKohB,aAAa,OACb,GAAe,IAASrE,QAAQjgB,UAAU+jB,aAAa9gB,KAAKC,KAAM,QAGpE,IAETgjB,IAAK,SAAa/D,GAEhB,OADA,IAASlC,QAAQjgB,UAAUwkB,aAAavhB,KAAKC,KAAM,MAAOif,GACnDA,KAIP,GAAmB,SAA0B68B,GAC/C,OAAOqyB,GAAc,CAACryB,EAAK1zC,KAAM,IAASkmE,iBAAiBxxE,UAAW+xE,IAAwB,QAmB5FC,GAAiB,SAAwBhzB,GAC3C,GAAKA,EAAK4Q,kBAAV,CAIA,IAAItkD,EAAK0zC,EAAK1zC,KAEd,IAAIA,EAAG2mE,gBAAP,CAIA,IAAIC,EAAgB,GAAiBlzB,GACjCmzB,EAAkB7mE,EAAGkZ,aACrB4tD,EAAU9mE,EAAGi/C,KACjBtqD,OAAO6lB,eAAexa,EAAI,MAAOooC,GAAaw+B,EAAe,CAC3DhsD,IAAK,SAAa/D,GAChB,IAAI2vD,EAASI,EAAchsD,IAAIjjB,KAAKqI,EAAI6W,GAGxC,OADA68B,EAAKgN,iBAAiB1gD,EAAG6O,KAClB23D,MAIXxmE,EAAGkZ,aAAe,SAAUtC,EAAGC,GAC7B,IAAI2vD,EAASK,EAAgBlvE,KAAKqI,EAAI4W,EAAGC,GAMzC,MAJI,OAAO3a,KAAK0a,IACd88B,EAAKgN,iBAAiB1gD,EAAG6O,KAGpB23D,GAGTxmE,EAAGi/C,KAAO,WACR,IAAIunB,EAASM,EAAQnvE,KAAKqI,GAU1B,OALK0lE,GAAchyB,KACjBA,EAAKgN,iBAAiB,IACtBylB,GAAiBzyB,IAGZ8yB,GAGLxmE,EAAG+mE,WACLrzB,EAAKgN,iBAAiB1gD,EAAG+mE,YACfrB,GAAchyB,IACxByyB,GAAiBzyB,GAGnB1zC,EAAG2mE,gBAAkB,WACnB3mE,EAAG2mE,gBAAkB,KACrB3mE,EAAGi/C,KAAO6nB,EACV9mE,EAAGkZ,aAAe2tD,EAClBlyE,OAAO6lB,eAAexa,EAAI,MAAO4mE,GAE7B5mE,EAAGomE,mBACLpmE,EAAGomE,wBAcLY,GAAqB,SAA4Bl3E,EAAKb,EAAKkR,EAAU8mE,QACxD,IAAXA,IACFA,GAAS,GAGX,IAAIrsD,EAAM,SAAaxrB,GACrB,OAAOuF,OAAO6lB,eAAe1qB,EAAKb,EAAK,CACrCG,MAAOA,EACPmlC,YAAY,EACZE,UAAU,KAIVvkC,EAAU,CACZskC,cAAc,EACdD,YAAY,EACZ7Z,IAAK,WACH,IAAItrB,EAAQ+Q,IAEZ,OADAya,EAAIxrB,GACGA,IAQX,OAJI63E,IACF/2E,EAAQ0qB,IAAMA,GAGTjmB,OAAO6lB,eAAe1qB,EAAKb,EAAKiB,IAUrC,GAAqB,SAAUs0D,GAYjC,SAAS0iB,EAAMh3E,EAASo4C,GACtB,IAAI5qB,EAEJA,EAAQ8mC,EAAM7sD,KAAKC,KAAM1H,EAASo4C,IAAU1wC,KAC5C,IAAI+G,EAASzO,EAAQyO,OACjBwoE,GAAoB,EAgBxB,GAXIxoE,IAAW+e,EAAMorB,IAAIi+B,aAAepoE,EAAOkQ,KAAO3e,EAAQ2xB,KAAyC,IAAlC3xB,EAAQ2xB,IAAIulD,mBAC/E1pD,EAAMynC,UAAUxmD,GAEhB+e,EAAM2pD,gBAAgB3pD,EAAMorB,KAI1B54C,EAAQo3E,iBACV5pD,EAAM6pD,0BAGJ7pD,EAAMorB,IAAI9wB,gBAAiB,CAC7B,IAAIwvD,EAAQ9pD,EAAMorB,IAAIn1B,WAClB8zD,EAAcD,EAAM53E,OACpB83E,EAAc,GAElB,MAAOD,IAAe,CACpB,IAAI/pE,EAAO8pE,EAAMC,GACbxzE,EAAWyJ,EAAKzJ,SAAS9E,cAEZ,UAAb8E,IACGypB,EAAM2iC,0BAQT3iC,EAAMslC,qBAAqBxJ,iBAAiB97C,GAE5CggB,EAAM4kC,mBAAmBzK,SAASn6C,EAAK/B,OAEvC+hB,EAAMo2B,aAAa+D,SAASn6C,EAAK/B,OAE5BwrE,GAAsBzpD,EAAMorB,IAAI9vB,aAAa,iBAAkB,GAActb,EAAKmR,OACrFs4D,GAAoB,IAVtBO,EAAYn4E,KAAKmO,IAgBvB,IAAK,IAAI/N,EAAI,EAAGA,EAAI+3E,EAAY93E,OAAQD,IACtC+tB,EAAMorB,IAAIz0B,YAAYqzD,EAAY/3E,IA2BtC,OAvBA+tB,EAAMiqD,qBAEFjqD,EAAM2iC,0BAA4B8mB,GACpC,GAAItkE,KAAK,0IAIX6a,EAAMkqD,2CAMD32B,IAAiBI,IAAaZ,MAAyD,IAAnCvgD,EAAQuwD,wBAC/D/iC,EAAMmqD,aAAY,GAKpBnqD,EAAMoqD,yBAENpqD,EAAMwuB,eAECxuB,EA3FT,IAAewpD,EAAO1iB,GAkGtB,IAAIjnC,EAAS2pD,EAAMxyE,UAuzBnB,OArzBA6oB,EAAOlW,QAAU,WACXzP,KAAKkxC,KAAOlxC,KAAKkxC,IAAI69B,iBACvB/uE,KAAKkxC,IAAI69B,kBAGXO,EAAMa,oBAAoBnwE,KAAKkxC,KAC/BlxC,KAAK+wC,SAAW,KAEhB6b,EAAM9vD,UAAU2S,QAAQ1P,KAAKC,OAQ/B2lB,EAAOgqD,wBAA0B,WAC/Bb,GAAe9uE,OAYjB2lB,EAAOqqD,wCAA0C,WAC/C,IACII,EADAl0B,EAAal8C,KAAKk8C,aAGlBm0B,EAA4B,WAC9BD,EAAmC,GAEnC,IAAK,IAAIr4E,EAAI,EAAGA,EAAImkD,EAAWlkD,OAAQD,IAAK,CAC1C,IAAIgM,EAAQm4C,EAAWnkD,GAEJ,aAAfgM,EAAMw9C,MACR6uB,EAAiCz4E,KAAK,CACpCoM,MAAOA,EACPusE,WAAYvsE,EAAM4hD,SAQ1B0qB,IACAn0B,EAAW7S,iBAAiB,SAAUgnC,GACtCrwE,KAAKoP,GAAG,WAAW,WACjB,OAAO8sC,EAAW9S,oBAAoB,SAAUinC,MAGlD,IAAIE,EAAmB,SAASA,IAC9B,IAAK,IAAIx4E,EAAI,EAAGA,EAAIq4E,EAAiCp4E,OAAQD,IAAK,CAChE,IAAIy4E,EAAcJ,EAAiCr4E,GAEpB,aAA3By4E,EAAYzsE,MAAM4hD,MAAuB6qB,EAAYzsE,MAAM4hD,OAAS6qB,EAAYF,aAClFE,EAAYzsE,MAAM4hD,KAAO6qB,EAAYF,YAKzCp0B,EAAW9S,oBAAoB,SAAUmnC,IAK3CvwE,KAAKoP,GAAG,yBAAyB,WAC/B8sC,EAAW9S,oBAAoB,SAAUinC,GAEzCn0B,EAAW9S,oBAAoB,SAAUmnC,GACzCr0B,EAAW7S,iBAAiB,SAAUknC,MAGxCvwE,KAAKoP,GAAG,uBAAuB,WAE7B8sC,EAAW9S,oBAAoB,SAAUinC,GACzCn0B,EAAW7S,iBAAiB,SAAUgnC,GAEtCn0B,EAAW9S,oBAAoB,SAAUmnC,OAc7C5qD,EAAO8qD,gBAAkB,SAAyB9wE,EAAM+wE,GACtD,IAAIhqD,EAAS1mB,KAGb,GAAI0wE,IAAa1wE,KAAK,iBAAmBL,EAAO,UAAhD,CAIA,IAAIgxE,EAAgBhxE,EAAKpI,cAErByI,KAAK2wE,EAAgB,qBACvB5zE,OAAOkwB,KAAKjtB,KAAK2wE,EAAgB,qBAAqB15E,SAAQ,SAAU25E,GACtE,IAAIC,EAAWnqD,EAAOte,KAAKuoE,EAAgB,UAE3CE,EAASznC,oBAAoBwnC,EAAWlqD,EAAOiqD,EAAgB,oBAAoBC,OAIvF5wE,KAAK,iBAAmBL,EAAO,WAAa+wE,EAC5C1wE,KAAK2wE,EAAgB,oBAAsB,KAC3C3wE,KAAK8wE,0BAA0BH,KAUjChrD,EAAOkmC,0BAA4B,SAAmC6kB,GACpE1wE,KAAKywE,gBAAgB,QAASC,IAUhC/qD,EAAOmmC,0BAA4B,SAAmC4kB,GACpE1wE,KAAKywE,gBAAgB,QAASC,IAWhC/qD,EAAOmrD,0BAA4B,SAAmC7mE,GACpE,IAAIue,EAASxoB,KAETy8B,EAAQ6qB,GAAOr9C,GACf4mE,EAAW7wE,KAAKoI,KAAKq0B,EAAMkrB,YAC3BopB,EAAa/wE,KAAKy8B,EAAMkrB,cAE5B,GAAK3nD,KAAK,iBAAmBy8B,EAAMgrB,YAAc,WAAcopB,GAAaA,EAASxnC,iBAArF,CAIA,IAAIl6B,EAAY,CACdkxC,OAAQ,SAAgBzmD,GACtB,IAAI4W,EAAQ,CACV7Q,KAAM,SACN2J,OAAQynE,EACRC,cAAeD,EACf9lC,WAAY8lC,GAEdA,EAAW3wE,QAAQoQ,GAQN,SAATvG,GACFue,EAAOq/B,GAAOC,WAAWH,cAAcvnD,QAAQoQ,IAGnD8vC,SAAU,SAAkB1mD,GAC1Bm3E,EAAW9wB,SAASrmD,EAAEmK,QAExBw8C,YAAa,SAAqB3mD,GAChCm3E,EAAW7wB,YAAYtmD,EAAEmK,SAIzBktE,EAAkB,WAGpB,IAFA,IAAIC,EAAe,GAEVn5E,EAAI,EAAGA,EAAIg5E,EAAW/4E,OAAQD,IAAK,CAG1C,IAFA,IAAIo5E,GAAQ,EAEHnzC,EAAI,EAAGA,EAAI6yC,EAAS74E,OAAQgmC,IACnC,GAAI6yC,EAAS7yC,KAAO+yC,EAAWh5E,GAAI,CACjCo5E,GAAQ,EACR,MAICA,GACHD,EAAav5E,KAAKo5E,EAAWh5E,IAIjC,MAAOm5E,EAAal5E,OAClB+4E,EAAW7wB,YAAYgxB,EAAatxC,UAIxC5/B,KAAKy8B,EAAMkrB,WAAa,cAAgBx4C,EACxCpS,OAAOkwB,KAAK9d,GAAWlY,SAAQ,SAAU25E,GACvC,IAAIvhE,EAAWF,EAAUyhE,GACzBC,EAASxnC,iBAAiBunC,EAAWvhE,GAErCmZ,EAAOpZ,GAAG,WAAW,SAAUxV,GAC7B,OAAOi3E,EAASznC,oBAAoBwnC,EAAWvhE,SAInDrP,KAAKoP,GAAG,YAAa6hE,GACrBjxE,KAAKoP,GAAG,WAAW,SAAUxV,GAC3B,OAAO4uB,EAAOlZ,IAAI,YAAa2hE,QAWnCtrD,EAAOoqD,mBAAqB,WAC1B,IAAI34B,EAASp3C,KAEbsnD,GAAOtU,MAAM/7C,SAAQ,SAAUgT,GAC7BmtC,EAAO05B,0BAA0B7mE,OAWrC0b,EAAO4iB,SAAW,WAChB,IAAIngC,EAAKpI,KAAK+wC,SAAS9mB,IAKvB,IAAK7hB,IAAQpI,KAAK+wC,SAASqgC,iBAAkBpxE,KAAKqxE,wBAA0B,CAE1E,GAAIjpE,EAAI,CACN,IAAIkpE,EAAQlpE,EAAG2W,WAAU,GAErB3W,EAAGa,YACLb,EAAGa,WAAW+W,aAAasxD,EAAOlpE,GAGpCknE,EAAMa,oBAAoB/nE,GAC1BA,EAAKkpE,MACA,CACLlpE,EAAK,IAAS0Y,cAAc,SAE5B,IAAIywD,EAAgBvxE,KAAK+wC,SAAS9mB,KAAO0b,GAAc3lC,KAAK+wC,SAAS9mB,KACjE3L,EAAakyB,GAAa,GAAI+gC,GAE7Bl4B,KAA0D,IAAzCr5C,KAAK+wC,SAAS8X,+BAC3BvqC,EAAWs/B,SAGpBnY,GAAcr9B,EAAI,GAAOkW,EAAY,CACnC/c,GAAIvB,KAAK+wC,SAASygC,OAClB,MAAS,cAIbppE,EAAGqpE,SAAWzxE,KAAK+wC,SAAS0gC,SAGO,qBAA1BzxE,KAAK+wC,SAAS2gC,SACvBpwD,GAAalZ,EAAI,UAAWpI,KAAK+wC,SAAS2gC,SAQ5C,IAFA,IAAIC,EAAgB,CAAC,OAAQ,QAAS,cAAe,YAE5C55E,EAAI,EAAGA,EAAI45E,EAAc35E,OAAQD,IAAK,CAC7C,IAAIyQ,EAAOmpE,EAAc55E,GACrBP,EAAQwI,KAAK+wC,SAASvoC,GAEL,qBAAVhR,IACLA,EACF8pB,GAAalZ,EAAII,EAAMA,GAEvB+Y,GAAgBnZ,EAAII,GAGtBJ,EAAGI,GAAQhR,GAIf,OAAO4Q,GAiBTud,EAAO8pD,gBAAkB,SAAyBrnE,GAChD,GAAwB,IAApBA,EAAGwpE,cAA0C,IAApBxpE,EAAGwpE,aAAhC,CAMA,GAAsB,IAAlBxpE,EAAGlP,WAAkB,CAWvB,IAAI24E,GAAiB,EAEjBC,EAAoB,WACtBD,GAAiB,GAGnB7xE,KAAKoP,GAAG,YAAa0iE,GAErB,IAAIC,EAAmB,WAGhBF,GACH7xE,KAAKI,QAAQ,cAcjB,OAVAJ,KAAKoP,GAAG,iBAAkB2iE,QAC1B/xE,KAAK0wC,OAAM,WACT1wC,KAAKsP,IAAI,YAAawiE,GACtB9xE,KAAKsP,IAAI,iBAAkByiE,GAEtBF,GAEH7xE,KAAKI,QAAQ,gBAUnB,IAAI4xE,EAAkB,CAAC,aAEvBA,EAAgBr6E,KAAK,kBAEjByQ,EAAGlP,YAAc,GACnB84E,EAAgBr6E,KAAK,cAInByQ,EAAGlP,YAAc,GACnB84E,EAAgBr6E,KAAK,WAInByQ,EAAGlP,YAAc,GACnB84E,EAAgBr6E,KAAK,kBAIvBqI,KAAK0wC,OAAM,WACTshC,EAAgB/6E,SAAQ,SAAU0I,GAChCK,KAAKI,QAAQT,KACZK,WAWP2lB,EAAOwkC,eAAiB,SAAwBn9C,GAC9C,IACEhN,KAAKkxC,IAAImV,YAAcr5C,EACvB,MAAOpT,GACP,GAAIA,EAAG,oCAWX+rB,EAAOsB,SAAW,WAChB,IAAIqjC,EAAStqD,KAMb,GAAIA,KAAKkxC,IAAIjqB,WAAa5kB,KAAYo2C,IAAcO,IAAsC,IAAzBh5C,KAAKkxC,IAAImV,YAAmB,CAG3F,IAAI4rB,EAAgB,SAASA,IACvB3nB,EAAOpZ,IAAImV,YAAc,IAEvBiE,EAAOpZ,IAAIjqB,WAAa5kB,KAC1BioD,EAAOlqD,QAAQ,kBAGjBkqD,EAAOh7C,IAAI,aAAc2iE,KAK7B,OADAjyE,KAAKoP,GAAG,aAAc6iE,GACfztD,IAGT,OAAOxkB,KAAKkxC,IAAIjqB,UAAYzC,KAU9BmB,EAAOmC,MAAQ,WACb,OAAO9nB,KAAKkxC,IAAI/J,aAUlBxhB,EAAOoC,OAAS,WACd,OAAO/nB,KAAKkxC,IAAI7J,cAclB1hB,EAAOuqD,uBAAyB,WAC9B,IAAI1lB,EAASxqD,KAEb,GAAM,+BAAgCA,KAAKkxC,IAA3C,CAIA,IAAIghC,EAAQ,WACVlyE,KAAKI,QAAQ,mBAAoB,CAC/Bs/D,cAAc,KAIdyS,EAAU,WACR,2BAA4BnyE,KAAKkxC,KAA2C,uBAApClxC,KAAKkxC,IAAIkhC,yBACnDpyE,KAAK2sC,IAAI,sBAAuBulC,GAChClyE,KAAKI,QAAQ,mBAAoB,CAC/Bs/D,cAAc,EAEd2S,qBAAqB,MAK3BryE,KAAKoP,GAAG,wBAAyB+iE,GACjCnyE,KAAKoP,GAAG,WAAW,WACjBo7C,EAAOl7C,IAAI,wBAAyB6iE,GAEpC3nB,EAAOl7C,IAAI,sBAAuB4iE,QAYtCvsD,EAAO2sD,mBAAqB,WAC1B,GAA8C,oBAAnCtyE,KAAKkxC,IAAIqhC,sBAAsC,CACxD,IAAIp6B,EAAY,IAASD,WAAa,IAASA,UAAUC,WAAa,GAEtE,GAAI,UAAU7zC,KAAK6zC,KAAe,uBAAuB7zC,KAAK6zC,GAC5D,OAAO,EAIX,OAAO,GAOTxyB,EAAO6sD,gBAAkB,WACvB,IAAI9qB,EAAQ1nD,KAAKkxC,IAEjB,GAAIwW,EAAMlK,QAAUkK,EAAMkqB,cAAgBlqB,EAAM+qB,cAG9Cj3B,GAAex7C,KAAKkxC,IAAIP,QAGxB3wC,KAAK7G,YAAW,WACduuD,EAAMhK,QAEN,IACEgK,EAAM6qB,wBACN,MAAO34E,GACPoG,KAAKI,QAAQ,kBAAmBxG,MAEjC,QAEH,IACE8tD,EAAM6qB,wBACN,MAAO34E,GACPoG,KAAKI,QAAQ,kBAAmBxG,KAStC+rB,EAAO+sD,eAAiB,WACjB1yE,KAAKkxC,IAAIyhC,2BAKd3yE,KAAKkxC,IAAI0hC,uBAJP5yE,KAAKI,QAAQ,kBAAmB,IAAIzH,MAAM,iCAkB9CgtB,EAAO2lC,wBAA0B,WAC/B,OAAOtrD,KAAKkxC,IAAIoa,2BAiBlB3lC,EAAO1O,IAAM,SAAa64C,GACxB,QAAax2D,IAATw2D,EACF,OAAO9vD,KAAKkxC,IAAIj6B,IAIlBjX,KAAK+yD,OAAOjD,IAQdnqC,EAAOnlB,MAAQ,WACb8uE,EAAMuD,kBAAkB7yE,KAAKkxC,MAY/BvrB,EAAOwpD,WAAa,WAClB,OAAInvE,KAAK0tD,eACA1tD,KAAK0tD,eAAez2C,IAGtBjX,KAAKkxC,IAAIi+B,YAUlBxpD,EAAOsqD,YAAc,SAAqB1rC,GACxCvkC,KAAKkxC,IAAI0M,WAAarZ,GAmBxB5e,EAAOolC,aAAe,SAAsBxJ,EAAMnuB,EAAOzH,GACvD,OAAK3rB,KAAKyoD,yBAIHzoD,KAAKkxC,IAAI6Z,aAAaxJ,EAAMnuB,EAAOzH,GAHjCihC,EAAM9vD,UAAUiuD,aAAahrD,KAAKC,KAAMuhD,EAAMnuB,EAAOzH,IAmChEhG,EAAOqlC,sBAAwB,SAA+B1yD,GAC5D,IAAK0H,KAAKyoD,yBACR,OAAOmE,EAAM9vD,UAAUkuD,sBAAsBjrD,KAAKC,KAAM1H,GAG1D,IAAI6yD,EAAmB,IAASrqC,cAAc,SA0B9C,OAxBIxoB,EAAQipD,OACV4J,EAAiB5J,KAAOjpD,EAAQipD,MAG9BjpD,EAAQ86B,QACV+3B,EAAiB/3B,MAAQ96B,EAAQ86B,QAG/B96B,EAAQqzB,UAAYrzB,EAAQotD,WAC9ByF,EAAiBzF,QAAUptD,EAAQqzB,UAAYrzB,EAAQotD,SAGrDptD,EAAQ,aACV6yD,EAAiB,WAAa7yD,EAAQ,YAGpCA,EAAQiJ,KACV4pD,EAAiB5pD,GAAKjJ,EAAQiJ,IAG5BjJ,EAAQ2e,MACVk0C,EAAiBl0C,IAAM3e,EAAQ2e,KAG1Bk0C,GAgBTxlC,EAAO02B,mBAAqB,SAA4B/jD,EAAS2yD,GAC/D,IAAIE,EAAmByB,EAAM9vD,UAAUu/C,mBAAmBt8C,KAAKC,KAAM1H,EAAS2yD,GAM9E,OAJIjrD,KAAKyoD,0BACPzoD,KAAKoI,KAAKxB,YAAYukD,GAGjBA,GAUTxlC,EAAOokC,sBAAwB,SAA+BhmD,GAG5D,GAFA6oD,EAAM9vD,UAAUitD,sBAAsBhqD,KAAKC,KAAM+D,GAE7C/D,KAAKyoD,yBAA0B,CACjC,IAAI3kD,EAAS9D,KAAKooC,GAAG,SACjBrwC,EAAI+L,EAAO9L,OAEf,MAAOD,IACDgM,IAAUD,EAAO/L,IAAMgM,IAAUD,EAAO/L,GAAGgM,OAC7C/D,KAAKoI,KAAKqU,YAAY3Y,EAAO/L,MAgBrC4tB,EAAO0lC,wBAA0B,WAC/B,GAAiD,oBAAtCrrD,KAAKoI,KAAKijD,wBACnB,OAAOrrD,KAAKoI,KAAKijD,0BAGnB,IAAIynB,EAAuB,GAa3B,MAXiD,qBAAtC9yE,KAAKoI,KAAK2qE,yBAAwF,qBAAtC/yE,KAAKoI,KAAK4qE,0BAC/EF,EAAqBG,mBAAqBjzE,KAAKoI,KAAK2qE,wBACpDD,EAAqBI,iBAAmBlzE,KAAKoI,KAAK4qE,yBAGhD,IAAShpC,aAAmD,oBAA7B,IAASA,YAAYta,IACtDojD,EAAqBK,aAAe,IAASnpC,YAAYta,MAChD,IAASsa,aAAe,IAASA,YAAYopC,QAAiE,kBAAhD,IAASppC,YAAYopC,OAAOC,kBACnGP,EAAqBK,aAAe,IAAStuE,KAAK6qB,MAAQ,IAASsa,YAAYopC,OAAOC,iBAGjFP,GAGFxD,EA15BgB,CA25BvB,IAYFF,GAAmB,GAAO,YAAY,WACpC,GAAK1rC,KAAL,CAIA,IAAIgkB,EAAQ,IAAS5mC,cAAc,SAC/B/c,EAAQ,IAAS+c,cAAc,SAKnC,OAJA/c,EAAMw9C,KAAO,WACbx9C,EAAM2hD,QAAU,KAChB3hD,EAAMqvB,MAAQ,UACds0B,EAAM9gD,YAAY7C,GACX2jD,MAUT,GAAMpnC,YAAc,WAElB,IACE,GAAMgzD,SAASvkB,OAAS,GACxB,MAAOn1D,GACP,OAAO,EAGT,SAAU,GAAM05E,WAAY,GAAMA,SAASvnB,cAW7C,GAAMA,YAAc,SAAUpsD,GAC5B,OAAO,GAAM2zE,SAASvnB,YAAYpsD,IAapC,GAAMqsD,cAAgB,SAAUC,EAAQ3zD,GACtC,OAAO,GAAMyzD,YAAYE,EAAOtsD,OAalC,GAAM4zE,iBAAmB,WAEvB,IACE,IAAIxkB,EAAS,GAAMukB,SAASvkB,OAE5B,OADA,GAAMukB,SAASvkB,OAASA,EAAS,EAAI,GAC9BA,IAAW,GAAMukB,SAASvkB,OACjC,MAAOn1D,GACP,OAAO,IAcX,GAAM45E,cAAgB,WACpB,IACE,IAAI3kB,EAAQ,GAAMykB,SAASzkB,MAW3B,OARA,GAAMykB,SAASzkB,OAASA,EAEpB,GAAMykB,SAASzkB,MACjBvtC,GAAa,GAAMgyD,SAAU,QAAS,SAEtC/xD,GAAgB,GAAM+xD,SAAU,QAAS,SAGpCzkB,IAAU,GAAMykB,SAASzkB,MAChC,MAAOj1D,GACP,OAAO,IAYX,GAAM65E,uBAAyB,WAG7B,GAAIh7B,IAAcO,IAAaC,GAAiB,GAC9C,OAAO,EAIT,IACE,IAAIquB,EAAe,GAAMgM,SAAShM,aAElC,OADA,GAAMgM,SAAShM,aAAeA,EAAe,EAAI,GAC1CA,IAAiB,GAAMgM,SAAShM,aACvC,MAAO1tE,GACP,OAAO,IAaX,GAAM85E,sBAAwB,WAG5B,IACE,IAAIp3E,EAAO,aAEXS,OAAO6lB,eAAe,IAAS9B,cAAc,SAAU,MAAO,CAC5DgC,IAAKxmB,EACL0mB,IAAK1mB,IAEPS,OAAO6lB,eAAe,IAAS9B,cAAc,SAAU,MAAO,CAC5DgC,IAAKxmB,EACL0mB,IAAK1mB,IAEPS,OAAO6lB,eAAe,IAAS9B,cAAc,SAAU,YAAa,CAClEgC,IAAKxmB,EACL0mB,IAAK1mB,IAEPS,OAAO6lB,eAAe,IAAS9B,cAAc,SAAU,YAAa,CAClEgC,IAAKxmB,EACL0mB,IAAK1mB,IAEP,MAAO1C,GACP,OAAO,EAGT,OAAO,GAWT,GAAM+5E,yBAA2B,WAC/B,OAAOh6B,IAAiBD,IAAUV,IAWpC,GAAM46B,0BAA4B,WAChC,SAAU,GAAMN,WAAY,GAAMA,SAASO,cAW7C,GAAMC,0BAA4B,WAChC,SAAU,GAAMR,WAAY,GAAMA,SAASpM,cAU7C,GAAMn6B,OAAS,CAAC,YAAa,UAAW,QAAS,QAAS,UAAW,UAAW,iBAAkB,aAAc,UAAW,iBAAkB,UAAW,UAAW,UAAW,SAAU,QAAS,iBAAkB,aAAc,WAAY,OAAQ,QAAS,aAAc,SAAU,gBAqDtR,CAAC,CAAC,wBAAyB,oBAAqB,CAAC,sBAAuB,iBAAkB,CAAC,uBAAwB,0BAA2B,CAAC,oBAAqB,yBAA0B,CAAC,2BAA4B,4BAA6B,CAAC,4BAA6B,6BAA8B,CAAC,4BAA6B,8BAA8B91C,SAAQ,SAAUsxB,GAChY,IAAIlxB,EAAMkxB,EAAK,GACX9iB,EAAK8iB,EAAK,GACd6mD,GAAmB,GAAMtyE,UAAWzF,GAAK,WACvC,OAAO,GAAMoO,QACZ,MAWL,GAAM3I,UAAUu0E,yBAA2B33B,GAW3C,GAAM58C,UAAU0vD,0BAA2B,EAS3C,GAAM1vD,UAAUqrD,wBAAyB,EAQzC,GAAMrrD,UAAUurD,0BAA2B,EAI3C,GAAM0rB,iBAAmB,WAGnBr7B,IAAmB,IAAQI,KAAeE,KAC5C+S,GAAc,GAAMunB,UAAY,GAAMA,SAASr2E,YAAYH,UAAUivD,YAErE,GAAMunB,SAASr2E,YAAYH,UAAUivD,YAAc,SAAUpsD,GAC3D,IAAIq0E,EAAY,4CAEhB,OAAIr0E,GAAQq0E,EAAU1vE,KAAK3E,GAClB,QAGFosD,GAAYhsD,KAAKC,KAAML,MAKpC,GAAMs0E,mBAAqB,WACzB,IAAIviD,EAAI,GAAM4hD,SAASr2E,YAAYH,UAAUivD,YAM7C,OAJIA,KACF,GAAMunB,SAASr2E,YAAYH,UAAUivD,YAAcA,IAG9Cr6B,GAIT,GAAMqiD,mBAEN,GAAM5D,oBAAsB,SAAU/nE,GACpC,GAAKA,EAAL,CAIIA,EAAGa,YACLb,EAAGa,WAAWwT,YAAYrU,GAI5B,MAAOA,EAAGgY,gBACRhY,EAAGqU,YAAYrU,EAAGkT,YAKpBlT,EAAGmZ,gBAAgB,OAGI,oBAAZnZ,EAAGi/C,MAEZ,WACE,IACEj/C,EAAGi/C,OACH,MAAOztD,KAHX,KASJ,GAAMi5E,kBAAoB,SAAUzqE,GAClC,GAAKA,EAAL,CAIA,IAAI06B,EAAU16B,EAAGg3C,iBAAiB,UAC9BrnD,EAAI+qC,EAAQ9qC,OAEhB,MAAOD,IACLqQ,EAAGqU,YAAYqmB,EAAQ/qC,IAKzBqQ,EAAGmZ,gBAAgB,OAEI,oBAAZnZ,EAAGi/C,MAEZ,WACE,IACEj/C,EAAGi/C,OACH,MAAOztD,KAHX,KAcJ,CAaA,QAeA,eAaA,WAaA,WAgBA,OAcA,eAAe3C,SAAQ,SAAUgsC,GAC/B,GAAMnmC,UAAUmmC,GAAQ,WACtB,OAAOjjC,KAAKkxC,IAAIjO,IAASjjC,KAAKkxC,IAAI9vB,aAAa6hB,OAOnD,CAYA,QAYA,eAYA,WAeA,OAaA,eAAehsC,SAAQ,SAAUgsC,GAC/B,GAAMnmC,UAAU,MAAQszC,GAAYnN,IAAS,SAAUhkB,GACrDjf,KAAKkxC,IAAIjO,GAAQhkB,EAEbA,EACFjf,KAAKkxC,IAAI5vB,aAAa2hB,EAAMA,GAE5BjjC,KAAKkxC,IAAI3vB,gBAAgB0hB,OAS/B,CAWA,SAWA,cAYA,WAYA,SAYA,SAkBA,UAaA,QAaA,UAYA,WAaA,QAcA,eAiBA,sBAYA,SAgBA,eAkBA,aAYA,aAYA,cAaA,eAAehsC,SAAQ,SAAUgsC,GAC/B,GAAMnmC,UAAUmmC,GAAQ,WACtB,OAAOjjC,KAAKkxC,IAAIjO,OAOpB,CAYA,SAWA,MAYA,SAkBA,UAcA,eAiBA,sBAaA,eAAehsC,SAAQ,SAAUgsC,GAC/B,GAAMnmC,UAAU,MAAQszC,GAAYnN,IAAS,SAAUhkB,GACrDjf,KAAKkxC,IAAIjO,GAAQhkB,MAMrB,CAQA,QAQA,OAQA,QAAQhoB,SAAQ,SAAUgsC,GACxB,GAAMnmC,UAAUmmC,GAAQ,WACtB,OAAOjjC,KAAKkxC,IAAIjO,SAGpB,GAAK0pB,mBAAmB,IAWxB,GAAMa,oBAAsB,GAW5B,GAAMA,oBAAoBzB,YAAc,SAAUpsD,GAEhD,IACE,OAAO,GAAM2zE,SAASvnB,YAAYpsD,GAClC,MAAO/F,GACP,MAAO,KAiBX,GAAM4zD,oBAAoBN,gBAAkB,SAAUnmD,EAAQzO,GAE5D,GAAIyO,EAAOpH,KACT,OAAO,GAAM6tD,oBAAoBzB,YAAYhlD,EAAOpH,MAC/C,GAAIoH,EAAOkQ,IAAK,CACrB,IAAIi6C,EAAMlN,GAAiBj9C,EAAOkQ,KAClC,OAAO,GAAMu2C,oBAAoBzB,YAAY,SAAWmF,GAG1D,MAAO,IAgBT,GAAM1D,oBAAoBG,aAAe,SAAU5mD,EAAQ+0C,EAAMxjD,GAC/DwjD,EAAKiX,OAAOhsD,EAAOkQ,MAOrB,GAAMu2C,oBAAoB/9C,QAAU,aAGpC,GAAMo9C,sBAAsB,GAAMW,qBAClC,GAAKtB,aAAa,QAAS,IAI3B,IAAIgoB,GAAwB,CAgB5B,WAgBA,QAgBA,UAgBA,UAgBA,UAgBA,iBAgBA,aAgBA,aAgBA,SAgBA,eAgBA,mBAIIC,GAAoB,CACtBC,QAAS,UACTC,eAAgB,iBAChBC,QAAS,UACTC,OAAQ,UAENC,GAAmB,CAAC,OAAQ,SAAU,QAAS,SAAU,QAAS,SAAU,QAC5EC,GAAqB,GAQzBD,GAAiBv9E,SAAQ,SAAUi2B,GACjC,IAAIjO,EAAoB,MAAhBiO,EAAEwnD,OAAO,GAAa,KAAOxnD,EAAE7K,UAAU,GAAK6K,EACtDunD,GAAmBvnD,GAAK,cAAgBjO,KAE1C,IAAI01D,GAAsB,CACxBC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,KACPC,OAAQ,KACRC,KAAM7yE,KAaJ,GAAsB,SAAUo6C,GAelC,SAAS5E,EAAO5tB,EAAK3xB,EAASo4C,GAC5B,IAAI5qB,EAqBJ,GAlBAmE,EAAI1oB,GAAK0oB,EAAI1oB,IAAMjJ,EAAQiJ,IAAM,aAAeqoC,KAMhDtxC,EAAU,GAAOu/C,EAAOs9B,eAAelrD,GAAM3xB,GAG7CA,EAAQw5C,cAAe,EAEvBx5C,EAAQiwC,UAAW,EAEnBjwC,EAAQk3C,SAAU,EAGlBl3C,EAAQy5C,qBAAsB,GAEzBz5C,EAAQqzB,SACX,GAA2B,oBAAhB1B,EAAImrD,QAAwB,CACrC,IAAIA,EAAUnrD,EAAImrD,QAAQ,UAEtBA,GAAWA,EAAQv0D,eACrBvoB,EAAQqzB,SAAWypD,EAAQv0D,aAAa,aAErC,CACL,IAAI8W,EAAU1N,EAEd,MAAO0N,GAAgC,IAArBA,EAAQjb,SAAgB,CACxC,GAAIipB,GAAchO,GAASx/B,eAAe,QAAS,CACjDG,EAAQqzB,SAAWgM,EAAQ9W,aAAa,QACxC,MAGF8W,EAAUA,EAAQ1uB,YA6BxB,GAvBA6c,EAAQ22B,EAAW18C,KAAKC,KAAM,KAAM1H,EAASo4C,IAAU1wC,KAEvD8lB,EAAMuvD,+BAAiCzpE,GAAK,IAAuBka,GAAQA,EAAMwvD,2BACjFxvD,EAAMyvD,yBAA2B3pE,GAAK,IAAuBka,GAAQA,EAAM0vD,oBAE3E1vD,EAAM2vD,eAAgB,EAEtB3vD,EAAMjB,IAAM6d,GAAe5c,EAAMkrB,KAEjClrB,EAAM05C,OAAS/kB,GAEf30B,EAAM4vD,mBAAoB,EAG1B5vD,EAAM6vD,iBAAmB,GAEzB7vD,EAAMsuB,UAAW,EAEjBtuB,EAAMoiC,aAAc,EAEpBpiC,EAAM8vD,aAAc,GAGf9vD,EAAMirB,WAAajrB,EAAMirB,SAAS6gB,YAAc9rC,EAAMirB,SAAS6gB,UAAU55D,OAC5E,MAAM,IAAIW,MAAM,2HAWlB,GAPAmtB,EAAMmE,IAAMA,EAEZnE,EAAMyrD,cAAgBtnD,GAAO0b,GAAc1b,GAE3CnE,EAAM6F,SAAS7F,EAAMirB,SAASplB,UAG1BrzB,EAAQ+5C,UAAW,CAErB,IAAIwjC,EAAmB,GACvB94E,OAAOsnC,oBAAoB/rC,EAAQ+5C,WAAWp7C,SAAQ,SAAUgT,GAC9D4rE,EAAiB5rE,EAAK1S,eAAiBe,EAAQ+5C,UAAUpoC,MAE3D6b,EAAMgwD,WAAaD,OAEnB/vD,EAAMgwD,WAAaj+B,EAAO/6C,UAAUi0C,SAASsB,UAG/CvsB,EAAMiwD,cAGNjwD,EAAMkwD,QAAU19E,EAAQw6D,QAAU,GAElChtC,EAAMmwD,YAAc39E,EAAQslD,SAI5B3zB,EAAI2zB,UAAW,EACf3zB,EAAI1I,gBAAgB,YACpBuE,EAAMowD,cAAe,EACrBpwD,EAAMqwD,eAAiB,GACvBrwD,EAAMswD,qBAAuB,GAEzBnsD,EAAI7I,aAAa,YACnB0E,EAAMuwD,UAAS,GAIfvwD,EAAMuwD,SAASvwD,EAAMirB,SAASslC,UAI5B/9E,EAAQg+E,SACVv5E,OAAOkwB,KAAK30B,EAAQg+E,SAASr/E,SAAQ,SAAUgT,GAC7C,GAA2B,oBAAhB6b,EAAM7b,GACf,MAAM,IAAItR,MAAM,WAAcsR,EAAO,uBAY3C6b,EAAMywD,YAAa,EACnBzwD,EAAMorB,IAAMprB,EAAMyiB,WAElBiH,GAAQ,IAAuB1pB,GAAQ,CACrC2pB,YAAa,QAMX3pB,EAAM05C,OAAOI,oBACfxwD,GAAG,IAAU0W,EAAM05C,OAAOgX,iBAAkB1wD,EAAMuvD,gCAElDvvD,EAAM1W,GAAG0W,EAAM05C,OAAOgX,iBAAkB1wD,EAAMuvD,iCAG5CvvD,EAAM2wD,QACR3wD,EAAM1W,GAAG,cAAe0W,EAAM4wD,gBAOhC,IAAIC,EAAoBnmC,GAAa1qB,EAAMirB,UAEvCz4C,EAAQg+E,SACVv5E,OAAOkwB,KAAK30B,EAAQg+E,SAASr/E,SAAQ,SAAUgT,GAC7C6b,EAAM7b,GAAM3R,EAAQg+E,QAAQrsE,OAIhC6b,EAAMirB,SAAS+C,cAAgB6iC,EAC/B7wD,EAAM8wD,YAAc,GAEpB9wD,EAAMgsB,eAGNhsB,EAAMkxC,QAAuC,UAA/B/sC,EAAI5tB,SAAS9E,eAIvBuuB,EAAM83B,WACR93B,EAAMkf,SAAS,wBAEflf,EAAMkf,SAAS,yBAIjBlf,EAAMorB,IAAI5vB,aAAa,OAAQ,UAE3BwE,EAAMkxC,UACRlxC,EAAMorB,IAAI5vB,aAAa,aAAcwE,EAAMosB,SAAS,iBAEpDpsB,EAAMorB,IAAI5vB,aAAa,aAAcwE,EAAMosB,SAAS,iBAGlDpsB,EAAMkxC,WACRlxC,EAAMkf,SAAS,aAGblf,EAAM+wD,qBACR/wD,EAAMkf,SAAS,eAObqU,IACFvzB,EAAMkf,SAAS,qBAIZ0U,IACH5zB,EAAMkf,SAAS,oBAIjB6S,EAAOC,QAAQhyB,EAAMkrB,KAAO,IAAuBlrB,GAEnD,IAAIgxD,EAAe,GAAQ9/E,MAAM,KAAK,GAoBtC,OAlBA8uB,EAAMkf,SAAS,QAAU8xC,GAIzBhxD,EAAMixD,YAAW,GAEjBjxD,EAAMywB,qBAENzwB,EAAM6mB,IAAI,OAAQ7mB,EAAMkxD,wBAExBlxD,EAAM1W,GAAG,aAAc0W,EAAMmxD,mBAE7BnxD,EAAM1W,GAAG,UAAW0W,EAAM0vB,eAE1B1vB,EAAMoxD,YAAYpxD,EAAMirB,SAASmmC,aAEjCpxD,EAAMqxD,WAAWrxD,EAAMirB,SAASomC,YAEzBrxD,EApPT,IAAe+xB,EAAQ4E,GAgQvB,IAAI92B,EAASkyB,EAAO/6C,UA2qIpB,OAzqIA6oB,EAAOlW,QAAU,WACf,IAAIiX,EAAS1mB,KAQbA,KAAKI,QAAQ,WAEbJ,KAAKsP,IAAI,WAETA,GAAI,IAAUtP,KAAKw/D,OAAOgX,iBAAkBx2E,KAAKq1E,gCACjD/lE,GAAI,IAAU,UAAWtP,KAAKu1E,0BAE1Bv1E,KAAKo3E,UAAYp3E,KAAKo3E,SAASnuE,aACjCjJ,KAAKo3E,SAASnuE,WAAWwT,YAAYzc,KAAKo3E,UAC1Cp3E,KAAKo3E,SAAW,MAIlBv/B,EAAOC,QAAQ93C,KAAKgxC,KAAO,KAEvBhxC,KAAKiqB,KAAOjqB,KAAKiqB,IAAI+e,SACvBhpC,KAAKiqB,IAAI+e,OAAS,MAGhBhpC,KAAKkxC,KAAOlxC,KAAKkxC,IAAIlI,SACvBhpC,KAAKkxC,IAAIlI,OAAS,MAGhBhpC,KAAKslD,QACPtlD,KAAKslD,MAAM71C,UACXzP,KAAK01E,mBAAoB,EACzB11E,KAAKg2E,QAAU,IAGbh2E,KAAKq3E,kBACPr3E,KAAKq3E,gBAAkB,MAGrBr3E,KAAKiqB,MACPjqB,KAAKiqB,IAAM,MAGbolC,GAAoBrvD,MAIpBgoD,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAEZ8P,EAAO2M,EAAO+V,EAAMkrB,cAIpB5tC,GAAQA,EAAKzK,KACfyK,EAAKzK,SAITmtC,EAAW3/C,UAAU2S,QAAQ1P,KAAKC,OAUpC2lB,EAAO4iB,SAAW,WAChB,IACIngC,EADA6hB,EAAMjqB,KAAKiqB,IAEXmnD,EAAiBpxE,KAAKq3E,gBAAkBptD,EAAIhhB,YAAcghB,EAAIhhB,WAAWmY,cAAgB6I,EAAIhhB,WAAWmY,aAAa,mBACrHk2D,EAA8C,aAAnCt3E,KAAKiqB,IAAIjhB,QAAQzR,cAE5B65E,EACFhpE,EAAKpI,KAAKkxC,IAAMjnB,EAAIhhB,WACVquE,IACVlvE,EAAKpI,KAAKkxC,IAAMuL,EAAW3/C,UAAUyrC,SAASxoC,KAAKC,KAAM,QAK3D,IAAImI,EAAQw9B,GAAc1b,GAE1B,GAAIqtD,EAAU,CACZlvE,EAAKpI,KAAKkxC,IAAMjnB,EAChBA,EAAMjqB,KAAKiqB,IAAM,IAASnJ,cAAc,SAExC,MAAO1Y,EAAGwqC,SAAS56C,OACjBiyB,EAAIrjB,YAAYwB,EAAGkT,YAGhBspB,GAASx8B,EAAI,aAChB48B,GAAS58B,EAAI,YAGfA,EAAGxB,YAAYqjB,GACfmnD,EAAiBpxE,KAAKq3E,gBAAkBjvE,EAKxCrL,OAAOkwB,KAAK7kB,GAAInR,SAAQ,SAAUi2B,GAChC,IACEjD,EAAIiD,GAAK9kB,EAAG8kB,GACZ,MAAOtzB,QAuDb,GAjDAqwB,EAAI3I,aAAa,WAAY,MAC7BnZ,EAAMovE,SAAW,MAMbr+B,IAAcF,IAAaI,MAC7BnvB,EAAI3I,aAAa,OAAQ,eACzBnZ,EAAMgrB,KAAO,eAIflJ,EAAI1I,gBAAgB,SACpB0I,EAAI1I,gBAAgB,UAEhB,UAAWpZ,UACNA,EAAM2f,MAGX,WAAY3f,UACPA,EAAM4f,OAGfhrB,OAAOsnC,oBAAoBl8B,GAAOlR,SAAQ,SAAUuR,GAI5C8uE,GAAqB,UAAT9uE,GAChBJ,EAAGkZ,aAAa9Y,EAAML,EAAMK,IAG1B8uE,GACFrtD,EAAI3I,aAAa9Y,EAAML,EAAMK,OAMjCyhB,EAAIwnD,SAAWxnD,EAAI1oB,GACnB0oB,EAAI1oB,IAAM,aACV0oB,EAAIwZ,UAAY,WAEhBxZ,EAAI+e,OAAS5gC,EAAG4gC,OAAShpC,KAEzBA,KAAKglC,SAAS,eAI4B,IAAtC,IAASwyC,yBAAmC,CAC9Cx3E,KAAKo3E,SAAW,GAAmB,yBACnC,IAAIK,EAAkBtvC,GAAE,wBACpBuvC,EAAOvvC,GAAE,QACbuvC,EAAK13D,aAAahgB,KAAKo3E,SAAUK,EAAkBA,EAAgBl8D,YAAcm8D,EAAKp8D,YAGxFtb,KAAK23E,OAAQ,EACb33E,KAAKy2E,QAAS,EAEdz2E,KAAK8nB,MAAM9nB,KAAK+wC,SAASjpB,OACzB9nB,KAAK+nB,OAAO/nB,KAAK+wC,SAAShpB,QAC1B/nB,KAAKs9C,KAAKt9C,KAAK+wC,SAASuM,MACxBt9C,KAAK43E,MAAM53E,KAAK+wC,SAAS6mC,OACzB53E,KAAK63E,YAAY73E,KAAK+wC,SAAS8mC,aAE/B73E,KAAKukD,YAAYvkD,KAAK+wC,SAASwT,aAAevkD,KAAK+wC,SAAS+mC,aAK5D,IAFA,IAAIC,EAAQ9tD,EAAIjI,qBAAqB,KAE5BjqB,EAAI,EAAGA,EAAIggF,EAAM//E,OAAQD,IAAK,CACrC,IAAIigF,EAASD,EAAMx5D,KAAKxmB,GACxBitC,GAASgzC,EAAQ,cACjBA,EAAO12D,aAAa,SAAU,UAsBhC,OAjBA2I,EAAIulD,kBAAoBvlD,EAAI2nD,aAExB3nD,EAAIhhB,aAAemoE,GACrBnnD,EAAIhhB,WAAW+W,aAAa5X,EAAI6hB,GAQlC0a,GAAU1a,EAAK7hB,GACfpI,KAAKmxC,UAAU5P,QAAQtX,GAGvBjqB,KAAKkxC,IAAI5vB,aAAa,OAAQthB,KAAKgnE,WACnChnE,KAAKkxC,IAAM9oC,EACJA,GAmBTud,EAAO4+B,YAAc,SAAqB/sD,GACxC,IAAKA,EACH,OAAOwI,KAAKi4E,SAAS,eAGT,cAAVzgF,GAAmC,oBAAVA,EAK7BwI,KAAKk4E,UAAU,iBAAkB1gF,GAJ/B,GAAIyT,KAAK,gEAAuEzT,EAAQ,MAmB5FmuB,EAAOmC,MAAQ,SAAetwB,GAC5B,OAAOwI,KAAK60C,UAAU,QAASr9C,IAcjCmuB,EAAOoC,OAAS,SAAgBvwB,GAC9B,OAAOwI,KAAK60C,UAAU,SAAUr9C,IAkBlCmuB,EAAOkvB,UAAY,SAAmBsjC,EAAY3gF,GAChD,IAAI4gF,EAAgBD,EAAa,IAEjC,QAAc7+E,IAAV9B,EACF,OAAOwI,KAAKo4E,IAAkB,EAGhC,GAAc,KAAV5gF,GAA0B,SAAVA,EAIlB,OAFAwI,KAAKo4E,QAAiB9+E,OACtB0G,KAAK02E,iBAIP,IAAI2B,EAAYnxD,WAAW1vB,GAEvBmtB,MAAM0zD,GACR,GAAI3wE,MAAM,mBAAsBlQ,EAAQ,sBAAyB2gF,IAInEn4E,KAAKo4E,GAAiBC,EACtBr4E,KAAK02E,mBAkBP/wD,EAAOiyD,MAAQ,SAAetc,GAC5B,QAAahiE,IAATgiE,EACF,QAASt7D,KAAKy2E,OAGhBz2E,KAAKy2E,SAAWnb,EAEZttB,GAAUhuC,OACZA,KAAKsP,IAAI,cAAetP,KAAK02E,gBAG3Bpb,GACFt7D,KAAKglC,SAAS,aACdhlC,KAAKs9C,MAAK,GACVnP,IAAmB,WACjBnuC,KAAKoP,GAAG,cAAepP,KAAK02E,oBAG9B12E,KAAKmlC,YAAY,aAGnBnlC,KAAK02E,kBAkBP/wD,EAAO23B,KAAO,SAAcge,GAC1B,QAAahiE,IAATgiE,EACF,QAASt7D,KAAK23E,MAGhB33E,KAAK23E,QAAUrc,EAEXA,GACFt7D,KAAKglC,SAAS,YACdhlC,KAAK43E,OAAM,IAEX53E,KAAKmlC,YAAY,aAyBrBxf,EAAOkyD,YAAc,SAAqBS,GACxC,QAAch/E,IAAVg/E,EACF,OAAOt4E,KAAKu4E,aAId,IAAK,aAAaj0E,KAAKg0E,GACrB,MAAM,IAAI3/E,MAAM,kGAGlBqH,KAAKu4E,aAAeD,EAGpBt4E,KAAK43E,OAAM,GACX53E,KAAK02E,kBAUP/wD,EAAO+wD,eAAiB,WACtB,IAA0C,IAAtC,IAASc,yBAAb,CAoBA,IAAI1vD,EACAC,EACA8vD,EACAW,EAIFX,OAFwBv+E,IAAtB0G,KAAKu4E,cAAoD,SAAtBv4E,KAAKu4E,aAE5Bv4E,KAAKu4E,aACVv4E,KAAKy4E,aAAe,EAEfz4E,KAAKy4E,aAAe,IAAMz4E,KAAK04E,cAG/B,OAIhB,IAAIC,EAAad,EAAY7gF,MAAM,KAC/B4hF,EAAkBD,EAAW,GAAKA,EAAW,GAI/C7wD,OAFkBxuB,IAAhB0G,KAAK64E,OAEC74E,KAAK64E,YACav/E,IAAjB0G,KAAK84E,QAEN94E,KAAK84E,QAAUF,EAGf54E,KAAKy4E,cAAgB,IAK7B1wD,OAFmBzuB,IAAjB0G,KAAK84E,QAEE94E,KAAK84E,QAGLhxD,EAAQ8wD,EAKjBJ,EADE,aAAal0E,KAAKtE,KAAKuB,MACf,cAAgBvB,KAAKuB,KAErBvB,KAAKuB,KAAO,cAIxBvB,KAAKglC,SAASwzC,GACdjvC,GAAevpC,KAAKo3E,SAAU,YAAcoB,EAAU,sBAAwB1wD,EAAQ,wBAA0BC,EAAS,0BAA4BywD,EAAU,sCAA0D,IAAlBI,EAAwB,yBApE/N,CACE,IAAIG,EAAgC,kBAAhB/4E,KAAK64E,OAAsB74E,KAAK64E,OAAS74E,KAAK+wC,SAASjpB,MAEvEkxD,EAAkC,kBAAjBh5E,KAAK84E,QAAuB94E,KAAK84E,QAAU94E,KAAK+wC,SAAShpB,OAE1EkxD,EAASj5E,KAAKslD,OAAStlD,KAAKslD,MAAMl9C,KAElC6wE,IACEF,GAAU,IACZE,EAAOnxD,MAAQixD,GAGbC,GAAW,IACbC,EAAOlxD,OAASixD,MAuExBrzD,EAAOmsC,UAAY,SAAmBD,EAAU9qD,GAC9C,IAAIyhB,EAASxoB,KAGTA,KAAKslD,OACPtlD,KAAKk5E,cAGP,IAAIC,EAAgB/oC,GAAYyhB,GAC5BunB,EAAgBvnB,EAAS6iB,OAAO,GAAGn9E,cAAgBs6D,EAASv6D,MAAM,GAEhD,UAAlB6hF,GAA6Bn5E,KAAKiqB,MACpC,GAAKoiC,QAAQ,SAAS8jB,oBAAoBnwE,KAAKiqB,KAC/CjqB,KAAKiqB,IAAI+e,OAAS,KAClBhpC,KAAKiqB,IAAM,MAGbjqB,KAAKq5E,UAAYF,EAEjBn5E,KAAKo0C,UAAW,EAGhB,IAAIiiC,EAAsC,kBAApBr2E,KAAKq2E,YAAkCr2E,KAAKq2E,WAE9DiD,EAAc,CAChBvyE,OAAQA,EACRsvE,SAAUA,EACV,uBAA0Br2E,KAAK+wC,SAAS8X,uBACxC,SAAY7oD,KAAKuB,KACjB,OAAUvB,KAAKuB,KAAO,IAAM63E,EAAgB,OAC5C,YAAep5E,KAAK+wC,SAAS4a,YAC7B,QAAW3rD,KAAK+wC,SAAS2gC,QACzB,KAAQ1xE,KAAK+wC,SAASwoC,KACtB,MAASv5E,KAAK+wC,SAAS8d,MACvB,OAAU7uD,KAAK8yD,SACf,SAAY9yD,KAAK2rB,WACjB,eAAkB3rB,KAAKq3E,kBAAmB,EAC1C,SAAUr3E,KAAK+wC,SAAS,UACxB,oBAAuB/wC,KAAK+wC,SAASyoC,sBACrC,gBAAmBx5E,KAAK+wC,SAAS2+B,gBACjC,QAAW1vE,KAAK+wC,SAASya,SAE3BxD,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAChBqvE,EAAY78C,EAAMkrB,YAAcn/B,EAAOiU,EAAMmrB,gBAE/C,GAAO0xB,EAAat5E,KAAK+wC,SAASooC,IAClC,GAAOG,EAAat5E,KAAK+wC,SAASqoC,IAClC,GAAOE,EAAat5E,KAAK+wC,SAAS8gB,EAASt6D,gBAEvCyI,KAAKiqB,MACPqvD,EAAYrvD,IAAMjqB,KAAKiqB,KAGrBljB,GAAUA,EAAOkQ,MAAQjX,KAAKqxD,OAAOp6C,KAAOjX,KAAKqxD,OAAOhL,YAAc,IACxEizB,EAAY54E,UAAYV,KAAKqxD,OAAOhL,aAItC,IAAIozB,EAAY,GAAKptB,QAAQwF,GAE7B,IAAK4nB,EACH,MAAM,IAAI9gF,MAAM,kBAAoBwgF,EAAgB,cAAgBA,EAAgB,wDAGtFn5E,KAAKslD,MAAQ,IAAIm0B,EAAUH,GAE3Bt5E,KAAKslD,MAAM5U,MAAM9kC,GAAK5L,KAAMA,KAAK05E,mBAAmB,GACpDn9B,GAAmBJ,iBAAiBn8C,KAAK25E,iBAAmB,GAAI35E,KAAKslD,OAErE4uB,GAAsBj9E,SAAQ,SAAUuZ,GACtCgY,EAAOpZ,GAAGoZ,EAAO88B,MAAO90C,EAAOgY,EAAO,aAAe4nB,GAAY5/B,GAAS,SAE5EzT,OAAOkwB,KAAKknD,IAAmBl9E,SAAQ,SAAUuZ,GAC/CgY,EAAOpZ,GAAGoZ,EAAO88B,MAAO90C,GAAO,SAAUopE,GACH,IAAhCpxD,EAAO88B,MAAMgiB,gBAAwB9+C,EAAO88B,MAAMu0B,UACpDrxD,EAAOmtD,iBAAiBh+E,KAAK,CAC3BY,SAAUiwB,EAAO,aAAe2rD,GAAkB3jE,GAAS,KAAK5E,KAAK4c,GACrEhY,MAAOopE,IAMXpxD,EAAO,aAAe2rD,GAAkB3jE,GAAS,KAAKopE,SAG1D55E,KAAKoP,GAAGpP,KAAKslD,MAAO,YAAatlD,KAAK85E,sBACtC95E,KAAKoP,GAAGpP,KAAKslD,MAAO,YAAatlD,KAAK+5E,sBACtC/5E,KAAKoP,GAAGpP,KAAKslD,MAAO,UAAWtlD,KAAKg6E,oBACpCh6E,KAAKoP,GAAGpP,KAAKslD,MAAO,QAAStlD,KAAKi6E,kBAClCj6E,KAAKoP,GAAGpP,KAAKslD,MAAO,UAAWtlD,KAAKk6E,oBACpCl6E,KAAKoP,GAAGpP,KAAKslD,MAAO,OAAQtlD,KAAKm6E,iBACjCn6E,KAAKoP,GAAGpP,KAAKslD,MAAO,YAAatlD,KAAKo6E,sBACtCp6E,KAAKoP,GAAGpP,KAAKslD,MAAO,QAAStlD,KAAKq6E,kBAClCr6E,KAAKoP,GAAGpP,KAAKslD,MAAO,iBAAkBtlD,KAAKs6E,2BAC3Ct6E,KAAKoP,GAAGpP,KAAKslD,MAAO,mBAAoBtlD,KAAKu6E,6BAC7Cv6E,KAAKoP,GAAGpP,KAAKslD,MAAO,kBAAmBtlD,KAAKw6E,4BAC5Cx6E,KAAKoP,GAAGpP,KAAKslD,MAAO,wBAAyBtlD,KAAKy6E,kCAClDz6E,KAAKoP,GAAGpP,KAAKslD,MAAO,wBAAyBtlD,KAAK06E,kCAClD16E,KAAKoP,GAAGpP,KAAKslD,MAAO,QAAStlD,KAAK26E,kBAClC36E,KAAKoP,GAAGpP,KAAKslD,MAAO,iBAAkBtlD,KAAK02E,gBAC3C12E,KAAKoP,GAAGpP,KAAKslD,MAAO,eAAgBtlD,KAAK46E,yBACzC56E,KAAKoP,GAAGpP,KAAKslD,MAAO,WAAYtlD,KAAK66E,qBACrC76E,KAAKoP,GAAGpP,KAAKslD,MAAO,aAActlD,KAAK86E,uBACvC96E,KAAK+6E,oBAAoB/6E,KAAKi4E,SAAS,aAEnCj4E,KAAK49C,aAAe59C,KAAK+6E,uBAC3B/6E,KAAKg7E,4BAKHh7E,KAAKslD,MAAMl9C,KAAKa,aAAejJ,KAAKoI,MAA2B,UAAlB+wE,GAA8Bn5E,KAAKiqB,KAClF0a,GAAU3kC,KAAKslD,MAAMl9C,KAAMpI,KAAKoI,MAI9BpI,KAAKiqB,MACPjqB,KAAKiqB,IAAI+e,OAAS,KAClBhpC,KAAKiqB,IAAM,OAUftE,EAAOuzD,YAAc,WACnB,IAAI9hC,EAASp3C,KAGbgoD,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAChBmtC,EAAO3a,EAAMmrB,aAAexQ,EAAO3a,EAAMkrB,iBAE3C3nD,KAAK25E,gBAAkBp9B,GAAmBV,iBAAiB77C,KAAKslD,OAChEtlD,KAAKo0C,UAAW,EAChBp0C,KAAKslD,MAAM71C,UACXzP,KAAKslD,OAAQ,EAETtlD,KAAK01E,oBACP11E,KAAKg2E,QAAU,GACfh2E,KAAKI,QAAQ,iBAGfJ,KAAK01E,mBAAoB,GAe3B/vD,EAAOm2B,KAAO,SAAcm/B,GAK1B,YAJe3hF,IAAX2hF,GACF,GAAIhwE,KAAK,sJAGJjL,KAAKslD,OAyBd3/B,EAAOq1D,0BAA4B,WAEjCh7E,KAAKk7E,+BAKLl7E,KAAKoP,GAAGpP,KAAKslD,MAAO,UAAWtlD,KAAKm7E,kBACpCn7E,KAAKoP,GAAGpP,KAAKslD,MAAO,WAAYtlD,KAAKo7E,wBAIrCp7E,KAAKoP,GAAGpP,KAAKslD,MAAO,aAActlD,KAAKq7E,uBACvCr7E,KAAKoP,GAAGpP,KAAKslD,MAAO,YAAatlD,KAAKs7E,sBACtCt7E,KAAKoP,GAAGpP,KAAKslD,MAAO,WAAYtlD,KAAKu7E,qBAGrCv7E,KAAKoP,GAAGpP,KAAKslD,MAAO,MAAOtlD,KAAKw7E,iBAUlC71D,EAAOu1D,6BAA+B,WAGpCl7E,KAAKsP,IAAItP,KAAKslD,MAAO,MAAOtlD,KAAKw7E,gBACjCx7E,KAAKsP,IAAItP,KAAKslD,MAAO,aAActlD,KAAKq7E,uBACxCr7E,KAAKsP,IAAItP,KAAKslD,MAAO,YAAatlD,KAAKs7E,sBACvCt7E,KAAKsP,IAAItP,KAAKslD,MAAO,WAAYtlD,KAAKu7E,qBACtCv7E,KAAKsP,IAAItP,KAAKslD,MAAO,UAAWtlD,KAAKm7E,kBACrCn7E,KAAKsP,IAAItP,KAAKslD,MAAO,WAAYtlD,KAAKo7E,yBASxCz1D,EAAO+zD,iBAAmB,WACxB15E,KAAKs0C,eAEDt0C,KAAKqxD,OAAOtC,QACd/uD,KAAKk4E,UAAU,YAAal4E,KAAKqxD,OAAOtC,QAI1C/uD,KAAK46E,0BAEL56E,KAAKs6E,6BAcP30D,EAAOm0D,qBAAuB,WAE5B95E,KAAKmlC,YAAY,aACjBnlC,KAAKmlC,YAAY,eAEjBnlC,KAAK0H,MAAM,MAEX1H,KAAKs6E,4BAIAt6E,KAAKw9C,UAWRx9C,KAAKqtE,YAAW,GAChBrtE,KAAKI,QAAQ,eALbJ,KAAKI,QAAQ,aACbJ,KAAKI,QAAQ,cASfJ,KAAKy7E,gBAAgBz7E,KAAKq2E,aAU5B1wD,EAAO81D,gBAAkB,SAAyB97E,GAChD,IAAI2qD,EAAStqD,KAEb,GAAKA,KAAKslD,OAAyB,kBAAT3lD,EAA1B,CAIA,IAqBI+7E,EArBA7sB,EAAQ,WACV,IAAI8sB,EAAkBrxB,EAAOuE,QAE7BvE,EAAOuE,OAAM,GAEb,IAAI+sB,EAAe,WACjBtxB,EAAOuE,MAAM8sB,IAIfrxB,EAAO8rB,qBAAqBz+E,KAAKikF,GAEjC,IAAIC,EAAevxB,EAAO3Z,OAE1B,GAAK2K,GAAUugC,GAIf,OAAOA,EAAa,SAASD,IAkB/B,GAZa,QAATj8E,IAAmC,IAAjBK,KAAK6uD,SACzB6sB,EAAU17E,KAAK2wC,OAEX2K,GAAUogC,KACZA,EAAUA,EAAQ,SAAS7sB,KAG7B6sB,EADkB,UAAT/7E,IAAqC,IAAjBK,KAAK6uD,QACxBA,IAEA7uD,KAAK2wC,OAGZ2K,GAAUogC,GAIf,OAAOA,EAAQngC,MAAK,WAClB+O,EAAOlqD,QAAQ,CACbT,KAAM,mBACN02E,SAAU12E,OAEX,UAAS,SAAU/F,GACpB0wD,EAAOlqD,QAAQ,CACbT,KAAM,mBACN02E,SAAU12E,SAiBhBgmB,EAAOm2D,oBAAsB,SAA6B7vB,QACzC,IAAXA,IACFA,EAAS,IAGX,IAAIh1C,EAAMg1C,EACNtsD,EAAO,GAEQ,kBAARsX,IACTA,EAAMg1C,EAAOh1C,IACbtX,EAAOssD,EAAOtsD,MAKhBK,KAAKqxD,OAAOtqD,OAAS/G,KAAKqxD,OAAOtqD,QAAU,GAC3C/G,KAAKqxD,OAAOvuB,QAAU9iC,KAAKqxD,OAAOvuB,SAAW,GAEzC7rB,IAAQtX,IACVA,EAAOyxD,GAAapxD,KAAMiX,IAI5BjX,KAAKqxD,OAAOtqD,OAASypC,GAAa,GAAIyb,EAAQ,CAC5Ch1C,IAAKA,EACLtX,KAAMA,IASR,IAPA,IAAI2xD,EAAkBtxD,KAAKqxD,OAAOvuB,QAAQrR,QAAO,SAAUnO,GACzD,OAAOA,EAAErM,KAAOqM,EAAErM,MAAQA,KAExB8kE,EAAkB,GAClBC,EAAYh8E,KAAKooC,GAAG,UACpB6zC,EAAoB,GAEflkF,EAAI,EAAGA,EAAIikF,EAAUhkF,OAAQD,IAAK,CACzC,IAAImkF,EAAYv2C,GAAcq2C,EAAUjkF,IACxCgkF,EAAgBpkF,KAAKukF,GAEjBA,EAAUjlE,KAAOilE,EAAUjlE,MAAQA,GACrCglE,EAAkBtkF,KAAKukF,EAAUjlE,KAMjCglE,EAAkBjkF,SAAWs5D,EAAgBt5D,OAC/CgI,KAAKqxD,OAAOvuB,QAAUi5C,EAEZzqB,EAAgBt5D,SAC1BgI,KAAKqxD,OAAOvuB,QAAU,CAAC9iC,KAAKqxD,OAAOtqD,SAIrC/G,KAAKqxD,OAAOp6C,IAAMA,GAwCpB0O,EAAOo0D,qBAAuB,SAA8BvpE,GAC1D,IAAIg6C,EAASxqD,KAIb,IAAKA,KAAKk2E,aAAc,CACtB,IAAIiG,EAAqB,SAA4BllE,GACnD,OAAOuzC,EAAOsxB,oBAAoB7kE,IAGhCmlE,EAAYp8E,KAAKq8E,gBAAgBplE,IACjCqlE,EAAW9rE,EAAMyG,IAEjBmlE,IAAc,SAAS93E,KAAK83E,IAAc,SAAS93E,KAAKg4E,MAGrDt8E,KAAKu8E,aAAev8E,KAAKu8E,YAAYzgC,OAASwgC,GAAYt8E,KAAKu8E,YAAYvzC,SAAWozC,KACzFD,EAAqB,cAMzBA,EAAmBG,GAId9rE,EAAMyG,KACTjX,KAAKslD,MAAMzY,IAAI,CAAC,YAAa,cAAc,SAAUjzC,GAInD,GAAe,cAAXA,EAAE+F,KAAN,CAIA,IAAI68E,EAAUhyB,EAAOiyB,QAAQ,cAE7BjyB,EAAO+xB,YAAYzgC,KAAO0gC,EAE1BhyB,EAAOsxB,oBAAoBU,OAKjCx8E,KAAKu8E,YAAc,CACjBvzC,OAAQhpC,KAAKq8E,gBAAgBplE,IAC7B6kC,KAAMtrC,EAAMyG,KAEdjX,KAAKI,QAAQ,CACX6W,IAAKzG,EAAMyG,IACXtX,KAAM,eAiBVgmB,EAAO0nD,WAAa,SAAoBqP,GACtC,QAAgBpjF,IAAZojF,EAEF,OAAO18E,KAAKkoD,YAGVw0B,IAAY18E,KAAKkoD,cAIrBloD,KAAKkoD,YAAcw0B,EAEf18E,KAAKkoD,aACPloD,KAAKglC,SAAS,mBACdhlC,KAAKI,QAAQ,cAEbJ,KAAKmlC,YAAY,qBAarBxf,EAAOw0D,gBAAkB,WACvBn6E,KAAKmlC,YAAY,aACjBnlC,KAAKmlC,YAAY,cACjBnlC,KAAKglC,SAAS,eAEdhlC,KAAKqtE,YAAW,GAShBrtE,KAAKI,QAAQ,SAefulB,EAAOm1D,sBAAwB,WACzB96E,KAAKslD,MAAMgiB,eAAiB,GAAsC,IAAjCtnE,KAAKqxD,OAAOsrB,mBAC/C38E,KAAK21E,iBAAiB1+E,SAAQ,SAAU2lF,GACtC,OAAOA,EAAOrkF,SAASqkF,EAAOpsE,UAEhCxQ,KAAK21E,iBAAmB,IAG1B31E,KAAKqxD,OAAOsrB,iBAAmB38E,KAAKslD,MAAMgiB,eAQ1CtnE,KAAKI,QAAQ,eAWfulB,EAAOq0D,mBAAqB,WAC1B,IAAI9uB,EAASlrD,KAEbA,KAAKglC,SAAS,eAQdhlC,KAAKI,QAAQ,WAGb,IAAIy8E,EAAkB78E,KAAKqmD,cAEvBy2B,EAAqB,SAASA,IAC5BD,IAAoB3xB,EAAO7E,gBAC7B6E,EAAO/lB,YAAY,eAEnB+lB,EAAO57C,IAAI,aAAcwtE,KAI7B98E,KAAKoP,GAAG,aAAc0tE,IAYxBn3D,EAAOo3D,mBAAqB,WAC1B/8E,KAAKmlC,YAAY,eAQjBnlC,KAAKI,QAAQ,YAWfulB,EAAOq3D,0BAA4B,WACjCh9E,KAAKmlC,YAAY,eASjBnlC,KAAKI,QAAQ,mBAWfulB,EAAOs3D,mBAAqB,WAC1Bj9E,KAAKmlC,YAAY,eAQjBnlC,KAAKI,QAAQ,YAWfulB,EAAOu0D,mBAAqB,WAC1Bl6E,KAAKglC,SAAS,eAQdhlC,KAAKI,QAAQ,YAWfulB,EAAOu3D,kBAAoB,WACzBl9E,KAAKmlC,YAAY,eACjBnlC,KAAKmlC,YAAY,aAQjBnlC,KAAKI,QAAQ,WAafulB,EAAOy0D,qBAAuB,WAGxBp6E,KAAK+wC,SAASosC,YAChB,GAAIlyE,KAAK,0EACTjL,KAAKqmD,YAAYrmD,KAAK+wC,SAASosC,YAGjCn9E,KAAKglC,SAAS,mBAWdhlC,KAAKI,QAAQ,cAWfulB,EAAO00D,iBAAmB,WACxBr6E,KAAKmlC,YAAY,eACjBnlC,KAAKglC,SAAS,cAQdhlC,KAAKI,QAAQ,UAWfulB,EAAOs0D,iBAAmB,WACxBj6E,KAAKglC,SAAS,aAEVhlC,KAAK+wC,SAASwoC,MAChBv5E,KAAKqmD,YAAY,GACjBrmD,KAAK2wC,QACK3wC,KAAKw9C,UACfx9C,KAAK09C,QAUP19C,KAAKI,QAAQ,UAUfulB,EAAO20D,0BAA4B,WACjCt6E,KAAKinB,SAASjnB,KAAKi4E,SAAS,cAa9BtyD,EAAOw1D,iBAAmB,SAA0B3qE,GAC7Cu3B,GAAkBv3B,IAMlBxQ,KAAKi2E,YAINj2E,KAAKw9C,SACPhC,GAAex7C,KAAK2wC,QAEpB3wC,KAAK09C,UAcT/3B,EAAOy1D,uBAAyB,SAAgC5qE,GAC9D,GAAKxQ,KAAKi2E,UAAV,CAMA,IAAImH,EAAe3lF,MAAMqF,UAAUk3C,KAAKj0C,KAAKC,KAAKooC,GAAG,wCAAwC,SAAUhgC,GACrG,OAAOA,EAAG28B,SAASv0B,EAAMlH,WAGtB8zE,QAQmB9jF,IAAlB0G,KAAK+wC,eAAwDz3C,IAA9B0G,KAAK+wC,SAASssC,kBAAuE/jF,IAA1C0G,KAAK+wC,SAASssC,YAAYC,cAAuE,IAA1Ct9E,KAAK+wC,SAASssC,YAAYC,mBACvIhkF,IAAlB0G,KAAK+wC,eAAwDz3C,IAA9B0G,KAAK+wC,SAASssC,aAA8E,oBAA1Cr9E,KAAK+wC,SAASssC,YAAYC,YAC7Gt9E,KAAK+wC,SAASssC,YAAYC,YAAYv9E,KAAKC,KAAMwQ,GACxCxQ,KAAK0/D,eACd1/D,KAAK2/D,iBAEL3/D,KAAK4/D,uBAcbj6C,EAAO61D,eAAiB,WACtBx7E,KAAK+2E,YAAY/2E,KAAK+2E,eAUxBpxD,EAAO01D,sBAAwB,WAC7Br7E,KAAKu9E,cAAgBv9E,KAAK+2E,cAU5BpxD,EAAO21D,qBAAuB,WACxBt7E,KAAKu9E,eACPv9E,KAAKu2C,sBAeT5wB,EAAO41D,oBAAsB,SAA6B/qE,GAExDA,EAAMw6B,kBAWRrlB,EAAOsxD,kBAAoB,WACzBj3E,KAAKu2C,sBAOP5wB,EAAO63D,uBAAyB,WAC1Bx9E,KAAK0/D,eACP1/D,KAAKglC,SAAS,kBAEdhlC,KAAKmlC,YAAY,mBAQrBxf,EAAO2vD,0BAA4B,SAAmC17E,GACpE,IAAI6jF,EAAe7jF,EAAE0P,OAAO0/B,OAG5B,IAAIy0C,GAAgBA,IAAiBz9E,KAArC,CAIA,IAAIoI,EAAKpI,KAAKoI,KACVs1E,EAAO,IAAS19E,KAAKw/D,OAAOme,qBAAuBv1E,GAElDs1E,GAAQt1E,EAAGw1E,QACdF,EAAOt1E,EAAGw1E,QAAQ,IAAM59E,KAAKw/D,OAAOqe,aAC1BH,GAAQt1E,EAAG01E,oBACrBJ,EAAOt1E,EAAG01E,kBAAkB,IAAM99E,KAAKw/D,OAAOqe,aAGhD79E,KAAK0/D,aAAage,KAiBpB/3D,EAAO40D,4BAA8B,SAAqC/pE,EAAO3V,GAC3EA,IACEA,EAAKw3E,qBACPryE,KAAKqlC,YAAY,qBAGnBrlC,KAAK0/D,aAAa7kE,EAAK6kE,gBAI3B/5C,EAAO60D,2BAA6B,SAAoChqE,EAAO3X,GAC7EmH,KAAKI,QAAQ,kBAAmBvH,IAOlC8sB,EAAOo4D,6BAA+B,WAChC/9E,KAAKo/D,uBACPp/D,KAAKglC,SAAS,0BAEdhlC,KAAKmlC,YAAY,2BAcrBxf,EAAO80D,iCAAmC,SAA0CjqE,GAClFxQ,KAAKo/D,sBAAqB,IAa5Bz5C,EAAO+0D,iCAAmC,SAA0ClqE,GAClFxQ,KAAKo/D,sBAAqB,IAU5Bz5C,EAAOg1D,iBAAmB,WACxB,IAAIjzE,EAAQ1H,KAAKslD,MAAM59C,QACvB1H,KAAK0H,MAAMA,IAWbie,EAAOk1D,oBAAsB,WAC3B,IAAIhgF,EAAO,KAEP+O,UAAU5R,OAAS,IACrB6C,EAAO+O,UAAU,IAUnB5J,KAAKI,QAAQ,WAAYvF,IAU3B8qB,EAAO4zC,SAAW,WAChB,OAAOv5D,KAAKqxD,QAYd1rC,EAAOowD,YAAc,WACnB/1E,KAAKqxD,OAAS,CAKZhL,YAAa,EACb23B,SAAU,EACVC,kBAAmBj+E,KAAK+wC,SAASktC,kBACjCh3D,SAAUzC,IACVs8C,WAAY,EACZ6b,iBAAkB38E,KAAKk+E,sBACvB/yD,MAAO,KACPlU,IAAK,GACLlQ,OAAQ,GACR+7B,QAAS,GACTisB,OAAQ,IAgBZppC,EAAOuyD,UAAY,SAAmB59E,EAAQg0D,GAE5CtuD,KAAK0wC,OAAM,WACT,GAAIp2C,KAAU00D,GACZ,OAAO,GAAIhvD,KAAK42E,YAAa52E,KAAKslD,MAAOhrD,EAAQg0D,GAC5C,GAAIh0D,KAAU60D,GACnB,OAAOZ,GAAQvuD,KAAK42E,YAAa52E,KAAKslD,MAAOhrD,EAAQg0D,GAGvD,IACMtuD,KAAKslD,OACPtlD,KAAKslD,MAAMhrD,GAAQg0D,GAErB,MAAO10D,GAEP,MADA,GAAIA,GACEA,MAEP,IAeL+rB,EAAOsyD,SAAW,SAAkB39E,GAClC,GAAK0F,KAAKslD,OAAUtlD,KAAKslD,MAAMlR,SAA/B,CAIA,GAAI95C,KAAUs0D,GACZ,OAAO,GAAI5uD,KAAK42E,YAAa52E,KAAKslD,MAAOhrD,GACpC,GAAIA,KAAU60D,GACnB,OAAOZ,GAAQvuD,KAAK42E,YAAa52E,KAAKslD,MAAOhrD,GAM/C,IACE,OAAO0F,KAAKslD,MAAMhrD,KAClB,MAAOV,GAEP,QAA2BN,IAAvB0G,KAAKslD,MAAMhrD,GAEb,MADA,GAAI,aAAeA,EAAS,2BAA6B0F,KAAKq5E,UAAY,wBAAyBz/E,GAC7FA,EAIR,GAAe,cAAXA,EAAEqQ,KAGJ,MAFA,GAAI,aAAe3P,EAAS,mBAAqB0F,KAAKq5E,UAAY,gCAAiCz/E,GACnGoG,KAAKslD,MAAMlR,UAAW,EAChBx6C,EAKR,MADA,GAAIA,GACEA,KAeV+rB,EAAOgrB,KAAO,WACZ,IAAIwtC,EAASn+E,KAETurD,EAAevrD,KAAK+wC,SAASya,SAAW,IAASA,QAErD,OAAID,EACK,IAAIA,GAAa,SAAU6yB,GAChCD,EAAOE,MAAMD,MAIVp+E,KAAKq+E,SAad14D,EAAO04D,MAAQ,SAAe9lF,GAC5B,IAAI+lF,EAASt+E,UAEI,IAAbzH,IACFA,EAAWijD,IAGbx7C,KAAKm2E,eAAex+E,KAAKY,GACzB,IAAIgmF,EAAaj7C,SAAStjC,KAAKk2E,eAAiBl2E,KAAKiX,OAASjX,KAAKmvE,eASnE,GAPInvE,KAAKw+E,cACPx+E,KAAKsP,IAAI,CAAC,QAAS,aAActP,KAAKw+E,aACtCx+E,KAAKw+E,YAAc,OAKhBx+E,KAAKo0C,WAAamqC,EAYrB,OAXAv+E,KAAKw+E,YAAc,SAAU5kF,GAC3B0kF,EAAOD,SAGTr+E,KAAK2sC,IAAI,CAAC,QAAS,aAAc3sC,KAAKw+E,kBAGjCD,IAAe5kC,KAAiBD,IACnC15C,KAAKqnD,QAOT,IAAI9iB,EAAMvkC,KAAKi4E,SAAS,QAEZ,OAAR1zC,EACFvkC,KAAKy+E,0BAELz+E,KAAK0+E,kBAAkBn6C,IAU3B5e,EAAO84D,wBAA0B,WAC/B,IAAIE,EAAQ3+E,KAAKo2E,qBAAqB9+E,MAAM,GAC5C0I,KAAKo2E,qBAAuB,GAC5BuI,EAAM1nF,SAAQ,SAAU2nF,GACtBA,QAcJj5D,EAAO+4D,kBAAoB,SAA2Bn6C,GACpD,IAAI/0B,EAAYxP,KAAKm2E,eAAe7+E,MAAM,GAC1C0I,KAAKm2E,eAAiB,GAEtBn2E,KAAKo2E,qBAAuB,GAC5B5mE,EAAUvY,SAAQ,SAAUwgE,GAC1BA,EAAGlzB,OAWP5e,EAAO+3B,MAAQ,WACb19C,KAAKk4E,UAAU,UAWjBvyD,EAAO63B,OAAS,WAEd,OAAmC,IAA5Bx9C,KAAKi4E,SAAS,WAYvBtyD,EAAOukC,OAAS,WACd,OAAOlqD,KAAKi4E,SAAS,WAAa79B,GAAiB,EAAG,IAexDz0B,EAAO2zC,UAAY,SAAmBulB,GACpC,GAA2B,qBAAhBA,EACT,OAAO7+E,KAAKu2E,WAGdv2E,KAAKu2E,aAAesI,EAEhBA,EACF7+E,KAAKglC,SAAS,iBAEdhlC,KAAKmlC,YAAY,kBAcrBxf,EAAO0gC,YAAc,SAAqBr5C,GACxC,MAAuB,qBAAZA,GACLA,EAAU,IACZA,EAAU,GAGPhN,KAAKo0C,WAAYp0C,KAAKk2E,cAAiBl2E,KAAKslD,OAAUtlD,KAAKslD,MAAMlR,UAOtEp0C,KAAKk4E,UAAU,iBAAkBlrE,QACjChN,KAAKqxD,OAAO2sB,SAAW,KAPrBh+E,KAAKqxD,OAAO2sB,SAAWhxE,EACvBhN,KAAKsP,IAAI,UAAWtP,KAAK8+E,qBACzB9+E,KAAK2sC,IAAI,UAAW3sC,KAAK8+E,mBAe7B9+E,KAAKqxD,OAAOhL,YAAcrmD,KAAKi4E,SAAS,gBAAkB,EACnDj4E,KAAKqxD,OAAOhL,cASrB1gC,EAAOm5D,eAAiB,WACtB9+E,KAAKqmD,YAAYrmD,KAAKqxD,OAAO2sB,WAoB/Br4D,EAAOsB,SAAW,SAAkBja,GAClC,QAAgB1T,IAAZ0T,EAEF,YAAgC1T,IAAzB0G,KAAKqxD,OAAOpqC,SAAyBjnB,KAAKqxD,OAAOpqC,SAAWzC,IAGrExX,EAAUka,WAAWla,GAEjBA,EAAU,IACZA,EAAU3K,KAGR2K,IAAYhN,KAAKqxD,OAAOpqC,WAE1BjnB,KAAKqxD,OAAOpqC,SAAWja,EAEnBA,IAAY3K,IACdrC,KAAKglC,SAAS,YAEdhlC,KAAKmlC,YAAY,YAGdxgB,MAAM3X,IAQThN,KAAKI,QAAQ,oBAanBulB,EAAOi0C,cAAgB,WACrB,OAAO55D,KAAKinB,WAAajnB,KAAKqmD,eAWhC1gC,EAAOg0C,qBAAuB,WAC5B,OAAOn6D,KAAKolB,MAAM5kB,KAAKinB,YAAcznB,KAAKolB,MAAM5kB,KAAKqmD,gBAgBvD1gC,EAAO20B,SAAW,WAChB,IAAIA,EAAWt6C,KAAKi4E,SAAS,YAM7B,OAJK39B,GAAaA,EAAStiD,SACzBsiD,EAAWF,GAAiB,EAAG,IAG1BE,GAYT30B,EAAO00B,gBAAkB,WACvB,OAAOA,GAAgBr6C,KAAKs6C,WAAYt6C,KAAKinB,aAW/CtB,EAAOq2C,YAAc,WACnB,IAAI1hB,EAAWt6C,KAAKs6C,WAChBrzB,EAAWjnB,KAAKinB,WAChBvoB,EAAM47C,EAAS57C,IAAI47C,EAAStiD,OAAS,GAMzC,OAJI0G,EAAMuoB,IACRvoB,EAAMuoB,GAGDvoB,GAgBTinB,EAAOopC,OAAS,SAAgBgwB,GAC9B,IAAIle,EAEJ,YAAyBvnE,IAArBylF,GAEFle,EAAMrhE,KAAKywB,IAAI,EAAGzwB,KAAK8C,IAAI,EAAG4kB,WAAW63D,KACzC/+E,KAAKqxD,OAAOtC,OAAS8R,EACrB7gE,KAAKk4E,UAAU,YAAarX,QAExBA,EAAM,GACR7gE,KAAKsgE,YAAYO,MAOrBA,EAAM35C,WAAWlnB,KAAKi4E,SAAS,WACxBtzD,MAAMk8C,GAAO,EAAIA,IAe1Bl7C,EAAOkpC,MAAQ,SAAemwB,GAC5B,QAAe1lF,IAAX0lF,EAKJ,OAAOh/E,KAAKi4E,SAAS,WAAY,EAJ/Bj4E,KAAKk4E,UAAU,WAAY8G,IAkC/Br5D,EAAOs5D,aAAe,SAAsBC,GAC1C,YAAsB5lF,IAAlB4lF,EACKl/E,KAAKk4E,UAAU,kBAAmBgH,GAGpCl/E,KAAKi4E,SAAS,kBAAmB,GAkB1CtyD,EAAO26C,YAAc,SAAqBye,GACxC,QAAyBzlF,IAArBylF,GAAuD,IAArBA,EAKtC,OAAO/+E,KAAKqxD,OAAOyP,WAJjB9gE,KAAKqxD,OAAOyP,WAAaie,GAe7Bp5D,EAAO2sD,mBAAqB,WAC1B,OAAOtyE,KAAKi4E,SAAS,wBAAyB,GAmBhDtyD,EAAO+5C,aAAe,SAAsByf,GAC1C,QAAa7lF,IAAT6lF,EAAoB,CACtB,IAAIC,EAAWp/E,KAAKy1E,cAcpB,OAbAz1E,KAAKy1E,cAAgBnyC,QAAQ67C,GAIzBn/E,KAAKy1E,gBAAkB2J,GAAYp/E,KAAKw/D,OAAO9kB,UAKjD16C,KAAKI,QAAQ,yBAGfJ,KAAKw9E,yBAIP,OAAOx9E,KAAKy1E,eAkBd9vD,EAAOi6C,kBAAoB,SAA2Byf,GACpD,IAAI9zB,EAAevrD,KAAK+wC,SAASya,SAAW,IAASA,QAErD,GAAID,EAAc,CAChB,IAAI9lC,EAAOzlB,KACX,OAAO,IAAIurD,GAAa,SAAU6yB,EAAS3yB,GACzC,SAAS6zB,IACP75D,EAAKnW,IAAI,kBAAmBjK,GAC5BogB,EAAKnW,IAAI,mBAAoBs1D,GAG/B,SAASA,IACP0a,IACAlB,IAGF,SAAS/4E,EAAazL,EAAGf,GACvBymF,IACA7zB,EAAO5yD,GAGT4sB,EAAKknB,IAAI,mBAAoBi4B,GAC7Bn/C,EAAKknB,IAAI,kBAAmBtnC,GAC5B,IAAIq2E,EAAUj2D,EAAK85D,yBAAyBF,GAE5C,GAAI3D,EAEF,OADAA,EAAQngC,KAAK+jC,EAAYA,GAClB5D,KAKb,OAAO17E,KAAKu/E,4BAGd55D,EAAO45D,yBAA2B,SAAkCF,GAClE,IAEIG,EAFAC,EAAUz/E,KAoBd,GAfKA,KAAKw/D,OAAO9kB,WACf8kC,EAAYx/E,KAAK+wC,SAAS8sC,YAAc79E,KAAK+wC,SAAS8sC,WAAWvlF,SAAW,QAElDgB,IAAtB+lF,IACFG,EAAYH,IAWZr/E,KAAKw/D,OAAOI,kBAAmB,CACjC,IAAI8b,EAAU17E,KAAKkxC,IAAIlxC,KAAKw/D,OAAOI,mBAAmB4f,GAUtD,OARI9D,GACFA,EAAQngC,MAAK,WACX,OAAOkkC,EAAQ/f,cAAa,MAC3B,WACD,OAAO+f,EAAQ/f,cAAa,MAIzBgc,EACE17E,KAAKslD,MAAMgtB,qBAGpBtyE,KAAKk4E,UAAU,mBAIfl4E,KAAK0/E,mBAUT/5D,EAAOg6C,eAAiB,WACtB,IAAIpU,EAAevrD,KAAK+wC,SAASya,SAAW,IAASA,QAErD,GAAID,EAAc,CAChB,IAAI9lC,EAAOzlB,KACX,OAAO,IAAIurD,GAAa,SAAU6yB,EAAS3yB,GACzC,SAAS6zB,IACP75D,EAAKnW,IAAI,kBAAmBjK,GAC5BogB,EAAKnW,IAAI,mBAAoBs1D,GAG/B,SAASA,IACP0a,IACAlB,IAGF,SAAS/4E,EAAazL,EAAGf,GACvBymF,IACA7zB,EAAO5yD,GAGT4sB,EAAKknB,IAAI,mBAAoBi4B,GAC7Bn/C,EAAKknB,IAAI,kBAAmBtnC,GAC5B,IAAIq2E,EAAUj2D,EAAKk6D,wBAEnB,GAAIjE,EAEF,OADAA,EAAQngC,KAAK+jC,EAAYA,GAClB5D,KAKb,OAAO17E,KAAK2/E,yBAGdh6D,EAAOg6D,sBAAwB,WAC7B,IAAIC,EAAU5/E,KAEd,GAAIA,KAAKw/D,OAAOI,kBAAmB,CACjC,IAAI8b,EAAU,IAAS17E,KAAKw/D,OAAOG,kBAQnC,OANI+b,GACFA,EAAQngC,MAAK,WACX,OAAOqkC,EAAQlgB,cAAa,MAIzBgc,EACE17E,KAAKslD,MAAMgtB,qBACpBtyE,KAAKk4E,UAAU,kBAEfl4E,KAAK6/E,kBAWTl6D,EAAO+5D,gBAAkB,WACvB1/E,KAAK0/D,cAAa,GAClB1/D,KAAK8/E,cAAe,EAEpB9/E,KAAK+/E,gBAAkB,IAAS3jF,gBAAgBktC,MAAM02C,SAEtD5wE,GAAG,IAAU,UAAWpP,KAAKu1E,0BAE7B,IAASn5E,gBAAgBktC,MAAM02C,SAAW,SAE1Ch7C,GAAS,IAASjsC,KAAM,mBAMxBiH,KAAKI,QAAQ,oBAWfulB,EAAO6vD,mBAAqB,SAA4BhlE,GAClD,IAAQsuC,WAAWtuC,EAAO,UACA,IAAxBxQ,KAAK0/D,eACP1/D,KAAK2/D,iBAEL3/D,KAAK6/E,mBAWXl6D,EAAOk6D,eAAiB,WACtB7/E,KAAK0/D,cAAa,GAClB1/D,KAAK8/E,cAAe,EACpBxwE,GAAI,IAAU,UAAWtP,KAAKu1E,0BAE9B,IAASn5E,gBAAgBktC,MAAM02C,SAAWhgF,KAAK+/E,gBAE/C56C,GAAY,IAASpsC,KAAM,mBAQ3BiH,KAAKI,QAAQ,mBAefulB,EAAOy5C,qBAAuB,SAA8B6gB,GAC1D,YAAc3mF,IAAV2mF,GACFjgF,KAAKkgF,wBAA0BD,OAC/BjgF,KAAK+9E,kCAIE/9E,KAAKkgF,uBAgBhBv6D,EAAO2lC,wBAA0B,WAC/B,GAAI,4BAA6B,IAO/B,OAAOtrD,KAAKi4E,SAAS,4BAezBtyD,EAAO05C,qBAAuB,WAC5B,GAAI,4BAA6B,IAO/B,OAAO,IAASA,wBAgBpB15C,EAAO6vB,cAAgB,SAAuBhlC,GAC5C,IAAI6sE,EAAcr9E,KAAK+wC,SAASssC,YAEhC,GAAKA,GAAgBA,EAAY8C,QAAjC,CAMA,IAAIC,EAAiB,SAAwBh4E,GAC3C,IAAIY,EAAUZ,EAAGY,QAAQzR,cAEzB,GAAI6Q,EAAGi4E,kBACL,OAAO,EAKT,IAAIC,EAAoB,CAAC,SAAU,WAAY,SAAU,QAAS,QAAS,UAE3E,GAAgB,UAAZt3E,EACF,OAA+C,IAAxCs3E,EAAkBlpF,QAAQgR,EAAGzI,MAItC,IAAI4gF,EAAe,CAAC,YACpB,OAA0C,IAAnCA,EAAanpF,QAAQ4R,IAI1Bo3E,EAAepgF,KAAKkxC,IAAIh3B,cAAc0kC,iBAIP,oBAAxBy+B,EAAY8C,QACrB9C,EAAY8C,QAAQpgF,KAAKC,KAAMwQ,GAE/BxQ,KAAKwgF,cAAchwE,MAgBvBmV,EAAO66D,cAAgB,SAAuBhwE,GAC5C,IAAI2vE,EAAUngF,KAAK+wC,SAASssC,YAAcr9E,KAAK+wC,SAASssC,YAAY8C,QAAU,GAE1EM,EAAwBN,EAAQO,cAChCA,OAA0C,IAA1BD,EAAmC,SAAUE,GAC/D,OAAO,IAAQ7hC,WAAW6hC,EAAc,MACtCF,EACAG,EAAmBT,EAAQU,QAC3BA,OAA+B,IAArBD,EAA8B,SAAUD,GACpD,OAAO,IAAQ7hC,WAAW6hC,EAAc,MACtCC,EACAE,EAAwBX,EAAQY,aAChCA,OAAyC,IAA1BD,EAAmC,SAAUH,GAC9D,OAAO,IAAQ7hC,WAAW6hC,EAAc,MAAQ,IAAQ7hC,WAAW6hC,EAAc,UAC/EG,EAEJ,GAAIJ,EAAc3gF,KAAKC,KAAMwQ,GAAQ,CACnCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACN,IAAIy1C,EAAW,GAAUxtC,aAAa,qBAEU,IAA5C,IAASxzC,KAAKw/D,OAAOC,oBACvBuhB,EAASlkF,UAAUy1D,YAAYxyD,KAAKC,KAAMwQ,QAEvC,GAAIqwE,EAAQ9gF,KAAKC,KAAMwQ,GAAQ,CACpCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACN,IAAIq1B,EAAa,GAAUptB,aAAa,cACxCotB,EAAW9jE,UAAUy1D,YAAYxyD,KAAKC,KAAMwQ,QACvC,GAAIuwE,EAAahhF,KAAKC,KAAMwQ,GAAQ,CACzCA,EAAMw6B,iBACNx6B,EAAM+6B,kBACN,IAAIssB,EAAa,GAAUrkB,aAAa,cACxCqkB,EAAW/6D,UAAUy1D,YAAYxyD,KAAKC,KAAMwQ,KAgBhDmV,EAAOomC,YAAc,SAAqBpsD,GAGxC,IAFA,IAAIqtD,EAEKj1D,EAAI,EAAGimC,EAAIh+B,KAAK+wC,SAAS6gB,UAAW75D,EAAIimC,EAAEhmC,OAAQD,IAAK,CAC9D,IAAI85D,EAAW7zB,EAAEjmC,GACb+jD,EAAO,GAAKuQ,QAAQwF,GAQxB,GALK/V,IACHA,EAAO,GAAUtI,aAAaqe,IAI3B/V,GAML,GAAIA,EAAKx7B,gBACP0sC,EAAMlR,EAAKiQ,YAAYpsD,GAEnBqtD,GACF,OAAOA,OATT,GAAItlD,MAAM,QAAWmqD,EAAW,qEAcpC,MAAO,IAeTlsC,EAAOs7D,aAAe,SAAsBn+C,GAC1C,IAoCIo+C,EApCAC,EAAUnhF,KAIVohF,EAAQphF,KAAK+wC,SAAS6gB,UAAU9vD,KAAI,SAAU+vD,GAChD,MAAO,CAACA,EAAU,GAAKxF,QAAQwF,OAC9BpgC,QAAO,SAAUlJ,GAClB,IAAIspC,EAAWtpC,EAAK,GAChBuzB,EAAOvzB,EAAK,GAGhB,OAAIuzB,EAEKA,EAAKx7B,eAGd,GAAI5Y,MAAM,QAAWmqD,EAAW,sEACzB,MAKLwvB,EAAiC,SAAwCC,EAAYC,EAAYC,GACnG,IAAIrQ,EAUJ,OATAmQ,EAAWttC,MAAK,SAAUytC,GACxB,OAAOF,EAAWvtC,MAAK,SAAU0tC,GAG/B,GAFAvQ,EAAQqQ,EAAOC,EAAaC,GAExBvQ,EACF,OAAO,QAINA,GAKLwQ,EAAO,SAAcl8E,GACvB,OAAO,SAAUiG,EAAGmG,GAClB,OAAOpM,EAAGoM,EAAGnG,KAIbk2E,EAAS,SAAgB94D,EAAO/hB,GAClC,IAAI8qD,EAAW/oC,EAAM,GACjBgzB,EAAOhzB,EAAM,GAEjB,GAAIgzB,EAAKkQ,cAAcjlD,EAAQo6E,EAAQpwC,SAAS8gB,EAASt6D,gBACvD,MAAO,CACLwP,OAAQA,EACR+0C,KAAM+V,IAeZ,OANEqvB,EAFElhF,KAAK+wC,SAAS8wC,YAEKR,EAA+Bv+C,EAASs+C,EAAOO,EAAKC,IAGpDP,EAA+BD,EAAOt+C,EAAS8+C,GAG/DV,IAAsB,GAmB/Bv7D,EAAO1O,IAAM,SAAalQ,GACxB,IAAI+6E,EAAU9hF,KAGd,GAAsB,qBAAX+G,EACT,OAAO/G,KAAKqxD,OAAOp6C,KAAO,GAK5B,IAAI6rB,EAAUyuB,GAAaxqD,GAItB+7B,EAAQ9qC,QAWbgI,KAAKk2E,cAAe,EACpBl2E,KAAKqxD,OAAOvuB,QAAUA,EACtB9iC,KAAK87E,oBAAoBh5C,EAAQ,IAEjCyqB,GAAUvtD,KAAM8iC,EAAQ,IAAI,SAAUi/C,EAAkB3yB,GACtD0yB,EAAQlL,YAAcxnB,EAGtB0yB,EAAQzwB,OAAOvuB,QAAUA,EAEzBg/C,EAAQhG,oBAAoBiG,GAE5B,IAAIlpF,EAAMipF,EAAQE,KAAKD,GAEvB,GAAIlpF,EACF,OAAIiqC,EAAQ9qC,OAAS,EACZ8pF,EAAQ7qE,IAAI6rB,EAAQxrC,MAAM,KAGnCwqF,EAAQ5L,cAAe,EAEvB4L,EAAQ3oF,YAAW,WACjB6G,KAAK0H,MAAM,CACT7L,KAAM,EACN0d,QAASvZ,KAAKkyC,SAASlyC,KAAK+wC,SAASkxC,yBAEtC,QAIHH,EAAQxtC,gBAKV4Z,GAAQkB,EAAK0yB,EAAQx8B,WA7CrBtlD,KAAK7G,YAAW,WACd6G,KAAK0H,MAAM,CACT7L,KAAM,EACN0d,QAASvZ,KAAKkyC,SAASlyC,KAAK+wC,SAASkxC,yBAEtC,IA0DPt8D,EAAOq8D,KAAO,SAAcj7E,GAC1B,IAAIm7E,EAAUliF,KAEVmiF,EAAaniF,KAAKihF,aAAa,CAACl6E,IAEpC,OAAKo7E,IAIA9xC,GAAgB8xC,EAAWrmC,KAAM97C,KAAKq5E,YAY3Cr5E,KAAK0wC,OAAM,WAKL1wC,KAAKslD,MAAMroD,YAAYH,UAAU3E,eAAe,aAClD6H,KAAKk4E,UAAU,YAAanxE,GAE5B/G,KAAKk4E,UAAU,MAAOnxE,EAAOkQ,KAG/BjX,KAAKk2E,cAAe,KACnB,IACI,IAxBLl2E,KAAKk2E,cAAe,EAEpBl2E,KAAK8xD,UAAUqwB,EAAWrmC,KAAMqmC,EAAWp7E,QAC3C/G,KAAKslD,MAAM5U,OAAM,WACfwxC,EAAQhM,cAAe,MAElB,KAyBXvwD,EAAO0hC,KAAO,WACZrnD,KAAKk4E,UAAU,SASjBvyD,EAAOnlB,MAAQ,WACb,IAAI4hF,EAAUpiF,KAEVurD,EAAevrD,KAAK+wC,SAASya,SAAW,IAASA,QAErD,GAAIxrD,KAAKw9C,WAAa+N,EACpBvrD,KAAKqiF,eACA,CACL,IAAI7qB,EAAcx3D,KAAK2wC,OACvB6K,GAAegc,EAAYjc,MAAK,WAC9B,OAAO6mC,EAAQC,iBAKrB18D,EAAO08D,SAAW,WACZriF,KAAKslD,OACPtlD,KAAKslD,MAAMwE,YAAY,QAGzB9pD,KAAK+1E,cACL/1E,KAAK8yD,OAAO,IACZ9yD,KAAK8xD,UAAU9xD,KAAK+wC,SAAS6gB,UAAU,GAAI,MAC3C5xD,KAAKk4E,UAAU,SACfl4E,KAAKsiF,qBAEDt0C,GAAUhuC,OACZA,KAAKI,QAAQ,gBASjBulB,EAAO28D,mBAAqB,WAC1BtiF,KAAKuiF,oBACLviF,KAAKwiF,qBACLxiF,KAAKyiF,mBAOP98D,EAAO48D,kBAAoB,WACzBviF,KAAKqmD,YAAY,GACjB,IAAIq8B,EAAmB1iF,KAAK+qE,WACxB4X,EAAkBD,EAAiBC,gBACnChpB,EAAuB+oB,EAAiB/oB,qBAExCgpB,GACFA,EAAgB9pB,gBAGdc,GACFA,EAAqBd,iBAQzBlzC,EAAO68D,mBAAqB,WAC1BxiF,KAAKsnE,aAAatnE,KAAKk+E,uBACvBl+E,KAAK86E,yBAOPn1D,EAAO88D,gBAAkB,WACvBziF,KAAK+uD,OAAO,GACZ/uD,KAAKI,QAAQ,iBAUfulB,EAAOi9D,eAAiB,WACtB,IAAI77E,EAAS/G,KAAKq8E,gBACdv5C,EAAU,GAMd,OAJmC,IAA/B/lC,OAAOkwB,KAAKlmB,GAAQ/O,QACtB8qC,EAAQnrC,KAAKoP,GAGR/G,KAAKqxD,OAAOvuB,SAAWA,GAUhCnd,EAAO02D,cAAgB,WACrB,OAAOr8E,KAAKqxD,OAAOtqD,QAAU,IAW/B4e,EAAOwpD,WAAa,WAClB,OAAOnvE,KAAKq8E,iBAAmBr8E,KAAKq8E,gBAAgBplE,KAAO,IAY7D0O,EAAOk9D,YAAc,WACnB,OAAO7iF,KAAKq8E,iBAAmBr8E,KAAKq8E,gBAAgB18E,MAAQ,IAc9DgmB,EAAO+rD,QAAU,SAAiBl6E,GAChC,YAAc8B,IAAV9B,GACFwI,KAAKk4E,UAAU,aAAc1gF,QAC7BwI,KAAK+wC,SAAS2gC,QAAUl6E,IAInBwI,KAAKi4E,SAAS,YAoBvBtyD,EAAO0wD,SAAW,SAAkB7+E,GAElC,QAAc8B,IAAV9B,EACF,OAAOwI,KAAK+wC,SAASslC,WAAY,EAGnC,IAAIyM,EAEiB,kBAAVtrF,GAAsB,mBAAmB8M,KAAK9M,IACvDwI,KAAK+wC,SAASslC,SAAW7+E,EACzBwI,KAAKy7E,gBAAgBjkF,GACrBsrF,GAAe,GAKf9iF,KAAK+wC,SAASslC,WAHJ7+E,EAMZsrF,EAAuC,qBAAjBA,EAA+B9iF,KAAK+wC,SAASslC,SAAWyM,EAK1E9iF,KAAKslD,OACPtlD,KAAKk4E,UAAU,cAAe4K,IAqBlCn9D,EAAOgmC,YAAc,SAAqBn0D,GACxC,YAAc8B,IAAV9B,GACFwI,KAAKk4E,UAAU,iBAAkB1gF,GACjCwI,KAAK+wC,SAAS4a,YAAcn0D,EACrBwI,MAGFA,KAAKi4E,SAAS,gBAcvBtyD,EAAO4zD,KAAO,SAAc/hF,GAC1B,YAAc8B,IAAV9B,GACFwI,KAAKk4E,UAAU,UAAW1gF,QAC1BwI,KAAK+wC,SAASwoC,KAAO/hF,IAIhBwI,KAAKi4E,SAAS,SAevBtyD,EAAOmtC,OAAS,SAAgB77C,GAC9B,QAAY3d,IAAR2d,EACF,OAAOjX,KAAKg2E,QAKT/+D,IACHA,EAAM,IAGJA,IAAQjX,KAAKg2E,UAKjBh2E,KAAKg2E,QAAU/+D,EAEfjX,KAAKk4E,UAAU,YAAajhE,GAC5BjX,KAAK01E,mBAAoB,EASzB11E,KAAKI,QAAQ,kBAgBfulB,EAAOi1D,wBAA0B,WAC/B,KAAM56E,KAAKg2E,SAAWh2E,KAAK+wC,SAASyoC,wBAA0Bx5E,KAAKslD,OAAStlD,KAAKslD,MAAMwN,OAAQ,CAC7F,IAAIiwB,EAAY/iF,KAAKslD,MAAMwN,UAAY,GAEnCiwB,IAAc/iF,KAAKg2E,UACrBh2E,KAAKg2E,QAAU+M,EACf/iF,KAAK01E,mBAAoB,EAEzB11E,KAAKI,QAAQ,mBAkBnBulB,EAAOi4B,SAAW,SAAkB0d,GAClC,QAAahiE,IAATgiE,EACF,QAASt7D,KAAKi2E,UAGhB3a,IAASA,EAELt7D,KAAKi2E,YAAc3a,IAIvBt7D,KAAKi2E,UAAY3a,EAEbt7D,KAAK+6E,uBACP/6E,KAAKk4E,UAAU,cAAe5c,GAG5Bt7D,KAAKi2E,WACPj2E,KAAKmlC,YAAY,yBACjBnlC,KAAKglC,SAAS,wBAMdhlC,KAAKI,QAAQ,mBAERJ,KAAK+6E,uBACR/6E,KAAKg7E,8BAGPh7E,KAAKmlC,YAAY,wBACjBnlC,KAAKglC,SAAS,yBAMdhlC,KAAKI,QAAQ,oBAERJ,KAAK+6E,uBACR/6E,KAAKk7E,kCAuBXv1D,EAAOo1D,oBAAsB,SAA6Bzf,GACxD,QAAahiE,IAATgiE,EACF,QAASt7D,KAAKgjF,qBAGhB1nB,IAASA,EAELt7D,KAAKgjF,uBAAyB1nB,IAIlCt7D,KAAKgjF,qBAAuB1nB,EAExBt7D,KAAKgjF,sBACPhjF,KAAKglC,SAAS,6BAQdhlC,KAAKI,QAAQ,yBAEbJ,KAAKmlC,YAAY,6BAQjBnlC,KAAKI,QAAQ,0BAiBjBulB,EAAOje,MAAQ,SAAe7O,GAC5B,QAAYS,IAART,EACF,OAAOmH,KAAKiqD,QAAU,KAKxB,GAAIjqD,KAAK+wC,SAASkyC,2BAA6BpqF,GAAoB,IAAbA,EAAIgD,KAAY,CACpE,IAAIqnF,EAAyB,WAC3BljF,KAAK0H,MAAM7O,IAQb,OALAmH,KAAK+wC,SAASkyC,2BAA4B,EAC1CjjF,KAAK6sC,IAAI,CAAC,QAAS,cAAeq2C,QAClCljF,KAAK2sC,IAAI,aAAa,WACpB3sC,KAAKsP,IAAI,CAAC,QAAS,cAAe4zE,MAMtC,GAAY,OAARrqF,EAQF,OAPAmH,KAAKiqD,OAASpxD,EACdmH,KAAKmlC,YAAY,kBAEbnlC,KAAKmjF,cACPnjF,KAAKmjF,aAAaplC,SAMtB/9C,KAAKiqD,OAAS,IAAIpP,GAAWhiD,GAE7BmH,KAAKglC,SAAS,aAGd,GAAIt9B,MAAM,SAAW1H,KAAKiqD,OAAOpuD,KAAO,IAAMg/C,GAAWE,WAAW/6C,KAAKiqD,OAAOpuD,MAAQ,IAAKmE,KAAKiqD,OAAO1wC,QAASvZ,KAAKiqD,QAMvHjqD,KAAKI,QAAQ,UAWfulB,EAAO4wB,mBAAqB,SAA4B/lC,GACtDxQ,KAAKojF,eAAgB,GAiBvBz9D,EAAOoxD,WAAa,SAAoBzb,GACtC,QAAahiE,IAATgiE,EACF,OAAOt7D,KAAK41E,YAKd,GAFAta,IAASA,EAELA,IAASt7D,KAAK41E,YAAlB,CAMA,GAFA51E,KAAK41E,YAActa,EAEft7D,KAAK41E,YAUP,OATA51E,KAAKojF,eAAgB,EACrBpjF,KAAKmlC,YAAY,qBACjBnlC,KAAKglC,SAAS,wBAMdhlC,KAAKI,QAAQ,cAYXJ,KAAKslD,OACPtlD,KAAKslD,MAAM3Y,IAAI,aAAa,SAAU/yC,GACpCA,EAAE2xC,kBACF3xC,EAAEoxC,oBAINhrC,KAAKojF,eAAgB,EACrBpjF,KAAKmlC,YAAY,mBACjBnlC,KAAKglC,SAAS,qBAMdhlC,KAAKI,QAAQ,kBASfulB,EAAOqxD,uBAAyB,WAC9B,IAAIqM,EACAC,EACAC,EACAC,EAAiB53E,GAAK5L,KAAMA,KAAKu2C,oBAEjCokB,EAAkB,SAAyB/gE,GAGzCA,EAAE6pF,UAAYH,GAAa1pF,EAAE8pF,UAAYH,IAC3CD,EAAY1pF,EAAE6pF,QACdF,EAAY3pF,EAAE8pF,QACdF,MAIAjsB,EAAkB,WACpBisB,IAIAxjF,KAAK02C,cAAc2sC,GAInBA,EAAkBrjF,KAAK22C,YAAY6sC,EAAgB,MAGjDG,EAA6B,SAAoCnzE,GACnEgzE,IAEAxjF,KAAK02C,cAAc2sC,IAIrBrjF,KAAKoP,GAAG,YAAamoD,GACrBv3D,KAAKoP,GAAG,YAAaurD,GACrB36D,KAAKoP,GAAG,UAAWu0E,GACnB3jF,KAAKoP,GAAG,aAAcu0E,GACtB,IAsBI1F,EAtBAlT,EAAa/qE,KAAK8yC,SAAS,eAG3Bi4B,GAAerxB,IAAWjB,KAC5BsyB,EAAW37D,GAAG,cAAc,SAAUoB,GACpCxQ,KAAKgpC,SAASqoB,OAAO4sB,kBAAoBj+E,KAAKgpC,SAAS+H,SAASktC,kBAChEj+E,KAAKgpC,SAAS+H,SAASktC,kBAAoB,KAE7ClT,EAAW37D,GAAG,cAAc,SAAUoB,GACpCxQ,KAAKgpC,SAAS+H,SAASktC,kBAAoBj+E,KAAKgpC,SAASqoB,OAAO4sB,sBAMpEj+E,KAAKoP,GAAG,UAAWo0E,GACnBxjF,KAAKoP,GAAG,QAASo0E,GAOjBxjF,KAAK22C,aAAY,WAEf,GAAK32C,KAAKojF,cAAV,CAKApjF,KAAKojF,eAAgB,EAErBpjF,KAAK+2E,YAAW,GAEhB/2E,KAAKjG,aAAakkF,GAClB,IAAItiF,EAAUqE,KAAK+wC,SAASktC,kBAExBtiF,GAAW,IAMfsiF,EAAoBj+E,KAAK7G,YAAW,WAI7B6G,KAAKojF,eACRpjF,KAAK+2E,YAAW,KAEjBp7E,OACF,MAiBLgqB,EAAO2hD,aAAe,SAAsBD,GAC1C,QAAa/tE,IAAT+tE,EAOJ,OAAIrnE,KAAKslD,OAAStlD,KAAKslD,MAAMmH,qBACpBzsD,KAAKqxD,OAAOsrB,kBAAoB38E,KAAKi4E,SAAS,gBAGhD,EARLj4E,KAAKk4E,UAAU,kBAAmB7Q,IA2BtC1hD,EAAOu4D,oBAAsB,SAA6B7W,GACxD,YAAa/tE,IAAT+tE,EACKrnE,KAAKk4E,UAAU,yBAA0B7Q,GAG9CrnE,KAAKslD,OAAStlD,KAAKslD,MAAMmH,qBACpBzsD,KAAKi4E,SAAS,uBAGhB,GAcTtyD,EAAOqxC,QAAU,SAAiBsE,GAChC,QAAahiE,IAATgiE,EAKJ,QAASt7D,KAAK4jF,SAJZ5jF,KAAK4jF,WAAatoB,GA6BtB31C,EAAOolC,aAAe,SAAsBxJ,EAAMnuB,EAAOzH,GACvD,GAAI3rB,KAAKslD,MACP,OAAOtlD,KAAKslD,MAAMyF,aAAaxJ,EAAMnuB,EAAOzH,IAyBhDhG,EAAO02B,mBAAqB,SAA4B/jD,EAAS2yD,GAC/D,GAAIjrD,KAAKslD,MACP,OAAOtlD,KAAKslD,MAAMjJ,mBAAmB/jD,EAAS2yD,IAelDtlC,EAAOokC,sBAAwB,SAA+B7xD,QAChD,IAARA,IACFA,EAAM,IAGR,IAAI2rF,EAAO3rF,EACP6L,EAAQ8/E,EAAK9/E,MAQjB,GANKA,IACHA,EAAQ7L,GAKN8H,KAAKslD,MACP,OAAOtlD,KAAKslD,MAAMyE,sBAAsBhmD,IAe5C4hB,EAAO0lC,wBAA0B,WAC/B,OAAOrrD,KAAKi4E,SAAS,4BAUvBtyD,EAAO8yD,WAAa,WAClB,OAAOz4E,KAAKslD,OAAStlD,KAAKslD,MAAMmzB,YAAcz4E,KAAKslD,MAAMmzB,cAAgB,GAU3E9yD,EAAO+yD,YAAc,WACnB,OAAO14E,KAAKslD,OAAStlD,KAAKslD,MAAMozB,aAAe14E,KAAKslD,MAAMozB,eAAiB,GAgB7E/yD,EAAOgG,SAAW,SAAkB9vB,GAClC,QAAavC,IAATuC,EACF,OAAOmE,KAAKgnE,UAGdhnE,KAAKgnE,UAAYxgE,OAAO3K,GAAMtE,eAYhCouB,EAAO0sB,UAAY,WACjB,OAAO7B,GAAaqH,EAAO/6C,UAAUi0C,SAASsB,UAAWryC,KAAK81E,aAWhEnwD,EAAOm+D,OAAS,WACd,IAAIxrF,EAAUk4C,GAAaxwC,KAAK+wC,UAC5BjtC,EAASxL,EAAQwL,OACrBxL,EAAQwL,OAAS,GAEjB,IAAK,IAAI/L,EAAI,EAAGA,EAAI+L,EAAO9L,OAAQD,IAAK,CACtC,IAAIgM,EAAQD,EAAO/L,GAEnBgM,EAAQysC,GAAazsC,GACrBA,EAAMilC,YAAS1vC,EACfhB,EAAQwL,OAAO/L,GAAKgM,EAGtB,OAAOzL,GAoBTqtB,EAAOo+D,YAAc,SAAqB1uE,EAAS/c,GACjD,IAAI0rF,EAAUhkF,KAEd1H,EAAUA,GAAW,GACrBA,EAAQ+c,QAAUA,GAAW,GAC7B,IAAI4uE,EAAQ,IAAI,GAAYjkF,KAAM1H,GAMlC,OALA0H,KAAKkzC,SAAS+wC,GACdA,EAAM70E,GAAG,WAAW,WAClB40E,EAAQvnE,YAAYwnE,MAEtBA,EAAM1oF,OACC0oF,GASTt+D,EAAOu+D,yBAA2B,WAChC,GAAKlkF,KAAKm3E,aAOV,IAHA,IAAIgN,EAAoBnkF,KAAKmkF,oBACzB9uC,EAAer1C,KAAKq1C,eAEft9C,EAAI,EAAGA,EAAIy8E,GAAiBx8E,OAAQD,IAAK,CAChD,IAAIqsF,EAAsB5P,GAAiBz8E,GACvCssF,EAAWrkF,KAAKskF,aAAaF,GAEjC,GAAI/uC,GAAgBgvC,EAAU,CAE5B,GAAIF,IAAsBC,EACxB,OAIED,GACFnkF,KAAKmlC,YAAYsvC,GAAmB0P,IAGtCnkF,KAAKglC,SAASyvC,GAAmB2P,IACjCpkF,KAAKukF,YAAcH,EACnB,SAWNz+D,EAAO6+D,yBAA2B,WAChC,IAAI/gD,EAAYzjC,KAAKykF,yBACrBzkF,KAAKukF,YAAc,GAEf9gD,GACFzjC,KAAKmlC,YAAY1B,IAyCrB9d,EAAOuxD,YAAc,SAAqBwN,GAExC,YAAqBprF,IAAjBorF,EACK,GAAO1kF,KAAKskF,eAGrBtkF,KAAKukF,YAAc,GACnBvkF,KAAKskF,aAAe,GAAO,GAAI3P,GAAqB+P,GAGpD1kF,KAAKkkF,2BAEE,GAAOlkF,KAAKskF,gBAgBrB3+D,EAAOwxD,WAAa,SAAoB3/E,GAEtC,QAAc8B,IAAV9B,EACF,OAAOwI,KAAK2kF,YAGdntF,EAAQ8rC,QAAQ9rC,GAChB,IAAIuR,EAAU/I,KAAK2kF,YAEnB,OAAIntF,IAAUuR,GAKd/I,KAAK2kF,YAAcntF,EAGfA,GACFwI,KAAKoP,GAAG,eAAgBpP,KAAKkkF,0BAC7BlkF,KAAKkkF,6BAELlkF,KAAKsP,IAAI,eAAgBtP,KAAKkkF,0BAC9BlkF,KAAKwkF,4BAGAhtF,QAhBP,GA2BFmuB,EAAOw+D,kBAAoB,WACzB,OAAOnkF,KAAKukF,aAYd5+D,EAAO8+D,uBAAyB,WAC9B,OAAOhQ,GAAmBz0E,KAAKukF,cAAgB,IA0DjD5+D,EAAOi/D,UAAY,SAAmBz5D,EAAOulB,GAC3C,IAAIm0C,EAAU7kF,KAEd,GAAKmrB,GAA0B,kBAAVA,EAArB,CAIAnrB,KAAKQ,QAELR,KAAKqxD,OAAOlmC,MAAQqlB,GAAarlB,GACjC,IAAI25D,EAAqB9kF,KAAKqxD,OAAOlmC,MACjC45D,EAAUD,EAAmBC,QAC7BjyB,EAASgyB,EAAmBhyB,OAC5B77C,EAAM6tE,EAAmB7tE,IACzBilC,EAAa4oC,EAAmB5oC,YAE/B6oC,GAAWjyB,IACd9yD,KAAKqxD,OAAOlmC,MAAM45D,QAAU,CAAC,CAC3B9tE,IAAK67C,EACLnzD,KAAMsxD,GAAY6B,MAIlB77C,GACFjX,KAAKiX,IAAIA,GAGP67C,GACF9yD,KAAK8yD,OAAOA,GAGVr7D,MAAMC,QAAQwkD,IAChBA,EAAWjlD,SAAQ,SAAU+tF,GAC3B,OAAOH,EAAQxoC,mBAAmB2oC,GAAI,MAI1ChlF,KAAK0wC,MAAMA,KAYb/qB,EAAOs/D,SAAW,WAChB,IAAKjlF,KAAKqxD,OAAOlmC,MAAO,CACtB,IAAI2nC,EAAS9yD,KAAK8yD,SACd77C,EAAMjX,KAAK4iF,iBACX1mC,EAAazkD,MAAMqF,UAAUgF,IAAI/B,KAAKC,KAAK0qD,oBAAoB,SAAUs6B,GAC3E,MAAO,CACLzjC,KAAMyjC,EAAGzjC,KACTnuB,MAAO4xD,EAAG5xD,MACVzH,SAAUq5D,EAAGr5D,SACb1U,IAAK+tE,EAAG/tE,QAGRkU,EAAQ,CACVlU,IAAKA,EACLilC,WAAYA,GAWd,OARI4W,IACF3nC,EAAM2nC,OAASA,EACf3nC,EAAM45D,QAAU,CAAC,CACf9tE,IAAKkU,EAAM2nC,OACXnzD,KAAMsxD,GAAY9lC,EAAM2nC,WAIrB3nC,EAGT,OAAOqlB,GAAaxwC,KAAKqxD,OAAOlmC,QAclC0sB,EAAOs9B,eAAiB,SAAwBlrD,GAC9C,IAAIi7D,EAAc,CAChBpiD,QAAS,GACTh/B,OAAQ,IAENqhF,EAAax/C,GAAc1b,GAC3Bm7D,EAAYD,EAAW,cAW3B,GATIvgD,GAAS3a,EAAK,cAChBk7D,EAAW7nC,MAAO,GAGhB1Y,GAAS3a,EAAK,eAChBk7D,EAAWvN,OAAQ,GAIH,OAAdwN,EAAoB,CAGtB,IAAIC,EAAkB,IAAeD,GAAa,MAC9CvsF,EAAMwsF,EAAgB,GACtBxqF,EAAOwqF,EAAgB,GAEvBxsF,GACF,GAAI6O,MAAM7O,GAGZ,GAAOssF,EAAYtqF,GAKrB,GAFA,GAAOqqF,EAAaC,GAEhBl7D,EAAI7J,gBAGN,IAFA,IAAIwyB,EAAW3oB,EAAIlO,WAEVhkB,EAAI,EAAGimC,EAAI4U,EAAS56C,OAAQD,EAAIimC,EAAGjmC,IAAK,CAC/C,IAAIikB,EAAQ42B,EAAS76C,GAEjButF,EAAYtpE,EAAM3f,SAAS9E,cAEb,WAAd+tF,EACFJ,EAAYpiD,QAAQnrC,KAAKguC,GAAc3pB,IAChB,UAAdspE,GACTJ,EAAYphF,OAAOnM,KAAKguC,GAAc3pB,IAK5C,OAAOkpE,GAWTv/D,EAAOkxD,kBAAoB,WACzB,IAAIplE,EAAO,IAASqP,cAAc,KAGlC,QAAS,cAAerP,EAAK63B,OAAS,oBAAqB73B,EAAK63B,OAAS,iBAAkB73B,EAAK63B,OAAS,gBAAiB73B,EAAK63B,OAC/H,gBAAiB73B,EAAK63B,QAGjBuO,EA56IiB,CA66IxB,IAmDFmQ,GAAIhV,MAAM/7C,SAAQ,SAAUgT,GAC1B,IAAIwyB,EAAQurB,GAAI/9C,GAEhB,GAAOnN,UAAU2/B,EAAMkrB,YAAc,WACnC,OAAI3nD,KAAKslD,MACAtlD,KAAKslD,MAAM7oB,EAAMkrB,eAK1B3nD,KAAKy8B,EAAMmrB,aAAe5nD,KAAKy8B,EAAMmrB,cAAgB,IAAInrB,EAAM8qB,UACxDvnD,KAAKy8B,EAAMmrB,kBAmBtB,GAAO9qD,UAAUg7E,YAAc,GAAOh7E,UAAUynD,YAUhD,GAAOzM,QAAU,GACjB,IAAI,GAAY,IAASI,UAUzB,GAAOp7C,UAAUi0C,SAAW,CAE1B6gB,UAAW,GAAKxF,kBAChBm5B,MAAO,GACPC,MAAO,GAEPvH,kBAAmB,IAEnBrW,cAAe,GAGfuF,QAAQ,EAERv6B,SAAU,CAAC,cAAe,cAAe,mBAAoB,iBAAkB,gBAAiB,cAAe,aAAc,eAAgB,oBAAqB,iBAClKjnB,SAAU,KAAc,GAAU0mB,WAAa,GAAUA,UAAU,IAAM,GAAUozC,cAAgB,GAAU95D,WAAa,KAE1H0mB,UAAW,GAEX4vC,oBAAqB,iDACrBpE,WAAY,CACVvlF,QAAS,CACPotF,aAAc,SAGlBxO,YAAa,GACbC,YAAY,GAEd,CAOA,QAOA,UAQA,WAqBA,eAwBA,cAAclgF,SAAQ,SAAUwO,GAC9B,GAAO3I,UAAU2I,GAAM,WACrB,OAAOzF,KAAKi4E,SAASxyE,OAGzByuE,GAAsBj9E,SAAQ,SAAUuZ,GACtC,GAAO1T,UAAU,aAAeszC,GAAY5/B,GAAS,KAAO,WAC1D,OAAOxQ,KAAKI,QAAQoQ,OA6DxB,GAAU+mC,kBAAkB,SAAU,IAUtC,IAAIouC,GAAmB,SASnBC,GAAmB,iBAQnBC,GAAgB,GAYhBC,GAAe,SAAsB77E,GACvC,OAAO47E,GAAc1tF,eAAe8R,IAclC87E,GAAY,SAAmB97E,GACjC,OAAO67E,GAAa77E,GAAQ47E,GAAc57E,QAAQ3Q,GAgBhD0sF,GAAqB,SAA4Bh9C,EAAQ/+B,GAC3D++B,EAAO48C,IAAoB58C,EAAO48C,KAAqB,GACvD58C,EAAO48C,IAAkB37E,IAAQ,GAkB/Bg8E,GAAoB,SAA2Bj9C,EAAQmD,EAAM+5C,GAC/D,IAAItV,GAAasV,EAAS,SAAW,IAAM,cAC3Cl9C,EAAO5oC,QAAQwwE,EAAWzkC,GAC1BnD,EAAO5oC,QAAQwwE,EAAY,IAAMzkC,EAAKliC,KAAMkiC,IAkB1Cg6C,GAAoB,SAA2Bl8E,EAAMm8E,GACvD,IAAIC,EAAqB,WAOvBJ,GAAkBjmF,KAAM,CACtBiK,KAAMA,EACNm8E,OAAQA,EACRv6E,SAAU,OACT,GACH,IAAIA,EAAWu6E,EAAOvkF,MAAM7B,KAAM4J,WAOlC,OANAo8E,GAAmBhmF,KAAMiK,GACzBg8E,GAAkBjmF,KAAM,CACtBiK,KAAMA,EACNm8E,OAAQA,EACRv6E,SAAUA,IAELA,GAMT,OAHA9O,OAAOkwB,KAAKm5D,GAAQnvF,SAAQ,SAAUgsC,GACpCojD,EAAmBpjD,GAAQmjD,EAAOnjD,MAE7BojD,GAoBL,GAAsB,SAA6Bp8E,EAAMq8E,GAI3D,OADAA,EAAexpF,UAAUmN,KAAOA,EACzB,WACLg8E,GAAkBjmF,KAAM,CACtBiK,KAAMA,EACNm8E,OAAQE,EACRz6E,SAAU,OACT,GAEH,IAAK,IAAIkhB,EAAOnjB,UAAU5R,OAAQwT,EAAO,IAAI/T,MAAMs1B,GAAO3D,EAAO,EAAGA,EAAO2D,EAAM3D,IAC/E5d,EAAK4d,GAAQxf,UAAUwf,GAGzB,IAAIvd,EAAW,IAAWy6E,EAAgB,CAACtmF,MAAM4B,OAAO4J,IAQxD,OALAxL,KAAKiK,GAAQ,WACX,OAAO4B,GAGTo6E,GAAkBjmF,KAAM6L,EAAS06E,gBAC1B16E,IAmBP26E,GAAsB,WASxB,SAASA,EAAOx9C,GACd,GAAIhpC,KAAK/C,cAAgBupF,EACvB,MAAM,IAAI7tF,MAAM,0DAGlBqH,KAAKgpC,OAASA,EAGdwG,GAAQxvC,aACDA,KAAKI,QACZ4vC,GAAShwC,KAAMA,KAAK/C,YAAYgzC,cAChC+1C,GAAmBh9C,EAAQhpC,KAAKiK,MAGhCjK,KAAKyP,QAAU7D,GAAK5L,KAAMA,KAAKyP,SAE/Bu5B,EAAO55B,GAAG,UAAWpP,KAAKyP,SAO5B,IAAIkW,EAAS6gE,EAAO1pF,UAmOpB,OAjOA6oB,EAAOrkB,QAAU,WACf,OAAOtB,KAAK/C,YAAYwpF,SAgB1B9gE,EAAO4gE,aAAe,SAAsBp6C,GAQ1C,YAPa,IAATA,IACFA,EAAO,IAGTA,EAAKliC,KAAOjK,KAAKiK,KACjBkiC,EAAKi6C,OAASpmF,KAAK/C,YACnBkvC,EAAKtgC,SAAW7L,KACTmsC,GAkBTxmB,EAAOvlB,QAAU,SAAmBoQ,EAAO27B,GAKzC,YAJa,IAATA,IACFA,EAAO,IAGF/rC,GAAQJ,KAAKiuC,YAAaz9B,EAAOxQ,KAAKumF,aAAap6C,KAgB5DxmB,EAAOuqB,mBAAqB,SAA4Bt2C,KAWxD+rB,EAAOlW,QAAU,WACf,IAAIxF,EAAOjK,KAAKiK,KACZ++B,EAAShpC,KAAKgpC,OAQlBhpC,KAAKI,QAAQ,WACbJ,KAAKsP,MACL05B,EAAO15B,IAAI,UAAWtP,KAAKyP,SAI3Bu5B,EAAO48C,IAAkB37E,IAAQ,EACjCjK,KAAKgpC,OAAShpC,KAAK2vC,MAAQ,KAG3B3G,EAAO/+B,GAAQ,GAAoBA,EAAM47E,GAAc57E,KAczDu8E,EAAOE,QAAU,SAAiBN,GAChC,IAAI7vE,EAAsB,kBAAX6vE,EAAsBL,GAAUK,GAAUA,EACzD,MAAoB,oBAAN7vE,IAAqBiwE,EAAO1pF,UAAU66C,cAAcphC,EAAEzZ,YAmBtE0pF,EAAOG,eAAiB,SAAwB18E,EAAMm8E,GACpD,GAAoB,kBAATn8E,EACT,MAAM,IAAItR,MAAM,yBAA4BsR,EAAO,mCAAsCA,EAAO,KAGlG,GAAI67E,GAAa77E,GACf,GAAIgB,KAAK,mBAAsBhB,EAAO,wEACjC,GAAI,GAAOnN,UAAU3E,eAAe8R,GACzC,MAAM,IAAItR,MAAM,yBAA4BsR,EAAO,0DAGrD,GAAsB,oBAAXm8E,EACT,MAAM,IAAIztF,MAAM,uBAA0BsR,EAAO,qCAAwCm8E,EAAS,KAcpG,OAXAP,GAAc57E,GAAQm8E,EAGlBn8E,IAAS07E,KACPa,EAAOE,QAAQN,GACjB,GAAOtpF,UAAUmN,GAAQk8E,GAAkBl8E,EAAMm8E,GAEjD,GAAOtpF,UAAUmN,GAAQ,GAAoBA,EAAMm8E,IAIhDA,GAcTI,EAAOI,iBAAmB,SAA0B38E,GAClD,GAAIA,IAAS07E,GACX,MAAM,IAAIhtF,MAAM,mCAGdmtF,GAAa77E,YACR47E,GAAc57E,UACd,GAAOnN,UAAUmN,KAgB5Bu8E,EAAOK,WAAa,SAAoB7zC,GAKtC,IAAIl8C,EASJ,YAbc,IAAVk8C,IACFA,EAAQj2C,OAAOkwB,KAAK44D,KAItB7yC,EAAM/7C,SAAQ,SAAUgT,GACtB,IAAIm8E,EAASL,GAAU97E,GAEnBm8E,IACFtvF,EAASA,GAAU,GACnBA,EAAOmT,GAAQm8E,MAGZtvF,GAaT0vF,EAAOM,iBAAmB,SAA0B78E,GAClD,IAAIm8E,EAASL,GAAU97E,GACvB,OAAOm8E,GAAUA,EAAOK,SAAW,IAG9BD,EAnQiB,GAmR1BA,GAAOT,UAAYA,GAOnBS,GAAOb,iBAAmBA,GAC1Ba,GAAOG,eAAehB,GAAkBa,IAOxC,GAAO1pF,UAAUo2D,YAAc,SAAUjpD,GACvC,QAASjK,KAAK4lF,MAAsD,IAAjC5lF,KAAK4lF,IAAkB37E,IAS5D,GAAOnN,UAAUiqF,UAAY,SAAU98E,GACrC,QAAS67E,GAAa77E,IAyExB,IAAI,GAAS,SAAgBpN,EAAYmqF,QACf,IAApBA,IACFA,EAAkB,IAGpB,IAAIpqF,EAAW,WACbC,EAAWgF,MAAM7B,KAAM4J,YAGrBq9E,EAAU,GAoBd,IAAK,IAAIh9E,IAlBsB,kBAApB+8E,GACLA,EAAgB/pF,cAAgBF,OAAOD,UAAUG,cACnDL,EAAWoqF,EAAgB/pF,aAG7BgqF,EAAUD,GAC0B,oBAApBA,IAChBpqF,EAAWoqF,GAGb,IAAUpqF,EAAUC,GAGhBA,IACFD,EAASsqF,OAASrqF,GAIHoqF,EACXA,EAAQ9uF,eAAe8R,KACzBrN,EAASE,UAAUmN,GAAQg9E,EAAQh9E,IAIvC,OAAOrN,GAkBLuqF,GAAc,SAAqB5lF,GACrC,OAA2B,IAApBA,EAAGnK,QAAQ,KAAamK,EAAGjK,MAAM,GAAKiK,GAmF/C,SAAS6lF,GAAU7lF,EAAIjJ,EAASo4C,GAC9B,IAAI1H,EAASo+C,GAAUC,UAAU9lF,GAEjC,GAAIynC,EASF,OARI1wC,GACF,GAAI2S,KAAK,WAAc1J,EAAK,0DAG1BmvC,GACF1H,EAAO0H,MAAMA,GAGR1H,EAGT,IAAI5gC,EAAmB,kBAAP7G,EAAkB4mC,GAAE,IAAMg/C,GAAY5lF,IAAOA,EAE7D,IAAKqiC,GAAKx7B,GACR,MAAM,IAAIk0B,UAAU,sDASjBl0B,EAAG8R,cAAcotE,aAAgBl/E,EAAG8R,cAAcnhB,KAAKgsC,SAAS38B,IACnE,GAAI6C,KAAK,mDAGX3S,EAAUA,GAAW,GACrB8uF,GAAUG,MAAM,eAAetwF,SAAQ,SAAUuwF,GAC/C,IAAIx7C,EAAOw7C,EAAap/E,EAAIooC,GAAal4C,IAEpC,GAAS0zC,KAASv0C,MAAMC,QAAQs0C,GAKrC1zC,EAAUk4C,GAAal4C,EAAS0zC,GAJ9B,GAAItkC,MAAM,mDAQd,IAAI+/E,EAAkB,GAAUj0C,aAAa,UAK7C,OAJAxK,EAAS,IAAIy+C,EAAgBr/E,EAAI9P,EAASo4C,GAC1C02C,GAAUG,MAAM,SAAStwF,SAAQ,SAAUuwF,GACzC,OAAOA,EAAax+C,MAEfA,EA+FT,GArFAo+C,GAAUM,OAAS,GAcnBN,GAAUG,MAAQ,SAAU5nF,EAAM8F,GAOhC,OANA2hF,GAAUM,OAAO/nF,GAAQynF,GAAUM,OAAO/nF,IAAS,GAE/C8F,IACF2hF,GAAUM,OAAO/nF,GAAQynF,GAAUM,OAAO/nF,GAAMiC,OAAO6D,IAGlD2hF,GAAUM,OAAO/nF,IAa1BynF,GAAUO,KAAO,SAAUhoF,EAAM8F,GAC/B2hF,GAAUG,MAAM5nF,EAAM8F,IAaxB2hF,GAAUQ,SAAW,SAAUjoF,EAAM8F,GACnC2hF,GAAUG,MAAM5nF,EAAM,GAAGiC,OAAO6D,GAAI3D,KAAI,SAAU+lF,GAChD,IAAI54C,EAAU,SAASA,IAErB,OADAm4C,GAAUU,WAAWnoF,EAAMsvC,GACpB44C,EAAShmF,WAAM,EAAQ+H,YAGhC,OAAOqlC,OAiBXm4C,GAAUU,WAAa,SAAUnoF,EAAM8F,GACrC,IAAItO,EAAQiwF,GAAUG,MAAM5nF,GAAMvI,QAAQqO,GAE1C,QAAItO,IAAU,KAIdiwF,GAAUM,OAAO/nF,GAAQynF,GAAUM,OAAO/nF,GAAMrI,QAChD8vF,GAAUM,OAAO/nF,GAAM4P,OAAOpY,EAAO,IAC9B,KAIiC,IAAtC,IAASqgF,0BAAqC9zC,KAAU,CAC1D,IAAI,GAAQyE,GAAE,wBAEd,IAAK,GAAO,CACV,GAAQ,GAAmB,uBAC3B,IAAI,GAAOA,GAAE,QAET,IACF,GAAKnoB,aAAa,GAAO,GAAK1E,YAGhCiuB,GAAe,GAAO,kJAO1BR,GAAiB,EAAGq+C,IAOpBA,GAAUX,QAAU,GAQpBW,GAAU9uF,QAAU,GAAOwE,UAAUi0C,SAQrCq2C,GAAUW,WAAa,WACrB,OAAO,GAAOjwC,SAkBhBsvC,GAAUC,UAAY,SAAU9lF,GAC9B,IACI0oB,EADA6tB,EAAU,GAAOA,QAGrB,GAAkB,kBAAPv2C,EAAiB,CAC1B,IAAIymF,EAAMb,GAAY5lF,GAClBynC,EAAS8O,EAAQkwC,GAErB,GAAIh/C,EACF,OAAOA,EAGT/e,EAAMke,GAAE,IAAM6/C,QAEd/9D,EAAM1oB,EAGR,GAAIqiC,GAAK3Z,GAAM,CACb,IAAIg+D,EAAOh+D,EACPi+D,EAAUD,EAAKj/C,OACfyoC,EAAWwW,EAAKxW,SAGpB,GAAIyW,GAAWpwC,EAAQ25B,GACrB,OAAOyW,GAAWpwC,EAAQ25B,KAehC2V,GAAUe,cAAgB,WACxB,OAEEprF,OAAOkwB,KAAK,GAAO6qB,SAASh2C,KAAI,SAAUorB,GACxC,OAAO,GAAO4qB,QAAQ5qB,MACrBuE,OAAO6R,UAId8jD,GAAUtvC,QAAU,GAAOA,QAC3BsvC,GAAU5zC,aAAe,GAAUA,aAmBnC4zC,GAAU7vC,kBAAoB,SAAUttC,EAAMm+E,GACxC,GAAKl0C,OAAOk0C,IACd,GAAIn9E,KAAK,OAAShB,EAAO,+GAG3B,GAAUstC,kBAAkBx3C,KAAK,GAAWkK,EAAMm+E,IAGpDhB,GAAU/6B,QAAU,GAAKA,QACzB+6B,GAAUl7B,aAAe,GAAKA,aAC9Bk7B,GAAUr5B,IAAMA,GAShBhxD,OAAO6lB,eAAewkE,GAAW,aAAc,CAC7C5vF,MAAO,GACP6wF,WAAW,EACX1rD,YAAY,IAEd5/B,OAAO6lB,eAAewkE,GAAUp5B,WAAY,aAAc,CACxDx2D,MAAOs2D,GACPu6B,WAAW,EACX1rD,YAAY,IASdyqD,GAAUxtC,QAAUA,GASpBwtC,GAAU/tC,cAAgBA,GAC1B+tC,GAAUkB,OAAS,GACnBlB,GAAU52C,aAAeA,GACzB42C,GAAUx7E,KAAOA,GACjBw7E,GAAUT,eAAiBH,GAAOG,eAClCS,GAAUR,iBAAmBJ,GAAOI,iBAapCQ,GAAUhB,OAAS,SAAUn8E,EAAMm8E,GAEjC,OADA,GAAIn7E,KAAK,wEACFu7E,GAAOG,eAAe18E,EAAMm8E,IAGrCgB,GAAUP,WAAaL,GAAOK,WAC9BO,GAAUrB,UAAYS,GAAOT,UAC7BqB,GAAUN,iBAAmBN,GAAOM,iBAepCM,GAAUmB,YAAc,SAAU1sF,EAAMhB,GACtC,IAAI2tF,EAIJ,OAFA3sF,GAAQ,GAAKA,GAAMtE,cACnB6vF,GAAU9uF,QAAQ+5C,UAAY7B,GAAa42C,GAAU9uF,QAAQ+5C,WAAYm2C,EAAgB,GAAIA,EAAc3sF,GAAQhB,EAAM2tF,IAClHpB,GAAU9uF,QAAQ+5C,UAAUx2C,IAUrCurF,GAAUviE,IAAM,GAChBuiE,GAAU3lD,aAAeiB,GACzB0kD,GAAUqB,gBAAkBrB,GAAUhtC,iBAAmBA,GACzDgtC,GAAUzuB,WAAaA,GACvByuB,GAAU5uB,cAAgBA,GAC1B4uB,GAAU1uB,gBAAkBA,GAC5B0uB,GAAU3iC,SAAW,GACrB2iC,GAAUziC,cAAgB,GAC1ByiC,GAAU35C,YAAcA,GACxB25C,GAAUh4E,GAAKA,GACfg4E,GAAUz6C,IAAMA,GAChBy6C,GAAU93E,IAAMA,GAChB83E,GAAUhnF,QAAUA,GAcpBgnF,GAAUnuF,IAAM,IAChBmuF,GAAU5hC,UAAY,GACtB4hC,GAAUxgC,WAAa,GACvBwgC,GAAUtgC,WAAa,GACvB,CAAC,OAAQ,aAAc,WAAY,WAAY,WAAY,cAAe,cAAe,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAiB7vD,SAAQ,SAAUi2B,GACxLk6D,GAAUl6D,GAAK,WAEb,OADA,GAAIjiB,KAAK,WAAaiiB,EAAI,qCAAuCA,EAAI,cAC9Dmb,GAAInb,GAAGrrB,MAAM,KAAM+H,eAG9Bw9E,GAAUpkD,cAAgBA,GAQ1BokD,GAAUsB,IAAMrgD,GAQhB++C,GAAU7sF,IAAMiqD,GAChB4iC,GAAUhY,mBAAqBA;;;;;;;AAY/B,IAAI,GAAa,SAAoBuZ,EAASC,GAE5C,MAAI,YAAYtkF,KAAKskF,GACZA,GAIJ,QAAQtkF,KAAKqkF,KAChBA,EAAU,IAAW7xE,iBAAiB,IAASC,SAASC,KAAM2xE,IAGzD,IAAW7xE,iBAAiB6xE,EAASC,KAe1CC,GAA0B,SAAiCC,EAAwBvuF,EAAKwuF,GAI1F,OAAID,GAA0BC,EAAIC,aAAezuF,IAAQwuF,EAAIC,YACpDD,EAAIC,YAGNzuF,GAGL,GAAiB,SAAwBsR,EAAUF,GACrD,KAAME,aAAoBF,GACxB,MAAM,IAAI2wB,UAAU,sCAIpB,GAAc,WAChB,SAASE,EAAiBlzB,EAAQmzB,GAChC,IAAK,IAAI1kC,EAAI,EAAGA,EAAI0kC,EAAMzkC,OAAQD,IAAK,CACrC,IAAI2kC,EAAaD,EAAM1kC,GACvB2kC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD9/B,OAAO6lB,eAAetZ,EAAQozB,EAAWrlC,IAAKqlC,IAIlD,OAAO,SAAU/wB,EAAamxB,EAAYC,GAGxC,OAFID,GAAYN,EAAiB7wB,EAAY7O,UAAWggC,GACpDC,GAAaP,EAAiB7wB,EAAaoxB,GACxCpxB,GAdO,GAkBds9E,GAAQ,SAASnmE,EAAI1D,EAAQ8pE,EAAUC,GAC1B,OAAX/pE,IAAiBA,EAAS7Z,SAASzI,WACvC,IAAIsgD,EAAOrgD,OAAOsxE,yBAAyBjvD,EAAQ8pE,GAEnD,QAAa5vF,IAAT8jD,EAAoB,CACtB,IAAItZ,EAAS/mC,OAAOiT,eAAeoP,GAEnC,OAAe,OAAX0kB,OACF,EAEOhhB,EAAIghB,EAAQolD,EAAUC,GAE1B,GAAI,UAAW/rC,EACpB,OAAOA,EAAK5lD,MAEZ,IAAI4xF,EAAShsC,EAAKt6B,IAElB,YAAexpB,IAAX8vF,EAIGA,EAAOrpF,KAAKopF,QAJnB,GAQA,GAAW,SAAkBvsF,EAAUC,GACzC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIy/B,UAAU,kEAAoEz/B,GAG1FD,EAASE,UAAYC,OAAOC,OAAOH,GAAcA,EAAWC,UAAW,CACrEG,YAAa,CACXzF,MAAOoF,EACP+/B,YAAY,EACZE,UAAU,EACVD,cAAc,KAGd//B,IAAYE,OAAOqO,eAAiBrO,OAAOqO,eAAexO,EAAUC,GAAcD,EAASM,UAAYL,IAGzG,GAA4B,SAAmC4oB,EAAM1lB,GACvE,IAAK0lB,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAO3lB,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B0lB,EAAP1lB,GAGxEspF,GAAgB,WAClB,SAASC,EAAcnrF,EAAKpG,GAC1B,IAAIwxF,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKpwF,EAET,IACE,IAAK,IAAiCqwF,EAA7BrqD,EAAKnhC,EAAIyrF,OAAO9xF,cAAmB0xF,GAAMG,EAAKrqD,EAAGljB,QAAQykB,MAAO2oD,GAAK,EAG5E,GAFAD,EAAK5xF,KAAKgyF,EAAGnyF,OAETO,GAAKwxF,EAAKvxF,SAAWD,EAAG,MAE9B,MAAOc,GACP4wF,GAAK,EACLC,EAAK7wF,EACL,QACA,KACO2wF,GAAMlqD,EAAG,WAAWA,EAAG,YAC5B,QACA,GAAImqD,EAAI,MAAMC,GAIlB,OAAOH,EAGT,OAAO,SAAUprF,EAAKpG,GACpB,GAAIN,MAAMC,QAAQyG,GAChB,OAAOA,EACF,GAAIyrF,OAAO9xF,YAAYiF,OAAOoB,GACnC,OAAOmrF,EAAcnrF,EAAKpG,GAE1B,MAAM,IAAIukC,UAAU,yDAjCN,GA8ChButD,GAAiBzC,GAAU52C,aAC3Bs5C,GAAgB1C,GAAU35C,YAC1Bs8C,GAAQ3C,GAAUviE,IAWlBmlE,GAAoB,SAA2Bl1D,EAAQv8B,GACzD,CAAC,QAAS,aAAatB,SAAQ,SAAUgzF,GACvC,IAAK,IAAIC,KAAYp1D,EAAO5J,YAAY++D,GACtC,IAAK,IAAIE,KAAYr1D,EAAO5J,YAAY++D,GAAWC,GAAW,CAC5D,IAAIE,EAAkBt1D,EAAO5J,YAAY++D,GAAWC,GAAUC,GAC9D5xF,EAAS6xF,EAAiBH,EAAWC,EAAUC,QAsBnDE,GAAiB,SAAwBxC,EAAUh1B,EAAQllD,GAC7D,IAAI7W,EAAS+7D,EAAOv7D,QACpBqW,EAASA,GAAU,EAGnB,IAFA,IAAI3V,EAASwH,KAAK8C,IAAIulF,EAAS7vF,OAAQ66D,EAAO76D,OAAS2V,GAE9C5V,EAAI4V,EAAQ5V,EAAIC,EAAQD,IAC/BjB,EAAOiB,EAAI4V,GAAUk8E,GAAehC,EAAS9vF,GAAIjB,EAAOiB,EAAI4V,IAG9D,OAAO7W,GAGLwzF,GAAqB,SAA4B1hE,EAAS2hE,GACvD3hE,EAAQyF,cACXzF,EAAQyF,YAAc,GAAWk8D,EAAS3hE,EAAQvwB,MAGhDuwB,EAAQvxB,MAAQuxB,EAAQvxB,IAAIg3B,cAC9BzF,EAAQvxB,IAAIg3B,YAAc,GAAWk8D,EAAS3hE,EAAQvxB,IAAIgB,MAGxDuwB,EAAQ9mB,MAAQ8mB,EAAQ9mB,IAAIusB,cAC9BzF,EAAQ9mB,IAAIusB,YAAc,GAAWk8D,EAAS3hE,EAAQ9mB,IAAIzJ,OAiB1DmyF,GAAe,SAAsB11D,EAAQ3J,GAC/C,IAAIr0B,EAAS+yF,GAAe/0D,EAAQ,IAChC9J,EAAWl0B,EAAOm0B,UAAUE,EAAM5pB,IAEtC,IAAKypB,EACH,OAAO,KAKT,GAAIA,EAASnB,UAAYsB,EAAMtB,UAAYmB,EAASnB,SAAS7xB,SAAWmzB,EAAMtB,SAAS7xB,QAAUgzB,EAASb,UAAYgB,EAAMhB,SAAWa,EAASX,gBAAkBc,EAAMd,cACtK,OAAO,KAGT,IAAIogE,EAAiBZ,GAAe7+D,EAAUG,GAE1CH,EAASnB,WACX4gE,EAAe5gE,SAAWwgE,GAAer/D,EAASnB,SAAUsB,EAAMtB,SAAUsB,EAAMd,cAAgBW,EAASX,gBAI7GogE,EAAe5gE,SAAS5yB,SAAQ,SAAU2xB,GACxC0hE,GAAmB1hE,EAAS6hE,EAAep8D,gBAK7C,IAAK,IAAIt2B,EAAI,EAAGA,EAAIjB,EAAOm0B,UAAUjzB,OAAQD,IACvCjB,EAAOm0B,UAAUlzB,GAAGwJ,KAAO4pB,EAAM5pB,KACnCzK,EAAOm0B,UAAUlzB,GAAK0yF,GAO1B,OAHA3zF,EAAOm0B,UAAUE,EAAM5pB,IAAMkpF,EAE7B3zF,EAAOm0B,UAAUE,EAAM9yB,KAAOoyF,EACvB3zF,GAGL4zF,GAAmB,SAA0BvzF,EAAOkB,GACtD,OAAOlB,EAAQ,IAAMkB,GAGnBsyF,GAAsB,SAA6B71D,GAErD,IAAI/8B,EAAI+8B,EAAO7J,UAAUjzB,OAEzB,MAAOD,IAAK,CACV,IAAIizB,EAAW8J,EAAO7J,UAAUlzB,GAChCizB,EAASqD,YAAc,GAAWyG,EAAOz8B,IAAK2yB,EAAS3yB,KACvD2yB,EAASzpB,GAAKmpF,GAAiB3yF,EAAGizB,EAAS3yB,KAC3Cy8B,EAAO7J,UAAUD,EAASzpB,IAAMypB,EAEhC8J,EAAO7J,UAAUD,EAAS3yB,KAAO2yB,EAE5BA,EAAS1M,aAMZ0M,EAAS1M,WAAa,GACtByrE,GAAM9+E,KAAK,yEAKb2/E,GAAwB,SAA+B91D,GACzDk1D,GAAkBl1D,GAAQ,SAAUsP,GAC9BA,EAAW/rC,MACb+rC,EAAW/V,YAAc,GAAWyG,EAAOz8B,IAAK+rC,EAAW/rC,UAgB7DwyF,GAAe,SAAsB1/D,EAAO0nC,GAC9C,IAAIi4B,EAAc3/D,EAAMtB,SAASsB,EAAMtB,SAAS7xB,OAAS,GACrDynC,OAAQ,EAUZ,OAPEA,EADEozB,GAAUi4B,GAAeA,EAAY7jE,SACR,IAAvB6jE,EAAY7jE,SAImB,KAA9BkE,EAAMe,gBAAkB,IAG5BuT,GAaL,GAAiB,SAAUqgB,GAG7B,SAASirC,EAAeC,EAAQC,GAC9B,IAAI3yF,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAClF,GAAe5J,KAAM+qF,GAErB,IAAIjlE,EAAQ,GAA0B9lB,MAAO+qF,EAAe7tF,WAAaH,OAAOiT,eAAe+6E,IAAiBhrF,KAAKC,OAEjHkrF,EAAwB5yF,EAAQoD,gBAChCA,OAA4CpC,IAA1B4xF,GAA8CA,EAChEC,EAAwB7yF,EAAQ8yF,wBAChCA,OAAoD9xF,IAA1B6xF,GAA8CA,EAC5ErlE,EAAMklE,OAASA,EACfllE,EAAMulE,KAAOJ,EACbnlE,EAAMpqB,gBAAkBA,EACxBoqB,EAAMslE,wBAA0BA,EAChC,IAAIE,EAAaL,EAAIl6C,SAIrB,GAHAjrB,EAAMylE,iBAAmBD,GAAcA,EAAWC,kBAAoB,GACtEzlE,EAAM0lE,iBAAmBF,GAAcA,EAAWE,kBAAoB,IAEjE1lE,EAAMklE,OACT,MAAM,IAAIryF,MAAM,wCA8BlB,OA1BAmtB,EAAM6pB,MAAQ,eAEd7pB,EAAM1W,GAAG,sBAAsB,WACT,kBAAhB0W,EAAM6pB,QAKV7pB,EAAM6pB,MAAQ,wBACd7pB,EAAM42D,QAAU52D,EAAMulE,KAAKpyF,IAAI,CAC7BZ,IAAK,GAAWytB,EAAMgP,OAAOz8B,IAAKytB,EAAMqF,QAAQ9yB,KAChDqD,gBAAiBoqB,EAAMpqB,kBACtB,SAAUgM,EAAOqhF,GAElB,GAAKjjE,EAAM42D,QAIX,OAAIh1E,EACKoe,EAAM2lE,qBAAqB3lE,EAAM42D,QAAS52D,EAAMqF,QAAS,sBAGlErF,EAAM4lE,aAAa5lE,EAAM42D,QAAS52D,EAAMqF,QAAQ9yB,IAAKytB,EAAMqF,QAAQ5pB,WAIhEukB,EAwXT,OA3aA,GAASilE,EAAgBjrC,GAsDzB,GAAYirC,EAAgB,CAAC,CAC3B1zF,IAAK,uBACLG,MAAO,SAA8ByB,EAAK+xB,EAAU2gE,GAClD,IAAItzF,EAAM2yB,EAAS3yB,IACfkJ,EAAKypB,EAASzpB,GAElBvB,KAAK08E,QAAU,KAEXiP,IACF3rF,KAAK2vC,MAAQg8C,GAGf3rF,KAAK0H,MAAQ,CACXsjB,SAAUhrB,KAAK80B,OAAO7J,UAAU1pB,GAChCnH,OAAQnB,EAAImB,OACZmf,QAAS,sCAAwClhB,EAAM,IACvDkB,aAAcN,EAAIM,aAClBsC,KAAM5C,EAAImB,QAAU,IAAM,EAAI,GAEhC4F,KAAKI,QAAQ,WAId,CACD/I,IAAK,eACLG,MAAO,SAAsByB,EAAKsB,EAAKgH,GACrC,IAAImlB,EAAS1mB,KAGbA,KAAK08E,QAAU,KACf18E,KAAK2vC,MAAQ,gBACb,IAAI5T,EAAS,IAAI/S,EAEjBhpB,KAAKurF,iBAAiBt0F,SAAQ,SAAU20F,GACtC,OAAO7vD,EAAOzT,UAAUsjE,MAG1B5rF,KAAKwrF,iBAAiBv0F,SAAQ,SAAU4vB,GACtC,OAAOkV,EAAOlT,aAAahC,MAE7BkV,EAAOpkC,KAAKsB,EAAIM,cAChBwiC,EAAOr9B,MACPq9B,EAAOrS,SAASrxB,IAAMkC,EACtBwhC,EAAOrS,SAASnoB,GAAKA,EAGrBw6B,EAAOrS,SAASpL,WAAayd,EAAOrS,SAASpL,YAAc,GAE3D,IAAIu0C,EAAS23B,GAAaxqF,KAAK80B,OAAQiH,EAAOrS,UAC9C1pB,KAAKksB,eAAiB6P,EAAOrS,SAASwC,eAElC2mC,GACF7yD,KAAK80B,OAAS+9B,EACd7yD,KAAK6rF,OAAS7rF,KAAK80B,OAAO7J,UAAU1pB,IAEpCvB,KAAKI,QAAQ,qBAIVJ,KAAKmrB,QAAQhB,UAChB,IAASpwB,aAAaiG,KAAK8rF,oBAC3B9rF,KAAK8rF,mBAAqB,IAAS3yF,YAAW,WAC5CutB,EAAOtmB,QAAQ,wBACdyqF,GAAa7qF,KAAKmrB,UAAW0nC,KAGlC7yD,KAAKI,QAAQ,oBAMd,CACD/I,IAAK,UACLG,MAAO,WACLwI,KAAKI,QAAQ,WACbJ,KAAK+rF,cACL,IAAShyF,aAAaiG,KAAK8rF,oBAC3B,IAAS/xF,aAAaiG,KAAKgsF,uBAC3BhsF,KAAKsP,QAEN,CACDjY,IAAK,cACLG,MAAO,WACL,GAAIwI,KAAK08E,QAAS,CAChB,IAAIuP,EAAajsF,KAAK08E,QACtB18E,KAAK08E,QAAU,KACfuP,EAAWhxF,mBAAqB,KAChCgxF,EAAWrwF,WAkBd,CACDvE,IAAK,QACLG,MAAO,SAAewzB,EAAUkhE,GAC9B,IAAI1jE,EAASxoB,KAGb,IAAKgrB,EACH,OAAOhrB,KAAK6rF,OAId,GAAmB,iBAAf7rF,KAAK2vC,MACP,MAAM,IAAIh3C,MAAM,qCAAuCqH,KAAK2vC,OAK9D,GAAwB,kBAAb3kB,EAAuB,CAChC,IAAKhrB,KAAK80B,OAAO7J,UAAUD,GACzB,MAAM,IAAIryB,MAAM,yBAA2BqyB,GAG7CA,EAAWhrB,KAAK80B,OAAO7J,UAAUD,GAKnC,GAFA,IAASjxB,aAAaiG,KAAKgsF,uBAEvBE,EAAJ,CACE,IAAIzsD,EAAQzU,EAASkB,eAAiB,EAAI,KAAQ,IAClDlsB,KAAKgsF,sBAAwB,IAAS7yF,WAAW6G,KAAKmrB,MAAMvf,KAAK5L,KAAMgrB,GAAU,GAAQyU,OAF3F,CAMA,IAAIksD,EAAgB3rF,KAAK2vC,MACrBw8C,GAAensF,KAAK6rF,QAAU7gE,EAASzpB,KAAOvB,KAAK6rF,OAAOtqF,GAE9D,GAAIvB,KAAK80B,OAAO7J,UAAUD,EAASzpB,IAAI4oB,QAgBrC,OAdInqB,KAAK08E,UACP18E,KAAK08E,QAAQzhF,mBAAqB,KAClC+E,KAAK08E,QAAQ9gF,QACboE,KAAK08E,QAAU,MAGjB18E,KAAK2vC,MAAQ,gBACb3vC,KAAK6rF,OAAS7gE,OAEVmhE,IACFnsF,KAAKI,QAAQ,iBACbJ,KAAKI,QAAQ,iBAOjB,GAAK+rF,EAAL,CAMA,GAFAnsF,KAAK2vC,MAAQ,kBAET3vC,KAAK08E,QAAS,CAChB,GAAI1xD,EAASqD,cAAgBruB,KAAK08E,QAAQniF,IAGxC,OAGFyF,KAAK08E,QAAQzhF,mBAAqB,KAClC+E,KAAK08E,QAAQ9gF,QACboE,KAAK08E,QAAU,KAIb18E,KAAK6rF,QACP7rF,KAAKI,QAAQ,iBAGfJ,KAAK08E,QAAU18E,KAAKqrF,KAAKpyF,IAAI,CAC3BZ,IAAK2yB,EAASqD,YACd3yB,gBAAiBsE,KAAKtE,kBACrB,SAAUgM,EAAOqhF,GAElB,GAAKvgE,EAAOk0D,QAAZ,CAMA,GAFA1xD,EAASqD,YAAcw6D,GAAwBrgE,EAAO4iE,wBAAyBpgE,EAASqD,YAAa06D,GAEjGrhF,EACF,OAAO8gB,EAAOijE,qBAAqBjjE,EAAOk0D,QAAS1xD,EAAU2gE,GAG/DnjE,EAAOkjE,aAAa3C,EAAK/9D,EAAS3yB,IAAK2yB,EAASzpB,IAG1B,gBAAlBoqF,EACFnjE,EAAOpoB,QAAQ,kBAEfooB,EAAOpoB,QAAQ,uBAQpB,CACD/I,IAAK,QACLG,MAAO,WACLwI,KAAK+rF,cACL,IAAShyF,aAAaiG,KAAK8rF,oBAER,iBAAf9rF,KAAK2vC,QAGP3vC,KAAKosF,SAAU,GAIE,oBAAfpsF,KAAK2vC,MAIH3vC,KAAK6rF,OACP7rF,KAAK2vC,MAAQ,gBAEb3vC,KAAK2vC,MAAQ,cAES,0BAAf3vC,KAAK2vC,QACd3vC,KAAK2vC,MAAQ,mBAOhB,CACDt4C,IAAK,OACLG,MAAO,SAAc00F,GACnB,IAAI90C,EAASp3C,KAEb,IAASjG,aAAaiG,KAAK8rF,oBAC3B,IAAI3gE,EAAQnrB,KAAKmrB,QAEjB,GAAI+gE,EAAJ,CACE,IAAIzsD,EAAQtU,EAAQA,EAAMe,eAAiB,EAAI,IAAO,IACtDlsB,KAAK8rF,mBAAqB,IAAS3yF,YAAW,WAC5C,OAAOi+C,EAAOiQ,SACb5nB,QAIAz/B,KAAKosF,QAKNjhE,IAAUA,EAAMhB,QAClBnqB,KAAKI,QAAQ,sBAEbJ,KAAKI,QAAQ,kBAPbJ,KAAKvB,UAcR,CACDpH,IAAK,QACLG,MAAO,WACL,IAAI8yD,EAAStqD,KAEbA,KAAKosF,SAAU,EAEfpsF,KAAK08E,QAAU18E,KAAKqrF,KAAKpyF,IAAI,CAC3BZ,IAAK2H,KAAKgrF,OACVtvF,gBAAiBsE,KAAKtE,kBACrB,SAAUgM,EAAOqhF,GAElB,GAAKz+B,EAAOoyB,QAAZ,CAOA,GAFApyB,EAAOoyB,QAAU,KAEbh1E,EAaF,OAZA4iD,EAAO5iD,MAAQ,CACbtN,OAAQ2uF,EAAI3uF,OACZmf,QAAS,sCAAwC+wC,EAAO0gC,OAAS,IACjEzxF,aAAcwvF,EAAIxvF,aAElBsC,KAAM,GAGa,iBAAjByuD,EAAO3a,QACT2a,EAAO8hC,SAAU,GAGZ9hC,EAAOlqD,QAAQ,SAGxB,IAAI27B,EAAS,IAAI/S,EAiBjB,GAfAshC,EAAOihC,iBAAiBt0F,SAAQ,SAAU20F,GACxC,OAAO7vD,EAAOzT,UAAUsjE,MAI1BthC,EAAOkhC,iBAAiBv0F,SAAQ,SAAU4vB,GACxC,OAAOkV,EAAOlT,aAAahC,MAG7BkV,EAAOpkC,KAAKoxF,EAAIxvF,cAChBwiC,EAAOr9B,MACP4rD,EAAO3a,MAAQ,cACf2a,EAAO0gC,OAASnC,GAAwBv+B,EAAO8gC,wBAAyB9gC,EAAO0gC,OAAQjC,GACvFhtD,EAAOrS,SAASrxB,IAAMiyD,EAAO0gC,OAEzBjvD,EAAOrS,SAASuB,UAalB,OAZAq/B,EAAOx1B,OAASiH,EAAOrS,SACvBihE,GAAoBrgC,EAAOx1B,QAC3B81D,GAAsBtgC,EAAOx1B,QAE7Bw1B,EAAOlqD,QAAQ,uBAEVkqD,EAAOoyB,SAGVpyB,EAAOn/B,MAAM4Q,EAAOrS,SAASuB,UAAU,KAM3C,IAAI1pB,EAAKmpF,GAAiB,EAAGpgC,EAAO0gC,QA0BpC,OAvBA1gC,EAAOx1B,OAAS,CACd5J,YAAa,CACX,MAAS,GACT,MAAS,GACT,kBAAmB,GACnB,UAAa,IAEf7yB,IAAK,IAAS0e,SAASC,KACvBiU,UAAW,CAAC,CACV5yB,IAAKiyD,EAAO0gC,OACZzpF,GAAIA,EACJ8sB,YAAai8B,EAAO0gC,OAGpB1sE,WAAY,MAGhBgsC,EAAOx1B,OAAO7J,UAAU1pB,GAAM+oD,EAAOx1B,OAAO7J,UAAU,GAEtDq/B,EAAOx1B,OAAO7J,UAAUq/B,EAAO0gC,QAAU1gC,EAAOx1B,OAAO7J,UAAU,GAEjEq/B,EAAOohC,aAAa3C,EAAKz+B,EAAO0gC,OAAQzpF,GAEjC+oD,EAAOlqD,QAAQ,0BAIrB2qF,EA5aY,CA6anBjB,IAQErB,GAAkBrB,GAAUqB,gBAS5B4D,GAAmB,SAA0BrhE,EAAUshE,GACzD,IAAIx1F,EAAS,EACTiB,EAAIu0F,EAActhE,EAASX,cAG3BzB,EAAUoC,EAASnB,SAAS9xB,GAGhC,GAAI6wB,EAAS,CACX,GAA6B,qBAAlBA,EAAQnqB,MACjB,MAAO,CACL3H,OAAQ8xB,EAAQnqB,MAChB6tB,SAAS,GAIb,GAA2B,qBAAhB1D,EAAQlqB,IACjB,MAAO,CACL5H,OAAQ8xB,EAAQlqB,IAAMkqB,EAAQ3B,SAC9BqF,SAAS,GAKf,MAAOv0B,IAAK,CAGV,GAFA6wB,EAAUoC,EAASnB,SAAS9xB,GAED,qBAAhB6wB,EAAQlqB,IACjB,MAAO,CACL5H,OAAQA,EAAS8xB,EAAQlqB,IACzB4tB,SAAS,GAMb,GAFAx1B,GAAU8xB,EAAQ3B,SAEW,qBAAlB2B,EAAQnqB,MACjB,MAAO,CACL3H,OAAQA,EAAS8xB,EAAQnqB,MACzB6tB,SAAS,GAKf,MAAO,CACLx1B,OAAQA,EACRw1B,SAAS,IAYTigE,GAAkB,SAAyBvhE,EAAUshE,GAMvD,IALA,IAAIx1F,EAAS,EACT8xB,OAAU,EACV7wB,EAAIu0F,EAActhE,EAASX,cAGxBtyB,EAAIizB,EAASnB,SAAS7xB,OAAQD,IAAK,CAGxC,GAFA6wB,EAAUoC,EAASnB,SAAS9xB,GAEC,qBAAlB6wB,EAAQnqB,MACjB,MAAO,CACL3H,OAAQ8xB,EAAQnqB,MAAQ3H,EACxBw1B,SAAS,GAMb,GAFAx1B,GAAU8xB,EAAQ3B,SAES,qBAAhB2B,EAAQlqB,IACjB,MAAO,CACL5H,OAAQ8xB,EAAQlqB,IAAM5H,EACtBw1B,SAAS,GAMf,MAAO,CACLx1B,QAAS,EACTw1B,SAAS,IAkBTkgE,GAAmB,SAA0BxhE,EAAUshE,EAAaG,GACtE,IAAIC,OAAW,EACXC,OAAU,EAMd,MAJ2B,qBAAhBL,IACTA,EAActhE,EAASX,cAAgBW,EAASnB,SAAS7xB,QAGvDs0F,EAActhE,EAASX,cAClB,GAITqiE,EAAWL,GAAiBrhE,EAAUshE,GAElCI,EAASpgE,QAIJogE,EAAS51F,QAKlB61F,EAAUJ,GAAgBvhE,EAAUshE,GAEhCK,EAAQrgE,QAGHqgE,EAAQ71F,OAIV41F,EAAS51F,OAAS21F,KAmBvB,GAAW,SAAkBzhE,EAAUshE,EAAaG,GACtD,IAAKzhE,EACH,OAAO,EAST,GANuB,kBAAZyhE,IACTA,EAAU,GAKe,qBAAhBH,EAA6B,CAEtC,GAAIthE,EAASoB,cACX,OAAOpB,EAASoB,cAIlB,IAAKpB,EAASb,QACZ,OAAO,IAAS9nB,SAKpB,OAAOmqF,GAAiBxhE,EAAUshE,EAAaG,IAe7CG,GAAe,SAAsB5hE,EAAU4G,EAAYK,GAC7D,IAAI46D,EAAY,EAEhB,GAAIj7D,EAAaK,EAAU,CACzB,IAAI1J,EAAO,CAAC0J,EAAUL,GACtBA,EAAarJ,EAAK,GAClB0J,EAAW1J,EAAK,GAGlB,GAAIqJ,EAAa,EAAG,CAClB,IAAK,IAAI75B,EAAI65B,EAAY75B,EAAIyH,KAAK8C,IAAI,EAAG2vB,GAAWl6B,IAClD80F,GAAa7hE,EAASkB,eAGxB0F,EAAa,EAGf,IAAK,IAAI0N,EAAK1N,EAAY0N,EAAKrN,EAAUqN,IACvCutD,GAAa7hE,EAASnB,SAASyV,GAAIrY,SAGrC,OAAO4lE,GAuBLC,GAAgB,SAAuB9hE,EAAU+hE,GACnD,IAAK/hE,EAASnB,SAAS7xB,OACrB,OAAO,EAGT,IAAID,EAAIizB,EAASnB,SAAS7xB,OACtBg1F,EAAsBhiE,EAASnB,SAAS9xB,EAAI,GAAGkvB,UAAY+D,EAASkB,eACpE+gE,EAA0C,kBAApBF,EAA+BA,EAAkBC,EAAgD,EAA1BhiE,EAASkB,eAE1G,GAAqB,IAAjB+gE,EACF,OAAOl1F,EAGT,IAAIm1F,EAAkB,EAEtB,MAAOn1F,IAGL,GAFAm1F,GAAmBliE,EAASnB,SAAS9xB,GAAGkvB,SAEpCimE,GAAmBD,EACrB,MAIJ,OAAOztF,KAAKywB,IAAI,EAAGl4B,IAuBjBo1F,GAAc,SAAqBniE,EAAUyhE,EAASW,EAAgBL,GACxE,IAAK/hE,IAAaA,EAASnB,SACzB,OAAO,KAGT,GAAImB,EAASb,QACX,OAAO,GAASa,GAGlB,GAAgB,OAAZyhE,EACF,OAAO,KAGTA,EAAUA,GAAW,EACrB,IAAIH,EAAcc,EAAiBN,GAAc9hE,EAAU+hE,GAAmB/hE,EAASnB,SAAS7xB,OAChG,OAAOw0F,GAAiBxhE,EAAUA,EAASX,cAAgBiiE,EAAaG,IAqBtE,GAAW,SAAkBzhE,EAAUyhE,EAASM,GAClD,IAAIK,GAAiB,EACjBjvB,EAAgBsuB,GAAW,EAC3B1wB,EAAcoxB,GAAYniE,EAAUyhE,EAASW,EAAgBL,GAEjE,OAAoB,OAAhBhxB,EACK0sB,KAGFA,GAAgBtqB,EAAepC,IAGpCsxB,GAAgB,SAAuB/uF,GACzC,OAAOA,EAAMkB,KAAKolB,MAAMtmB,KAAS,GAG/BgvF,GAAwB,SAA+BC,EAAWjvF,GAEpE,GAAI+uF,GAAc/uF,GAChB,OAAOA,EAAkB,GAAZivF,EAKf,IAFA,IAAIC,EAAmBlvF,EAAIwG,WAAW9N,MAAM,KAAK,GAAGgB,OAE3CD,EAAI,EAAGA,GAAKy1F,EAAkBz1F,IAAK,CAC1C,IAAIkK,EAAQzC,KAAK4C,IAAI,GAAIrK,GACrBomD,EAAO7/C,EAAM2D,EAEjB,GAAIorF,GAAclvC,IAASpmD,IAAMy1F,EAC/B,OAAQrvC,EAAOovC,GAAatrF,IAK9BwrF,GAA4BH,GAAsB1hF,KAAK,KAAM,GAC7D8hF,GAA6BJ,GAAsB1hF,KAAK,MAAO,GAa/D+hF,GAAsB,SAA6B3iE,EAAUq7B,EAAaz0B,EAAYlxB,GACxF,IAAI3I,OAAI,EACJ6wB,OAAU,EACVglE,EAAc5iE,EAASnB,SAAS7xB,OAChCu4B,EAAO81B,EAAc3lD,EAEzB,GAAI6vB,EAAO,EAAG,CAGZ,GAAIqB,EAAa,EACf,IAAK75B,EAAI65B,EAAa,EAAG75B,GAAK,EAAGA,IAI/B,GAHA6wB,EAAUoC,EAASnB,SAAS9xB,GAC5Bw4B,GAAQm9D,GAA2B9kE,EAAQ3B,UAEvCsJ,EAAO,EACT,MAAO,CACLs9D,WAAY91F,EACZ2I,UAAWA,EAAYksF,GAAa5hE,EAAU4G,EAAY75B,IAQlE,MAAO,CACL81F,WAAY,EACZntF,UAAW2lD,GAOf,GAAIz0B,EAAa,EAAG,CAClB,IAAK75B,EAAI65B,EAAY75B,EAAI,EAAGA,IAG1B,GAFAw4B,GAAQvF,EAASkB,eAEbqE,EAAO,EACT,MAAO,CACLs9D,WAAY,EACZntF,UAAW2lD,GAKjBz0B,EAAa,EAKf,IAAK75B,EAAI65B,EAAY75B,EAAI61F,EAAa71F,IAIpC,GAHA6wB,EAAUoC,EAASnB,SAAS9xB,GAC5Bw4B,GAAQk9D,GAA0B7kE,EAAQ3B,UAEtCsJ,EAAO,EACT,MAAO,CACLs9D,WAAY91F,EACZ2I,UAAWA,EAAYksF,GAAa5hE,EAAU4G,EAAY75B,IAMhE,MAAO,CACL81F,WAAYD,EAAc,EAC1BltF,UAAW2lD,IAYXynC,GAAgB,SAAuB9iE,GACzC,OAAOA,EAAS+iE,cAAgB/iE,EAAS+iE,aAAelpF,KAAK6qB,OAY3Ds+D,GAAiB,SAAwBhjE,GAC3C,OAAOA,EAAS+iE,cAAgB/iE,EAAS+iE,eAAiB1rF,KAWxD4rF,GAAY,SAAmBjjE,GACjC,IAAIkjE,EAAcJ,GAAc9iE,GAChC,OAAQA,EAASwf,WAAa0jD,GAW5BC,GAAa,SAAoBnjE,GACnC,OAAOA,EAASwf,UASd4jD,GAAQ,SAAejjE,GACzB,IAAK,IAAIpzB,EAAI,EAAGA,EAAIozB,EAAMtB,SAAS7xB,OAAQD,IACzC,GAAIozB,EAAMtB,SAAS9xB,GAAGV,IACpB,OAAO,EAIX,OAAO,GASLg3F,GAAS,SAAgBljE,GAC3B,IAAK,IAAIpzB,EAAI,EAAGA,EAAIozB,EAAMtB,SAAS7xB,OAAQD,IACzC,GAAIozB,EAAMtB,SAAS9xB,GAAG+J,IACpB,OAAO,EAIX,OAAO,GAeLsf,GAAe,SAAsB5Y,EAAMwiB,GAC7C,OAAOA,EAAS1M,YAAc0M,EAAS1M,WAAW9V,IAoBhD8lF,GAA6B,SAAoCC,EAAiB57D,EAAW3H,GAC/F,IAAIwjE,EAAgB5kF,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,EAExF,IAAKwX,GAAa,YAAa4J,GAC7B,OAAOxG,IAGT,IAAIsN,EAAOy8D,EAAkBvjE,EAAS1M,WAAW0J,UACjD,OAAQ8J,EAAuB,EAAhB08D,GAAqB77D,GASlC87D,GAA2B,SAAkC35D,EAAQ3J,GACvE,GAAgC,IAA5B2J,EAAO7J,UAAUjzB,OACnB,OAAO,EAGT,IAAI02F,EAAmBvjE,EAAM7M,WAAW0J,WAAasO,OAAOq4D,UAC5D,OAMc,IANP75D,EAAO7J,UAAUwG,QAAO,SAAUzG,GACvC,QAAKijE,GAAUjjE,KAIPA,EAAS1M,WAAW0J,WAAa,GAAK0mE,KAC7C12F,QAID42F,GAAW,CACb3nE,SAAU,GACV6nC,SAAU,GACVg+B,cAAeA,GACfa,oBAAqBA,GACrBM,UAAWA,GACXE,WAAYA,GACZL,cAAeA,GACfE,eAAgBA,GAChBb,YAAaA,GACbiB,MAAOA,GACPC,OAAQA,GACRjtE,aAAcA,GACdktE,2BAA4BA,GAC5BG,yBAA0BA,IAMxBI,GAAazH,GAAUnuF,IACvB61F,GAAmB1H,GAAU52C,aAE7Bu+C,GAAa,WACf,IAAI91F,EAAM,SAAS+1F,EAAY12F,EAASC,GAEtCD,EAAUw2F,GAAiB,CACzBnzF,QAAS,MACRrD,GAGH,IAAI22F,EAAgBD,EAAYC,eAAiB7H,GAAU8H,IAAIj2F,IAAIg2F,cAEnE,GAAIA,GAA0C,oBAAlBA,EAA8B,CACxD,IAAIE,EAAaF,EAAc32F,GAE3B62F,IACF72F,EAAU62F,GAId,IAAIzS,EAAUmS,GAAWv2F,GAAS,SAAUoP,EAAO5O,GACjD,IAAIs2F,EAAc1S,EAAQ5jF,UAErB4O,GAAS0nF,IACZ1S,EAAQ2S,aAAexqF,KAAK6qB,MAC5BgtD,EAAQ4S,cAAgB5S,EAAQ2S,aAAe3S,EAAQ6S,YACvD7S,EAAQ8R,cAAgBY,EAAYjyF,YAAciyF,EAAYp3F,OAEzD0kF,EAAQ/pD,YACX+pD,EAAQ/pD,UAAYnzB,KAAKolB,MAAM83D,EAAQ8R,cAAgB9R,EAAQ4S,cAAgB,EAAI,OAInFx2F,EAASjC,UACX6lF,EAAQ8S,gBAAkB12F,EAASjC,SAMjC6Q,GAAwB,cAAfA,EAAM7L,OACjB6gF,EAAQ+S,UAAW,GAMhB/nF,GAAUg1E,EAAQviF,SAAmC,MAAxBrB,EAASmB,YAA8C,MAAxBnB,EAASmB,YAA8C,IAAxBnB,EAASmB,aACvGyN,EAAQ,IAAI/O,MAAM,mCAAqC+jF,IAAY0S,GAAe1S,EAAQnjF,iBAG5FhB,EAASmP,EAAOg1E,MAEdgT,EAAgBhT,EAAQ9gF,MAS5B,OAPA8gF,EAAQ9gF,MAAQ,WAEd,OADA8gF,EAAQviF,SAAU,EACXu1F,EAAc7tF,MAAM66E,EAAS9yE,YAGtC8yE,EAAQrkF,IAAMC,EAAQD,IACtBqkF,EAAQ6S,YAAc1qF,KAAK6qB,MACpBgtD,GAGT,OAAOzjF,GAWL02F,GAAe,SAAsBhoE,GACvC,IAAIioE,OAAiB,EACjBC,OAAe,EAKnB,OAFAA,EAAeloE,EAAUha,OAASga,EAAU3vB,OAAS,EACrD43F,EAAiBjoE,EAAUha,OACpB,SAAWiiF,EAAiB,IAAMC,GAUvCC,GAAoB,SAA2BlnE,GACjD,IAAI/xB,EAAU,GAMd,OAJI+xB,EAAQjB,YACV9wB,EAAQk5F,MAAQJ,GAAa/mE,EAAQjB,YAGhC9wB,GAcLm5F,GAAY,SAAmB9hE,EAAOn2B,GACxC,OAAOm2B,EAAMzvB,MAAM1G,GAAK,IAAMm2B,EAAMxvB,IAAI3G,IAUtCk4F,GAAkB,SAAyBr2F,EAAG7B,GAChD,IAAIP,EAAQoC,EAAEkL,SAAS,IACvB,MAAO,KAAKud,UAAU,EAAG,EAAI7qB,EAAMQ,QAAUR,GAASO,EAAI,EAAI,IAAM,KAGlEm4F,GAAoB,SAA2Bt2F,GACjD,OAAIA,GAAK,IAAQA,EAAI,IACZ4M,OAAO+L,aAAa3Y,GAGtB,KAcLu2F,GAA4B,SAAmC52E,GACjE,IAAI62E,EAAe,GAcnB,OAbArzF,OAAOkwB,KAAK1T,GAAStiB,SAAQ,SAAUI,GACrC,IAAIG,EAAQ+hB,EAAQliB,GAEhBg5F,YAAYC,OAAO94F,GACrB44F,EAAa/4F,GAAO,CAClB6pC,MAAO1pC,EAAMkM,OACbC,WAAYnM,EAAMmM,WAClBxG,WAAY3F,EAAM2F,YAGpBizF,EAAa/4F,GAAOG,KAGjB44F,GAQLG,GAAgB,SAAuBv/D,GACzC,IAAIrJ,EAAYqJ,EAAYrJ,WAAa,CACvC3vB,OAAQqK,IACRsL,OAAQ,GAEV,MAAO,CAACga,EAAU3vB,OAAQ2vB,EAAUha,OAAQqjB,EAAY3C,aAAazvB,KAAK,MAOxE4xF,GAAe,SAAsBn5F,GACvC,OAAOA,EAAIg3B,aAOToiE,GAAU,SAAiB51F,GAO7B,IANA,IAAIqmC,EAAQzpC,MAAMqF,UAAUxF,MAAMyI,KAAKlF,GACnCimC,EAAO,GACPhqC,EAAS,GACTs9D,OAAM,EACNs8B,OAAQ,EAEH1yD,EAAI,EAAGA,EAAIkD,EAAMlpC,OAAS8oC,EAAM9C,IACvCo2B,EAAMlzB,EAAM5pC,MAAM0mC,EAAI8C,EAAM9C,EAAI8C,EAAOA,GAAMh/B,IAAImuF,IAAiBrxF,KAAK,IACvE8xF,EAAQxvD,EAAM5pC,MAAM0mC,EAAI8C,EAAM9C,EAAI8C,EAAOA,GAAMh/B,IAAIouF,IAAmBtxF,KAAK,IAC3E9H,GAAUs9D,EAAM,IAAMs8B,EAAQ,KAGhC,OAAO55F,GAGL65F,GAAU,SAAiBpoE,GAC7B,IAAI2Y,EAAQ3Y,EAAK2Y,MACjB,OAAOuvD,GAAQvvD,IAGb0vD,GAAa,SAAoBriE,GACnC,IAAIz3B,EAAS,GACTiB,OAAI,EAER,IAAKA,EAAI,EAAGA,EAAIw2B,EAAOv2B,OAAQD,IAC7BjB,GAAUk5F,GAAUzhE,EAAQx2B,GAAK,IAGnC,OAAOjB,GAGL+5F,GAAqB9zF,OAAOurC,OAAO,CACrC6nD,0BAA2BA,GAC3BI,cAAeA,GACfC,aAAcA,GACdC,QAASA,GACTE,QAASA,GACTC,WAAYA,KAKVE,GAA4B,IAiB5BC,GAA0B,SAAiCC,EAAYpoE,GACzE,IAAKA,EAAQV,eAGX,OAAO,KAGT,IAAI+oE,EAA6BroE,EAAQsoE,gBAAgBD,2BACrDE,EAAkBvoE,EAAQsoE,gBAAgBE,4BAE1CC,EAAiBF,EAAkBF,EACnCK,EAAyBN,EAAaK,EAC1C,OAAO,IAAIxsF,KAAK+jB,EAAQV,eAAeqpE,UAAqC,IAAzBD,IAGjDE,GAA+B,SAAsCN,GACvE,OAAOA,EAAgBO,0BAA4BP,EAAgBE,4BAA8BF,EAAgBD,4BAW/GS,GAA4B,SAAmCC,EAAa3mE,GAI9E,IAAI9C,OAAiB,EAErB,IACEA,EAAiB,IAAIrjB,KAAK8sF,GAC1B,MAAO/3F,GACP,OAAO,KAGT,IAAKoxB,IAAaA,EAASnB,UAAyC,IAA7BmB,EAASnB,SAAS7xB,OACvD,OAAO,KAGT,IAAI4wB,EAAUoC,EAASnB,SAAS,GAEhC,GAAI3B,EAAiBU,EAAQV,eAE3B,OAAO,KAGT,IAAK,IAAInwB,EAAI,EAAGA,EAAIizB,EAASnB,SAAS7xB,OAAS,EAAGD,IAAK,CACrD6wB,EAAUoC,EAASnB,SAAS9xB,GAC5B,IAAI65F,EAAmB5mE,EAASnB,SAAS9xB,EAAI,GAAGmwB,eAEhD,GAAIA,EAAiB0pE,EACnB,MAIJ,IAAI9G,EAAc9/D,EAASnB,SAASmB,EAASnB,SAAS7xB,OAAS,GAC3D65F,EAAmB/G,EAAY5iE,eAC/B8kE,EAAsBlC,EAAYoG,gBAAkBM,GAA6B1G,EAAYoG,iBAAmBpG,EAAY7jE,SAAW6jE,EAAY7jE,SAAW6pE,GAC9JgB,EAAiB,IAAIjtF,KAAKgtF,EAAiBN,UAAkC,IAAtBvE,GAE3D,OAAI9kE,EAAiB4pE,EAEZ,MAGL5pE,EAAiB2pE,IACnBjpE,EAAUkiE,GAGL,CACLliE,QAASA,EACTmpE,eAAgBnpE,EAAQsoE,gBAAkBtoE,EAAQsoE,gBAAgBE,4BAA8BxC,GAAS3nE,SAAS+D,EAAUA,EAASX,cAAgBW,EAASnB,SAASzyB,QAAQwxB,IAK/KjpB,KAAMipB,EAAQsoE,gBAAkB,WAAa,cAW7Cc,GAA2B,SAAkCzhE,EAAMvF,GAKrE,IAAKA,IAAaA,EAASnB,UAAyC,IAA7BmB,EAASnB,SAAS7xB,OACvD,OAAO,KAMT,IAHA,IAAIi6F,EAAa,EACbrpE,OAAU,EAEL7wB,EAAI,EAAGA,EAAIizB,EAASnB,SAAS7xB,OAAQD,IAU5C,GATA6wB,EAAUoC,EAASnB,SAAS9xB,GAO5Bk6F,EAAarpE,EAAQsoE,gBAAkBtoE,EAAQsoE,gBAAgBO,0BAA4BQ,EAAarpE,EAAQ3B,SAE5GsJ,GAAQ0hE,EACV,MAIJ,IAAInH,EAAc9/D,EAASnB,SAASmB,EAASnB,SAAS7xB,OAAS,GAE/D,GAAI8yF,EAAYoG,iBAAmBpG,EAAYoG,gBAAgBO,0BAA4BlhE,EAEzF,OAAO,KAGT,GAAIA,EAAO0hE,EAAY,CAIrB,GAAI1hE,EAAO0hE,EAAanH,EAAY7jE,SAAW6pE,GAI7C,OAAO,KAGTloE,EAAUkiE,EAGZ,MAAO,CACLliE,QAASA,EACTmpE,eAAgBnpE,EAAQsoE,gBAAkBtoE,EAAQsoE,gBAAgBE,4BAA8Ba,EAAarpE,EAAQ3B,SAGrHtnB,KAAMipB,EAAQsoE,gBAAkB,WAAa,aAe7CgB,GAAyB,SAAgCC,EAAqBR,GAChF,IAAIS,OAAkB,EAClBC,OAAkB,EAEtB,IACED,EAAkB,IAAIvtF,KAAKstF,GAC3BE,EAAkB,IAAIxtF,KAAK8sF,GAC3B,MAAO/3F,IAGT,IAAI04F,EAAmBF,EAAgBb,UACnCgB,EAAmBF,EAAgBd,UACvC,OAAQgB,EAAmBD,GAAoB,KAS7CE,GAA4B,SAAmCxnE,GACjE,IAAKA,EAASnB,UAAyC,IAA7BmB,EAASnB,SAAS7xB,OAC1C,OAAO,EAGT,IAAK,IAAID,EAAI,EAAGA,EAAIizB,EAASnB,SAAS7xB,OAAQD,IAAK,CACjD,IAAI6wB,EAAUoC,EAASnB,SAAS9xB,GAEhC,IAAK6wB,EAAQV,eACX,OAAO,EAIX,OAAO,GAmBLuqE,GAAiB,SAAwBlqE,GAC3C,IAAIyC,EAAWzC,EAAKyC,SAChB0nE,EAAYnqE,EAAKgI,KACjBA,OAAqBj3B,IAAdo5F,OAA0Bp5F,EAAYo5F,EAC7Cn6F,EAAWgwB,EAAKhwB,SAEpB,IAAKA,EACH,MAAM,IAAII,MAAM,6CAGlB,IAAKqyB,QAAqB1xB,IAATi3B,EACf,OAAOh4B,EAAS,CACdghB,QAAS,uDAIb,IAAIo5E,EAAiBX,GAAyBzhE,EAAMvF,GAEpD,IAAK2nE,EACH,OAAOp6F,EAAS,CACdghB,QAAS,oCAIb,GAA4B,aAAxBo5E,EAAehzF,KACjB,OAAOpH,EAAS,CACdghB,QAAS,wFACTq5E,SAAUD,EAAeZ,iBAI7B,IAAIc,EAAoB,CACtBC,aAAcviE,GAEZohE,EAAcZ,GAAwBxgE,EAAMoiE,EAAe/pE,SAM/D,OAJI+oE,IACFkB,EAAkBR,gBAAkBV,EAAYoB,eAG3Cx6F,EAAS,KAAMs6F,IAkBpBG,GAAoB,SAASA,EAAkBlqE,GACjD,IAAI6oE,EAAc7oE,EAAM6oE,YACpB3mE,EAAWlC,EAAMkC,SACjBioE,EAAmBnqE,EAAMoqE,WACzBA,OAAkC55F,IAArB25F,EAAiC,EAAIA,EAClDE,EAASrqE,EAAMqqE,OACfC,EAAuBtqE,EAAMuqE,eAC7BA,OAA0C/5F,IAAzB85F,GAA4CA,EAC7Dt3C,EAAOhzB,EAAMgzB,KACbvjD,EAAWuwB,EAAMvwB,SAErB,IAAKA,EACH,MAAM,IAAII,MAAM,gDAGlB,GAA2B,qBAAhBg5F,IAAgC3mE,IAAamoE,EACtD,OAAO56F,EAAS,CACdghB,QAAS,yEAIb,IAAKyR,EAASb,UAAY2xB,EAAKoM,YAC7B,OAAO3vD,EAAS,CACdghB,QAAS,4DAIb,IAAKi5E,GAA0BxnE,GAC7B,OAAOzyB,EAAS,CACdghB,QAAS,yDAA2DyR,EAASqD,cAIjF,IAAIskE,EAAiBjB,GAA0BC,EAAa3mE,GAE5D,IAAK2nE,EACH,OAAOp6F,EAAS,CACdghB,QAASo4E,EAAc,iCAI3B,IAAI/oE,EAAU+pE,EAAe/pE,QACzB0qE,EAAcpB,GAAuBtpE,EAAQV,eAAgBypE,GAEjE,GAA4B,aAAxBgB,EAAehzF,KAEjB,OAAmB,IAAfuzF,EACK36F,EAAS,CACdghB,QAASo4E,EAAc,qCAI3BwB,EAAOR,EAAeZ,eAAiBuB,QACvCx3C,EAAKnP,IAAI,UAAU,WACjBqmD,EAAkB,CAChBrB,YAAaA,EACb3mE,SAAUA,EACVkoE,WAAYA,EAAa,EACzBC,OAAQA,EACRE,eAAgBA,EAChBv3C,KAAMA,EACNvjD,SAAUA,QAShB,IAAIg7F,EAAa3qE,EAAQnqB,MAAQ60F,EAE7BE,EAAiB,WACnB,OAAOj7F,EAAS,KAAMujD,EAAKuK,gBAI7BvK,EAAKnP,IAAI,SAAU6mD,GAEfH,GACFv3C,EAAK4B,QAGPy1C,EAAOI,IAWLE,GAAoB,EAAI,GAMxBC,GAAsC,EAApBD,GAElBE,GAAe,SAAsBC,EAAYruD,GACnD,IAAIsuD,EAAU,GACV97F,OAAI,EAER,GAAI67F,GAAcA,EAAW57F,OAE3B,IAAKD,EAAI,EAAGA,EAAI67F,EAAW57F,OAAQD,IAC7BwtC,EAAUquD,EAAWn1F,MAAM1G,GAAI67F,EAAWl1F,IAAI3G,KAChD87F,EAAQl8F,KAAK,CAACi8F,EAAWn1F,MAAM1G,GAAI67F,EAAWl1F,IAAI3G,KAKxD,OAAOqvF,GAAUhtC,iBAAiBy5C,IAWhCC,GAAY,SAAmBx5C,EAAU/pB,GAC3C,OAAOojE,GAAar5C,GAAU,SAAU77C,EAAOC,GAC7C,OAAOD,EAAQi1F,IAAmBnjE,GAAQ7xB,EAAMg1F,IAAmBnjE,MAWnEwjE,GAAgB,SAAuBH,EAAYrjE,GACrD,OAAOojE,GAAaC,GAAY,SAAUn1F,GACxC,OAAOA,EAAQg1F,IAAqBljE,MAUpCyjE,GAAW,SAAkB15C,GAC/B,GAAIA,EAAStiD,OAAS,EACpB,OAAOovF,GAAUhtC,mBAKnB,IAFA,IAAI7rB,EAAS,GAEJx2B,EAAI,EAAGA,EAAIuiD,EAAStiD,OAAQD,IAAK,CACxC,IAAI0G,EAAQ67C,EAAS57C,IAAI3G,EAAI,GACzB2G,EAAM47C,EAAS77C,MAAM1G,GACzBw2B,EAAO52B,KAAK,CAAC8G,EAAOC,IAGtB,OAAO0oF,GAAUhtC,iBAAiB7rB,IAUhC0lE,GAAiB,SAAwB/lE,GAC3C,IAAIgmE,EAAS,GAEb,IAAKhmE,IAAUA,EAAMl2B,OACnB,MAAO,GAGT,IAAK,IAAID,EAAI,EAAGA,EAAIm2B,EAAMl2B,OAAQD,IAChCm8F,EAAOv8F,KAAKu2B,EAAMzvB,MAAM1G,GAAK,OAASm2B,EAAMxvB,IAAI3G,IAGlD,OAAOm8F,EAAOt1F,KAAK,OAkBjBu1F,GAAoB,SAA2B75C,EAAU+L,GAC3D,IAAIihB,EAAe19D,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,EACnFoyD,EAAc1hB,EAAStiD,OAASsiD,EAAS57C,IAAI47C,EAAStiD,OAAS,GAAK,EACxE,OAAQgkE,EAAc3V,GAAeihB,GASnC8sB,GAAoB,SAA2BR,GAGjD,IAFA,IAAIS,EAAiB,GAEZt8F,EAAI,EAAGA,EAAI67F,EAAW57F,OAAQD,IACrCs8F,EAAe18F,KAAK,CAClB8G,MAAOm1F,EAAWn1F,MAAM1G,GACxB2G,IAAKk1F,EAAWl1F,IAAI3G,KAIxB,OAAOs8F,GAgBLC,GAA8B,SAAqCC,EAAcC,EAAa5rE,GAChG,IAAIogB,EAASwrD,EAAY5jD,QAEzB,GAAIhoB,EAAQ85B,UAAY95B,EAAQ85B,SAAS1qD,OAKvC,IAAK,IAAIyK,KAJJ8xF,EAAaE,oBAChBF,EAAaE,kBAAoB,IAGf7rE,EAAQ8rE,eAC1B,IAAKH,EAAaE,kBAAkBhyF,GAAU,CAC5CumC,EAAOsc,MAAMllD,QAAQ,CACnBT,KAAM,QACNsK,KAAM,YAER,IAAIlG,EAAQilC,EAAOkT,aAAakE,aAAa39C,GAM3C8xF,EAAaE,kBAAkBhyF,GAJ7BsB,GAQwCilC,EAAOqT,mBAAmB,CAClEkF,KAAM,WACNhgD,GAAIkB,EACJ2wB,MAAO3wB,IACN,GAAOsB,MAMd6kB,EAAQu6B,UAAYv6B,EAAQu6B,SAASnrD,SAAWu8F,EAAaI,iBAC/DJ,EAAaI,eAAiB3rD,EAAOqT,mBAAmB,CACtDkF,KAAM,WACNnuB,MAAO,mBACN,GAAOrvB,MACVwwF,EAAaI,eAAeC,gCAAkChsE,EAAQu6B,SAAS0xC,eAiB/EC,GAAsB,SAA6Br2F,EAAOC,EAAKqF,GACjE,IAAIhM,OAAI,EACJ4jD,OAAM,EAEV,GAAK53C,GAIAA,EAAM23C,KAAX,CAIA3jD,EAAIgM,EAAM23C,KAAK1jD,OAEf,MAAOD,IACL4jD,EAAM53C,EAAM23C,KAAK3jD,GAEb4jD,EAAIj7C,WAAahC,GAAOi9C,EAAIC,SAAWn9C,GACzCsF,EAAM0iD,UAAU9K,KAkBlBo5C,GAAkB,SAAyBp5C,GAC7C5+C,OAAOy/B,iBAAiBmf,EAAIq5C,MAAO,CACjCzzF,GAAI,CACFuhB,IAAK,WAEH,OADAskE,GAAUviE,IAAI5Z,KAAK,0DACZ0wC,EAAInkD,MAAMH,MAGrBG,MAAO,CACLsrB,IAAK,WAEH,OADAskE,GAAUviE,IAAI5Z,KAAK,8DACZ0wC,EAAInkD,MAAMqD,OAGrBo6F,YAAa,CACXnyE,IAAK,WAEH,OADAskE,GAAUviE,IAAI5Z,KAAK,oEACZ0wC,EAAInkD,MAAMqD,UAMrBq6F,GAAkB,SAAyBjuE,GAC7C,IAAIkuE,OAAM,EAQV,OALEA,EADExwE,MAAMsC,IAAaznB,KAAKC,IAAIwnB,KAAc5kB,IACtCi0B,OAAOq4D,UAEP1nE,EAGDkuE,GAaL,GAAmB,SAA0BC,EAAeC,EAAcC,GAC5E,IAAIC,EAAM,IAASC,eAAiB,IAASxpF,OAS7C,GAPIqpF,GACFA,EAAap+F,SAAQ,SAAUw+F,GAC7B,IAAI1xF,EAAQ0xF,EAAQjgF,OACpBxV,KAAKy0F,kBAAkB1wF,GAAOu4C,OAAO,IAAIi5C,EAAIE,EAAQ/0F,UAAYV,KAAK01F,gBAAiBD,EAAQ75C,QAAU57C,KAAK01F,gBAAiBD,EAAQriF,SACtIgiF,GAGDE,EAAe,CACjB,IAAIK,EAAgBT,GAAgBE,EAAcQ,aAAa3uE,UAsB/D,GArBAquE,EAAcr+F,SAAQ,SAAUksD,GAC9B,IAAI5yB,EAAO4yB,EAAS0yC,QAAU71F,KAAK01F,kBAKf,kBAATnlE,GAAqB,IAAS5L,MAAM4L,IAASA,EAAO,IAAOA,EAAOluB,KAI7E8gD,EAAS2yC,OAAO7+F,SAAQ,SAAU+9F,GAChC,IAAIr5C,EAAM,IAAI45C,EAAIhlE,EAAMA,EAAMykE,EAAMx9F,OAASw9F,EAAMz6F,KAAOy6F,EAAMn6F,MAAQ,IACxE8gD,EAAIq5C,MAAQA,EACZr5C,EAAInkD,MAAQw9F,EACZD,GAAgBp5C,GAChB37C,KAAK20F,eAAer4C,OAAOX,KAC1B37C,QACFo1F,GAICA,EAAcT,gBAAkBS,EAAcT,eAAej5C,MAAQ05C,EAAcT,eAAej5C,KAAK1jD,OAAQ,CAKjH,IAJA,IAAI0jD,EAAO05C,EAAcT,eAAej5C,KACpCq6C,EAAY,GAGPh+F,EAAI,EAAGA,EAAI2jD,EAAK1jD,OAAQD,IAC3B2jD,EAAK3jD,IACPg+F,EAAUp+F,KAAK+jD,EAAK3jD,IAKxB,IAAIi+F,EAAyBD,EAAU50F,QAAO,SAAUjJ,EAAKyjD,GAC3D,IAAIs6C,EAAW/9F,EAAIyjD,EAAIj7C,YAAc,GAGrC,OAFAu1F,EAASt+F,KAAKgkD,GACdzjD,EAAIyjD,EAAIj7C,WAAau1F,EACd/9F,IACN,IAECg+F,EAAmBn5F,OAAOkwB,KAAK+oE,GAAwBpkF,MAAK,SAAUlG,EAAGmG,GAC3E,OAAOykB,OAAO5qB,GAAK4qB,OAAOzkB,MAG5BqkF,EAAiBj/F,SAAQ,SAAUyJ,EAAWgR,GAC5C,IAAIykF,EAAWH,EAAuBt1F,GAClC01F,EAAW9/D,OAAO4/D,EAAiBxkF,EAAM,KAAOikF,EAEpDQ,EAASl/F,SAAQ,SAAU0kD,GACzBA,EAAIC,QAAUw6C,WAOpBC,GAAwB,qBAAX5/F,OAAyBA,OAAS,GAC/C6/F,GAA2B,qBAAX1M,OAAyB,WAAaA,SACtD2M,GAAc,yBACdC,GAAcH,GAAIG,aAAeH,GAAII,mBAAqBJ,GAAIK,gBAAkBL,GAAIM,cACpFC,GAAMP,GAAIO,KAAOP,GAAIQ,WAAaD,IAAOA,GAAIE,MAC7CC,GAASV,GAAIU,OAUjB,SAASC,GAAWC,EAAUxxF,GAC5B,OAAO,SAAoByxF,GACzB,IAAInnF,EAAI/P,KAER,IAAKyF,EACH,OAAO,IAAIsxF,GAAOE,GACb,GAAIF,KAAWG,EAAe,CAEnC,IAAInwF,EAAStB,EAAGX,WAAWP,QAAQ,gBAAiB,IAAIjN,MAAM,GAAI,GAC9D6/F,EAASC,GAAmBrwF,GAGhC,OAFA/G,KAAKs2F,IAAU,IAAIS,GAAOI,GAC1BE,GAAcr3F,KAAKs2F,IAASa,GACrBn3F,KAAKs2F,IAEZ,IAAIgB,EAAW,CACbC,YAAa,SAAqBrzE,GAC5BnU,EAAEynF,WACJr+F,YAAW,WACT4W,EAAEynF,UAAU,CACV38F,KAAMqpB,EACN5a,OAAQguF,SAMlB7xF,EAAG1F,KAAKu3F,GAERt3F,KAAKu3F,YAAc,SAAUrzE,GAC3B/qB,YAAW,WACTm+F,EAASE,UAAU,CACjB38F,KAAMqpB,EACN5a,OAAQyG,QAKd/P,KAAKy3F,cAAe,GAM1B,GAAIV,GAAQ,CACV,IAAIW,GACAP,GAASC,GAAmB,mCAC5BO,GAAY,IAAIl6F,WAAW,GAE/B,IACEi6F,GAAa,IAAIX,GAAOI,IAExBO,GAAWH,YAAYI,GAAW,CAACA,GAAUj0F,SAC7C,MAAO9J,IACPm9F,GAAS,KACT,QACAH,GAAIgB,gBAAgBT,IAEhBO,IACFA,GAAWG,aAKjB,SAAST,GAAmBr/D,GAC1B,IACE,OAAO6+D,GAAIkB,gBAAgB,IAAIC,KAAK,CAAChgE,GAAM,CACzCp4B,KAAM42F,MAER,MAAO38F,IACP,IAAIo+F,EAAO,IAAIxB,GAEf,OADAwB,EAAKx1B,OAAOzqC,GACL6+D,GAAIkB,gBAAgBE,EAAKC,QAAQt4F,QAI5C,SAAS03F,GAAca,EAAQf,GAC7B,GAAKe,GAAWf,EAAhB,CACA,IAAIgB,EAAOD,EAAOL,UAClBK,EAAOf,OAASA,EAEhBe,EAAOL,UAAY,WACbK,EAAOf,QAAQP,GAAIgB,gBAAgBM,EAAOf,QAC9CgB,EAAKp4F,KAAKm4F,KAId,IAAIE,GAAiB,IAAIpB,GAAW,iCAAiC,SAAUvgG,EAAQ4hG,GACrF,IAAI5yE,EAAOzlB,MAEY,WAUrB,IAAIf,EAAS,WACXe,KAAKF,KAAO,WACV,IAAIqP,EAAY,GAQhBnP,KAAKoP,GAAK,SAAUzP,EAAM0P,GACnBF,EAAUxP,KACbwP,EAAUxP,GAAQ,IAGpBwP,EAAUxP,GAAQwP,EAAUxP,GAAMiC,OAAOyN,IAU3CrP,KAAKsP,IAAM,SAAU3P,EAAM0P,GACzB,IAAIlY,EAEJ,QAAKgY,EAAUxP,KAIfxI,EAAQgY,EAAUxP,GAAMvI,QAAQiY,GAChCF,EAAUxP,GAAQwP,EAAUxP,GAAMrI,QAClC6X,EAAUxP,GAAM4P,OAAOpY,EAAO,GACvBA,GAAS,IASlB6I,KAAKI,QAAU,SAAUT,GACvB,IAAI6P,EAAWzX,EAAGC,EAAQwT,EAG1B,GAFAgE,EAAYL,EAAUxP,GAEjB6P,EAQL,GAAyB,IAArB5F,UAAU5R,OAGZ,IAFAA,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAGgI,KAAKC,KAAM4J,UAAU,QAE/B,CAIL,IAHA4B,EAAO,GACPzT,EAAI6R,UAAU5R,OAETD,EAAI,EAAGA,EAAI6R,UAAU5R,SAAUD,EAClCyT,EAAK7T,KAAKiS,UAAU7R,IAKtB,IAFAC,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EACxByX,EAAUzX,GAAG8J,MAAM7B,KAAMwL,KAS/BxL,KAAKyP,QAAU,WACbN,EAAY,MAelBlQ,EAAOnC,UAAU4S,KAAO,SAAUC,GAgBhC,OAfA3P,KAAKoP,GAAG,QAAQ,SAAUvU,GACxB8U,EAAYhY,KAAKkD,MAEnBmF,KAAKoP,GAAG,QAAQ,SAAUQ,GACxBD,EAAYtP,MAAMuP,MAEpB5P,KAAKoP,GAAG,eAAe,SAAUQ,GAC/BD,EAAYE,aAAaD,MAE3B5P,KAAKoP,GAAG,iBAAiB,SAAUQ,GACjCD,EAAYrP,YAAYsP,MAE1B5P,KAAKoP,GAAG,SAAS,SAAUQ,GACzBD,EAAYnP,MAAMoP,MAEbD,GAOT1Q,EAAOnC,UAAUnF,KAAO,SAAUkD,GAChCmF,KAAKI,QAAQ,OAAQvF,IAGvBoE,EAAOnC,UAAUuD,MAAQ,SAAUuP,GACjC5P,KAAKI,QAAQ,OAAQwP,IAGvB3Q,EAAOnC,UAAU+S,aAAe,SAAUD,GACxC5P,KAAKI,QAAQ,cAAewP,IAG9B3Q,EAAOnC,UAAUwD,YAAc,SAAUsP,GACvC5P,KAAKI,QAAQ,gBAAiBwP,IAGhC3Q,EAAOnC,UAAU0D,MAAQ,SAAUoP,GACjC5P,KAAKI,QAAQ,QAASwP,IAGxB,IAYI02B,EAAKgyD,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAM33F,EAAMC,EAAM23F,EAAMx3F,EAAM4B,EAAM61F,EAAMC,EAAMl1F,EAAMjC,EAAMo3F,EAAMC,EAAM1uD,EAAO2uD,EAAaC,EAAeC,EAAYC,EAAYC,EAAYC,EAAYC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAZ1PzkF,EAASvW,EAWTi7F,EAAa16F,KAAK4C,IAAI,EAAG,IAAM,GAGnC,WACE,IAAIrK,EA2CJ,GA1CA2yC,EAAQ,CACNyvD,KAAM,GAENC,KAAM,GACNC,KAAM,GACN/B,KAAM,GACNgC,KAAM,GACN/B,KAAM,GACNC,KAAM,GACNp1F,KAAM,GACNq1F,KAAM,GACNj3F,KAAM,GACNw3F,KAAM,GACNN,KAAM,GACNC,KAAM,GACNC,KAAM,GACNC,KAAM,GACN0B,KAAM,GAENzB,KAAM,GACNC,KAAM,GACNyB,KAAM,GACNvB,KAAM,GACNwB,KAAM,GACNvB,KAAM,GACNwB,KAAM,GACNC,KAAM,GACN32F,KAAM,GACN42F,KAAM,GACNC,KAAM,GACNC,KAAM,GACN34F,KAAM,GACNH,KAAM,GACND,KAAM,GACNX,KAAM,GACNg4F,KAAM,GACND,KAAM,GACN93F,KAAM,GACN05F,KAAM,IAIkB,qBAAft9F,WAAX,CAIA,IAAK1F,KAAK2yC,EACJA,EAAMvyC,eAAeJ,KACvB2yC,EAAM3yC,GAAK,CAACA,EAAE4F,WAAW,GAAI5F,EAAE4F,WAAW,GAAI5F,EAAE4F,WAAW,GAAI5F,EAAE4F,WAAW,KAIhF07F,EAAc,IAAI57F,WAAW,CAAC,IAAIE,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,KACtG47F,EAAa,IAAI97F,WAAW,CAAC,IAAIE,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,GAAI,IAAIA,WAAW,KACrG27F,EAAgB,IAAI77F,WAAW,CAAC,EAAG,EAAG,EAAG,IACzC+7F,EAAa,IAAI/7F,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,IAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAExEg8F,EAAa,IAAIh8F,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,IAAM,IAAM,IAAM,IAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAExEi8F,EAAa,CACXhyC,MAAO8xC,EACPxkE,MAAOykE,GAETI,EAAO,IAAIp8F,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GAClB,IAAM,IAAM,IAAM,GAClB,EACA,EAAM,EAAM,IAEZm8F,EAAO,IAAIn8F,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,IAENq8F,EAAO,IAAIr8F,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAElBs8F,EAAOD,EACPE,EAAO,IAAIv8F,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAElBw8F,EAAOH,EACPH,EAAO,IAAIl8F,WAAW,CAAC,EACvB,EAAM,EAAM,EACZ,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,MA1GhC,GA8GA6oC,EAAM,SAAa3mC,GACjB,IAEI5H,EACAjB,EACAuM,EAJA23F,EAAU,GACVlpE,EAAO,EAKX,IAAK/5B,EAAI,EAAGA,EAAI6R,UAAU5R,OAAQD,IAChCijG,EAAQrjG,KAAKiS,UAAU7R,IAGzBA,EAAIijG,EAAQhjG,OAEZ,MAAOD,IACL+5B,GAAQkpE,EAAQjjG,GAAGoF,WAQrB,IALArG,EAAS,IAAI2G,WAAWq0B,EAAO,GAC/BzuB,EAAO,IAAII,SAAS3M,EAAO4M,OAAQ5M,EAAO6M,WAAY7M,EAAOqG,YAC7DkG,EAAK43F,UAAU,EAAGnkG,EAAOqG,YACzBrG,EAAOksB,IAAIrjB,EAAM,GAEZ5H,EAAI,EAAG+5B,EAAO,EAAG/5B,EAAIijG,EAAQhjG,OAAQD,IACxCjB,EAAOksB,IAAIg4E,EAAQjjG,GAAI+5B,GACvBA,GAAQkpE,EAAQjjG,GAAGoF,WAGrB,OAAOrG,GAGTwhG,EAAO,WACL,OAAOhyD,EAAIoE,EAAM4tD,KAAMhyD,EAAIoE,EAAM4vD,KAAMT,KAGzCtB,EAAO,SAAcx0F,GACnB,OAAOuiC,EAAIoE,EAAM6tD,KAAM,IAAI96F,WAAW,CAAC,EACvC,EAAM,EAAM,EAEZ,EACA,GACA,EAAM,EACN,EAEA,EACA,GACA,GACA,GACA,EAAM,EAAM,EACZ,EAAM,EAAM,IAAM,IAClB,EAAM,EAAM,IAAM,IAElB,EACA,EAGAsG,EAAMm3F,iBAAmB,EAAIn3F,EAAMo3F,yBAA2B,EAAGp3F,EAAMo3F,wBAA0B,EAAIp3F,EAAMq3F,cAAgB,EAAG,EAAM,EAAM,MAI5I5C,EAAO,WACL,OAAOlyD,EAAIoE,EAAM8tD,KAAMa,EAAaC,EAAeD,EAAaE,IAGlEn2F,EAAO,SAAczD,GACnB,OAAO2mC,EAAIoE,EAAMtnC,KAAMs2F,EAAW/5F,KAGpC84F,EAAO,SAAc59F,GACnB,OAAOyrC,EAAIoE,EAAM+tD,KAAM59F,IAGzB2G,EAAO,SAAcuC,GACnB,IAAIjN,EAAS,IAAI2G,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,GAAM,IAClBsG,EAAMkjB,WAAa,GAAK,IAAMljB,EAAMkjB,WAAa,GAAK,IAAMljB,EAAMkjB,WAAa,EAAI,IAAuB,IAAjBljB,EAAMkjB,SAC/F,GAAM,IACN,EAAM,IAWN,OAPIljB,EAAMs3F,aACRvkG,EAAO,IAAMiN,EAAMs3F,aAAe,GAAK,IACvCvkG,EAAO,IAAMiN,EAAMs3F,aAAe,GAAK,IACvCvkG,EAAO,IAAMiN,EAAMs3F,aAAe,EAAI,IACtCvkG,EAAO,IAAyB,IAAnBiN,EAAMs3F,YAGd/0D,EAAIoE,EAAMlpC,KAAM1K,IAGzBkiG,EAAO,SAAcj1F,GACnB,OAAOuiC,EAAIoE,EAAMsuD,KAAMx3F,EAAKuC,GAAQX,EAAKW,EAAMpE,MAAOg5F,EAAK50F,KAG7D20F,EAAO,SAAc4C,GACnB,OAAOh1D,EAAIoE,EAAMguD,KAAM,IAAIj7F,WAAW,CAAC,EAAM,EAAM,EAAM,GACvC,WAAjB69F,IAAgC,IAAsB,SAAjBA,IAA8B,IAAsB,MAAjBA,IAA4B,EAAoB,IAAjBA,MAI1G3C,EAAO,SAAc50F,GACnB,OAAOuiC,EAAIoE,EAAMiuD,KAAqB,UAAf50F,EAAMpE,KAAmB2mC,EAAIoE,EAAMqwD,KAAMpB,GAAQrzD,EAAIoE,EAAM+vD,KAAMb,GAAOtB,IAAQY,EAAKn1F,KAG9G60F,EAAO,SAAc0C,EAAgBx3F,GACnC,IAAIy3F,EAAiB,GACjBxjG,EAAI+L,EAAO9L,OAEf,MAAOD,IACLwjG,EAAexjG,GAAKgK,EAAK+B,EAAO/L,IAGlC,OAAOuuC,EAAIzkC,MAAM,KAAM,CAAC6oC,EAAMkuD,KAAMF,EAAK4C,IAAiB15F,OAAO25F,KASnE1C,EAAO,SAAc/0F,GACnB,IAAI/L,EAAI+L,EAAO9L,OACX+K,EAAQ,GAEZ,MAAOhL,IACLgL,EAAMhL,GAAKqJ,EAAK0C,EAAO/L,IAGzB,OAAOuuC,EAAIzkC,MAAM,KAAM,CAAC6oC,EAAMmuD,KAAME,EAAK,aAAan3F,OAAOmB,GAAOnB,OAAOk3F,EAAKh1F,MAGlFg1F,EAAO,SAAch1F,GACnB,IAAI/L,EAAI+L,EAAO9L,OACX+K,EAAQ,GAEZ,MAAOhL,IACLgL,EAAMhL,GAAKohG,EAAKr1F,EAAO/L,IAGzB,OAAOuuC,EAAIzkC,MAAM,KAAM,CAAC6oC,EAAMouD,MAAMl3F,OAAOmB,KAG7Cg2F,EAAO,SAAc9xE,GACnB,IAAIia,EAAQ,IAAIzjC,WAAW,CAAC,EAC5B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,GAAM,KACN,WAAXwpB,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,EACtF,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,EAClN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1I,IAAM,IAAM,IAAM,MAElB,OAAOqf,EAAIoE,EAAMquD,KAAM73D,IAGzB+3D,EAAO,SAAcl1F,GACnB,IAEIy3F,EACAzjG,EAHAiL,EAAUe,EAAMf,SAAW,GAC3Bk+B,EAAQ,IAAIzjC,WAAW,EAAIuF,EAAQhL,QAKvC,IAAKD,EAAI,EAAGA,EAAIiL,EAAQhL,OAAQD,IAC9ByjG,EAAQx4F,EAAQjL,GAAGyjG,MACnBt6D,EAAMnpC,EAAI,GAAKyjG,EAAMC,WAAa,EAAID,EAAME,cAAgB,EAAIF,EAAMG,cAGxE,OAAOr1D,EAAIoE,EAAMuuD,KAAM/3D,IAGzBg4D,EAAO,SAAcn1F,GACnB,OAAOuiC,EAAIoE,EAAMwuD,KAAMl1F,EAAKD,GAAQuiC,EAAIoE,EAAMmwD,KAAMZ,GAAO3zD,EAAIoE,EAAMiwD,KAAMZ,GAAOzzD,EAAIoE,EAAMkwD,KAAMZ,GAAO1zD,EAAIoE,EAAMgwD,KAAMZ,KAG3H,WACE,IAAI8B,EAAaC,EAEjB73F,EAAO,SAAcD,GACnB,OAAOuiC,EAAIoE,EAAM1mC,KAAM,IAAIvG,WAAW,CAAC,EACvC,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,IAAuB,UAAfsG,EAAMpE,KAAmBi8F,EAAY73F,GAAS83F,EAAY93F,KAGtF63F,EAAc,SAAqB73F,GACjC,IAIIhM,EACA+jG,EALAC,EAAMh4F,EAAMg4F,KAAO,GACnBC,EAAMj4F,EAAMi4F,KAAO,GACnBC,EAAwB,GACxBC,EAAuB,GAI3B,IAAKnkG,EAAI,EAAGA,EAAIgkG,EAAI/jG,OAAQD,IAC1BkkG,EAAsBtkG,MAA0B,MAApBokG,EAAIhkG,GAAGoF,cAAyB,GAC5D8+F,EAAsBtkG,KAAyB,IAApBokG,EAAIhkG,GAAGoF,YAElC8+F,EAAwBA,EAAsBr6F,OAAOnK,MAAMqF,UAAUxF,MAAMyI,KAAKg8F,EAAIhkG,KAItF,IAAKA,EAAI,EAAGA,EAAIikG,EAAIhkG,OAAQD,IAC1BmkG,EAAqBvkG,MAA0B,MAApBqkG,EAAIjkG,GAAGoF,cAAyB,GAC3D++F,EAAqBvkG,KAAyB,IAApBqkG,EAAIjkG,GAAGoF,YACjC++F,EAAuBA,EAAqBt6F,OAAOnK,MAAMqF,UAAUxF,MAAMyI,KAAKi8F,EAAIjkG,KA+BpF,GA5BA+jG,EAAU,CAACpxD,EAAMyvD,KAAM,IAAI18F,WAAW,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,EACrE,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GACnD,MAAdsG,EAAM+jB,QAAmB,EAAiB,IAAd/jB,EAAM+jB,OACnB,MAAf/jB,EAAMgkB,SAAoB,EAAkB,IAAfhkB,EAAMgkB,OACpC,EAAM,GAAM,EAAM,EAClB,EAAM,GAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EACN,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1L,EAAM,GACN,GAAM,KACFue,EAAIoE,EAAM0vD,KAAM,IAAI38F,WAAW,CAAC,EACpCsG,EAAMo4F,WACNp4F,EAAMq4F,qBACNr4F,EAAMs4F,SACN,KACEz6F,OAAO,CAACm6F,EAAI/jG,QACdikG,EACA,CAACD,EAAIhkG,QACLkkG,KACK51D,EAAIoE,EAAM2vD,KAAM,IAAI58F,WAAW,CAAC,EAAM,GAAM,IAAM,IACvD,EAAM,GAAM,IAAM,IAClB,EAAM,GAAM,IAAM,QAGdsG,EAAMu4F,SAAU,CAClB,IAAIC,EAAWx4F,EAAMu4F,SAAS,GAC1BE,EAAWz4F,EAAMu4F,SAAS,GAC9BR,EAAQnkG,KAAK2uC,EAAIoE,EAAM8vD,KAAM,IAAI/8F,WAAW,EAAa,WAAX8+F,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,GAA6B,WAAXC,IAA0B,IAAgB,SAAXA,IAAwB,IAAgB,MAAXA,IAAsB,EAAc,IAAXA,MAG5O,OAAOl2D,EAAIzkC,MAAM,KAAMi6F,IAGzBD,EAAc,SAAqB93F,GACjC,OAAOuiC,EAAIoE,EAAM6vD,KAAM,IAAI98F,WAAW,CACtC,EAAM,EAAM,EAAM,EAAM,EAAM,EAC9B,EAAM,EAEN,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GACI,MAArBsG,EAAMq3F,eAA0B,EAAwB,IAArBr3F,EAAMq3F,cACtB,MAAnBr3F,EAAM04F,aAAwB,EAAsB,IAAnB14F,EAAM04F,WACxC,EAAM,EACN,EAAM,GACc,MAAnB14F,EAAMs3F,aAAwB,EAAsB,IAAnBt3F,EAAMs3F,WAAmB,EAAM,IAE7D9C,EAAKx0F,KAjFb,GAqFA1C,EAAO,SAAc0C,GACnB,IAAIjN,EAAS,IAAI2G,WAAW,CAAC,EAC7B,EAAM,EAAM,EACZ,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,GACN,WAAXsG,EAAMxC,KAAoB,IAAgB,SAAXwC,EAAMxC,KAAkB,IAAgB,MAAXwC,EAAMxC,KAAgB,EAAc,IAAXwC,EAAMxC,GAC5F,EAAM,EAAM,EAAM,GACA,WAAjBwC,EAAMkjB,WAA0B,IAAsB,SAAjBljB,EAAMkjB,WAAwB,IAAsB,MAAjBljB,EAAMkjB,WAAsB,EAAoB,IAAjBljB,EAAMkjB,SAC9G,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAC1C,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EACN,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,GACnM,MAAdljB,EAAM+jB,QAAmB,EAAiB,IAAd/jB,EAAM+jB,MAAc,EAAM,GACvC,MAAf/jB,EAAMgkB,SAAoB,EAAkB,IAAfhkB,EAAMgkB,OAAe,EAAM,IAEzD,OAAOue,EAAIoE,EAAMrpC,KAAMvK,IAQzBiL,EAAO,SAAcgC,GACnB,IAAI24F,EAAqBC,EAAyBC,EAAkBC,EAAuBC,EAAYC,EAA8BC,EA0BrI,OAzBAN,EAAsBp2D,EAAIoE,EAAM1oC,KAAM,IAAIvE,WAAW,CAAC,EACtD,EAAM,EAAM,IACA,WAAXsG,EAAMxC,KAAoB,IAAgB,SAAXwC,EAAMxC,KAAkB,IAAgB,MAAXwC,EAAMxC,KAAgB,EAAc,IAAXwC,EAAMxC,GAC5F,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,KAElBw7F,EAA+Bv9F,KAAKolB,MAAM7gB,EAAMpB,qBAAuBu3F,EAAa,IACpF8C,EAA+Bx9F,KAAKolB,MAAM7gB,EAAMpB,qBAAuBu3F,EAAa,IACpFyC,EAA0Br2D,EAAIoE,EAAMvoC,KAAM,IAAI1E,WAAW,CAAC,EAC1D,EAAM,EAAM,EAEZs/F,IAAiC,GAAK,IAAMA,IAAiC,GAAK,IAAMA,IAAiC,EAAI,IAAqC,IAA/BA,EAAqCC,IAAiC,GAAK,IAAMA,IAAiC,GAAK,IAAMA,IAAiC,EAAI,IAAqC,IAA/BA,KAI3SF,EAAa,GAQM,UAAf/4F,EAAMpE,MACRi9F,EAAmBxD,EAAKr1F,EAAO+4F,GACxBx2D,EAAIoE,EAAM3oC,KAAM26F,EAAqBC,EAAyBC,KAMvEC,EAAwB5D,EAAKl1F,GAC7B64F,EAAmBxD,EAAKr1F,EAAO84F,EAAsB7kG,OAAS8kG,GACvDx2D,EAAIoE,EAAM3oC,KAAM26F,EAAqBC,EAAyBC,EAAkBC,KASzFz7F,EAAO,SAAc2C,GAEnB,OADAA,EAAMkjB,SAAWljB,EAAMkjB,UAAY,WAC5Bqf,EAAIoE,EAAMtpC,KAAMC,EAAK0C,GAAQi1F,EAAKj1F,KAG3Co1F,EAAO,SAAcp1F,GACnB,IAAIjN,EAAS,IAAI2G,WAAW,CAAC,EAC7B,EAAM,EAAM,GACA,WAAXsG,EAAMxC,KAAoB,IAAgB,SAAXwC,EAAMxC,KAAkB,IAAgB,MAAXwC,EAAMxC,KAAgB,EAAc,IAAXwC,EAAMxC,GAC5F,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,EAClB,EAAM,EAAM,EAAM,IAUlB,MAJmB,UAAfwC,EAAMpE,OACR7I,EAAOA,EAAOkB,OAAS,GAAK,GAGvBsuC,EAAIoE,EAAMyuD,KAAMriG,IAGzB,WACE,IAAImmG,EAAWC,EAAWC,EAK1BA,EAAa,SAAoBn6F,EAAS2K,GACxC,IAAIyvF,EAAkB,EAClBC,EAAc,EACdC,EAAe,EACf16F,EAAwB,EAoB5B,OAlBII,EAAQhL,cACkBsB,IAAxB0J,EAAQ,GAAGikB,WACbm2E,EAAkB,QAGI9jG,IAApB0J,EAAQ,GAAG8uB,OACburE,EAAc,QAGS/jG,IAArB0J,EAAQ,GAAGw4F,QACb8B,EAAe,QAGwBhkG,IAArC0J,EAAQ,GAAGJ,wBACbA,EAAwB,IAIrB,CAAC,EACR,EAAMw6F,EAAkBC,EAAcC,EAAe16F,EAAuB,GAC1D,WAAjBI,EAAQhL,UAAyB,IAAsB,SAAjBgL,EAAQhL,UAAuB,IAAsB,MAAjBgL,EAAQhL,UAAqB,EAAoB,IAAjBgL,EAAQhL,QACzG,WAAT2V,KAAyB,IAAc,SAATA,KAAuB,IAAc,MAATA,KAAqB,EAAY,IAATA,IAIrFuvF,EAAY,SAAmBn5F,EAAO4J,GACpC,IAAIuzB,EAAOl+B,EAASu6F,EAAQxlG,EAK5B,IAJAiL,EAAUe,EAAMf,SAAW,GAC3B2K,GAAU,GAAS,GAAK3K,EAAQhL,OAChCkpC,EAAQi8D,EAAWn6F,EAAS2K,GAEvB5V,EAAI,EAAGA,EAAIiL,EAAQhL,OAAQD,IAC9BwlG,EAASv6F,EAAQjL,GACjBmpC,EAAQA,EAAMt/B,OAAO,EAAoB,WAAlB27F,EAAOt2E,YAA2B,IAAuB,SAAlBs2E,EAAOt2E,YAAyB,IAAuB,MAAlBs2E,EAAOt2E,YAAuB,EAAqB,IAAlBs2E,EAAOt2E,UAC5H,WAAds2E,EAAOzrE,QAAuB,IAAmB,SAAdyrE,EAAOzrE,QAAqB,IAAmB,MAAdyrE,EAAOzrE,QAAmB,EAAiB,IAAdyrE,EAAOzrE,KACzGyrE,EAAO/B,MAAMgC,WAAa,EAAID,EAAO/B,MAAMC,UAAW8B,EAAO/B,MAAME,cAAgB,EAAI6B,EAAO/B,MAAMG,eAAiB,EAAI4B,EAAO/B,MAAMiC,cAAgB,EAAIF,EAAO/B,MAAMkC,gBAAoD,MAAnCH,EAAO/B,MAAMmC,oBAAoE,GAAnCJ,EAAO/B,MAAMmC,qBACnN,WAA/BJ,EAAO36F,yBAAwC,IAAoC,SAA/B26F,EAAO36F,yBAAsC,IAAoC,MAA/B26F,EAAO36F,yBAAoC,EAAkC,IAA/B26F,EAAO36F,wBAI9J,OAAO0jC,EAAIoE,EAAM0uD,KAAM,IAAI37F,WAAWyjC,KAGxC+7D,EAAY,SAAmBl5F,EAAO4J,GACpC,IAAIuzB,EAAOl+B,EAASu6F,EAAQxlG,EAK5B,IAJAiL,EAAUe,EAAMf,SAAW,GAC3B2K,GAAU,GAAS,EAAI3K,EAAQhL,OAC/BkpC,EAAQi8D,EAAWn6F,EAAS2K,GAEvB5V,EAAI,EAAGA,EAAIiL,EAAQhL,OAAQD,IAC9BwlG,EAASv6F,EAAQjL,GACjBmpC,EAAQA,EAAMt/B,OAAO,EAAoB,WAAlB27F,EAAOt2E,YAA2B,IAAuB,SAAlBs2E,EAAOt2E,YAAyB,IAAuB,MAAlBs2E,EAAOt2E,YAAuB,EAAqB,IAAlBs2E,EAAOt2E,UAC5H,WAAds2E,EAAOzrE,QAAuB,IAAmB,SAAdyrE,EAAOzrE,QAAqB,IAAmB,MAAdyrE,EAAOzrE,QAAmB,EAAiB,IAAdyrE,EAAOzrE,OAG3G,OAAOwU,EAAIoE,EAAM0uD,KAAM,IAAI37F,WAAWyjC,KAGxCk4D,EAAO,SAAcr1F,EAAO4J,GAC1B,MAAmB,UAAf5J,EAAMpE,KACDs9F,EAAUl5F,EAAO4J,GAGnBuvF,EAAUn5F,EAAO4J,IA3E5B,GA+EA,IAmXAnB,EACIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAzXA8wF,EAAe,CACjBpF,KAAMA,EACNC,KAAMA,EACNG,KAAMA,EACNC,KAAMA,EACN7nE,YAAa,SAAqBltB,GAChC,IAEIhN,EAFA+mG,EAAWrF,IACXsF,EAAQjF,EAAK/0F,GAKjB,OAHAhN,EAAS,IAAI2G,WAAWogG,EAAS1gG,WAAa2gG,EAAM3gG,YACpDrG,EAAOksB,IAAI66E,GACX/mG,EAAOksB,IAAI86E,EAAOD,EAAS1gG,YACpBrG,IAcPinG,EAAsB,SAA6BC,GACrD,IAAIjmG,EACAkmG,EACAC,EAAe,GACfpI,EAAS,GAOb,IALAA,EAAO34F,WAAa,EACpB24F,EAAOqI,SAAW,EAClBrI,EAAO7uE,SAAW,EAClBi3E,EAAa/gG,WAAa,EAErBpF,EAAI,EAAGA,EAAIimG,EAAShmG,OAAQD,IAC/BkmG,EAAaD,EAASjmG,GAES,+BAA3BkmG,EAAWrtF,aAGTstF,EAAalmG,SACfkmG,EAAaj3E,SAAWg3E,EAAW/9F,IAAMg+F,EAAah+F,IAEtD41F,EAAO34F,YAAc+gG,EAAa/gG,WAClC24F,EAAOqI,UAAYD,EAAalmG,OAChC89F,EAAO7uE,UAAYi3E,EAAaj3E,SAChC6uE,EAAOn+F,KAAKumG,IAGdA,EAAe,CAACD,GAChBC,EAAa/gG,WAAa8gG,EAAWpjG,KAAKsC,WAC1C+gG,EAAa/9F,IAAM89F,EAAW99F,IAC9B+9F,EAAah+F,IAAM+9F,EAAW/9F,MAGC,8CAA3B+9F,EAAWrtF,cACbstF,EAAaE,UAAW,GAG1BF,EAAaj3E,SAAWg3E,EAAW/9F,IAAMg+F,EAAah+F,IACtDg+F,EAAa/gG,YAAc8gG,EAAWpjG,KAAKsC,WAC3C+gG,EAAavmG,KAAKsmG,IAgBtB,OAVInI,EAAO99F,UAAYkmG,EAAaj3E,UAAYi3E,EAAaj3E,UAAY,KACvEi3E,EAAaj3E,SAAW6uE,EAAOA,EAAO99F,OAAS,GAAGivB,UAKpD6uE,EAAO34F,YAAc+gG,EAAa/gG,WAClC24F,EAAOqI,UAAYD,EAAalmG,OAChC89F,EAAO7uE,UAAYi3E,EAAaj3E,SAChC6uE,EAAOn+F,KAAKumG,GACLpI,GAOLuI,EAAsB,SAA6BvI,GACrD,IAAI/9F,EACAmmG,EACAI,EAAa,GACbC,EAAO,GAeX,IAZAD,EAAWnhG,WAAa,EACxBmhG,EAAWH,SAAW,EACtBG,EAAWr3E,SAAW,EACtBq3E,EAAWn+F,IAAM21F,EAAO,GAAG31F,IAC3Bm+F,EAAWp+F,IAAM41F,EAAO,GAAG51F,IAE3Bq+F,EAAKphG,WAAa,EAClBohG,EAAKJ,SAAW,EAChBI,EAAKt3E,SAAW,EAChBs3E,EAAKp+F,IAAM21F,EAAO,GAAG31F,IACrBo+F,EAAKr+F,IAAM41F,EAAO,GAAG51F,IAEhBnI,EAAI,EAAGA,EAAI+9F,EAAO99F,OAAQD,IAC7BmmG,EAAepI,EAAO/9F,GAElBmmG,EAAaE,UAGXE,EAAWtmG,SACbumG,EAAK5mG,KAAK2mG,GACVC,EAAKphG,YAAcmhG,EAAWnhG,WAC9BohG,EAAKJ,UAAYG,EAAWH,SAC5BI,EAAKt3E,UAAYq3E,EAAWr3E,UAG9Bq3E,EAAa,CAACJ,GACdI,EAAWH,SAAWD,EAAalmG,OACnCsmG,EAAWnhG,WAAa+gG,EAAa/gG,WACrCmhG,EAAWn+F,IAAM+9F,EAAa/9F,IAC9Bm+F,EAAWp+F,IAAMg+F,EAAah+F,IAC9Bo+F,EAAWr3E,SAAWi3E,EAAaj3E,WAEnCq3E,EAAWr3E,UAAYi3E,EAAaj3E,SACpCq3E,EAAWH,UAAYD,EAAalmG,OACpCsmG,EAAWnhG,YAAc+gG,EAAa/gG,WACtCmhG,EAAW3mG,KAAKumG,IAapB,OATIK,EAAKvmG,QAAUsmG,EAAWr3E,UAAY,IACxCq3E,EAAWr3E,SAAWs3E,EAAKA,EAAKvmG,OAAS,GAAGivB,UAG9Cs3E,EAAKphG,YAAcmhG,EAAWnhG,WAC9BohG,EAAKJ,UAAYG,EAAWH,SAC5BI,EAAKt3E,UAAYq3E,EAAWr3E,SAE5Bs3E,EAAK5mG,KAAK2mG,GACHC,GAaLC,EAAsB,SAA6BD,GACrD,IAAID,EAeJ,OAbKC,EAAK,GAAG,GAAGH,UAAYG,EAAKvmG,OAAS,IAExCsmG,EAAaC,EAAK3+D,QAClB2+D,EAAKphG,YAAcmhG,EAAWnhG,WAC9BohG,EAAKJ,UAAYG,EAAWH,SAI5BI,EAAK,GAAG,GAAGr+F,IAAMo+F,EAAWp+F,IAC5Bq+F,EAAK,GAAG,GAAGp+F,IAAMm+F,EAAWn+F,IAC5Bo+F,EAAK,GAAG,GAAGt3E,UAAYq3E,EAAWr3E,UAG7Bs3E,GAQLE,EAAsB,WACxB,MAAO,CACL3sE,KAAM,EACN0pE,MAAO,CACLgC,UAAW,EACX/B,UAAW,EACXC,aAAc,EACdC,cAAe,EACfgC,oBAAqB,EACrBD,gBAAiB,KAcnBgB,EAAiB,SAAwB1J,EAAO8H,GAClD,IAAIS,EAASkB,IAab,OAZAlB,EAAOT,WAAaA,EACpBS,EAAO36F,sBAAwBoyF,EAAM70F,IAAM60F,EAAM90F,IACjDq9F,EAAOt2E,SAAW+tE,EAAM/tE,SACxBs2E,EAAOzrE,KAAO,EAAIkjE,EAAMh9F,OAExBulG,EAAOzrE,MAAQkjE,EAAM73F,WAEjB63F,EAAMoJ,WACRb,EAAO/B,MAAMC,UAAY,EACzB8B,EAAO/B,MAAMkC,gBAAkB,GAG1BH,GAILoB,EAAsB,SAA6BJ,EAAMK,GAC3D,IAAIvmC,EACAtgE,EACAwlG,EACAe,EACAJ,EACApB,EAAa8B,GAAkB,EAC/B57F,EAAU,GAEd,IAAKq1D,EAAI,EAAGA,EAAIkmC,EAAKvmG,OAAQqgE,IAG3B,IAFAimC,EAAaC,EAAKlmC,GAEbtgE,EAAI,EAAGA,EAAIumG,EAAWtmG,OAAQD,IACjCmmG,EAAeI,EAAWvmG,GAC1BwlG,EAASmB,EAAeR,EAAcpB,GACtCA,GAAcS,EAAOzrE,KACrB9uB,EAAQrL,KAAK4lG,GAIjB,OAAOv6F,GAIL67F,GAAqB,SAA4BN,GACnD,IAAIlmC,EACAtgE,EACAimC,EACAsgE,EACAJ,EACAD,EACAnB,EAAa,EACbgC,EAAiBP,EAAKphG,WACtB4hG,EAAeR,EAAKJ,SACpBa,EAAkBF,EAAiB,EAAIC,EACvClkG,EAAO,IAAI4C,WAAWuhG,GACtB37F,EAAO,IAAII,SAAS5I,EAAK6I,QAE7B,IAAK20D,EAAI,EAAGA,EAAIkmC,EAAKvmG,OAAQqgE,IAG3B,IAFAimC,EAAaC,EAAKlmC,GAEbtgE,EAAI,EAAGA,EAAIumG,EAAWtmG,OAAQD,IAGjC,IAFAmmG,EAAeI,EAAWvmG,GAErBimC,EAAI,EAAGA,EAAIkgE,EAAalmG,OAAQgmC,IACnCigE,EAAaC,EAAalgE,GAC1B36B,EAAK43F,UAAU6B,EAAYmB,EAAWpjG,KAAKsC,YAC3C2/F,GAAc,EACdjiG,EAAKmoB,IAAIi7E,EAAWpjG,KAAMiiG,GAC1BA,GAAcmB,EAAWpjG,KAAKsC,WAKpC,OAAOtC,GAILokG,GAA8B,SAAqCjK,EAAO4J,GAC5E,IAAIrB,EACAT,EAAa8B,GAAkB,EAC/B57F,EAAU,GAGd,OAFAu6F,EAASmB,EAAe1J,EAAO8H,GAC/B95F,EAAQrL,KAAK4lG,GACNv6F,GAILk8F,GAA6B,SAAoClK,GACnE,IAAIj9F,EACAkmG,EACAnB,EAAa,EACbgC,EAAiB9J,EAAM73F,WACvB4hG,EAAe/J,EAAMh9F,OACrBgnG,EAAkBF,EAAiB,EAAIC,EACvClkG,EAAO,IAAI4C,WAAWuhG,GACtB37F,EAAO,IAAII,SAAS5I,EAAK6I,QAE7B,IAAK3L,EAAI,EAAGA,EAAIi9F,EAAMh9F,OAAQD,IAC5BkmG,EAAajJ,EAAMj9F,GACnBsL,EAAK43F,UAAU6B,EAAYmB,EAAWpjG,KAAKsC,YAC3C2/F,GAAc,EACdjiG,EAAKmoB,IAAIi7E,EAAWpjG,KAAMiiG,GAC1BA,GAAcmB,EAAWpjG,KAAKsC,WAGhC,OAAOtC,GAGLskG,GAAa,CACfpB,oBAAqBA,EACrBM,oBAAqBA,EACrBG,oBAAqBA,EACrBG,oBAAqBA,EACrBE,mBAAoBA,GACpBI,4BAA6BA,GAC7BC,2BAA4BA,IAS1BE,GAAa,CAAC,GAAI,GAAI,EAAG,GAAI,IAAK,IAClCC,GAAY,CAAC,GAAI,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,KAEjEC,GAAW,SAAkBl9E,GAC/B,IAAI1W,EAAI,GAER,MAAO0W,IACL1W,EAAE/T,KAAK,GAGT,OAAO+T,GAGL6zF,GAAY,SAAmBC,GACjC,OAAOziG,OAAOkwB,KAAKuyE,GAAWr+F,QAAO,SAAUjJ,EAAKb,GAIlD,OAHAa,EAAIb,GAAO,IAAIoG,WAAW+hG,EAAUnoG,GAAK8J,QAAO,SAAUhD,EAAKg+D,GAC7D,OAAOh+D,EAAIyD,OAAOu6D,KACjB,KACIjkE,IACN,KAIDunG,GAAgB,CAClBC,KAAO,CAACN,GAAY,CAAC,IAAK,IAAKE,GAAS,KAAM,CAAC,KAC/CK,MAAO,CAACP,GAAY,CAAC,KAAME,GAAS,KAAM,CAAC,KAC3CM,KAAO,CAACR,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,KAChDO,KAAO,CAACT,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,IAAK,CAAC,MAC9EQ,MAAO,CAACV,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,IAAK,CAAC,MAC9ES,KAAO,CAACX,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,KAAMA,GAAS,KAAM,CAAC,MAC1EU,KAAO,CAACZ,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,MAC1GW,KAAO,CAACb,GAAY,CAAC,IAAK,KAAME,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,MACxIY,KAAO,CAACb,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,KAC7Ja,MAAO,CAACd,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,EAAG,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,GAAI,IAAK,KAAMA,GAAS,KAAM,CAAC,MAC5Lc,IAAM,CAACf,GAAWC,GAAS,KAAM,CAAC,EAAG,IAAK,IAAKA,GAAS,IAAK,CAAC,KAE5De,GAAUd,GAAUE,IAQpB1yF,GAAmB,IAUvBP,EAAmB,SAA0BQ,GAC3C,OAAOA,EAAUD,IAGnBN,EAAmB,SAA0BO,EAASC,GACpD,OAAOD,EAAUC,GAGnBP,EAAmB,SAA0BQ,GAC3C,OAAOA,EAAYH,IAGrBJ,EAAmB,SAA0BO,EAAWD,GACtD,OAAOC,EAAYD,GAGrBL,EAAmB,SAA0BM,EAAWD,GACtD,OAAOT,EAAiBG,EAAiBO,EAAWD,KAGtDJ,EAAmB,SAA0BK,EAAWD,GACtD,OAAOR,EAAiBC,EAAiBQ,GAAYD,IAQvDH,EAAsB,SAA6BI,EAAWC,EAAkBC,GAC9E,OAAOV,EAAiBU,EAAyBF,EAAYA,EAAYC,IAG3E,IAAImzF,GAAQ,CACVvzF,iBAAkBA,GAClBP,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,iBAAkBA,EAClBC,oBAAqBA,GAanByzF,GAAsB,SAA6B1oG,GACrD,IAAIE,EACAyoG,EACAC,EAAM,EAEV,IAAK1oG,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IAC5ByoG,EAAa3oG,EAAME,GACnB0oG,GAAOD,EAAW3lG,KAAKsC,WAGzB,OAAOsjG,GAKLC,GAAoB,SAA2B38F,EAAO+xF,EAAQ6K,EAAoBC,GACpF,IAAIC,EAKAC,EACA/oG,EACAgpG,EANAC,EAAgB,EAChBC,EAAmB,EACnBC,EAAsB,EACtBC,EAAoB,EAKxB,GAAKrL,EAAO99F,SAIZ6oG,EAAwBP,GAAM1zF,iBAAiB7I,EAAMpB,oBAAqBoB,EAAMs3F,YAEhF2F,EAAgBxhG,KAAKuvB,KAAKuxE,GAAMvzF,kBAAoBhJ,EAAMs3F,WAAa,OAEnEsF,GAAsBC,IAExBK,EAAmBJ,EAAwBrhG,KAAKywB,IAAI0wE,EAAoBC,GAExEM,EAAsB1hG,KAAKolB,MAAMq8E,EAAmBD,GACpDG,EAAoBD,EAAsBF,KAKxCE,EAAsB,GAAKC,EAAoBb,GAAMvzF,iBAAmB,IAA5E,CAYA,IARA+zF,EAAcT,GAAQt8F,EAAMs3F,YAEvByF,IAGHA,EAAchL,EAAO,GAAGj7F,MAGrB9C,EAAI,EAAGA,EAAImpG,EAAqBnpG,IACnCgpG,EAAajL,EAAO,GACpBA,EAAOvmF,OAAO,EAAG,EAAG,CAClB1U,KAAMimG,EACN5gG,IAAK6gG,EAAW7gG,IAAM8gG,EACtB7gG,IAAK4gG,EAAW5gG,IAAM6gG,IAI1Bj9F,EAAMpB,qBAAuBnD,KAAKolB,MAAM07E,GAAMzzF,iBAAiBs0F,EAAmBp9F,EAAMs3F,eAOtF+F,GAA8B,SAAqCC,EAAYt9F,EAAOu9F,GACxF,OAAIv9F,EAAMw9F,eAAiBD,EAClBD,GAITt9F,EAAMw9F,cAAgBl/F,IACfg/F,EAAW5vE,QAAO,SAAUysE,GAEjC,OAAIA,EAAah+F,KAAOohG,IACtBv9F,EAAMw9F,cAAgB/hG,KAAK8C,IAAIyB,EAAMw9F,cAAerD,EAAah+F,KACjE6D,EAAMy9F,cAAgBz9F,EAAMw9F,eACrB,QASTE,GAAwB,SAA6B3L,GACvD,IAAI/9F,EACAmmG,EACAl7F,EAAU,GAEd,IAAKjL,EAAI,EAAGA,EAAI+9F,EAAO99F,OAAQD,IAC7BmmG,EAAepI,EAAO/9F,GACtBiL,EAAQrL,KAAK,CACXm6B,KAAMosE,EAAarjG,KAAKsC,WACxB8pB,SAAU,OAKd,OAAOjkB,GAIL0+F,GAAuB,SAA8B5L,GACvD,IAAI/9F,EACAmmG,EACApB,EAAa,EACbjiG,EAAO,IAAI4C,WAAW8iG,GAAoBzK,IAE9C,IAAK/9F,EAAI,EAAGA,EAAI+9F,EAAO99F,OAAQD,IAC7BmmG,EAAepI,EAAO/9F,GACtB8C,EAAKmoB,IAAIk7E,EAAarjG,KAAMiiG,GAC5BA,GAAcoB,EAAarjG,KAAKsC,WAGlC,OAAOtC,GAGL8mG,GAAkB,CACpBjB,kBAAmBA,GACnBU,4BAA6BA,GAC7BzC,oBAAqB8C,GACrBC,qBAAsBA,IASpBE,GAAqBtB,GAAMvzF,iBAO3B80F,GAAiB,SAAwB99F,EAAOlJ,GAC1B,kBAAbA,EAAKsF,WACsB7G,IAAhCyK,EAAM+9F,kBAAkB3hG,MAC1B4D,EAAM+9F,kBAAkB3hG,IAAMtF,EAAKsF,UAGT7G,IAAxByK,EAAMy9F,cACRz9F,EAAMy9F,cAAgB3mG,EAAKsF,IAE3B4D,EAAMy9F,cAAgBhiG,KAAK8C,IAAIyB,EAAMy9F,cAAe3mG,EAAKsF,UAG/B7G,IAAxByK,EAAMg+F,cACRh+F,EAAMg+F,cAAgBlnG,EAAKsF,IAE3B4D,EAAMg+F,cAAgBviG,KAAKywB,IAAIlsB,EAAMg+F,cAAelnG,EAAKsF,MAIrC,kBAAbtF,EAAKqF,WACsB5G,IAAhCyK,EAAM+9F,kBAAkB5hG,MAC1B6D,EAAM+9F,kBAAkB5hG,IAAMrF,EAAKqF,UAGT5G,IAAxByK,EAAMw9F,cACRx9F,EAAMw9F,cAAgB1mG,EAAKqF,IAE3B6D,EAAMw9F,cAAgB/hG,KAAK8C,IAAIyB,EAAMw9F,cAAe1mG,EAAKqF,UAG/B5G,IAAxByK,EAAMi+F,cACRj+F,EAAMi+F,cAAgBnnG,EAAKqF,IAE3B6D,EAAMi+F,cAAgBxiG,KAAKywB,IAAIlsB,EAAMi+F,cAAennG,EAAKqF,OAU3D+hG,GAAe,SAAsBl+F,UAChCA,EAAMw9F,qBACNx9F,EAAMi+F,qBACNj+F,EAAMy9F,qBACNz9F,EAAMg+F,eAYXG,GAAoC,SAA2Cn+F,EAAOqJ,GACxF,IAAIzK,EACAV,EACAs/F,EAAgBx9F,EAAMw9F,cAsB1B,OApBKn0F,IACHm0F,GAAiBx9F,EAAM+9F,kBAAkB5hG,KAK3CyC,EAAsBoB,EAAM+9F,kBAAkBn/F,oBAE9CA,GAAuB4+F,EAEvB5+F,EAAsBnD,KAAKywB,IAAI,EAAGttB,GAEf,UAAfoB,EAAMpE,OAGRsC,EAAQ8B,EAAMs3F,WAAauG,GAC3Bj/F,GAAuBV,EACvBU,EAAsBnD,KAAKolB,MAAMjiB,IAG5BA,GAGLw/F,GAAkB,CACpBF,aAAcA,GACdC,kCAAmCA,GACnCL,eAAgBA,IAmBd7wF,GAAiC,EACjCoxF,GAAqB,IAUrBvxF,GAAW,SAAkBqwB,GAC/B,IAAInpC,EAAI,EACJjB,EAAS,CACXia,aAAc,EACdsxF,YAAa,GAEXtxF,EAAc,EACdsxF,EAAc,EAElB,MAAOtqG,EAAImpC,EAAM/jC,WAAY,CAE3B,GAAI+jC,EAAMnpC,KAAOqqG,GACf,MAIF,MAAoB,MAAblhE,EAAMnpC,GACXgZ,GAAe,IACfhZ,IAGFgZ,GAAemwB,EAAMnpC,KAErB,MAAoB,MAAbmpC,EAAMnpC,GACXsqG,GAAe,IACftqG,IAMF,GAHAsqG,GAAenhE,EAAMnpC,MAGhBjB,EAAOkkG,SAAWjqF,IAAgBC,GAAgC,CACrEla,EAAOia,YAAcA,EACrBja,EAAOurG,YAAcA,EACrBvrG,EAAOkkG,QAAU95D,EAAM19B,SAASzL,EAAGA,EAAIsqG,GACvC,MAIFtqG,GAAKsqG,EACLtxF,EAAc,EACdsxF,EAAc,EAGhB,OAAOvrG,GAILma,GAAgB,SAAuBR,GAGzC,OAAuB,MAAnBA,EAAIuqF,QAAQ,GACP,KAIsC,MAA1CvqF,EAAIuqF,QAAQ,IAAM,EAAIvqF,EAAIuqF,QAAQ,IAC9B,KAImF,SAAxFx0F,OAAO+L,aAAa9B,EAAIuqF,QAAQ,GAAIvqF,EAAIuqF,QAAQ,GAAIvqF,EAAIuqF,QAAQ,GAAIvqF,EAAIuqF,QAAQ,IAC3E,KAIc,IAAnBvqF,EAAIuqF,QAAQ,GACP,KAKFvqF,EAAIuqF,QAAQx3F,SAAS,EAAGiN,EAAIuqF,QAAQhjG,OAAS,IAIlDqZ,GAAsB,SAA6BlR,EAAKuQ,GAC1D,IACI3Y,EACAqqB,EACAzU,EACA9S,EAJAg5F,EAAU,GAMd,KAAoB,GAAdnjF,EAAS,IACb,OAAOmjF,EAMT,IAFAzxE,EAAsB,GAAd1R,EAAS,GAEZ3Y,EAAI,EAAGA,EAAIqqB,EAAOrqB,IACrB4V,EAAa,EAAJ5V,EACT8C,EAAO,CACL8E,KAA6B,EAAvB+Q,EAAS/C,EAAS,GACxBxN,IAAKA,GAGoB,EAAvBuQ,EAAS/C,EAAS,KACpB9S,EAAKuX,OAAS1B,EAAS/C,EAAS,IAAM,EAAI+C,EAAS/C,EAAS,GAC5DkmF,EAAQl8F,KAAKkD,IAIjB,OAAOg5F,GAGLyO,GAAkC,SAAyCznG,GAC7E,IAGI0nG,EACAC,EAJAxqG,EAAS6C,EAAKsC,WACdslG,EAAoC,GACpC1qG,EAAI,EAIR,MAAOA,EAAIC,EAAS,EACF,IAAZ6C,EAAK9C,IAA4B,IAAhB8C,EAAK9C,EAAI,IAA4B,IAAhB8C,EAAK9C,EAAI,IACjD0qG,EAAkC9qG,KAAKI,EAAI,GAC3CA,GAAK,GAELA,IAMJ,GAAiD,IAA7C0qG,EAAkCzqG,OACpC,OAAO6C,EAIT0nG,EAAYvqG,EAASyqG,EAAkCzqG,OACvDwqG,EAAU,IAAI/kG,WAAW8kG,GACzB,IAAIG,EAAc,EAElB,IAAK3qG,EAAI,EAAGA,EAAIwqG,EAAWG,IAAe3qG,IACpC2qG,IAAgBD,EAAkC,KAEpDC,IAEAD,EAAkC7iE,SAGpC4iE,EAAQzqG,GAAK8C,EAAK6nG,GAGpB,OAAOF,GAILG,GAAsB,CACxB9xF,SAAUA,GACVI,cAAeA,GACfI,oBAAqBA,GACrBixF,gCAAiCA,GACjCtxF,+BAAgCA,IAK9Bb,GAAgB,SAASA,IAC3BA,EAAcrT,UAAUgD,KAAKC,KAAKC,MAClCA,KAAKoQ,gBAAkB,GACvBpQ,KAAKqQ,WAAa,CAAC,IAAIC,GAAa,EAAG,GACvC,IAAIA,GAAa,EAAG,GACpB,IAAIA,GAAa,EAAG,GACpB,IAAIA,GAAa,EAAG,IAEpBtQ,KAAKQ,QAELR,KAAKqQ,WAAWpZ,SAAQ,SAAUsZ,GAChCA,EAAGnB,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,SACtCuQ,EAAGnB,GAAG,cAAepP,KAAKI,QAAQwL,KAAK5L,KAAM,gBAC7CuQ,EAAGnB,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,WACrCA,OAGLmQ,GAAcrT,UAAY,IAAI0Y,EAE9BrF,GAAcrT,UAAUnF,KAAO,SAAU6Y,GACvC,IAAIC,EAAKC,EAAUC,EAEnB,GAA0B,aAAtBH,EAAMI,cAKVH,EAAMkyF,GAAoB9xF,SAASL,EAAMM,aAErCL,EAAIM,cAAgB4xF,GAAoB3xF,iCAK5CN,EAAWiyF,GAAoB1xF,cAAcR,GAExCC,IAYL,GAAIF,EAAMtQ,IAAMF,KAAKkR,WAEnBlR,KAAKmR,qBAAsB,MAF7B,CAIO,GAAIX,EAAMtQ,MAAQF,KAAKkR,YAAclR,KAAKmR,oBAQ/C,OAPAnR,KAAKoR,mBAEApR,KAAKoR,cAERpR,KAAKmR,qBAAsB,IAO/BR,EAAoBgyF,GAAoBtxF,oBAAoBb,EAAMrQ,IAAKuQ,GACvE1Q,KAAKoQ,gBAAkBpQ,KAAKoQ,gBAAgBxO,OAAO+O,GAE/C3Q,KAAKkR,aAAeV,EAAMtQ,MAC5BF,KAAKoR,YAAc,GAGrBpR,KAAKoR,cACLpR,KAAKkR,WAAaV,EAAMtQ,MAG1BiQ,GAAcrT,UAAUwU,eAAiB,SAAUC,GACjDvR,KAAKqQ,WAAWpZ,SAAQ,SAAUsZ,GAChC,MAAqB,UAAdgB,EAAwBhB,EAAGlQ,QAAUkQ,EAAGV,iBAC9C7P,OAGLmQ,GAAcrT,UAAU0U,YAAc,SAAUD,GAEzCvR,KAAKoQ,gBAAgBpY,QAO1BgI,KAAKoQ,gBAAgBnZ,SAAQ,SAAUwa,EAAMC,GAC3CD,EAAKE,aAAeD,KAGtB1R,KAAKoQ,gBAAgBwB,MAAK,SAAUlG,EAAGmG,GACrC,OAAInG,EAAEvL,MAAQ0R,EAAE1R,IACPuL,EAAEiG,aAAeE,EAAEF,aAGrBjG,EAAEvL,IAAM0R,EAAE1R,OAEnBH,KAAKoQ,gBAAgBnZ,SAAQ,SAAUsW,GACjCA,EAAO5N,KAAO,GAEhBK,KAAK8R,qBAAqBvE,KAI3BvN,MACHA,KAAKoQ,gBAAgBpY,OAAS,EAC9BgI,KAAKsR,eAAeC,IA1BlBvR,KAAKsR,eAAeC,IA6BxBpB,GAAcrT,UAAUuD,MAAQ,WAC9B,OAAOL,KAAKwR,YAAY,UAI1BrB,GAAcrT,UAAU+S,aAAe,WACrC,OAAO7P,KAAKwR,YAAY,iBAG1BrB,GAAcrT,UAAU0D,MAAQ,WAC9BR,KAAKkR,WAAa,KAClBlR,KAAKmR,qBAAsB,EAC3BnR,KAAKoR,YAAc,EACnBpR,KAAK+R,qBAAuB,CAAC,KAAM,MACnC/R,KAAKqQ,WAAWpZ,SAAQ,SAAU+a,GAChCA,EAASxR,YAgBb2P,GAAcrT,UAAUgV,qBAAuB,SAAUvE,GAEnDvN,KAAKiS,oBAAoB1E,GAC3BvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,KAChCK,KAAKkS,mBAAmB3E,GACjCvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,EAChCK,KAAKmS,mBAAmB5E,KACjCvN,KAAK+R,qBAAqBxE,EAAO5N,MAAQ,GAGI,OAA3CK,KAAK+R,qBAAqBxE,EAAO5N,OAOrCK,KAAKqQ,YAAY9C,EAAO5N,MAAQ,GAAKK,KAAK+R,qBAAqBxE,EAAO5N,OAAOhI,KAAK4V,IAGpF4C,GAAcrT,UAAUoV,mBAAqB,SAAU3E,GACrD,OAAoC,QAAZ,MAAhBA,EAAO6E,SAGjBjC,GAAcrT,UAAUqV,mBAAqB,SAAU5E,GACrD,OAAoC,QAAZ,MAAhBA,EAAO6E,SAGjBjC,GAAcrT,UAAUmV,oBAAsB,SAAU1E,GACtD,OAAoC,OAAZ,MAAhBA,EAAO6E,SAA4D,QAAZ,MAAhB7E,EAAO6E,SAA4D,QAAZ,MAAhB7E,EAAO6E,SAa/F,IAAIC,GAAwB,CAC1B,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,GAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,IAEN,IAAM,KAEN,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,GAER,IAAQ,GAER,IAAQ,KAER,IAAQ,IAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,GAER,IAAQ,GAER,IAAQ,GAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,IAER,IAAQ,KAER,IAAQ,KAER,IAAQ,KAER,IAAQ,MAINC,GAAkB,SAAyBzW,GAC7C,OAAa,OAATA,EACK,IAGTA,EAAOwW,GAAsBxW,IAASA,EAC/B2K,OAAO+L,aAAa1W,KAIzB2W,GAAa,GAGbC,GAAO,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAGxHC,GAAsB,WACxB,IAAI5b,EAAS,GACTiB,EAAIya,GAAa,EAErB,MAAOza,IACLjB,EAAOa,KAAK,IAGd,OAAOb,GAGLwZ,GAAe,SAASA,EAAaqC,EAAOC,GAC9CtC,EAAaxT,UAAUgD,KAAKC,KAAKC,MACjCA,KAAK6S,OAASF,GAAS,EACvB3S,KAAK8S,aAAeF,GAAe,EACnC5S,KAAK+S,MAAQ,MAAiD,GAAxC/S,KAAK6S,QAAU,EAAI7S,KAAK8S,eAC9C9S,KAAKgT,eACLhT,KAAKQ,QAELR,KAAKrI,KAAO,SAAU4V,GACpB,IAAI1S,EAAMoY,EAAMC,EAAOC,EAAOC,EAI9B,GAFAvY,EAAuB,MAAhB0S,EAAO6E,OAEVvX,IAASmF,KAAKqT,kBAelB,GATwB,QAAZ,MAAPxY,GACHmF,KAAKqT,iBAAmBxY,EACfA,IAASmF,KAAKsT,WACvBtT,KAAKqT,iBAAmB,MAG1BH,EAAQrY,IAAS,EACjBsY,EAAe,IAAPtY,EAEJA,IAASmF,KAAKsT,SAEX,GAAIzY,IAASmF,KAAKuT,wBACvBvT,KAAKwT,MAAQ,aACR,GAAI3Y,IAASmF,KAAKyT,gBAKvBzT,KAAKwT,MAAQ,QACbxT,KAAK0T,gBAAgBnG,EAAOpN,KAE5BH,KAAK2T,eAAepG,EAAOpN,KAE3B8S,EAAOjT,KAAK4T,WACZ5T,KAAK4T,WAAa5T,KAAK6T,cACvB7T,KAAK6T,cAAgBZ,EAErBjT,KAAK8T,UAAYvG,EAAOpN,SACnB,GAAItF,IAASmF,KAAK+T,gBACvB/T,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKkU,gBACvBlU,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKmU,gBACvBnU,KAAKgU,YAAc,EACnBhU,KAAKiU,UAAU1G,EAAOpN,UACjB,GAAItF,IAASmF,KAAKoU,iBACvBpU,KAAK0T,gBAAgBnG,EAAOpN,KAC5BH,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAKqU,eACLrU,KAAK8T,UAAYvG,EAAOpN,SACnB,GAAItF,IAASmF,KAAKsU,WACJ,UAAftU,KAAKwT,MACPxT,KAAK6T,cAAc7T,KAAKuU,MAAQvU,KAAK6T,cAAc7T,KAAKuU,MAAMjd,MAAM,GAAI,GAExE0I,KAAK4T,WAAW5T,KAAKuU,MAAQvU,KAAK4T,WAAW5T,KAAKuU,MAAMjd,MAAM,GAAI,QAE/D,GAAIuD,IAASmF,KAAKwU,wBACvBxU,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAK4T,WAAalB,UACb,GAAI7X,IAASmF,KAAKyU,4BACvBzU,KAAK6T,cAAgBnB,UAChB,GAAI7X,IAASmF,KAAK0U,0BACJ,YAAf1U,KAAKwT,QAGPxT,KAAK2T,eAAepG,EAAOpN,KAC3BH,KAAK4T,WAAalB,MAGpB1S,KAAKwT,MAAQ,UACbxT,KAAK8T,UAAYvG,EAAOpN,SACnB,GAAIH,KAAK2U,mBAAmBzB,EAAOC,GAKxCD,GAAiB,EAARA,IAAiB,EAC1BE,EAAOd,GAAgBY,EAAQC,GAC/BnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,eACA,GAAI5U,KAAK6U,eAAe3B,EAAOC,GAMjB,UAAfnT,KAAKwT,MACPxT,KAAK6T,cAAc7T,KAAKuU,MAAQvU,KAAK6T,cAAc7T,KAAKuU,MAAMjd,MAAM,GAAI,GAExE0I,KAAK4T,WAAW5T,KAAKuU,MAAQvU,KAAK4T,WAAW5T,KAAKuU,MAAMjd,MAAM,GAAI,GAOpE4b,GAAiB,EAARA,IAAiB,EAC1BE,EAAOd,GAAgBY,EAAQC,GAC/BnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,eACA,GAAI5U,KAAK8U,aAAa5B,EAAOC,GAElCnT,KAAK0T,gBAAgBnG,EAAOpN,KAG5BH,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAK,KAC7BH,KAAK4U,UAEiB,MAAT,GAARzB,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,MAGZ,KAAT,EAARgT,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,WAG7B,GAAIH,KAAKgV,oBAAoB9B,EAAOC,GAKzCnT,KAAK4U,SAAmB,EAARzB,OACX,GAAInT,KAAKiV,MAAM/B,EAAOC,GAAQ,CAGnC,IAAIjc,EAAMub,GAAKrb,QAAe,KAAPyD,GAEJ,WAAfmF,KAAKwT,QAIHtc,EAAM8I,KAAKgU,YAAc,EAAI,IAC/B9c,EAAM8I,KAAKgU,YAAc,GAG3BhU,KAAKiU,UAAU1G,EAAOpN,IAAKjJ,IAGzBA,IAAQ8I,KAAKuU,OAEfvU,KAAK0T,gBAAgBnG,EAAOpN,KAC5BH,KAAKuU,KAAOrd,GAKF,EAARic,IAAkD,IAAnCnT,KAAKkV,YAAY9d,QAAQ,MAC1C4I,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,MAGZ,MAAV,GAAPtF,KAKHmF,KAAK4U,QAAgC,IAAb,GAAP/Z,IAAe,IAG9BmF,KAAKmV,WAAWhC,IAKI,MAAT,GAARA,IACHnT,KAAK+U,cAAcxH,EAAOpN,IAAK,CAAC,WAI3BH,KAAKoV,aAAalC,KACb,IAAVC,IACFA,EAAQ,MAGVC,EAAOd,GAAgBY,GACvBE,GAAQd,GAAgBa,GACxBnT,KAAKA,KAAKwT,OAAOjG,EAAOpN,IAAKiT,GAC7BpT,KAAK4U,SAAWxB,EAAKpb,aA7KrBgI,KAAKqT,iBAAmB,OAmL9B/C,GAAaxT,UAAY,IAAI0Y,EAG7BlF,GAAaxT,UAAU6W,eAAiB,SAAUxT,GAChD,IAAIkV,EAAUrV,KAAK4T,WAClB9R,KAAI,SAAU5K,GACb,IACE,OAAOA,EAAIH,OACX,MAAO6C,IAMP,OADAoR,QAAQtD,MAAM,+BACP,OAGV9I,KAAK,MACL2F,QAAQ,aAAc,IAEnB8Q,EAAQrd,QACVgI,KAAKI,QAAQ,OAAQ,CACnBkV,SAAUtV,KAAK8T,UACfyB,OAAQpV,EACRiT,KAAMiC,EACNG,OAAQxV,KAAK+S,SASnBzC,GAAaxT,UAAU0D,MAAQ,WAC7BR,KAAKwT,MAAQ,QAKbxT,KAAKyV,QAAU,EACfzV,KAAK8T,UAAY,EACjB9T,KAAK4T,WAAalB,KAClB1S,KAAK6T,cAAgBnB,KACrB1S,KAAKqT,iBAAmB,KAExBrT,KAAK4U,QAAU,EACf5U,KAAKuU,KAAO/B,GACZxS,KAAKgU,YAAc,EAEnBhU,KAAKkV,YAAc,IAOrB5E,GAAaxT,UAAUkW,aAAe,WAaV,IAAtBhT,KAAK8S,cACP9S,KAAK0V,MAAQ,GACb1V,KAAK2V,KAAO,GACZ3V,KAAK4V,UAAY,GAAO5V,KAAK6S,SAAW,EACxC7S,KAAK6V,QAAU,IACgB,IAAtB7V,KAAK8S,eACd9S,KAAK0V,MAAQ,GACb1V,KAAK2V,KAAO,GACZ3V,KAAK4V,UAAY,GAAO5V,KAAK6S,SAAW,EACxC7S,KAAK6V,QAAU,IAOjB7V,KAAKsT,SAAW,EAEhBtT,KAAKuT,wBAA0C,GAAhBvT,KAAK4V,SACpC5V,KAAKyT,gBAAkC,GAAhBzT,KAAK4V,SAE5B5V,KAAK+T,gBAAkC,GAAhB/T,KAAK4V,SAC5B5V,KAAKkU,gBAAkC,GAAhBlU,KAAK4V,SAC5B5V,KAAKmU,gBAAkC,GAAhBnU,KAAK4V,SAC5B5V,KAAKoU,iBAAmC,GAAhBpU,KAAK4V,SAE7B5V,KAAK0U,0BAA4C,GAAhB1U,KAAK4V,SAEtC5V,KAAKsU,WAA6B,GAAhBtU,KAAK4V,SACvB5V,KAAKwU,wBAA0C,GAAhBxU,KAAK4V,SACpC5V,KAAKyU,4BAA8C,GAAhBzU,KAAK4V,UAe1CtF,GAAaxT,UAAU6X,mBAAqB,SAAUzB,EAAOC,GAC3D,OAAOD,IAAUlT,KAAK2V,MAAQxC,GAAS,IAAQA,GAAS,IAe1D7C,GAAaxT,UAAU+X,eAAiB,SAAU3B,EAAOC,GACvD,OAAQD,IAAUlT,KAAK2V,KAAO,GAAKzC,IAAUlT,KAAK2V,KAAO,IAAMxC,GAAS,IAAQA,GAAS,IAe3F7C,GAAaxT,UAAUgY,aAAe,SAAU5B,EAAOC,GACrD,OAAOD,IAAUlT,KAAK2V,MAAQxC,GAAS,IAAQA,GAAS,IAe1D7C,GAAaxT,UAAUkY,oBAAsB,SAAU9B,EAAOC,GAC5D,OAAOD,IAAUlT,KAAK6V,SAAW1C,GAAS,IAAQA,GAAS,IAe7D7C,GAAaxT,UAAUmY,MAAQ,SAAU/B,EAAOC,GAC9C,OAAOD,GAASlT,KAAK0V,OAASxC,EAAQlT,KAAK0V,MAAQ,GAAKvC,GAAS,IAAQA,GAAS,KAapF7C,GAAaxT,UAAUqY,WAAa,SAAUhC,GAC5C,OAAOA,GAAS,IAAQA,GAAS,IAAQA,GAAS,IAAQA,GAAS,KAYrE7C,GAAaxT,UAAUsY,aAAe,SAAUwtF,GAC9C,OAAOA,GAAS,IAAQA,GAAS,KAWnCtyF,GAAaxT,UAAUmX,UAAY,SAAU9T,EAAK4V,GAWhD,GATmB,WAAf/V,KAAKwT,QACPxT,KAAKuU,KAAO/B,GACZxS,KAAKwT,MAAQ,SAEbxT,KAAK2T,eAAexT,GACpBH,KAAK6T,cAAgBnB,KACrB1S,KAAK4T,WAAalB,WAGDpZ,IAAfyc,GAA4BA,IAAe/V,KAAKuU,KAElD,IAAK,IAAIxc,EAAI,EAAGA,EAAIiI,KAAKgU,YAAajc,IACpCiI,KAAK4T,WAAWmC,EAAahe,GAAKiI,KAAK4T,WAAW5T,KAAKuU,KAAOxc,GAC9DiI,KAAK4T,WAAW5T,KAAKuU,KAAOxc,GAAK,QAIlBuB,IAAfyc,IACFA,EAAa/V,KAAKuU,MAGpBvU,KAAKyV,QAAUM,EAAa/V,KAAKgU,YAAc,GAKjD1D,GAAaxT,UAAUiY,cAAgB,SAAU5U,EAAK6V,GACpDhW,KAAKkV,YAAclV,KAAKkV,YAAYtT,OAAOoU,GAC3C,IAAI5C,EAAO4C,EAAO7U,QAAO,SAAUiS,EAAM4C,GACvC,OAAO5C,EAAO,IAAM4C,EAAS,MAC5B,IACHhW,KAAKA,KAAKwT,OAAOrT,EAAKiT,IAKxB9C,GAAaxT,UAAU4W,gBAAkB,SAAUvT,GACjD,GAAKH,KAAKkV,YAAYld,OAAtB,CAIA,IAAIob,EAAOpT,KAAKkV,YAAYe,UAAU9U,QAAO,SAAUiS,EAAM4C,GAC3D,OAAO5C,EAAO,KAAO4C,EAAS,MAC7B,IACHhW,KAAKkV,YAAc,GACnBlV,KAAKA,KAAKwT,OAAOrT,EAAKiT,KAIxB9C,GAAaxT,UAAUoZ,MAAQ,SAAU/V,EAAKiT,GAC5C,IAAI+C,EAAUnW,KAAK6T,cAAc7T,KAAKuU,MAEtC4B,GAAW/C,EACXpT,KAAK6T,cAAc7T,KAAKuU,MAAQ4B,GAGlC7F,GAAaxT,UAAUsZ,OAAS,SAAUjW,EAAKiT,GAC7C,IAAI+C,EAAUnW,KAAK4T,WAAW5T,KAAKuU,MACnC4B,GAAW/C,EACXpT,KAAK4T,WAAW5T,KAAKuU,MAAQ4B,GAG/B7F,GAAaxT,UAAUuX,aAAe,WACpC,IAAItc,EAEJ,IAAKA,EAAI,EAAGA,EAAIiI,KAAKyV,QAAS1d,IAC5BiI,KAAK4T,WAAW7b,GAAK,GAGvB,IAAKA,EAAIiI,KAAKuU,KAAO,EAAGxc,EAAIya,GAAa,EAAGza,IAC1CiI,KAAK4T,WAAW7b,GAAK,GAIvB,IAAKA,EAAIiI,KAAKyV,QAAS1d,EAAIiI,KAAKuU,KAAMxc,IACpCiI,KAAK4T,WAAW7b,GAAKiI,KAAK4T,WAAW7b,EAAI,GAI3CiI,KAAK4T,WAAW5T,KAAKuU,MAAQ,IAG/BjE,GAAaxT,UAAUuZ,QAAU,SAAUlW,EAAKiT,GAC9C,IAAI+C,EAAUnW,KAAK4T,WAAW5T,KAAKuU,MACnC4B,GAAW/C,EACXpT,KAAK4T,WAAW5T,KAAKuU,MAAQ4B,GAI/B,IAAI0sF,GAAgB,CAClB1yF,cAAeA,GACfG,aAAcA,IASZwyF,GAAc,CAChBx0F,iBAAkB,GAClBC,iBAAkB,GAClBC,qBAAsB,IAEpBtP,GAAS,WACTC,GAAY,WACZC,GAAc,SAEdC,GAAiB,SAAwB7H,EAAO8H,GAClD,IAAIC,EAAY,EAEZ/H,EAAQ8H,IAQVC,GAAa,GAKf,MAAOC,KAAKC,IAAIH,EAAY9H,GAAS2H,GACnC3H,GAAS+H,EAAYL,GAGvB,OAAO1H,GAGLkI,GAA0B,SAASA,EAAwBC,GAC7D,IAAIC,EAASC,EACbH,EAAwB5C,UAAUgD,KAAKC,KAAKC,MAI5CA,KAAKC,MAAQN,GAAQP,GAErBY,KAAKrI,KAAO,SAAUkD,GAGhBmF,KAAKC,QAAUb,IAAevE,EAAK8E,OAASK,KAAKC,aAIhC3G,IAAjBuG,IACFA,EAAehF,EAAKqF,KAGtBrF,EAAKqF,IAAMb,GAAexE,EAAKqF,IAAKL,GACpChF,EAAKsF,IAAMd,GAAexE,EAAKsF,IAAKN,GACpCD,EAAU/E,EAAKqF,IACfF,KAAKI,QAAQ,OAAQvF,KAGvBmF,KAAKK,MAAQ,WACXR,EAAeD,EACfI,KAAKI,QAAQ,SAGfJ,KAAKM,YAAc,WACjBN,KAAKK,QACLL,KAAKI,QAAQ,kBAGfJ,KAAKO,cAAgB,WACnBV,OAAe,EACfD,OAAU,GAGZI,KAAKQ,MAAQ,WACXR,KAAKO,gBACLP,KAAKI,QAAQ,WAIjBV,GAAwB5C,UAAY,IAAI0Y,EACxC,IAiFIutF,GAjFAC,GAA0B,CAC5BtjG,wBAAyBA,GACzBL,eAAgBA,IAGd4jG,GAAgB,SAAuB/hE,EAAOziC,EAAOC,GACvD,IAAI3G,EACAjB,EAAS,GAEb,IAAKiB,EAAI0G,EAAO1G,EAAI2G,EAAK3G,IACvBjB,GAAU,KAAO,KAAOoqC,EAAMnpC,GAAG+M,SAAS,KAAKxN,OAAO,GAGxD,OAAOR,GAITosG,GAAY,SAAmBhiE,EAAOziC,EAAOC,GAC3C,OAAOykG,mBAAmBF,GAAc/hE,EAAOziC,EAAOC,KAIxD0kG,GAAgB,SAAuBliE,EAAOziC,EAAOC,GACnD,OAAO2kG,SAASJ,GAAc/hE,EAAOziC,EAAOC,KAE1C4kG,GAAuB,SAA8BzoG,GACvD,OAAOA,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAEzD0oG,GAAa,CACfC,KAAM,SAAcv5E,GAClB,IAAIlyB,EAEJ,GAAoB,IAAhBkyB,EAAIpvB,KAAK,GAAb,CAKA,IAAK9C,EAAI,EAAGA,EAAIkyB,EAAIpvB,KAAK7C,OAAQD,IAC/B,GAAoB,IAAhBkyB,EAAIpvB,KAAK9C,GAAU,CAErBkyB,EAAIgzB,YAAcimD,GAAUj5E,EAAIpvB,KAAM,EAAG9C,GAEzCkyB,EAAIzyB,MAAQ0rG,GAAUj5E,EAAIpvB,KAAM9C,EAAI,EAAGkyB,EAAIpvB,KAAK7C,QAAQuM,QAAQ,OAAQ,IACxE,MAIJ0lB,EAAIpvB,KAAOovB,EAAIzyB,QAEjBisG,KAAM,SAAcx5E,GAClB,IAAIlyB,EAEJ,GAAoB,IAAhBkyB,EAAIpvB,KAAK,GAKb,IAAK9C,EAAI,EAAGA,EAAIkyB,EAAIpvB,KAAK7C,OAAQD,IAC/B,GAAoB,IAAhBkyB,EAAIpvB,KAAK9C,GAAU,CAErBkyB,EAAIgzB,YAAcimD,GAAUj5E,EAAIpvB,KAAM,EAAG9C,GACzCkyB,EAAI1vB,IAAM2oG,GAAUj5E,EAAIpvB,KAAM9C,EAAI,EAAGkyB,EAAIpvB,KAAK7C,QAC9C,QAIN0rG,KAAM,SAAcz5E,GAClB,IAAIlyB,EAEJ,IAAKA,EAAI,EAAGA,EAAIkyB,EAAIpvB,KAAK7C,OAAQD,IAC/B,GAAoB,IAAhBkyB,EAAIpvB,KAAK9C,GAAU,CAErBkyB,EAAI05E,MAAQP,GAAcn5E,EAAIpvB,KAAM,EAAG9C,GACvC,MAIJkyB,EAAIgrE,YAAchrE,EAAIpvB,KAAK2I,SAASzL,EAAI,GACxCkyB,EAAIpvB,KAAOovB,EAAIgrE,cAKnB8N,GAAkB,SAAwBzqG,GACxC,IAaIP,EAbA0tD,EAAW,CACb5jB,SAAUvpC,IAAWA,EAAQupC,OAI7BnF,WAAYpkC,GAAWA,EAAQokC,YAGjCknE,EAAU,EAEVlgG,EAAS,GAETmgG,EAAa,EASb,GANAd,GAAgBjmG,UAAUgD,KAAKC,KAAKC,MAIpCA,KAAK60F,aAAeiO,GAAYt0F,qBAAqB1J,SAAS,IAE1D2gD,EAAS/oB,WACX,IAAK3kC,EAAI,EAAGA,EAAI0tD,EAAS/oB,WAAW1kC,OAAQD,IAC1CiI,KAAK60F,eAAiB,KAAOpvC,EAAS/oB,WAAW3kC,GAAG+M,SAAS,KAAKxN,OAAO,GAI7E0I,KAAKrI,KAAO,SAAUi1B,GACpB,IAAI3C,EAAK65E,EAAYC,EAAW/O,EAAOj9F,EAAGisG,EAE1C,GAAmB,mBAAfp3E,EAAMjtB,KAaV,GANIitB,EAAMq3E,yBACRJ,EAAa,EACbngG,EAAO1L,OAAS,GAII,IAAlB0L,EAAO1L,SAAiB40B,EAAM/xB,KAAK7C,OAAS,IAAM40B,EAAM/xB,KAAK,KAAO,IAAI8C,WAAW,IAAMivB,EAAM/xB,KAAK,KAAO,IAAI8C,WAAW,IAAMivB,EAAM/xB,KAAK,KAAO,IAAI8C,WAAW,IAC/J8nD,EAAS5jB,OAEX72B,QAAQ6Z,IAAI,8CAsBhB,GAfAnhB,EAAO/L,KAAKi1B,GACZi3E,GAAcj3E,EAAM/xB,KAAKsC,WAEH,IAAlBuG,EAAO1L,SAKT4rG,EAAUN,GAAqB12E,EAAM/xB,KAAK2I,SAAS,EAAG,KAGtDogG,GAAW,MAITC,EAAaD,GAAjB,CAYA,IAPA35E,EAAM,CACJpvB,KAAM,IAAI4C,WAAWmmG,GACrB9N,OAAQ,GACR31F,IAAKuD,EAAO,GAAGvD,IACfD,IAAKwD,EAAO,GAAGxD,KAGZnI,EAAI,EAAGA,EAAI6rG,GACd35E,EAAIpvB,KAAKmoB,IAAItf,EAAO,GAAG7I,KAAK2I,SAAS,EAAGogG,EAAU7rG,GAAIA,GACtDA,GAAK2L,EAAO,GAAG7I,KAAKsC,WACpB0mG,GAAcngG,EAAO,GAAG7I,KAAKsC,WAC7BuG,EAAOk8B,QAITkkE,EAAa,GAEK,GAAd75E,EAAIpvB,KAAK,KAEXipG,GAAc,EAEdA,GAAcR,GAAqBr5E,EAAIpvB,KAAK2I,SAAS,GAAI,KAEzDogG,GAAWN,GAAqBr5E,EAAIpvB,KAAK2I,SAAS,GAAI,MAKxD,EAAG,CAID,GAFAugG,EAAYT,GAAqBr5E,EAAIpvB,KAAK2I,SAASsgG,EAAa,EAAGA,EAAa,IAE5EC,EAAY,EAEd,OAAO/4F,QAAQ6Z,IAAI,+DAUrB,GAPAm/E,EAAcx9F,OAAO+L,aAAa0X,EAAIpvB,KAAKipG,GAAa75E,EAAIpvB,KAAKipG,EAAa,GAAI75E,EAAIpvB,KAAKipG,EAAa,GAAI75E,EAAIpvB,KAAKipG,EAAa,IAClI9O,EAAQ,CACNzzF,GAAIyiG,EACJnpG,KAAMovB,EAAIpvB,KAAK2I,SAASsgG,EAAa,GAAIA,EAAaC,EAAY,KAEpE/O,EAAM39F,IAAM29F,EAAMzzF,GAEdgiG,GAAWvO,EAAMzzF,MACnBgiG,GAAWvO,EAAMzzF,IAAIyzF,GAGD,iDAAhBA,EAAM2O,OAA0D,CAClE,IAAIp/E,EAAIywE,EAAMn6F,KACVi3B,GAAe,EAAPvN,EAAE,KAAc,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAIA,EAAE,KAAO,EAChFuN,GAAQ,EACRA,GAAe,EAAPvN,EAAE,GACVywE,EAAMkP,UAAYpyE,OAKFx4B,IAAZ2wB,EAAI9pB,UAAiC7G,IAAZ2wB,EAAI/pB,MAC/B+pB,EAAI9pB,IAAM60F,EAAMkP,UAChBj6E,EAAI/pB,IAAM80F,EAAMkP,WAGlBlkG,KAAKI,QAAQ,YAAa40F,GAI9B/qE,EAAI6rE,OAAOn+F,KAAKq9F,GAChB8O,GAAc,GAEdA,GAAcC,QACPD,EAAaF,GAEtB5jG,KAAKI,QAAQ,OAAQ6pB,MAIzB84E,GAAgBjmG,UAAY,IAAI0Y,EAChC,IAGI2uF,GAAwBC,GAAuBC,GAH/CC,GAAiBvB,GACjBwB,GAA4BvB,GAAwBtjG,wBAKpD8kG,GAAqB,IAEzBC,GAAY,GAMZN,GAAyB,WACvB,IAAIzgG,EAAS,IAAIjG,WAAW+mG,IACxBE,EAAgB,EAEpBP,GAAuBrnG,UAAUgD,KAAKC,KAAKC,MAO3CA,KAAKrI,KAAO,SAAUupC,GACpB,IAEIyjE,EAFA/yE,EAAa,EACbK,EAAWuyE,GAIXE,GACFC,EAAa,IAAIlnG,WAAWyjC,EAAM/jC,WAAaunG,GAC/CC,EAAW3hF,IAAItf,EAAOF,SAAS,EAAGkhG,IAClCC,EAAW3hF,IAAIke,EAAOwjE,GACtBA,EAAgB,GAEhBC,EAAazjE,EAIf,MAAOjP,EAAW0yE,EAAWxnG,WAEvBwnG,EAAW/yE,KAAgB6yE,IAAaE,EAAW1yE,KAAcwyE,IAYrE7yE,IACAK,MAVEjyB,KAAKI,QAAQ,OAAQukG,EAAWnhG,SAASouB,EAAYK,IACrDL,GAAc4yE,GACdvyE,GAAYuyE,IAcZ5yE,EAAa+yE,EAAWxnG,aAC1BuG,EAAOsf,IAAI2hF,EAAWnhG,SAASouB,GAAa,GAC5C8yE,EAAgBC,EAAWxnG,WAAay0B,IAQ5C5xB,KAAKK,MAAQ,WAIPqkG,IAAkBF,IAAsB9gG,EAAO,KAAO+gG,KACxDzkG,KAAKI,QAAQ,OAAQsD,GACrBghG,EAAgB,GAGlB1kG,KAAKI,QAAQ,SAGfJ,KAAKM,YAAc,WACjBN,KAAKK,QACLL,KAAKI,QAAQ,kBAGfJ,KAAKQ,MAAQ,WACXkkG,EAAgB,EAChB1kG,KAAKI,QAAQ,WAIjB+jG,GAAuBrnG,UAAY,IAAI0Y,EAMvC4uF,GAAwB,WACtB,IAAIQ,EAAU/2F,EAAUE,EAAU0X,EAElC2+E,GAAsBtnG,UAAUgD,KAAKC,KAAKC,MAE1CylB,EAAOzlB,KACPA,KAAK6kG,qBAAuB,GAC5B7kG,KAAKgO,qBAAkB1U,EAEvBsrG,EAAW,SAAkB5J,EAAS8J,GACpC,IAAIn3F,EAAS,EAOTm3F,EAAIC,4BACNp3F,GAAUqtF,EAAQrtF,GAAU,GAGb,QAAbm3F,EAAInlG,KACNkO,EAASmtF,EAAQx3F,SAASmK,GAASm3F,GAEnC/2F,EAASitF,EAAQx3F,SAASmK,GAASm3F,IAIvCj3F,EAAW,SAAkBmtF,EAASgK,GACpCA,EAAIC,eAAiBjK,EAAQ,GAE7BgK,EAAIE,oBAAsBlK,EAAQ,GAGlCv1E,EAAK7X,QAAwB,GAAdotF,EAAQ,MAAe,EAAIA,EAAQ,IAClDgK,EAAIp3F,OAAS6X,EAAK7X,QAYpBG,EAAW,SAAkBitF,EAASmK,GACpC,IAAIj3F,EAAeC,EAAUC,EAAmBT,EAMhD,GAAmB,EAAbqtF,EAAQ,GAAd,CAKAv1E,EAAKzX,gBAAkB,CACrB05C,MAAO,KACP1yB,MAAO,KACP,iBAAkB,IAGpB9mB,GAA8B,GAAb8sF,EAAQ,KAAc,EAAIA,EAAQ,GACnD7sF,EAAW,EAAID,EAAgB,EAG/BE,GAAmC,GAAd4sF,EAAQ,MAAe,EAAIA,EAAQ,IAExDrtF,EAAS,GAAKS,EAEd,MAAOT,EAASQ,EAAU,CACxB,IAAIi3F,EAAapK,EAAQrtF,GACrBH,GAA6B,GAAtBwtF,EAAQrtF,EAAS,KAAc,EAAIqtF,EAAQrtF,EAAS,GAI3Dy3F,IAAetC,GAAYx0F,kBAAmD,OAA/BmX,EAAKzX,gBAAgB05C,MACtEjiC,EAAKzX,gBAAgB05C,MAAQl6C,EACpB43F,IAAetC,GAAYv0F,kBAAmD,OAA/BkX,EAAKzX,gBAAgBgnB,MAC7EvP,EAAKzX,gBAAgBgnB,MAAQxnB,EACpB43F,IAAetC,GAAYt0F,uBAEpCiX,EAAKzX,gBAAgB,kBAAkBR,GAAO43F,GAKhDz3F,GAAsE,IAApC,GAAtBqtF,EAAQrtF,EAAS,KAAc,EAAIqtF,EAAQrtF,EAAS,IAIlEw3F,EAAIn3F,gBAAkByX,EAAKzX,kBAO7BhO,KAAKrI,KAAO,SAAU4V,GACpB,IAAIzW,EAAS,GACT6W,EAAS,EAgBb,GAfA7W,EAAOiuG,6BAA2C,GAAZx3F,EAAO,IAE7CzW,EAAO0W,IAAkB,GAAZD,EAAO,GACpBzW,EAAO0W,MAAQ,EACf1W,EAAO0W,KAAOD,EAAO,IAMJ,GAAZA,EAAO,MAAe,EAAI,IAC7BI,GAAUJ,EAAOI,GAAU,GAIV,IAAf7W,EAAO0W,IACT1W,EAAO6I,KAAO,MACdilG,EAASr3F,EAAO/J,SAASmK,GAAS7W,GAClCkJ,KAAKI,QAAQ,OAAQtJ,QAChB,GAAIA,EAAO0W,MAAQxN,KAAK4N,OAAQ,CACrC9W,EAAO6I,KAAO,MACdilG,EAASr3F,EAAO/J,SAASmK,GAAS7W,GAClCkJ,KAAKI,QAAQ,OAAQtJ,GAErB,MAAOkJ,KAAK6kG,qBAAqB7sG,OAC/BgI,KAAKqlG,YAAYxjG,MAAM7B,KAAMA,KAAK6kG,qBAAqBjlE,mBAEvBtmC,IAAzB0G,KAAKgO,gBAGdhO,KAAK6kG,qBAAqBltG,KAAK,CAAC4V,EAAQI,EAAQ7W,IAEhDkJ,KAAKqlG,YAAY93F,EAAQI,EAAQ7W,IAIrCkJ,KAAKqlG,YAAc,SAAU93F,EAAQI,EAAQ7W,GAEvCA,EAAO0W,MAAQxN,KAAKgO,gBAAgB05C,MACtC5wD,EAAOsuG,WAAatC,GAAYx0F,iBACvBxX,EAAO0W,MAAQxN,KAAKgO,gBAAgBgnB,MAC7Cl+B,EAAOsuG,WAAatC,GAAYv0F,iBAIhCzX,EAAOsuG,WAAaplG,KAAKgO,gBAAgB,kBAAkBlX,EAAO0W,KAGpE1W,EAAO6I,KAAO,MACd7I,EAAO+D,KAAO0S,EAAO/J,SAASmK,GAC9B3N,KAAKI,QAAQ,OAAQtJ,KAIzBstG,GAAsBtnG,UAAY,IAAI0Y,EACtC4uF,GAAsBkB,aAAe,CACnCC,KAAM,GACNC,KAAM,IAWRnB,GAAoB,WAClB,IAcIr2F,EAdAyX,EAAOzlB,KAEX0nD,EAAQ,CACN7sD,KAAM,GACNi3B,KAAM,GAEJkD,EAAQ,CACVn6B,KAAM,GACNi3B,KAAM,GAEJ2zE,EAAgB,CAClB5qG,KAAM,GACNi3B,KAAM,GAGJ4zE,EAAW,SAAkB1K,EAASrsF,GACxC,IAAID,EAEJC,EAAIg3F,aAAe,GAAK3K,EAAQ,IAAM,EAAIA,EAAQ,IAElDrsF,EAAIs1F,uBAAiD,KAAV,EAAbjJ,EAAQ,IAItCtsF,EAAcssF,EAAQ,GASJ,IAAdtsF,IAIFC,EAAIxO,KAAoB,GAAb66F,EAAQ,KAAc,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,GAAmB,IAAdA,EAAQ,OAAgB,EACrJrsF,EAAIxO,KAAO,EAEXwO,EAAIxO,MAAsB,EAAd66F,EAAQ,OAAgB,EAEpCrsF,EAAIzO,IAAMyO,EAAIxO,IAEI,GAAduO,IACFC,EAAIzO,KAAqB,GAAd86F,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,IAAoB,IAAdA,EAAQ,MAAe,GAAmB,IAAdA,EAAQ,OAAgB,EACtJrsF,EAAIzO,KAAO,EAEXyO,EAAIzO,MAAsB,EAAd86F,EAAQ,OAAgB,IAOxCrsF,EAAI9T,KAAOmgG,EAAQx3F,SAAS,EAAIw3F,EAAQ,KAM1CxpF,EAAc,SAAqBo0F,EAAWjmG,EAAMkmG,GAClD,IAOIpkG,EAPAqkG,EAAa,IAAIroG,WAAWmoG,EAAU9zE,MACtCthB,EAAQ,CACV7Q,KAAMA,GAEJ5H,EAAI,EACJ4V,EAAS,EACTo4F,GAAkB,EAItB,GAAKH,EAAU/qG,KAAK7C,UAAU4tG,EAAU9zE,KAAO,GAA/C,CAMA,IAFAthB,EAAM/N,QAAUmjG,EAAU/qG,KAAK,GAAG2S,IAE7BzV,EAAI,EAAGA,EAAI6tG,EAAU/qG,KAAK7C,OAAQD,IACrC0J,EAAWmkG,EAAU/qG,KAAK9C,GAC1B+tG,EAAW9iF,IAAIvhB,EAAS5G,KAAM8S,GAC9BA,GAAUlM,EAAS5G,KAAKsC,WAI1BuoG,EAASI,EAAYt1F,GAGrBu1F,EAA2B,UAATpmG,GAAoB6Q,EAAMm1F,cAAgBC,EAAU9zE,MAElE+zE,GAAcE,KAChBH,EAAU9zE,KAAO,EACjB8zE,EAAU/qG,KAAK7C,OAAS,GAKtB+tG,GACFtgF,EAAKrlB,QAAQ,OAAQoQ,KAIzB6zF,GAAkBvnG,UAAUgD,KAAKC,KAAKC,MAOtCA,KAAKrI,KAAO,SAAUkD,IACpB,CACEmqG,IAAK,aAGLr2F,IAAK,WACH,IAAIi3F,EAAWR,EAEf,OAAQvqG,EAAKuqG,YACX,KAAKtC,GAAYx0F,iBACjB,KAAKw0F,GAAYx0F,iBACfs3F,EAAYl+C,EACZ09C,EAAa,QACb,MAEF,KAAKtC,GAAYv0F,iBACfq3F,EAAY5wE,EACZowE,EAAa,QACb,MAEF,KAAKtC,GAAYt0F,qBACfo3F,EAAYH,EACZL,EAAa,iBACb,MAEF,QAEE,OAKAvqG,EAAKkqG,2BACPvzF,EAAYo0F,EAAWR,GAAY,GAKrCQ,EAAU/qG,KAAKlD,KAAKkD,GACpB+qG,EAAU9zE,MAAQj3B,EAAKA,KAAKsC,YAE9BgoG,IAAK,WACH,IAAI30F,EAAQ,CACV7Q,KAAM,WACNmE,OAAQ,IAEVkK,EAAkBnT,EAAKmT,gBAEO,OAA1BA,EAAgB05C,OAClBl3C,EAAM1M,OAAOnM,KAAK,CAChBmqG,kBAAmB,CACjBn/F,oBAAqB,GAEvBpB,IAAKyM,EAAgB05C,MACrBxjD,MAAO,MACPvE,KAAM,UAIoB,OAA1BqO,EAAgBgnB,OAClBxkB,EAAM1M,OAAOnM,KAAK,CAChBmqG,kBAAmB,CACjBn/F,oBAAqB,GAEvBpB,IAAKyM,EAAgBgnB,MACrB9wB,MAAO,OACPvE,KAAM,UAIV8lB,EAAKrlB,QAAQ,OAAQoQ,MAEtB3V,EAAK8E,SAGVK,KAAKQ,MAAQ,WACXknD,EAAM51B,KAAO,EACb41B,EAAM7sD,KAAK7C,OAAS,EACpBg9B,EAAMlD,KAAO,EACbkD,EAAMn6B,KAAK7C,OAAS,EACpBgI,KAAKI,QAAQ,UAafJ,KAAKgmG,cAAgB,WAGnBx0F,EAAYk2C,EAAO,SACnBl2C,EAAYwjB,EAAO,SACnBxjB,EAAYi0F,EAAe,mBAG7BzlG,KAAKK,MAAQ,WACXL,KAAKgmG,gBACLhmG,KAAKI,QAAQ,UAIjBikG,GAAkBvnG,UAAY,IAAI0Y,EAClC,IAAIywF,GAAO,CACTC,QAAS,EACT1B,mBAAoBA,GACpB2B,sBAAuBhC,GACvBiC,qBAAsBhC,GACtBiC,iBAAkBhC,GAClB3kG,wBAAyB6kG,GACzBp0F,cAAe0yF,GAAc1yF,cAC7BG,aAAcuyF,GAAcvyF,aAC5Bg2F,eAAgBhC,IAGlB,IAAK,IAAI3kG,MAAQmjG,GACXA,GAAY3qG,eAAewH,MAC7BsmG,GAAKtmG,IAAQmjG,GAAYnjG,KAI7B,IAGI4mG,GAHAC,GAASP,GACTQ,GAAqBnG,GAAMvzF,iBAI3B25F,GAA4B,CAAC,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,IAAM,MAUpHH,GAAc,SAAoBI,GAChC,IAAIjjG,EACAkjG,EAAW,EAEfL,GAAYzpG,UAAUgD,KAAKC,KAAKC,MAEhCA,KAAKrI,KAAO,SAAU4V,GACpB,IACIs5F,EACAC,EACAC,EACAC,EACAC,EACAC,EANAnvG,EAAI,EAYR,GAJK4uG,IACHC,EAAW,GAGO,UAAhBr5F,EAAO5N,KAAX,CAOI+D,GACFsjG,EAAYtjG,EACZA,EAAS,IAAIjG,WAAWupG,EAAU7pG,WAAaoQ,EAAO1S,KAAKsC,YAC3DuG,EAAOsf,IAAIgkF,GACXtjG,EAAOsf,IAAIzV,EAAO1S,KAAMmsG,EAAU7pG,aAElCuG,EAAS6J,EAAO1S,KAKlB,MAAO9C,EAAI,EAAI2L,EAAO1L,OAEpB,GAAkB,MAAd0L,EAAO3L,IAA0C,OAAV,IAAhB2L,EAAO3L,EAAI,IAAtC,CAkBA,GATA+uG,EAAgD,GAAR,GAAhBpjG,EAAO3L,EAAI,IAGnC8uG,GAA+B,EAAhBnjG,EAAO3L,EAAI,KAAc,GAAK2L,EAAO3L,EAAI,IAAM,GAAqB,IAAhB2L,EAAO3L,EAAI,KAAc,EAC5FkvG,EAA6C,MAAL,GAAR,EAAhBvjG,EAAO3L,EAAI,KAC3BmvG,EAAoBD,EAAcR,GAAqBC,IAA2C,GAAhBhjG,EAAO3L,EAAI,MAAe,GAC5GgvG,EAAWhvG,EAAI8uG,EAGXnjG,EAAOvG,WAAa4pG,EACtB,OAkBF,GAdA/mG,KAAKI,QAAQ,OAAQ,CACnBD,IAAKoN,EAAOpN,IAAMymG,EAAWM,EAC7BhnG,IAAKqN,EAAOrN,IAAM0mG,EAAWM,EAC7BD,YAAaA,EACb/L,gBAAgD,GAA9Bx3F,EAAO3L,EAAI,KAAO,EAAI,GACxCqjG,cAA+B,EAAhB13F,EAAO3L,EAAI,KAAW,GAAqB,IAAhB2L,EAAO3L,EAAI,MAAe,EACpEsjG,WAAYqL,IAA2C,GAAhBhjG,EAAO3L,EAAI,MAAe,GACjEojG,wBAAyC,GAAhBz3F,EAAO3L,EAAI,MAAe,EAEnD0kG,WAAY,GACZ5hG,KAAM6I,EAAOF,SAASzL,EAAI,EAAI+uG,EAAqBC,KAErDH,IAEIljG,EAAOvG,aAAe4pG,EAExB,YADArjG,OAASpK,GAKXoK,EAASA,EAAOF,SAASujG,QAxCvBhvG,MA4CNiI,KAAKK,MAAQ,WACXumG,EAAW,EACX5mG,KAAKI,QAAQ,SAGfJ,KAAKQ,MAAQ,WACXkD,OAAS,EACT1D,KAAKI,QAAQ,UAGfJ,KAAKM,YAAc,WACjBoD,OAAS,EACT1D,KAAKI,QAAQ,mBAIjBmmG,GAAYzpG,UAAY,IAAI0Y,EAC5B,IAQI2xF,GARA3B,GAAOe,GAcXY,GAAY,SAAmBC,GAC7B,IACAC,EAAwBD,EAAYjqG,WAEpCmqG,EAAc,EAGdC,EAAuB,EAGvBvnG,KAAKhI,OAAS,WACZ,OAAO,EAAIqvG,GAIbrnG,KAAKwnG,cAAgB,WACnB,OAAO,EAAIH,EAAwBE,GAIrCvnG,KAAKynG,SAAW,WACd,IAAI5hG,EAAWuhG,EAAYjqG,WAAakqG,EACpCK,EAAe,IAAIjqG,WAAW,GAC9BkqG,EAAiBnoG,KAAK8C,IAAI,EAAG+kG,GAEjC,GAAuB,IAAnBM,EACF,MAAM,IAAIhvG,MAAM,sBAGlB+uG,EAAa1kF,IAAIokF,EAAY5jG,SAASqC,EAAUA,EAAW8hG,IAC3DL,EAAc,IAAI7jG,SAASikG,EAAahkG,QAAQG,UAAU,GAE1D0jG,EAAwC,EAAjBI,EACvBN,GAAyBM,GAI3B3nG,KAAK4nG,SAAW,SAAUxlF,GACxB,IAAIylF,EAEAN,EAAuBnlF,GACzBklF,IAAgBllF,EAChBmlF,GAAwBnlF,IAExBA,GAASmlF,EACTM,EAAYroG,KAAKolB,MAAMxC,EAAQ,GAC/BA,GAAqB,EAAZylF,EACTR,GAAyBQ,EACzB7nG,KAAKynG,WACLH,IAAgBllF,EAChBmlF,GAAwBnlF,IAK5BpiB,KAAK8nG,SAAW,SAAUh2E,GACxB,IAAIi2E,EAAOvoG,KAAK8C,IAAIilG,EAAsBz1E,GAE1Ck2E,EAAOV,IAAgB,GAAKS,EAa5B,OAVAR,GAAwBQ,EAEpBR,EAAuB,EACzBD,IAAgBS,EACPV,EAAwB,GACjCrnG,KAAKynG,WAGPM,EAAOj2E,EAAOi2E,EAEVA,EAAO,EACFC,GAAQD,EAAO/nG,KAAK8nG,SAASC,GAG/BC,GAIThoG,KAAKioG,iBAAmB,WACtB,IAAIC,EAEJ,IAAKA,EAAmB,EAAGA,EAAmBX,IAAwBW,EACpE,GAAwD,KAAnDZ,EAAc,aAAeY,GAIhC,OAFAZ,IAAgBY,EAChBX,GAAwBW,EACjBA,EAMX,OADAloG,KAAKynG,WACES,EAAmBloG,KAAKioG,oBAIjCjoG,KAAKmoG,sBAAwB,WAC3BnoG,KAAK4nG,SAAS,EAAI5nG,KAAKioG,qBAIzBjoG,KAAKooG,cAAgB,WACnBpoG,KAAK4nG,SAAS,EAAI5nG,KAAKioG,qBAIzBjoG,KAAKqoG,sBAAwB,WAC3B,IAAIC,EAAMtoG,KAAKioG,mBAEf,OAAOjoG,KAAK8nG,SAASQ,EAAM,GAAK,GAIlCtoG,KAAKuoG,cAAgB,WACnB,IAAIP,EAAOhoG,KAAKqoG,wBAEhB,OAAI,EAAOL,EAEF,EAAIA,IAAS,GAGd,GAAKA,IAAS,IAKxBhoG,KAAKwoG,YAAc,WACjB,OAA4B,IAArBxoG,KAAK8nG,SAAS,IAIvB9nG,KAAKyoG,iBAAmB,WACtB,OAAOzoG,KAAK8nG,SAAS,IAGvB9nG,KAAKynG,YAGP,IAEIiB,GAAaC,GAEbC,GAJAC,GAAY1B,GAShBwB,GAAiB,WACf,IACI5wG,EACA2L,EAFAolG,EAAY,EAIhBH,GAAe7rG,UAAUgD,KAAKC,KAAKC,MAUnCA,KAAKrI,KAAO,SAAUkD,GACpB,IAAIkuG,EAECrlG,GAGHqlG,EAAa,IAAItrG,WAAWiG,EAAOvG,WAAatC,EAAKA,KAAKsC,YAC1D4rG,EAAW/lF,IAAItf,GACfqlG,EAAW/lF,IAAInoB,EAAKA,KAAM6I,EAAOvG,YACjCuG,EAASqlG,GALTrlG,EAAS7I,EAAKA,KAkBhB,IAVA,IAAI6C,EAAMgG,EAAOvG,WAUV2rG,EAAYprG,EAAM,EAAGorG,IAC1B,GAA8B,IAA1BplG,EAAOolG,EAAY,GAAU,CAE/B/wG,EAAI+wG,EAAY,EAChB,MAIJ,MAAO/wG,EAAI2F,EAGT,OAAQgG,EAAO3L,IACb,KAAK,EAEH,GAAsB,IAAlB2L,EAAO3L,EAAI,GAAU,CACvBA,GAAK,EACL,MACK,GAAsB,IAAlB2L,EAAO3L,EAAI,GAAU,CAC9BA,IACA,MAIE+wG,EAAY,IAAM/wG,EAAI,GACxBiI,KAAKI,QAAQ,OAAQsD,EAAOF,SAASslG,EAAY,EAAG/wG,EAAI,IAI1D,GACEA,UACqB,IAAd2L,EAAO3L,IAAYA,EAAI2F,GAEhCorG,EAAY/wG,EAAI,EAChBA,GAAK,EACL,MAEF,KAAK,EAEH,GAAsB,IAAlB2L,EAAO3L,EAAI,IAA8B,IAAlB2L,EAAO3L,EAAI,GAAU,CAC9CA,GAAK,EACL,MAIFiI,KAAKI,QAAQ,OAAQsD,EAAOF,SAASslG,EAAY,EAAG/wG,EAAI,IACxD+wG,EAAY/wG,EAAI,EAChBA,GAAK,EACL,MAEF,QAGEA,GAAK,EACL,MAKN2L,EAASA,EAAOF,SAASslG,GACzB/wG,GAAK+wG,EACLA,EAAY,GAGd9oG,KAAKQ,MAAQ,WACXkD,EAAS,KACTolG,EAAY,EACZ9oG,KAAKI,QAAQ,UAGfJ,KAAKK,MAAQ,WAEPqD,GAAUA,EAAOvG,WAAa,GAChC6C,KAAKI,QAAQ,OAAQsD,EAAOF,SAASslG,EAAY,IAInDplG,EAAS,KACTolG,EAAY,EACZ9oG,KAAKI,QAAQ,SAGfJ,KAAKM,YAAc,WACjBN,KAAKK,QACLL,KAAKI,QAAQ,mBAIjBuoG,GAAe7rG,UAAY,IAAI0Y,EAI/BozF,GAAkC,CAChCI,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,GAOPjB,GAAc,WACZ,IACIjjF,EACAhjB,EACAmnG,EACAC,EACAvH,EACAwH,EACAC,EAPAC,EAAgB,IAAIrB,GASxBD,GAAY5rG,UAAUgD,KAAKC,KAAKC,MAEhCylB,EAAOzlB,KAaPA,KAAKrI,KAAO,SAAU4V,GACA,UAAhBA,EAAO5N,OAIX8C,EAAU8K,EAAO9K,QACjBmnG,EAAar8F,EAAOpN,IACpB0pG,EAAat8F,EAAOrN,IACpB8pG,EAAcryG,KAAK4V,KAYrBy8F,EAAc56F,GAAG,QAAQ,SAAUvU,GACjC,IAAI2V,EAAQ,CACV/N,QAASA,EACTtC,IAAKypG,EACL1pG,IAAK2pG,EACLhvG,KAAMA,GAGR,OAAkB,GAAVA,EAAK,IACX,KAAK,EACH2V,EAAMI,YAAc,4CACpB,MAEF,KAAK,EACHJ,EAAMI,YAAc,WACpBJ,EAAMM,YAAcwxF,EAAgCznG,EAAK2I,SAAS,IAClE,MAEF,KAAK,EACHgN,EAAMI,YAAc,yBACpBJ,EAAMM,YAAcwxF,EAAgCznG,EAAK2I,SAAS,IAClEgN,EAAMo5D,OAASkgC,EAAyBt5F,EAAMM,aAC9C,MAEF,KAAK,EACHN,EAAMI,YAAc,yBACpB,MAEF,KAAK,EACHJ,EAAMI,YAAc,6BACpB,MAIJ6U,EAAKrlB,QAAQ,OAAQoQ,MAEvBw5F,EAAc56F,GAAG,QAAQ,WACvBqW,EAAKrlB,QAAQ,WAEf4pG,EAAc56F,GAAG,eAAe,WAC9BqW,EAAKrlB,QAAQ,kBAEf4pG,EAAc56F,GAAG,SAAS,WACxBqW,EAAKrlB,QAAQ,YAEf4pG,EAAc56F,GAAG,iBAAiB,WAChCqW,EAAKrlB,QAAQ,oBAGfJ,KAAKK,MAAQ,WACX2pG,EAAc3pG,SAGhBL,KAAK6P,aAAe,WAClBm6F,EAAcn6F,gBAGhB7P,KAAKQ,MAAQ,WACXwpG,EAAcxpG,SAGhBR,KAAKM,YAAc,WACjB0pG,EAAc1pG,eAahBypG,EAAkB,SAAyB3nF,EAAO6nF,GAChD,IAEIjsE,EACAksE,EAHAC,EAAY,EACZC,EAAY,EAIhB,IAAKpsE,EAAI,EAAGA,EAAI5b,EAAO4b,IACH,IAAdosE,IACFF,EAAaD,EAAiB1B,gBAC9B6B,GAAaD,EAAYD,EAAa,KAAO,KAG/CC,EAA0B,IAAdC,EAAkBD,EAAYC,GAa9C9H,EAAkC,SAAyCznG,GACzE,IAGI0nG,EACAC,EAJAxqG,EAAS6C,EAAKsC,WACdslG,EAAoC,GACpC1qG,EAAI,EAIR,MAAOA,EAAIC,EAAS,EACF,IAAZ6C,EAAK9C,IAA4B,IAAhB8C,EAAK9C,EAAI,IAA4B,IAAhB8C,EAAK9C,EAAI,IACjD0qG,EAAkC9qG,KAAKI,EAAI,GAC3CA,GAAK,GAELA,IAMJ,GAAiD,IAA7C0qG,EAAkCzqG,OACpC,OAAO6C,EAIT0nG,EAAYvqG,EAASyqG,EAAkCzqG,OACvDwqG,EAAU,IAAI/kG,WAAW8kG,GACzB,IAAIG,EAAc,EAElB,IAAK3qG,EAAI,EAAGA,EAAIwqG,EAAWG,IAAe3qG,IACpC2qG,IAAgBD,EAAkC,KAEpDC,IAEAD,EAAkC7iE,SAGpC4iE,EAAQzqG,GAAK8C,EAAK6nG,GAGpB,OAAOF,GAaTsH,EAA2B,SAAkCjvG,GAC3D,IAKIovG,EACA9N,EACAE,EACAD,EACAiO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACArO,EACAsO,EACA7yG,EAlBA8yG,EAAsB,EACtBC,EAAuB,EACvBC,EAAqB,EACrBC,EAAwB,EACxBC,EAAW,EAyBf,GAVAhB,EAAmB,IAAIpB,GAAUhuG,GACjCshG,EAAa8N,EAAiBxB,mBAE9BrM,EAAuB6N,EAAiBxB,mBAExCpM,EAAW4N,EAAiBxB,mBAE5BwB,EAAiB9B,wBAGbS,GAAgCzM,KAClCkO,EAAkBJ,EAAiB5B,wBAEX,IAApBgC,GACFJ,EAAiBrC,SAAS,GAG5BqC,EAAiB9B,wBAEjB8B,EAAiB9B,wBAEjB8B,EAAiBrC,SAAS,GAEtBqC,EAAiBzB,eAInB,IAFAmC,EAAuC,IAApBN,EAAwB,EAAI,GAE1CtyG,EAAI,EAAGA,EAAI4yG,EAAkB5yG,IAC5BkyG,EAAiBzB,eAGjBuB,EADEhyG,EAAI,EACU,GAEA,GAFIkyG,GAa9B,GAJAA,EAAiB9B,wBAEjBmC,EAAkBL,EAAiB5B,wBAEX,IAApBiC,EACFL,EAAiB5B,6BACZ,GAAwB,IAApBiC,EAST,IARAL,EAAiBrC,SAAS,GAE1BqC,EAAiB7B,gBAEjB6B,EAAiB7B,gBAEjBmC,EAAiCN,EAAiB5B,wBAE7CtwG,EAAI,EAAGA,EAAIwyG,EAAgCxyG,IAC9CkyG,EAAiB7B,gBA0BrB,GAtBA6B,EAAiB9B,wBAEjB8B,EAAiBrC,SAAS,GAE1B4C,EAAsBP,EAAiB5B,wBACvCoC,EAA4BR,EAAiB5B,wBAC7CqC,EAAmBT,EAAiBnC,SAAS,GAEpB,IAArB4C,GACFT,EAAiBrC,SAAS,GAG5BqC,EAAiBrC,SAAS,GAEtBqC,EAAiBzB,gBAEnBqC,EAAsBZ,EAAiB5B,wBACvCyC,EAAuBb,EAAiB5B,wBACxC0C,EAAqBd,EAAiB5B,wBACtC2C,EAAwBf,EAAiB5B,yBAGvC4B,EAAiBzB,eAEfyB,EAAiBzB,cAAe,CAIlC,OAFAoC,EAAiBX,EAAiBxB,mBAE1BmC,GACN,KAAK,EACHtO,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,EACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,GAAI,IAChB,MAEF,KAAK,GACHA,EAAW,CAAC,IAAK,IACjB,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,GACHA,EAAW,CAAC,EAAG,GACf,MAEF,KAAK,IAEDA,EAAW,CAAC2N,EAAiBxB,oBAAsB,EAAIwB,EAAiBxB,mBAAoBwB,EAAiBxB,oBAAsB,EAAIwB,EAAiBxB,oBACxJ,MAIFnM,IACF2O,EAAW3O,EAAS,GAAKA,EAAS,IAKxC,MAAO,CACLH,WAAYA,EACZE,SAAUA,EACVD,qBAAsBA,EACtBt0E,MAAOtoB,KAAKuvB,MAAkC,IAA3By7E,EAAsB,GAAgC,EAAtBK,EAAiD,EAAvBC,GAA4BG,GACzGljF,QAAS,EAAI2iF,IAAqBD,EAA4B,GAAK,GAA0B,EAArBM,EAAiD,EAAxBC,EACjG1O,SAAUA,KAKhBoM,GAAY5rG,UAAY,IAAI0Y,EAC5B,IAyJI01F,GAzJA3F,GAAO,CACT4F,WAAYzC,GACZ0C,cAAezC,IAWb0C,GAA8B,CAAC,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,KAAO,KAAO,MAAO,IAAM,MAElHC,GAAkB,SAAyBzwG,GAC7C,OAAIA,EAAK,KAAO,IAAI8C,WAAW,IAAM9C,EAAK,KAAO,IAAI8C,WAAW,IAAM9C,EAAK,KAAO,IAAI8C,WAAW,IAO/F4tG,GAAyB,SAA8B1wG,GACzD,OAAOA,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,IAKzD2wG,GAAkB,SAAuBtqE,EAAOziC,EAAOC,GACzD,IAAI3G,EACAjB,EAAS,GAEb,IAAKiB,EAAI0G,EAAO1G,EAAI2G,EAAK3G,IACvBjB,GAAU,KAAO,KAAOoqC,EAAMnpC,GAAG+M,SAAS,KAAKxN,OAAO,GAGxD,OAAOR,GAKL20G,GAAkB,SAAuBvqE,EAAOziC,EAAOC,GACzD,OAAO2kG,SAASmI,GAAgBtqE,EAAOziC,EAAOC,KAG5CgtG,GAAkB,SAAyBC,EAAQC,GACrD,IAAIC,EAAaF,EAAOC,EAAY,IAAM,GAAKD,EAAOC,EAAY,IAAM,GAAKD,EAAOC,EAAY,IAAM,EAAID,EAAOC,EAAY,GACzHpQ,EAAQmQ,EAAOC,EAAY,GAC3BE,GAAyB,GAARtQ,IAAe,EAEpC,OAAIsQ,EACKD,EAAa,GAGfA,EAAa,IAGlBE,GAAgB,SAAuBJ,EAAQC,GACjD,IAAII,GAAoC,IAAxBL,EAAOC,EAAY,KAAc,EAC7CK,EAASN,EAAOC,EAAY,IAAM,EAClCM,EAAkC,KAAxBP,EAAOC,EAAY,GACjC,OAAOM,EAAUD,EAASD,GAGxBzoG,GAAY,SAAmBooG,EAAQC,GACzC,OAAID,EAAOC,KAAe,IAAIjuG,WAAW,IAAMguG,EAAOC,EAAY,KAAO,IAAIjuG,WAAW,IAAMguG,EAAOC,EAAY,KAAO,IAAIjuG,WAAW,GAC9H,kBACsB,EAApBguG,EAAOC,IAAiE,OAAV,IAAxBD,EAAOC,EAAY,IAC3D,QAGF,MAGLO,GAAkB,SAAyB5+F,GAC7C,IAAIxV,EAAI,EAER,MAAOA,EAAI,EAAIwV,EAAOvV,OAAQ,CAC5B,GAAkB,MAAduV,EAAOxV,IAA0C,OAAV,IAAhBwV,EAAOxV,EAAI,IAOtC,OAAOszG,IAA6C,GAAhB99F,EAAOxV,EAAI,MAAe,GAJ5DA,IAOJ,OAAO,MAGLq0G,GAAoB,SAA2B7+F,GACjD,IAAIu2F,EAAYC,EAAW/O,EAAOgP,EAElCF,EAAa,GAEG,GAAZv2F,EAAO,KAETu2F,GAAc,EAEdA,GAAcyH,GAAuBh+F,EAAO/J,SAAS,GAAI,MAK3D,EAAG,CAID,GAFAugG,EAAYwH,GAAuBh+F,EAAO/J,SAASsgG,EAAa,EAAGA,EAAa,IAE5EC,EAAY,EACd,OAAO,KAKT,GAFAC,EAAcx9F,OAAO+L,aAAahF,EAAOu2F,GAAav2F,EAAOu2F,EAAa,GAAIv2F,EAAOu2F,EAAa,GAAIv2F,EAAOu2F,EAAa,IAEtG,SAAhBE,EAAwB,CAC1BhP,EAAQznF,EAAO/J,SAASsgG,EAAa,GAAIA,EAAaC,EAAY,IAElE,IAAK,IAAIhsG,EAAI,EAAGA,EAAIi9F,EAAM73F,WAAYpF,IACpC,GAAiB,IAAbi9F,EAAMj9F,GAAU,CAClB,IAAI4rG,EAAQ8H,GAAgBzW,EAAO,EAAGj9F,GAEtC,GAAc,iDAAV4rG,EAA0D,CAC5D,IAAIp/E,EAAIywE,EAAMxxF,SAASzL,EAAI,GACvB+5B,GAAe,EAAPvN,EAAE,KAAc,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAIA,EAAE,KAAO,EAGhF,OAFAuN,GAAQ,EACRA,GAAe,EAAPvN,EAAE,GACHuN,EAGT,OAKNgyE,GAAc,GAEdA,GAAcC,QACPD,EAAav2F,EAAOpQ,YAE7B,OAAO,MAGL0zF,GAAQ,CACVya,gBAAiBA,GACjBI,gBAAiBA,GACjBK,cAAeA,GACfxoG,UAAWA,GACX4oG,gBAAiBA,GACjBC,kBAAmBA,IASrBlB,GAAa,WACX,IAAIvG,EAAa,IAAIlnG,WACjBymG,EAAY,EAEhBgH,GAAWpuG,UAAUgD,KAAKC,KAAKC,MAE/BA,KAAKqsG,aAAe,SAAUn/F,GAC5Bg3F,EAAYh3F,GAGdlN,KAAKrI,KAAO,SAAUupC,GACpB,IAEIorE,EACA1/E,EACArf,EACAg/F,EALAxI,EAAY,EACZ6H,EAAY,EAOZjH,EAAW3sG,QACbu0G,EAAa5H,EAAW3sG,OACxB2sG,EAAa,IAAIlnG,WAAWyjC,EAAM/jC,WAAaovG,GAC/C5H,EAAW3hF,IAAI2hF,EAAWnhG,SAAS,EAAG+oG,IACtC5H,EAAW3hF,IAAIke,EAAOqrE,IAEtB5H,EAAazjE,EAGf,MAAOyjE,EAAW3sG,OAAS4zG,GAAa,EACtC,GAAIjH,EAAWiH,KAAe,IAAIjuG,WAAW,IAAMgnG,EAAWiH,EAAY,KAAO,IAAIjuG,WAAW,IAAMgnG,EAAWiH,EAAY,KAAO,IAAIjuG,WAAW,GAuB5I,GAAuC,OAAV,IAAxBgnG,EAAWiH,KAAsE,OAAV,IAA5BjH,EAAWiH,EAAY,IAyB9EA,QAzBO,CAGL,GAAIjH,EAAW3sG,OAAS4zG,EAAY,EAClC,MAMF,GAHA7H,EAAYlT,GAAMkb,cAAcpH,EAAYiH,GAGxCA,EAAY7H,EAAYY,EAAW3sG,OACrC,MAGFuV,EAAS,CACP5N,KAAM,QACN9E,KAAM8pG,EAAWnhG,SAASooG,EAAWA,EAAY7H,GACjD5jG,IAAK+jG,EACLhkG,IAAKgkG,GAEPlkG,KAAKI,QAAQ,OAAQmN,GACrBq+F,GAAa7H,MA5Cf,CAGE,GAAIY,EAAW3sG,OAAS4zG,EAAY,GAClC,MAQF,GAJA7H,EAAYlT,GAAM6a,gBAAgB/G,EAAYiH,GAI1CA,EAAY7H,EAAYY,EAAW3sG,OACrC,MAGF40B,EAAQ,CACNjtB,KAAM,iBACN9E,KAAM8pG,EAAWnhG,SAASooG,EAAWA,EAAY7H,IAEnD/jG,KAAKI,QAAQ,OAAQwsB,GACrBg/E,GAAa7H,EA8BjBuI,EAAY3H,EAAW3sG,OAAS4zG,EAG9BjH,EADE2H,EAAY,EACD3H,EAAWnhG,SAASooG,GAEpB,IAAInuG,YAIrBuC,KAAKQ,MAAQ,WACXmkG,EAAa,IAAIlnG,WACjBuC,KAAKI,QAAQ,UAGfJ,KAAKM,YAAc,WACjBqkG,EAAa,IAAIlnG,WACjBuC,KAAKI,QAAQ,mBAIjB8qG,GAAWpuG,UAAY,IAAI0Y,EAC3B,IAQIg3F,GAAqBC,GAAqBC,GAAaC,GARvDn8C,GAAM06C,GACNC,GAAa5F,GAAK4F,WAClByB,GAAoB/b,GAAMya,gBAC1BuB,GAAqBvM,GAAMvzF,iBAE3B+/F,GAAmB,CAAC,kBAAmB,eAAgB,aAAc,yBAA0B,cAC/FC,GAAmB,CAAC,QAAS,SAAU,aAAc,WAAY,uBAAwB,YAQzFC,GAAc,SAAqBthG,EAAGmG,GACxC,IAAI9Z,EAEJ,GAAI2T,EAAE1T,SAAW6Z,EAAE7Z,OACjB,OAAO,EAIT,IAAKD,EAAI,EAAGA,EAAI2T,EAAE1T,OAAQD,IACxB,GAAI2T,EAAE3T,KAAO8Z,EAAE9Z,GACb,OAAO,EAIX,OAAO,GAGLk1G,GAAiC,SAAwCtqG,EAAqBuqG,EAAU53F,EAAU63F,EAAQ53F,EAAQ63F,GACpI,IAAIC,EAAmB/3F,EAAW43F,EAC9BI,EAAiBH,EAASD,EAC1BK,EAAuBh4F,EAASD,EAKpC,MAAO,CACL7W,MAAO,CACLyB,IAAKyC,EACLxC,IAAKwC,EAAsB0qG,GAE7B3uG,IAAK,CACHwB,IAAKyC,EAAsB2qG,EAC3BntG,IAAKwC,EAAsB4qG,GAE7BH,yBAA0BA,EAC1BzqG,oBAAqBA,IAczB8pG,GAAsB,SAA4B1oG,EAAOzL,GACvD,IAAI+oG,EAAa,GACb/F,EAAiB,EACjBgG,EAAqB,EACrBX,EAAqB,EACrBC,EAA2Bv+F,IAC/B/J,EAAUA,GAAW,GAErBm0G,GAAoB3vG,UAAUgD,KAAKC,KAAKC,MAExCA,KAAKrI,KAAO,SAAUkD,GACpBsnG,GAAgBN,eAAe99F,EAAOlJ,GAElCkJ,GACF+oG,GAAiB71G,SAAQ,SAAUgsC,GACjCl/B,EAAMk/B,GAAQpoC,EAAKooC,MAKvBo+D,EAAW1pG,KAAKkD,IAGlBmF,KAAKwtG,eAAiB,SAAUC,GAC9BnM,EAAqBmM,EAAc1pG,EAAM+9F,kBAAkBn/F,qBAG7D3C,KAAK0tG,4BAA8B,SAAU/qG,GAC3Ci+F,EAA2Bj+F,GAG7B3C,KAAK2tG,oBAAsB,SAAUzgG,GACnCyzF,EAAqBzzF,GAGvBlN,KAAKK,MAAQ,WACX,IAAIy1F,EAAQ8C,EAAMH,EAAM11F,EAAOi+F,EAEL,IAAtBK,EAAWrpG,QAKf89F,EAAS6L,GAAgBP,4BAA4BC,EAAYt9F,EAAOu9F,GACxEv9F,EAAMpB,oBAAsBw/F,GAAgBD,kCAAkCn+F,EAAOzL,EAAQ8U,wBAC7Fu0F,GAAgBjB,kBAAkB38F,EAAO+xF,EAAQ6K,EAAoBC,GAGrE78F,EAAMf,QAAU2+F,GAAgBhD,oBAAoB7I,GAEpD2C,EAAOmF,EAAanF,KAAKkJ,GAAgBD,qBAAqB5L,IAC9DuL,EAAa,GACbzI,EAAOgF,EAAahF,KAAK0C,EAAgB,CAACv3F,IAC1ChB,EAAQ,IAAItF,WAAWm7F,EAAKz7F,WAAas7F,EAAKt7F,YAE9Cm+F,IACAv4F,EAAMigB,IAAI41E,GACV71F,EAAMigB,IAAIy1E,EAAMG,EAAKz7F,YACrBglG,GAAgBF,aAAal+F,GAC7Bi9F,EAAgBxhG,KAAKuvB,KAA0B,KAArB89E,GAA4B9oG,EAAMs3F,YAKxDvF,EAAO99F,QACTgI,KAAKI,QAAQ,aAAc,CACzB3B,MAAOq3F,EAAO,GAAG31F,IACjBzB,IAAKo3F,EAAO,GAAG31F,IAAM21F,EAAO99F,OAASgpG,IAIzChhG,KAAKI,QAAQ,OAAQ,CACnB2D,MAAOA,EACPhB,MAAOA,IAET/C,KAAKI,QAAQ,OAAQ,uBApCnBJ,KAAKI,QAAQ,OAAQ,uBAuCzBJ,KAAKQ,MAAQ,WACX2hG,GAAgBF,aAAal+F,GAC7Bs9F,EAAa,GACbrhG,KAAKI,QAAQ,WAIjBqsG,GAAoB3vG,UAAY,IAAI0Y,EAapCg3F,GAAsB,SAA4BzoG,EAAOzL,GACvD,IAGIsxE,EACAoyB,EAJAV,EAAiB,EACjB0C,EAAW,GACX4P,EAAkB,GAGtBt1G,EAAUA,GAAW,GAErBk0G,GAAoB1vG,UAAUgD,KAAKC,KAAKC,aAEjC+D,EAAM8pG,OACb7tG,KAAK8tG,UAAY,GAUjB9tG,KAAKrI,KAAO,SAAUo2G,GACpB5L,GAAgBN,eAAe99F,EAAOgqG,GAEV,2BAAxBA,EAAQn9F,aAA6Cg5D,IACvDA,EAASmkC,EAAQnkC,OACjB7lE,EAAMg4F,IAAM,CAACgS,EAAQlzG,MACrBkyG,GAAiB91G,SAAQ,SAAUgsC,GACjCl/B,EAAMk/B,GAAQ2mC,EAAO3mC,KACpBjjC,OAGuB,2BAAxB+tG,EAAQn9F,aAA6CorF,IACvDA,EAAM+R,EAAQlzG,KACdkJ,EAAMi4F,IAAM,CAAC+R,EAAQlzG,OAIvBmjG,EAASrmG,KAAKo2G,IAQhB/tG,KAAKK,MAAQ,WACX,IAAIy1F,EACAkY,EACAzP,EACA3F,EACAH,EACA11F,EAEAkrG,EACAC,EAFAd,EAA2B,EAK/B,MAAOpP,EAAShmG,OAAQ,CACtB,GAAgC,+BAA5BgmG,EAAS,GAAGptF,YACd,MAGFotF,EAASp+D,QAIX,GAAwB,IAApBo+D,EAAShmG,OAGX,OAFAgI,KAAKmuG,oBACLnuG,KAAKI,QAAQ,OAAQ,sBAkDvB,GA3CA01F,EAASqJ,GAAWpB,oBAAoBC,GACxCO,EAAOY,GAAWd,oBAAoBvI,GAmBjCyI,EAAK,GAAG,GAAGH,WAEd4P,EAAehuG,KAAKouG,iBAAiBpQ,EAAS,GAAIj6F,GAE9CiqG,GAGFZ,EAA2BY,EAAa/mF,SACxCs3E,EAAKh9D,QAAQysE,GAGbzP,EAAKphG,YAAc6wG,EAAa7wG,WAChCohG,EAAKJ,UAAY6P,EAAa7P,SAC9BI,EAAKp+F,IAAM6tG,EAAa7tG,IACxBo+F,EAAKr+F,IAAM8tG,EAAa9tG,IACxBq+F,EAAKt3E,UAAY+mF,EAAa/mF,UAG9Bs3E,EAAOY,GAAWX,oBAAoBD,IAKtCqP,EAAgB51G,OAAQ,CAC1B,IAAIq2G,EAQJ,GALEA,EADE/1G,EAAQg2G,eACItuG,KAAKuuG,gBAAgBhQ,GAErBv+F,KAAKwuG,kBAAkBjQ,IAGlC8P,EAcH,OAZAruG,KAAK8tG,UAAUvsE,QAAQ,CACrBktE,IAAKlQ,EAAKjmD,MACV0jD,IAAKj4F,EAAMi4F,IACXD,IAAKh4F,EAAMg4F,MAGb/7F,KAAK8tG,UAAU91G,OAASwH,KAAK8C,IAAI,EAAGtC,KAAK8tG,UAAU91G,QAEnDgmG,EAAW,GAEXh+F,KAAKmuG,oBACLnuG,KAAKI,QAAQ,OAAQ,sBAMvB+hG,GAAgBF,aAAal+F,GAC7Bw6F,EAAO8P,EAGTlM,GAAgBN,eAAe99F,EAAOw6F,GAGtCx6F,EAAMf,QAAUm8F,GAAWR,oBAAoBJ,GAE/C9F,EAAOmF,EAAanF,KAAK0G,GAAWN,mBAAmBN,IACvDx6F,EAAMpB,oBAAsBw/F,GAAgBD,kCAAkCn+F,EAAOzL,EAAQ8U,wBAC7FpN,KAAKI,QAAQ,oBAAqBm+F,EAAKz8F,KAAI,SAAU2sG,GACnD,MAAO,CACLtuG,IAAKsuG,EAAItuG,IACTD,IAAKuuG,EAAIvuG,IACT/C,WAAYsxG,EAAItxG,gBAGpB8wG,EAAW1P,EAAK,GAChB2P,EAAU3P,EAAKA,EAAKvmG,OAAS,GAC7BgI,KAAKI,QAAQ,oBAAqB6sG,GAA+BlpG,EAAMpB,oBAAqBsrG,EAAS/tG,IAAK+tG,EAAS9tG,IAAK+tG,EAAQhuG,IAAMguG,EAAQjnF,SAAUinF,EAAQ/tG,IAAM+tG,EAAQjnF,SAAUmmF,IACxLptG,KAAKI,QAAQ,aAAc,CACzB3B,MAAO8/F,EAAK,GAAGp+F,IACfzB,IAAK6/F,EAAKA,EAAKvmG,OAAS,GAAGmI,IAAMo+F,EAAKA,EAAKvmG,OAAS,GAAGivB,WAGzDjnB,KAAK8tG,UAAUvsE,QAAQ,CACrBktE,IAAKlQ,EAAKjmD,MACV0jD,IAAKj4F,EAAMi4F,IACXD,IAAKh4F,EAAMg4F,MAGb/7F,KAAK8tG,UAAU91G,OAASwH,KAAK8C,IAAI,EAAGtC,KAAK8tG,UAAU91G,QAEnDgmG,EAAW,GACXh+F,KAAKI,QAAQ,sBAAuB2D,EAAMpB,qBAC1C3C,KAAKI,QAAQ,oBAAqB2D,EAAM+9F,mBACxClJ,EAAOgF,EAAahF,KAAK0C,EAAgB,CAACv3F,IAG1ChB,EAAQ,IAAItF,WAAWm7F,EAAKz7F,WAAas7F,EAAKt7F,YAE9Cm+F,IACAv4F,EAAMigB,IAAI41E,GACV71F,EAAMigB,IAAIy1E,EAAMG,EAAKz7F,YACrB6C,KAAKI,QAAQ,OAAQ,CACnB2D,MAAOA,EACPhB,MAAOA,IAET/C,KAAKmuG,eAELnuG,KAAKI,QAAQ,OAAQ,uBAGvBJ,KAAKQ,MAAQ,WACXR,KAAKmuG,eACLnQ,EAAW,GACXh+F,KAAK8tG,UAAU91G,OAAS,EACxB41G,EAAgB51G,OAAS,EACzBgI,KAAKI,QAAQ,UAGfJ,KAAKmuG,aAAe,WAClBhM,GAAgBF,aAAal+F,GAG7B6lE,OAAStwE,EACT0iG,OAAM1iG,GAKR0G,KAAKouG,iBAAmB,SAAUL,GAChC,IAKIW,EACAC,EACArQ,EACAsQ,EACA72G,EATA82G,EAAa,KAEjBC,EAAmB,IAEnBC,EAAkB1sG,IAOlB,IAAKtK,EAAI,EAAGA,EAAIiI,KAAK8tG,UAAU91G,OAAQD,IACrC62G,EAAgB5uG,KAAK8tG,UAAU/1G,GAC/BumG,EAAasQ,EAAcH,IAErB1qG,EAAMi4F,KAAOgR,GAAYjpG,EAAMi4F,IAAI,GAAI4S,EAAc5S,IAAI,KAAUj4F,EAAMg4F,KAAOiR,GAAYjpG,EAAMg4F,IAAI,GAAI6S,EAAc7S,IAAI,MAK9HuC,EAAWp+F,IAAM6D,EAAM+9F,kBAAkB5hG,MAK7CwuG,EAAcX,EAAQ7tG,IAAMo+F,EAAWp+F,IAAMo+F,EAAWr3E,SAGpDynF,IAAgBI,GAAoBJ,GAAeG,KAGhDF,GAAiBI,EAAkBL,KACtCC,EAAgBC,EAChBG,EAAkBL,KAKxB,OAAIC,EACKA,EAAcF,IAGhB,MAKTzuG,KAAKwuG,kBAAoB,SAAUjQ,GACjC,IAAIyQ,EAAYC,EAAUC,EAAOT,EAAKtxG,EAAYghG,EAAUl3E,EAAUonF,EACtElxG,EAAaohG,EAAKphG,WAClBghG,EAAWI,EAAKJ,SAChBl3E,EAAWs3E,EAAKt3E,SAChB+nF,EAAaC,EAAW,EAExB,MAAOD,EAAapB,EAAgB51G,QAAUi3G,EAAW1Q,EAAKvmG,OAAQ,CAIpE,GAHAk3G,EAAQtB,EAAgBoB,GACxBP,EAAMlQ,EAAK0Q,GAEPC,EAAM/uG,MAAQsuG,EAAItuG,IACpB,MAGEsuG,EAAItuG,IAAM+uG,EAAM/uG,IAGlB6uG,KAMFC,IACA9xG,GAAcsxG,EAAItxG,WAClBghG,GAAYsQ,EAAItQ,SAChBl3E,GAAYwnF,EAAIxnF,UAGlB,OAAiB,IAAbgoF,EAEK1Q,EAGL0Q,IAAa1Q,EAAKvmG,OAEb,MAGTq2G,EAAc9P,EAAKjnG,MAAM23G,GACzBZ,EAAYlxG,WAAaA,EACzBkxG,EAAYpnF,SAAWA,EACvBonF,EAAYlQ,SAAWA,EACvBkQ,EAAYluG,IAAMkuG,EAAY,GAAGluG,IACjCkuG,EAAYnuG,IAAMmuG,EAAY,GAAGnuG,IAC1BmuG,IAKTruG,KAAKuuG,gBAAkB,SAAUhQ,GAC/B,IAAIyQ,EAAYC,EAAUC,EAAOT,EAAKU,EAAeC,EAkCjDC,EAjCJL,EAAapB,EAAgB51G,OAAS,EACtCi3G,EAAW1Q,EAAKvmG,OAAS,EACzBm3G,EAAgB,KAChBC,GAAa,EAEb,MAAOJ,GAAc,GAAKC,GAAY,EAAG,CAIvC,GAHAC,EAAQtB,EAAgBoB,GACxBP,EAAMlQ,EAAK0Q,GAEPC,EAAM/uG,MAAQsuG,EAAItuG,IAAK,CACzBivG,GAAa,EACb,MAGEF,EAAM/uG,IAAMsuG,EAAItuG,IAClB6uG,KAIEA,IAAepB,EAAgB51G,OAAS,IAI1Cm3G,EAAgBF,GAGlBA,KAGF,IAAKG,GAAgC,OAAlBD,EACjB,OAAO,KAWT,GALEE,EADED,EACUH,EAEAE,EAGI,IAAdE,EACF,OAAO9Q,EAGT,IAAI8P,EAAc9P,EAAKjnG,MAAM+3G,GACzBlsD,EAAWkrD,EAAYltG,QAAO,SAAUmuG,EAAOb,GAIjD,OAHAa,EAAMnyG,YAAcsxG,EAAItxG,WACxBmyG,EAAMroF,UAAYwnF,EAAIxnF,SACtBqoF,EAAMnR,UAAYsQ,EAAItQ,SACfmR,IACN,CACDnyG,WAAY,EACZ8pB,SAAU,EACVk3E,SAAU,IAOZ,OALAkQ,EAAYlxG,WAAagmD,EAAShmD,WAClCkxG,EAAYpnF,SAAWk8B,EAASl8B,SAChConF,EAAYlQ,SAAWh7C,EAASg7C,SAChCkQ,EAAYluG,IAAMkuG,EAAY,GAAGluG,IACjCkuG,EAAYnuG,IAAMmuG,EAAY,GAAGnuG,IAC1BmuG,GAGTruG,KAAKuvG,cAAgB,SAAUC,GAC7B5B,EAAkB4B,IAItBhD,GAAoB1vG,UAAY,IAAI0Y,EAUpCm3F,GAAkB,SAAwBr0G,EAASgsG,GAIjDtkG,KAAKyvG,eAAiB,EACtBzvG,KAAKskG,eAAiBA,EACtBhsG,EAAUA,GAAW,GAEQ,qBAAlBA,EAAQo3G,MACjB1vG,KAAK2vG,cAAgBr3G,EAAQo3G,MAE7B1vG,KAAK2vG,aAAc,EAGyB,mBAAnCr3G,EAAQ8U,uBACjBpN,KAAKoN,uBAAyB9U,EAAQ8U,uBAEtCpN,KAAKoN,wBAAyB,EAGhCpN,KAAK4vG,cAAgB,GACrB5vG,KAAK6vG,WAAa,KAClB7vG,KAAK8vG,aAAe,GACpB9vG,KAAK+vG,gBAAkB,GACvB/vG,KAAKgwG,gBAAkB,GACvBhwG,KAAKiwG,aAAe,EACpBjwG,KAAKkwG,cAAgB,EAErBvD,GAAgB7vG,UAAUgD,KAAKC,KAAKC,MAGpCA,KAAKrI,KAAO,SAAUgH,GAGpB,OAAIA,EAAOyU,KACFpT,KAAK+vG,gBAAgBp4G,KAAKgH,GAI/BA,EAAOm3F,OACF91F,KAAKgwG,gBAAgBr4G,KAAKgH,IAMnCqB,KAAK4vG,cAAcj4G,KAAKgH,EAAOoF,OAC/B/D,KAAKiwG,cAAgBtxG,EAAOoE,MAAM5F,WAOR,UAAtBwB,EAAOoF,MAAMpE,OACfK,KAAK6vG,WAAalxG,EAAOoF,MACzB/D,KAAK8vG,aAAan4G,KAAKgH,EAAOoE,aAGN,UAAtBpE,EAAOoF,MAAMpE,OACfK,KAAKmwG,WAAaxxG,EAAOoF,MACzB/D,KAAK8vG,aAAavuE,QAAQ5iC,EAAOoE,YAKvC4pG,GAAgB7vG,UAAY,IAAI0Y,EAEhCm3F,GAAgB7vG,UAAUuD,MAAQ,SAAUuP,GAC1C,IAOI6lF,EACA2a,EACAp/E,EAEAj5B,EAXA4V,EAAS,EACT6C,EAAQ,CACVkyC,SAAU,GACVgyC,eAAgB,GAChBvxC,SAAU,GACV3hB,KAAM,IAKJr0B,EAAmB,EAGvB,GAAInN,KAAK4vG,cAAc53G,OAASgI,KAAKyvG,eAAgB,CACnD,GAAoB,uBAAhB7/F,GAAwD,uBAAhBA,EAI1C,OACK,GAAI5P,KAAK2vG,YAGd,OACK,GAAkC,IAA9B3vG,KAAK4vG,cAAc53G,OAc5B,OAPAgI,KAAKkwG,qBAEDlwG,KAAKkwG,eAAiBlwG,KAAKyvG,iBAC7BzvG,KAAKI,QAAQ,QACbJ,KAAKkwG,cAAgB,IAmB3B,GAZIlwG,KAAK6vG,YACP1iG,EAAmBnN,KAAK6vG,WAAW/N,kBAAkB3hG,IACrD4sG,GAAiB91G,SAAQ,SAAUgsC,GACjCzyB,EAAMgxB,KAAKyB,GAAQjjC,KAAK6vG,WAAW5sE,KAClCjjC,OACMA,KAAKmwG,aACdhjG,EAAmBnN,KAAKmwG,WAAWrO,kBAAkB3hG,IACrD2sG,GAAiB71G,SAAQ,SAAUgsC,GACjCzyB,EAAMgxB,KAAKyB,GAAQjjC,KAAKmwG,WAAWltE,KAClCjjC,OAGDA,KAAK6vG,YAAc7vG,KAAKmwG,WAAY,CAiBtC,IAhBkC,IAA9BnwG,KAAK4vG,cAAc53G,OACrBwY,EAAM7Q,KAAOK,KAAK4vG,cAAc,GAAGjwG,KAEnC6Q,EAAM7Q,KAAO,WAGfK,KAAKkwG,eAAiBlwG,KAAK4vG,cAAc53G,OACzCg5B,EAAc4sE,EAAa5sE,YAAYhxB,KAAK4vG,eAE5Cp/F,EAAMwgB,YAAc,IAAIvzB,WAAWuzB,EAAY7zB,YAG/CqT,EAAMwgB,YAAYhO,IAAIgO,GAEtBxgB,EAAM3V,KAAO,IAAI4C,WAAWuC,KAAKiwG,cAE5Bl4G,EAAI,EAAGA,EAAIiI,KAAK8vG,aAAa93G,OAAQD,IACxCyY,EAAM3V,KAAKmoB,IAAIhjB,KAAK8vG,aAAa/3G,GAAI4V,GACrCA,GAAU3N,KAAK8vG,aAAa/3G,GAAGoF,WAKjC,IAAKpF,EAAI,EAAGA,EAAIiI,KAAK+vG,gBAAgB/3G,OAAQD,IAC3C09F,EAAUz1F,KAAK+vG,gBAAgBh4G,GAC/B09F,EAAQ/0F,UAAY4/F,GAAMxzF,oBAAoB2oF,EAAQngF,SAAUnI,EAAkBnN,KAAKoN,wBACvFqoF,EAAQ75C,QAAU0kD,GAAMxzF,oBAAoB2oF,EAAQlgF,OAAQpI,EAAkBnN,KAAKoN,wBACnFoD,EAAMkkF,eAAee,EAAQjgF,SAAU,EACvChF,EAAMkyC,SAAS/qD,KAAK89F,GAKtB,IAAK19F,EAAI,EAAGA,EAAIiI,KAAKgwG,gBAAgBh4G,OAAQD,IAC3Cq4G,EAAMpwG,KAAKgwG,gBAAgBj4G,GAC3Bq4G,EAAIva,QAAUyK,GAAMxzF,oBAAoBsjG,EAAIjwG,IAAKgN,EAAkBnN,KAAKoN,wBACxEoD,EAAM2yC,SAASxrD,KAAKy4G,GAqBtB,IAhBA5/F,EAAM2yC,SAAS0xC,aAAe70F,KAAKskG,eAAezP,aAElD70F,KAAK4vG,cAAc53G,OAAS,EAC5BgI,KAAK6vG,WAAa,KAClB7vG,KAAK8vG,aAAa93G,OAAS,EAC3BgI,KAAK+vG,gBAAgB/3G,OAAS,EAC9BgI,KAAKiwG,aAAe,EACpBjwG,KAAKgwG,gBAAgBh4G,OAAS,EAI9BgI,KAAKI,QAAQ,OAAQoQ,GAKhBzY,EAAI,EAAGA,EAAIyY,EAAMkyC,SAAS1qD,OAAQD,IACrC09F,EAAUjlF,EAAMkyC,SAAS3qD,GACzBiI,KAAKI,QAAQ,UAAWq1F,GAO1B,IAAK19F,EAAI,EAAGA,EAAIyY,EAAM2yC,SAASnrD,OAAQD,IACrCq4G,EAAM5/F,EAAM2yC,SAASprD,GACrBiI,KAAKI,QAAQ,WAAYgwG,GAKzBpwG,KAAKkwG,eAAiBlwG,KAAKyvG,iBAC7BzvG,KAAKI,QAAQ,QACbJ,KAAKkwG,cAAgB,IAIzBvD,GAAgB7vG,UAAUuzG,SAAW,SAAU9rE,GAC7CvkC,KAAK2vG,YAAcprE,GAUrBmoE,GAAc,SAAoBp0G,GAChC,IAEIu3G,EACAM,EAHA1qF,EAAOzlB,KACPswG,GAAa,EAIjB5D,GAAY5vG,UAAUgD,KAAKC,KAAKC,MAEhC1H,EAAUA,GAAW,GACrB0H,KAAK2C,oBAAsBrK,EAAQqK,qBAAuB,EAC1D3C,KAAKuwG,kBAAoB,GAEzBvwG,KAAKwwG,iBAAmB,WACtB,IAAIC,EAAW,GACfzwG,KAAKuwG,kBAAoBE,EACzBA,EAAS9wG,KAAO,MAChB8wG,EAASnM,eAAiB,IAAIkC,GAAOF,eAErCmK,EAASC,UAAY,IAAIlgD,GACzBigD,EAASE,6BAA+B,IAAInK,GAAO9mG,wBAAwB,SAC3E+wG,EAASG,qCAAuC,IAAIpK,GAAO9mG,wBAAwB,kBACnF+wG,EAASI,WAAa,IAAIrL,GAC1BiL,EAASK,eAAiB,IAAInE,GAAgBr0G,EAASm4G,EAASnM,gBAChEmM,EAASM,eAAiBN,EAASC,UACnCD,EAASC,UAAUhhG,KAAK+gG,EAASE,8BAA8BjhG,KAAK+gG,EAASI,YAC7EJ,EAASC,UAAUhhG,KAAK+gG,EAASG,sCAAsClhG,KAAK+gG,EAASnM,gBAAgB50F,KAAK+gG,EAASK,gBACnHL,EAASnM,eAAel1F,GAAG,aAAa,SAAU4lF,GAChDyb,EAASC,UAAUrE,aAAarX,EAAMkP,cAExCuM,EAASC,UAAUthG,GAAG,QAAQ,SAAUvU,GACpB,mBAAdA,EAAK8E,MAA8B8wG,EAASO,qBAC9Cb,EAAaA,GAAc,CACzBrO,kBAAmB,CACjBn/F,oBAAqB8iB,EAAK9iB,qBAE5BuB,MAAO,OACPvE,KAAM,SAGR8wG,EAASK,eAAerB,iBACxBgB,EAASO,mBAAqB,IAAIvE,GAAoB0D,EAAY73G,GAClEm4G,EAASO,mBAAmB5hG,GAAG,aAAcqW,EAAKrlB,QAAQwL,KAAK6Z,EAAM,oBAErEgrF,EAASI,WAAWnhG,KAAK+gG,EAASO,oBAAoBthG,KAAK+gG,EAASK,iBAItErrF,EAAKrlB,QAAQ,YAAa,CACxB6wG,WAAYd,EACZe,WAAYrB,OAIhBY,EAASK,eAAe1hG,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,SAE3DywG,EAASK,eAAe1hG,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,UAG7DA,KAAKmxG,gBAAkB,WACrB,IAAIV,EAAW,GACfzwG,KAAKuwG,kBAAoBE,EACzBA,EAAS9wG,KAAO,KAChB8wG,EAASnM,eAAiB,IAAIkC,GAAOF,eAErCmK,EAASW,aAAe,IAAI5K,GAAOL,sBACnCsK,EAASvnF,YAAc,IAAIs9E,GAAOJ,qBAClCqK,EAASY,iBAAmB,IAAI7K,GAAOH,iBACvCoK,EAASzN,wBAA0B,IAAIwD,GAAO9mG,wBAC9C+wG,EAASI,WAAa,IAAIrL,GAC1BiL,EAASa,WAAa,IAAInG,GAC1BsF,EAAS5N,cAAgB,IAAI2D,GAAOr2F,cACpCsgG,EAASK,eAAiB,IAAInE,GAAgBr0G,EAASm4G,EAASnM,gBAChEmM,EAASM,eAAiBN,EAASW,aAEnCX,EAASW,aAAa1hG,KAAK+gG,EAASvnF,aAAaxZ,KAAK+gG,EAASY,kBAAkB3hG,KAAK+gG,EAASzN,yBAG/FyN,EAASzN,wBAAwBtzF,KAAK+gG,EAASa,YAC/Cb,EAASzN,wBAAwBtzF,KAAK+gG,EAASI,YAC/CJ,EAASzN,wBAAwBtzF,KAAK+gG,EAASnM,gBAAgB50F,KAAK+gG,EAASK,gBAE7EL,EAASa,WAAW5hG,KAAK+gG,EAAS5N,eAAenzF,KAAK+gG,EAASK,gBAC/DL,EAASY,iBAAiBjiG,GAAG,QAAQ,SAAUvU,GAC7C,IAAI9C,EAEJ,GAAkB,aAAd8C,EAAK8E,KAAqB,CAC5B5H,EAAI8C,EAAKiJ,OAAO9L,OAEhB,MAAOD,IACA83G,GAAsC,UAAxBh1G,EAAKiJ,OAAO/L,GAAG4H,KAGtBwwG,GAAsC,UAAxBt1G,EAAKiJ,OAAO/L,GAAG4H,OACvCwwG,EAAat1G,EAAKiJ,OAAO/L,GACzBo4G,EAAWrO,kBAAkBn/F,oBAAsB8iB,EAAK9iB,sBAJxDktG,EAAah1G,EAAKiJ,OAAO/L,GACzB83G,EAAW/N,kBAAkBn/F,oBAAsB8iB,EAAK9iB,qBAQxDktG,IAAeY,EAASc,qBAC1Bd,EAASK,eAAerB,iBACxBgB,EAASc,mBAAqB,IAAI/E,GAAoBqD,EAAYv3G,GAClEm4G,EAASc,mBAAmBniG,GAAG,qBAAqB,SAAU0yF,GAIxDqO,IACFA,EAAWrO,kBAAoBA,EAK/B2O,EAASO,mBAAmBxD,eAAe1L,EAAkB5hG,SAGjEuwG,EAASc,mBAAmBniG,GAAG,oBAAqBqW,EAAKrlB,QAAQwL,KAAK6Z,EAAM,YAC5EgrF,EAASc,mBAAmBniG,GAAG,oBAAqBqW,EAAKrlB,QAAQwL,KAAK6Z,EAAM,2BAC5EgrF,EAASc,mBAAmBniG,GAAG,uBAAuB,SAAUzM,GAC1DwtG,GACFM,EAASO,mBAAmBtD,4BAA4B/qG,MAG5D8tG,EAASc,mBAAmBniG,GAAG,aAAcqW,EAAKrlB,QAAQwL,KAAK6Z,EAAM,oBAErEgrF,EAASa,WAAW5hG,KAAK+gG,EAASc,oBAAoB7hG,KAAK+gG,EAASK,iBAGlEX,IAAeM,EAASO,qBAE1BP,EAASK,eAAerB,iBACxBgB,EAASO,mBAAqB,IAAIvE,GAAoB0D,EAAY73G,GAClEm4G,EAASO,mBAAmB5hG,GAAG,aAAcqW,EAAKrlB,QAAQwL,KAAK6Z,EAAM,oBAErEgrF,EAASI,WAAWnhG,KAAK+gG,EAASO,oBAAoBthG,KAAK+gG,EAASK,iBAItErrF,EAAKrlB,QAAQ,YAAa,CACxB6wG,WAAYd,EACZe,WAAYrB,QAKlBY,EAASK,eAAe1hG,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,SAC3DywG,EAASK,eAAe1hG,GAAG,YAAY,SAAUoiG,GAC/CA,EAAS3c,aAAe4b,EAASnM,eAAezP,aAChDpvE,EAAKrlB,QAAQ,WAAYoxG,MAE3Bf,EAASK,eAAe1hG,GAAG,UAAWpP,KAAKI,QAAQwL,KAAK5L,KAAM,YAE9DywG,EAASK,eAAe1hG,GAAG,OAAQpP,KAAKI,QAAQwL,KAAK5L,KAAM,UAI7DA,KAAKyxG,uBAAyB,SAAU9uG,GACtC,IAAI8tG,EAAWzwG,KAAKuwG,kBAEfj4G,EAAQ8U,yBACXpN,KAAK2C,oBAAsBA,GAGzBwtG,IACFA,EAAWrO,kBAAkB5hG,SAAM5G,EACnC62G,EAAWrO,kBAAkB3hG,SAAM7G,EACnC6oG,GAAgBF,aAAakO,GAExB73G,EAAQ8U,yBACX+iG,EAAWrO,kBAAkBn/F,oBAAsBA,GAGjD8tG,EAASE,8BACXF,EAASE,6BAA6BpwG,iBAItCsvG,IACEY,EAASc,qBACXd,EAASc,mBAAmBzD,UAAY,IAG1C+B,EAAW/N,kBAAkB5hG,SAAM5G,EACnCu2G,EAAW/N,kBAAkB3hG,SAAM7G,EACnC6oG,GAAgBF,aAAa4N,GAC7BY,EAAS5N,cAAcriG,QAElBlI,EAAQ8U,yBACXyiG,EAAW/N,kBAAkBn/F,oBAAsBA,IAInD8tG,EAASzN,yBACXyN,EAASzN,wBAAwBziG,iBAIrCP,KAAK2tG,oBAAsB,SAAUzgG,GAC/BijG,GACFnwG,KAAKuwG,kBAAkBS,mBAAmBrD,oBAAoBzgG,IAIlElN,KAAKqwG,SAAW,SAAU9rE,GACxB,IAAIksE,EAAWzwG,KAAKuwG,kBACpBj4G,EAAQo3G,MAAQnrE,EAEZksE,GAAYA,EAASK,gBACvBL,EAASK,eAAeT,SAAS9rE,IAIrCvkC,KAAKuvG,cAAgB,SAAU3B,GACzBiC,GAAc7vG,KAAKuwG,kBAAkBgB,oBACvCvxG,KAAKuwG,kBAAkBgB,mBAAmBhC,cAAc3B,IAK5D5tG,KAAKrI,KAAO,SAAUkD,GACpB,GAAIy1G,EAAY,CACd,IAAIoB,EAAQ9E,GAAkB/xG,GAE1B62G,GAAyC,QAAhC1xG,KAAKuwG,kBAAkB5wG,KAClCK,KAAKwwG,mBACKkB,GAAyC,OAAhC1xG,KAAKuwG,kBAAkB5wG,MAC1CK,KAAKmxG,kBAGPb,GAAa,EAGftwG,KAAKuwG,kBAAkBQ,eAAep5G,KAAKkD,IAI7CmF,KAAKK,MAAQ,WACXiwG,GAAa,EAEbtwG,KAAKuwG,kBAAkBQ,eAAe1wG,SAGxCL,KAAKM,YAAc,WACjBN,KAAKuwG,kBAAkBQ,eAAezwG,eAGxCN,KAAKQ,MAAQ,WACPR,KAAKuwG,kBAAkBQ,gBACzB/wG,KAAKuwG,kBAAkBQ,eAAevwG,SAK1CR,KAAK2xG,cAAgB,WACf3xG,KAAKuwG,kBAAkB1N,eACzB7iG,KAAKuwG,kBAAkB1N,cAAcriG,UAK3CksG,GAAY5vG,UAAY,IAAI0Y,EAC5B,IAAIo8F,GAAa,CACfC,WAAYnF,GACZoF,mBAAoBtF,GACpBuF,mBAAoBtF,GACpBK,iBAAkBA,GAClBC,iBAAkBA,GAElBE,+BAAgCA,IAG9B5wE,GAAiB,SAAwBxwB,EAAUF,GACrD,KAAME,aAAoBF,GACxB,MAAM,IAAI2wB,UAAU,sCAIpBC,GAAc,WAChB,SAASC,EAAiBlzB,EAAQmzB,GAChC,IAAK,IAAI1kC,EAAI,EAAGA,EAAI0kC,EAAMzkC,OAAQD,IAAK,CACrC,IAAI2kC,EAAaD,EAAM1kC,GACvB2kC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD9/B,OAAO6lB,eAAetZ,EAAQozB,EAAWrlC,IAAKqlC,IAIlD,OAAO,SAAU/wB,EAAamxB,EAAYC,GAGxC,OAFID,GAAYN,EAAiB7wB,EAAY7O,UAAWggC,GACpDC,GAAaP,EAAiB7wB,EAAaoxB,GACxCpxB,GAdO,GA8BdqmG,GAAuB,SAA8BvsF,EAAMwsF,GAC7DA,EAAc7iG,GAAG,QAAQ,SAAUwZ,GAKjC,IAAIspF,EAAYtpF,EAAQoI,YACxBpI,EAAQoI,YAAc,CACpBn2B,KAAMq3G,EAAUxuG,OAChBC,WAAYuuG,EAAUvuG,WACtBxG,WAAY+0G,EAAU/0G,YAExB,IAAIg1G,EAAavpF,EAAQ/tB,KACzB+tB,EAAQ/tB,KAAOs3G,EAAWzuG,OAC1B+hB,EAAK8xE,YAAY,CACf6a,OAAQ,OACRxpF,QAASA,EACTjlB,WAAYwuG,EAAWxuG,WACvBxG,WAAYg1G,EAAWh1G,YACtB,CAACyrB,EAAQ/tB,UAGVo3G,EAAcpP,eAChBoP,EAAcpP,cAAczzF,GAAG,QAAQ,SAAUqmF,GAC/ChwE,EAAK8xE,YAAY,CACf6a,OAAQ,UACRv3G,KAAM46F,OAKZwc,EAAc7iG,GAAG,QAAQ,SAAUvU,GACjC4qB,EAAK8xE,YAAY,CACf6a,OAAQ,YAGZH,EAAc7iG,GAAG,WAAW,SAAUijG,GACpC5sF,EAAK8xE,YAAY,CACf6a,OAAQ,UACRC,QAASA,OAGbJ,EAAc7iG,GAAG,0BAA0B,SAAUkjG,GACnD7sF,EAAK8xE,YAAY,CACf6a,OAAQ,yBACRE,uBAAwBA,QAa1BC,GAAkB,WACpB,SAASA,EAAgB9sF,EAAMntB,GAC7B+jC,GAAer8B,KAAMuyG,GACrBvyG,KAAK1H,QAAUA,GAAW,GAC1B0H,KAAKylB,KAAOA,EACZzlB,KAAKF,OAmFP,OA5EAy8B,GAAYg2E,EAAiB,CAAC,CAC5Bl7G,IAAK,OACLG,MAAO,WACDwI,KAAK4xG,YACP5xG,KAAK4xG,WAAWniG,UAGlBzP,KAAK4xG,WAAa,IAAIA,GAAWC,WAAW7xG,KAAK1H,SACjD05G,GAAqBhyG,KAAKylB,KAAMzlB,KAAK4xG,cAStC,CACDv6G,IAAK,OACLG,MAAO,SAAcqD,GAEnB,IAAI+tB,EAAU,IAAInrB,WAAW5C,EAAKA,KAAMA,EAAK8I,WAAY9I,EAAKsC,YAC9D6C,KAAK4xG,WAAWj6G,KAAKixB,KAOtB,CACDvxB,IAAK,QACLG,MAAO,WACLwI,KAAKF,SAUN,CACDzI,IAAK,qBACLG,MAAO,SAA4BqD,GACjC,IAAI66F,EAAkB76F,EAAK66F,iBAAmB,EAC9C11F,KAAK4xG,WAAWH,uBAAuBjyG,KAAKwnC,MAAwB,IAAlB0uD,MAEnD,CACDr+F,IAAK,sBACLG,MAAO,SAA6BqD,GAClCmF,KAAK4xG,WAAWjE,oBAAoBnuG,KAAKuvB,KAAwB,IAAnBl0B,EAAK23G,gBASpD,CACDn7G,IAAK,QACLG,MAAO,SAAeqD,GACpBmF,KAAK4xG,WAAWvxG,UAEjB,CACDhJ,IAAK,gBACLG,MAAO,WACLwI,KAAK4xG,WAAWD,kBAEjB,CACDt6G,IAAK,gBACLG,MAAO,SAAuBqD,GAC5BmF,KAAK4xG,WAAWrC,cAAc10G,EAAK+yG,gBAAgBt2G,aAGhDi7G,EAxFa,GAmGlBE,GAAmB,SAA0BhtF,GAC/CA,EAAK+xE,UAAY,SAAUhnF,GACC,SAAtBA,EAAM3V,KAAKu3G,QAAqB5hG,EAAM3V,KAAKvC,QAC7C0H,KAAK0yG,gBAAkB,IAAIH,GAAgB9sF,EAAMjV,EAAM3V,KAAKvC,UAIzD0H,KAAK0yG,kBACR1yG,KAAK0yG,gBAAkB,IAAIH,GAAgB9sF,IAGzCjV,EAAM3V,MAAQ2V,EAAM3V,KAAKu3G,QAAgC,SAAtB5hG,EAAM3V,KAAKu3G,QAC5CpyG,KAAK0yG,gBAAgBliG,EAAM3V,KAAKu3G,SAClCpyG,KAAK0yG,gBAAgBliG,EAAM3V,KAAKu3G,QAAQ5hG,EAAM3V,SAMlD83G,GAAmB,IAAIF,GAAiBhtF,IA3gLvB,MAqhLrBmtF,GAAgB,CAClBC,WAAY,OACZC,yBAA0B,UAE1BC,aAAc,KAWZC,GAAwB,SAA+BngF,GACzD,OAAOA,EAAO/wB,KAAI,SAAUoC,GAC1B,OAAOA,EAAMK,QAAQ,uBAAuB,SAAU0uG,EAAMC,EAASC,GACnE,IAAIC,GAAc,KAAO98E,OAAO48E,GAASpuG,SAAS,KAAKxN,OAAO,GAC1D+7G,GAAe,KAAO/8E,OAAO68E,GAAUruG,SAAS,KAAKxN,OAAO,GAChE,MAAO,QAAU87G,EAAa,KAAOC,SAUvCC,GAAc,WAChB,IAAIzgF,EAASjpB,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAC7E9S,EAAS,CACXy8G,WAAY,GAEVC,OAAS,EAcb,OAbA18G,EAAOy8G,WAAa1gF,EAAO77B,MAAM,KAAKgB,OACtClB,EAAOy8G,WAAaz8G,EAAOy8G,YAAc,EAEzCC,EAAS,8BAA8BptF,KAAKyM,GAExC2gF,IACF18G,EAAO+7G,WAAaW,EAAO,GAC3B18G,EAAOg8G,yBAA2BU,EAAO,IAI3C18G,EAAOi8G,aAAe,8CAA8C3sF,KAAKyM,GACzE/7B,EAAOi8G,aAAej8G,EAAOi8G,cAAgBj8G,EAAOi8G,aAAa,GAC1Dj8G,GAaL28G,GAAqB,SAA4BC,GACnD,OAAOA,EAAYnvG,QAAQ,uBAAuB,SAAUkiB,GAC1D,OAAOusF,GAAsB,CAACvsF,IAAQ,OAYtCktF,GAAqB,SAA4Bh0G,EAAMi0G,EAAW/gF,GAIpE,OAAOlzB,EAAO,IAAMi0G,EAAY,aAAe/gF,EAAOpB,QAAO,SAAUrW,GACrE,QAASA,KACRxc,KAAK,MAAQ,KASdi1G,GAAmB,SAA0B1oF,GAK/C,OAAIA,EAAMtB,UAAYsB,EAAMtB,SAAS7xB,QAAUmzB,EAAMtB,SAAS,GAAG/nB,IACxD,MAGF,QAULgyG,GAAY,SAAmB3oF,GAGjC,IAAI4oF,EAAkB5oF,EAAM7M,YAAc,GAE1C,OAAIy1F,EAAgBnhF,OACX0gF,GAAYS,EAAgBnhF,QAG9BggF,IAGLoB,GAA0B,SAAiCl/E,EAAQm/E,GACrE,IAAKn/E,EAAO5J,YAAYyI,QAAUsgF,EAChC,OAAO,KAGT,IAAIC,EAAap/E,EAAO5J,YAAYyI,MAAMsgF,GAE1C,IAAKC,EACH,OAAO,KAGT,IAAK,IAAIjqG,KAAQiqG,EAAY,CAC3B,IAAIC,EAAYD,EAAWjqG,GAE3B,GAAIkqG,EAAU,YAAcA,EAAUlpF,UAEpC,OAAOqoF,GAAYa,EAAUlpF,UAAU,GAAG3M,WAAWsU,QAAQmgF,aAIjE,OAAO,MAkBLqB,GAAuB,SAA8Bt/E,EAAQ3J,GAC/D,IAAIkpF,EAAgBR,GAAiB1oF,GACjCmpF,EAAYR,GAAU3oF,GACtB4oF,EAAkB5oF,EAAM7M,YAAc,GAEtCi2F,GAAU,EACVC,GAAS,EAEb,IAAKrpF,EAEH,MAAO,GAGT,GAAI2J,EAAO5J,YAAYyI,OAASogF,EAAgBpgF,MAAO,CACrD,IAAIugF,EAAap/E,EAAO5J,YAAYyI,MAAMogF,EAAgBpgF,OAE1D,GAAIugF,EAKF,IAAK,IAAIO,KAJTD,GAAS,EAETD,GAAU,EAEUL,EAIlB,IAAKA,EAAWO,GAASp8G,MAAQ67G,EAAWO,GAASxpF,UAAW,CAC9DspF,GAAU,EACV,OAQJC,IAAWF,EAAUvB,eAClBwB,IAIHD,EAAUvB,aAAeiB,GAAwBl/E,EAAQi/E,EAAgBpgF,QAGtE2gF,EAAUvB,eACb3rB,GAAUviE,IAAI5Z,KAAK,+HACnBqpG,EAAUvB,aAAeH,GAAcG,eAK3C,IAAI2B,EAAe,GAEfJ,EAAUzB,aACZ6B,EAAahtD,MAAQ,GAAK4sD,EAAUzB,WAAayB,EAAUxB,0BAGzDwB,EAAUvB,eACZ2B,EAAa1/E,MAAQ,WAAas/E,EAAUvB,cAK9C,IAAI4B,EAAYhB,GAAmB,QAASU,EAAe,CAACK,EAAa1/E,QACrE4/E,EAAYjB,GAAmB,QAASU,EAAe,CAACK,EAAahtD,QACrEmtD,EAAiBlB,GAAmB,QAASU,EAAe,CAACK,EAAahtD,MAAOgtD,EAAa1/E,QAElG,OAAIw/E,GACGD,GAAWG,EAAahtD,MACpB,CAACktD,EAAWD,GAGhBJ,GAAYG,EAAahtD,MASvB,CAACmtD,EAAgBF,GANf,CAACA,EAAWA,GAWlBD,EAAahtD,MAMX,CAACmtD,GALC,CAACF,IAiBRG,GAAmB,SAA0Bn1G,GAC/C,IAAIyf,EAAS,CACXzf,KAAM,GACNo1G,WAAY,IAEVA,EAAap1G,EAAK5I,OAAOC,MAAM,KAYnC,OAVAooB,EAAOzf,KAAOo1G,EAAWn1E,QAAQ7oC,OACjCg+G,EAAW99G,SAAQ,SAAU+9G,GAC3B,IAAIC,EAAOD,EAAUj+G,OAAOC,MAAM,KAElC,GAAIi+G,EAAKj9G,OAAS,EAAG,CACnB,IAAIiS,EAAOgrG,EAAK,GAAG1wG,QAAQ,KAAM,IAAIxN,OACjCS,EAAQy9G,EAAK,GAAG1wG,QAAQ,KAAM,IAAIxN,OACtCqoB,EAAO21F,WAAW9qG,GAAQzS,MAGvB4nB,GAWL81F,GAAe,SAAsBhxG,GACvC,MAAO,iBAAiBI,KAAKJ,IAW3BixG,GAAe,SAAsBjxG,GACvC,MAAO,kBAAkBI,KAAKJ,IAiB5BkxG,GAAsB,SAA6B1xG,EAAQ2iD,EAAagvD,GAC1E,GAA2B,qBAAhBhvD,GAA+C,OAAhBA,IAAyB3iD,EAAO1L,OACxE,MAAO,GAIT,IAAIs9G,EAAiB91G,KAAKuvB,KAAmC,KAA7Bs3B,EAAcgvD,EAAU,IACpDt9G,OAAI,EAER,IAAKA,EAAI,EAAGA,EAAI2L,EAAO1L,OAAQD,IAC7B,GAAI2L,EAAO3L,GAAGoI,IAAMm1G,EAClB,MAIJ,OAAO5xG,EAAOpM,MAAMS,IAkBlBw9G,GAAkB,SAAyB7xG,EAAQ66F,EAAMh6F,GAC3D,IAAKg6F,EAAKvmG,OACR,OAAO0L,EAGT,GAAIa,EAKF,OAAOg6F,EAAKjnG,QAGd,IAAImH,EAAQ8/F,EAAK,GAAGp+F,IAChBpI,EAAI,EAER,IAAKA,EAAGA,EAAI2L,EAAO1L,OAAQD,IACzB,GAAI2L,EAAO3L,GAAGoI,KAAO1B,EACnB,MAIJ,OAAOiF,EAAOpM,MAAM,EAAGS,GAAG6J,OAAO28F,IAgB/BiX,GAAkB,SAAyB9xG,EAAQjF,EAAOC,EAAK22G,GACjE,IAAI//F,EAAW9V,KAAKuvB,KAAyB,KAAnBtwB,EAAQ42G,IAC9B9/F,EAAS/V,KAAKuvB,KAAuB,KAAjBrwB,EAAM22G,IAC1BI,EAAgB/xG,EAAOpM,QACvBS,EAAI2L,EAAO1L,OAEf,MAAOD,IACL,GAAI2L,EAAO3L,GAAGoI,KAAOoV,EACnB,MAIJ,IAAW,IAAPxd,EAEF,OAAO09G,EAGT,IAAIz3E,EAAIjmC,EAAI,EAEZ,MAAOimC,IACL,GAAIt6B,EAAOs6B,GAAG79B,KAAOmV,EACnB,MAOJ,OAFA0oB,EAAIx+B,KAAKywB,IAAI+N,EAAG,GAChBy3E,EAAclmG,OAAOyuB,EAAGjmC,EAAIimC,EAAI,GACzBy3E,GAGLn7D,GAAW,SAAkBo7D,EAAaC,EAAaC,GACzD,IAAIn3G,EAAQ,KACRC,EAAM,KACNm3G,EAAQ,EACRC,EAAU,GACVvnF,EAAS,GAEb,IAAKmnF,IAAgBC,EACnB,OAAOvuB,GAAUqB,kBAInB,IAAKitB,EACH,OAAOC,EAAYr7D,SAGrB,IAAKq7D,EACH,OAAOD,EAAYp7D,SAIrB,GAAIs7D,EACF,OAAOF,EAAYp7D,SAIrB,GAAoC,IAAhCo7D,EAAYp7D,SAAStiD,QAAgD,IAAhC29G,EAAYr7D,SAAStiD,OAC5D,OAAOovF,GAAUqB,kBAKnB,IAAIstB,EAAgBL,EAAYp7D,SAC5B07D,EAAgBL,EAAYr7D,SAC5Bl4B,EAAQ2zF,EAAc/9G,OAE1B,MAAOoqB,IACL0zF,EAAQn+G,KAAK,CACX44B,KAAMwlF,EAAct3G,MAAM2jB,GAC1BziB,KAAM,UAERm2G,EAAQn+G,KAAK,CACX44B,KAAMwlF,EAAcr3G,IAAI0jB,GACxBziB,KAAM,QAIVyiB,EAAQ4zF,EAAch+G,OAEtB,MAAOoqB,IACL0zF,EAAQn+G,KAAK,CACX44B,KAAMylF,EAAcv3G,MAAM2jB,GAC1BziB,KAAM,UAERm2G,EAAQn+G,KAAK,CACX44B,KAAMylF,EAAct3G,IAAI0jB,GACxBziB,KAAM,QAUV,IALAm2G,EAAQlkG,MAAK,SAAUlG,EAAGmG,GACxB,OAAOnG,EAAE6kB,KAAO1e,EAAE0e,QAIfnO,EAAQ,EAAGA,EAAQ0zF,EAAQ99G,OAAQoqB,IACV,UAAxB0zF,EAAQ1zF,GAAOziB,MACjBk2G,IAGc,IAAVA,IACFp3G,EAAQq3G,EAAQ1zF,GAAOmO,OAEQ,QAAxBulF,EAAQ1zF,GAAOziB,OACxBk2G,IAGc,IAAVA,IACFn3G,EAAMo3G,EAAQ1zF,GAAOmO,OAKX,OAAV9xB,GAA0B,OAARC,IACpB6vB,EAAO52B,KAAK,CAAC8G,EAAOC,IACpBD,EAAQ,KACRC,EAAM,MAIV,OAAO0oF,GAAUhtC,iBAAiB7rB,IAOhCxhB,GAAmB,IAKnBkpG,GAA0B,SAAiCzhB,EAAaxtF,GAC1E,IAAIutF,EAAeC,EAAY0hB,gBAAgBlvG,GAC3CioC,EAAUlyC,OAAOC,OAAO,MAC5BiyC,EAAQknE,UAAW,EACnBlnE,EAAQmnE,YAAc7hB,EAEtB,IAAI9wC,EAAQ,SAAepsD,GACQ,oBAAtBk9F,EAAal9F,GACtB43C,EAAQ53C,GAAO,WACb,OAAOk9F,EAAal9F,GAAKwK,MAAM0yF,EAAc3qF,YAEd,qBAAjBqlC,EAAQ53C,IACxB0F,OAAO6lB,eAAeqsB,EAAS53C,EAAK,CAClCyrB,IAAK,WACH,OAAOyxE,EAAal9F,IAEtB2rB,IAAK,SAAgB/D,GACnB,OAAOs1E,EAAal9F,GAAO4nB,MAMnC,IAAK,IAAI5nB,KAAOk9F,EACd9wC,EAAMpsD,GAGR,OAAO43C,GAiBLonE,GAAsB,SAAUC,GAGlC,SAASD,EAAoB7hB,EAAa3hE,GACxC,GAAe7yB,KAAMq2G,GAErB,IAAIvwF,EAAQ,GAA0B9lB,MAAOq2G,EAAoBn5G,WAAaH,OAAOiT,eAAeqmG,IAAsBt2G,KAAKC,KAAMonF,GAAU35C,cAE/I3nB,EAAMywF,iBAAmB,EACzBzwF,EAAM0wF,gBAAkB,GACxB1wF,EAAM2wF,iBAAkB,EACxB3wF,EAAM8vE,aAAepB,EACrB1uE,EAAM4wF,QAAU7jF,EAChB/M,EAAM6wF,YAAc,KACpB7wF,EAAM8wF,YAAc,KACpB9wF,EAAM+wF,gBAAiB,EACvB/wF,EAAMgxF,yBAA0B,EAChChxF,EAAMixF,WAAa,GACnBjxF,EAAMkxF,aAAe,EACrBlxF,EAAMmxF,YAAc7vB,GAAUxtC,QAAQV,YAAc,GACpD,IAAI5gD,EAAU,CACZo3G,OAAO,EACPpB,eAAgBxoF,EAAMmxF,aAwFxB,OArFAnxF,EAAM4wF,QAAQz/G,SAAQ,SAAUiN,GAC1BgxG,GAAahxG,GACf4hB,EAAM6wF,YAAczyG,EACXixG,GAAajxG,KACtB4hB,EAAM8wF,YAAc1yG,MAMxB4hB,EAAMoxF,YAAc,IAAI9e,GAExBtyE,EAAMoxF,YAAY3f,YAAY,CAC5B6a,OAAQ,OACR95G,QAASA,IAGXwtB,EAAMoxF,YAAY1f,UAAY,SAAUhnF,GACtC,MAA0B,SAAtBA,EAAM3V,KAAKu3G,OACNtsF,EAAMqxF,MAAM3mG,GAGK,SAAtBA,EAAM3V,KAAKu3G,OACNtsF,EAAMsxF,MAAM5mG,GAGK,YAAtBA,EAAM3V,KAAKu3G,OACNtsF,EAAMuxF,eAAe7mG,GAGJ,2BAAtBA,EAAM3V,KAAKu3G,OACNtsF,EAAMwxF,wBAAwB9mG,EAAM3V,KAAKy3G,6BADlD,GAOFv1G,OAAO6lB,eAAekD,EAAO,kBAAmB,CAC9ChD,IAAK,WACH,OAAO9iB,KAAKu2G,kBAEdvzF,IAAK,SAAgBuhB,GACA,kBAARA,GAAoBA,GAAO,IACpCvkC,KAAKu2G,iBAAmBhyE,EACxBvkC,KAAK82G,yBAA0B,EAE/B92G,KAAK+2G,WAAW/+G,OAAS,EACzBgI,KAAKg3G,aAAe,EAGpBh3G,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,qBACR1c,gBAAiBnxD,QAMzBxnC,OAAO6lB,eAAekD,EAAO,oBAAqB,CAChDhD,IAAK,WACH,OAAQ9iB,KAAKu3G,cAAgBv3G,KAAKw3G,cAAcC,mBAElDz0F,IAAK,SAAgBvkB,GACfuB,KAAKu3G,eACPv3G,KAAKu3G,aAAaE,kBAAoBh5G,GAGpCuB,KAAKw3G,eACPx3G,KAAKw3G,aAAaC,kBAAoBh5G,MAK5C1B,OAAO6lB,eAAekD,EAAO,WAAY,CACvChD,IAAK,WACH,SAAU9iB,KAAKy2G,kBAAoBz2G,KAAK62G,gBAAkB72G,KAAKw3G,cAAgBx3G,KAAKw3G,aAAarB,UAAYn2G,KAAKu3G,cAAgBv3G,KAAKu3G,aAAapB,aAKxJp5G,OAAO6lB,eAAekD,EAAO,WAAY,CACvChD,IAAK,WACH,OAAOw3B,GAASt6C,KAAKu3G,aAAcv3G,KAAKw3G,aAAcx3G,KAAK62G,mBAGxD/wF,EAqcT,OAljBA,GAASuwF,EAAqBC,GAyH9B,GAAYD,EAAqB,CAAC,CAChCh/G,IAAK,QACLG,MAAO,SAAegZ,GACpB,IAAIoY,EAAUpY,EAAM3V,KAAK+tB,QAEzBA,EAAQ/tB,KAAO,IAAI4C,WAAWmrB,EAAQ/tB,KAAM2V,EAAM3V,KAAK8I,WAAY6M,EAAM3V,KAAKsC,YAC9EyrB,EAAQoI,YAAc,IAAIvzB,WAAWmrB,EAAQoI,YAAYn2B,KAAM+tB,EAAQoI,YAAYrtB,WAAYilB,EAAQoI,YAAY7zB,YACnHm3F,GAA4Bt0F,KAAMA,KAAK41F,aAAchtE,GAErD5oB,KAAKw2G,gBAAgB7+G,KAAKixB,KAa3B,CACDvxB,IAAK,QACLG,MAAO,SAAegZ,GAEiB,WAAjCxQ,KAAK41F,aAAa18F,WAOtB8G,KAAK03G,0BANH13G,KAAKw2G,gBAAgBx+G,OAAS,IASjC,CACDX,IAAK,0BACLG,MAAO,SAAiCmgH,GACtC,IAAIC,EAAsB,CACxBn5G,MAAO,CACLo5G,OAAQF,EAAWl5G,MAAMyB,IAAM6M,GAC/B+qG,aAAcH,EAAWl5G,MAAM0B,IAAM4M,IAEvCrO,IAAK,CACHm5G,OAAQF,EAAWj5G,IAAIwB,IAAM6M,GAC7B+qG,aAAcH,EAAWj5G,IAAIyB,IAAM4M,IAErCpK,oBAAqBg1G,EAAWh1G,oBAAsBoK,IAGpD4qG,EAAWvK,2BACbwK,EAAoBxK,yBAA2BuK,EAAWvK,yBAA2BrgG,IAGvF/M,KAAKI,QAAQ,CACXT,KAAM,yBACN2yG,uBAAwBsF,MAY3B,CACDvgH,IAAK,2BACLG,MAAO,WACL,IAAIkvB,EAAS1mB,KAET0qC,EAAQ,CAAC,QAAS,SACtBA,EAAMzzC,SAAQ,SAAU0I,GAGtB,GAAK+mB,EAAO/mB,EAAO,YAKf+mB,EAAO/mB,EAAO,WAAlB,CAIA,IAAI+D,EAAS,KAGb,GAAIgjB,EAAOkvE,aAAaj2F,EAAO,WAC7B+D,EAASgjB,EAAOkvE,aAAaj2F,EAAO,WAWpC+D,EAAOyyG,UAAW,MACb,CACL,IAAI4B,EAAgBp4G,EAAO,SACvBqH,EAAWrH,EAAO,gBAAkB+mB,EAAOqxF,GAAiB,IAChEr0G,EAASuyG,GAAwBvvF,EAAOkvE,aAAaoiB,mBAAoBhxG,GACzE0f,EAAOkvE,aAAaj2F,EAAO,WAAa+D,EAG1CgjB,EAAO/mB,EAAO,WAAa+D,EAE3B,CAAC,SAAU,cAAe,aAAazM,SAAQ,SAAUuZ,GACvD9M,EAAO2lC,iBAAiB74B,GAAO,WAE7B,GAAa,UAAT7Q,IAAoB+mB,EAAOmwF,eAA/B,CAIc,cAAVrmG,IACFkW,EAAO/mB,EAAO,WAAWw2G,UAAW,GAGtC,IAAI8B,EAAgBvtE,EAAMwD,OAAM,SAAU52B,GAGxC,QAAU,UAANA,IAAiBoP,EAAOmwF,kBAKxBl3G,IAAS2X,IAAKoP,EAAOpP,EAAI,aAAcoP,EAAOpP,EAAI,WAAW6+F,aAOnE,OAAI8B,EACKvxF,EAAOtmB,QAAQoQ,QADxB,eAiBP,CACDnZ,IAAK,eACLG,MAAO,SAAsBoxB,GAI3B,GAFA5oB,KAAKy2G,iBAAkB,EAEnBz2G,KAAKw3G,cAAgBx3G,KAAKw3G,aAAal9D,SAAStiD,OAAQ,CAC1D,IAAIg+G,EAAgBh2G,KAAKw3G,aAAal9D,SACtCt6C,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,sBACRI,YAAawD,EAAct3G,IAAIs3G,EAAch+G,OAAS,KAItDgI,KAAKu3G,cACPv3G,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,gBACRxE,gBAAiBwH,GAAoBp1G,KAAK+2G,WAAY/2G,KAAK41F,aAAahlD,QAAU5wC,KAAK41F,aAAahlD,QAAQyV,cAAgB,KAAMrmD,KAAKg3G,gBAI3Ih3G,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,OAIRv3G,KAAM+tB,EAAQllB,OAGdC,WAAYilB,EAAQjlB,WACpBxG,WAAYyrB,EAAQzrB,YACnB,CAACyrB,EAAQllB,SACZ1D,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,YAaX,CACD/6G,IAAK,iBACLG,MAAO,SAAwBgZ,GAC7BxQ,KAAK+2G,WAAaxB,GAAgBv1G,KAAK+2G,WAAYvmG,EAAM3V,KAAKw3G,QAASryG,KAAKi3G,eAW7E,CACD5/G,IAAK,SACLG,MAAO,SAAgBiH,EAAOC,GAe5B,GAdIsB,KAAKu3G,eACPv3G,KAAKu3G,aAAapB,UAAW,EAC7Bn2G,KAAKu3G,aAAa57F,OAAOld,EAAOC,GAChCsB,KAAK+2G,WAAavB,GAAgBx1G,KAAK+2G,WAAYt4G,EAAOC,EAAKsB,KAAKg3G,gBAGjEh3G,KAAK62G,gBAAkB72G,KAAKw3G,eAC/Bx3G,KAAKw3G,aAAarB,UAAW,EAC7Bn2G,KAAKw3G,aAAa77F,OAAOld,EAAOC,IAIlCo2F,GAAoBr2F,EAAOC,EAAKsB,KAAK20F,gBAEjC30F,KAAKy0F,kBACP,IAAK,IAAI1wF,KAAS/D,KAAKy0F,kBACrBK,GAAoBr2F,EAAOC,EAAKsB,KAAKy0F,kBAAkB1wF,MAY5D,CACD1M,IAAK,0BACLG,MAAO,WACL,IAAI0gH,EAAiB,CACnBxwD,MAAO,CACL79B,SAAU,GACVqX,MAAO,GAETlM,MAAO,CACLnL,SAAU,GACVqX,MAAO,GAETwhB,SAAU,GACVS,SAAU,IAGZ,IAAKnjD,KAAKw2G,gBAAgBx+G,OAIxB,OAFAgI,KAAKI,QAAQ,kBACbJ,KAAKy2G,iBAAkB,GAMzByB,EAAiBl4G,KAAKw2G,gBAAgBr1G,QAAO,SAAUg3G,EAAYvvF,GACjE,IAAIjpB,EAAOipB,EAAQjpB,KACf9E,EAAO+tB,EAAQ/tB,KACfm2B,EAAcpI,EAAQoI,YAkB1B,OAjBAmnF,EAAWx4G,GAAMkqB,SAASlyB,KAAKkD,GAC/Bs9G,EAAWx4G,GAAMuhC,OAASrmC,EAAKsC,WAC/Bg7G,EAAWx4G,GAAMqxB,YAAcA,EAE3BpI,EAAQ85B,WACVy1D,EAAWz1D,SAAWy1D,EAAWz1D,SAAS9gD,OAAOgnB,EAAQ85B,WAGvD95B,EAAQ4Y,OACV22E,EAAWx4G,GAAM6hC,KAAO5Y,EAAQ4Y,MAI9B5Y,EAAQu6B,WACVg1D,EAAWh1D,SAAWg1D,EAAWh1D,SAASvhD,OAAOgnB,EAAQu6B,WAGpDg1D,IACND,GAGEl4G,KAAKu3G,cAAiBv3G,KAAKw3G,eAGK,IAA/BU,EAAexwD,MAAMxmB,QACvBlhC,KAAK42G,YAAc,MAGc,IAA/BsB,EAAeljF,MAAMkM,QACvBlhC,KAAK22G,YAAc,MAGrB32G,KAAKo4G,4BAGHF,EAAeljF,MAAMwM,MACvBxhC,KAAK41F,aAAax1F,QAAQ,CACxBT,KAAM,YACN6hC,KAAM02E,EAAeljF,MAAMwM,OAI3B02E,EAAexwD,MAAMlmB,MACvBxhC,KAAK41F,aAAax1F,QAAQ,CACxBT,KAAM,YACN6hC,KAAM02E,EAAexwD,MAAMlmB,OAI3BxhC,KAAK82G,2BACF92G,KAAK62G,gBAAkB72G,KAAKw3G,eAC/BU,EAAeljF,MAAMnL,SAAS0X,QAAQ22E,EAAeljF,MAAMhE,aAC3DknF,EAAeljF,MAAMkM,OAASg3E,EAAeljF,MAAMhE,YAAY7zB,YAGjE6C,KAAK82G,yBAA0B,GAGjC,IAAIuB,GAAmB,EAEnBr4G,KAAKu3G,cAAgBW,EAAexwD,MAAMxmB,OAC5Cg3E,EAAexwD,MAAM79B,SAAS0X,QAAQ22E,EAAexwD,MAAM12B,aAC3DknF,EAAexwD,MAAMxmB,OAASg3E,EAAexwD,MAAM12B,YAAY7zB,WAC/D6C,KAAKs4G,yBAAyBJ,EAAexwD,MAAO1nD,KAAKu3G,gBAChDv3G,KAAKu3G,eAAiBv3G,KAAK62G,gBAAmB72G,KAAKw3G,eAO5Da,GAAmB,GAIrB,GAAiBr4G,KAAMk4G,EAAex1D,SAAUw1D,EAAe/0D,WAE1DnjD,KAAK62G,gBAAkB72G,KAAKw3G,cAC/Bx3G,KAAKs4G,yBAAyBJ,EAAeljF,MAAOh1B,KAAKw3G,cAG3Dx3G,KAAKw2G,gBAAgBx+G,OAAS,EAE1BqgH,GACFr4G,KAAKI,QAAQ,aAIfJ,KAAKy2G,iBAAkB,IAWxB,CACDp/G,IAAK,2BACLG,MAAO,SAAkC2gH,EAAYI,GACnD,IAAI5qG,EAAS,EACT6qG,OAAa,EAEjB,GAAIL,EAAWj3E,MAAO,CACpBs3E,EAAa,IAAI/6G,WAAW06G,EAAWj3E,OAEvCi3E,EAAWtuF,SAAS5yB,SAAQ,SAAU2xB,GACpC4vF,EAAWx1F,IAAI4F,EAASjb,GACxBA,GAAUib,EAAQzrB,cAGpB,IACEo7G,EAAkBpC,UAAW,EAC7BoC,EAAkBE,aAAaD,GAC/B,MAAO9wG,GACH1H,KAAK41F,aAAahlD,SACpB5wC,KAAK41F,aAAahlD,QAAQlpC,MAAM,CAC9B7L,MAAO,EACP8D,KAAM,oBACN4Z,QAAS7R,EAAM6R,QACfm/F,cAAehxG,QAaxB,CACDrQ,IAAK,QACLG,MAAO,WACDwI,KAAKu3G,cACPv3G,KAAKu3G,aAAa37G,SAGfoE,KAAK62G,gBAAkB72G,KAAKw3G,cAC/Bx3G,KAAKw3G,aAAa57G,QAGhBoE,KAAKk3G,aACPl3G,KAAKk3G,YAAY3f,YAAY,CAC3B6a,OAAQ,UAIZpyG,KAAKw2G,gBAAgBx+G,OAAS,EAC9BgI,KAAKy2G,iBAAkB,IAExB,CACDp/G,IAAK,UACLG,MAAO,WACDwI,KAAKk3G,aACPl3G,KAAKk3G,YAAYrf,YAGnB73F,KAAKI,QAAQ,WACbJ,KAAKsP,UAGF+mG,EAnjBiB,CAojBxBjvB,GAAU35C,aAeR,GAAkB,SAAU6oE,GAG9B,SAASqC,IACP,GAAe34G,KAAM24G,GAErB,IAAI7yF,EAAQ,GAA0B9lB,MAAO24G,EAAgBz7G,WAAaH,OAAOiT,eAAe2oG,IAAkB54G,KAAKC,OAEnHkpF,OAAW,EAGf,IAAKA,KAFLpjE,EAAMkyF,mBAAqB,IAAI,IAASY,YAEvB9yF,EAAMkyF,mBACf9uB,KAAYyvB,EAAgB77G,WAA4D,oBAAvCgpB,EAAMkyF,mBAAmB9uB,KAC9EpjE,EAAMojE,GAAYpjE,EAAMkyF,mBAAmB9uB,GAAUt9E,KAAKka,EAAMkyF,qBA0OpE,OAnOAlyF,EAAMyjC,UAAY/kC,IAClBznB,OAAO6lB,eAAekD,EAAO,WAAY,CACvChD,IAAK,WACH,OAAI9iB,KAAKupD,YAAclnD,IACdrC,KAAKupD,UAGPvpD,KAAKg4G,mBAAmB/wF,UAEjCjE,IAAK,SAAgBiE,GACnBjnB,KAAKupD,UAAYtiC,EAEbA,IAAa5kB,MACfrC,KAAKg4G,mBAAmB/wF,SAAWA,MAKzClqB,OAAO6lB,eAAekD,EAAO,WAAY,CACvChD,IAAK,WACH,OAAI9iB,KAAKupD,YAAclnD,IACd+kF,GAAUhtC,iBAAiB,CAAC,CAAC,EAAGp6C,KAAKg4G,mBAAmB/wF,YAG1DjnB,KAAKg4G,mBAAmBlpD,YAGnC/xD,OAAO6lB,eAAekD,EAAO,aAAc,CACzChD,IAAK,WACH,OAAO9iB,KAAKg4G,mBAAmB9+G,cAGnC6D,OAAO6lB,eAAekD,EAAO,sBAAuB,CAClDhD,IAAK,WACH,OAAO9iB,KAAK64G,wBAKhB/yF,EAAMgzF,cAAgB,GACtBhzF,EAAM+yF,qBAAuB,GAQ7B/yF,EAAMizF,2BAA6B,WAKjC,GAHAjzF,EAAM+yF,qBAAqB7gH,OAAS,EAGD,IAA/B8tB,EAAMgzF,cAAc9gH,OAAc,CACpC,IAAIu8F,EAAezuE,EAAMgzF,cAAc,GAMvC,OALAvkB,EAAauiB,yBAA0B,EACvCviB,EAAasiB,gBAAkBtiB,EAAaoiB,iBAE5C7wF,EAAM+yF,qBAAqBlhH,KAAK48F,GAalC,IAJA,IAAIykB,GAAkB,EAClBC,GAAmB,EAGdlhH,EAAI,EAAGA,EAAI+tB,EAAM8qB,QAAQs2B,cAAclvE,OAAQD,IAAK,CAC3D,IAAIgM,EAAQ+hB,EAAM8qB,QAAQs2B,cAAcnvE,GAExC,GAAIgM,EAAM08C,SAA0B,SAAf18C,EAAMw9C,KAAiB,CAG1Cy3D,GAAkB,EAClBC,GAAmB,EACnB,OAIJnzF,EAAMgzF,cAAc7hH,SAAQ,SAAUs9F,EAAcp9F,GAQlD,GAFAo9F,EAAauiB,yBAA0B,EAEnCviB,EAAaqiB,aAAeriB,EAAaoiB,YAE3CpiB,EAAasiB,eAAiBmC,OACzB,GAAIzkB,EAAaqiB,cAAgBriB,EAAaoiB,YAInDpiB,EAAasiB,gBAAiB,EAC9BoC,GAAmB,OACd,IAAK1kB,EAAaqiB,aAAeriB,EAAaoiB,cAOnDpiB,EAAasiB,eAAiB1/G,EAAQ8hH,GAAoBA,EAEtD1kB,EAAasiB,gBACf,OAIJ/wF,EAAM+yF,qBAAqBlhH,KAAK48F,OAIpCzuE,EAAMozF,qBAAuB,WAC3BpzF,EAAMgzF,cAAc7hH,SAAQ,SAAUs9F,GACpCA,EAAauiB,yBAA0B,MAI3ChxF,EAAMqzF,YAAc,WAClBrzF,EAAMgzF,cAAc7hH,SAAQ,SAAUs9F,GAChCA,EAAa2iB,aACf3iB,EAAa2iB,YAAY3f,YAAY,CACnC6a,OAAQ,sBAMhBtsF,EAAMszF,yBAA2B,SAAU5oG,GACzCsV,EAAMgzF,cAAc7hH,SAAQ,SAAUyM,GACpC,OAAOA,EAAOszG,aAAexmG,EAAM6kG,YAKvC,CAAC,aAAc,cAAe,eAAep+G,SAAQ,SAAU25E,GAC7D5wE,KAAKg4G,mBAAmB3uE,iBAAiBunC,EAAW5wE,KAAKI,QAAQwL,KAAK5L,SACrE8lB,GAGHA,EAAM1W,GAAG,cAAc,SAAUoB,GAE/B,IAAIk3C,EAAQ,IAASxjB,cAAc,SAAWpe,EAAMuzF,KAAO,MAEtD3xD,IAIL5hC,EAAM8qB,QAAUw2C,GAAU1/B,EAAMz+C,YAE3B6c,EAAM8qB,UAMX9qB,EAAM8qB,QAAQ0U,MAAMl2C,GAAG,YAAa0W,EAAMqzF,aAK1CrzF,EAAM8qB,QAAQ0U,MAAMl2C,GAAG,2BAA4B0W,EAAMszF,0BAErDtzF,EAAM8qB,QAAQs2B,aAAephD,EAAM8qB,QAAQs2B,gBAC7CphD,EAAM8qB,QAAQs2B,cAAc93D,GAAG,SAAU0W,EAAMizF,4BAE/CjzF,EAAM8qB,QAAQs2B,cAAc93D,GAAG,WAAY0W,EAAMizF,4BAEjDjzF,EAAM8qB,QAAQs2B,cAAc93D,GAAG,cAAe0W,EAAMizF,6BAGtDjzF,EAAM8qB,QAAQxhC,GAAG,cAAe0W,EAAMozF,2BAGxCpzF,EAAM1W,GAAG,eAAe,SAAUoB,GAGhC,IAFA,IAAIyW,EAAWiuE,GAAgBpvE,EAAMmB,UAE5BlvB,EAAI,EAAGA,EAAI+tB,EAAMgzF,cAAc9gH,OAAQD,IAAK,CACnD,IAAIuhH,EAAexzF,EAAMgzF,cAAc/gH,GACnC2jD,EAAO49D,EAAa3kB,gBAAkB2kB,EAAa3kB,eAAej5C,KAElEA,GAAQA,EAAK1jD,SACf0jD,EAAKA,EAAK1jD,OAAS,GAAG4jD,QAAU30B,OAOtCnB,EAAM1W,GAAG,eAAe,SAAUoB,GAChCxQ,KAAK84G,cAAc7hH,SAAQ,SAAUs9F,GAC/BA,EAAa2iB,aACf3iB,EAAa2iB,YAAYrf,eAG7B73F,KAAK84G,cAAc9gH,OAAS,EAEvBgI,KAAK4wC,UAIN5wC,KAAK4wC,QAAQs2B,aAAelnE,KAAK4wC,QAAQs2B,gBAC3ClnE,KAAK4wC,QAAQs2B,cAAc53D,IAAI,SAAUtP,KAAK+4G,4BAC9C/4G,KAAK4wC,QAAQs2B,cAAc53D,IAAI,WAAYtP,KAAK+4G,4BAChD/4G,KAAK4wC,QAAQs2B,cAAc53D,IAAI,cAAetP,KAAK+4G,6BAOjD/4G,KAAK4wC,QAAQM,KACflxC,KAAK4wC,QAAQthC,IAAI,cAAetP,KAAKk5G,sBAGnCl5G,KAAK4wC,QAAQ0U,OAAStlD,KAAK4wC,QAAQ0U,MAAMpU,MAC3ClxC,KAAK4wC,QAAQ0U,MAAMh2C,IAAI,YAAatP,KAAKm5G,aACzCn5G,KAAK4wC,QAAQ0U,MAAMh2C,IAAI,2BAA4BtP,KAAKo5G,+BAIrDtzF,EA4FT,OAlVA,GAAS6yF,EAAiBrC,GAiQ1B,GAAYqC,EAAiB,CAAC,CAC5BthH,IAAK,oBACLG,MAAO,SAA2BiH,EAAOC,GACvC,IAAIgJ,OAAQ,EAEZ,GAAI1H,KAAKinB,WAAa5kB,IAIpB,MAHAqF,EAAQ,IAAI/O,MAAM,oFAClB+O,EAAMuC,KAAO,oBACbvC,EAAM7L,KAAO,GACP6L,GAGJhJ,EAAMsB,KAAKg4G,mBAAmB/wF,UAAYtC,MAAM3kB,KAAKg4G,mBAAmB/wF,aAC1EjnB,KAAKg4G,mBAAmB/wF,SAAWvoB,KAWtC,CACDrH,IAAK,kBACLG,MAAO,SAAyBmI,GAC9B,IAAI+D,OAAS,EACT61G,EAAazE,GAAiBn1G,GAGlC,GAAI,yBAAyB2E,KAAKi1G,EAAW55G,MAAO,CAClD,IAAIkzB,EAAS,GAET0mF,EAAWxE,YAAcwE,EAAWxE,WAAWliF,SACjDA,EAAS0mF,EAAWxE,WAAWliF,OAAO77B,MAAM,KAC5C67B,EAASmgF,GAAsBngF,GAC/BA,EAASA,EAAOpB,QAAO,SAAUvtB,GAC/B,OAAOgxG,GAAahxG,IAAUixG,GAAajxG,OAIzB,IAAlB2uB,EAAO76B,SACT66B,EAAS,CAAC,cAAe,cAG3BnvB,EAAS,IAAI2yG,GAAoBr2G,KAAM6yB,GAEL,IAA9B7yB,KAAK84G,cAAc9gH,SAMrBgI,KAAK84G,cAAc,GAAGV,2BACtB10G,EAAO00G,2BAGPp4G,KAAK84G,cAAc,GAAGjC,gBAAiB,QAIzCnzG,EAAS1D,KAAKg4G,mBAAmB9B,gBAAgBv2G,GAInD,OADAK,KAAK84G,cAAcnhH,KAAK+L,GACjBA,IAER,CACDrM,IAAK,UACLG,MAAO,WACLwI,KAAKI,QAAQ,WACbJ,KAAKsP,MACLtP,KAAK84G,cAAc7hH,SAAQ,SAAUyM,GAC/BA,EAAO+L,SACT/L,EAAO+L,aAGXzP,KAAK84G,cAAc9gH,OAAS,MAGzB2gH,EAnVa,CAoVpBvxB,GAAU35C,aAMR+rE,GAAW,EAOfpyB,GAAUqyB,aAAe,GASzB,IAAI,GAAO,SAAcC,EAAaC,GACpC,IAAInlB,EAAcpN,GAAUqyB,aAAaC,GAEzC,IAAIllB,EAMF,MAAM,IAAI77F,MAAM,qCALhB67F,EAAYp0F,QAAQ,CAClBT,KAAM,aACNg6G,MAAOA,KAcT,GAA6B,WAC/B,QAAS,IAASf,eAAiB,IAASA,YAAYgB,iBAAmB,IAAShB,YAAYgB,gBAAgB,6CAW9GhB,GAAc,WAMhB,GALA54G,KAAK44G,YAAc,CACjBr9G,KAAM,GACNs+G,2BAA4B,IAG1B,KACF,OAAO,IAAI,GAGb,MAAM,IAAIlhH,MAAM,2DAGlBigH,GAAYr9G,KAAO,GACnBq9G,GAAYiB,2BAA6B,GAQzC,IAAIC,GAAQ,CASVhiB,gBAAiB,SAAyB14E,GACxC,IAAI26F,EAAkB,yBAClBx/G,OAAM,EAEV,OAAI6kB,aAAkB,IACpB7kB,EAAM,IAASq8F,IAAIkB,gBAAgB14E,EAAO44F,oBAC1C54F,EAAOi6F,KAAO9+G,EACPA,GAKH6kB,aAAkB,IAQxB7kB,EAAMw/G,EAAkBP,GACxBA,KAEApyB,GAAUqyB,aAAal/G,GAAO6kB,EACvB7kB,IAXLA,EAAM,IAASq8F,IAAIkB,gBAAgB14E,GACnCA,EAAOi6F,KAAO9+G,EACPA,KAYb6sF,GAAUwxB,YAAcA,GACxBxxB,GAAUwP,IAAMkjB,GAChB,IAAIE,GAAkB5yB,GAAU35C,YAC5BwsE,GAAiB7yB,GAAU52C,aAc3B0pE,GAAiB,SAAyBC,EAAWC,GAQvD,IAPA,IAAIC,OAAY,EACZxnD,EAASonD,GAAeE,EAAW,CAErClzF,SAAUmzF,EAAUnzF,SACpBsI,oBAAqB6qF,EAAU7qF,sBAGxBx3B,EAAI,EAAGA,EAAIqiH,EAAUnvF,UAAUjzB,OAAQD,IAAK,CACnD,IAAIuiH,EAAiB9vB,GAAa33B,EAAQunD,EAAUnvF,UAAUlzB,IAE1DuiH,EACFznD,EAASynD,EAETD,GAAY,EAoBhB,OAfArwB,GAAkBowB,GAAW,SAAUh2E,EAAYzkC,EAAM46G,EAAOnnF,GAC9D,GAAIgR,EAAWnZ,WAAamZ,EAAWnZ,UAAUjzB,OAAQ,CACvD,IAAIuJ,EAAK6iC,EAAWnZ,UAAU,GAAG1pB,GAE7Bi5G,EAAkBhwB,GAAa33B,EAAQzuB,EAAWnZ,UAAU,IAE5DuvF,IACF3nD,EAAS2nD,EAET3nD,EAAO3nC,YAAYvrB,GAAM46G,GAAOnnF,GAAOnI,UAAU,GAAK4nC,EAAO5nC,UAAU1pB,GACvE84G,GAAY,OAKdA,EACK,KAGFxnD,GAGL4nD,GAAkB,SAAyBC,GAE7C,IAAIC,EAAmBD,EAAS/yF,UAAUha,OAAS+sG,EAAS/yF,UAAU3vB,OAAS,EAC/E,OAAO0iH,EAASriH,IAAM,IAAMqiH,EAAS/yF,UAAUha,OAAS,IAAMgtG,GAO5DC,GAAiB,SAAwBlvG,EAAGmG,GAC9C,IAAIgpG,EAAav3E,SAAS53B,EAAE5J,MAAQ+P,EAAE/P,KAClCg5G,EAAgBD,GAAcv3E,QAAQ53B,EAAE5J,KAAO+P,EAAE/P,KAAO4J,EAAE5J,IAAI6lB,UAAUha,SAAWkE,EAAE/P,IAAI6lB,UAAUha,QAAUjC,EAAE5J,IAAI6lB,UAAU3vB,SAAW6Z,EAAE/P,IAAI6lB,UAAU3vB,QAC5J,OAAO8iH,GAAiBpvG,EAAErT,MAAQwZ,EAAExZ,KAAOqT,EAAEic,UAAUha,SAAWkE,EAAE8V,UAAUha,QAAUjC,EAAEic,UAAU3vB,SAAW6Z,EAAE8V,UAAU3vB,QAIzH+iH,GAAmB,SAA0B9vF,EAAW+vF,GAC1D,IAAIC,EAAiB,GAErB,IAAK,IAAI15G,KAAM0pB,EAAW,CACxB,IAAID,EAAWC,EAAU1pB,GACrB25G,EAAkBlwF,EAASoG,KAE/B,GAAI8pF,EAAiB,CACnB,IAAI7jH,EAAMojH,GAAgBS,GAE1B,IAAKF,EAAe3jH,GAClB,MAGF,IAAI8jH,EAAgBH,EAAe3jH,GAAKqjH,SAEpCE,GAAeO,EAAeD,KAChCD,EAAe5jH,GAAO2jH,EAAe3jH,KAK3C,OAAO4jH,GAcL,GAA4B,SAAmCG,EAAWpwB,EAAQ97D,EAAc8rF,GAElG,IAAIlmF,EAASn7B,GAAMyhH,EAAW,CAC5B1/E,YAAasvD,EACb97D,aAAcA,IAEZmsF,EAAYN,GAAiBjmF,EAAO7J,UAAW+vF,GAC/CM,EAAiBD,EAOrB,OANArxB,GAAkBl1D,GAAQ,SAAUsP,EAAY6lD,EAAWC,EAAUC,GACnE,GAAI/lD,EAAWnZ,WAAamZ,EAAWnZ,UAAUjzB,OAAQ,CACvD,IAAIizB,EAAYmZ,EAAWnZ,UAC3BqwF,EAAiBrB,GAAeqB,EAAgBP,GAAiB9vF,EAAW+vF,QAGzEM,GAILC,GAAe,SAAsBC,EAAWxwF,EAAU/xB,EAAKX,EAASmjH,GAC1E,IAAIf,EAAW,CAEbriH,IAAKwwF,GAAwBvwF,EAAQ8yF,wBAAyBowB,EAAUntF,aAExE1G,UAAW6zF,EAAU7zF,UAErBqD,SAAUA,GAER0wF,EAAqBt0B,GAAU52C,aAAakqE,EAAU,CACxD3+G,aAAc,cACdlF,QAASi5F,GAAkB4qB,KAE7B,OAAOzhH,EAAIyiH,EAAoBD,IAG7B,GAAqB,SAAU37D,GAKjC,SAAS67D,EAAmBC,EAAkB3wB,GAC5C,IAAI3yF,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAC9EiyG,EAAuBjyG,UAAU,GACrC,GAAe5J,KAAM27G,GAErB,IAAI71F,EAAQ,GAA0B9lB,MAAO27G,EAAmBz+G,WAAaH,OAAOiT,eAAe2rG,IAAqB57G,KAAKC,OAEzHkrF,EAAwB5yF,EAAQoD,gBAChCA,OAA4CpC,IAA1B4xF,GAA8CA,EAChEC,EAAwB7yF,EAAQ8yF,wBAChCA,OAAoD9xF,IAA1B6xF,GAA8CA,EAK5E,GAJArlE,EAAMulE,KAAOJ,EACbnlE,EAAMpqB,gBAAkBA,EACxBoqB,EAAMslE,wBAA0BA,GAE3BwwB,EACH,MAAM,IAAIjjH,MAAM,oDAiBlB,OAbAmtB,EAAM1W,GAAG,uBAAuB,WAC9B0W,EAAMg2F,iBAIRh2F,EAAM1W,GAAG,sBAAsB,WAC7B0W,EAAMi2F,cAAcj2F,EAAMqF,QAAQ5pB,OAGpCukB,EAAM6pB,MAAQ,eACd7pB,EAAMk2F,iBAAmB,GAGO,kBAArBJ,GACT91F,EAAMklE,OAAS4wB,EAGf91F,EAAMm2F,aAAe,GACd,GAA0Bn2F,KAGnCA,EAAMo2F,iBAAiBL,EAAsBD,GAEtC91F,GAujBT,OAtmBA,GAAS61F,EAAoB77D,GAkD7B,GAAY67D,EAAoB,CAAC,CAC/BtkH,IAAK,mBACLG,MAAO,SAA0BqkH,EAAsB7wF,GACrDhrB,KAAKm8G,sBAAwBN,EAC7B77G,KAAKo8G,eAAiBpxF,IAEvB,CACD3zB,IAAK,UACLG,MAAO,WACLwI,KAAKI,QAAQ,WACbJ,KAAK+rF,cACL/rF,KAAKg8G,iBAAmB,GACxB,IAASjiH,aAAaiG,KAAKq8G,6BAC3B,IAAStiH,aAAaiG,KAAKs8G,eAC3B,IAASviH,aAAaiG,KAAK8rF,oBAC3B9rF,KAAKsP,QAEN,CACDjY,IAAK,oBACLG,MAAO,WACL,OAAOwI,KAAK08E,SAAW18E,KAAKs8G,gBAE7B,CACDjlH,IAAK,cACLG,MAAO,WACL,GAAIwI,KAAK08E,QAAS,CAChB,IAAIuP,EAAajsF,KAAK08E,QACtB18E,KAAK08E,QAAU,KACfuP,EAAWhxF,mBAAqB,KAChCgxF,EAAWrwF,WAGd,CACDvE,IAAK,uBACLG,MAAO,SAA8BwzB,EAAU8J,EAAQ62D,EAAe4wB,GACpE,IAAI71F,EAAS1mB,KAEb,OAAO,SAAUnH,EAAK6jF,GAEpB,GAAKh2D,EAAOg2D,QAAZ,CAOA,GAFAh2D,EAAOg2D,QAAU,KAEb7jF,EAeF,OAdA6tB,EAAOhf,MAAQ,CACbtN,OAAQsiF,EAAQtiF,OAChBmf,QAAS,uCAAyCyR,EAAS3yB,IAC3DS,SAAU4jF,EAAQ5jF,SAElB+C,KAAM,GAGJ8vF,IACFjlE,EAAOipB,MAAQg8C,GAGjBjlE,EAAOtmB,QAAQ,SAERm8G,EAAOznF,EAAQ,MAGxB,IAAIoM,EAAQ,IAAIzjC,WAAWi/E,EAAQ5jF,UAC/Bs4B,EAAO,KAAaorF,UAAUt7E,EAAM19B,SAAS,IACjD,OAAO+4G,EAAOznF,EAAQ1D,OAGzB,CACD/5B,IAAK,QACLG,MAAO,SAAewzB,GACpB,IAAIxC,EAASxoB,KAGb,IAAKgrB,EACH,OAAOhrB,KAAK6rF,OAId,GAAmB,iBAAf7rF,KAAK2vC,MACP,MAAM,IAAIh3C,MAAM,qCAAuCqH,KAAK2vC,OAG9D,IAAIg8C,EAAgB3rF,KAAK2vC,MAEzB,GAAwB,kBAAb3kB,EAAuB,CAChC,IAAKhrB,KAAK80B,OAAO7J,UAAUD,GACzB,MAAM,IAAIryB,MAAM,yBAA2BqyB,GAG7CA,EAAWhrB,KAAK80B,OAAO7J,UAAUD,GAGnC,IAAImhE,GAAensF,KAAK6rF,QAAU7gE,EAASzpB,KAAOvB,KAAK6rF,OAAOtqF,GAE9D,GAAI4qF,GAAensF,KAAKg8G,iBAAiBhxF,EAASzpB,KAAOvB,KAAKg8G,iBAAiBhxF,EAASzpB,IAAI4oB,QAS1F,OARAnqB,KAAK2vC,MAAQ,gBACb3vC,KAAK6rF,OAAS7gE,OAEVmhE,IACFnsF,KAAKI,QAAQ,iBACbJ,KAAKI,QAAQ,iBAOjB,GAAK+rF,EASL,GAJInsF,KAAK6rF,QACP7rF,KAAKI,QAAQ,iBAGV4qB,EAASoG,KAAd,CAYA,IAAI+oF,OAAY,EACZ7nF,OAAc,EAGdtyB,KAAKm8G,uBACPhC,EAAYn6G,KAAKm8G,sBAAsBrnF,OACvCxC,EAActyB,KAAKm8G,sBAAsBF,eAEzC9B,EAAYn6G,KAAK80B,OACjBxC,EAActyB,KAAKi8G,cAGrB,IAAI1pF,EAAUkoF,GAAgBzvF,EAASoG,MACvCkB,EAAYC,GAAW,CACrBmoF,SAAU1vF,EAASoG,MAErBpxB,KAAK08E,QAAU6+B,GAAavwF,EAASoG,KAAMpG,EAAUhrB,KAAKqrF,KAAKpyF,IAAK,CAClEmyF,wBAAyBprF,KAAKorF,yBAC7BprF,KAAKy8G,qBAAqBzxF,EAAUmvF,EAAWxuB,GAAe,SAAUyuB,EAAWhpF,GACpF,IAAKgpF,IAAchpF,EACjB,MAAM,IAAIz4B,MAAM,0BAIlB25B,EAAYC,GAASnB,KAAOA,EAE5B5I,EAAOkjE,aAAa,CAClBC,cAAeA,EACf3gE,SAAUovF,EAAUnvF,UAAUD,EAASzpB,eArCzCvB,KAAKs8G,cAAgB,IAASnjH,WAAW6G,KAAK0rF,aAAa9/E,KAAK5L,KAAM,CACpE2rF,cAAeA,EACf3gE,SAAUA,IACR,KAsCP,CACD3zB,IAAK,eACLG,MAAO,SAAsB+wB,GAC3B,IAAIojE,EAAgBpjE,EAAKojE,cACrB3gE,EAAWzC,EAAKyC,SACpBhrB,KAAK2vC,MAAQ,gBACb3vC,KAAKg8G,iBAAiBhxF,EAASzpB,IAAMypB,EACrChrB,KAAKs8G,cAAgB,KAErBt8G,KAAK+7G,cAAc/wF,EAASzpB,IAGN,gBAAlBoqF,EACF3rF,KAAKI,QAAQ,kBAGbJ,KAAKI,QAAQ,iBAGhB,CACD/I,IAAK,QACLG,MAAO,WACLwI,KAAK+rF,cACL,IAAShyF,aAAaiG,KAAK8rF,oBAC3B,IAAS/xF,aAAaiG,KAAKq8G,6BAER,iBAAfr8G,KAAK2vC,QAGP3vC,KAAKosF,SAAU,KAGlB,CACD/0F,IAAK,OACLG,MAAO,SAAc00F,GACnB,IAAI90C,EAASp3C,KAEb,IAASjG,aAAaiG,KAAK8rF,oBAC3B,IAAS/xF,aAAaiG,KAAKq8G,6BAC3B,IAAIlxF,EAAQnrB,KAAKmrB,QAEjB,GAAI+gE,EAAJ,CACE,IAAIzsD,EAAQtU,EAAQA,EAAMe,eAAiB,EAAI,IAAO,IACtDlsB,KAAK8rF,mBAAqB,IAAS3yF,YAAW,WAC5C,OAAOi+C,EAAOiQ,SACb5nB,QAMAz/B,KAAKosF,QAKNjhE,IAAUA,EAAMhB,QAClBnqB,KAAKI,QAAQ,sBAEbJ,KAAKI,QAAQ,kBAPbJ,KAAKvB,UAiBR,CACDpH,IAAK,iBACLG,MAAO,WACL,IAAIs9B,EAASn7B,GAAMqG,KAAK08G,WAAY,CAClChhF,YAAa17B,KAAKgrF,OAClB97D,aAAclvB,KAAK28G,cACnBrqF,YAAatyB,KAAKi8G,eAEpBnnF,EAAOz8B,IAAM2H,KAAKgrF,OAIlB,IAAK,IAAIjzF,EAAI,EAAGA,EAAI+8B,EAAO7J,UAAUjzB,OAAQD,IAAK,CAChD,IAAI6kH,EAAW,mBAAqB7kH,EACpC+8B,EAAO7J,UAAUlzB,GAAGM,IAAMukH,EAmB5B,OAdA5yB,GAAkBl1D,GAAQ,SAAUsP,EAAY6lD,EAAWC,EAAUC,GACnE,GAAI/lD,EAAWnZ,WAAamZ,EAAWnZ,UAAUjzB,OAAQ,CACvD,IAAI6kH,EAAY,mBAAqB5yB,EAAY,IAAMC,EAAW,IAAMC,EAEpE5oF,EAAKmpF,GAAiB,EAAGmyB,GAC7Bz4E,EAAWnZ,UAAU,GAAG5yB,IAAMwkH,EAC9Bz4E,EAAWnZ,UAAU,GAAG1pB,GAAKA,EAE7BuzB,EAAO7J,UAAU1pB,GAAM6iC,EAAWnZ,UAAU,GAC5C6J,EAAO7J,UAAU4xF,GAAaz4E,EAAWnZ,UAAU,OAGvD0/D,GAAoB71D,GACpB81D,GAAsB91D,GACfA,IAER,CACDz9B,IAAK,QACLG,MAAO,WACL,IAAI8yD,EAAStqD,KAEbA,KAAKosF,SAAU,EAGXpsF,KAAKm8G,sBACPn8G,KAAKs8G,cAAgB,IAASnjH,WAAW6G,KAAK88G,YAAYlxG,KAAK5L,MAAO,GAKxEA,KAAK08E,QAAU18E,KAAKqrF,KAAKpyF,IAAI,CAC3BZ,IAAK2H,KAAKgrF,OACVtvF,gBAAiBsE,KAAKtE,kBACrB,SAAUgM,EAAOqhF,GAElB,GAAKz+B,EAAOoyB,QAAZ,CAOA,GAFApyB,EAAOoyB,QAAU,KAEbh1E,EAaF,OAZA4iD,EAAO5iD,MAAQ,CACbtN,OAAQ2uF,EAAI3uF,OACZmf,QAAS,uCAAyC+wC,EAAO0gC,OACzDzxF,aAAcwvF,EAAIxvF,aAElBsC,KAAM,GAGa,iBAAjByuD,EAAO3a,QACT2a,EAAO8hC,SAAU,GAGZ9hC,EAAOlqD,QAAQ,SAGxBkqD,EAAOoyD,WAAa3zB,EAAIxvF,aAEpBwvF,EAAIyG,iBAAmBzG,EAAIyG,gBAAgButB,KAC7CzyD,EAAO0yD,cAAgBn4G,KAAKlL,MAAMovF,EAAIyG,gBAAgButB,MAEtDzyD,EAAO0yD,cAAgBn4G,KAAK6qB,MAG9B46B,EAAO0gC,OAASnC,GAAwBv+B,EAAO8gC,wBAAyB9gC,EAAO0gC,OAAQjC,GAEvFz+B,EAAO2yD,uBAAuB3yD,EAAO4yD,yBAAyBtxG,KAAK0+C,UAWtE,CACDjzD,IAAK,yBACLG,MAAO,SAAgCqpC,GACrC,IAAI2pB,EAASxqD,KAETm9G,EAAYjhF,GAAel8B,KAAK08G,YAGpC,OAAkB,OAAdS,GACFn9G,KAAK28G,cAAgB38G,KAAKg9G,cAAgBn4G,KAAK6qB,MACxCmR,KAGgB,WAArBs8E,EAAU7iH,QACZ0F,KAAK28G,cAAgBQ,EAAU3lH,MAAQqN,KAAK6qB,MACrCmR,UAGT7gC,KAAK08E,QAAU18E,KAAKqrF,KAAKpyF,IAAI,CAC3BZ,IAAK,GAAW2H,KAAKgrF,OAAQmyB,EAAU3lH,OACvC8C,OAAQ6iH,EAAU7iH,OAClBoB,gBAAiBsE,KAAKtE,kBACrB,SAAUgM,EAAOqhF,GAElB,GAAKv+B,EAAOkyB,QAAZ,CAIA,GAAIh1E,EAIF,OADA8iD,EAAOmyD,cAAgBnyD,EAAOwyD,cAAgBn4G,KAAK6qB,MAC5CmR,IAGT,IAAIu8E,OAAa,EAQbA,EANqB,SAArBD,EAAU7iH,OACPyuF,EAAIyG,iBAAoBzG,EAAIyG,gBAAgButB,KAKlCl4G,KAAKlL,MAAMovF,EAAIyG,gBAAgButB,MAF/BvyD,EAAOwyD,cAKTn4G,KAAKlL,MAAMovF,EAAIxvF,cAG9BixD,EAAOmyD,cAAgBS,EAAav4G,KAAK6qB,MACzCmR,WAGH,CACDxpC,IAAK,cACLG,MAAO,WACLwI,KAAK2vC,MAAQ,cAEb3vC,KAAKs8G,cAAgB,KAEhBt8G,KAAKm8G,sBAMEn8G,KAAK6rF,QAGf7rF,KAAKmrB,MAAMnrB,KAAKo8G,iBARhBp8G,KAAK80B,OAAS90B,KAAKq9G,iBAInBr9G,KAAKI,QAAQ,qBAYhB,CACD/I,IAAK,2BACLG,MAAO,WACL,IAAI0zD,EAASlrD,KAEbA,KAAK88G,cAEA98G,KAAKs9G,qBAAwBt9G,KAAK6rF,QACrC7rF,KAAKmrB,MAAMnrB,KAAK80B,OAAO7J,UAAU,IAS/BjrB,KAAK80B,QAAU90B,KAAK80B,OAAOvF,sBAC7BvvB,KAAKq8G,4BAA8B,IAASljH,YAAW,WACrD+xD,EAAO9qD,QAAQ,yBACdJ,KAAK80B,OAAOvF,wBAQlB,CACDl4B,IAAK,cACLG,MAAO,WACL,IAAI2mF,EAASn+E,KAIbA,KAAK08E,QAAU18E,KAAKqrF,KAAKpyF,IAAI,CAC3BZ,IAAK2H,KAAKgrF,OACVtvF,gBAAiBsE,KAAKtE,kBACrB,SAAUgM,EAAOqhF,GAElB,GAAK5K,EAAOzB,QAAZ,CAOA,GAFAyB,EAAOzB,QAAU,KAEbh1E,EAaF,OAZAy2E,EAAOz2E,MAAQ,CACbtN,OAAQ2uF,EAAI3uF,OACZmf,QAAS,uCAAyC4kE,EAAO6M,OACzDzxF,aAAcwvF,EAAIxvF,aAElBsC,KAAM,GAGa,iBAAjBsiF,EAAOxuC,QACTwuC,EAAOiO,SAAU,GAGZjO,EAAO/9E,QAAQ,SAGxB+9E,EAAOu+B,WAAa3zB,EAAIxvF,aAExB4kF,EAAO89B,aAAe,GAA0B99B,EAAOu+B,WAAYv+B,EAAO6M,OAAQ7M,EAAOw+B,cAAex+B,EAAO89B,cAE/G,IAAInnF,EAASqpD,EAAOk/B,iBAEhBE,EAAgBrD,GAAe/7B,EAAOrpD,OAAQA,GAE9ComF,EAAkB/8B,EAAOhzD,QAAQiG,KAErC,GAAImsF,EACF,GAAIrC,EAAiB,CACnB,IAAI3oF,EAAUkoF,GAAgBS,GAE9B,IAAK/8B,EAAO89B,aAAa1pF,GAAU,CACjC,IAAIvH,EAAWmzD,EAAOhzD,QAEtBgzD,EAAOzB,QAAU6+B,GAAavwF,EAASoG,KAAMpG,EAAUmzD,EAAOkN,KAAKpyF,IAAK,CACtEmyF,wBAAyBjN,EAAOiN,yBAC/BjN,EAAOs+B,qBAAqBzxF,EAAU8J,EAAQqpD,EAAOxuC,OAAO,SAAUyqE,EAAWhpF,GAClF,IAAKgpF,IAAchpF,EACjB,MAAM,IAAIz4B,MAAM,iDAIlBwlF,EAAO89B,aAAa1pF,GAASnB,KAAOA,EACpC+sD,EAAOk+B,4BAA8B,IAASljH,YAAW,WACvDglF,EAAO/9E,QAAQ,yBACd+9E,EAAOrpD,OAAOvF,qBAEjB4uD,EAAO49B,cAAc59B,EAAOhzD,QAAQ5pB,cAMxC48E,EAAOrpD,OAASyoF,EAIpBp/B,EAAOk+B,4BAA8B,IAASljH,YAAW,WACvDglF,EAAO/9E,QAAQ,yBACd+9E,EAAOrpD,OAAOvF,2BASpB,CACDl4B,IAAK,gBACLG,MAAO,SAAuBgmH,GAC5B,IAAIl/B,EAASt+E,KAEb,IAAKw9G,EACH,MAAM,IAAI7kH,MAAM,sCAGlB,IAAIwhH,OAAY,EACZC,OAAY,EAEZp6G,KAAKm8G,uBACPhC,EAAYn6G,KAAKm8G,sBAAsBrnF,OACvCslF,EAAYp6G,KAAKm8G,sBAAsBkB,mBAEvClD,EAAYn6G,KAAK80B,OACjBslF,EAAYp6G,KAAKq9G,kBAGnB,IAAIE,EAAgBrD,GAAeC,EAAWC,GAE1CmD,GACEv9G,KAAKm8G,sBACPn8G,KAAKm8G,sBAAsBrnF,OAASyoF,EAEpCv9G,KAAK80B,OAASyoF,EAGhBv9G,KAAK6rF,OAAS0xB,EAActyF,UAAUuyF,KAEtCx9G,KAAK6rF,OAASuuB,EAAUnvF,UAAUuyF,GAClCx9G,KAAKI,QAAQ,sBAGVJ,KAAKmrB,QAAQhB,UAChBnqB,KAAK8rF,mBAAqB,IAAS3yF,YAAW,WAC5CmlF,EAAOl+E,QAAQ,wBACdyqF,GAAa7qF,KAAKmrB,UAAWoyF,KAGlCv9G,KAAKI,QAAQ,sBAGVu7G,EAvmBgB,CAwmBvB3B,IAEEyD,GAAS,SAAgB12G,GAC3B,OAAIqgF,GAAUviE,IAAIgd,MACTulD,GAAUviE,IAAIgd,MAAMj2B,KAAKw7E,GAAW,OAAQrgF,EAAS,MAGvD,cAGT,SAAS,MAqBT,IAAI22G,GAAgB,WAClB,SAASA,EAAclpB,EAAaxtF,EAAUrH,EAAMg+G,GAClD,GAAe39G,KAAM09G,GACrB19G,KAAK49G,WAAa,GAClB59G,KAAK69G,iBAAmB,KACxB79G,KAAKu2G,iBAAmB,EACxBv2G,KAAKw0F,YAAcA,EACnBx0F,KAAK89G,kBAAmB,EACxB99G,KAAKC,MAAQN,EACbK,KAAK+9G,UAAY/2G,EACjBhH,KAAKg+G,QAAUP,GAAO,iBAAmB99G,EAAO,KAAOqH,EAAW,KAEnC,WAA3BwtF,EAAYt7F,WACds7F,EAAYnrD,iBAAiB,aAAcrpC,KAAKi+G,oBAAoBryG,KAAK5L,KAAMgH,EAAU22G,IAEzF39G,KAAKi+G,oBAAoBj3G,EAAU22G,GAoOvC,OAhOA,GAAYD,EAAe,CAAC,CAC1BrmH,IAAK,sBACLG,MAAO,SAA6BwP,EAAU22G,GAC5C,IAAI73F,EAAQ9lB,KAEZA,KAAKk+G,cAAgBl+G,KAAKw0F,YAAY0hB,gBAAgBlvG,GACtDhH,KAAKg+G,QAAQ,wBAETL,IACFA,EAAoBv9G,QAAQ,qBAExBJ,KAAKw0F,YAAYskB,cAAc9gH,OAAS,GAK1C2lH,EAAoBvuG,GAAG,qBAAqB,WAC1C0W,EAAMq4F,YAMZn+G,KAAKm+G,WAEN,CACD9mH,IAAK,SACLG,MAAO,WACL,IAAIkvB,EAAS1mB,KAEbA,KAAKo+G,UAAW,EAGhBp+G,KAAKq+G,qBAAuB,WAC1B,IAAIC,EAAkB53F,EAAOm3F,iBAC7Bn3F,EAAOm3F,iBAAmB,KAC1Bn3F,EAAOw3F,cAAcK,UAAW,EAEhC73F,EAAOs3F,QAAQ,aAAe/pB,GAAevtE,EAAO4zB,YAAc,KAE9DgkE,GACFA,IAGF53F,EAAO83F,gBAGTx+G,KAAKk+G,cAAc70E,iBAAiB,YAAarpC,KAAKq+G,sBACtDr+G,KAAKw+G,iBASN,CACDnnH,IAAK,QACLG,MAAO,SAAeqpC,GACpB,IAAIrY,EAASxoB,KAETA,KAAK89G,kBACP99G,KAAKy+G,gBAAe,WAClBj2F,EAAO01F,cAActiH,UACpBilC,KAWN,CACDxpC,IAAK,eACLG,MAAO,SAAsBoyE,EAAQ/oC,GACnC,IAAIuW,EAASp3C,KAEbA,KAAK89G,kBAAmB,EACxB99G,KAAKy+G,gBAAe,WACd70C,EAAO80C,gCACTtnE,EAAO8mE,cAAc70E,iBAAiB,yBAA0BugC,EAAO80C,gCAGzEtnE,EAAO8mE,cAAczF,aAAa7uC,EAAO1oC,UACxC,WACG0oC,EAAO80C,gCACTtnE,EAAO8mE,cAAc90E,oBAAoB,yBAA0BwgC,EAAO80C,gCAG5E79E,SASH,CACDxpC,IAAK,WACLG,MAAO,WACL,OAAKwI,KAAKk+G,cAIHl+G,KAAKk+G,cAAc5jE,SAHjB8sC,GAAUhtC,qBAepB,CACD/iD,IAAK,SACLG,MAAO,SAAgBiH,EAAOC,GAC5B,IAAI4rD,EAAStqD,KAET6gC,EAAOj3B,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAE3E5J,KAAK89G,kBACP99G,KAAKy+G,gBAAe,WAClBn0D,EAAO0zD,QAAQ,WAAav/G,EAAQ,OAASC,EAAM,KAEnD4rD,EAAO4zD,cAAcK,UAAW,EAEhCj0D,EAAO4zD,cAAcviG,OAAOld,EAAOC,KAClCmiC,KASN,CACDxpC,IAAK,WACLG,MAAO,WAEL,OAAQwI,KAAKk+G,eAAiBl+G,KAAKk+G,cAAc/H,YAC/Cn2G,KAAK69G,kBAAoB79G,KAAK69G,mBAAqB,KAQtD,CACDxmH,IAAK,kBACLG,MAAO,SAAyBmW,GAC9B,IAAI68C,EAASxqD,KAWb,MATsB,qBAAX2N,IACT3N,KAAKy+G,gBAAe,WAClBj0D,EAAO0zD,cAAcxoB,gBAAkB/nF,EAEvC68C,EAAOg0D,kBAETx+G,KAAKu2G,iBAAmB5oG,GAGnB3N,KAAKu2G,mBAMb,CACDl/G,IAAK,iBACLG,MAAO,SAAwBe,EAAUsoC,GACvC7gC,KAAK49G,WAAWjmH,KAAK,CAACY,EAASqT,KAAK5L,MAAO6gC,IAC3C7gC,KAAKw+G,iBAMN,CACDnnH,IAAK,eACLG,MAAO,WACL,IAAIgY,OAAY,GAEXxP,KAAKm2G,YAAcn2G,KAAK49G,WAAW5lH,QAAUgI,KAAKo+G,WACrD5uG,EAAYxP,KAAK49G,WAAWh+E,QAC5B5/B,KAAK69G,iBAAmBruG,EAAU,GAClCA,EAAU,QAOb,CACDnY,IAAK,UACLG,MAAO,WACL,IAAI0zD,EAASlrD,KAET2+G,EAAY,SAASA,IACnBzzD,EAAOgzD,eAAmD,SAAlChzD,EAAOspC,YAAYt7F,YAC7CgyD,EAAOgzD,cAActiH,QAGvBsvD,EAAOgzD,cAAc90E,oBAAoB,YAAau1E,IAGxD3+G,KAAKk+G,cAAc90E,oBAAoB,YAAappC,KAAKq+G,sBAErDr+G,KAAKk+G,cAAcK,SACrBv+G,KAAKk+G,cAAc70E,iBAAiB,YAAas1E,GAEjDA,QAICjB,EAnPW,GAsPhBkB,GAAS,CACXC,mBAAoB,GACpBC,uBAAwB,GACxBC,wBAAyB,EAEzBC,kBAAmB,QAGnBC,mBAAoB,IAEpBC,sBAAuB,EACvBC,0BAA2B,GAC3BC,2BAA4B,GAE1BC,GAAiB,CACnBC,QAAS,EACTC,SAAU,IACVC,SAAU,KAQRC,GAAW,SAAkBC,GAC/BA,EAAWzoH,SAAQ,SAAUgC,GAC3BA,EAAI2C,YAUJ+jH,GAAkB,SAAyBjjC,GAC7C,MAAO,CACL/pD,UAAW+pD,EAAQ/pD,UACnB67D,cAAe9R,EAAQ8R,eAAiB,EACxCc,cAAe5S,EAAQ4S,eAAiB,IAWxCswB,GAAmB,SAA0BC,GAC/C,IAAInjC,EAAUmjC,EAAcv2G,OACxBgmF,EAAgBzqF,KAAK6qB,MAAQgtD,EAAQ6S,YACrCuwB,EAAQ,CACVntF,UAAWtwB,IACXmsF,cAAe,EACfc,cAAeA,GAAiB,GAOlC,OALAwwB,EAAMtxB,cAAgBqxB,EAAcE,OAIpCD,EAAMntF,UAAYnzB,KAAKolB,MAAMk7F,EAAMtxB,cAAgBsxB,EAAMxwB,cAAgB,EAAI,KACtEwwB,GAWLE,GAAe,SAAsBt4G,EAAOg1E,GAC9C,OAAIA,EAAQ+S,SACH,CACLr1F,OAAQsiF,EAAQtiF,OAChBmf,QAAS,iCAAmCmjE,EAAQrkF,IACpDwD,KAAMwjH,GAAeE,QACrBtmH,IAAKyjF,GAILA,EAAQviF,QACH,CACLC,OAAQsiF,EAAQtiF,OAChBmf,QAAS,+BAAiCmjE,EAAQrkF,IAClDwD,KAAMwjH,GAAeG,QACrBvmH,IAAKyjF,GAILh1E,EACK,CACLtN,OAAQsiF,EAAQtiF,OAChBmf,QAAS,+BAAiCmjE,EAAQrkF,IAClDwD,KAAMwjH,GAAeC,QACrBrmH,IAAKyjF,GAIF,MAaLujC,GAAoB,SAA2Br3F,EAAS6yF,GAC1D,OAAO,SAAU/zG,EAAOg1E,GACtB,IAAI5jF,EAAW4jF,EAAQ5jF,SACnBonH,EAAWF,GAAat4G,EAAOg1E,GAEnC,GAAIwjC,EACF,OAAOzE,EAAmByE,EAAUt3F,GAGtC,GAA4B,KAAxB9vB,EAASqE,WACX,OAAOs+G,EAAmB,CACxBrhH,OAAQsiF,EAAQtiF,OAChBmf,QAAS,2BAA6BmjE,EAAQrkF,IAC9CwD,KAAMwjH,GAAeC,QACrBrmH,IAAKyjF,GACJ9zD,GAGL,IAAIvlB,EAAO,IAAII,SAAS3K,GAExB,OADA8vB,EAAQvxB,IAAI6pC,MAAQ,IAAI9Y,YAAY,CAAC/kB,EAAKQ,UAAU,GAAIR,EAAKQ,UAAU,GAAIR,EAAKQ,UAAU,GAAIR,EAAKQ,UAAU,MACtG43G,EAAmB,KAAM7yF,KAahC,GAA4B,SAAmCA,EAASu3F,EAAe1E,GACzF,OAAO,SAAU/zG,EAAOg1E,GACtB,IAAI5jF,EAAW4jF,EAAQ5jF,SACnBonH,EAAWF,GAAat4G,EAAOg1E,GAEnC,OAAIwjC,EACKzE,EAAmByE,EAAUt3F,GAIV,IAAxB9vB,EAASqE,WACJs+G,EAAmB,CACxBrhH,OAAQsiF,EAAQtiF,OAChBmf,QAAS,qCAAuCmjE,EAAQrkF,IACxDwD,KAAMwjH,GAAeC,QACrBrmH,IAAKyjF,GACJ9zD,IAGLA,EAAQ9mB,IAAIo/B,MAAQ,IAAIzjC,WAAWi/E,EAAQ5jF,UAEvCqnH,IAAkBA,EAAcC,iBAClCD,EAAcrgH,OAGhB8oB,EAAQ9mB,IAAIU,WAAa,KAAS/B,UAAUmoB,EAAQ9mB,IAAIo/B,OACxDtY,EAAQ9mB,IAAImB,cAAgB,KAASA,cAAc2lB,EAAQ9mB,IAAIo/B,OACxDu6E,EAAmB,KAAM7yF,MAehCy3F,GAAwB,SAA+Bz3F,EAASu3F,EAAe1E,GACjF,OAAO,SAAU/zG,EAAOg1E,GACtB,IAAI5jF,EAAW4jF,EAAQ5jF,SACnBonH,EAAWF,GAAat4G,EAAOg1E,GAC/B82B,OAAS,EAEb,OAAI0M,EACKzE,EAAmByE,EAAUt3F,GAIV,IAAxB9vB,EAASqE,WACJs+G,EAAmB,CACxBrhH,OAAQsiF,EAAQtiF,OAChBmf,QAAS,qCAAuCmjE,EAAQrkF,IACxDwD,KAAMwjH,GAAeC,QACrBrmH,IAAKyjF,GACJ9zD,IAGLA,EAAQk3F,MAAQH,GAAgBjjC,GAE5B9zD,EAAQvxB,IACVuxB,EAAQ03F,eAAiB,IAAI7iH,WAAWi/E,EAAQ5jF,UAEhD8vB,EAAQsY,MAAQ,IAAIzjC,WAAWi/E,EAAQ5jF,UAKrCqnH,GAAiBv3F,EAAQ9mB,KAAO8mB,EAAQ9mB,IAAIo/B,QAEzCi/E,EAAcC,iBACjBD,EAAcrgH,OAGhB0zG,EAAS2M,EAAcxmH,MAAMivB,EAAQsY,MAAOtY,EAAQ9mB,IAAImB,cAAe2lB,EAAQ9mB,IAAIU,YAE/EgxG,GAAUA,EAAO9wD,WACnB95B,EAAQ8rE,eAAiB8e,EAAO9e,eAChC9rE,EAAQ23F,aAAe/M,EAAO9wD,WAI3B+4D,EAAmB,KAAM7yF,MAahC43F,GAAiB,SAAwBC,EAAW73F,EAAS2zF,GAC/D,IAAImE,EAAoB,SAASA,EAAkBlwG,GACjD,GAAIA,EAAM3V,KAAKkM,SAAW6hB,EAAQ+3F,UAAW,CAC3CF,EAAUr3E,oBAAoB,UAAWs3E,GACzC,IAAIrgF,EAAY7vB,EAAM3V,KAAKwlC,UAE3B,OADAzX,EAAQsY,MAAQ,IAAIzjC,WAAW4iC,EAAUa,MAAOb,EAAU18B,WAAY08B,EAAUljC,YACzEo/G,EAAO,KAAM3zF,KAIxB63F,EAAUp3E,iBAAiB,UAAWq3E,GACtC,IAAIE,OAAW,EAGbA,EADEh4F,EAAQvxB,IAAI6pC,MAAM5pC,MACTsxB,EAAQvxB,IAAI6pC,MAAM5pC,QAElB,IAAI8wB,YAAY3wB,MAAMqF,UAAUxF,MAAMyI,KAAK6oB,EAAQvxB,IAAI6pC,QAKpEu/E,EAAUlpB,YAAYpH,GAA0B,CAC9CppF,OAAQ6hB,EAAQ+3F,UAChB3gF,UAAWpX,EAAQ03F,eACnBjpH,IAAKupH,EACL71F,GAAInC,EAAQvxB,IAAI0zB,KACd,CAACnC,EAAQ03F,eAAe58G,OAAQk9G,EAASl9G,UAe3Cm9G,GAAoB,SAA2BnB,EAAYe,EAAWlE,GACxE,IAAIn6F,EAAQ,EACR0+F,GAAW,EACf,OAAO,SAAUp5G,EAAOkhB,GACtB,IAAIk4F,EAIJ,OAAIp5G,GACFo5G,GAAW,EAEXrB,GAASC,GAYFnD,EAAO70G,EAAOkhB,KAGvBxG,GAAS,EAELA,IAAUs9F,EAAW1nH,QAEvB4wB,EAAQm4F,iBAAmBl8G,KAAK6qB,MAE5B9G,EAAQ03F,eACHE,GAAeC,EAAW73F,EAAS2zF,GAIrCA,EAAO,KAAM3zF,SATtB,KAyBAo4F,GAAiB,SAAwBp4F,EAASq4F,GACpD,OAAO,SAAUzwG,GAOf,OANAoY,EAAQk3F,MAAQ14B,GAAU52C,aAAa5nB,EAAQk3F,MAAOF,GAAiBpvG,KAElEoY,EAAQk3F,MAAMoB,sBAAwBt4F,EAAQk3F,MAAMtxB,gBACvD5lE,EAAQk3F,MAAMoB,qBAAuBr8G,KAAK6qB,OAGrCuxF,EAAWzwG,EAAOoY,KAqDzBu4F,GAAsB,SAA6BloH,EAAKmoH,EAAYC,EAAkBlB,EAAev3F,EAASq4F,EAAY1E,GAC5H,IAAImD,EAAa,GACbjE,EAAqBoF,GAAkBnB,EAAY2B,EAAkB9E,GAEzE,GAAI3zF,EAAQvxB,MAAQuxB,EAAQvxB,IAAI6pC,MAAO,CACrC,IAAIogF,EAAoBl6B,GAAU52C,aAAa4wE,EAAY,CACzD/oH,IAAKuwB,EAAQvxB,IAAIg3B,YACjBtyB,aAAc,gBAEZwlH,EAAqBtB,GAAkBr3F,EAAS6yF,GAChD+F,EAASvoH,EAAIqoH,EAAmBC,GACpC7B,EAAW/nH,KAAK6pH,GAIlB,GAAI54F,EAAQ9mB,MAAQ8mB,EAAQ9mB,IAAIo/B,MAAO,CACrC,IAAIugF,EAAqBr6B,GAAU52C,aAAa4wE,EAAY,CAC1D/oH,IAAKuwB,EAAQ9mB,IAAIusB,YACjBtyB,aAAc,cACdlF,QAASi5F,GAAkBlnE,EAAQ9mB,OAEjC4/G,EAA6B,GAA0B94F,EAASu3F,EAAe1E,GAC/EkG,EAAiB1oH,EAAIwoH,EAAoBC,GAC7ChC,EAAW/nH,KAAKgqH,GAGlB,IAAIC,EAAwBx6B,GAAU52C,aAAa4wE,EAAY,CAC7D/oH,IAAKuwB,EAAQyF,YACbtyB,aAAc,cACdlF,QAASi5F,GAAkBlnE,KAEzBi5F,EAAyBxB,GAAsBz3F,EAASu3F,EAAe1E,GACvEqG,EAAa7oH,EAAI2oH,EAAuBC,GAG5C,OAFAC,EAAWz4E,iBAAiB,WAAY23E,GAAep4F,EAASq4F,IAChEvB,EAAW/nH,KAAKmqH,GACT,WACL,OAAOrC,GAASC,KAgBhB,GAAuB,SAA8Bt3G,EAAI8gF,GAC3D,IAAIpyF,OAAS,EAEb,OAAKsR,GAILtR,EAAS,IAASosC,iBAAiB96B,GAE9BtR,EAIEA,EAAOoyF,GAHL,IANA,IAoBP64B,GAAa,SAAoBlqH,EAAOmqH,GAC1C,IAAIC,EAAWpqH,EAAMP,QACrBO,EAAM+Z,MAAK,SAAU20B,EAAMs2B,GACzB,IAAIqlD,EAAMF,EAAOz7E,EAAMs2B,GAEvB,OAAY,IAARqlD,EACKD,EAAS7qH,QAAQmvC,GAAQ07E,EAAS7qH,QAAQylE,GAG5CqlD,MAeP,GAA2B,SAAkC37E,EAAMs2B,GACrE,IAAIslD,OAAgB,EAChBC,OAAiB,EAarB,OAXI77E,EAAKjoB,WAAW0J,YAClBm6F,EAAgB57E,EAAKjoB,WAAW0J,WAGlCm6F,EAAgBA,GAAiB,IAAS7rF,OAAOq4D,UAE7C9xB,EAAMv+C,WAAW0J,YACnBo6F,EAAiBvlD,EAAMv+C,WAAW0J,WAGpCo6F,EAAiBA,GAAkB,IAAS9rF,OAAOq4D,UAC5CwzB,EAAgBC,GAarB,GAA4B,SAAmC77E,EAAMs2B,GACvE,IAAIwlD,OAAY,EACZC,OAAa,EAejB,OAbI/7E,EAAKjoB,WAAWsJ,YAAc2e,EAAKjoB,WAAWsJ,WAAWE,QAC3Du6F,EAAY97E,EAAKjoB,WAAWsJ,WAAWE,OAGzCu6F,EAAYA,GAAa,IAAS/rF,OAAOq4D,UAErC9xB,EAAMv+C,WAAWsJ,YAAci1C,EAAMv+C,WAAWsJ,WAAWE,QAC7Dw6F,EAAazlD,EAAMv+C,WAAWsJ,WAAWE,OAG3Cw6F,EAAaA,GAAc,IAAShsF,OAAOq4D,UAGvC0zB,IAAcC,GAAc/7E,EAAKjoB,WAAW0J,WAAa60C,EAAMv+C,WAAW0J,UACrEue,EAAKjoB,WAAW0J,UAAY60C,EAAMv+C,WAAW0J,UAG/Cq6F,EAAYC,GAqBjB,GAAiB,SAAwBxtF,EAAQytF,EAAiBC,EAAaC,EAAcC,GAE/F,IAAIC,EAAqB7tF,EAAO7J,UAAUnpB,KAAI,SAAUkpB,GACtD,IAAIlD,OAAQ,EACRC,OAAS,EACT4K,OAAY,EAKhB,OAJA7K,EAAQkD,EAAS1M,WAAWsJ,YAAcoD,EAAS1M,WAAWsJ,WAAWE,MACzEC,EAASiD,EAAS1M,WAAWsJ,YAAcoD,EAAS1M,WAAWsJ,WAAWG,OAC1E4K,EAAY3H,EAAS1M,WAAW0J,UAChC2K,EAAYA,GAAa,IAAS2D,OAAOq4D,UAClC,CACLh8D,UAAWA,EACX7K,MAAOA,EACPC,OAAQA,EACRiD,SAAUA,MAGd+2F,GAAWY,GAAoB,SAAUp8E,EAAMs2B,GAC7C,OAAOt2B,EAAK5T,UAAYkqC,EAAMlqC,aAIhCgwF,EAAqBA,EAAmBlxF,QAAO,SAAUmxF,GACvD,OAAQh0B,GAASZ,eAAe40B,EAAI53F,aAItC,IAAI63F,EAAsBF,EAAmBlxF,QAAO,SAAUmxF,GAC5D,OAAOh0B,GAASX,UAAU20B,EAAI53F,aAG3B63F,EAAoB7qH,SAIvB6qH,EAAsBF,EAAmBlxF,QAAO,SAAUmxF,GACxD,OAAQh0B,GAAST,WAAWy0B,EAAI53F,cAMpC,IAAI83F,EAAwBD,EAAoBpxF,QAAO,SAAUmxF,GAC/D,OAAOA,EAAIjwF,UAAYisF,GAAOK,mBAAqBsD,KAEjDQ,EAA+BD,EAAsBA,EAAsB9qH,OAAS,GAGpFgrH,EAAmBF,EAAsBrxF,QAAO,SAAUmxF,GAC5D,OAAOA,EAAIjwF,YAAcowF,EAA6BpwF,aACrD,GAEH,IAAyC,IAArC+vF,EAA4C,CAC9C,IAAIO,EAAaD,GAAoBH,EAAoB,IAAMF,EAAmB,GAElF,OAAOM,EAAaA,EAAWj4F,SAAW,KAI5C,IAAIk4F,EAAiBJ,EAAsBrxF,QAAO,SAAUmxF,GAC1D,OAAOA,EAAI96F,OAAS86F,EAAI76F,UAG1Bg6F,GAAWmB,GAAgB,SAAU38E,EAAMs2B,GACzC,OAAOt2B,EAAKze,MAAQ+0C,EAAM/0C,SAG5B,IAAIq7F,EAAwBD,EAAezxF,QAAO,SAAUmxF,GAC1D,OAAOA,EAAI96F,QAAU06F,GAAeI,EAAI76F,SAAW06F,KAErDM,EAA+BI,EAAsBA,EAAsBnrH,OAAS,GAEpF,IAAIorH,EAAoBD,EAAsB1xF,QAAO,SAAUmxF,GAC7D,OAAOA,EAAIjwF,YAAcowF,EAA6BpwF,aACrD,GACC0wF,OAAwB,EACxBC,OAA4B,EAC5BC,OAAuB,EAGtBH,IACHC,EAAwBH,EAAezxF,QAAO,SAAUmxF,GACtD,OAAOA,EAAI96F,MAAQ06F,GAAeI,EAAI76F,OAAS06F,KAGjDa,EAA4BD,EAAsB5xF,QAAO,SAAUmxF,GACjE,OAAOA,EAAI96F,QAAUu7F,EAAsB,GAAGv7F,OAAS86F,EAAI76F,SAAWs7F,EAAsB,GAAGt7F,UAIjGg7F,EAA+BO,EAA0BA,EAA0BtrH,OAAS,GAC5FurH,EAAuBD,EAA0B7xF,QAAO,SAAUmxF,GAChE,OAAOA,EAAIjwF,YAAcowF,EAA6BpwF,aACrD,IAIL,IAAI6wF,EAAYD,GAAwBH,GAAqBJ,GAAoBH,EAAoB,IAAMF,EAAmB,GAC9H,OAAOa,EAAYA,EAAUx4F,SAAW,MAetC,GAAwB,WAC1B,IAAIy4F,EAAazjH,KAAK0jH,qBAAsB,IAASC,kBAAwB,EAC7E,OAAO,GAAe3jH,KAAKirB,UAAU6J,OAAQ90B,KAAK4jH,gBAAiBx8F,SAAS,GAAqBpnB,KAAKslD,MAAMl9C,KAAM,SAAU,IAAMq7G,EAAYr8F,SAAS,GAAqBpnB,KAAKslD,MAAMl9C,KAAM,UAAW,IAAMq7G,EAAYzjH,KAAK0iH,mCAgC7NmB,GAAkC,SAAyCp+D,GAC7E,IAAI3wB,EAAS2wB,EAAS3wB,OAClBuxB,EAAcZ,EAASY,YACvB1zB,EAAY8yB,EAAS9yB,UACrBmxF,EAAcr+D,EAASx+B,SACvBsnE,EAAkB9oC,EAAS8oC,gBAC3B4F,EAAoB1uC,EAAS0uC,kBAC7B1qE,EAAkBg8B,EAASh8B,gBAC3Bs6F,EAAiBt+D,EAASs+D,eAG1BC,EAAsBlvF,EAAO7J,UAAUwG,QAAO,SAAUzG,GAC1D,OAAQ4jE,GAASZ,eAAehjE,MAI9Bi5F,EAAmBD,EAAoBvyF,OAAOm9D,GAASX,WAEtDg2B,EAAiBjsH,SAIpBisH,EAAmBD,EAAoBvyF,QAAO,SAAUzG,GACtD,OAAQ4jE,GAAST,WAAWnjE,OAIhC,IAAIk5F,EAAqBD,EAAiBxyF,OAAOm9D,GAASxtE,aAAaxV,KAAK,KAAM,cAC9Eu4G,EAAuBD,EAAmBpiH,KAAI,SAAUkpB,GAC1D,IAAI89E,EAAYib,EAAeK,aAAap5F,EAAU84F,EAAar6F,EAAiB48B,GAGhFg+D,EAAcvb,EAAY,EAAI,EAC9Bwb,EAAsB11B,GAASN,2BAA2BC,EAAiB57D,EAAW3H,GACtFu5F,EAAoBD,EAAsBD,EAAclwB,EAC5D,MAAO,CACLnpE,SAAUA,EACVu5F,kBAAmBA,MAGnBC,EAAyBL,EAAqB1yF,QAAO,SAAUgzF,GACjE,OAAOA,EAASF,mBAAqB,KAOvC,OAJAxC,GAAWyC,GAAwB,SAAU94G,EAAGmG,GAC9C,OAAO,GAAyBA,EAAEmZ,SAAUtf,EAAEsf,aAG5Cw5F,EAAuBxsH,OAClBwsH,EAAuB,IAGhCzC,GAAWoC,GAAsB,SAAUz4G,EAAGmG,GAC5C,OAAOnG,EAAE64G,kBAAoB1yG,EAAE0yG,qBAE1BJ,EAAqB,IAAM,OAehCO,GAAyC,WAG3C,IAAIz5F,EAAYjrB,KAAKirB,UAAU6J,OAAO7J,UAAUwG,OAAOm9D,GAASX,WAEhE8zB,GAAW92F,GAAW,SAAUvf,EAAGmG,GACjC,OAAO,GAAyBnG,EAAGmG,MAOrC,IAAI8yG,EAAqB15F,EAAUwG,QAAO,SAAUzG,GAClD,OAAOsoF,GAAYtoF,EAAS1M,WAAWsU,QAAQigF,cAEjD,OAAO8R,EAAmB,IAAM,MAY9BC,GAAiC,SAAwCC,EAAkB/oE,EAAM44C,GACnG,IAAK,IAAIjyF,KAAWiyF,EAClB,IAAKmwB,EAAiBpiH,GAAU,CAC9Bq5C,EAAK17C,QAAQ,CACXT,KAAM,QACNsK,KAAM,YAER,IAAIlG,EAAQ+3C,EAAKI,aAAakE,aAAa39C,GAMzCoiH,EAAiBpiH,GAJfsB,GAQ0B+3C,EAAKO,mBAAmB,CAClDkF,KAAM,WACNhgD,GAAIkB,EACJ2wB,MAAO3wB,IACN,GAAOsB,QAMd+gH,GAAiB,SAAwBv8F,GAC3C,IAAIs8F,EAAmBt8F,EAAKs8F,iBACxBxvB,EAAe9sE,EAAK8sE,aACpBK,EAAkBntE,EAAKmtE,gBAE3B,GAAKL,EAAL,CAIA,IAAIE,EAAM9+F,OAAO++F,eAAiB/+F,OAAOuV,OACzCqpF,EAAap+F,SAAQ,SAAUw+F,GAC7B,IAAI1xF,EAAQ0xF,EAAQjgF,OAChB9U,EAAY+0F,EAAQ/0F,UACpBk7C,EAAU65C,EAAQ75C,QAEjBipE,EAAiB9gH,KAItBrD,GAAag1F,EACb95C,GAAW85C,EACXmvB,EAAiB9gH,GAAOu4C,OAAO,IAAIi5C,EAAI70F,EAAWk7C,EAAS65C,EAAQriF,aASnE2xG,GAAqB,IAYrBC,GAAoB,SAA2Bh6F,EAAUwpE,EAAaywB,GACxE,IAAKj6F,IAAawpE,EAChB,OAAO,EAGT,IAAI3qE,EAAWmB,EAASnB,SAGpBq7F,EAAsBD,IAAiBp7F,EAAS7xB,OAIpD,OAAOgzB,EAASb,SAAsC,SAA3BqqE,EAAYt7F,YAAyBgsH,GAG9DC,GAAS,SAAgB7mH,GAC3B,MAAsB,kBAARA,GAAoBiE,SAASjE,IAGzC8mH,GAAqB,SAA4BC,EAAYC,EAAeC,GAG9E,MAAmB,SAAfF,GAA0BC,GAAkBC,EAI3CA,EAAgBC,eAAkBD,EAAgBE,cAInDH,EAAcG,gBAAkBF,EAAgBE,cAC3C,6LAGJH,EAAcG,eAAiBF,EAAgBE,cAC3C,kMAGF,KAXE,4CAJA,MAgCPC,GAAyB,SAAgCC,EAAat/D,EAAan6B,GAMrF,IAAI05F,EAAWv/D,EAAc,GAEzBs/D,EAAY3tH,SAGd4tH,EAAWpmH,KAAKywB,IAAI21F,EAAUD,EAAYlnH,MAAM,KAKlD,IAAIonH,EAAcx/D,EAAcn6B,EAChC,OAAO1sB,KAAK8C,IAAIujH,EAAaD,IAG3BE,GAAoB,SAA2B3uF,GACjD,IAAI4uF,EAAuB5uF,EAAYvO,QACnCnqB,EAAQsnH,EAAqBtnH,MAC7BC,EAAMqnH,EAAqBrnH,IAC3BsnH,EAAwB7uF,EAAYnM,SACpCi7F,EAAMD,EAAsB37F,cAC5B9oB,EAAKykH,EAAsBzkH,GAC3B2kH,EAAyBF,EAAsBn8F,SAC/CA,OAAsCvwB,IAA3B4sH,EAAuC,GAAKA,EACvD/uH,EAAQggC,EAAY02D,WACpBnhE,EAAWyK,EAAYzK,SAC3B,MAAO,CAAC,cAAgBv1B,EAAQ,SAAW8uH,EAAM,MAAQA,EAAMp8F,EAAS7xB,QAAU,oBAAsBuJ,EAAK,IAAK,IAAM9C,EAAQ,OAASC,EAAM,kBAAoBguB,EAAW,KAAK9tB,KAAK,MAWtL,GAAgB,SAAU03G,GAG5B,SAAS6P,EAAc1gE,GACrB,GAAezlD,KAAMmmH,GAErB,IAAIrgG,EAAQ,GAA0B9lB,MAAOmmH,EAAcjpH,WAAaH,OAAOiT,eAAem2G,IAAgBpmH,KAAKC,OAEnH,IAAKylD,EACH,MAAM,IAAInpB,UAAU,wCAGtB,GAAoC,oBAAzBmpB,EAASY,YAClB,MAAM,IAAI/pB,UAAU,mCAGtB,IAAKmpB,EAAS+uC,YACZ,MAAM,IAAIl4D,UAAU,4BAoFtB,OAhFAxW,EAAM6M,UAAY8yB,EAAS9yB,UAC3B7M,EAAMsgG,WAAa,CACjB/+C,KAAM,EACNjlD,MAAO,GAET0D,EAAMugG,UAAY7hG,IAElBsB,EAAMwgG,cAENxgG,EAAM+nE,WAAa,KAEnB/nE,EAAMygG,WAAa9gE,EAAS+gE,UAC5B1gG,EAAMo4C,aAAezY,EAASY,YAC9BvgC,EAAM2gG,UAAYhhE,EAASqJ,SAC3BhpC,EAAM4gG,SAAWjhE,EAASo0B,QAC1B/zD,EAAMyjC,UAAY9D,EAASx+B,SAC3BnB,EAAM8vE,aAAenwC,EAAS+uC,YAC9B1uE,EAAMulE,KAAO5lC,EAASwlC,IACtBnlE,EAAM6gG,YAAclhE,EAAS4/D,WAC7Bv/F,EAAM8gG,oBAAiB,EACvB9gG,EAAM+gG,sBAAwBphE,EAASqhE,qBACvChhG,EAAMihG,kBAAoBthE,EAASuhE,iBACnClhG,EAAMmhG,YAAcxhE,EAASyhE,WAC7BphG,EAAM2uE,kBAAoBhvC,EAASo/D,iBACnC/+F,EAAMqhG,OAAS,OAEfrhG,EAAMshG,oBAAsB,KAC5BthG,EAAMmkC,YAAS,EACfnkC,EAAMuhG,kBAAoB,EAC1BvhG,EAAMwhG,gBAAkB,KACxBxhG,EAAMi4F,UAAY,KAClBj4F,EAAMyhG,eAAiB,KACvBzhG,EAAM0hG,YAAc,KAEpB1hG,EAAM2hG,qBAAuB,KAC7B3hG,EAAM4hG,cAAgB,GAEtB5hG,EAAM6hG,qBAAuBliE,EAASmiE,oBACtC9hG,EAAM+hG,UAAY,GAEQ,SAAtB/hG,EAAM6gG,YACR7gG,EAAMgiG,eAAiB,IAAI,KAE3BhiG,EAAMgiG,eAAiB,KAGzBhiG,EAAMiiG,WAAatiE,EAASg7D,UAI5B36F,EAAMkiG,gBAAkBviE,EAASs+D,eACjCj+F,EAAMmiG,WAAa,CACjBhD,aAAc,EACd10F,KAAM,GAGRzK,EAAMoiG,uBAAyB,WAC7B,OAAOpiG,EAAM1lB,QAAQ,mBAGvB0lB,EAAMkiG,gBAAgB54G,GAAG,iBAAkB0W,EAAMoiG,wBAEjDpiG,EAAM8vE,aAAavsD,iBAAiB,cAAc,WAChD,OAAOvjB,EAAMqiG,QAAS,KAIxBriG,EAAMsiG,gBAAiB,EACvBtiG,EAAMk4F,QAAUP,GAAO,iBAAmB33F,EAAM6gG,YAAc,KAC9D5pH,OAAO6lB,eAAekD,EAAO,QAAS,CACpChD,IAAK,WACH,OAAO9iB,KAAKmnH,QAEdnkG,IAAK,SAAgBqlG,GACfA,IAAaroH,KAAKmnH,SACpBnnH,KAAKg+G,QAAQh+G,KAAKmnH,OAAS,OAASkB,GACpCroH,KAAKmnH,OAASkB,MAIbviG,EAswCT,OA12CA,GAASqgG,EAAe7P,GA6GxB,GAAY6P,EAAe,CAAC,CAC1B9uH,IAAK,cACLG,MAAO,WACLwI,KAAKsoH,sBAAwB,EAC7BtoH,KAAKuoH,cAAgB,EACrBvoH,KAAKwoH,qBAAuB,EAC5BxoH,KAAKyoH,sBAAwB,EAC7BzoH,KAAK0oH,qBAAuB,EAC5B1oH,KAAK2oH,sBAAwB,EAC7B3oH,KAAK4oH,mBAAqB,IAM3B,CACDvxH,IAAK,UACLG,MAAO,WACLwI,KAAKI,QAAQ,WACbJ,KAAK2vC,MAAQ,WACb3vC,KAAK09C,QACL19C,KAAK6oH,SAED7oH,KAAKunH,gBACPvnH,KAAKunH,eAAe93G,UAGtBzP,KAAKsmH,cAEDtmH,KAAK8nH,gBACP9nH,KAAK8nH,eAAetnH,QAGlBR,KAAKonH,qBACP,IAASrtH,aAAaiG,KAAKonH,qBAGzBpnH,KAAKgoH,iBAAmBhoH,KAAKkoH,wBAC/BloH,KAAKgoH,gBAAgB14G,IAAI,iBAAkBtP,KAAKkoH,wBAGlDloH,KAAKsP,QAON,CACDjY,IAAK,QACLG,MAAO,WACc,YAAfwI,KAAK2vC,OAQT3vC,KAAK6oH,SAKL7oH,KAAK2vC,MAAQ,QAGR3vC,KAAKw9C,UACRx9C,KAAK8oH,kBAhBD9oH,KAAKsnH,kBACPtnH,KAAKsnH,gBAAkB,QAwB5B,CACDjwH,IAAK,SACLG,MAAO,WACDwI,KAAKsnH,iBACPtnH,KAAKsnH,gBAAgByB,gBAIvB/oH,KAAKsnH,gBAAkB,OASxB,CACDjwH,IAAK,QACLG,MAAO,SAAewxH,GAMpB,MALsB,qBAAXA,IACThpH,KAAKiqD,OAAS++D,GAGhBhpH,KAAKsnH,gBAAkB,KAChBtnH,KAAKiqD,SAEb,CACD5yD,IAAK,cACLG,MAAO,WACLwI,KAAKmoH,QAAS,EACdnoH,KAAK09C,QACL19C,KAAKI,QAAQ,WASd,CACD/I,IAAK,YACLG,MAAO,WACL,OAAKwI,KAAKunH,eAIHvnH,KAAKunH,eAAejtE,WAHlB8sC,GAAUhtC,qBAgBpB,CACD/iD,IAAK,cACLG,MAAO,SAAqBsK,GAC1B,IAAImnH,EAASr/G,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,IAAmBA,UAAU,GAE5E,IAAK9H,EACH,OAAO,KAGT,IAAIP,EAAKgvF,GAAczuF,GACnBonH,EAAYlpH,KAAK0nH,cAAcnmH,GAYnC,OAVI0nH,IAAWC,GAAapnH,EAAIo/B,QAC9BlhC,KAAK0nH,cAAcnmH,GAAM2nH,EAAY,CACnC76F,YAAavsB,EAAIusB,YACjB1G,UAAW7lB,EAAI6lB,UACfuZ,MAAOp/B,EAAIo/B,MACX1+B,WAAYV,EAAIU,WAChBS,cAAenB,EAAImB,gBAIhBimH,GAAapnH,IAarB,CACDzK,IAAK,aACLG,MAAO,SAAoBH,GACzB,IAAI4xH,EAASr/G,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,IAAmBA,UAAU,GAE5E,IAAKvS,EACH,OAAO,KAGT,IAAIkK,EAAKivF,GAAan5F,GAClB8xH,EAAYnpH,KAAK6nH,UAAUtmH,GAG3BvB,KAAK2nH,sBAAwBsB,IAAWE,GAAa9xH,EAAI6pC,QAC3DlhC,KAAK6nH,UAAUtmH,GAAM4nH,EAAY,CAC/B96F,YAAah3B,EAAIg3B,YACjB6S,MAAO7pC,EAAI6pC,QAIf,IAAIpqC,EAAS,CACXu3B,aAAc86F,GAAa9xH,GAAKg3B,aAOlC,OAJI86F,IACFryH,EAAOoqC,MAAQioF,EAAUjoF,OAGpBpqC,IASR,CACDO,IAAK,qBACLG,MAAO,WACL,OAAOwI,KAAKopH,YAGZppH,KAAKunH,gBAAkBvnH,KAAK+9G,WAA4B,SAAf/9G,KAAK2vC,SAAsB3vC,KAAKw9C,WAM1E,CACDnmD,IAAK,OACLG,MAAO,WAKL,GAHAwI,KAAK8oH,iBAGA9oH,KAAKopH,UAAV,CAOA,GAFAppH,KAAKgoH,gBAAgBqB,mBAAmBrpH,KAAKopH,WAE1B,SAAfppH,KAAK2vC,OAAoB3vC,KAAKspH,qBAChC,OAAOtpH,KAAKupH,SAKTvpH,KAAKspH,sBAAuC,UAAftpH,KAAK2vC,OAAoC,SAAf3vC,KAAK2vC,QAIjE3vC,KAAK2vC,MAAQ,YAUd,CACDt4C,IAAK,QACLG,MAAO,WAIL,OAHAwI,KAAK2vC,MAAQ,QACb3vC,KAAKunH,eAAiB,IAAI7J,GAAc19G,KAAK41F,aAAc51F,KAAK+9G,UAAW/9G,KAAK2mH,YAAa3mH,KAAKwpH,sBAClGxpH,KAAKypH,kBACEzpH,KAAK8oH,mBAQb,CACDzxH,IAAK,WACLG,MAAO,SAAkBkyH,GACvB,IAAIpxH,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAElF,GAAK8/G,EAAL,CAIA,IAAIC,EAAc3pH,KAAKopH,UACnBjyF,EAAcn3B,KAAKsnH,gBACvBtnH,KAAKopH,UAAYM,EACjB1pH,KAAKwnH,YAAclvH,EAQA,SAAf0H,KAAK2vC,QACP+5E,EAAYE,SAAW,CACrBv/F,cAAeq/F,EAAYr/F,cAC3BkG,KAAM,IAIV,IAAIs5F,EAAQ,KAgBZ,GAdIF,IACEA,EAAYpoH,GACdsoH,EAAQF,EAAYpoH,GACXooH,EAAYtxH,MACrBwxH,EAAQF,EAAYtxH,MAIxB2H,KAAKg+G,QAAQ,oBAAsB6L,EAAQ,QAAUH,EAAYnoH,IAAMmoH,EAAYrxH,KAAO,KAG1F2H,KAAKI,QAAQ,kBAGM,SAAfJ,KAAK2vC,OAAoB3vC,KAAKspH,qBAChC,OAAOtpH,KAAKupH,QAGd,GAAKI,GAAeA,EAAYtxH,MAAQqxH,EAAYrxH,IAApD,CAaA,IAAIyxH,EAAoBJ,EAAYr/F,cAAgBs/F,EAAYt/F,cAChErqB,KAAKg+G,QAAQ,sBAAwB8L,EAAoB,KAIjC,OAApB9pH,KAAK6tF,aACP7tF,KAAK6tF,YAAci8B,GAMjB3yF,IACFA,EAAY02D,YAAci8B,EAItB3yF,EAAY02D,YAAc,IAC5B12D,EAAYvO,QAAU8gG,EAAY7/F,SAASsN,EAAY02D,cAI3D7tF,KAAKgoH,gBAAgB+B,uBAAuBJ,EAAaD,QAlC/B,OAApB1pH,KAAK6tF,YAGP7tF,KAAKgqH,kBAwCV,CACD3yH,IAAK,QACLG,MAAO,WACDwI,KAAKonH,sBACP,IAASrtH,aAAaiG,KAAKonH,qBAC3BpnH,KAAKonH,oBAAsB,QAS9B,CACD/vH,IAAK,SACLG,MAAO,WACL,OAAoC,OAA7BwI,KAAKonH,sBAWb,CACD/vH,IAAK,WACLG,MAAO,SAAkByyH,EAAWtM,GAC9B39G,KAAK+9G,YAIT/9G,KAAK+9G,UAAYkM,EACjBjqH,KAAKwpH,qBAAuB7L,EAGT,SAAf39G,KAAK2vC,OAAoB3vC,KAAKspH,sBAChCtpH,KAAKupH,WASR,CACDlyH,IAAK,kBACLG,MAAO,SAAyBqpC,GAC9B7gC,KAAKmoH,QAAS,EACdnoH,KAAKkqH,cAILlqH,KAAK2b,OAAO,EAAGtZ,IAAUw+B,GAErB7gC,KAAK8nH,gBACP9nH,KAAK8nH,eAAeqC,mBAGtBnqH,KAAKI,QAAQ,qBASd,CACD/I,IAAK,cACLG,MAAO,WACLwI,KAAKooH,gBAAiB,EACtBpoH,KAAKgqH,iBAON,CACD3yH,IAAK,eACLG,MAAO,WACLwI,KAAK6tF,WAAa,KAClB7tF,KAAKioH,WAAa,KAClBjoH,KAAKpE,UAUN,CACDvE,IAAK,SACLG,MAAO,SAAgBiH,EAAOC,EAAKmiC,GAcjC,GAVIniC,IAAQ2D,MACV3D,EAAMsB,KAAKupD,aAGTvpD,KAAKunH,gBACPvnH,KAAKunH,eAAe5rG,OAAOld,EAAOC,EAAKmiC,GAGzCi0D,GAAoBr2F,EAAOC,EAAKsB,KAAK6mH,uBAEjC7mH,KAAKy0F,kBACP,IAAK,IAAIlzF,KAAMvB,KAAKy0F,kBAClBK,GAAoBr2F,EAAOC,EAAKsB,KAAKy0F,kBAAkBlzF,MAU5D,CACDlK,IAAK,iBACLG,MAAO,WACDwI,KAAKonH,qBACP,IAASrtH,aAAaiG,KAAKonH,qBAG7BpnH,KAAKonH,oBAAsB,IAASjuH,WAAW6G,KAAKoqH,mBAAmBx+G,KAAK5L,MAAO,KASpF,CACD3I,IAAK,qBACLG,MAAO,WACc,UAAfwI,KAAK2vC,OACP3vC,KAAKqqH,cAGHrqH,KAAKonH,qBACP,IAASrtH,aAAaiG,KAAKonH,qBAG7BpnH,KAAKonH,oBAAsB,IAASjuH,WAAW6G,KAAKoqH,mBAAmBx+G,KAAK5L,MAAO+kH,MAYpF,CACD1tH,IAAK,cACLG,MAAO,WACL,IAAIwI,KAAKunH,eAAepR,WAAxB,CAIKn2G,KAAKioH,aACRjoH,KAAKioH,WAAajoH,KAAKgoH,gBAAgB5D,aAAapkH,KAAKopH,UAAWppH,KAAKupD,YAAavpD,KAAKqnH,iBAAkBrnH,KAAKk+D,iBAIpH,IAAI/mC,EAAcn3B,KAAKsqH,aAAatqH,KAAKuqH,YAAavqH,KAAKopH,UAAWppH,KAAK6tF,WAAY7tF,KAAKumH,aAAcvmH,KAAKk+D,eAAgBl+D,KAAKioH,YAE/H9wF,IAIDn3B,KAAKwqH,eAAerzF,EAAY02D,YAClC7tF,KAAKyqH,eAIHtzF,EAAY02D,aAAe7tF,KAAKopH,UAAUv/F,SAAS7xB,OAAS,GAAsC,UAAjCgI,KAAK41F,aAAa18F,YAA2B8G,KAAK0mH,cAcnHvvF,EAAYzK,WAAa1sB,KAAKqnH,mBAChCrnH,KAAKgoH,gBAAgBxnH,QACrB22B,EAAYu+D,gBAAkBv+D,EAAYk6D,eAEtCrxF,KAAK8nH,gBACP9nH,KAAK8nH,eAAeqC,oBAIxBnqH,KAAK0qH,aAAavzF,QAUnB,CACD9/B,IAAK,iBACLG,MAAO,SAAwBq2F,GAC7B,IAAI7iE,EAAWphB,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK5J,KAAKopH,UACxF,OAAOpE,GAAkBh6F,EAAUhrB,KAAK41F,aAAc/H,KAAgB7tF,KAAKunH,eAAepR,aAe3F,CACD9+G,IAAK,eACLG,MAAO,SAAsB8iD,EAAUtvB,EAAU6iE,EAAY24B,EAAWngE,EAAayiD,GACnF,IAAI6hB,EAAkB,EAClBt5B,OAAiB,EAEjB/2C,EAAStiD,SACX2yH,EAAkBrwE,EAAS57C,IAAI47C,EAAStiD,OAAS,IAGnD,IAAI4yH,EAAeprH,KAAKywB,IAAI,EAAG06F,EAAkBtkE,GAEjD,IAAKr7B,EAASnB,SAAS7xB,OACrB,OAAO,KAKT,GAAI4yH,GAAgB5qH,KAAK+mH,oBACvB,OAAO,KAKT,IAAKP,GAAaoE,GAAgB,EAChC,OAAO,KAOT,GAAkB,OAAd9hB,EAEF,OADAjb,EAAa7tF,KAAK6qH,yBAAyB7/F,GACpChrB,KAAK8qH,qBAAqB9/F,EAAU6iE,EAAY,MAAM,GAI/D,GAAmB,OAAfA,EAAqB,CACT7iE,EAASnB,SAASgkE,GAEhC,OADAwD,EAAiBs5B,EACV3qH,KAAK8qH,qBAAqB9/F,EAAU6iE,EAAa,EAAGwD,GAAgB,GAM7E,GAAIrxF,KAAKooH,eAAgB,CAEvB,IAAI2C,EAAkBn8B,GAASjB,oBAAoB3iE,EAAU2/F,EAAiB7hB,EAAUmc,aAAcnc,EAAUv4E,MAChHs9D,EAAak9B,EAAgBl9B,WAC7BwD,EAAiB05B,EAAgBrqH,cAC5B,CAEL,IAAIsqH,EAAmBp8B,GAASjB,oBAAoB3iE,EAAUq7B,EAAayiD,EAAUmc,aAAcnc,EAAUv4E,MAE7Gs9D,EAAam9B,EAAiBn9B,WAC9BwD,EAAiB25B,EAAiBtqH,UAGpC,OAAOV,KAAK8qH,qBAAqB9/F,EAAU6iE,EAAYwD,GAAgB,KAYxE,CACDh6F,IAAK,2BACLG,MAAO,SAAkCwzB,GACvC,IAAItE,EAAS1mB,KAEb,IAA+B,IAA3BA,KAAKqnH,iBACP,OAAO,EAGT,IAAI4D,EAAoBjgG,EAASnB,SAAS/nB,KAAI,SAAUwhB,EAAGvrB,GACzD,MAAO,CACL20B,SAAUpJ,EAAEoJ,SACZu4F,aAAcltH,MAEf05B,QAAO,SAAUnO,GAClB,OAAOA,EAAEoJ,WAAahG,EAAO2gG,oBAG/B,OAAI4D,EAAkBjzH,OACbizH,EAAkBzrH,KAAK8C,IAAI2oH,EAAkBjzH,OAAS,EAAG,IAAIitH,aAG/DzlH,KAAKywB,IAAIjF,EAASnB,SAAS7xB,OAAS,EAAG,KAE/C,CACDX,IAAK,uBACLG,MAAO,SAA8BwzB,EAAU6iE,EAAYwD,EAAgB65B,GACzE,GAAIr9B,EAAa,GAAKA,GAAc7iE,EAASnB,SAAS7xB,OACpD,OAAO,KAGT,IAAI4wB,EAAUoC,EAASnB,SAASgkE,GAChC,MAAO,CACL8yB,UAAW,kBAAoBnhH,KAAK2rH,SAEpC9yH,IAAKuwB,EAAQyF,YAEbw/D,WAAYA,EAGZq9B,cAAeA,EACf75B,eAAgBA,EAEhBrmE,SAAUA,EAEVkW,MAAO,KAEPo/E,eAAgB,KAGhB5qB,gBAAiB,KAEjBhpE,SAAU9D,EAAQ8D,SAElBzF,SAAU2B,EAAQ3B,SAElB2B,QAASA,KAcZ,CACDvxB,IAAK,qBACLG,MAAO,SAA4BsoH,GACjC,GAAI9/G,KAAKqrF,KAAK/lC,MAAM9H,WAGnBx9C,KAAKwnH,YAAY7rH,UACjBqE,KAAKopH,UAAU9qG,WAAW0J,UACzB,OAAO,EAMT,GAAInjB,KAAK6qB,OAASowF,EAAMoB,sBAAwBr8G,KAAK6qB,OAAS,IAC5D,OAAO,EAGT,IAAI22B,EAAcrmD,KAAKk+D,eACnBktD,EAAoBtL,EAAMntF,UAC1B47D,EAAkBvuF,KAAKsnH,gBAAgBrgG,SACvCokG,EAAuBz8B,GAASN,2BAA2BC,EAAiB68B,EAAmBprH,KAAKopH,UAAWtJ,EAAMtxB,eAIrH88B,EAAuBn3B,GAAkBn0F,KAAKuqH,YAAalkE,EAAarmD,KAAKqrF,KAAK/lC,MAAMgiB,gBAAkB,EAG9G,GAAI+jD,GAAwBC,EAC1B,OAAO,EAGT,IAAIC,EAAkB1H,GAAgC,CACpD/uF,OAAQ90B,KAAKqrF,KAAKpgE,UAAU6J,OAC5BuxB,YAAaA,EACb1zB,UAAWy4F,EACXnkG,SAAUjnB,KAAKupD,YACfglC,gBAAiBA,EACjB4F,kBAAmBm3B,EACnB7hG,gBAAiBzpB,KAAKqnH,iBACtBtD,eAAgB/jH,KAAKgoH,kBAGvB,GAAKuD,EAAL,CAIA,IAAIhH,EAAoB8G,EAAuBC,EAC3CE,EAAuBjH,EAAoBgH,EAAgBhH,kBAC3DkH,EAAoB,GAQxB,OAJIH,GAAwB73B,KAC1Bg4B,EAAoB,IAGjBF,EAAgBvgG,UAAYugG,EAAgBvgG,SAAS3yB,MAAQ2H,KAAKopH,UAAU/wH,KAAOmzH,EAAuBC,GACtG,GAMTzrH,KAAK2yB,UAAY44F,EAAgBvgG,SAAS1M,WAAW0J,UAAY42F,GAAOK,mBAAqB,EAC7Fj/G,KAAKpE,QACLoE,KAAKI,QAAQ,eACN,MAYR,CACD/I,IAAK,kBACLG,MAAO,SAAyBgZ,EAAOk7G,GAChC1rH,KAAKsnH,iBAAmBoE,EAAc/K,YAAc3gH,KAAKsnH,gBAAgB3G,YAAa3gH,KAAK2rH,mBAAmBD,EAAc5L,QAIjI9/G,KAAKI,QAAQ,cAQd,CACD/I,IAAK,eACLG,MAAO,SAAsB2/B,GAC3Bn3B,KAAK2vC,MAAQ,UACb3vC,KAAKsnH,gBAAkBnwF,EACvBn3B,KAAK4rH,gBAAgBz0F,GACrBA,EAAY4xF,cAAgB5H,GAAoBnhH,KAAKqrF,KAAKpyF,IAAK+G,KAAKwnH,YAAaxnH,KAAK+nH,WAAY/nH,KAAK8nH,eAAgB9nH,KAAK6rH,4BAA4B10F,GACxJn3B,KAAK8rH,gBAAgBlgH,KAAK5L,MAAOA,KAAK+rH,wBAAwBngH,KAAK5L,SAWpE,CACD3I,IAAK,kBACLG,MAAO,SAAyB2/B,GAC9B,IAAI60F,EAAetG,GAAuB1lH,KAAKymH,YAAazmH,KAAKk+D,eAAgBl+D,KAAKopH,UAAUl9F,gBAAkB,IAM9G8/F,EAAe,GACjBhsH,KAAK2b,OAAO,EAAGqwG,KAalB,CACD30H,IAAK,8BACLG,MAAO,SAAqC2/B,GAC1C,IAAIvO,EAAUuO,EAAYvO,QACtB8iG,EAAgB,CAClBr9F,YAAazF,EAAQyF,YACrB1G,UAAWiB,EAAQjB,UACnBg5F,UAAWxpF,EAAYwpF,WAGzB,GAAI/3F,EAAQvxB,IAAK,CAGf,IAAI0zB,EAAKnC,EAAQvxB,IAAI0zB,IAAM,IAAI3C,YAAY,CAAC,EAAG,EAAG,EAAG+O,EAAY02D,WAAa12D,EAAYnM,SAASX,gBACnGqhG,EAAcr0H,IAAM2I,KAAKisH,WAAWrjG,EAAQvxB,KAC5Cq0H,EAAcr0H,IAAI0zB,GAAKA,EAOzB,OAJInC,EAAQ9mB,MACV4pH,EAAc5pH,IAAM9B,KAAKgxB,YAAYpI,EAAQ9mB,MAGxC4pH,IASR,CACDr0H,IAAK,0BACLG,MAAO,SAAiCkQ,EAAOgkH,GAW7C,GARA1rH,KAAKuoH,eAAiB,EAElBmD,EAAc5L,QAChB9/G,KAAKsoH,uBAAyBoD,EAAc5L,MAAMtxB,cAClDxuF,KAAK2oH,uBAAyB+C,EAAc5L,MAAMxwB,eAI/CtvF,KAAKsnH,iBASV,GAAIoE,EAAc/K,YAAc3gH,KAAKsnH,gBAAgB3G,UAArD,CAKA,GAAIj5G,EAMF,OALA1H,KAAKsnH,gBAAkB,KACvBtnH,KAAK2vC,MAAQ,QAITjoC,EAAM7L,OAASwjH,GAAeG,aAChCx/G,KAAKwoH,sBAAwB,IAI/BxoH,KAAK09C,QAIDh2C,EAAM7L,OAASwjH,GAAeE,SAChCv/G,KAAKyoH,uBAAyB,EAC9BzoH,KAAK2yB,UAAY,EACjB3yB,KAAKqmH,UAAY7hG,SACjBxkB,KAAKI,QAAQ,qBAMfJ,KAAK0oH,sBAAwB,EAC7B1oH,KAAK0H,MAAMA,QACX1H,KAAKI,QAAQ,WAMfJ,KAAK2yB,UAAY+4F,EAAc5L,MAAMntF,UACrC3yB,KAAKqmH,UAAYqF,EAAc5L,MAAMxwB,cAGjCo8B,EAAc5pH,MAChB4pH,EAAc5pH,IAAM9B,KAAKgxB,YAAY06F,EAAc5pH,KAAK,IAItD4pH,EAAcr0H,KAChB2I,KAAKisH,WAAWP,EAAcr0H,KAAK,GAGrC2I,KAAKksH,wBAAwBR,SA3D3B1rH,KAAKwoH,sBAAwB,IAoEhC,CACDnxH,IAAK,0BACLG,MAAO,SAAiCk0H,GACtC,IAAIv0F,EAAcn3B,KAAKsnH,gBACvBnwF,EAAY+J,MAAQwqF,EAAcxqF,MAE9BwqF,EAAc5pH,MAChBq1B,EAAYvO,QAAQ9mB,IAAIo/B,MAAQwqF,EAAc5pH,IAAIo/B,OAGpD/J,EAAY4pF,iBAAmB2K,EAAc3K,iBAEzC2K,EAAcnL,eAChBqE,GAA+B5kH,KAAKy0F,kBAAmBz0F,KAAKqrF,KAAK/lC,MAAOomE,EAAch3B,gBACtFowB,GAAe,CACbD,iBAAkB7kH,KAAKy0F,kBACvBY,aAAcq2B,EAAcnL,aAE5B7qB,gBAAiB,IAIf11F,KAAK8nH,gBACP9nH,KAAK8nH,eAAeqE,uBAIxBnsH,KAAKosH,mBAQN,CACD/0H,IAAK,iBACLG,MAAO,WACL,IAAIgxB,EAASxoB,KAEb,GAAKA,KAAKsnH,gBAAV,CAKA,IAAInwF,EAAcn3B,KAAKsnH,gBACnB1+F,EAAUuO,EAAYvO,QACtB+uF,EAAa33G,KAAKgoH,gBAAgBqE,iBAAiBl1F,GAIpB,qBAAxBn3B,KAAK4mH,gBAAkCjP,IAElDA,EAAW6N,eAAiB7N,EAAW8N,iBACrCzlH,KAAK4mH,eAAiB,CACpBpB,cAAe7N,EAAW6N,cAC1BC,cAAe9N,EAAW8N,gBAI9B,IAAI6G,EAA0BlH,GAAmBplH,KAAK2mH,YAAa3mH,KAAK4mH,eAAgBjP,GAExF,GAAI2U,EAMF,OALAtsH,KAAK0H,MAAM,CACT6R,QAAS+yG,EACTC,kBAAmBlqH,WAErBrC,KAAKI,QAAQ,SAIf,GAAI+2B,EAAY+zF,cAId,OAHAlrH,KAAKI,QAAQ,kBACbJ,KAAKsnH,gBAAkB,UACvBtnH,KAAK2vC,MAAQ,SAIf,GAAoC,OAAhCxY,EAAYu+D,iBAA4Bv+D,EAAYu+D,kBAAoB11F,KAAKunH,eAAe7xB,kBAAmB,CAIjH,GAAIiiB,GAAcA,EAAW6U,qBAAsB,CACjD,IAAIC,EAAe9U,EAAW6U,qBAAqB,GAAGE,QAClDC,EAAehV,EAAW6U,qBAAqB,GAAGI,QACtDz1F,EAAYu+D,iBAAmB+2B,EAAeE,EAGhD3sH,KAAKunH,eAAe7xB,gBAAgBv+D,EAAYu+D,iBAEhD11F,KAAKI,QAAQ,mBAGf,IAAIysH,EAAkB7sH,KAAKgoH,gBAAgB8E,mBAAmB31F,EAAYzK,UAY1E,GAVwB,OAApBmgG,GACF7sH,KAAKI,QAAQ,CACXT,KAAM,qBACN01G,QAASwX,IAIb7sH,KAAK2vC,MAAQ,YAGT/mB,EAAQ9mB,IAAK,CACf,IAAIirH,EAASx8B,GAAc3nE,EAAQ9mB,KAEnC,IAAK9B,KAAKynH,sBAAwBznH,KAAKynH,uBAAyBsF,EAAQ,CACtE,IAAI/7F,EAAchxB,KAAKgxB,YAAYpI,EAAQ9mB,KAC3C9B,KAAKunH,eAAe9O,aAAa,CAC/Bv3E,MAAOlQ,EAAYkQ,QAClB,WACD1Y,EAAOi/F,qBAAuBsF,MAKpC51F,EAAYh6B,WAAag6B,EAAY+J,MAAM/jC,WAEd,kBAAlByrB,EAAQnqB,OAA6C,kBAAhBmqB,EAAQlqB,IACtDsB,KAAK4oH,oBAAsBhgG,EAAQlqB,IAAMkqB,EAAQnqB,MAEjDuB,KAAK4oH,oBAAsBhgG,EAAQ3B,SAGrCjnB,KAAKg+G,QAAQ8H,GAAkB3uF,IAC/Bn3B,KAAKunH,eAAe9O,aAAa,CAC/Bv3E,MAAO/J,EAAY+J,MACnBw9E,+BAAgC1+G,KAAKgtH,8BAA8BphH,KAAK5L,KAAMm3B,EAAYwpF,YACzF3gH,KAAKitH,iBAAiBrhH,KAAK5L,YAzF5BA,KAAK2vC,MAAQ,UA2FhB,CACDt4C,IAAK,gCACLG,MAAO,SAAuCmpH,EAAWnwG,GACvD,GAAKxQ,KAAKsnH,iBAAmB3G,IAAc3gH,KAAKsnH,gBAAgB3G,UAAhE,CAIA,IAAI/3F,EAAU5oB,KAAKsnH,gBAAgB1+F,QAE9BA,EAAQsoE,kBACXtoE,EAAQsoE,gBAAkB,IAG5BtoE,EAAQsoE,gBAAgBD,2BAA6BzgF,EAAM8hG,uBAAuBlF,0BAA4B,EAC9GxkF,EAAQsoE,gBAAgBE,4BAA8B5gF,EAAM8hG,uBAAuB7zG,MAAMq5G,aACzFlvF,EAAQsoE,gBAAgBO,0BAA4BjhF,EAAM8hG,uBAAuB5zG,IAAIo5G,aAErFlvF,EAAQsoE,gBAAgBvuF,oBAAsB6N,EAAM8hG,uBAAuB3vG,uBAU5E,CACDtL,IAAK,mBACLG,MAAO,WACL,IAAKwI,KAAKsnH,gBAOR,OANAtnH,KAAK2vC,MAAQ,aAER3vC,KAAKw9C,UACRx9C,KAAK8oH,kBAMT,IAAI3xF,EAAcn3B,KAAKsnH,gBACnB1+F,EAAUuO,EAAYvO,QACtBskG,EAAuC,OAApBltH,KAAK6tF,WAC5B7tF,KAAKsnH,gBAAkB,KACvBtnH,KAAKmtH,kBAAkBh2F,GACvBn3B,KAAKotH,uBAAuBj2F,GAC5Bn3B,KAAK2vC,MAAQ,QACb3vC,KAAK6tF,WAAa12D,EAAY02D,WAC9B7tF,KAAKooH,gBAAiB,EACtBpoH,KAAKqnH,iBAAmBlwF,EAAYzK,SAKpC1sB,KAAKI,QAAQ,kBAKTwoB,EAAQlqB,KAAOsB,KAAKk+D,eAAiBt1C,EAAQlqB,IAA4C,EAAtCy4B,EAAYnM,SAASkB,eAC1ElsB,KAAKypH,mBAMHyD,GACFltH,KAAKI,QAAQ,mBAGfJ,KAAKI,QAAQ,YAITJ,KAAKwqH,eAAerzF,EAAY02D,WAAa,EAAG12D,EAAYnM,WAC9DhrB,KAAKyqH,cAGFzqH,KAAKw9C,UACRx9C,KAAK8oH,oBAaR,CACDzxH,IAAK,oBACLG,MAAO,SAA2B2/B,GAChC,IAAIkwC,EAAOrnE,KAAKomH,WAAW/+C,KAGvBgmD,EAAwBxoH,KAAK6qB,MAAQyH,EAAY4pF,iBAAmB,EAEpEuM,EAA8B9tH,KAAKolB,MAAMuS,EAAYh6B,WAAakwH,EAAwB,EAAI,KAGlGrtH,KAAKomH,WAAW/+C,OAASimD,EAA8BjmD,KAAUrnE,KAAKomH,WAAWhkG,QAYlF,CACD/qB,IAAK,yBACLG,MAAO,SAAgC2/B,GACrC,GAAKn3B,KAAK6mH,sBAAV,CAIA,IAAIj+F,EAAUuO,EAAYvO,QACtBnqB,EAAQmqB,EAAQnqB,MAChBC,EAAMkqB,EAAQlqB,IAElB,GAAKymH,GAAO1mH,IAAW0mH,GAAOzmH,GAA9B,CAIAo2F,GAAoBr2F,EAAOC,EAAKsB,KAAK6mH,uBACrC,IAAItxB,EAAM,IAASC,eAAiB,IAASxpF,OACzCxU,EAAQ,CACVm1B,OAAQ/D,EAAQ+D,OAChBzE,eAAgBU,EAAQV,eACxBD,eAAgBW,EAAQX,eACxB0K,UAAWwE,EAAYnM,SAAS1M,WAAW0J,UAC3CH,WAAYsP,EAAYnM,SAAS1M,WAAWsJ,WAC5CiL,OAAQsE,EAAYnM,SAAS1M,WAAWsU,OACxCz1B,WAAYg6B,EAAYh6B,WACxB9E,IAAK8+B,EAAY9+B,IACjBq0B,SAAUyK,EAAYzK,SACtB1B,SAAUmM,EAAYnM,SAASzpB,GAC/B9C,MAAOA,EACPC,IAAKA,GAEH7D,EAAOnB,KAAKsB,UAAUxD,GACtBmkD,EAAM,IAAI45C,EAAI92F,EAAOC,EAAK7D,GAG9B8gD,EAAInkD,MAAQA,EACZwI,KAAK6mH,sBAAsBvqE,OAAOX,SAG/BwqE,EA32CW,CA42ClB/+B,GAAU35C,aAER8/E,GAAc,SAAqBC,GACrC,OAAOrqB,mBAAmBsqB,OAAOjnH,OAAO+L,aAAa1Q,MAAM,KAAM2rH,MAO/DE,GAAuB,IAAIjwH,WAAW,OAAOzG,MAAM,IAAI8K,KAAI,SAAU6rH,GACvE,OAAOA,EAAOhwH,WAAW,OAUvB,GAAmB,SAAUiwH,GAG/B,SAASC,EAAiBpoE,GACxB,IAAIntD,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAClF,GAAe5J,KAAM6tH,GAGrB,IAAI/nG,EAAQ,GAA0B9lB,MAAO6tH,EAAiB3wH,WAAaH,OAAOiT,eAAe69G,IAAmB9tH,KAAKC,KAAMylD,EAAUntD,IAKzI,OAHAwtB,EAAM8vE,aAAe,KACrB9vE,EAAMgoG,gBAAkB,KACxBhoG,EAAMioG,0BAA4BtoE,EAASgD,yBACpC3iC,EAgYT,OA5YA,GAAS+nG,EAAkBD,GAsB3B,GAAYC,EAAkB,CAAC,CAC7Bx2H,IAAK,YACLG,MAAO,WACL,IAAKwI,KAAK8tH,kBAAoB9tH,KAAK8tH,gBAAgBpyE,KAAK1jD,OACtD,OAAOovF,GAAUhtC,mBAGnB,IAAIsB,EAAO17C,KAAK8tH,gBAAgBpyE,KAC5Bj9C,EAAQi9C,EAAK,GAAGh7C,UAChBhC,EAAMg9C,EAAKA,EAAK1jD,OAAS,GAAG0I,UAChC,OAAO0mF,GAAUhtC,iBAAiB,CAAC,CAAC37C,EAAOC,OAa5C,CACDrH,IAAK,cACLG,MAAO,SAAqBsK,GAC1B,IAAImnH,EAASr/G,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,IAAmBA,UAAU,GAE5E,IAAK9H,EACH,OAAO,KAGT,IAAIP,EAAKgvF,GAAczuF,GACnBonH,EAAYlpH,KAAK0nH,cAAcnmH,GAEnC,GAAI0nH,IAAWC,GAAapnH,EAAIo/B,MAAO,CAKrC,IAAI8sF,EAAqBN,GAAqBvwH,WAAa2E,EAAIo/B,MAAM/jC,WACjE8wH,EAAkB,IAAIxwH,WAAWuwH,GACrCC,EAAgBjrG,IAAIlhB,EAAIo/B,OACxB+sF,EAAgBjrG,IAAI0qG,GAAsB5rH,EAAIo/B,MAAM/jC,YACpD6C,KAAK0nH,cAAcnmH,GAAM2nH,EAAY,CACnC76F,YAAavsB,EAAIusB,YACjB1G,UAAW7lB,EAAI6lB,UACfuZ,MAAO+sF,GAIX,OAAO/E,GAAapnH,IASrB,CACDzK,IAAK,qBACLG,MAAO,WACL,OAAOwI,KAAKopH,WAAappH,KAAK8tH,kBAAoB9tH,KAAKw9C,WAUxD,CACDnmD,IAAK,QACLG,MAAO,WAGL,OAFAwI,KAAK2vC,MAAQ,QACb3vC,KAAKypH,kBACEzpH,KAAK8oH,mBAWb,CACDzxH,IAAK,QACLG,MAAO,SAAeg+D,GACpB,MAAsB,qBAAXA,EACFx1D,KAAK8tH,iBAGd9tH,KAAK8tH,gBAAkBt4D,EAGJ,SAAfx1D,KAAK2vC,OAAoB3vC,KAAKspH,sBAChCtpH,KAAKupH,QAGAvpH,KAAK8tH,mBAQb,CACDz2H,IAAK,SACLG,MAAO,SAAgBiH,EAAOC,GAC5Bo2F,GAAoBr2F,EAAOC,EAAKsB,KAAK8tH,mBAYtC,CACDz2H,IAAK,cACLG,MAAO,WACL,IAAIkvB,EAAS1mB,KAERA,KAAKioH,aACRjoH,KAAKioH,WAAajoH,KAAKgoH,gBAAgB5D,aAAapkH,KAAKopH,UAAWppH,KAAKupD,YAAavpD,KAAKqnH,iBAAkBrnH,KAAKk+D,iBAIpH,IAAI/mC,EAAcn3B,KAAKsqH,aAAatqH,KAAKuqH,YAAavqH,KAAKopH,UAAWppH,KAAK6tF,WAAY7tF,KAAKumH,aAAcvmH,KAAKk+D,eAAgBl+D,KAAKioH,YAGpI,GAFA9wF,EAAcn3B,KAAKkuH,mBAAmB/2F,GAEjCA,EAAL,CAIA,GAA8E,OAA1En3B,KAAKgoH,gBAAgBmG,2BAA2Bh3F,EAAYzK,UAAoB,CAGlF,IAAI0hG,EAAuB,WACzB1nG,EAAOipB,MAAQ,QAEVjpB,EAAO82B,UAEV92B,EAAOoiG,kBAMX,OAFA9oH,KAAKgoH,gBAAgBr7E,IAAI,kBAAmByhF,QAC5CpuH,KAAK2vC,MAAQ,uBAIf3vC,KAAK0qH,aAAavzF,MAanB,CACD9/B,IAAK,qBACLG,MAAO,SAA4B2/B,GACjC,MAAOA,GAAeA,EAAYvO,QAAQ41B,MACxCrnB,EAAcn3B,KAAK8qH,qBAAqB3zF,EAAYnM,SAAUmM,EAAY02D,WAAa,EAAG12D,EAAYk6D,eAAiBl6D,EAAYlQ,SAAUkQ,EAAY+zF,eAG3J,OAAO/zF,IAQR,CACD9/B,IAAK,iBACLG,MAAO,WACL,IAAIgxB,EAASxoB,KAEb,GAAKA,KAAKsnH,iBAAoBtnH,KAAK8tH,gBAAnC,CAKA9tH,KAAK2vC,MAAQ,YACb,IAAIxY,EAAcn3B,KAAKsnH,gBACnB1+F,EAAUuO,EAAYvO,QAE1B,GAA+B,oBAApB,IAAS7c,QAAyB/L,KAAK8tH,iBAAmB9tH,KAAK8tH,gBAAgBxoE,MAAO,CAC/F,IAAI+oE,OAAc,EAEdhpH,EAAe,WACjBmjB,EAAOslG,gBAAgBxoE,MAAMh2C,IAAI,cAAe++G,GAEhD7lG,EAAO9gB,MAAM,CACX6R,QAAS,yBAGXiP,EAAOmnB,MAAQ,QAEfnnB,EAAOk1B,QAEPl1B,EAAOpoB,QAAQ,UAYjB,OATAiuH,EAAc,WACZ7lG,EAAOslG,gBAAgBxoE,MAAMh2C,IAAI,aAAcjK,GAE/CmjB,EAAO4jG,kBAGTpsH,KAAK2vC,MAAQ,mBACb3vC,KAAK8tH,gBAAgBxoE,MAAM3Y,IAAI,cAAe0hF,QAC9CruH,KAAK8tH,gBAAgBxoE,MAAM3Y,IAAI,aAActnC,GAI/CujB,EAAQ0lG,WAAY,EAEpB,IACEtuH,KAAKuuH,cAAcp3F,GACnB,MAAOv9B,IAMP,OALAoG,KAAK0H,MAAM,CACT6R,QAAS3f,GAAE2f,UAEbvZ,KAAK2vC,MAAQ,QACb3vC,KAAK09C,QACE19C,KAAKI,QAAQ,SAKtB,GAFAJ,KAAKwuH,mBAAmBr3F,EAAan3B,KAAKgoH,gBAAgByG,UAAUt3F,EAAYzK,UAAW1sB,KAAKopH,WAE5FjyF,EAAY+zF,cAId,OAHAlrH,KAAKI,QAAQ,kBACbJ,KAAKsnH,gBAAkB,UACvBtnH,KAAK2vC,MAAQ,SAIfxY,EAAYh6B,WAAag6B,EAAY+J,MAAM/jC,WAC3C6C,KAAK4oH,oBAAsBhgG,EAAQ3B,SAE/BkQ,EAAYukB,KAAK1jD,QAEnBgI,KAAK2b,OAAOwb,EAAYukB,KAAK,GAAGE,QAASzkB,EAAYukB,KAAKvkB,EAAYukB,KAAK1jD,OAAS,GAAG4jD,SAGzFzkB,EAAYukB,KAAKzkD,SAAQ,SAAU0kD,GACjCnzB,EAAOslG,gBAAgBxxE,OAAO9zB,EAAOulG,0BAA4B,IAAI,IAAS/hH,OAAO2vC,EAAIj7C,UAAWi7C,EAAIC,QAASD,EAAIvoC,MAAQuoC,MAE/H37C,KAAKitH,wBAtEHjtH,KAAK2vC,MAAQ,UAgFhB,CACDt4C,IAAK,gBACLG,MAAO,SAAuB2/B,GAC5B,IAAIu3F,OAAU,EACVC,GAAsB,EAEU,oBAAzB,IAASC,YAClBF,EAAU,IAAI,IAASE,YAAY,SAEnCF,EAAU,IAAS3iH,OAAO84C,gBAC1B8pE,GAAsB,GAGxB,IAAI5yF,EAAS,IAAI,IAAShwB,OAAOid,OAAO,IAAU,IAASld,MAAO4iH,GAgBlE,GAfAv3F,EAAYukB,KAAO,GACnBvkB,EAAY03F,aAAe,CACzBC,OAAQ,EACRC,MAAO,GAEThzF,EAAOgpB,MAAQ5tB,EAAYukB,KAAK/jD,KAAKiU,KAAKurB,EAAYukB,MAEtD3f,EAAOizF,eAAiB,SAAUltH,GAChC,OAAOq1B,EAAY03F,aAAe/sH,GAGpCi6B,EAAOipB,eAAiB,SAAUt9C,GAChC0/E,GAAUviE,IAAI5Z,KAAK,wCAA0CvD,EAAM6R,UAGjE4d,EAAYvO,QAAQ9mB,IAAK,CAC3B,IAAImtH,EAAU93F,EAAYvO,QAAQ9mB,IAAIo/B,MAElCytF,IACFM,EAAU1B,GAAY0B,IAGxBlzF,EAAOpiC,MAAMs1H,GAGf,IAAIC,EAAc/3F,EAAY+J,MAE1BytF,IACFO,EAAc3B,GAAY2B,IAG5BnzF,EAAOpiC,MAAMu1H,GACbnzF,EAAO17B,UAgBR,CACDhJ,IAAK,qBACLG,MAAO,SAA4B2/B,EAAag4F,EAAYnkG,GAC1D,IAAIpC,EAAUuO,EAAYvO,QAE1B,GAAKumG,EAOL,GAAKh4F,EAAYukB,KAAK1jD,OAAtB,CAQA,IAAI62H,EAAe13F,EAAY03F,aAC3BO,EAAOP,EAAaC,OAAS,IAAQD,EAAaE,MAAQI,EAAW9Z,QAOzE,GANAl+E,EAAYukB,KAAKzkD,SAAQ,SAAU0kD,GAEjCA,EAAIj7C,WAAa0uH,EACjBzzE,EAAIC,SAAWwzE,MAGZpkG,EAAS4+F,SAAU,CACtB,IAAIyF,EAAal4F,EAAYukB,KAAK,GAAGh7C,UACjC4uH,EAAYn4F,EAAYukB,KAAKvkB,EAAYukB,KAAK1jD,OAAS,GAAG0I,UAC9DsqB,EAAS4+F,SAAW,CAClBv/F,cAAeW,EAASX,cAAgB8M,EAAY02D,WACpDt9D,KAAM/wB,KAAK8C,IAAI+sH,EAAYC,EAAY1mG,EAAQ3B,iBAjBjD2B,EAAQ41B,OAAQ,MAsBfqvE,EA7Yc,CA8YrB,IAUE0B,GAAY,SAAmBxrH,EAAOyrH,GAGxC,IAFA,IAAI9zE,EAAO33C,EAAM23C,KAER3jD,EAAI,EAAGA,EAAI2jD,EAAK1jD,OAAQD,IAAK,CACpC,IAAI4jD,EAAMD,EAAK3jD,GAEf,GAAIy3H,GAAa7zE,EAAI8zE,aAAeD,GAAa7zE,EAAI+zE,UACnD,OAAO/zE,EAIX,OAAO,MAGL,GAAe,SAAsBxwB,EAAOpnB,GAC9C,IAAI4J,EAAS/D,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,EAEjF,GAAKuhB,EAAMtB,SAOX,IAHA,IAAI2lG,EAAY7hH,EACZguC,OAAM,EAED5jD,EAAI,EAAGA,EAAIozB,EAAMtB,SAAS7xB,OAAQD,IAAK,CAC9C,IAAI6wB,EAAUuC,EAAMtB,SAAS9xB,GAU7B,GARK4jD,IAKHA,EAAM4zE,GAAUxrH,EAAOyrH,EAAY5mG,EAAQ3B,SAAW,IAGpD00B,EAAK,CACP,GAAI,UAAW/yB,EAAS,CAEtB+yB,EAAIC,QAAU4zE,EACd7zE,EAAI+zE,UAAYF,EAChBA,GAAa5mG,EAAQ3B,SACrB00B,EAAM,KACN,SAGF,GAAI6zE,EAAY7zE,EAAIC,QAAS,CAE3B4zE,GAAa5mG,EAAQ3B,SACrB,SAIF00B,EAAIC,SAAWhzB,EAAQ3B,cAWvB,GATI,WAAY2B,IACd+yB,EAAM,IAAI,IAAS3vC,OAAOwjH,EAAWA,EAAY5mG,EAAQ3B,SAAU2B,EAAQ2D,QAC3EovB,EAAI8zE,YAAcD,EAGlB7zE,EAAI+zE,UAAYF,EAAYtoG,WAAW0B,EAAQ2D,QAC/CxoB,EAAMu4C,OAAOX,IAGX,eAAgB/yB,EAAS,CAE3B,IAAI+mG,OAAW,EACXC,OAAU,EAGVC,EAAwBjnG,EAAQ4D,WAAWx1B,MAAM,KAAK8K,IAAIolB,YAE1D4oG,EAAyBzmC,GAAcwmC,EAAuB,GAElEF,EAAWG,EAAuB,GAClCF,EAAUE,EAAuB,GACjCn0E,EAAM,IAAI,IAAS3vC,OAAOwjH,EAAWA,EAAY5mG,EAAQ3B,SAAU,IACnE00B,EAAI8zE,YAAcD,EAAYG,EAC9Bh0E,EAAI+zE,UAAY/zE,EAAI8zE,YAAcG,EAClC7rH,EAAMu4C,OAAOX,GAIjB6zE,GAAa5mG,EAAQ3B,WAQrB8oG,GAAU,KAAYC,QACtBC,GAAsB,CAE1B,CACEhmH,KAAM,MACNimH,IAAK,SAAanM,EAAgB/4F,EAAU84F,EAAar6F,EAAiB48B,GACxE,GAAIy9D,IAAgBzhH,IAAU,CAC5B,IAAIymG,EAAY,CACdv4E,KAAM,EACN00F,aAAc,GAEhB,OAAOnc,EAGT,OAAO,OAGX,CACE7+F,KAAM,kBACNimH,IAAK,SAAanM,EAAgB/4F,EAAU84F,EAAar6F,EAAiB48B,GACxE,IAAK09D,EAAeoM,sBAClB,OAAO,KAGT,IAAItmG,EAAWmB,EAASnB,UAAY,GAChCi/E,EAAY,KACZsnB,EAAe,KACnB/pE,EAAcA,GAAe,EAE7B,IAAK,IAAItuD,EAAI,EAAGA,EAAI8xB,EAAS7xB,OAAQD,IAAK,CACxC,IAAI6wB,EAAUiB,EAAS9xB,GAEvB,GAAI6wB,EAAQV,eAAgB,CAC1B,IAAIwN,EAAc9M,EAAQV,eAAeqpE,UAAY,IACjD8+B,EAAe36F,EAAcquF,EAAeoM,sBAC5C7xD,EAAW9+D,KAAKC,IAAI4mD,EAAcgqE,GAGtC,GAAqB,OAAjBD,IAAuC,IAAb9xD,GAAkB8xD,EAAe9xD,GAC7D,MAGF8xD,EAAe9xD,EACfwqC,EAAY,CACVv4E,KAAM8/F,EACNpL,aAAcltH,IAKpB,OAAO+wG,IAIX,CACE7+F,KAAM,UACNimH,IAAK,SAAanM,EAAgB/4F,EAAU84F,EAAar6F,EAAiB48B,GACxE,IAAIx8B,EAAWmB,EAASnB,UAAY,GAChCi/E,EAAY,KACZsnB,EAAe,KACnB/pE,EAAcA,GAAe,EAE7B,IAAK,IAAItuD,EAAI,EAAGA,EAAI8xB,EAAS7xB,OAAQD,IAAK,CACxC,IAAI6wB,EAAUiB,EAAS9xB,GAEvB,GAAI6wB,EAAQ8D,WAAajD,GAA4C,qBAAlBb,EAAQnqB,MAAuB,CAChF,IAAI6/D,EAAW9+D,KAAKC,IAAI4mD,EAAcz9B,EAAQnqB,OAG9C,GAAqB,OAAjB2xH,GAAyBA,EAAe9xD,EAC1C,QAGGwqC,GAA8B,OAAjBsnB,GAAyBA,GAAgB9xD,KACzD8xD,EAAe9xD,EACfwqC,EAAY,CACVv4E,KAAM3H,EAAQnqB,MACdwmH,aAAcltH,KAMtB,OAAO+wG,IAIX,CACE7+F,KAAM,gBACNimH,IAAK,SAAanM,EAAgB/4F,EAAU84F,EAAar6F,EAAiB48B,GACxE,IAAIyiD,EAAY,KAGhB,GAFAziD,EAAcA,GAAe,EAEzBr7B,EAASpB,qBAAuBoB,EAASpB,oBAAoB5xB,OAG/D,IAFA,IAAIo4H,EAAe,KAEVr4H,EAAI,EAAGA,EAAIizB,EAASpB,oBAAoB5xB,OAAQD,IAAK,CAC5D,IAAIktH,EAAej6F,EAASpB,oBAAoB7xB,GAC5CwI,EAAgByqB,EAASV,sBAAwBvyB,EAAI,EACrDu4H,EAAoBvM,EAAewM,gBAAgBhwH,GAEvD,GAAI+vH,EAAmB,CACrB,IAAIhyD,EAAW9+D,KAAKC,IAAI4mD,EAAciqE,EAAkB//F,MAGxD,GAAqB,OAAjB6/F,GAAyBA,EAAe9xD,EAC1C,QAGGwqC,GAA8B,OAAjBsnB,GAAyBA,GAAgB9xD,KACzD8xD,EAAe9xD,EACfwqC,EAAY,CACVv4E,KAAM+/F,EAAkB//F,KACxB00F,aAAcA,KAOxB,OAAOnc,IAIX,CACE7+F,KAAM,WACNimH,IAAK,SAAanM,EAAgB/4F,EAAU84F,EAAar6F,EAAiB48B,GACxE,GAAIr7B,EAAS4+F,SAAU,CACrB,IAAI9gB,EAAY,CACdv4E,KAAMvF,EAAS4+F,SAASr5F,KACxB00F,aAAcj6F,EAAS4+F,SAASv/F,cAAgBW,EAASX,eAE3D,OAAOy+E,EAGT,OAAO,QAIP,GAAiB,SAAUwN,GAG7B,SAASka,IACP,GAAexwH,KAAMwwH,GAGrB,IAAI1qG,EAAQ,GAA0B9lB,MAAOwwH,EAAetzH,WAAaH,OAAOiT,eAAewgH,IAAiBzwH,KAAKC,OAQrH,OANA8lB,EAAM2qG,mBAAgBn3H,EAEtBwsB,EAAM2oG,UAAY,GAClB3oG,EAAMyqG,gBAAkB,GACxBzqG,EAAMqqG,sBAAwB,KAC9BrqG,EAAMk4F,QAAUP,GAAO,kBAChB33F,EAqaT,OAnbA,GAAS0qG,EAAgBla,GAiCzB,GAAYka,EAAgB,CAAC,CAC3Bn5H,IAAK,eACLG,MAAO,SAAsBwzB,EAAU84F,EAAar6F,EAAiB48B,GACnE,IAAIqqE,EAAa1wH,KAAK2wH,eAAe3lG,EAAU84F,EAAar6F,EAAiB48B,GAE7E,OAAKqqE,EAAW14H,OAUTgI,KAAK4wH,iBAAiBF,EAAY,CACvCr5H,IAAK,OACLG,MAAO6uD,IARA,OAuBV,CACDhvD,IAAK,iBACLG,MAAO,SAAwBwzB,EAAU84F,GACvC,IAAK94F,IAAaA,EAASnB,SACzB,OAAO,KAGT,IAAI6mG,EAAa1wH,KAAK2wH,eAAe3lG,EAAU84F,EAAa94F,EAASV,sBAAuB,GAE5F,IAAKomG,EAAW14H,OACd,OAAO,KAGT,IAAI8wG,EAAY9oG,KAAK4wH,iBAAiBF,EAAY,CAChDr5H,IAAK,eACLG,MAAO,IAQT,OAJIsxG,EAAUmc,aAAe,IAC3Bnc,EAAUv4E,OAAS,GAGd/wB,KAAKC,IAAIqpG,EAAUv4E,KAAOq8D,GAAa5hE,EAAU89E,EAAUmc,aAAc,MAiBjF,CACD5tH,IAAK,iBACLG,MAAO,SAAwBwzB,EAAU84F,EAAar6F,EAAiB48B,GAGrE,IAFA,IAAIqqE,EAAa,GAER34H,EAAI,EAAGA,EAAIk4H,GAAoBj4H,OAAQD,IAAK,CACnD,IAAI84H,EAAWZ,GAAoBl4H,GAC/B+wG,EAAY+nB,EAASX,IAAIlwH,KAAMgrB,EAAU84F,EAAar6F,EAAiB48B,GAEvEyiD,IACFA,EAAU+nB,SAAWA,EAAS5mH,KAC9BymH,EAAW/4H,KAAK,CACdk5H,SAAUA,EAAS5mH,KACnB6+F,UAAWA,KAKjB,OAAO4nB,IAkBR,CACDr5H,IAAK,mBACLG,MAAO,SAA0Bk5H,EAAYpnH,GAK3C,IAJA,IAAIwnH,EAAgBJ,EAAW,GAAG5nB,UAC9BioB,EAAevxH,KAAKC,IAAIixH,EAAW,GAAG5nB,UAAUx/F,EAAOjS,KAAOiS,EAAO9R,OACrEw5H,EAAeN,EAAW,GAAGG,SAExB94H,EAAI,EAAGA,EAAI24H,EAAW14H,OAAQD,IAAK,CAC1C,IAAIk5H,EAAczxH,KAAKC,IAAIixH,EAAW34H,GAAG+wG,UAAUx/F,EAAOjS,KAAOiS,EAAO9R,OAEpEy5H,EAAcF,IAChBA,EAAeE,EACfH,EAAgBJ,EAAW34H,GAAG+wG,UAC9BkoB,EAAeN,EAAW34H,GAAG84H,UAKjC,OADA7wH,KAAKg+G,QAAQ,kBAAoB10G,EAAOjS,IAAM,KAAOiS,EAAO9R,MAAQ,2BAAmCw5H,EAAe,YAAcF,EAAcvgG,KAAO,kBAA2BugG,EAAc7L,aAAe,KAC1M6L,IAWR,CACDz5H,IAAK,yBACLG,MAAO,SAAgCmyH,EAAaD,GAIlD,IAHA,IAAII,EAAoBJ,EAAYr/F,cAAgBs/F,EAAYt/F,cAGvDtyB,EAAI+xH,EAAoB,EAAG/xH,GAAK,EAAGA,IAAK,CAC/C,IAAIm5H,EAAqBvH,EAAY9/F,SAAS9xB,GAE9C,GAAIm5H,GAA0D,qBAA7BA,EAAmBzyH,MAAuB,CACzEirH,EAAYE,SAAW,CACrBv/F,cAAes/F,EAAYt/F,cAAgBtyB,EAC3Cw4B,KAAM2gG,EAAmBzyH,OAE3BuB,KAAKg+G,QAAQ,gCAAkC0L,EAAYE,SAASr5F,KAAO,oBAA4Bm5F,EAAYE,SAASv/F,cAAgB,KAC5IrqB,KAAKI,QAAQ,kBACb,UAWL,CACD/I,IAAK,qBACLG,MAAO,SAA4BwzB,GACjC,IAAKhrB,KAAKmwH,uBAAyBnlG,EAASnB,UAAYmB,EAASnB,SAAS7xB,QAAUgzB,EAASnB,SAAS,GAAG3B,eAAgB,CACvH,IAAIipG,EAAoBnmG,EAASnB,SAAS,GAAG3B,eAAeqpE,UAAY,IACxEvxF,KAAKmwH,uBAAyBgB,KAQjC,CACD95H,IAAK,QACLG,MAAO,WACLwI,KAAKywH,mBAAgBn3H,IAWtB,CACDjC,IAAK,mBACLG,MAAO,SAA0B2/B,GAC/B,IAAIvO,EAAUuO,EAAYvO,QACtBoC,EAAWmM,EAAYnM,SACvB2sF,OAAa,EAsBjB,OAnBEA,EADE/uF,EAAQ9mB,IACG9B,KAAKoxH,iBAAiBj6F,GAEtBn3B,KAAKqxH,gBAAgBl6F,GAGhCwgF,GACE33G,KAAKsxH,6BAA6Bn6F,EAAawgF,KACjD33G,KAAKuxH,2BAA2Bp6F,GAG3BnM,EAAS4+F,WACZ5+F,EAAS4+F,SAAW,CAClBv/F,cAAeW,EAASX,cAAgB8M,EAAY02D,WACpDt9D,KAAM3H,EAAQnqB,SAMfk5G,IAYR,CACDtgH,IAAK,mBACLG,MAAO,SAA0B2/B,GAC/B,IAAIvO,EAAUuO,EAAYvO,QAEtBpmB,EAAa,KAAS/B,UAAUmoB,EAAQ9mB,IAAIo/B,OAG5CvgC,EAAuB,KAASA,qBAAqB6B,EAAY20B,EAAY+J,OAMjF,OAJoC,OAAhC/J,EAAYu+D,kBACdv+D,EAAYu+D,iBAAmB/0F,GAG1B,CACLlC,MAAOkC,EACPjC,IAAKiC,EAAuBioB,EAAQ3B,YAYvC,CACD5vB,IAAK,kBACLG,MAAO,SAAyB2/B,GAC9B,IAAIq6F,EAAWzB,GAAQ54F,EAAY+J,MAAOlhC,KAAKywH,eAC3CgB,OAAmB,EACnBC,OAAiB,EACjBlF,OAAuB,EAE3B,IAAKgF,EACH,OAAO,KAGLA,EAAS9pE,OAAmC,IAA1B8pE,EAAS9pE,MAAM1vD,QACnCgI,KAAKywH,cAAgBe,EAAS9pE,MAAM,GAAGxnD,IACvCuxH,EAAmBD,EAAS9pE,MAAM,GAAGklE,QACrC8E,EAAiBF,EAAS9pE,MAAM,GAAGklE,QACnCJ,EAAuBgF,EAAS9pE,OACvB8pE,EAASx8F,OAAmC,IAA1Bw8F,EAASx8F,MAAMh9B,SAC1CgI,KAAKywH,cAAgBe,EAASx8F,MAAM,GAAG90B,IACvCuxH,EAAmBD,EAASx8F,MAAM,GAAG43F,QACrC8E,EAAiBF,EAASx8F,MAAM,GAAG43F,QACnCJ,EAAuBgF,EAASx8F,OAGlC,IAAI28F,EAAa,CACfnF,qBAAsBA,EACtB/tH,MAAOgzH,EACP/yH,IAAKgzH,EACLjM,cAAe+L,EAAS9pE,OAAmC,IAA1B8pE,EAAS9pE,MAAM1vD,OAChDwtH,cAAegM,EAASx8F,OAAmC,IAA1Bw8F,EAASx8F,MAAMh9B,QAElD,OAAO25H,IAER,CACDt6H,IAAK,6BACLG,MAAO,SAAoCk1B,GACzC,MAAwC,qBAA7B1sB,KAAKyuH,UAAU/hG,GACjB,KAGF1sB,KAAKyuH,UAAU/hG,GAAU6D,OAEjC,CACDl5B,IAAK,qBACLG,MAAO,SAA4Bk1B,GACjC,MAAwC,qBAA7B1sB,KAAKyuH,UAAU/hG,GACjB,KAGF1sB,KAAKyuH,UAAU/hG,GAAU2oF,UAejC,CACDh+G,IAAK,+BACLG,MAAO,SAAsC2/B,EAAawgF,GACxD,IAAI/uF,EAAUuO,EAAYvO,QACtBumG,EAAanvH,KAAKyuH,UAAUt3F,EAAYzK,UAE5C,GAAoC,OAAhCyK,EAAYu+D,gBACdy5B,EAAa,CACX5+F,KAAM4G,EAAYk6D,eAClBgkB,QAASl+E,EAAYk6D,eAAiBsmB,EAAWl5G,OAEnDuB,KAAKyuH,UAAUt3F,EAAYzK,UAAYyiG,EACvCnvH,KAAKI,QAAQ,mBACbJ,KAAKg+G,QAAQ,6BAA+B7mF,EAAYzK,SAAW,YAAoByiG,EAAW5+F,KAAO,eAAiB4+F,EAAW9Z,QAAU,KAC/IzsF,EAAQnqB,MAAQ04B,EAAYk6D,eAC5BzoE,EAAQlqB,IAAMi5G,EAAWj5G,IAAMywH,EAAW9Z,YACrC,KAAI8Z,EAIT,OAAO,EAHPvmG,EAAQnqB,MAAQk5G,EAAWl5G,MAAQ0wH,EAAW9Z,QAC9CzsF,EAAQlqB,IAAMi5G,EAAWj5G,IAAMywH,EAAW9Z,QAK5C,OAAO,IAWR,CACDh+G,IAAK,6BACLG,MAAO,SAAoC2/B,GACzC,IAAInM,EAAWmM,EAAYnM,SACvBpC,EAAUuO,EAAYvO,QAI1B,GAAIA,EAAQroB,cACVP,KAAKuwH,gBAAgB3nG,EAAQ8D,UAAY,CACvC6D,KAAM3H,EAAQnqB,MACdmzH,SAAU,QAEP,GAAI5mG,EAASpB,qBAAuBoB,EAASpB,oBAAoB5xB,OAGtE,IAAK,IAAID,EAAI,EAAGA,EAAIizB,EAASpB,oBAAoB5xB,OAAQD,IAAK,CAC5D,IAAIktH,EAAej6F,EAASpB,oBAAoB7xB,GAC5CwI,EAAgByqB,EAASV,sBAAwBvyB,EAAI,EACrD85H,EAAiB5M,EAAe9tF,EAAY02D,WAC5C+jC,EAAWpyH,KAAKC,IAAIoyH,GAExB,IAAK7xH,KAAKuwH,gBAAgBhwH,IAAkBP,KAAKuwH,gBAAgBhwH,GAAeqxH,SAAWA,EAAU,CACnG,IAAIrhG,OAAO,EAGTA,EADEshG,EAAiB,EACZjpG,EAAQnqB,MAAQmuF,GAAa5hE,EAAUmM,EAAY02D,WAAYo3B,GAE/Dr8F,EAAQlqB,IAAMkuF,GAAa5hE,EAAUmM,EAAY02D,WAAa,EAAGo3B,GAG1EjlH,KAAKuwH,gBAAgBhwH,GAAiB,CACpCgwB,KAAMA,EACNqhG,SAAUA,OAMnB,CACDv6H,IAAK,UACLG,MAAO,WACLwI,KAAKI,QAAQ,WACbJ,KAAKsP,UAGFkhH,EApbY,CAqbnBppC,GAAU35C,aAERqkF,GAAc,IAAI96B,GAAW,gCAAgC,SAAUvgG,EAAQ4hG,GACjF,IAAI5yE,EAAOzlB,MAEW,WAepB,SAASm8B,EAAMC,GACb,OAAOA,EAAO54B,SAAS,EAAG44B,EAAOj/B,WAAai/B,EAAOA,EAAOj/B,WAAa,IAG3E,IAAIk/B,EAAiB,SAAwBxwB,EAAUF,GACrD,KAAME,aAAoBF,GACxB,MAAM,IAAI2wB,UAAU,sCAIpBC,EAAc,WAChB,SAASC,EAAiBlzB,EAAQmzB,GAChC,IAAK,IAAI1kC,EAAI,EAAGA,EAAI0kC,EAAMzkC,OAAQD,IAAK,CACrC,IAAI2kC,EAAaD,EAAM1kC,GACvB2kC,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjD9/B,OAAO6lB,eAAetZ,EAAQozB,EAAWrlC,IAAKqlC,IAIlD,OAAO,SAAU/wB,EAAamxB,EAAYC,GAGxC,OAFID,GAAYN,EAAiB7wB,EAAY7O,UAAWggC,GACpDC,GAAaP,EAAiB7wB,EAAaoxB,GACxCpxB,GAdO,GAkBdomH,EAAW,SAAkBn1H,EAAUC,GACzC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIy/B,UAAU,kEAAoEz/B,GAG1FD,EAASE,UAAYC,OAAOC,OAAOH,GAAcA,EAAWC,UAAW,CACrEG,YAAa,CACXzF,MAAOoF,EACP+/B,YAAY,EACZE,UAAU,EACVD,cAAc,KAGd//B,IAAYE,OAAOqO,eAAiBrO,OAAOqO,eAAexO,EAAUC,GAAcD,EAASM,UAAYL,IAGzGm1H,EAA4B,SAAmCvsG,EAAM1lB,GACvE,IAAK0lB,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAO3lB,GAAyB,kBAATA,GAAqC,oBAATA,EAA8B0lB,EAAP1lB,GAgDxEi9B,EAAa,WACf,IAAIC,EAAS,CAAC,CAAC,GAAI,GAAI,GAAI,GAAI,IAAK,CAAC,GAAI,GAAI,GAAI,GAAI,KACjDC,EAAWD,EAAO,GAClBE,EAAWF,EAAO,GAClBG,EAAOF,EAAS,GAChBG,EAAUF,EAAS,GACnBplC,OAAI,EACJs1B,OAAI,EACJiQ,OAAO,EACP/Y,EAAI,GACJgZ,EAAK,GACLC,OAAK,EACLC,OAAK,EACLC,OAAK,EACLpa,OAAI,EACJqa,OAAO,EACPC,OAAO,EAEX,IAAK7lC,EAAI,EAAGA,EAAI,IAAKA,IACnBwlC,GAAIhZ,EAAExsB,GAAKA,GAAK,EAAe,KAAVA,GAAK,IAAYA,GAAKA,EAG7C,IAAKs1B,EAAIiQ,EAAO,GAAIF,EAAK/P,GAAIA,GAAKmQ,GAAM,EAAGF,EAAOC,EAAGD,IAAS,EAW5D,IATAha,EAAIga,EAAOA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EAAIA,GAAQ,EACvDha,EAAIA,GAAK,EAAQ,IAAJA,EAAU,GACvB8Z,EAAK/P,GAAK/J,EACV+Z,EAAQ/Z,GAAK+J,EAEbqQ,EAAKnZ,EAAEkZ,EAAKlZ,EAAEiZ,EAAKjZ,EAAE8I,KACrBuQ,EAAY,SAALF,EAAsB,MAALD,EAAoB,IAALD,EAAiB,SAAJnQ,EACpDsQ,EAAc,IAAPpZ,EAAEjB,GAAiB,SAAJA,EAEjBvrB,EAAI,EAAGA,EAAI,EAAGA,IACjBmlC,EAASnlC,GAAGs1B,GAAKsQ,EAAOA,GAAQ,GAAKA,IAAS,EAC9CR,EAASplC,GAAGurB,GAAKsa,EAAOA,GAAQ,GAAKA,IAAS,EAKlD,IAAK7lC,EAAI,EAAGA,EAAI,EAAGA,IACjBmlC,EAASnlC,GAAKmlC,EAASnlC,GAAGT,MAAM,GAChC6lC,EAASplC,GAAKolC,EAASplC,GAAGT,MAAM,GAGlC,OAAO2lC,GAGLY,EAAY,KASZC,EAAM,WACR,SAASA,EAAIzmC,GACXglC,EAAer8B,KAAM89B,GAgBhBD,IACHA,EAAYb,KAIdh9B,KAAK+9B,QAAU,CAAC,CAACF,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,SAAU,CAACumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,QAASumC,EAAU,GAAG,GAAGvmC,UACpQ,IAAIS,OAAI,EACJimC,OAAI,EACJ9/B,OAAM,EACN+/B,OAAS,EACTC,OAAS,EACTd,EAAOp9B,KAAK+9B,QAAQ,GAAG,GACvBZ,EAAWn9B,KAAK+9B,QAAQ,GACxBI,EAAS9mC,EAAIW,OACbomC,EAAO,EAEX,GAAe,IAAXD,GAA2B,IAAXA,GAA2B,IAAXA,EAClC,MAAM,IAAIxlC,MAAM,wBAOlB,IAJAslC,EAAS5mC,EAAIC,MAAM,GACnB4mC,EAAS,GACTl+B,KAAKopB,KAAO,CAAC6U,EAAQC,GAEhBnmC,EAAIomC,EAAQpmC,EAAI,EAAIomC,EAAS,GAAIpmC,IACpCmG,EAAM+/B,EAAOlmC,EAAI,IAEbA,EAAIomC,IAAW,GAAgB,IAAXA,GAAgBpmC,EAAIomC,IAAW,KACrDjgC,EAAMk/B,EAAKl/B,IAAQ,KAAO,GAAKk/B,EAAKl/B,GAAO,GAAK,MAAQ,GAAKk/B,EAAKl/B,GAAO,EAAI,MAAQ,EAAIk/B,EAAW,IAANl/B,GAE1FnG,EAAIomC,IAAW,IACjBjgC,EAAMA,GAAO,EAAIA,IAAQ,GAAKkgC,GAAQ,GACtCA,EAAOA,GAAQ,EAAkB,KAAbA,GAAQ,KAIhCH,EAAOlmC,GAAKkmC,EAAOlmC,EAAIomC,GAAUjgC,EAInC,IAAK8/B,EAAI,EAAGjmC,EAAGimC,IAAKjmC,IAClBmG,EAAM+/B,EAAW,EAAJD,EAAQjmC,EAAIA,EAAI,GAG3BmmC,EAAOF,GADLjmC,GAAK,GAAKimC,EAAI,EACJ9/B,EAEAi/B,EAAS,GAAGC,EAAKl/B,IAAQ,KAAOi/B,EAAS,GAAGC,EAAKl/B,GAAO,GAAK,MAAQi/B,EAAS,GAAGC,EAAKl/B,GAAO,EAAI,MAAQi/B,EAAS,GAAGC,EAAW,IAANl/B,IA+D5I,OA5CA4/B,EAAIhhC,UAAUuhC,QAAU,SAAoBC,EAAYC,EAAYC,EAAYC,EAAYC,EAAK/wB,GAC/F,IAAItW,EAAM2I,KAAKopB,KAAK,GAEhB1d,EAAI4yB,EAAajnC,EAAI,GACrBwa,EAAI4sB,EAAapnC,EAAI,GACrB+jB,EAAIojB,EAAannC,EAAI,GACrBktB,EAAIga,EAAalnC,EAAI,GACrBsnC,OAAK,EACLC,OAAK,EACLC,OAAK,EAELC,EAAeznC,EAAIW,OAAS,EAAI,EAChCD,OAAI,EACJgnC,EAAS,EACTC,EAAQh/B,KAAK+9B,QAAQ,GAErBkB,EAASD,EAAM,GACfE,EAASF,EAAM,GACfG,EAASH,EAAM,GACfI,EAASJ,EAAM,GACf5B,EAAO4B,EAAM,GAEjB,IAAKjnC,EAAI,EAAGA,EAAI+mC,EAAc/mC,IAC5B4mC,EAAKM,EAAOvzB,IAAM,IAAMwzB,EAAOrtB,GAAK,GAAK,KAAOstB,EAAO/jB,GAAK,EAAI,KAAOgkB,EAAW,IAAJ7a,GAAWltB,EAAI0nC,GAC7FH,EAAKK,EAAOptB,IAAM,IAAMqtB,EAAO9jB,GAAK,GAAK,KAAO+jB,EAAO5a,GAAK,EAAI,KAAO6a,EAAW,IAAJ1zB,GAAWrU,EAAI0nC,EAAS,GACtGF,EAAKI,EAAO7jB,IAAM,IAAM8jB,EAAO3a,GAAK,GAAK,KAAO4a,EAAOzzB,GAAK,EAAI,KAAO0zB,EAAW,IAAJvtB,GAAWxa,EAAI0nC,EAAS,GACtGxa,EAAI0a,EAAO1a,IAAM,IAAM2a,EAAOxzB,GAAK,GAAK,KAAOyzB,EAAOttB,GAAK,EAAI,KAAOutB,EAAW,IAAJhkB,GAAW/jB,EAAI0nC,EAAS,GACrGA,GAAU,EACVrzB,EAAIizB,EACJ9sB,EAAI+sB,EACJxjB,EAAIyjB,EAIN,IAAK9mC,EAAI,EAAGA,EAAI,EAAGA,IACjB2mC,GAAK,GAAK3mC,GAAK4V,GAAUyvB,EAAK1xB,IAAM,KAAO,GAAK0xB,EAAKvrB,GAAK,GAAK,MAAQ,GAAKurB,EAAKhiB,GAAK,EAAI,MAAQ,EAAIgiB,EAAS,IAAJ7Y,GAAWltB,EAAI0nC,KAC1HJ,EAAKjzB,EACLA,EAAImG,EACJA,EAAIuJ,EACJA,EAAImJ,EACJA,EAAIoa,GAIDb,EA/HC,GA4IN7+B,EAAS,WACX,SAASA,IACPo9B,EAAer8B,KAAMf,GACrBe,KAAKmP,UAAY,GA+FnB,OApFAlQ,EAAOnC,UAAUsS,GAAK,SAAYzP,EAAM0P,GACjCrP,KAAKmP,UAAUxP,KAClBK,KAAKmP,UAAUxP,GAAQ,IAGzBK,KAAKmP,UAAUxP,GAAMhI,KAAK0X,IAY5BpQ,EAAOnC,UAAUwS,IAAM,SAAa3P,EAAM0P,GACxC,IAAKrP,KAAKmP,UAAUxP,GAClB,OAAO,EAGT,IAAIxI,EAAQ6I,KAAKmP,UAAUxP,GAAMvI,QAAQiY,GAEzC,OADArP,KAAKmP,UAAUxP,GAAM4P,OAAOpY,EAAO,GAC5BA,GAAS,GAUlB8H,EAAOnC,UAAUsD,QAAU,SAAiBT,GAC1C,IAAI6P,EAAYxP,KAAKmP,UAAUxP,GAE/B,GAAK6P,EAQL,GAAyB,IAArB5F,UAAU5R,OAGZ,IAFA,IAAIA,EAASwX,EAAUxX,OAEdD,EAAI,EAAGA,EAAIC,IAAUD,EAC5ByX,EAAUzX,GAAGgI,KAAKC,KAAM4J,UAAU,SAMpC,IAHA,IAAI4B,EAAO/T,MAAMqF,UAAUxF,MAAMyI,KAAK6J,UAAW,GAC7Cy1B,EAAU7vB,EAAUxX,OAEfsnC,EAAK,EAAGA,EAAKD,IAAWC,EAC/B9vB,EAAU8vB,GAAIz9B,MAAM7B,KAAMwL,IAShCvM,EAAOnC,UAAU2S,QAAU,WACzBzP,KAAKmP,UAAY,IAYnBlQ,EAAOnC,UAAU4S,KAAO,SAAcC,GACpC3P,KAAKoP,GAAG,QAAQ,SAAUvU,GACxB8U,EAAYhY,KAAKkD,OAIdoE,EAlGI,GAiHTgzH,EAAiB,SAAUpsG,GAG7B,SAASosG,IACP51F,EAAer8B,KAAMiyH,GAErB,IAAInsG,EAAQksG,EAA0BhyH,KAAM6lB,EAAQ9lB,KAAKC,KAAMf,IAK/D,OAHA6mB,EAAM0Z,KAAO,GACb1Z,EAAM2Z,MAAQ,EACd3Z,EAAM4Z,SAAW,KACV5Z,EAiCT,OA3CAisG,EAASE,EAAgBpsG,GAmBzBosG,EAAen1H,UAAU6iC,YAAc,WACrC3/B,KAAKw/B,KAAKI,OAAV5/B,GAEIA,KAAKw/B,KAAKxnC,OACZgI,KAAK0/B,SAAWvmC,WAAW6G,KAAK2/B,YAAY/zB,KAAK5L,MAAOA,KAAKy/B,OAE7Dz/B,KAAK0/B,SAAW,MAUpBuyF,EAAen1H,UAAUnF,KAAO,SAAckoC,GAC5C7/B,KAAKw/B,KAAK7nC,KAAKkoC,GAEV7/B,KAAK0/B,WACR1/B,KAAK0/B,SAAWvmC,WAAW6G,KAAK2/B,YAAY/zB,KAAK5L,MAAOA,KAAKy/B,SAI1DwyF,EA5CY,CA6CnBhzH,GAcE6gC,EAAO,SAAcC,GACvB,OAAOA,GAAQ,IAAa,MAAPA,IAAkB,GAAY,SAAPA,IAAoB,EAAIA,IAAS,IAiB3EmyF,EAAa,SAAoBlyF,EAAW3oC,EAAK4oC,GAEnD,IAAIC,EAAc,IAAIC,WAAWH,EAAUt8B,OAAQs8B,EAAUr8B,WAAYq8B,EAAU7iC,YAAc,GAC7FijC,EAAW,IAAItC,EAAIrmC,MAAMqF,UAAUxF,MAAMyI,KAAK1I,IAE9CgpC,EAAY,IAAI5iC,WAAWuiC,EAAU7iC,YACrCmjC,EAAc,IAAIH,WAAWE,EAAU38B,QAGvC68B,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRpC,OAAa,EACbC,OAAa,EACbC,OAAa,EACbC,OAAa,EAEbkC,OAAS,EASb,IANAJ,EAAQN,EAAW,GACnBO,EAAQP,EAAW,GACnBQ,EAAQR,EAAW,GACnBS,EAAQT,EAAW,GAGdU,EAAS,EAAGA,EAAST,EAAYloC,OAAQ2oC,GAAU,EAGtDrC,EAAawB,EAAKI,EAAYS,IAC9BpC,EAAauB,EAAKI,EAAYS,EAAS,IACvCnC,EAAasB,EAAKI,EAAYS,EAAS,IACvClC,EAAaqB,EAAKI,EAAYS,EAAS,IAEvCP,EAAS/B,QAAQC,EAAYC,EAAYC,EAAYC,EAAY6B,EAAaK,GAG9EL,EAAYK,GAAUb,EAAKQ,EAAYK,GAAUJ,GACjDD,EAAYK,EAAS,GAAKb,EAAKQ,EAAYK,EAAS,GAAKH,GACzDF,EAAYK,EAAS,GAAKb,EAAKQ,EAAYK,EAAS,GAAKF,GACzDH,EAAYK,EAAS,GAAKb,EAAKQ,EAAYK,EAAS,GAAKD,GAEzDH,EAAQjC,EACRkC,EAAQjC,EACRkC,EAAQjC,EACRkC,EAAQjC,EAGV,OAAO4B,GAeL8xF,EAAe,WACjB,SAASA,EAAanyF,EAAW3oC,EAAK4oC,EAAYY,GAChDxE,EAAer8B,KAAMmyH,GACrB,IAAIrxF,EAAOqxF,EAAapxF,KACpBb,EAAc,IAAIC,WAAWH,EAAUt8B,QACvC28B,EAAY,IAAI5iC,WAAWuiC,EAAU7iC,YACrCpF,EAAI,EAKR,IAJAiI,KAAKghC,aAAe,IAAIixF,EAExBjyH,KAAKghC,aAAarpC,KAAKqI,KAAKihC,cAAcf,EAAY18B,SAASzL,EAAGA,EAAI+oC,GAAOzpC,EAAK4oC,EAAYI,IAEzFtoC,EAAI+oC,EAAM/oC,EAAImoC,EAAYloC,OAAQD,GAAK+oC,EAC1Cb,EAAa,IAAI7X,YAAY,CAAC0X,EAAKI,EAAYnoC,EAAI,IAAK+nC,EAAKI,EAAYnoC,EAAI,IAAK+nC,EAAKI,EAAYnoC,EAAI,IAAK+nC,EAAKI,EAAYnoC,EAAI,MACjIiI,KAAKghC,aAAarpC,KAAKqI,KAAKihC,cAAcf,EAAY18B,SAASzL,EAAGA,EAAI+oC,GAAOzpC,EAAK4oC,EAAYI,IAIhGrgC,KAAKghC,aAAarpC,MAAK,WAErBkpC,EAAK,KAAM1E,EAAMkE,OA4BrB,OAdA8xF,EAAar1H,UAAUmkC,cAAgB,SAAuBjB,EAAW3oC,EAAK4oC,EAAYI,GACxF,OAAO,WACL,IAAIa,EAAQgxF,EAAWlyF,EAAW3oC,EAAK4oC,GACvCI,EAAUrd,IAAIke,EAAOlB,EAAUr8B,cAInC44B,EAAY41F,EAAc,KAAM,CAAC,CAC/B96H,IAAK,OACLyrB,IAAK,WAEH,OAAO,SAGJqvG,EA/CU,GAiEfhiC,EAA4B,SAAmC52E,GACjE,IAAI62E,EAAe,GAcnB,OAbArzF,OAAOkwB,KAAK1T,GAAStiB,SAAQ,SAAUI,GACrC,IAAIG,EAAQ+hB,EAAQliB,GAEhBg5F,YAAYC,OAAO94F,GACrB44F,EAAa/4F,GAAO,CAClB6pC,MAAO1pC,EAAMkM,OACbC,WAAYnM,EAAMmM,WAClBxG,WAAY3F,EAAM2F,YAGpBizF,EAAa/4F,GAAOG,KAGjB44F,GAYLgiC,EAAkB,SAAyB3sG,GAC7CA,EAAK+xE,UAAY,SAAUhnF,GACzB,IAAI3V,EAAO2V,EAAM3V,KACbmlC,EAAY,IAAIviC,WAAW5C,EAAKmlC,UAAUkB,MAAOrmC,EAAKmlC,UAAUr8B,WAAY9I,EAAKmlC,UAAU7iC,YAC3F9F,EAAM,IAAI+wB,YAAYvtB,EAAKxD,IAAI6pC,MAAOrmC,EAAKxD,IAAIsM,WAAY9I,EAAKxD,IAAI8F,WAAa,GACjF4tB,EAAK,IAAI3C,YAAYvtB,EAAKkwB,GAAGmW,MAAOrmC,EAAKkwB,GAAGpnB,WAAY9I,EAAKkwB,GAAG5tB,WAAa,GAGjF,IAAIg1H,EAAanyF,EAAW3oC,EAAK0zB,GAAI,SAAUlyB,EAAKqoC,GAClDzb,EAAK8xE,YAAYpH,EAA0B,CACzCppF,OAAQlM,EAAKkM,OACbs5B,UAAWa,IACT,CAACA,EAAMx9B,cAMb2uH,EAAkB,IAAID,EAAgB3sG,IAjqBtB,MA2qBpB6sG,GAAkB,SAAyBluF,GAC7C,IAAImd,EAAOnd,EAAW,WAAa,OAAS,cAM5C,OAJIA,EAAWtY,iBAAmBsY,EAAWtY,gBAAgB10B,QAAQ,yCAA2C,IAC9GmqD,EAAO,aAGFA,GAaLgxE,GAAc,SAAqBC,EAAevoC,GACpDuoC,EAAc52H,QACd42H,EAAc90E,QAEVusC,GAAaA,EAAUwoC,uBACzBxoC,EAAUwoC,qBAAqB/0E,QAC/BusC,EAAUwoC,qBAAuB,OAcjCC,GAAe,SAAsBC,EAAgB1oC,GAGvDA,EAAUwoC,qBAAuBE,EACjCA,EAAetrE,QAmBburE,GAAiB,SAAwBjzH,EAAM8lD,GACjD,OAAO,WACL,IAAIotE,EAAwBptE,EAASqtE,eACjCN,EAAgBK,EAAsBlzH,GACtCozH,EAAoBF,EAAsBlwE,KAC1CsnC,EAAYxkC,EAASutE,WAAWrzH,GAChCszH,EAAchpC,EAAUgpC,cACxBC,EAAcjpC,EAAUipC,YAAYD,GACpCE,EAAuBlpC,EAAUwoC,qBACrCF,GAAYC,EAAevoC,GAEtBipC,IAKAA,EAAYP,gBAajBH,EAAcxI,eACd0I,GAAaQ,EAAYP,eAAgB1oC,IAbnCkpC,GAKFJ,EAAkBtJ,qBA2BtB2J,GAAiB,SAAwBzzH,EAAM8lD,GACjD,OAAO,WACL,IAAI4tE,EAAyB5tE,EAASqtE,eAClCN,EAAgBa,EAAuB1zH,GACvCozH,EAAoBM,EAAuB1wE,KAC3CsnC,EAAYxkC,EAASutE,WAAWrzH,GAChCszH,EAAchpC,EAAUgpC,cACxBC,EAAcjpC,EAAUipC,YAAYD,GACpCE,EAAuBlpC,EAAUwoC,qBACrCF,GAAYC,EAAevoC,GAEtBipC,IAKAA,EAAYP,eAQbQ,IAAyBD,EAAYP,gBAQrCH,EAAczuH,OAEhByuH,EAAczuH,MAAMkvH,GAItBT,EAAc/I,kBACdiJ,GAAaQ,EAAYP,eAAgB1oC,IAXvCyoC,GAAaQ,EAAYP,eAAgB1oC,GARzC8oC,EAAkBtJ,qBAuBpB6J,GAAU,CAcZ3/F,MAAO,SAAeh0B,EAAM8lD,GAC1B,OAAO,WACL,IAAI+sE,EAAgB/sE,EAASqtE,eAAenzH,GACxCsqF,EAAYxkC,EAASutE,WAAWrzH,GAChC4zH,EAA2B9tE,EAAS8tE,yBACxChB,GAAYC,EAAevoC,GAE3B,IAAIgpC,EAAchpC,EAAUgpC,cACxBC,EAAcjpC,EAAUipC,cACxB3xH,GAAM2xH,EAAYzhG,QAAO,SAAU8oF,GACrC,OAAOA,EAAM,cACZ,IAAM2Y,EAAY,IAAI3xH,GACrBiyH,EAAevpC,EAAUnmF,OAAOvC,GAEpC,GAAI0xH,IAAgBO,EAApB,CAWA,IAAK,IAAI/wH,KAFT2kF,GAAUviE,IAAI5Z,KAAK,oFAECg/E,EAAUnmF,OAC5BmmF,EAAUnmF,OAAOrB,GAASg+C,QAAUwpC,EAAUnmF,OAAOrB,KAAa+wH,EAGpEvpC,EAAUmpC,sBAZRG,EAAyB,CACvBh6G,QAAS,2DA2BjBqa,UAAW,SAAmBj0B,EAAM8lD,GAClC,OAAO,WACL,IAAI+sE,EAAgB/sE,EAASqtE,eAAenzH,GACxCsqF,EAAYxkC,EAASutE,WAAWrzH,GACpCynF,GAAUviE,IAAI5Z,KAAK,4EACnBsnH,GAAYC,EAAevoC,GAC3B,IAAIlmF,EAAQkmF,EAAUgpC,cAElBlvH,IACFA,EAAM4hD,KAAO,YAGfskC,EAAUmpC,oBAIZK,GAAiB,CAYnB9/F,MAAO,SAAeh0B,EAAMgzH,EAAgBltE,GAC1C,GAAKktE,EAAL,CAKA,IAAI72E,EAAO2J,EAAS3J,KAChB43E,EAAiBjuE,EAASiuE,eAC1BlB,EAAgB/sE,EAASqtE,eAAenzH,GAC5CgzH,EAAevjH,GAAG,kBAAkB,WAClC,IAAI+b,EAAQwnG,EAAexnG,QAC3BqnG,EAAcxnG,SAASG,EAAOuoG,KAGzB53E,EAAK0B,UAAYryB,EAAMhB,SAA8B,SAAnB2xB,EAAK41B,YAC1C8gD,EAAcnrE,UAGlBsrE,EAAevjH,GAAG,kBAAkB,WAClCojH,EAAcxnG,SAAS2nG,EAAexnG,QAASuoG,GAE1C53E,EAAK0B,UACRg1E,EAAcnrE,UAGlBsrE,EAAevjH,GAAG,QAASkkH,GAAQ3zH,GAAMA,EAAM8lD,MAcjD7xB,UAAW,SAAmBj0B,EAAMgzH,EAAgBltE,GAClD,IAAI3J,EAAO2J,EAAS3J,KAChB43E,EAAiBjuE,EAASiuE,eAC1BlB,EAAgB/sE,EAASqtE,eAAenzH,GACxCsqF,EAAYxkC,EAASutE,WAAWrzH,GACpCgzH,EAAevjH,GAAG,kBAAkB,WAClC,IAAI+b,EAAQwnG,EAAexnG,QAC3BqnG,EAAcxnG,SAASG,EAAOuoG,GAC9BlB,EAAczuH,MAAMkmF,EAAUgpC,iBAGzBn3E,EAAK0B,UAAYryB,EAAMhB,SAA8B,SAAnB2xB,EAAK41B,YAC1C8gD,EAAcnrE,UAGlBsrE,EAAevjH,GAAG,kBAAkB,WAClCojH,EAAcxnG,SAAS2nG,EAAexnG,QAASuoG,GAE1C53E,EAAK0B,UACRg1E,EAAcnrE,UAGlBsrE,EAAevjH,GAAG,QAASkkH,GAAQ3zH,GAAMA,EAAM8lD,MAG/CkuE,GAAa,CAUf,MAAS,SAAeh0H,EAAM8lD,GAC5B,IAAIwlC,EAAMxlC,EAASwlC,IACfi8B,EAAazhE,EAASyhE,WACtBsL,EAAgB/sE,EAASqtE,eAAenzH,GACxC+zH,EAAiBjuE,EAASiuE,eAC1BxoG,EAAcu6B,EAAS3wB,OAAO5J,YAC9B0oG,EAAwBnuE,EAASutE,WAAWrzH,GAC5Ck0H,EAASD,EAAsBC,OAC/B/vH,EAAS8vH,EAAsB9vH,OAC/B+3G,EAAuBp2D,EAASo2D,qBAYpC,IAAK,IAAIpH,KAVJvpF,EAAYvrB,IAAmD,IAA1C5C,OAAOkwB,KAAK/B,EAAYvrB,IAAO3H,SACvDkzB,EAAYvrB,GAAQ,CAClBgjD,KAAM,CACJ,QAAW,CACT,SAAW,MAMCz3B,EAAYvrB,GAO9B,IAAK,IAAIm0H,KANJD,EAAOpf,KACVof,EAAOpf,GAAW,IAKKvpF,EAAYvrB,GAAM80G,GAAU,CACnD,IAAIrwE,EAAalZ,EAAYvrB,GAAM80G,GAASqf,GACxCnB,OAAiB,EAmBrB,GAhBEA,EADEvuF,EAAW/V,YACI,IAAI,GAAe+V,EAAW/V,YAAa48D,EAAKyoC,GACxDtvF,EAAWnZ,WAA4B,SAAfi8F,EAChB,IAAI,GAAmB9iF,EAAWnZ,UAAU,GAAIggE,EAAKyoC,EAAgB7X,GAIrE,KAGnBz3E,EAAagjD,GAAU52C,aAAa,CAClCjvC,GAAIuyH,EACJnB,eAAgBA,GACfvuF,GACHqvF,GAAe9zH,GAAMA,EAAMykC,EAAWuuF,eAAgBltE,GACtDouE,EAAOpf,GAAS98G,KAAKysC,GAEe,qBAAzBtgC,EAAOgwH,GAA+B,CAC/C,IAAI/vH,EAAQ,IAAIqjF,GAAUxgC,WAAW,CACnCrlD,GAAIuyH,EACJvyE,KAAM+wE,GAAgBluF,GACtBqc,SAAS,EACT90B,SAAUyY,EAAWzY,SACrB,QAAWyY,EAAW,WACtBhR,MAAO0gG,IAEThwH,EAAOgwH,GAAgB/vH,GAM7ByuH,EAAcpjH,GAAG,QAASkkH,GAAQ3zH,GAAMA,EAAM8lD,KAYhD,UAAa,SAAmB9lD,EAAM8lD,GACpC,IAAI3J,EAAO2J,EAAS3J,KAChBmvC,EAAMxlC,EAASwlC,IACfi8B,EAAazhE,EAASyhE,WACtBsL,EAAgB/sE,EAASqtE,eAAenzH,GACxC+zH,EAAiBjuE,EAASiuE,eAC1BxoG,EAAcu6B,EAAS3wB,OAAO5J,YAC9B6oG,EAAyBtuE,EAASutE,WAAWrzH,GAC7Ck0H,EAASE,EAAuBF,OAChC/vH,EAASiwH,EAAuBjwH,OAChC+3G,EAAuBp2D,EAASo2D,qBAEpC,IAAK,IAAIpH,KAAWvpF,EAAYvrB,GAK9B,IAAK,IAAIm0H,KAJJD,EAAOpf,KACVof,EAAOpf,GAAW,IAGKvpF,EAAYvrB,GAAM80G,GACzC,IAAIvpF,EAAYvrB,GAAM80G,GAASqf,GAAc9nG,OAA7C,CAYA,IAAIoY,EAAalZ,EAAYvrB,GAAM80G,GAASqf,GACxCnB,OAAiB,EAerB,GAbmB,QAAfzL,EACFyL,EAAiB,IAAI,GAAevuF,EAAW/V,YAAa48D,EAAKyoC,GACzC,SAAfxM,IACTyL,EAAiB,IAAI,GAAmBvuF,EAAWnZ,UAAU,GAAIggE,EAAKyoC,EAAgB7X,IAGxFz3E,EAAagjD,GAAU52C,aAAa,CAClCjvC,GAAIuyH,EACJnB,eAAgBA,GACfvuF,GACHqvF,GAAe9zH,GAAMA,EAAMykC,EAAWuuF,eAAgBltE,GACtDouE,EAAOpf,GAAS98G,KAAKysC,GAEe,qBAAzBtgC,EAAOgwH,GAA+B,CAC/C,IAAI/vH,EAAQ+3C,EAAKO,mBAAmB,CAClC96C,GAAIuyH,EACJvyE,KAAM,YACN,QAAWnd,EAAW,YAAcA,EAAW5Y,WAC/CG,SAAUyY,EAAWzY,SACrByH,MAAO0gG,IACN,GAAO/vH,MACVD,EAAOgwH,GAAgB/vH,GAM7ByuH,EAAcpjH,GAAG,QAASkkH,GAAQ3zH,GAAMA,EAAM8lD,KAYhD,kBAAmB,SAAwB9lD,EAAM8lD,GAC/C,IAAI3J,EAAO2J,EAAS3J,KAChB5wB,EAAcu6B,EAAS3wB,OAAO5J,YAC9B8oG,EAAyBvuE,EAASutE,WAAWrzH,GAC7Ck0H,EAASG,EAAuBH,OAChC/vH,EAASkwH,EAAuBlwH,OAEpC,IAAK,IAAI2wG,KAAWvpF,EAAYvrB,GAK9B,IAAK,IAAIm0H,KAJJD,EAAOpf,KACVof,EAAOpf,GAAW,IAGKvpF,EAAYvrB,GAAM80G,GAAU,CACnD,IAAIrwE,EAAalZ,EAAYvrB,GAAM80G,GAASqf,GAG5C,GAAK1vF,EAAWxY,WAAWnF,MAAM,UAMjCotG,EAAOpf,GAAS98G,KAAKyvF,GAAU52C,aAAa,CAC1CjvC,GAAIuyH,GACH1vF,IAEiC,qBAAzBtgC,EAAOgwH,IAA+B,CAC/C,IAAI/vH,EAAQ+3C,EAAKO,mBAAmB,CAClC96C,GAAI6iC,EAAWxY,WACf21B,KAAM,WACN,QAAWnd,EAAW,YAAcA,EAAW5Y,WAC/CG,SAAUyY,EAAWzY,SACrByH,MAAO0gG,IACN,GAAO/vH,MACVD,EAAOgwH,GAAgB/vH,MAqB7BmvH,GAAc,SAAqBvzH,EAAM8lD,GAC3C,OAAO,SAAU1hD,GACf,IAAI83G,EAAuBp2D,EAASo2D,qBAChCgY,EAASpuE,EAASutE,WAAWrzH,GAAMk0H,OACnC1oG,EAAQ0wF,EAAqB1wF,QAEjC,IAAKA,EACH,OAAO,KAGT,IAAI8oG,EAAW,KAQf,OANI9oG,EAAM7M,WAAW3e,KACnBs0H,EAAWJ,EAAO1oG,EAAM7M,WAAW3e,KAGrCs0H,EAAWA,GAAYJ,EAAOlxE,KAET,qBAAV5+C,EACFkwH,EAGK,OAAVlwH,EAGK,KAGFkwH,EAASxiG,QAAO,SAAUgL,GAC/B,OAAOA,EAAMl7B,KAAOwC,EAAMxC,MACzB,IAAM,OAIT0xH,GAAc,CAahBt/F,MAAO,SAAeh0B,EAAM8lD,GAC1B,OAAO,WACL,IAAI3hD,EAAS2hD,EAASutE,WAAWrzH,GAAMmE,OAEvC,IAAK,IAAIvC,KAAMuC,EACb,GAAIA,EAAOvC,GAAIk/C,QACb,OAAO38C,EAAOvC,GAIlB,OAAO,OAgBXqyB,UAAW,SAAmBj0B,EAAM8lD,GAClC,OAAO,WACL,IAAI3hD,EAAS2hD,EAASutE,WAAWrzH,GAAMmE,OAEvC,IAAK,IAAIvC,KAAMuC,EACb,GAAwB,YAApBA,EAAOvC,GAAIokD,MAA0C,WAApB7hD,EAAOvC,GAAIokD,KAC9C,OAAO7hD,EAAOvC,GAIlB,OAAO,QAiCT2yH,GAAmB,SAA0BzuE,GAC/C,CAAC,QAAS,YAAa,mBAAmBxuD,SAAQ,SAAU0I,GAC1Dg0H,GAAWh0H,GAAMA,EAAM8lD,MAEzB,IAAIutE,EAAavtE,EAASutE,WACtBnX,EAAuBp2D,EAASo2D,qBAChC//D,EAAO2J,EAAS3J,KAChBmvC,EAAMxlC,EAASwlC,IAEnB,CAAC,QAAS,aAAah0F,SAAQ,SAAU0I,GACvCqzH,EAAWrzH,GAAMuzH,YAAcA,GAAYvzH,EAAM8lD,GACjDutE,EAAWrzH,GAAMszH,YAAcA,GAAYtzH,GAAMA,EAAM8lD,GACvDutE,EAAWrzH,GAAMizH,eAAiBA,GAAejzH,EAAM8lD,GACvDutE,EAAWrzH,GAAMyzH,eAAiBA,GAAezzH,EAAM8lD,MAIzD,IAAIyuD,EAAa8e,EAAWr/F,MAAMu/F,cAC9Bze,GAAWP,EAAWziF,QAAO,SAAU8oF,GACzC,OAAOA,EAAM,cACZ,IAAMrG,EAAW,IAAI3yG,GACxByxH,EAAWr/F,MAAM7vB,OAAO2wG,GAASh0D,SAAU,EAC3CuyE,EAAWr/F,MAAMy/F,iBACjBvX,EAAqBzsG,GAAG,eAAe,WACrC,CAAC,QAAS,aAAanY,SAAQ,SAAU0I,GACvC,OAAOqzH,EAAWrzH,GAAMizH,uBAI5B,IAAIuB,EAAsB,WACxBnB,EAAWr/F,MAAMy/F,iBACjBt3E,EAAK17C,QAAQ,CACXT,KAAM,QACNsK,KAAM,sBAaV,IAAK,IAAI1I,KATTu6C,EAAKorB,cAAc79B,iBAAiB,SAAU8qF,GAC9Cr4E,EAAK4O,mBAAmBrhB,iBAAiB,SAAU2pF,EAAWp/F,UAAUw/F,gBACxEnoC,EAAI77E,GAAG,WAAW,WAChB0sC,EAAKorB,cAAc99B,oBAAoB,SAAU+qF,GACjDr4E,EAAK4O,mBAAmBthB,oBAAoB,SAAU4pF,EAAWp/F,UAAUw/F,mBAG7Et3E,EAAKgO,YAAY,SAEFkpE,EAAWr/F,MAAM7vB,OAC9Bg4C,EAAKorB,cAAcjnB,SAAS+yE,EAAWr/F,MAAM7vB,OAAOvC,KAapD6yH,GAAmB,WACrB,IAAIpB,EAAa,GAYjB,MAXA,CAAC,QAAS,YAAa,mBAAmB/7H,SAAQ,SAAU0I,GAC1DqzH,EAAWrzH,GAAQ,CACjBk0H,OAAQ,GACR/vH,OAAQ,GACR2uH,qBAAsB,KACtBS,YAAa,GACbD,YAAa,GACbL,eAAgB,GAChBQ,eAAgB,OAGbJ,GAOLqB,GAAgC,IAChCnlC,QAAM,EAGNolC,GAAc,CAAC,gBAAiB,uBAAwB,wBAAyB,uBAAwB,wBAAyB,yBAElIC,GAAgB,SAAuBC,GACzC,OAAOx0H,KAAKy0H,oBAAoBD,GAAQx0H,KAAK00H,mBAAmBF,IAG9DG,GAAsB,SAA6BpsG,GACrD,IAAIqsG,EAAkBrsG,EAAKqsG,gBACvBC,EAAetsG,EAAKssG,aACpBC,EAAgBvsG,EAAKusG,cACrBC,EAAqBxsG,EAAKwsG,mBAC1BjR,EAAcv7F,EAAKtB,SACbsB,EAAK1D,IAEf,OAAKgwG,GASAD,EAAgBzqG,UAMjB25F,EAAclF,GAAOO,4BAKrB0V,EAAav2G,WAAW0J,UAAY4sG,EAAgBt2G,WAAW0J,WAM/D8sG,GAAiBC,KAzBnB3tC,GAAUviE,IAAI5Z,KAAK,oEACZ,IAyCP,GAA2B,SAAUqrG,GAGvC,SAAS0e,EAAyB18H,GAChC,GAAe0H,KAAMg1H,GAErB,IAAIlvG,EAAQ,GAA0B9lB,MAAOg1H,EAAyB93H,WAAaH,OAAOiT,eAAeglH,IAA2Bj1H,KAAKC,OAErIzF,EAAMjC,EAAQiC,IACd6wF,EAA0B9yF,EAAQ8yF,wBAClC1vF,EAAkBpD,EAAQoD,gBAC1BogD,EAAOxjD,EAAQwjD,KACfnpB,EAAYr6B,EAAQq6B,UACpBsiG,EAAY38H,EAAQ28H,UACpBC,EAAa58H,EAAQ48H,WACrB3I,EAAoBj0H,EAAQi0H,kBAC5B4I,EAA2B78H,EAAQ68H,yBACnCvN,EAAsBtvH,EAAQsvH,oBAC9BV,EAAa5uH,EAAQ4uH,WAEzB,IAAK3sH,EACH,MAAM,IAAI5B,MAAM,wCAGlBu2F,GAAM+lC,EACNnvG,EAAMpqB,gBAAkBA,EACxBoqB,EAAMw/B,MAAQxJ,EACdh2B,EAAMulE,KAAOvvC,EAAKmvC,IAClBnlE,EAAMmhG,YAAcC,EACpBphG,EAAMsvG,YAAcF,EACpBpvG,EAAMymG,kBAAoBA,EAC1BzmG,EAAMqvG,yBAA2BA,EAE7BrvG,EAAMsvG,cACRtvG,EAAMuvG,cAAgBvvG,EAAMw/B,MAAMyF,aAAa,WAAY,WAC3DjlC,EAAMuvG,cAAczgC,gCAAkC,IAGxD9uE,EAAMwvG,gBAAkB,CACtB55H,gBAAiBA,EACjB0vF,wBAAyBA,EACzBzvF,QAAS,MAEXmqB,EAAMyvG,YAAcnB,KACpBtuG,EAAM0uE,YAAc,IAAIpN,GAAUwxB,YAElC9yF,EAAM0uE,YAAYnrD,iBAAiB,aAAcvjB,EAAM0vG,kBAAkB5pH,KAAKka,IAE9EA,EAAM2gG,UAAYr/B,GAAUhtC,mBAC5Bt0B,EAAMygG,YAAa,EACnBzgG,EAAMkiG,gBAAkB,IAAI,GAAe1vH,GAC3CwtB,EAAM+gG,sBAAwB/qE,EAAKO,mBAAmB,CACpDkF,KAAM,WACNnuB,MAAO,qBACN,GAAOrvB,MACV+hB,EAAMiiG,WAAa,IAAI+J,GACvBhsG,EAAM2uE,kBAAoB,GAC1B,IAAIghC,EAAwB,CAC1BxqC,IAAKnlE,EAAMulE,KACXmJ,YAAa1uE,EAAM0uE,YACnBnuC,YAAavgC,EAAMw/B,MAAMe,YAAYz6C,KAAKka,EAAMw/B,OAChDwJ,SAAU,WACR,OAAOhpC,EAAMgpC,YAEf+qB,QAAS,WACP,OAAO/zD,EAAMw/B,MAAMu0B,WAErB5yD,SAAU,WACR,OAAOnB,EAAM0uE,YAAYvtE,UAE3Bu/F,UAAW,WACT,OAAO1gG,EAAMygG,YAEfS,iBAAkB,WAChB,OAAOlhG,EAAMkhG,oBAEfr0F,UAAWA,EACXoxF,eAAgBj+F,EAAMkiG,gBACtBvH,UAAW36F,EAAMiiG,WACjBb,WAAYphG,EAAMmhG,YAClBpC,iBAAkB/+F,EAAM2uE,kBACxBmzB,oBAAqBA,GA+BvB,OA7BA9hG,EAAMq2F,sBAA8C,SAAtBr2F,EAAMmhG,YAAyB,IAAI,GAAmB1sH,EAAKurB,EAAMulE,KAAMvlE,EAAMwvG,iBAAmB,IAAI,GAAe/6H,EAAKurB,EAAMulE,KAAMvlE,EAAMwvG,iBAExKxvG,EAAM4vG,sCAIN5vG,EAAM4uG,mBAAqB,IAAI,GAActtC,GAAU52C,aAAailF,EAAuB,CACzF3O,qBAAsBhhG,EAAM+gG,sBAC5BxB,WAAY,SACV/sH,GAEJwtB,EAAM2uG,oBAAsB,IAAI,GAAcrtC,GAAU52C,aAAailF,EAAuB,CAC1FpQ,WAAY,UACV/sH,GACJwtB,EAAM6vG,uBAAyB,IAAI,GAAiBvuC,GAAU52C,aAAailF,EAAuB,CAChGpQ,WAAY,MACZ58D,yBAA0B3iC,EAAMw/B,MAAMmD,2BACpCnwD,GAEJwtB,EAAM8vG,+BAGNtB,GAAYr9H,SAAQ,SAAUu9H,GAC5B1uG,EAAM0uG,EAAO,KAAOD,GAAc3oH,KAAKka,EAAO0uG,MAEhD1uG,EAAMk4F,QAAUP,GAAO,OAEvB33F,EAAMq2F,sBAAsB90D,OAErBvhC,EAwmCT,OAvtCA,GAASkvG,EAA0B1e,GAyHnC,GAAY0e,EAA0B,CAAC,CACrC39H,IAAK,sCACLG,MAAO,WACL,IAAIkvB,EAAS1mB,KAEbA,KAAKm8G,sBAAsB/sG,GAAG,kBAAkB,WAC9C,IAAI+b,EAAQzE,EAAOy1F,sBAAsBhxF,QAErC0qG,EAAwC,IAAvB1qG,EAAMe,eAAuB,IAG9CuiE,GAAyB/nE,EAAOy1F,sBAAsBrnF,OAAQpO,EAAOy1F,sBAAsBhxF,SAC7FzE,EAAO4uG,gBAAgB35H,QAAU,EAEjC+qB,EAAO4uG,gBAAgB35H,QAAUk6H,EAK/B1qG,EAAMhB,SAAsC,SAA3BzD,EAAO4+B,MAAMosB,YAChChrD,EAAOguG,mBAAmB1pG,SAASG,EAAOzE,EAAO4uG,iBAEjD5uG,EAAOguG,mBAAmBrtE,QAG5B6sE,GAAiB,CACfhN,WAAYxgG,EAAOugG,YACnB6L,eAAgB,CACdn/F,MAAOjN,EAAO+tG,oBACd7gG,UAAWlN,EAAOivG,uBAClBhzE,KAAMj8B,EAAOguG,oBAEf54E,KAAMp1B,EAAO4+B,MACbouE,eAAgBhtG,EAAO4uG,gBACvBzZ,qBAAsBn1F,EAAOy1F,sBAC7BlxB,IAAKvkE,EAAO2kE,KACZv2D,OAAQpO,EAAOoO,SACfk+F,WAAYtsG,EAAO6uG,YACnBhC,yBAA0B7sG,EAAO6sG,yBAAyB3nH,KAAK8a,KAGjEA,EAAOovG,sBAAsBpvG,EAAOoO,SAAU3J,GAE9C,IACEzE,EAAOqvG,sBACP,MAAOn8H,IAEP,OADAwtF,GAAUviE,IAAI5Z,KAAK,iCAAkCrR,IAC9C8sB,EAAO8tE,YAAYi2B,YAAY,UAGxC/jG,EAAOsvG,kBAEFtvG,EAAO6uG,YAAY5hG,MAAM8+F,sBAAwB/rG,EAAO6uG,YAAY5hG,MAAM8+F,qBAAqBtnG,QAClGzE,EAAOtmB,QAAQ,wBAKfsmB,EAAO6uG,YAAY5hG,MAAM8+F,qBAAqB9lF,IAAI,kBAAkB,WAClEjmB,EAAOtmB,QAAQ,8BAIrBJ,KAAKm8G,sBAAsB/sG,GAAG,kBAAkB,WAC9C,IAAI6mH,EAAkBvvG,EAAOy1F,sBAAsBhxF,QAEnD,IAAK8qG,EAAiB,CAGpBvvG,EAAOwvG,8BAEP,IAAIC,OAAgB,EAcpB,OAZIzvG,EAAOyuG,2BACTgB,EAAgBzvG,EAAO0vG,yBAGpBD,IACHA,EAAgBzvG,EAAO2vG,kBAGzB3vG,EAAO4vG,cAAgBH,OAEvBzvG,EAAOy1F,sBAAsBhxF,MAAMzE,EAAO4vG,eA4B5C,GAvBI5vG,EAAO0uG,aACT1uG,EAAO6vG,cAAcN,GAOvBvvG,EAAOguG,mBAAmB1pG,SAASirG,EAAiBvvG,EAAO4uG,iBAE3D5uG,EAAO8vG,iBAKF9vG,EAAO4+B,MAAM9H,WAChB92B,EAAOguG,mBAAmBrtE,OAEtB3gC,EAAO+tG,qBACT/tG,EAAO+tG,oBAAoBptE,SAI1B4uE,EAAgB9rG,QAAS,CAC5B,IAAIssG,EAAmB,WACrB,IAAI9Q,EAAcj/F,EAAOooC,WAEE,IAAvB62D,EAAY3tH,QACd0uB,EAAO8tE,YAAYkiC,kBAAkB/Q,EAAYlnH,MAAM,GAAIknH,EAAYjnH,IAAI,KAI/E,GAAIgoB,EAAOO,aAAe5kB,IAAU,CAClC,IAAIs0H,EAAmB,SAASA,IAC1BjwG,EAAOO,aAAe5kB,IACxBo0H,IAEA/vG,EAAO4+B,MAAM3Y,IAAI,iBAAkBgqF,IAIvCjwG,EAAO4+B,MAAM3Y,IAAI,iBAAkBgqF,QAEnCF,QAINz2H,KAAKm8G,sBAAsB/sG,GAAG,SAAS,WACrCsX,EAAO6sG,yBAAyB7sG,EAAOy1F,sBAAsBz0G,UAE/D1H,KAAKm8G,sBAAsB/sG,GAAG,iBAAiB,WAC7CsX,EAAOguG,mBAAmB94H,QAE1B8qB,EAAOguG,mBAAmBh3E,WAE5B19C,KAAKm8G,sBAAsB/sG,GAAG,eAAe,WAC3C,IAAI+b,EAAQzE,EAAOy1F,sBAAsBhxF,QAErC0qG,EAAwC,IAAvB1qG,EAAMe,eAAuB,IAG9CuiE,GAAyB/nE,EAAOy1F,sBAAsBrnF,OAAQpO,EAAOy1F,sBAAsBhxF,SAC7FzE,EAAO4uG,gBAAgB35H,QAAU,EAEjC+qB,EAAO4uG,gBAAgB35H,QAAUk6H,EAOnCnvG,EAAOguG,mBAAmB1pG,SAASG,EAAOzE,EAAO4uG,iBAEjD5uG,EAAOguG,mBAAmBrtE,OAE1B3gC,EAAO4+B,MAAMllD,QAAQ,CACnBT,KAAM,cACN8sC,SAAS,OAGbzsC,KAAKm8G,sBAAsB/sG,GAAG,qBAAqB,WACjD,IAAI6mH,EAAkBvvG,EAAOy1F,sBAAsBhxF,QAE/CyrG,EAAmBlwG,EAAOmwG,oBAAoBZ,GAE9CW,IAKFlwG,EAAO6sG,yBAAyB,CAC9Bh6G,QAAS,iCAIXmN,EAAO4+B,MAAMllD,QAAQ,qBAGzBJ,KAAKm8G,sBAAsB/sG,GAAG,qBAAqB,WACjDsX,EAAO4+B,MAAMllD,QAAQ,CACnBT,KAAM,QACNsK,KAAM,8BAGVjK,KAAKm8G,sBAAsB/sG,GAAG,oBAAoB,WAChDsX,EAAO4+B,MAAMllD,QAAQ,CACnBT,KAAM,QACNsK,KAAM,+BAUX,CACD5S,IAAK,wBACLG,MAAO,SAA+Bs9B,EAAQ3J,GAC5C,IAAID,EAAc4J,EAAO5J,aAAe,GACpC4rG,GAAiB,EACjBC,EAAiBh6H,OAAOkwB,KAAK/B,EAAYyI,OAE7C,IAAK,IAAI5J,KAAcmB,EAAYyI,MACjC,IAAK,IAAIP,KAASlI,EAAYyI,MAAM5J,GAAa,CAC/C,IAAIqa,EAAalZ,EAAYyI,MAAM5J,GAAYqJ,GAE1CgR,EAAW/rC,MACdy+H,GAAiB,GAKnBA,GACF92H,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,gBAINlN,OAAOkwB,KAAK/B,EAAY0I,WAAW57B,QACrCgI,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,eAINilF,GAAIN,SAASR,MAAMjjE,IACrBnrB,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,YAINilF,GAAIN,SAASP,OAAOljE,IACtBnrB,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,aAIN8sH,EAAe/+H,QAAU+E,OAAOkwB,KAAK/B,EAAYyI,MAAMojG,EAAe,KAAK/+H,OAAS,GACtFgI,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,wBAINjK,KAAKo1H,aACPp1H,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,4BAWX,CACD5S,IAAK,+BACLG,MAAO,WACL,IAAIgxB,EAASxoB,KAEbA,KAAK00H,mBAAmBtlH,GAAG,mBAAmB,WAC5C,IAAIylH,EAAersG,EAAO6tG,iBAEtBzB,EAAkBpsG,EAAO2zF,sBAAsBhxF,QAE/CmvB,EAAW9xB,EAAO88B,MAAMhL,WAExBw6E,EAAgBx6E,EAAStiD,OAASsiD,EAAS57C,IAAI47C,EAAStiD,OAAS,GAAKwwB,EAAO88B,MAAMe,cAAgB,EAEnG0uE,EAAqBvsG,EAAOusG,qBAE5BJ,GAAoB,CACtBC,gBAAiBA,EACjBC,aAAcA,EACdC,cAAeA,EACfC,mBAAoBA,EACpB9tG,SAAUuB,EAAOvB,WACjBpC,IAAK2D,EAAOw1F,WAEZx1F,EAAO2zF,sBAAsBhxF,MAAM0pG,GAGrCrsG,EAAO88B,MAAMllD,QAAQ,sBAEvBJ,KAAK00H,mBAAmBtlH,GAAG,YAAY,WACrCoZ,EAAOpoB,QAAQ,eAEjBJ,KAAK00H,mBAAmBtlH,GAAG,SAAS,WAClCoZ,EAAO+qG,yBAAyB/qG,EAAOksG,mBAAmBhtH,YAE5D1H,KAAK00H,mBAAmBtlH,GAAG,kBAAkB,WAC3CoZ,EAAOwuG,uBAETh3H,KAAK00H,mBAAmBtlH,GAAG,mBAAmB,WAC5CoZ,EAAO88B,MAAMllD,QAAQ,CACnBT,KAAM,QACNsK,KAAM,4BAGVjK,KAAKy0H,oBAAoBrlH,GAAG,kBAAkB,WAC5CoZ,EAAOwuG,uBAETh3H,KAAK00H,mBAAmBtlH,GAAG,SAAS,WAClCoZ,EAAOyuG,mBAETj3H,KAAK00H,mBAAmBtlH,GAAG,cAAc,WACvCoZ,EAAO+qG,yBAAyB,CAC9Bh6G,QAAS,mGACR86G,OAELr0H,KAAK00H,mBAAmBtlH,GAAG,mBAAmB,WAG5CoZ,EAAO88B,MAAMllD,QAAQ,gBAEvBJ,KAAK00H,mBAAmBtlH,GAAG,sBAAsB,SAAUoB,GAGzDgY,EAAO88B,MAAMllD,QAAQ,CACnBT,KAAM,2BACN01G,QAAS7kG,EAAM6kG,aAGnBr1G,KAAKy0H,oBAAoBrlH,GAAG,SAAS,WACnCoZ,EAAOyuG,qBAGV,CACD5/H,IAAK,sBACLG,MAAO,WACL,OAAOgI,KAAKywB,IAAIjwB,KAAKy0H,oBAAoB7L,mBAAqB5oH,KAAK00H,mBAAmB9L,sBAMvF,CACDvxH,IAAK,OACLG,MAAO,WACLwI,KAAK00H,mBAAmBrtE,OAEpBrnD,KAAKu1H,YAAY5hG,MAAM8+F,sBACzBzyH,KAAKy0H,oBAAoBptE,OAGvBrnD,KAAKu1H,YAAY3hG,UAAU6+F,sBAC7BzyH,KAAK21H,uBAAuBtuE,SAW/B,CACDhwD,IAAK,uBACLG,MAAO,WACL,IAAI2zB,EAAQnrB,KAAKq2H,iBAEblrG,IAAUnrB,KAAKm8G,sBAAsBhxF,UACvCnrB,KAAKm8G,sBAAsBhxF,MAAMA,GACjCnrB,KAAK00H,mBAAmBxK,iBAY3B,CACD7yH,IAAK,qBACLG,MAAO,WACL,IAAI4/C,EAASp3C,KAETmrB,EAAQnrB,KAAKq2H,iBAEblrG,IAAUnrB,KAAKm8G,sBAAsBhxF,UAIzCnrB,KAAKm8G,sBAAsBhxF,MAAMA,GAOjCnrB,KAAK00H,mBAAmBjL,iBAAgB,WAGlCriC,GAAUxtC,QAAQV,YAAckuC,GAAUxtC,QAAQb,QACpD3B,EAAOkO,MAAM6E,eAAe/S,EAAOkO,MAAMe,cAAgB,KAEzDjP,EAAOkO,MAAM6E,eAAe/S,EAAOkO,MAAMe,qBAQ9C,CACDhvD,IAAK,OACLG,MAAO,WACL,IAAIwI,KAAKg2H,iBAAT,CAIIh2H,KAAKslD,MAAM+T,SACbr5D,KAAKslD,MAAM6E,eAAe,GAGxBnqD,KAAKumH,YACPvmH,KAAKqnD,OAGP,IAAIs+D,EAAc3lH,KAAKslD,MAAMwJ,WAG7B,OAAI9uD,KAAKslD,MAAMr+B,aAAe5kB,KACxBrC,KAAKslD,MAAMe,cAAgBs/D,EAAYlnH,MAAM,GACxCuB,KAAKslD,MAAM6E,eAAew7D,EAAYjnH,IAAIinH,EAAY3tH,OAAS,SAF1E,KAWD,CACDX,IAAK,iBACLG,MAAO,WACL,IAAI8yD,EAAStqD,KAETmrB,EAAQnrB,KAAKm8G,sBAAsBhxF,QAMvC,IAAKA,GAASnrB,KAAKslD,MAAM9H,UAAYx9C,KAAKumH,WACxC,OAAO,EAIT,IAAKp7F,EAAMhB,QAAS,CAClB,IAAIw7F,EAAc3lH,KAAK8uD,WAEvB,IAAK62D,EAAY3tH,OAGf,OAAO,EAGT,GAAIovF,GAAUxtC,QAAQV,YAA0C,IAA5Bl5C,KAAKslD,MAAMpsD,aAU7C,OAPA8G,KAAKslD,MAAM3Y,IAAI,kBAAkB,WAC/B2d,EAAOlqD,QAAQ,aAEfkqD,EAAOhF,MAAM6E,eAAew7D,EAAYjnH,IAAI,IAE5C4rD,EAAOi8D,YAAa,MAEf,EAITvmH,KAAKI,QAAQ,aAEbJ,KAAKslD,MAAM6E,eAAew7D,EAAYjnH,IAAI,IAM5C,OAHAsB,KAAKumH,YAAa,EAElBvmH,KAAKqnD,QACE,IAQR,CACDhwD,IAAK,oBACLG,MAAO,WAIL,IACEwI,KAAK+1H,sBACL,MAAOn8H,IAEP,OADAwtF,GAAUviE,IAAI5Z,KAAK,kCAAmCrR,IAC/CoG,KAAKw0F,YAAYi2B,YAAY,UAMtC,GAAIzqH,KAAKslD,MAAM+wB,WAAY,CACzB,IAAI7e,EAAcx3D,KAAKslD,MAAM3U,OAGF,qBAAhB6mB,GAA2D,oBAArBA,EAAYjc,MAC3Dic,EAAYjc,KAAK,MAAM,SAAU3hD,OAIrCoG,KAAKI,QAAQ,gBAWd,CACD/I,IAAK,gBACLG,MAAO,WACL,IAAI0/H,EAAgBl3H,KAAK00H,mBAAmBvM,OAe5C,GAbInoH,KAAKu1H,YAAY5hG,MAAM8+F,uBAMvByE,GAJGl3H,KAAK00H,mBAAmB9N,gBAAkB5mH,KAAK00H,mBAAmB9N,eAAenB,cAIpEyR,GAAiBl3H,KAAKy0H,oBAAoBtM,OAG1CnoH,KAAKy0H,oBAAoBtM,QAIxC+O,EAAL,CAIAl3H,KAAKg+G,QAAQ,qCAGb,IACEh+G,KAAKw0F,YAAYi2B,cACjB,MAAO7wH,IACPwtF,GAAUviE,IAAI5Z,KAAK,0CAA2CrR,QASjE,CACDvC,IAAK,sBACLG,MAAO,SAA6BwzB,GAClC,IAAI26F,EAAc3lH,KAAK8uD,WAEvB,IAAK62D,EAAY3tH,OAEf,OAAO,EAGT,IAAIy0F,EAAUzsF,KAAKgoH,gBAAgBmP,eAAensG,EAAUhrB,KAAKw0F,YAAYvtE,UAE7E,GAAgB,OAAZwlE,EACF,OAAO,EAKT,IAAI2qC,EAAsBloC,GAAIN,SAASzB,YAAYniE,EAAUyhE,GACzDpmC,EAAcrmD,KAAKslD,MAAMe,cACzB/L,EAAWt6C,KAAKslD,MAAMhL,WAE1B,IAAKA,EAAStiD,OAEZ,OAAOo/H,EAAsB/wE,GAAeqtC,GAG9C,IAAI13B,EAAc1hB,EAAS57C,IAAI47C,EAAStiD,OAAS,GAGjD,OAAOgkE,EAAc3V,GAAeqtC,IAAmB0jC,EAAsBp7D,GAAe03B,KAa7F,CACDr8F,IAAK,2BACLG,MAAO,WACL,IAAIkQ,EAAQkC,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAC5E2iH,EAAoB3iH,UAAU,GAC9BgrH,OAAkB,EAClBC,OAAe,EASnB,GAJAD,EAAkBltH,EAAMsjB,UAAYhrB,KAAKm8G,sBAAsBhxF,QAC/DohG,EAAoBA,GAAqB7kH,EAAM6kH,mBAAqBvsH,KAAKusH,mBAGpEqI,EAAiB,CACpB50H,KAAK0H,MAAQA,EAEb,IACE,OAAO1H,KAAKw0F,YAAYi2B,YAAY,WACpC,MAAO7wH,IACP,OAAOoG,KAAKI,QAAQ,UAIxB,IAAI8rF,EAA4F,IAAzElsF,KAAKm8G,sBAAsBrnF,OAAO7J,UAAUwG,OAAOw8D,IAAWj2F,OACjFizB,EAAYjrB,KAAKm8G,sBAAsBrnF,OAAO7J,UAElD,OAAyB,IAArBA,EAAUjzB,QAEZovF,GAAUviE,IAAI5Z,KAAK,kGACnBjL,KAAKslD,MAAMllD,QAAQ,iBACZJ,KAAKm8G,sBAAsB90D,KAAK6kC,KAGrCA,IAKF9E,GAAUviE,IAAI5Z,KAAK,oGACnBggB,EAAUh0B,SAAQ,SAAU+zB,GACtBA,EAAS+iE,eAAiB1rF,YACrB2oB,EAAS+iE,gBAMpB/tF,KAAKslD,MAAMllD,QAAQ,kBAIrBw0H,EAAgB7mC,aAAelpF,KAAK6qB,MAA4B,IAApB68F,EAC5CvsH,KAAKslD,MAAMllD,QAAQ,qBACnBJ,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,8BAGR4qH,EAAe70H,KAAKq2H,iBACpBjvC,GAAUviE,IAAI5Z,KAAK,sDAAwDvD,EAAM6R,QAAU,IAAM7R,EAAM6R,QAAU,IAAM,mCAChHvZ,KAAKm8G,sBAAsBhxF,MAAM0pG,EAAc3oC,MAMvD,CACD70F,IAAK,eACLG,MAAO,WACLwI,KAAK00H,mBAAmBh3E,QAEpB19C,KAAKu1H,YAAY5hG,MAAM8+F,sBACzBzyH,KAAKy0H,oBAAoB/2E,QAGvB19C,KAAKu1H,YAAY3hG,UAAU6+F,sBAC7BzyH,KAAK21H,uBAAuBj4E,UAU/B,CACDrmD,IAAK,iBACLG,MAAO,SAAwB6uD,GAC7B,IAAI/L,EAAWw5C,GAAU9zF,KAAKslD,MAAMhL,WAAY+L,GAEhD,OAAMrmD,KAAKm8G,uBAAyBn8G,KAAKm8G,sBAAsBhxF,SAO1DnrB,KAAKm8G,sBAAsBhxF,QAAQtB,SAQpCywB,GAAYA,EAAStiD,OAChBquD,GAKTrmD,KAAK00H,mBAAmBjL,kBACxBzpH,KAAK00H,mBAAmB94H,QAEpBoE,KAAKu1H,YAAY5hG,MAAM8+F,uBACzBzyH,KAAKy0H,oBAAoBhL,kBACzBzpH,KAAKy0H,oBAAoB74H,SAGvBoE,KAAKu1H,YAAY3hG,UAAU6+F,uBAC7BzyH,KAAK21H,uBAAuBlM,kBAC5BzpH,KAAK21H,uBAAuB/5H,cAI9BoE,KAAKqnD,QAjCI,IAyCV,CACDhwD,IAAK,WACLG,MAAO,WACL,OAAKwI,KAAKm8G,sBAINn8G,KAAKw0F,YACAx0F,KAAKw0F,YAAYvtE,SAGnBioE,GAAIN,SAAS3nE,SAASjnB,KAAKm8G,sBAAsBhxF,SAP/C,IAeV,CACD9zB,IAAK,WACLG,MAAO,WACL,OAAOwI,KAAKymH,YAEb,CACDpvH,IAAK,oBACLG,MAAO,WACL,IAAI6/H,OAAgB,EAEpB,GAAKr3H,KAAKm8G,sBAAV,CAIA,IAAIhxF,EAAQnrB,KAAKm8G,sBAAsBhxF,QAEvC,GAAKA,EAAL,CAIA,IAAIshE,EAAUzsF,KAAKgoH,gBAAgBmP,eAAehsG,EAAOnrB,KAAKw0F,YAAYvtE,UAE1E,GAAgB,OAAZwlE,EAAJ,CAKA,IAAIv4D,EAA6Bl0B,KAAKm8G,sBAAsBrnF,OAAOZ,2BAC/DojG,EAAepoC,GAAIN,SAAS9/B,SAAS3jC,EAAOshE,EAASv4D,GAEzD,GAA4B,IAAxBojG,EAAat/H,OAAjB,CAIA,GAAIgI,KAAKu1H,YAAY5hG,MAAM8+F,qBAAsB,CAI/C,GAHAtnG,EAAQnrB,KAAKu1H,YAAY5hG,MAAM8+F,qBAAqBtnG,QACpDshE,EAAUzsF,KAAKgoH,gBAAgBmP,eAAehsG,EAAOnrB,KAAKw0F,YAAYvtE,UAEtD,OAAZwlE,EACF,OAKF,GAFA4qC,EAAgBnoC,GAAIN,SAAS9/B,SAAS3jC,EAAOshE,EAASv4D,GAEzB,IAAzBmjG,EAAcr/H,OAChB,OAIJ,IAAIu/H,OAAS,EACTC,OAAW,EAEXx3H,KAAKymH,WAAazmH,KAAKymH,UAAUzuH,SACnCu/H,EAASv3H,KAAKymH,UAAU/nH,IAAI,GAC5B84H,EAAWx3H,KAAKymH,UAAUhoH,MAAM,IAG7B44H,EAIMA,EAAc54H,MAAM,GAAK64H,EAAa54H,IAAI,IAAM44H,EAAa74H,MAAM,GAAK44H,EAAc34H,IAAI,GAEnGsB,KAAKymH,UAAY6Q,EAEjBt3H,KAAKymH,UAAYr/B,GAAUhtC,iBAAiB,CAAC,CAACi9E,EAAc54H,MAAM,GAAK64H,EAAa74H,MAAM,GAAK44H,EAAc54H,MAAM,GAAK64H,EAAa74H,MAAM,GAAI44H,EAAc34H,IAAI,GAAK44H,EAAa54H,IAAI,GAAK24H,EAAc34H,IAAI,GAAK44H,EAAa54H,IAAI,MALpOsB,KAAKymH,UAAY6Q,EASft3H,KAAKymH,WAAazmH,KAAKymH,UAAUzuH,QAC/BgI,KAAKymH,UAAU/nH,IAAI,KAAO64H,GAAUv3H,KAAKymH,UAAUhoH,MAAM,KAAO+4H,IAKtEx3H,KAAKg+G,QAAQ,qBAAuB/pB,GAAej0F,KAAKymH,WAAa,KACrEzmH,KAAKslD,MAAMllD,QAAQ,0BAMpB,CACD/I,IAAK,iBACLG,MAAO,WACL,IAAIgzD,EAASxqD,KAETy3H,EAAcz3H,KAAKw0F,YAAYvtE,SAC/BywG,EAAcxoC,GAAIN,SAAS3nE,SAASjnB,KAAKm8G,sBAAsBhxF,SAC/DmvB,EAAWt6C,KAAKslD,MAAMhL,WAEtBq9E,EAAc,SAASA,IAIzBntE,EAAOwzD,QAAQ,yBAA2BxzD,EAAOgqC,YAAYvtE,SAAW,OAASywG,GAEjF,IACEltE,EAAOgqC,YAAYvtE,SAAWywG,EAC9B,MAAO99H,IACPwtF,GAAUviE,IAAI5Z,KAAK,sCAAuCrR,IAG5D4wD,EAAOlF,MAAMllD,QAAQ,kBAErBoqD,EAAOgqC,YAAYprD,oBAAoB,aAAcuuF,IAGnDr9E,EAAStiD,OAAS,IACpB0/H,EAAcl4H,KAAKywB,IAAIynG,EAAap9E,EAAS57C,IAAI47C,EAAStiD,OAAS,KAIjEy/H,IAAgBC,IAEkB,SAAhC13H,KAAKw0F,YAAYt7F,WACnB8G,KAAKw0F,YAAYnrD,iBAAiB,aAAcsuF,GAEhDA,OASL,CACDtgI,IAAK,UACLG,MAAO,WACL,IAAI0zD,EAASlrD,KAEbA,KAAKI,QAAQ,WAETJ,KAAK+nH,YACP/nH,KAAK+nH,WAAWlwB,YAGlB73F,KAAKm8G,sBAAsB1sG,UAC3BzP,KAAK00H,mBAAmBjlH,UACxB,CAAC,QAAS,aAAaxY,SAAQ,SAAU0I,GACvC,IAAIk0H,EAAS3oE,EAAOqqE,YAAY51H,GAAMk0H,OAEtC,IAAK,IAAItyH,KAAMsyH,EACbA,EAAOtyH,GAAItK,SAAQ,SAAUsjH,GACvBA,EAAMoY,gBACRpY,EAAMoY,eAAeljH,gBAK7BzP,KAAKy0H,oBAAoBhlH,UACzBzP,KAAK21H,uBAAuBlmH,UAC5BzP,KAAKsP,MAEDtP,KAAKw0F,YAAY/kF,SACnBzP,KAAKw0F,YAAY/kF,YASpB,CACDpY,IAAK,SACLG,MAAO,WACL,OAAOwI,KAAKm8G,sBAAsBrnF,SAQnC,CACDz9B,IAAK,QACLG,MAAO,WAEL,OAAOwI,KAAKm8G,sBAAsBhxF,SAAWnrB,KAAKs2H,gBAQnD,CACDj/H,IAAK,sBACLG,MAAO,WACL,IAAI2zB,EAAQnrB,KAAKm8G,sBAAsBhxF,QACnCysG,OAAY,EAGhB,GAAKzsG,GAAyC,SAAhCnrB,KAAKw0F,YAAYt7F,WAA/B,CAMA,GAFA0+H,EAAYxjB,GAAqBp0G,KAAKm8G,sBAAsBrnF,OAAQ3J,GAEhEysG,EAAU5/H,OAAS,EAErB,OADAgI,KAAK0H,MAAQ,mEAAqEyjB,EAAMkD,YACjFruB,KAAKw0F,YAAYi2B,YAAY,UAGtCzqH,KAAK63H,0BAA0BD,GAG/B53H,KAAK83H,6BAA6B3sG,MAEnC,CACD9zB,IAAK,4BACLG,MAAO,SAAmCogI,GAKxC,IAAIja,EACJia,EAAU5/H,OAAS,IACY,IAA/B4/H,EAAU,GAAGxgI,QAAQ,MAErBwgI,EAAU,KAAOA,EAAU,GAC3B,IAAIxwC,GAAU35C,YAEd,KACAztC,KAAK00H,mBAAmB1tH,SAAS4wH,EAAU,GAAIja,GAE3Cia,EAAU,IACZ53H,KAAKy0H,oBAAoBztH,SAAS4wH,EAAU,GAAIja,KAOnD,CACDtmH,IAAK,8BACLG,MAAO,WACLwI,KAAK80B,SAAS7J,UAAUh0B,SAAQ,SAAU8gI,GACpCA,EAAQz5G,WAAWsU,QAAU,IAASgmF,aAAe,IAASA,YAAYgB,kBAAoB,IAAShB,YAAYgB,gBAAgB,sBAAwBnG,GAAmBskB,EAAQz5G,WAAWsU,QAAU,OAC7MmlG,EAAQhqC,aAAe1rF,UAmB5B,CACDhL,IAAK,+BACLG,MAAO,SAAsC2zB,GAC3C,IAAIooF,EAAa,EACbV,EAAa,KACbhgF,OAAS,EAET1H,EAAM7M,WAAWsU,SACnBC,EAASygF,GAAYnoF,EAAM7M,WAAWsU,QACtCigF,EAAahgF,EAAOggF,WACpBU,EAAa1gF,EAAO0gF,YAGtBvzG,KAAK80B,SAAS7J,UAAUh0B,SAAQ,SAAU8gI,GACxC,IAAIC,EAAgB,CAClBzkB,WAAY,EACZV,WAAY,MAGVklB,EAAQz5G,WAAWsU,SACrBolG,EAAgB1kB,GAAYykB,EAAQz5G,WAAWsU,SAK7ColG,EAAczkB,aAAeA,IAC/BwkB,EAAQhqC,aAAe1rF,KAKrB21H,EAAcnlB,aAAeA,IAC/BklB,EAAQhqC,aAAe1rF,UAI5B,CACDhL,IAAK,gBACLG,MAAO,SAAuB2zB,GAC5B,IAAIxd,EAAS,EACTg4G,EAAc3lH,KAAK8uD,WAEnB62D,EAAY3tH,SACd2V,EAASg4G,EAAYlnH,MAAM,IAG7B,GAAa0sB,EAAOnrB,KAAKq1H,cAAe1nH,KAQzC,CACDtW,IAAK,mBACLG,MAAO,WACL,IAAI6uD,EAAcrmD,KAAKslD,MAAMe,cACzBzjB,EAAUg8E,GAAOC,mBACjBx3C,EAAOu3C,GAAOG,wBACd9uF,EAAMzwB,KAAKywB,IAAI2S,EAASg8E,GAAOE,wBACnC,OAAOt/G,KAAK8C,IAAIsgC,EAAUyjB,EAAcghB,EAAMp3C,KAQ/C,CACD54B,IAAK,qBACLG,MAAO,WACL,IAAI6uD,EAAcrmD,KAAKslD,MAAMe,cACzBzjB,EAAUg8E,GAAOM,sBACjB73C,EAAOu3C,GAAOQ,2BACdnvF,EAAMzwB,KAAKywB,IAAI2S,EAASg8E,GAAOO,2BACnC,OAAO3/G,KAAK8C,IAAIsgC,EAAUyjB,EAAcghB,EAAMp3C,OAG3C+kG,EAxtCsB,CAytC7B5tC,GAAU35C,aAgBRwqF,GAAiB,SAAwBC,EAAQC,EAAYC,GAC/D,OAAO,SAAUj2F,GACf,IAAInX,EAAWktG,EAAOpjG,OAAO7J,UAAUktG,GACnCE,EAAerqC,GAAehjE,GAC9BstG,EAAmBrqC,GAAUjjE,GAEjC,MAAsB,qBAAXmX,EACFm2F,GAGLn2F,SACKnX,EAASwf,SAEhBxf,EAASwf,UAAW,EAGlBrI,IAAWm2F,GAAqBD,IAElCD,IAEIj2F,EACF+1F,EAAO93H,QAAQ,oBAEf83H,EAAO93H,QAAQ,sBAIZ+hC,KAYPo2F,GAAiB,SAASA,EAAeC,EAAYxtG,EAAUzpB,GACjE,GAAevB,KAAMu4H,GACrB,IAAIE,EAAMD,EAAWE,0BACjBC,EAAsBH,EAAWznF,SAAS4nF,oBAE1CC,EAAaD,EAAsB,SAAW,OAC9CE,EAAwBJ,EAAIG,EAAa,kBAAkBhtH,KAAK6sH,GAEpE,GAAIztG,EAAS1M,WAAWsJ,WAAY,CAClC,IAAIC,EAAamD,EAAS1M,WAAWsJ,WACrC5nB,KAAK8nB,MAAQD,EAAWC,MACxB9nB,KAAK+nB,OAASF,EAAWE,OAG3B/nB,KAAK2yB,UAAY3H,EAAS1M,WAAW0J,UAGrChoB,KAAKuB,GAAKA,EAGVvB,KAAKygD,QAAUw3E,GAAeO,EAAWvtG,UAAWD,EAASzpB,GAAIs3H,IAU/DC,GAA0B,SAAiCN,GAC7D,IAAIvtG,EAAYutG,EAAWvtG,UAE3ButG,EAAW/gG,gBAAkB,WAC3B,OAAKxM,GAAcA,EAAU6J,QAAW7J,EAAU6J,OAAO7J,UAIlDA,EAAU6J,OAAO7J,UAAUwG,QAAO,SAAUtG,GACjD,OAAQ6iE,GAAe7iE,MACtBrpB,KAAI,SAAUlI,EAAG7B,GAClB,OAAO,IAAIwgI,GAAeC,EAAY5+H,EAAGA,EAAE2H,OANpC,KAsBTw3H,GAAoB,CAAC,UAAW,SAAU,QAAS,UAAW,SAK9D,GAAkB,WAMpB,SAASC,EAAgB1gI,GACvB,IAAIwtB,EAAQ9lB,KAEZ,GAAeA,KAAMg5H,GACrBh5H,KAAKslD,MAAQhtD,EAAQwjD,KACrB97C,KAAK8uD,SAAWx2D,EAAQw2D,SACxB9uD,KAAKi5H,iCAAmC3gI,EAAQ2gI,iCAChDj5H,KAAKmrB,MAAQ7yB,EAAQ6yB,MACrBnrB,KAAKk5H,mBAAqB,EAC1Bl5H,KAAKm5H,iBAAmB,KACxBn5H,KAAKo5H,OAAS,KACdp5H,KAAKq5H,yBAA2B,KAChCr5H,KAAKg+G,QAAUP,GAAO,mBACtBz9G,KAAKg+G,QAAQ,cAEb,IAAIsb,EAAiB,WACnB,OAAOxzG,EAAMyzG,uBAGXC,EAAiB,WACnB,OAAO1zG,EAAM2zG,gBAGXC,EAAqB,WACvB,OAAO5zG,EAAM6zG,gBAGXC,EAAuB,WACzB,OAAO9zG,EAAM+zG,kBAGf75H,KAAKslD,MAAMl2C,GAAG,kBAAmBwqH,GACjC55H,KAAKslD,MAAMl2C,GAAG,UAAWoqH,GACzBx5H,KAAKslD,MAAMl2C,GAAG2pH,GAAmBW,GACjC15H,KAAKslD,MAAMl2C,GAAG,UAAWkqH,GAEzBt5H,KAAKyP,QAAU,WACbqW,EAAMk4F,QAAQ,WAEdl4F,EAAMw/B,MAAMh2C,IAAI,kBAAmBsqH,GAEnC9zG,EAAMw/B,MAAMh2C,IAAI,UAAWkqH,GAE3B1zG,EAAMw/B,MAAMh2C,IAAIypH,GAAmBW,GAEnC5zG,EAAMw/B,MAAMh2C,IAAI,UAAWgqH,GAEvBxzG,EAAMuzG,0BACR,IAASt/H,aAAa+rB,EAAMuzG,0BAG9BvzG,EAAM6zG,gBA4VV,OAlVA,GAAYX,EAAiB,CAAC,CAC5B3hI,IAAK,sBACLG,MAAO,WACLwI,KAAK85H,oBAED95H,KAAKq5H,0BACP,IAASt/H,aAAaiG,KAAKq5H,0BAI7Br5H,KAAKq5H,yBAA2B,IAASlgI,WAAW6G,KAAKu5H,oBAAoB3tH,KAAK5L,MAAO,OAU1F,CACD3I,IAAK,oBACLG,MAAO,WACL,GAAIwI,KAAKslD,MAAMu0B,WAAa75E,KAAK65H,iBAG/B,OAFA75H,KAAKk5H,mBAAqB,OAC1Bl5H,KAAKm5H,iBAAmBn5H,KAAKslD,MAAMe,eAIrC,IAAIrmD,KAAKslD,MAAM9H,WAAYx9C,KAAKslD,MAAMu0B,UAAtC,CAIA,IAAIxzB,EAAcrmD,KAAKslD,MAAMe,cACzB/L,EAAWt6C,KAAKslD,MAAMhL,WAE1B,GAAIt6C,KAAKm5H,mBAAqB9yE,KAAiB/L,EAAStiD,QAAUquD,EAAcqtC,IAAmBp5C,EAAS57C,IAAI47C,EAAStiD,OAAS,IAMhI,OAAOgI,KAAKy5H,eAGVz5H,KAAKk5H,oBAAsB,GAAK7yE,IAAgBrmD,KAAKm5H,kBACvDn5H,KAAKk5H,qBACLl5H,KAAK+5H,YACI1zE,IAAgBrmD,KAAKm5H,iBAC9Bn5H,KAAKk5H,sBAELl5H,KAAKk5H,mBAAqB,EAC1Bl5H,KAAKm5H,iBAAmB9yE,MAU3B,CACDhvD,IAAK,eACLG,MAAO,WACLwI,KAAKk5H,mBAAqB,EAEtBl5H,KAAKo5H,SACPp5H,KAAKg+G,QAAQ,gBACbjkH,aAAaiG,KAAKo5H,SAGpBp5H,KAAKo5H,OAAS,OASf,CACD/hI,IAAK,iBACLG,MAAO,WACL,IAAIqiF,EAAU75E,KAAKslD,MAAMu0B,UAEzB,IAAKA,EACH,OAAO,EAGT,IAAI/qB,EAAW9uD,KAAK8uD,WAChBzI,EAAcrmD,KAAKslD,MAAMe,cACzB2zE,EAAuBh6H,KAAKi6H,qBAAqBnrE,EAAUzI,EAAarmD,KAAKmrB,QAASnrB,KAAKi5H,kCAC3F9lC,OAAS,EAEb,GAAI6mC,EAAsB,CACxB,IAAIj+D,EAAcjN,EAASpwD,IAAIowD,EAAS92D,OAAS,GAEjDm7F,EAASp3B,EAGX,GAAI/7D,KAAKk6H,sBAAsBprE,EAAUzI,GAAc,CACrD,IAAI8X,EAAgBrP,EAASrwD,MAAM,GAGnC00F,EAASh1B,EAAgBu1B,GAG3B,MAAsB,qBAAXP,IACTnzF,KAAKg+G,QAAQ,8CAAgD33D,EAAc,wBAAgC4tC,GAAenlC,GAAY,gBAAoBqkC,EAAS,KACnKnzF,KAAKslD,MAAM6E,eAAegpC,IACnB,KAWV,CACD97F,IAAK,WACLG,MAAO,WACL,IAAIwI,KAAKy5H,eAAT,CAKA,IAAIpzE,EAAcrmD,KAAKslD,MAAMe,cACzB/L,EAAWt6C,KAAKslD,MAAMhL,WACtB6/E,EAAermC,GAAUx5C,EAAU+L,GASvC,OAAI8zE,EAAaniI,QAAUquD,EAAc,GAAK8zE,EAAaz7H,IAAI,IAC7DsB,KAAK25H,eACL35H,KAAKslD,MAAM6E,eAAe9D,GAC1BrmD,KAAKg+G,QAAQ,cAAgB33D,EAAc,oCAA4C8zE,EAAa17H,MAAM,GAAK,OAAS07H,EAAaz7H,IAAI,GAAK,yEAE9IsB,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,8BAPV,KAqBD,CACD5S,IAAK,eACLG,MAAO,WACL,IAAIs3D,EAAW9uD,KAAK8uD,WAChBzI,EAAcrmD,KAAKslD,MAAMe,cAE7B,GAAIrmD,KAAKslD,MAAMu0B,WAAa75E,KAAK65H,iBAE/B,OAAO,EAGT,GAAI75H,KAAKslD,MAAMu0B,WAA6B,OAAhB75E,KAAKo5H,OAE/B,OAAO,EAGT,GAAIp5H,KAAKk6H,sBAAsBprE,EAAUzI,GAAc,CACrD,IAAI+zE,EAAYtrE,EAASpwD,IAAIowD,EAAS92D,OAAS,GAS/C,OARAgI,KAAKg+G,QAAQ,mCAAqC33D,EAAc,0CAAkD+zE,GAClHp6H,KAAK25H,eACL35H,KAAKslD,MAAM6E,eAAeiwE,GAE1Bp6H,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,qBAED,EAGT,IAAIqwC,EAAWt6C,KAAKslD,MAAMhL,WACtB+/E,EAAYtmC,GAAcz5C,EAAU+L,GAExC,GAAIrmD,KAAKs6H,gBAAgBD,EAAW//E,EAAU+L,GAY5C,OAPArmD,KAAK25H,eACL35H,KAAKslD,MAAM6E,eAAe9D,GAE1BrmD,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,yBAED,EAIT,GAAIowH,EAAUriI,OAAS,EAAG,CACxB,IAAIuiI,EAAaF,EAAU57H,MAAM,GAAK4nD,EAGtC,OAFArmD,KAAKg+G,QAAQ,cAAgB33D,EAAc,uBAAyBk0E,EAAa,gBAAwBF,EAAU57H,MAAM,IACzHuB,KAAKo5H,OAASjgI,WAAW6G,KAAKw6H,YAAY5uH,KAAK5L,MAAoB,IAAbu6H,EAAmBl0E,IAClE,EAIT,OAAO,IAER,CACDhvD,IAAK,uBACLG,MAAO,SAA8Bs3D,EAAUzI,EAAar7B,GAC1D,IAAIiuG,EAAmCrvH,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,IAAmBA,UAAU,GAEtG,IAAKklD,EAAS92D,OAEZ,OAAO,EAGT,IAAIyiI,EAAa3rE,EAASpwD,IAAIowD,EAAS92D,OAAS,GAAK07F,GACjD53B,GAAU9wC,EAASb,QAMvB,OAJI2xC,GAAUm9D,IACZwB,EAAa3rE,EAASpwD,IAAIowD,EAAS92D,OAAS,GAA+B,EAA1BgzB,EAASkB,gBAGxDm6B,EAAco0E,IAMnB,CACDpjI,IAAK,wBACLG,MAAO,SAA+Bs3D,EAAUzI,GAC9C,SAAIyI,EAAS92D,QACb82D,EAASrwD,MAAM,GAAK,GAAK4nD,EAAcyI,EAASrwD,MAAM,GAAKi1F,MAM5D,CACDr8F,IAAK,kBACLG,MAAO,SAAyB6iI,EAAW//E,EAAU+L,GACnD,GAAyB,IAArBg0E,EAAUriI,OAAc,CAG1B,IAAI0iI,EAAM16H,KAAK26H,uBAAuBrgF,EAAU+L,GAEhD,GAAIq0E,EAEF,OADA16H,KAAKg+G,QAAQ,mCAAqC0c,EAAIj8H,MAAQ,OAASi8H,EAAIh8H,IAAM,6BAAqC2nD,IAC/G,EAIX,OAAO,IASR,CACDhvD,IAAK,cACLG,MAAO,SAAqBojI,GAC1B,IAAItgF,EAAWt6C,KAAKslD,MAAMhL,WACtB+L,EAAcrmD,KAAKslD,MAAMe,cACzBg0E,EAAYtmC,GAAcz5C,EAAU+L,GACxCrmD,KAAK25H,eAEoB,IAArBU,EAAUriI,QAAgBquD,IAAgBu0E,IAI9C56H,KAAKg+G,QAAQ,eAAgB,eAAgB33D,EAAa,yBAA0Bu0E,EAAsB,mBAAoBP,EAAU57H,MAAM,IAE9IuB,KAAKslD,MAAM6E,eAAekwE,EAAU57H,MAAM,GAAKg1F,IAC/CzzF,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,oBAGT,CACD5S,IAAK,yBACLG,MAAO,SAAgC8iD,EAAU+L,GAyB/C,IAFA,IAAIw0E,EAAO7mC,GAAS15C,GAEXviD,EAAI,EAAGA,EAAI8iI,EAAK7iI,OAAQD,IAAK,CACpC,IAAI0G,EAAQo8H,EAAKp8H,MAAM1G,GACnB2G,EAAMm8H,EAAKn8H,IAAI3G,GAEnB,GAAIsuD,EAAc5nD,EAAQ,GAAK4nD,EAAc5nD,EAAQ,EACnD,MAAO,CACLA,MAAOA,EACPC,IAAKA,GAKX,OAAO,SAGJs6H,EArZa,GAwZlB8B,GAAiB,CACnBC,cAAe,GACfC,UAAW,SAAmB5+G,GAC5B,IAAI0/B,EAAO97C,KAAK87C,KAAK,CACnBm/E,0BAA0B,IAExB/+C,EAAYpgC,EAAK4R,eACrB,OAAOtxC,EAAK8/D,KAWZg/C,GAAa,SAASA,EAAWlyF,EAAQ1wC,GAC3C,IAAI6iI,EAAa,EACbhoC,EAAS,EACTioC,EAAeh0C,GAAU52C,aAAasqF,GAAgBxiI,GAC1D0wC,EAAO0H,OAAM,WACX1H,EAAO5oC,QAAQ,CACbT,KAAM,QACNsK,KAAM,oCAUV,IAAIoxH,EAAwB,WACtBloC,GACFnqD,EAAOqd,YAAY8sC,IAWnB5lC,EAAY,SAAmB2uB,GACf,OAAdA,QAAoC5iF,IAAd4iF,IAI1BiX,EAASnqD,EAAO/hB,aAAe5kB,KAAY2mC,EAAOqd,eAAiB,EACnErd,EAAO2D,IAAI,iBAAkB0uF,GAC7BryF,EAAO/xB,IAAIilE,GACXlzC,EAAO5oC,QAAQ,CACbT,KAAM,QACNsK,KAAM,qBAER++B,EAAO2H,SAULtrC,EAAe,WAGjB,GAAIR,KAAK6qB,MAAQyrG,EAA0C,IAA7BC,EAAaL,cACzC/xF,EAAO5oC,QAAQ,CACbT,KAAM,QACNsK,KAAM,kCAHV,CAQA,GAAKmxH,EAAaJ,WAA+C,oBAA3BI,EAAaJ,UAMnD,OADAG,EAAat2H,KAAK6qB,MACX0rG,EAAaJ,UAAUj7H,KAAKipC,EAAQukB,GALzC65B,GAAUviE,IAAInd,MAAM,2EAcpB4zH,EAAgB,SAASA,IAC3BtyF,EAAO15B,IAAI,iBAAkB+rH,GAC7BryF,EAAO15B,IAAI,QAASjK,GACpB2jC,EAAO15B,IAAI,UAAWgsH,IAUpBC,EAAe,SAAsBpsC,GACvCmsC,IACAJ,EAAWlyF,EAAQmmD,IAGrBnmD,EAAO55B,GAAG,QAAS/J,GACnB2jC,EAAO55B,GAAG,UAAWksH,GAGrBtyF,EAAOwyF,oBAAsBD,GAU3BC,GAAsB,SAA6BljI,GACrD4iI,GAAWl7H,KAAM1H,IAGfmjI,GAAY,SAQZC,GAAQ,CACV3wC,eAAgB,GAChB6D,SAAUA,GACVhuD,UAAW,GACXrB,YAAaA,GACblB,QAASA,GACTwyD,MAAOA,GACP8qC,2BAA4B,GAC5BC,0BAA2BlX,GAC3BmX,yBAA0B,GAC1BC,0BAA2B,GAC3B7iI,IAAK81F,MAGP,CAAC,qBAAsB,yBAA0B,0BAA2B,wBAAyB,4BAA6B,6BAA8B,sBAAsB93F,SAAQ,SAAUgsC,GACtMlmC,OAAO6lB,eAAe84G,GAAOz4F,EAAM,CACjCngB,IAAK,WAEH,OADAskE,GAAUviE,IAAI5Z,KAAK,aAAeg4B,EAAO,kDAClC27E,GAAO37E,IAEhBjgB,IAAK,SAAgBxrB,GACnB4vF,GAAUviE,IAAI5Z,KAAK,aAAeg4B,EAAO,kDAEpB,kBAAVzrC,GAAsBA,EAAQ,EACvC4vF,GAAUviE,IAAI5Z,KAAK,gBAAkBg4B,EAAO,uCAI9C27E,GAAO37E,GAAQzrC,QAIrB,IAAIukI,GAAsB,cAEtBC,GAA2B,SAAkCr8H,GAC/D,IAAIq0E,EAAY,yDAEhB,GAAIA,EAAU1vE,KAAK3E,GACjB,MAAO,MAGT,IAAIs8H,EAAS,2BAEb,OAAIA,EAAO33H,KAAK3E,GACP,OAGF,MAWLu8H,GAAuB,SAA8BC,EAAexJ,GAItE,IAHA,IAAIjJ,EAAciJ,EAAexnG,QAC7Bk+C,GAAiB,EAEZtxE,EAAI,EAAGA,EAAIokI,EAAcnkI,OAAQD,IACxC,GAAIokI,EAAcpkI,GAAGwJ,KAAOmoH,EAAYnoH,GAAI,CAC1C8nE,EAAgBtxE,EAChB,MAIJokI,EAAcC,eAAiB/yD,EAC/B8yD,EAAc/7H,QAAQ,CACpBipE,cAAeA,EACf1pE,KAAM,YAYN08H,GAA0B,SAAiCF,EAAelxC,GAC5EA,EAAIxzD,kBAAkBxgC,SAAQ,SAAU2rH,GACtCuZ,EAAcG,gBAAgB1Z,MAEhCsZ,GAAqBC,EAAelxC,EAAIhgE,YAK1CywG,GAAM1vE,cAAgB,WACpB,OAAOo7B,GAAUviE,IAAI5Z,KAAK,4EAG5B,IAAIsxH,GAAgB,SAAuBC,EAAkBzJ,EAAmB0J,GAC9E,IAAKD,EACH,OAAOA,EAGT,IAAIE,OAAgB,EAChBC,OAAgB,EAIpB,GAAIF,EAAmB1e,UACrB2e,EAAgB3J,EAAkBhV,UAClC4e,EAAgBF,EAAmB1e,cAI9B,CACL,IAAI6e,EAAiB9nB,GAAiBie,EAAkBhV,WACpDlrF,EAAS+pG,EAAe7nB,WAAWliF,OAAO77B,MAAM,KAChD6lI,OAAa,EACbhqB,OAAa,EACjBhgF,EAAO57B,SAAQ,SAAUiN,GACvBA,EAAQA,EAAMnN,OAEVm+G,GAAahxG,GACf24H,EAAa34H,EACJixG,GAAajxG,KACtB2uG,EAAa3uG,MAGjBw4H,EAAgBE,EAAej9H,KAAO,aAAekzG,EAAa,IAClE8pB,EAAgBC,EAAej9H,KAAK4E,QAAQ,QAAS,SAAW,aAAes4H,EAAa,IAI9F,IAAIC,EAAwB,GACxBC,EAAgBhK,EAAkB3J,UAEtC,IAAK,IAAI5uF,KAAagiG,EACpBM,EAAsBtiG,GAAa,CACjCwiG,iBAAkBL,EAClBM,iBAAkBP,GAGhBK,EAAcpyG,mBAAqBoyG,EAAcpyG,kBAAkB6P,IAAcuiG,EAAcpyG,kBAAkB6P,GAAW1P,OAC9HgyG,EAAsBtiG,GAAW1P,KAAOiyG,EAAcpyG,kBAAkB6P,GAAW1P,MAK1C,kBAAhC0xG,EAAiBhiG,KAC1BsiG,EAAsBtiG,GAAWjgC,IAAMiiI,EAAiBhiG,IAI5D,OAAO4sD,GAAU52C,aAAagsF,EAAkBM,IAG9CI,GAAkB,SAAyB1E,GAC7C,IAAIzF,EAAoByF,EAAWE,0BAA0BhE,mBACzD+H,EAAqBjE,EAAWE,0BAA0BjE,oBAC1DzrF,EAASo+C,GAAUtvC,QAAQ0gF,EAAWlzE,MAAMvU,SAAS0gC,UAEzD,GAAIzoC,EAAOmqB,IAAK,CACd,IAAIgqE,EAAgBZ,GAAc/D,EAAW4E,QAAQC,WAAYtK,EAAmB0J,GAEhFU,IACFn0F,EAAOqzC,gBAAgBghD,WAAaF,EAGG,KAAjC/1C,GAAUxtC,QAAQV,YAAsBlQ,EAAOmqB,IAAImqE,qBACvDt0F,EAAOmqB,IAAImqE,yBAMfC,GAAqB,WACvB,IAAK9mI,OAAOi0E,aACV,OAAO,KAGT,IAAI8yD,EAAe/mI,OAAOi0E,aAAaC,QAAQoxD,IAE/C,IAAKyB,EACH,OAAO,KAGT,IACE,OAAO9jI,KAAKC,MAAM6jI,GAClB,MAAO5jI,IAEP,OAAO,OAIP6jI,GAAwB,SAA+BnlI,GACzD,IAAK7B,OAAOi0E,aACV,OAAO,EAGT,IAAIgzD,EAAgBH,KACpBG,EAAgBA,EAAgBt2C,GAAU52C,aAAaktF,EAAeplI,GAAWA,EAEjF,IACE7B,OAAOi0E,aAAaE,QAAQmxD,GAAqBriI,KAAKsB,UAAU0iI,IAChE,MAAO9jI,IAKP,OAAO,EAGT,OAAO8jI,GAOThC,GAAMiC,kBAAoB,WACxB,IAAIj2E,EAAQ,IAAS5mC,cAAc,SAEnC,IAAKsmE,GAAU/6B,QAAQ,SAAS/rC,cAC9B,OAAO,EAIT,IAAIs9G,EAAU,CACd,gCACA,gBACA,kBACA,wBACA,kBAAmB,gBAAiB,uBACpC,OAAOA,EAAQ5pF,MAAK,SAAU6pF,GAC5B,MAAO,kBAAkBv5H,KAAKojD,EAAMqE,YAAY8xE,OAf1B,GAmB1BnC,GAAMoC,mBAAqB,WACzB,QAAK12C,GAAU/6B,QAAQ,SAAS/rC,eAIzB,kBAAkBhc,KAAK,IAASwc,cAAc,SAASirC,YAAY,yBALjD,GAQ3B2vE,GAAMqC,qBAAuB,SAAUp+H,GACrC,MAAa,QAATA,EACK+7H,GAAMiC,kBAGF,SAATh+H,GACK+7H,GAAMoC,oBAWjBpC,GAAMp7G,YAAc,WAClB,OAAO8mE,GAAUviE,IAAI5Z,KAAK,4EAG5B,IAAI+yH,GAAc52C,GAAU5zC,aAAa,aAYrC,GAAa,SAAUiJ,GAGzB,SAASwhF,EAAWl3H,EAAQ+0C,EAAMxjD,GAChC,GAAe0H,KAAMi+H,GAGrB,IAAIn4G,EAAQ,GAA0B9lB,MAAOi+H,EAAW/gI,WAAaH,OAAOiT,eAAeiuH,IAAal+H,KAAKC,KAAM87C,EAAMxjD,EAAQ2yF,MAEjI,GAAInvC,EAAK/K,UAAY+K,EAAK/K,SAAS0gC,SAAU,CAC3C,IAAIyW,EAAUd,GAAUtrC,EAAK/K,SAAS0gC,UAEjCyW,EAAQ/vF,eAAe,QAC1B4E,OAAO6lB,eAAeslE,EAAS,MAAO,CACpCplE,IAAK,WAMH,OALAskE,GAAUviE,IAAI5Z,KAAK,4DACnB6wC,EAAK17C,QAAQ,CACXT,KAAM,QACNsK,KAAM,sBAED6b,GAET8W,cAAc,IASlBsrD,EAAQg2C,IAAMp4G,EAEdoiE,EAAQi2C,KAAOr4G,EACfA,EAAM8qB,QAAUs3C,EAUlB,GAPApiE,EAAMw/B,MAAQxJ,EACdh2B,EAAMs3G,QAAUr2H,EAChB+e,EAAMg6F,MAAQ,GACdh6F,EAAMs4G,yBAA0B,EAEhCt4G,EAAMu4G,cAEFv4G,EAAMirB,SAASutF,gBAAkBxiF,EAAK+P,2BAA6B/P,EAAKgQ,0BAC1EhQ,EAAK+P,2BAA0B,GAC/B/P,EAAKgQ,2BAA0B,QAC1B,GAAIhmC,EAAMirB,SAASutF,iBAAmBxiF,EAAKyiF,2BAA6BziF,EAAK0iF,2BAGlF,MAAM,IAAI7lI,MAAM,4EA8BlB,OAzBAmtB,EAAM1W,GAAG,IAAU,CAAC,mBAAoB,yBAA0B,sBAAuB,uBAAuB,SAAUoB,GACxH,IAAImtE,EAAoB,IAASA,mBAAqB,IAAS8gD,yBAA2B,IAASC,sBAAwB,IAASC,oBAEhIhhD,GAAqBA,EAAkB54C,SAASjf,EAAMw/B,MAAMl9C,OAC9D0d,EAAM4yG,0BAA0BkG,0BAIpC94G,EAAM1W,GAAG0W,EAAMw/B,MAAO,WAAW,WAC3BtlD,KAAKo+H,wBACPp+H,KAAKo+H,yBAA0B,EAIjCp+H,KAAKmqD,eAAenqD,KAAKslD,MAAMe,kBAGjCvgC,EAAM1W,GAAG0W,EAAMw/B,MAAO,SAAS,WACzBtlD,KAAK04H,2BACP14H,KAAK04H,0BAA0BmG,kBAInC/4G,EAAM1W,GAAG0W,EAAMw/B,MAAO,OAAQx/B,EAAM6qB,MAE7B7qB,EAicT,OAhhBA,GAASm4G,EAAYxhF,GAkFrB,GAAYwhF,EAAY,CAAC,CACvB5mI,IAAK,cACLG,MAAO,WACL,IAAIkvB,EAAS1mB,KAiBb,GAdAA,KAAK+wC,SAASr1C,gBAAkBsE,KAAK+wC,SAASr1C,kBAAmB,EACjEsE,KAAK+wC,SAASq6C,wBAA0BprF,KAAK+wC,SAASq6C,0BAA2B,EACjFprF,KAAK+wC,SAAS2xE,kCAAsF,IAAnD1iH,KAAK+wC,SAAS2xE,iCAC/D1iH,KAAK+wC,SAAS2yE,oBAAsB1jH,KAAK+wC,SAAS2yE,sBAAuB,EACzE1jH,KAAK+wC,SAAS4nF,oBAAsB34H,KAAK+wC,SAAS4nF,sBAAuB,EACzE34H,KAAK+wC,SAAS+tF,6BAAoF,qBAA9C9+H,KAAKo9H,QAAQ0B,6BAA+C9+H,KAAKo9H,QAAQ0B,6BAA+B9+H,KAAK+wC,SAAS+tF,+BAAgC,EAC1M9+H,KAAK+wC,SAASw6C,iBAAmBvrF,KAAK+wC,SAASw6C,kBAAoB,GACnEvrF,KAAK+wC,SAASy6C,iBAAmBxrF,KAAK+wC,SAASy6C,kBAAoB,GACnExrF,KAAK+wC,SAAS62E,oBAAsB5nH,KAAK+wC,SAAS62E,sBAAuB,EAE1B,kBAApC5nH,KAAK+wC,SAASw7E,oBACvBvsH,KAAK+wC,SAASw7E,kBAAoB,KAGG,kBAA5BvsH,KAAK+wC,SAASpe,WACnB3yB,KAAK+wC,SAAS+tF,6BAA8B,CAC9C,IAAItB,EAAeD,KAEfC,GAAgBA,EAAa7qG,YAC/B3yB,KAAK+wC,SAASpe,UAAY6qG,EAAa7qG,UACvC3yB,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,sCAINuzH,GAAgBA,EAAapX,aAC/BpmH,KAAK+wC,SAASq1E,WAAaoX,EAAapX,WACxCpmH,KAAKslD,MAAMllD,QAAQ,CACjBT,KAAM,QACNsK,KAAM,uCAQyB,kBAA5BjK,KAAK+wC,SAASpe,YACvB3yB,KAAK+wC,SAASpe,UAAYisF,GAAOI,mBAKnCh/G,KAAK+wC,SAASokF,yBAA2Bn1H,KAAK+wC,SAASokF,0BAA4Bn1H,KAAK+wC,SAASpe,YAAcisF,GAAOI,kBAEtH,CAAC,kBAAmB,sBAAuB,mCAAoC,YAAa,sBAAuB,mBAAoB,mBAAoB,0BAA2B,uBAAuB/nH,SAAQ,SAAU8nI,GACvL,qBAA3Br4G,EAAO02G,QAAQ2B,KACxBr4G,EAAOqqB,SAASguF,GAAUr4G,EAAO02G,QAAQ2B,OAG7C/+H,KAAK0iH,iCAAmC1iH,KAAK+wC,SAAS2xE,iCACtD1iH,KAAK0jH,oBAAsB1jH,KAAK+wC,SAAS2yE,sBAQ1C,CACDrsH,IAAK,MACLG,MAAO,SAAas4D,EAAMnwD,GACxB,IAAI6oB,EAASxoB,KAGR8vD,IAIL9vD,KAAKq+H,cAELr+H,KAAK+wC,SAASx2C,IAAMyF,KAAKo9H,QAAQnmH,IACjCjX,KAAK+wC,SAAS+K,KAAO97C,KAAKslD,MAC1BtlD,KAAK+wC,SAASkkF,UAAYyG,GAC1B17H,KAAK+wC,SAASm2E,WAAa8U,GAAyBr8H,GAEpDK,KAAK+wC,SAASoiD,OAAS,SAAU5iE,GAC/B/H,EAAO88B,MAAM6E,eAAe55B,IAG9BvwB,KAAK04H,0BAA4B,IAAI,GAAyB14H,KAAK+wC,UACnE/wC,KAAKg/H,iBAAmB,IAAI,GAAgB53C,GAAU52C,aAAaxwC,KAAK+wC,SAAU,CAChF+d,SAAU,WACR,OAAOtmC,EAAOsmC,YAEhB3jC,MAAO,WACL,OAAO3C,EAAOkwG,0BAA0BvtG,YAG5CnrB,KAAK04H,0BAA0BtpH,GAAG,SAAS,WACzC,IAAI45B,EAASo+C,GAAUtvC,QAAQtvB,EAAO88B,MAAMvU,SAAS0gC,UACrDzoC,EAAOthC,MAAM8gB,EAAOkwG,0BAA0BhxH,UAIhD1H,KAAK04H,0BAA0BrC,eAAiBr2H,KAAKq2H,eAAiBr2H,KAAKq2H,eAAezqH,KAAK5L,MAAQ07H,GAAMC,2BAA2B/vH,KAAK5L,MAC7IA,KAAK04H,0BAA0BtC,sBAAwBsF,GAAME,0BAA0BhwH,KAAK5L,MAE5FA,KAAKirB,UAAYjrB,KAAK04H,0BAA0Bvc,sBAChDn8G,KAAKw0F,YAAcx0F,KAAK04H,0BAA0BlkC,YAIlDz3F,OAAOy/B,iBAAiBx8B,KAAM,CAC5Bq2H,eAAgB,CACdvzG,IAAK,WACH,OAAO9iB,KAAK04H,0BAA0BrC,gBAExCrzG,IAAK,SAAgBqzG,GACnBr2H,KAAK04H,0BAA0BrC,eAAiBA,EAAezqH,KAAK5L,QAGxEomH,WAAY,CACVtjG,IAAK,WACH,OAAO9iB,KAAK04H,0BAA0BhE,mBAAmBtO,WAAW/+C,MAEtErkD,IAAK,SAAgBojG,GACnBpmH,KAAK04H,0BAA0BhE,mBAAmBtO,WAAW/+C,KAAO++C,EAGpEpmH,KAAK04H,0BAA0BhE,mBAAmBtO,WAAWhkG,MAAQ,IAGzEuQ,UAAW,CACT7P,IAAK,WACH,OAAO9iB,KAAK04H,0BAA0BhE,mBAAmB/hG,WAE3D3P,IAAK,SAAgB2P,GACnB3yB,KAAK04H,0BAA0BhE,mBAAmB/hG,UAAYA,EAI9D3yB,KAAK04H,0BAA0BhE,mBAAmBtO,WAAa,CAC7D/+C,KAAM,EACNjlD,MAAO,KAcbwhG,gBAAiB,CACf9gG,IAAK,WACH,IAAIm8G,EAAe,GAAKj/H,KAAK2yB,WAAa,GACtCusG,OAAgB,EAGlBA,EADEl/H,KAAKomH,WAAa,EACJ,EAAIpmH,KAAKomH,WAET,EAGlB,IAAI+Y,EAAgB3/H,KAAKolB,MAAM,GAAKq6G,EAAeC,IACnD,OAAOC,GAETn8G,IAAK,WACHokE,GAAUviE,IAAInd,MAAM,mDAKtB1H,KAAK+wC,SAASpe,YAChB3yB,KAAK2yB,UAAY3yB,KAAK+wC,SAASpe,WAG7B3yB,KAAK+wC,SAASq1E,aAChBpmH,KAAKomH,WAAapmH,KAAK+wC,SAASq1E,YAGlCrpH,OAAOy/B,iBAAiBx8B,KAAK8/G,MAAO,CAClCntF,UAAW,CACT7P,IAAK,WACH,OAAO0F,EAAOmK,WAAa,GAE7BgK,YAAY,GAEd4rF,cAAe,CACbzlG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B0G,kBAAoB,GAE9DziG,YAAY,GAEd6rF,qBAAsB,CACpB1lG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B2G,yBAA2B,GAErE1iG,YAAY,GAEd8rF,sBAAuB,CACrB3lG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B4G,0BAA4B,GAEtE3iG,YAAY,GAEd+rF,qBAAsB,CACpB5lG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B6G,yBAA2B,GAErE5iG,YAAY,GAEdgsF,sBAAuB,CACrB7lG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B8G,0BAA4B,GAEtE7iG,YAAY,GAEd2rF,sBAAuB,CACrBxlG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0B+G,0BAA4B,GAEtE9iG,YAAY,GAEdisF,mBAAoB,CAClB9lG,IAAK,WACH,OAAO0F,EAAOkwG,0BAA0BgH,uBAAyB,GAEnE/iG,YAAY,GAEd2d,SAAU,CACRx3B,IAAK,WACH,OAAOsxE,GAAkB5rE,EAAO88B,MAAMhL,aAExC3d,YAAY,GAEd0pB,YAAa,CACXvjC,IAAK,WACH,OAAO0F,EAAO88B,MAAMe,eAEtB1pB,YAAY,GAEd0/C,cAAe,CACbv5D,IAAK,WACH,OAAO0F,EAAO88B,MAAMoI,gBAEtB/wB,YAAY,GAEdgjG,YAAa,CACX78G,IAAK,WACH,OAAO0F,EAAO88B,MAAMvyC,OAEtB4pB,YAAY,GAEd1V,SAAU,CACRnE,IAAK,WACH,OAAO0F,EAAO88B,MAAMr+B,YAEtB0V,YAAY,GAEd7H,OAAQ,CACNhS,IAAK,WACH,OAAO0F,EAAOyC,UAAU6J,QAE1B6H,YAAY,GAEdijG,iBAAkB,CAChB98G,IAAK,WACH,OAAO0F,EAAO88B,MAAMlQ,qBAEtBzY,YAAY,GAEdmyB,SAAU,CACRhsC,IAAK,WACH,OAAOsxE,GAAkB5rE,EAAO88B,MAAMwJ,aAExCnyB,YAAY,GAEdzvB,UAAW,CACT4V,IAAK,WACH,OAAOje,KAAK6qB,OAEdiN,YAAY,GAEdm2C,qBAAsB,CACpBhwD,IAAK,WACH,OAAO0F,EAAO88B,MAAM+F,2BAEtB1uB,YAAY,KAGhB38B,KAAKslD,MAAM3Y,IAAI,UAAW3sC,KAAK04H,0BAA0B1C,eAAepqH,KAAK5L,KAAK04H,4BAClF14H,KAAKslD,MAAMl2C,GAAG,mBAAmB,WAC3BoZ,EAAOuoB,SAAS+tF,8BAClBrB,GAAsB,CACpB9qG,UAAWnK,EAAOmK,UAClByzF,WAAY5mH,KAAKwnC,MAAMxe,EAAO49F,iBAIpCpmH,KAAK04H,0BAA0BtpH,GAAG,wBAAwB,WAExD0pH,GAAwBtwG,GACxB00G,GAAgB10G,MAIlBxoB,KAAKoP,GAAGpP,KAAK04H,0BAA2B,YAAY,WAClD14H,KAAKslD,MAAMllD,QAAQ,eAIrBJ,KAAKoP,GAAGpP,KAAK04H,0BAA2B,aAAa,WACnD14H,KAAKo+H,yBAA0B,KAEjCp+H,KAAK6/H,sBAGA7/H,KAAKslD,MAAMl9C,MAIhBpI,KAAKslD,MAAMruC,IAAImwE,GAAUwP,IAAIkB,gBAAgB93F,KAAK04H,0BAA0BlkC,iBAS7E,CACDn9F,IAAK,sBACLG,MAAO,WACL,IAAI4/C,EAASp3C,KAETgpC,EAASo+C,GAAUtvC,QAAQ93C,KAAKslD,MAAMvU,SAAS0gC,UAG9CzoC,GAAWA,EAAOmzF,gBAAiBn8H,KAAK8/H,iBAI7C9/H,KAAK8/H,eAAiB92F,EAAOmzF,gBAC7Bn8H,KAAK04H,0BAA0BtpH,GAAG,wBAAwB,WACxDitH,GAAwBjlF,EAAO0oF,eAAgB1oF,MAEjDp3C,KAAKirB,UAAU7b,GAAG,eAAe,WAC/B8sH,GAAqB9kF,EAAO0oF,eAAgB1oF,EAAOnsB,iBAOtD,CACD5zB,IAAK,OACLG,MAAO,WACLwI,KAAK04H,0BAA0B/nF,SAMhC,CACDt5C,IAAK,iBACLG,MAAO,SAAwB6uD,GAC7BrmD,KAAK04H,0BAA0BvuE,eAAe9D,KAM/C,CACDhvD,IAAK,WACLG,MAAO,WACL,OAAOwI,KAAK04H,0BAA0BzxG,aAMvC,CACD5vB,IAAK,WACLG,MAAO,WACL,OAAOwI,KAAK04H,0BAA0B5pE,aAMvC,CACDz3D,IAAK,UACLG,MAAO,WACDwI,KAAKg/H,kBACPh/H,KAAKg/H,iBAAiBvvH,UAGpBzP,KAAK04H,2BACP14H,KAAK04H,0BAA0BjpH,UAG7BzP,KAAK8/H,gBACP9/H,KAAK8/H,eAAerwH,UAGlBzP,KAAK4wC,iBACA5wC,KAAK4wC,QAAQstF,WACbl+H,KAAK4wC,QAAQutF,YACbn+H,KAAK4wC,QAAQq6C,KAGlBjrF,KAAKslD,OAAStlD,KAAKslD,MAAM2lC,YACpBjrF,KAAKslD,MAAM2lC,IAGpBhC,GAAMg1C,EAAWnhI,UAAUI,WAAaH,OAAOiT,eAAeiuH,EAAWnhI,WAAY,UAAWkD,MAAMD,KAAKC,QAE5G,CACD3I,IAAK,uBACLG,MAAO,SAA8B+4B,EAAMh4B,GACzC,OAAOk6F,GAAe,CACpBznE,SAAUhrB,KAAK04H,0BAA0BvtG,QACzCoF,KAAMA,EACNh4B,SAAUA,MAIb,CACDlB,IAAK,oBACLG,MAAO,SAA8Bm6F,EAAap5F,GAChD,IAAI86F,IAAiBzpF,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,KAAmBA,UAAU,GAChFspF,EAAatpF,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,EACrF,OAAOopF,GAAkB,CACvBrB,YAAaA,EACb3mE,SAAUhrB,KAAK04H,0BAA0BvtG,QACzC+nE,WAAYA,EACZG,eAAgBA,EAChBF,OAAQnzF,KAAK+wC,SAASoiD,OACtBr3C,KAAM97C,KAAK+wC,SAAS+K,KACpBvjD,SAAUA,QAIT0lI,EAjhBQ,CAkhBfD,IAUE+B,GAAmB,CACrB91H,KAAM,yBACNw8E,QAASg1C,GACTvuE,gBAAiB,SAAyBjB,GACxC,IAAI3zD,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAC9EwxH,EAAeh0C,GAAU52C,aAAa42C,GAAU9uF,QAASA,GAC7D,OAAOynI,GAAiBh0E,YAAYE,EAAOtsD,KAAMy7H,IAEnDztE,aAAc,SAAsB5mD,EAAQ+0C,GAC1C,IAAIxjD,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAC9EwxH,EAAeh0C,GAAU52C,aAAa42C,GAAU9uF,QAASA,GAI7D,OAHAwjD,EAAKmvC,IAAM,IAAI,GAAWlkF,EAAQ+0C,EAAMs/E,GACxCt/E,EAAKmvC,IAAIhyF,IAAM81F,KACfjzC,EAAKmvC,IAAIh0E,IAAIlQ,EAAOkQ,IAAKlQ,EAAOpH,MACzBm8C,EAAKmvC,KAEdl/B,YAAa,SAAqBpsD,GAChC,IAAIrH,EAAUsR,UAAU5R,OAAS,QAAsBsB,IAAjBsQ,UAAU,GAAmBA,UAAU,GAAK,GAE9Eo2H,EAAwB54C,GAAU52C,aAAa42C,GAAU9uF,QAASA,GAClEgmI,EAAiB0B,EAAsB/0C,IAAIqzC,eAE3C2B,EAAgBjE,GAAyBr8H,GACzCugI,EAAoBD,KAAmBvE,GAAMqC,qBAAqBkC,IAAkB3B,GACxF,OAAO4B,EAAoB,QAAU,KAIJ,qBAA1B94C,GAAUwxB,aAAwD,qBAAlBxxB,GAAUwP,MACnExP,GAAUwxB,YAAcA,GACxBxxB,GAAUwP,IAAMkjB,IAIdlB,GAAYiB,8BACdzyB,GAAU/6B,QAAQ,SAASQ,sBAAsBkzE,GAAkB,GAGrE34C,GAAU62C,WAAa,GACvB72C,GAAU24C,iBAAmBA,GAC7B34C,GAAU8H,IAAMwsC,GAEXt0C,GAAUr5B,KACbq5B,GAAU7vC,kBAAkB,MAAOmkF,IAGrCt0C,GAAU9uF,QAAQ2yF,IAAM7D,GAAU9uF,QAAQ2yF,KAAO,GAE7C7D,GAAUT,eACZS,GAAUT,eAAe,sBAAuB60C,IAEhDp0C,GAAUhB,OAAO,sBAAuBo1C,IAG3B,UCpx4Cf,IACEvxH,KAAM,cACNwyB,MAAO,CACLnkC,QAAS,CACPqH,KAAM5C,OACN,UACE,MAAO,MAIb,OACE,MAAO,CACLisC,OAAQ,OAGZi+C,QAAS,CACP,oBACE,IAAIk5C,EAAUx8F,SAAShjB,eAAe,WAClCw/G,EAAQ92F,iBACV82F,EAAQ92F,iBAAiB,eAAe,SAAhD,GACUzvC,EAAEoxC,oBACZ,GAEQm1F,EAAQ7zF,YAAY,iBAAiB,WACnC71C,OAAO+Z,MAAM66B,aAAc,OAKnC,UACErrC,KAAKgpC,OAAS,GAClB,uBACA,cACA,eAEIhpC,KAAKogI,qBAEP,gBACMpgI,KAAKgpC,QACPhpC,KAAKgpC,OAAOv5B,YChD6U,M,aCO3V0jC,GAAY,gBACd,GACApuB,EACAQ,GACA,EACA,KACA,KACA,MAIa,aAAA4tB,G,6CCPf,IACEktF,EACAC,EACAx/H,EAAa,EAAQ,QAAgBA,WACrCy/H,EAAe,SAASvzH,GACtB,OAAO,IAAInI,KAAe,IAAVmI,EAAiB,aAEnCwzH,EAAmB,SAAShlC,GAC1B,MAAO,CACLgC,WAAuB,GAAXhC,EAAM,MAAe,EACjCC,UAAsB,EAAXD,EAAM,GACjBE,cAA0B,IAAXF,EAAM,MAAe,EACpCG,eAA2B,GAAXH,EAAM,MAAe,EACrCiC,cAA0B,GAAXjC,EAAM,MAAe,EACpCkC,gBAA4B,EAAXlC,EAAM,GACvBmC,oBAAsBnC,EAAM,IAAM,EAAKA,EAAM,KAQjDj4F,EAAY,SAASG,GACnB,IAAI5M,EAAS,GAKb,OAJAA,GAAU0P,OAAO+L,aAAa7O,EAAO,IACrC5M,GAAU0P,OAAO+L,aAAa7O,EAAO,IACrC5M,GAAU0P,OAAO+L,aAAa7O,EAAO,IACrC5M,GAAU0P,OAAO+L,aAAa7O,EAAO,IAC9B5M,GAGToK,EAAU,SAASrG,EAAMopD,GACvB,IACIlsD,EAAG+5B,EAAMnyB,EAAMjB,EAAK+hI,EADpB5sC,EAAU,GAGd,IAAK5vC,EAAKjsD,OAER,OAAO,KAGT,IAAKD,EAAI,EAAGA,EAAI8C,EAAKsC,YACnB20B,EAAQhxB,EAAWjG,EAAK9C,IAAU,GACf8C,EAAK9C,EAAI,IAAM,GACf8C,EAAK9C,EAAI,IAAO,EAChB8C,EAAK9C,EAAI,IAE5B4H,EAAO4D,EAAU1I,EAAK2I,SAASzL,EAAI,EAAGA,EAAI,IAE1C2G,EAAMozB,EAAO,EAAI/5B,EAAI+5B,EAAOj3B,EAAKsC,WAE7BwC,IAASskD,EAAK,KACI,IAAhBA,EAAKjsD,OAGP67F,EAAQl8F,KAAKkD,EAAK2I,SAASzL,EAAI,EAAG2G,KAGlC+hI,EAAav/H,EAAQrG,EAAK2I,SAASzL,EAAI,EAAG2G,GAAMulD,EAAK3sD,MAAM,IACvDmpI,EAAWzoI,SACb67F,EAAUA,EAAQjyF,OAAO6+H,MAI/B1oI,EAAI2G,EAIN,OAAOm1F,GAET6sC,EAAW,SAASC,GAClB,IAGE5oI,EACAC,EAHA4oI,EAAU,IAAIn9H,SAASk9H,EAAUj9H,OAAQi9H,EAAUh9H,WAAYg9H,EAAUxjI,YACzErG,EAAS,GAGX,IAAKiB,EAAI,EAAGA,EAAI,EAAI4oI,EAAU3oI,OAAQD,GAAKC,EAKzC,GAJAA,EAAS4oI,EAAQ/8H,UAAU9L,GAC3BA,GAAK,EAGDC,GAAU,EACZlB,EAAOa,KAAK,uDAId,OAAuB,GAAfgpI,EAAU5oI,IAClB,KAAK,EACHjB,EAAOa,KAAK,yCACZ,MACF,KAAK,EACHb,EAAOa,KAAK,6CACZ,MACF,KAAK,EACHb,EAAOa,KAAK,YACZ,MACF,KAAK,EACHb,EAAOa,KAAK,0BACZ,MACF,KAAK,EACHb,EAAOa,KAAK,0BACZ,MACF,KAAK,EACHb,EAAOa,KAAK,8BACZ,MACF,QACEb,EAAOa,KAAK,iBAAmBgpI,EAAU5oI,GAAK,IAC9C,MAGJ,OAAOjB,GAIT6C,EAAQ,CAINwgG,KAAM,SAASt/F,GACb,IAAIwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAC3D,MAAO,CACL0jI,mBAAoBx9H,EAAKy9H,UAAU,GACnCh5G,MAAOzkB,EAAKy9H,UAAU,IACtB/4G,OAAQ1kB,EAAKy9H,UAAU,IACvBC,gBAAiB19H,EAAKy9H,UAAU,IAAOz9H,EAAKy9H,UAAU,IAAM,GAC5DE,eAAgB39H,EAAKy9H,UAAU,IAAOz9H,EAAKy9H,UAAU,IAAM,GAC3DG,WAAY59H,EAAKy9H,UAAU,IAC3BI,MAAO79H,EAAKy9H,UAAU,IACtBl3D,OAAQy2D,EAAWxlI,EAAK2I,SAAS,GAAI3I,EAAKsC,eAG9Ci9F,KAAM,SAASv/F,GACb,IAYEsmI,EACAC,EACAzzH,EACA5V,EAdAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPuqI,qBAAsBxmI,EAAK,GAC3BymI,qBAAsBzmI,EAAK,GAC3BuhG,qBAAsBvhG,EAAK,GAC3B0mI,mBAAoB1mI,EAAK,GACzB2mI,mBAA8B,EAAV3mI,EAAK,GACzBkhG,IAAK,GACLC,IAAK,IAEPylC,EAAuC,GAAV5mI,EAAK,GAQpC,IADA8S,EAAS,EACJ5V,EAAI,EAAGA,EAAI0pI,EAA4B1pI,IAC1CqpI,EAAU/9H,EAAKy9H,UAAUnzH,GACzBA,GAAU,EACV7W,EAAOilG,IAAIpkG,KAAK,IAAI8F,WAAW5C,EAAK2I,SAASmK,EAAQA,EAASyzH,KAC9DzzH,GAAUyzH,EAKZ,IAFAD,EAA4BtmI,EAAK8S,GACjCA,IACK5V,EAAI,EAAGA,EAAIopI,EAA2BppI,IACzCqpI,EAAU/9H,EAAKy9H,UAAUnzH,GACzBA,GAAU,EACV7W,EAAOklG,IAAIrkG,KAAK,IAAI8F,WAAW5C,EAAK2I,SAASmK,EAAQA,EAASyzH,KAC9DzzH,GAAUyzH,EAEZ,OAAOtqI,GAETujG,KAAM,SAASx/F,GACb,IAAIwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAC3D,MAAO,CACLukI,aAAcr+H,EAAKQ,UAAU,GAC7B89H,WAAYt+H,EAAKQ,UAAU,GAC3B+9H,WAAYv+H,EAAKQ,UAAU,KAG/B00F,KAAM,SAAS19F,GACb,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCq+H,KAAOhnI,EAAK,IAAM,EAAKA,EAAK,GAC5BinI,eAA0B,GAAVjnI,EAAK,GACrBknI,cAAe,CACbC,wBAAyBnnI,EAAK,IAC9BuqG,WAAavqG,EAAK,MAAQ,EAAK,GAC/BgpG,WAAahpG,EAAK,KAAO,GAAOA,EAAK,KAAO,EAAKA,EAAK,IACtD8mI,WAAa9mI,EAAK,KAAO,GACtBA,EAAK,KAAO,GACZA,EAAK,KAAQ,EACdA,EAAK,IACP+mI,WAAa/mI,EAAK,KAAO,GACtBA,EAAK,KAAO,GACZA,EAAK,KAAQ,EACdA,EAAK,IACPonI,wBAAyB,CACvBh4G,IAAKpvB,EAAK,IACV7C,OAAQ6C,EAAK,IACbqnI,gBAAkBrnI,EAAK,MAAQ,EAAK,GACpCsnI,wBAAqC,EAAXtnI,EAAK,MAAe,EAC1CA,EAAK,MAAQ,EAAK,EACtBunI,qBAAuBvnI,EAAK,MAAQ,EAAK,OAKjD29F,KAAM,SAAS39F,GACb,IACEwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPurI,WAAY9+H,EAAU1I,EAAK2I,SAAS,EAAG,IACvC8+H,aAAcj/H,EAAKQ,UAAU,GAC7B0+H,iBAAkB,IAEpBxqI,EAAI,EACN,MAAOA,EAAI8C,EAAKsC,WACdrG,EAAOyrI,iBAAiB5qI,KAAK4L,EAAU1I,EAAK2I,SAASzL,EAAGA,EAAI,KAC5DA,GAAK,EAEP,OAAOjB,GAETwhG,KAAM,SAASz9F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBy/F,KAAM,SAASz/F,GACb,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCg/H,eAAgBnC,EAAWxlI,EAAK2I,SAAS,MAG7CJ,KAAM,SAASvI,GACb,IACEwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAAS+B,EAAKO,SAAS,GACvB43F,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCF,YAAaC,EAAU1I,EAAK2I,SAAS,EAAG,KACxCyG,KAAM,IAERlS,EAAI,EAGN,IAAKA,EAAI,GAAIA,EAAI8C,EAAKsC,WAAYpF,IAAK,CACrC,GAAgB,IAAZ8C,EAAK9C,GAAa,CAEpBA,IACA,MAEFjB,EAAOmT,MAAQzD,OAAO+L,aAAa1X,EAAK9C,IAM1C,OAFAjB,EAAOmT,KAAOk5F,mBAAmBsqB,OAAO32H,EAAOmT,OAExCnT,GAET2hG,KAAM,SAAS59F,GACb,MAAO,CACLsC,WAAYtC,EAAKsC,WACjBslI,KAAM/B,EAAS7lI,KAGnB2G,KAAM,SAAS3G,GACb,IAGE8wB,EAFAtoB,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDpF,EAAI,EAEJjB,EAAS,CACPwK,QAAS+B,EAAKO,SAAS,GACvB43F,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCmoB,SAAU,IA4Bd,OA1BuB,IAAnB70B,EAAOwK,SACTvJ,GAAK,EACLjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2J,UAAY4C,EAAKQ,UAAU9L,GAClCA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,KAEjCjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2J,UAAY4C,EAAKQ,UAAU9L,GAClCA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,IAEnCA,GAAK,EAGL4zB,EAAWtoB,EAAKy9H,UAAU/oI,GAC1BjB,EAAO60B,UAAYnlB,OAAO+L,aAAgC,IAAlBoZ,GAAY,KACpD70B,EAAO60B,UAAYnlB,OAAO+L,aAA0C,KAAhB,IAAXoZ,IAAsB,IAC/D70B,EAAO60B,UAAYnlB,OAAO+L,aAAiC,IAAR,GAAXoZ,IAEjC70B,GAETkiG,KAAM,SAASn+F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtB69F,KAAM,SAAS79F,GACb,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvC83F,eAAiBzgG,EAAK,IAAM,GACzBA,EAAK,IAAM,GACXA,EAAK,IAAM,EACXA,EAAK,KAGZ89F,KAAM,SAAS99F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAMtB0/F,KAAM,SAAS1/F,GACb,IACEwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CAEP+pI,mBAAoBx9H,EAAKy9H,UAAU,GAEnC1lC,aAAc/3F,EAAKy9H,UAAU,IAC7BrkC,WAAYp5F,EAAKy9H,UAAU,IAG3BzlC,WAAYh4F,EAAKy9H,UAAU,IAAOz9H,EAAKy9H,UAAU,IAAM,OAQ3D,OAHIjmI,EAAKsC,WAAa,KACpBrG,EAAO6rI,iBAAmBtC,EAAWxlI,EAAK2I,SAAS,KAAK,IAEnD1M,GAET8hG,KAAM,SAAS/9F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBg+F,KAAM,SAASh+F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBi+F,KAAM,SAASj+F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBk+F,KAAM,SAASl+F,GACb,IACEwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDpF,EAAI,EACJjB,EAAS,CACPwK,QAAS+B,EAAKO,SAAS,GACvB43F,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,KAkC3C,OA/BuB,IAAnB1M,EAAOwK,SACTvJ,GAAK,EACLjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2J,UAAY4C,EAAKQ,UAAU9L,GAClCA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,KAEjCjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2J,UAAY4C,EAAKQ,UAAU9L,GAClCA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,IAEnCA,GAAK,EAGLjB,EAAOuwE,KAAOhkE,EAAKy9H,UAAU/oI,GAAMsL,EAAKy9H,UAAU/oI,EAAI,GAAK,GAC3DA,GAAK,EACLjB,EAAOi4D,OAAS1rD,EAAKO,SAAS7L,GAAMsL,EAAKO,SAAS7L,EAAI,GAAK,EAC3DA,GAAK,EACLA,GAAK,EACLA,GAAK,EACLjB,EAAO8rI,OAAS,IAAIx6G,YAAYvtB,EAAK2I,SAASzL,EAAGA,EAAI,KACrDA,GAAK,GACLA,GAAK,GACLjB,EAAO+rI,YAAcx/H,EAAKQ,UAAU9L,GAC7BjB,GAETgsI,KAAM,SAASjoI,GACb,IAAIwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAC3D,MAAO,CACLmE,QAAS+B,EAAKO,SAAS,GACvB43F,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvC6jE,KAAMhkE,EAAKQ,UAAU,GACrBk/H,aAAc1/H,EAAKQ,UAAU,KAGjCo1F,KAAM,SAASp+F,GACb,IAKK9C,EAJHjB,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCR,QAAS,IAGb,IAAKjL,EAAI,EAAGA,EAAI8C,EAAKsC,WAAYpF,IAC/BjB,EAAOkM,QAAQrL,KAAK,CAClB8jG,WAAsB,GAAV5gG,EAAK9C,KAAc,EAC/B2jG,cAAyB,GAAV7gG,EAAK9C,KAAc,EAClC4jG,cAAyB,EAAV9gG,EAAK9C,KAGxB,OAAOjB,GAETs6B,KAAM,SAASv2B,GACb,IAWI9C,EAXAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCguB,WAAY,GACZwxG,YAAa3/H,EAAKQ,UAAU,GAC5BpD,UAAW4C,EAAKQ,UAAU,GAC1Bo/H,yBAA0B5/H,EAAKQ,UAAU,IACzCguB,YAAaxuB,EAAKQ,UAAU,KAE9Bq/H,EAAiB7/H,EAAKy9H,UAAU,IAGpC,IAAK/oI,EAAI,GAAImrI,EAAgBnrI,GAAK,GAAImrI,IACpCpsI,EAAO06B,WAAW75B,KAAK,CACrBg6B,eAA0B,IAAV92B,EAAK9C,MAAe,EACpCg6B,eAAoC,WAApB1uB,EAAKQ,UAAU9L,GAC/Bi6B,mBAAoB3uB,EAAKQ,UAAU9L,EAAI,GACvCorI,iBAAgC,IAAdtoI,EAAK9C,EAAI,IAC3BqrI,SAAwB,IAAdvoI,EAAK9C,EAAI,MAAe,EAClCsrI,aAAsC,UAAxBhgI,EAAKQ,UAAU9L,EAAI,KAIrC,OAAOjB,GAET2jG,KAAM,SAAS5/F,GACb,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvC8/H,QAASzoI,EAAK,GAAMA,EAAK,GAAK,MAGlCq+F,KAAM,SAASr+F,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtB6/F,KAAM,SAAS7/F,GACb,IAQE9C,EAPAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvC+/H,aAAc,IAEhBC,EAAangI,EAAKQ,UAAU,GAE9B,IAAK9L,EAAI,EAAGyrI,EAAYzrI,GAAK,EAAGyrI,IAC9B1sI,EAAOysI,aAAa5rI,KAAK0L,EAAKQ,UAAU9L,IAE1C,OAAOjB,GAET6jG,KAAM,SAAS9/F,GACb,IAQE9C,EAPAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDqmI,EAAangI,EAAKQ,UAAU,GAC5B/M,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCigI,eAAgB,IAGpB,IAAK1rI,EAAI,EAAGyrI,EAAYzrI,GAAK,GAAIyrI,IAC/B1sI,EAAO2sI,eAAe9rI,KAAK,CACzB+rI,WAAYrgI,EAAKQ,UAAU9L,GAC3B4rI,gBAAiBtgI,EAAKQ,UAAU9L,EAAI,GACpC6rI,uBAAwBvgI,EAAKQ,UAAU9L,EAAI,KAG/C,OAAOjB,GAETkN,KAAM,SAASnJ,GACb,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCS,mBAAoBo8H,EAAWxlI,EAAK2I,SAAS,MAGjDo3F,KAAM,SAAS//F,GACb,IAQE9C,EAPAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCqgI,WAAYxgI,EAAKQ,UAAU,GAC3BigI,QAAS,IAGb,IAAK/rI,EAAI,GAAIA,EAAI8C,EAAKsC,WAAYpF,GAAK,EACrCjB,EAAOgtI,QAAQnsI,KAAK0L,EAAKQ,UAAU9L,IAErC,OAAOjB,GAET+jG,KAAM,SAAShgG,GACb,IAQE9C,EAPAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCugI,cAAe,IAEjBP,EAAangI,EAAKQ,UAAU,GAG9B,IAAK9L,EAAI,EAAGyrI,EAAYzrI,GAAK,EAAGyrI,IAC9B1sI,EAAOitI,cAAcpsI,KAAK,CACxBsvG,YAAa5jG,EAAKQ,UAAU9L,GAC5BisI,YAAa3gI,EAAKQ,UAAU9L,EAAI,KAGpC,OAAOjB,GAETgkG,KAAM,SAASjgG,GACb,OAAOlB,EAAM6+F,KAAK39F,IAEpBsH,KAAM,SAAStH,GACb,IAAI/D,EAAS,CACXwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCb,oBAAqB7B,EAAWjG,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,EAAIA,EAAK,KAMtF,OAJuB,IAAnB/D,EAAOwK,UACTxK,EAAO6L,qBAAuBnD,KAAK4C,IAAI,EAAG,IAC1CtL,EAAO6L,qBAAuB7B,EAAWjG,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,KAAO,EAAIA,EAAK,MAEzF/D,GAETkL,KAAM,SAASnH,GACb,IAcE9C,EAbAsL,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDrG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCf,QAASY,EAAKQ,UAAU,IAE1BogI,EAA0C,EAAlBntI,EAAO0kG,MAAM,GACrC0oC,EAAkD,EAAlBptI,EAAO0kG,MAAM,GAC7C2oC,EAAiD,EAAlBrtI,EAAO0kG,MAAM,GAC5C4oC,EAA6C,GAAlBttI,EAAO0kG,MAAM,GACxC6oC,EAA8C,GAAlBvtI,EAAO0kG,MAAM,GACzC8oC,EAAoC,MAAlBxtI,EAAO0kG,MAAM,GAC/B+oC,EAAuC,OAAlBztI,EAAO0kG,MAAM,GA+BpC,OA5BAzjG,EAAI,EACAksI,IACFlsI,GAAK,EAELjB,EAAO8nG,eAAiBv7F,EAAKQ,UAAU,IACvC9L,GAAK,GAEHmsI,IACFptI,EAAO8sI,uBAAyBvgI,EAAKQ,UAAU9L,GAC/CA,GAAK,GAEHosI,IACFrtI,EAAO0tI,sBAAwBnhI,EAAKQ,UAAU9L,GAC9CA,GAAK,GAEHqsI,IACFttI,EAAO2tI,kBAAoBphI,EAAKQ,UAAU9L,GAC1CA,GAAK,GAEHssI,IACFvtI,EAAO4tI,mBAAqBrhI,EAAKQ,UAAU9L,IAEzCusI,IACFxtI,EAAOwtI,iBAAkB,IAEtBL,GAAyBM,IAC5BztI,EAAO6tI,sBAAuB,GAEzB7tI,GAETuK,KAAM,SAASxG,GACb,IACEwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YACvDpF,EAAI,EACJjB,EAAS,CACPwK,QAAS+B,EAAKO,SAAS,GACvB43F,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,KAqC3C,OAnCuB,IAAnB1M,EAAOwK,SACTvJ,GAAK,EACLjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2L,QAAUY,EAAKQ,UAAU9L,GAChCA,GAAK,EACLA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,KAEjCjB,EAAOq8E,aAAeotD,EAAal9H,EAAKQ,UAAU9L,IAClDA,GAAK,EACLjB,EAAO4rI,iBAAmBnC,EAAal9H,EAAKQ,UAAU9L,IACtDA,GAAK,EACLjB,EAAO2L,QAAUY,EAAKQ,UAAU9L,GAChCA,GAAK,EACLA,GAAK,EACLjB,EAAOmwB,SAAW5jB,EAAKQ,UAAU9L,IAEnCA,GAAK,EACLA,GAAK,EACLjB,EAAO8tI,MAAQvhI,EAAKy9H,UAAU/oI,GAC9BA,GAAK,EACLjB,EAAO+tI,eAAiBxhI,EAAKy9H,UAAU/oI,GACvCA,GAAK,EAELjB,EAAOi4D,OAAS1rD,EAAKO,SAAS7L,GAAMsL,EAAKO,SAAS7L,EAAI,GAAK,EAC3DA,GAAK,EACLA,GAAK,EACLjB,EAAO8rI,OAAS,IAAIx6G,YAAYvtB,EAAK2I,SAASzL,EAAGA,EAAI,KACrDA,GAAK,GACLjB,EAAOgxB,MAAQzkB,EAAKy9H,UAAU/oI,GAAMsL,EAAKy9H,UAAU/oI,EAAI,GAAK,GAC5DA,GAAK,EACLjB,EAAOixB,OAAS1kB,EAAKy9H,UAAU/oI,GAAMsL,EAAKy9H,UAAU/oI,EAAI,GAAK,GACtDjB,GAETiL,KAAM,SAASlH,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBuG,KAAM,SAASvG,GACb,MAAO,CACLkI,MAAOs9H,EAAWxlI,KAGtBs+F,KAAM,SAASt+F,GACb,IAAIwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAC3D,MAAO,CACLmE,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCf,QAASY,EAAKQ,UAAU,GACxBihI,8BAA+BzhI,EAAKQ,UAAU,GAC9C2gI,sBAAuBnhI,EAAKQ,UAAU,IACtC4gI,kBAAmBphI,EAAKQ,UAAU,IAClCkhI,gBAA4B,EAAXlqI,EAAK,IACtBmqI,oBAAgC,IAAXnqI,EAAK,MAAe,EACzCoqI,qBAAiC,GAAXpqI,EAAK,MAAe,EAC1CqqI,oBAAgC,GAAXrqI,EAAK,MAAe,EACzCsqI,4BAAwC,EAAXtqI,EAAK,KAClCuqI,0BAA2B/hI,EAAKy9H,UAAU,MAG9C1nC,KAAM,SAASv+F,GACb,IAgBE0iG,EAfAzmG,EAAS,CACPwK,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCR,QAAS,IAEXK,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAEvDkoI,EAAsC,EAAlBvuI,EAAO0kG,MAAM,GACjC8pC,EAA4C,EAAlBxuI,EAAO0kG,MAAM,GACvC+pC,EAA0C,EAAlBzuI,EAAO0kG,MAAM,GACrCgqC,EAAsC,EAAlB1uI,EAAO0kG,MAAM,GACjCiqC,EAAuC,EAAlB3uI,EAAO0kG,MAAM,GAClCkqC,EAAuD,EAAlB5uI,EAAO0kG,MAAM,GAClDyL,EAAc5jG,EAAKQ,UAAU,GAC7B8J,EAAS,EAGP03H,IAEFvuI,EAAOgmG,WAAaz5F,EAAKsiI,SAASh4H,GAClCA,GAAU,GAKR23H,GAA2Br+B,IAC7B1J,EAAS,CACP/B,MAAOglC,EAAiB3lI,EAAK2I,SAASmK,EAAQA,EAAS,KAEzDA,GAAU,EACN43H,IACFhoC,EAAOt2E,SAAW5jB,EAAKQ,UAAU8J,GACjCA,GAAU,GAER63H,IACFjoC,EAAOzrE,KAAOzuB,EAAKQ,UAAU8J,GAC7BA,GAAU,GAER+3H,IAEFnoC,EAAO36F,sBAAwBS,EAAKQ,UAAU8J,GAC9CA,GAAU,GAEZ7W,EAAOkM,QAAQrL,KAAK4lG,GACpB0J,KAGF,MAAOA,IACL1J,EAAS,GACLgoC,IACFhoC,EAAOt2E,SAAW5jB,EAAKQ,UAAU8J,GACjCA,GAAU,GAER63H,IACFjoC,EAAOzrE,KAAOzuB,EAAKQ,UAAU8J,GAC7BA,GAAU,GAER83H,IACFloC,EAAO/B,MAAQglC,EAAiB3lI,EAAK2I,SAASmK,EAAQA,EAAS,IAC/DA,GAAU,GAER+3H,IAEFnoC,EAAO36F,sBAAwBS,EAAKQ,UAAU8J,GAC9CA,GAAU,GAEZ7W,EAAOkM,QAAQrL,KAAK4lG,GAEtB,OAAOzmG,GAET,OAAQ,SAAS+D,GACf,MAAO,CACLyG,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,MAG3Cu3F,KAAM,SAASlgG,GACb,IAAIwI,EAAO,IAAII,SAAS5I,EAAK6I,OAAQ7I,EAAK8I,WAAY9I,EAAKsC,YAC3D,MAAO,CACLmE,QAASzG,EAAK,GACd2gG,MAAO,IAAI/9F,WAAW5C,EAAK2I,SAAS,EAAG,IACvCoiI,aAAcviI,EAAKy9H,UAAU,GAC7B+E,QAAS,IAAIC,YAAY,CAACziI,EAAKy9H,UAAU,GACfz9H,EAAKy9H,UAAU,GACfz9H,EAAKy9H,UAAU,SAYjDT,EAAa,SAASxlI,GAapB,IAZA,IAGEwI,EACAyuB,EACAnyB,EACAjB,EACA4nC,EANAvuC,EAAI,EACJjB,EAAS,GAQPivI,EAAK,IAAI11C,YAAYx1F,EAAK7C,QAC1BinB,EAAI,IAAIxhB,WAAWsoI,GACdC,EAAI,EAAGA,EAAInrI,EAAK7C,SAAUguI,EAC/B/mH,EAAE+mH,GAAKnrI,EAAKmrI,GAEhB3iI,EAAO,IAAII,SAASsiI,GAEpB,MAAOhuI,EAAI8C,EAAKsC,WAEd20B,EAAOzuB,EAAKQ,UAAU9L,GACtB4H,EAAQ4D,EAAU1I,EAAK2I,SAASzL,EAAI,EAAGA,EAAI,IAC3C2G,EAAMozB,EAAO,EAAI/5B,EAAI+5B,EAAOj3B,EAAKsC,WAGjCmpC,GAAO3sC,EAAMgG,IAAS,SAAS9E,GAC7B,MAAO,CACLA,KAAMA,KAEPA,EAAK2I,SAASzL,EAAI,EAAG2G,IACxB4nC,EAAIxU,KAAOA,EACXwU,EAAI3mC,KAAOA,EAGX7I,EAAOa,KAAK2uC,GACZvuC,EAAI2G,EAEN,OAAO5H,GAaTwpI,EAAa,SAAS2F,EAAc/E,GAClC,IAAIgF,EAKJ,OAJAhF,EAAQA,GAAS,EACjBgF,EAAS,IAAIzuI,MAAc,EAARypI,EAAY,GAAGtiI,KAAK,KAGhCqnI,EAAankI,KAAI,SAASwkC,EAAKnvC,GAGpC,OAAO+uI,EAAS5/F,EAAI3mC,KAAO,KAGzB5C,OAAOkwB,KAAKqZ,GAAK7U,QAAO,SAASp6B,GAC/B,MAAe,SAARA,GAA0B,UAARA,KAGxByK,KAAI,SAASzK,GACd,IAAI8R,EAAS+8H,EAAS,KAAO7uI,EAAM,KAC/BG,EAAQ8uC,EAAIjvC,GAGhB,GAAIG,aAAiBiG,YAAcjG,aAAiB4wB,YAAa,CAC/D,IAAI8Y,EAAQzpC,MAAMqF,UAAUxF,MAAMyI,KAAK,IAAItC,WAAWjG,EAAMkM,OAAQlM,EAAMmM,WAAYnM,EAAM2F,aACvF2E,KAAI,SAASqkI,GACZ,MAAO,KAAO,KAAOA,EAAKrhI,SAAS,KAAKxN,OAAO,MAC9CsH,KAAK,IAAI6nB,MAAM,YACtB,OAAKya,EAGgB,IAAjBA,EAAMlpC,OACDmR,EAAS,IAAM+3B,EAAMtiC,KAAK,IAAItH,MAAM,GAAK,IAE3C6R,EAAS,MAAQ+3B,EAAMp/B,KAAI,SAAS0kB,GACzC,OAAO0/G,EAAS,KAAO1/G,KACtB5nB,KAAK,MAAQ,KAAOsnI,EAAS,MAPvB/8H,EAAS,KAWpB,OAAOA,EACHzP,KAAKsB,UAAUxD,EAAO,KAAM,GACzBR,MAAM,MAAM8K,KAAI,SAAS0kB,EAAMrvB,GAC9B,OAAc,IAAVA,EACKqvB,EAEF0/G,EAAS,KAAO1/G,KACtB5nB,KAAK,SACbA,KAAK,OAGT0nC,EAAIvjC,MAAQ,KAAOu9H,EAAWh6F,EAAIvjC,MAAOm+H,EAAQ,GAAK,OACtDtiI,KAAK,OAGVrC,EAAOC,QAAU,CACfwzH,QAASqQ,EACT+F,QAAS9F,EACT/8H,UAAWA,EACXrC,QAASA,EACT4B,UAAWnJ,EAAMoI,KACjBskI,UAAW1sI,EAAMwI,KACjBmkI,UAAW3sI,EAAMyJ,KACjBmjI,UAAW5sI,EAAMqI,KACjBwkI,UAAW7sI,EAAMy/F,KACjBojB,UAAW7iH,EAAMy3B,O,mBCn4BnB,SAAS16B,IAeP,OAdA6F,EAAOC,QAAU9F,EAAWqG,OAAOkT,QAAU,SAAU3G,GACrD,IAAK,IAAIvR,EAAI,EAAGA,EAAI6R,UAAU5R,OAAQD,IAAK,CACzC,IAAIgP,EAAS6C,UAAU7R,GAEvB,IAAK,IAAIV,KAAO0P,EACVhK,OAAOD,UAAU3E,eAAe4H,KAAKgH,EAAQ1P,KAC/CiS,EAAOjS,GAAO0P,EAAO1P,IAK3B,OAAOiS,GAGF5S,EAASmL,MAAM7B,KAAM4J,WAG9BrN,EAAOC,QAAU9F,G,qBClBjB,IAAI0U,EAAiB,EAAQ,QAE7B,SAASq7H,EAAU7pI,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIy/B,UAAU,sDAGtB1/B,EAASE,UAAYC,OAAOC,OAAOH,GAAcA,EAAWC,UAAW,CACrEG,YAAa,CACXzF,MAAOoF,EACPigC,UAAU,EACVD,cAAc,KAGd//B,GAAYuO,EAAexO,EAAUC,GAG3CN,EAAOC,QAAUiqI,G,kCCNjB,IAAInkC,EAAkC,EAAQ,QAAkCA,gCAC5EnyF,EAAgB,EAAQ,QAA0BA,cAClDu2H,EAAQ,EAAQ,QAChB1W,EAAU,EAAQ,QAYlB2W,EAAc,SAASh5H,EAAQ3K,GAGjC,IAFA,IAAI4jI,EAAoBj5H,EAEf5V,EAAI,EAAGA,EAAIiL,EAAQhL,OAAQD,IAAK,CACvC,IAAIwlG,EAASv6F,EAAQjL,GAErB,GAAI6uI,EAAoBrpC,EAAOzrE,KAC7B,OAAOyrE,EAGTqpC,GAAqBrpC,EAAOzrE,KAG9B,OAAO,MAiBL+0G,EAAc,SAASlG,EAAW39H,EAASP,GAC7C,IAGEqkI,EACA/uI,EACAC,EACA+uI,EALAnG,EAAU,IAAIn9H,SAASk9H,EAAUj9H,OAAQi9H,EAAUh9H,WAAYg9H,EAAUxjI,YACzErG,EAAS,GAMX,IAAKiB,EAAI,EAAGA,EAAI,EAAI4oI,EAAU3oI,OAAQD,GAAKC,EAKzC,GAJAA,EAAS4oI,EAAQ/8H,UAAU9L,GAC3BA,GAAK,IAGDC,GAAU,GAId,OAAuB,GAAf2oI,EAAU5oI,IAClB,KAAK,EACH,IAAI8C,EAAO8lI,EAAUn9H,SAASzL,EAAI,EAAGA,EAAI,EAAIC,GACzCgvI,EAAiBL,EAAY5uI,EAAGiL,GAEpC8jI,EAAS,CACPl2H,YAAa,WACbkhB,KAAM95B,EACN6C,KAAMA,EACNiW,YAAawxF,EAAgCznG,GAC7C4H,QAASA,GAGPukI,GACFF,EAAO3mI,IAAM6mI,EAAe7mI,IAC5B2mI,EAAO5mI,IAAM8mI,EAAe9mI,IAC5B6mI,EAAoBC,IAIpBF,EAAO3mI,IAAM4mI,EAAkB5mI,IAC/B2mI,EAAO5mI,IAAM6mI,EAAkB7mI,KAGjCpJ,EAAOa,KAAKmvI,GACZ,MACF,QACE,MAIJ,OAAOhwI,GAgBLmwI,EAAe,SAASC,EAAOvkI,EAAqBX,GACtD,IAAI6nG,EAAalnG,EACb6hI,EAAwBxiI,EAAKwiI,uBAAyB,EACtDC,EAAoBziI,EAAKyiI,mBAAqB,EAC9ChiI,EAAUT,EAAKS,QACf0kI,EAAa,GA6BjB,OA3BAD,EAAMjwI,SAAQ,SAASmiG,GAIrB,IAAIguC,EAAWpX,EAAQwW,UAAUptC,GAC7Bp2F,EAAUokI,EAASpkI,QAEvBA,EAAQ/L,SAAQ,SAASsmG,QACCjkG,IAApBikG,EAAOt2E,WACTs2E,EAAOt2E,SAAWu9G,QAEAlrI,IAAhBikG,EAAOzrE,OACTyrE,EAAOzrE,KAAO2yG,GAEhBlnC,EAAO96F,QAAUA,EACjB86F,EAAOr9F,IAAM2pG,OACwBvwG,IAAjCikG,EAAO36F,wBACT26F,EAAO36F,sBAAwB,GAEjC26F,EAAOp9F,IAAM0pG,EAAatM,EAAO36F,sBAEjCinG,GAActM,EAAOt2E,YAGvBkgH,EAAaA,EAAWvlI,OAAOoB,MAG1BmkI,GAWLE,EAAmB,SAASz+G,EAAS0+G,GAEvC,IAAI5lI,EAAQglI,EAAMxlI,QAAQ0nB,EAAS,CAAC,OAAQ,SAExC2+G,EAAQb,EAAMxlI,QAAQ0nB,EAAS,CAAC,SAChC4+G,EAAc,GACdC,EAAgB,GAuCpB,OApCAF,EAAMtwI,SAAQ,SAASwhG,EAAMthG,GAC3B,IAAIuwI,EAAehmI,EAAMvK,GACzBswI,EAAc9vI,KAAK,CACjB8gG,KAAMA,EACN12F,KAAM2lI,OAIVD,EAAcxwI,SAAQ,SAASg+G,GAC7B,IAUIjyG,EACA2kI,EAXAlvC,EAAOwc,EAAKxc,KACZ12F,EAAOkzG,EAAKlzG,KACZC,EAAO0kI,EAAMxlI,QAAQa,EAAM,CAAC,SAE5B6lI,EAAa5X,EAAQuW,UAAUvkI,EAAK,IACpCS,EAAUmlI,EAAWnlI,QACrBN,EAAOukI,EAAMxlI,QAAQa,EAAM,CAAC,SAE5BY,EAAuBR,EAAKnK,OAAS,EAAKg4H,EAAQqW,UAAUlkI,EAAK,IAAIQ,oBAAsB,EAC3FukI,EAAQR,EAAMxlI,QAAQa,EAAM,CAAC,SAK7BulI,IAAiB7kI,GAAWykI,EAAMlvI,OAAS,IAC7CgL,EAAUikI,EAAaC,EAAOvkI,EAAqBilI,GAEnDD,EAAUd,EAAYpuC,EAAMz1F,EAASP,GAEhC+kI,EAAY/kI,KACf+kI,EAAY/kI,GAAW,IAGzB+kI,EAAY/kI,GAAW+kI,EAAY/kI,GAASb,OAAO+lI,OAIhDH,GAmBLK,EAAwB,SAASj/G,EAASnmB,EAAShC,GACrD,IAAIknI,EAGJ,OAAgB,OAAZllI,EACK,MAGTklI,EAAUN,EAAiBz+G,EAASnmB,GAE7B,CACLklI,QAASA,EAAQllI,GACjBhC,UAAWA,KAOXqnI,EAAgB,WAClB,IACIjlC,EAGAklC,EAEAtlI,EAEAhC,EAEAunI,EAEAC,EAZA7nB,GAAgB,EAkBpBpgH,KAAKogH,cAAgB,WACnB,OAAOA,GAOTpgH,KAAKF,KAAO,SAASxH,GACnBuqG,EAAgB,IAAI1yF,EACpBiwG,GAAgB,EAChB6nB,IAAiB3vI,GAAUA,EAAQ4vI,UAGnCrlC,EAAczzF,GAAG,QAAQ,SAASoB,GAEhCA,EAAM9P,UAAY8P,EAAM8E,SAAW7U,EACnC+P,EAAMorC,QAAUprC,EAAM+E,OAAS9U,EAE/BunI,EAAetlF,SAAS/qD,KAAK6Y,GAC7Bw3H,EAAetzC,eAAelkF,EAAMgF,SAAU,MASlDxV,KAAKmoI,UAAY,SAASllI,EAAeT,GACvC,QAAKS,GAA0C,IAAzBA,EAAcjL,QAC/BwK,GAAoC,kBAAfA,GACe,IAAnCzF,OAAOkwB,KAAKzqB,GAAYxK,UAIvByK,IAAYQ,EAAc,IAC/BxC,IAAc+B,EAAWC,KAa7BzC,KAAKrG,MAAQ,SAASivB,EAAS3lB,EAAeT,GAC5C,IAAI4lI,EAEJ,IAAKpoI,KAAKogH,gBACR,OAAO,KAGF,IAAKn9G,IAAkBT,EAC5B,OAAO,KAEF,GAAIxC,KAAKmoI,UAAUllI,EAAeT,GAGvCC,EAAUQ,EAAc,GACxBxC,EAAY+B,EAAWC,QAKlB,GAAgB,OAAZA,IAAqBhC,EAE9B,OADAsnI,EAAapwI,KAAKixB,GACX,KAIT,MAAOm/G,EAAa/vI,OAAS,EAAG,CAC9B,IAAIqwI,EAAgBN,EAAanoG,QAEjC5/B,KAAKrG,MAAM0uI,EAAeplI,EAAeT,GAK3C,OAFA4lI,EAAaP,EAAsBj/G,EAASnmB,EAAShC,GAElC,OAAf2nI,GAAwBA,EAAWT,SAIvC3nI,KAAKsoI,SAASF,EAAWT,SAEzB3nI,KAAKwR,cAEEw2H,GAPE,MAgBXhoI,KAAKsoI,SAAW,SAAS7F,GACvB,IAAKziI,KAAKogH,kBAAoBqiB,GAAwB,IAAhBA,EAAKzqI,OACzC,OAAO,KAGTyqI,EAAKxrI,SAAQ,SAASsxI,GACpB1lC,EAAclrG,KAAK4wI,OAQvBvoI,KAAKwR,YAAc,WACjB,IAAKxR,KAAKogH,gBACR,OAAO,KAGJ6nB,EAGHplC,EAAchzF,eAFdgzF,EAAcxiG,SASlBL,KAAKmsH,oBAAsB,WACzB6b,EAAetlF,SAAW,GAC1BslF,EAAetzC,eAAiB,IAOlC10F,KAAKwoI,mBAAqB,WACxB,IAAKxoI,KAAKogH,gBACR,OAAO,KAGTvd,EAAcriG,SAQhBR,KAAKmqH,iBAAmB,WACtBnqH,KAAKmsH,sBACLnsH,KAAKwoI,sBAMPxoI,KAAKQ,MAAQ,WACXunI,EAAe,GACftlI,EAAU,KACVhC,EAAY,KAEPunI,EAOHhoI,KAAKmsH,sBANL6b,EAAiB,CACftlF,SAAU,GAEVgyC,eAAgB,IAMpB10F,KAAKwoI,sBAGPxoI,KAAKQ,SAGPjE,EAAOC,QAAUsrI,G,kCCxbjBvrI,EAAOC,QAAU,CACf8R,iBAAkB,GAClBC,iBAAkB,GAClBC,qBAAsB,K,mBCKxB,IAAIi6H,EAAc,OACdC,EAAmB,CACrB,GAAI,EACJ,GAAM,EACN,GAAM,GAEJC,EAAe,CACjB,MAAS,EACT,OAAU,EACV,IAAO,EACP,KAAQ,EACR,MAAS,EACT,KAAQ,EACR,YAAa,EACb,aAAc,GAGhB,SAASC,EAAqBpxI,GAC5B,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAI0/D,EAAMwxE,EAAiBlxI,EAAMD,eACjC,QAAO2/D,GAAM1/D,EAAMD,cAGrB,SAASsxI,EAAiBrxI,GACxB,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAI03G,EAAQy5B,EAAanxI,EAAMD,eAC/B,QAAO23G,GAAQ13G,EAAMD,cAGvB,SAASyU,EAAOtL,EAAWk7C,EAASxoC,GASlCpT,KAAK8oI,cAAe,EAOpB,IAAIC,EAAM,GACNC,GAAe,EACfC,EAAavoI,EACbwoI,EAAWttF,EACXutF,EAAQ/1H,EACRg2H,EAAU,KACVC,EAAY,GACZC,GAAe,EACfC,EAAQ,OACRC,EAAa,QACbC,EAAY,OACZC,EAAiB,OACjBC,EAAQ,IACRC,EAAS,SAEb7sI,OAAOy/B,iBAAiBx8B,KAAM,CAC5B,GAAM,CACJ28B,YAAY,EACZ7Z,IAAK,WACH,OAAOimH,GAET/lH,IAAK,SAASxrB,GACZuxI,EAAM,GAAKvxI,IAIf,YAAe,CACbmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOkmH,GAEThmH,IAAK,SAASxrB,GACZwxI,IAAiBxxI,IAIrB,UAAa,CACXmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOmmH,GAETjmH,IAAK,SAASxrB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAI8kC,UAAU,uCAEtB2sG,EAAazxI,EACbwI,KAAK8oI,cAAe,IAIxB,QAAW,CACTnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOomH,GAETlmH,IAAK,SAASxrB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAI8kC,UAAU,qCAEtB4sG,EAAW1xI,EACXwI,KAAK8oI,cAAe,IAIxB,KAAQ,CACNnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOqmH,GAETnmH,IAAK,SAASxrB,GACZ2xI,EAAQ,GAAK3xI,EACbwI,KAAK8oI,cAAe,IAIxB,OAAU,CACRnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOsmH,GAETpmH,IAAK,SAASxrB,GACZ4xI,EAAU5xI,EACVwI,KAAK8oI,cAAe,IAIxB,SAAY,CACVnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOumH,GAETrmH,IAAK,SAASxrB,GACZ,IAAIqyI,EAAUjB,EAAqBpxI,GAEnC,IAAgB,IAAZqyI,EACF,MAAM,IAAIC,YAAY,mEAExBT,EAAYQ,EACZ7pI,KAAK8oI,cAAe,IAIxB,YAAe,CACbnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOwmH,GAETtmH,IAAK,SAASxrB,GACZ8xI,IAAiB9xI,EACjBwI,KAAK8oI,cAAe,IAIxB,KAAQ,CACNnsG,YAAY,EACZ7Z,IAAK,WACH,OAAOymH,GAETvmH,IAAK,SAASxrB,GACZ,GAAqB,kBAAVA,GAAsBA,IAAUixI,EACzC,MAAM,IAAIqB,YAAY,4DAExBP,EAAQ/xI,EACRwI,KAAK8oI,cAAe,IAIxB,UAAa,CACXnsG,YAAY,EACZ7Z,IAAK,WACH,OAAO0mH,GAETxmH,IAAK,SAASxrB,GACZ,IAAIqyI,EAAUhB,EAAiBrxI,GAC1BqyI,GAGHL,EAAaK,EACb7pI,KAAK8oI,cAAe,GAHpB99H,QAAQC,KAAK,4DAQnB,SAAY,CACV0xB,YAAY,EACZ7Z,IAAK,WACH,OAAO2mH,GAETzmH,IAAK,SAASxrB,GACZ,GAAIA,EAAQ,GAAKA,EAAQ,IACvB,MAAM,IAAImB,MAAM,uCAElB8wI,EAAYjyI,EACZwI,KAAK8oI,cAAe,IAIxB,cAAiB,CACfnsG,YAAY,EACZ7Z,IAAK,WACH,OAAO4mH,GAET1mH,IAAK,SAASxrB,GACZ,IAAIqyI,EAAUhB,EAAiBrxI,GAC1BqyI,GAGHH,EAAiBG,EACjB7pI,KAAK8oI,cAAe,GAHpB99H,QAAQC,KAAK,gEAQnB,KAAQ,CACN0xB,YAAY,EACZ7Z,IAAK,WACH,OAAO6mH,GAET3mH,IAAK,SAASxrB,GACZ,GAAIA,EAAQ,GAAKA,EAAQ,IACvB,MAAM,IAAImB,MAAM,mCAElBgxI,EAAQnyI,EACRwI,KAAK8oI,cAAe,IAIxB,MAAS,CACPnsG,YAAY,EACZ7Z,IAAK,WACH,OAAO8mH,GAET5mH,IAAK,SAASxrB,GACZ,IAAIqyI,EAAUhB,EAAiBrxI,GAC/B,IAAKqyI,EACH,MAAM,IAAIC,YAAY,gEAExBF,EAASC,EACT7pI,KAAK8oI,cAAe,MAU1B9oI,KAAK81D,kBAAex8D,EAOtB0S,EAAOlP,UAAUitI,aAAe,WAE9B,OAAOh+H,OAAOi+H,oBAAoBvzI,OAAQuJ,KAAKoT,OAGjD7W,EAAOC,QAAUwP,G,mCC7RjB;;;;;;;AAUA,IAAIi+H,EAAS,EAAQ,QACjBC,EAAU,EAAQ,QAClBxyI,EAAU,EAAQ,QAuCtB,SAASyyI,IACP,IACE,IAAIhsI,EAAM,IAAIV,WAAW,GAEzB,OADAU,EAAIjB,UAAY,CAACA,UAAWO,WAAWX,UAAWstI,IAAK,WAAc,OAAO,KACvD,KAAdjsI,EAAIisI,OACiB,oBAAjBjsI,EAAIqF,UACuB,IAAlCrF,EAAIqF,SAAS,EAAG,GAAGrG,WACvB,MAAOvD,GACP,OAAO,GAIX,SAASywI,IACP,OAAO9mH,EAAO+mH,oBACV,WACA,WAGN,SAASC,EAAcC,EAAMxyI,GAC3B,GAAIqyI,IAAeryI,EACjB,MAAM,IAAIyyI,WAAW,8BAcvB,OAZIlnH,EAAO+mH,qBAETE,EAAO,IAAI/sI,WAAWzF,GACtBwyI,EAAKttI,UAAYqmB,EAAOzmB,YAGX,OAAT0tI,IACFA,EAAO,IAAIjnH,EAAOvrB,IAEpBwyI,EAAKxyI,OAASA,GAGTwyI,EAaT,SAASjnH,EAAQ+qC,EAAKo8E,EAAkB1yI,GACtC,IAAKurB,EAAO+mH,uBAAyBtqI,gBAAgBujB,GACnD,OAAO,IAAIA,EAAO+qC,EAAKo8E,EAAkB1yI,GAI3C,GAAmB,kBAARs2D,EAAkB,CAC3B,GAAgC,kBAArBo8E,EACT,MAAM,IAAI/xI,MACR,qEAGJ,OAAOgyI,EAAY3qI,KAAMsuD,GAE3B,OAAO9qC,EAAKxjB,KAAMsuD,EAAKo8E,EAAkB1yI,GAW3C,SAASwrB,EAAMgnH,EAAMhzI,EAAOkzI,EAAkB1yI,GAC5C,GAAqB,kBAAVR,EACT,MAAM,IAAI8kC,UAAU,yCAGtB,MAA2B,qBAAhB+zD,aAA+B74F,aAAiB64F,YAClDu6C,EAAgBJ,EAAMhzI,EAAOkzI,EAAkB1yI,GAGnC,kBAAVR,EACFqzI,EAAWL,EAAMhzI,EAAOkzI,GAG1BI,EAAWN,EAAMhzI,GA4B1B,SAASuzI,EAAYj5G,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAIwK,UAAU,oCACf,GAAIxK,EAAO,EAChB,MAAM,IAAI24G,WAAW,wCAIzB,SAASO,EAAOR,EAAM14G,EAAMwrB,EAAM2tF,GAEhC,OADAF,EAAWj5G,GACPA,GAAQ,EACHy4G,EAAaC,EAAM14G,QAEfx4B,IAATgkD,EAIyB,kBAAb2tF,EACVV,EAAaC,EAAM14G,GAAMwrB,KAAKA,EAAM2tF,GACpCV,EAAaC,EAAM14G,GAAMwrB,KAAKA,GAE7BitF,EAAaC,EAAM14G,GAW5B,SAAS64G,EAAaH,EAAM14G,GAG1B,GAFAi5G,EAAWj5G,GACX04G,EAAOD,EAAaC,EAAM14G,EAAO,EAAI,EAAoB,EAAhBo5G,EAAQp5G,KAC5CvO,EAAO+mH,oBACV,IAAK,IAAIvyI,EAAI,EAAGA,EAAI+5B,IAAQ/5B,EAC1ByyI,EAAKzyI,GAAK,EAGd,OAAOyyI,EAgBT,SAASK,EAAYL,EAAMvnH,EAAQgoH,GAKjC,GAJwB,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGR1nH,EAAO4nH,WAAWF,GACrB,MAAM,IAAI3uG,UAAU,8CAGtB,IAAItkC,EAAwC,EAA/BmF,EAAW8lB,EAAQgoH,GAChCT,EAAOD,EAAaC,EAAMxyI,GAE1B,IAAIozI,EAASZ,EAAK/lH,MAAMxB,EAAQgoH,GAShC,OAPIG,IAAWpzI,IAIbwyI,EAAOA,EAAKlzI,MAAM,EAAG8zI,IAGhBZ,EAGT,SAASa,EAAeb,EAAM3yI,GAC5B,IAAIG,EAASH,EAAMG,OAAS,EAAI,EAA4B,EAAxBkzI,EAAQrzI,EAAMG,QAClDwyI,EAAOD,EAAaC,EAAMxyI,GAC1B,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,GAAK,EAC/ByyI,EAAKzyI,GAAgB,IAAXF,EAAME,GAElB,OAAOyyI,EAGT,SAASI,EAAiBJ,EAAM3yI,EAAO8L,EAAY3L,GAGjD,GAFAH,EAAMsF,WAEFwG,EAAa,GAAK9L,EAAMsF,WAAawG,EACvC,MAAM,IAAI8mI,WAAW,6BAGvB,GAAI5yI,EAAMsF,WAAawG,GAAc3L,GAAU,GAC7C,MAAM,IAAIyyI,WAAW,6BAmBvB,OAfE5yI,OADiByB,IAAfqK,QAAuCrK,IAAXtB,EACtB,IAAIyF,WAAW5F,QACHyB,IAAXtB,EACD,IAAIyF,WAAW5F,EAAO8L,GAEtB,IAAIlG,WAAW5F,EAAO8L,EAAY3L,GAGxCurB,EAAO+mH,qBAETE,EAAO3yI,EACP2yI,EAAKttI,UAAYqmB,EAAOzmB,WAGxB0tI,EAAOa,EAAcb,EAAM3yI,GAEtB2yI,EAGT,SAASM,EAAYN,EAAMtyI,GACzB,GAAIqrB,EAAO+nH,SAASpzI,GAAM,CACxB,IAAIwF,EAA4B,EAAtBwtI,EAAQhzI,EAAIF,QAGtB,OAFAwyI,EAAOD,EAAaC,EAAM9sI,GAEN,IAAhB8sI,EAAKxyI,OACAwyI,GAGTtyI,EAAIsP,KAAKgjI,EAAM,EAAG,EAAG9sI,GACd8sI,GAGT,GAAItyI,EAAK,CACP,GAA4B,qBAAhBm4F,aACRn4F,EAAIwL,kBAAkB2sF,aAAgB,WAAYn4F,EACpD,MAA0B,kBAAfA,EAAIF,QAAuBuzI,GAAMrzI,EAAIF,QACvCuyI,EAAaC,EAAM,GAErBa,EAAcb,EAAMtyI,GAG7B,GAAiB,WAAbA,EAAIyH,MAAqBjI,EAAQQ,EAAI2C,MACvC,OAAOwwI,EAAcb,EAAMtyI,EAAI2C,MAInC,MAAM,IAAIyhC,UAAU,sFAGtB,SAAS4uG,EAASlzI,GAGhB,GAAIA,GAAUqyI,IACZ,MAAM,IAAII,WAAW,0DACaJ,IAAavlI,SAAS,IAAM,UAEhE,OAAgB,EAAT9M,EAGT,SAASwzI,EAAYxzI,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJurB,EAAOynH,OAAOhzI,GA+EvB,SAASmF,EAAY8lB,EAAQgoH,GAC3B,GAAI1nH,EAAO+nH,SAASroH,GAClB,OAAOA,EAAOjrB,OAEhB,GAA2B,qBAAhBq4F,aAA6D,oBAAvBA,YAAYC,SACxDD,YAAYC,OAAOrtE,IAAWA,aAAkBotE,aACnD,OAAOptE,EAAO9lB,WAEM,kBAAX8lB,IACTA,EAAS,GAAKA,GAGhB,IAAIvlB,EAAMulB,EAAOjrB,OACjB,GAAY,IAAR0F,EAAW,OAAO,EAItB,IADA,IAAI+tI,GAAc,IAEhB,OAAQR,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOvtI,EACT,IAAK,OACL,IAAK,QACL,UAAKpE,EACH,OAAOoyI,EAAYzoH,GAAQjrB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN0F,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOiuI,EAAc1oH,GAAQjrB,OAC/B,QACE,GAAIyzI,EAAa,OAAOC,EAAYzoH,GAAQjrB,OAC5CizI,GAAY,GAAKA,GAAU1zI,cAC3Bk0I,GAAc,GAMtB,SAASG,EAAcX,EAAUxsI,EAAOC,GACtC,IAAI+sI,GAAc,EAclB,SALcnyI,IAAVmF,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQuB,KAAKhI,OACf,MAAO,GAOT,SAJYsB,IAARoF,GAAqBA,EAAMsB,KAAKhI,UAClC0G,EAAMsB,KAAKhI,QAGT0G,GAAO,EACT,MAAO,GAOT,GAHAA,KAAS,EACTD,KAAW,EAEPC,GAAOD,EACT,MAAO,GAGJwsI,IAAUA,EAAW,QAE1B,MAAO,EACL,OAAQA,GACN,IAAK,MACH,OAAOY,EAAS7rI,KAAMvB,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOotI,EAAU9rI,KAAMvB,EAAOC,GAEhC,IAAK,QACH,OAAOqtI,EAAW/rI,KAAMvB,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOstI,EAAYhsI,KAAMvB,EAAOC,GAElC,IAAK,SACH,OAAOutI,EAAYjsI,KAAMvB,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOwtI,EAAalsI,KAAMvB,EAAOC,GAEnC,QACE,GAAI+sI,EAAa,MAAM,IAAInvG,UAAU,qBAAuB2uG,GAC5DA,GAAYA,EAAW,IAAI1zI,cAC3Bk0I,GAAc,GAStB,SAASx4H,EAAMpB,EAAGmN,EAAGkF,GACnB,IAAInsB,EAAI8Z,EAAEmN,GACVnN,EAAEmN,GAAKnN,EAAEqS,GACTrS,EAAEqS,GAAKnsB,EAmIT,SAASo0I,EAAsBzoI,EAAQ6gC,EAAK5gC,EAAYsnI,EAAU/zE,GAEhE,GAAsB,IAAlBxzD,EAAO1L,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAf2L,GACTsnI,EAAWtnI,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACVghB,MAAMhhB,KAERA,EAAauzD,EAAM,EAAKxzD,EAAO1L,OAAS,GAItC2L,EAAa,IAAGA,EAAaD,EAAO1L,OAAS2L,GAC7CA,GAAcD,EAAO1L,OAAQ,CAC/B,GAAIk/D,EAAK,OAAQ,EACZvzD,EAAaD,EAAO1L,OAAS,OAC7B,GAAI2L,EAAa,EAAG,CACzB,IAAIuzD,EACC,OAAQ,EADJvzD,EAAa,EAUxB,GALmB,kBAAR4gC,IACTA,EAAMhhB,EAAOC,KAAK+gB,EAAK0mG,IAIrB1nH,EAAO+nH,SAAS/mG,GAElB,OAAmB,IAAfA,EAAIvsC,QACE,EAEHo0I,EAAa1oI,EAAQ6gC,EAAK5gC,EAAYsnI,EAAU/zE,GAClD,GAAmB,kBAAR3yB,EAEhB,OADAA,GAAY,IACRhhB,EAAO+mH,qBACiC,oBAAjC7sI,WAAWX,UAAU1F,QAC1B8/D,EACKz5D,WAAWX,UAAU1F,QAAQ2I,KAAK2D,EAAQ6gC,EAAK5gC,GAE/ClG,WAAWX,UAAUuvI,YAAYtsI,KAAK2D,EAAQ6gC,EAAK5gC,GAGvDyoI,EAAa1oI,EAAQ,CAAE6gC,GAAO5gC,EAAYsnI,EAAU/zE,GAG7D,MAAM,IAAI56B,UAAU,wCAGtB,SAAS8vG,EAAcjuI,EAAKomC,EAAK5gC,EAAYsnI,EAAU/zE,GACrD,IA0BIn/D,EA1BAu0I,EAAY,EACZC,EAAYpuI,EAAInG,OAChBw0I,EAAYjoG,EAAIvsC,OAEpB,QAAiBsB,IAAb2xI,IACFA,EAAWzkI,OAAOykI,GAAU1zI,cACX,SAAb0zI,GAAoC,UAAbA,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI9sI,EAAInG,OAAS,GAAKusC,EAAIvsC,OAAS,EACjC,OAAQ,EAEVs0I,EAAY,EACZC,GAAa,EACbC,GAAa,EACb7oI,GAAc,EAIlB,SAASmgB,EAAMhG,EAAK/lB,GAClB,OAAkB,IAAdu0I,EACKxuH,EAAI/lB,GAEJ+lB,EAAI2uH,aAAa10I,EAAIu0I,GAKhC,GAAIp1E,EAAK,CACP,IAAIw1E,GAAc,EAClB,IAAK30I,EAAI4L,EAAY5L,EAAIw0I,EAAWx0I,IAClC,GAAI+rB,EAAK3lB,EAAKpG,KAAO+rB,EAAKygB,GAAqB,IAAhBmoG,EAAoB,EAAI30I,EAAI20I,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa30I,GAChCA,EAAI20I,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmB30I,GAAKA,EAAI20I,GAChCA,GAAc,OAKlB,IADI/oI,EAAa6oI,EAAYD,IAAW5oI,EAAa4oI,EAAYC,GAC5Dz0I,EAAI4L,EAAY5L,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIo5E,GAAQ,EACHnzC,EAAI,EAAGA,EAAIwuG,EAAWxuG,IAC7B,GAAIla,EAAK3lB,EAAKpG,EAAIimC,KAAOla,EAAKygB,EAAKvG,GAAI,CACrCmzC,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOp5E,EAItB,OAAQ,EAeV,SAAS40I,EAAU7uH,EAAKmF,EAAQtV,EAAQ3V,GACtC2V,EAAS2oB,OAAO3oB,IAAW,EAC3B,IAAIi/H,EAAY9uH,EAAI9lB,OAAS2V,EACxB3V,GAGHA,EAASs+B,OAAOt+B,GACZA,EAAS40I,IACX50I,EAAS40I,IAJX50I,EAAS40I,EASX,IAAIC,EAAS5pH,EAAOjrB,OACpB,GAAI60I,EAAS,IAAM,EAAG,MAAM,IAAIvwG,UAAU,sBAEtCtkC,EAAS60I,EAAS,IACpB70I,EAAS60I,EAAS,GAEpB,IAAK,IAAI90I,EAAI,EAAGA,EAAIC,IAAUD,EAAG,CAC/B,IAAIy7G,EAASpsF,SAASnE,EAAO5c,OAAW,EAAJtO,EAAO,GAAI,IAC/C,GAAI4sB,MAAM6uF,GAAS,OAAOz7G,EAC1B+lB,EAAInQ,EAAS5V,GAAKy7G,EAEpB,OAAOz7G,EAGT,SAAS+0I,EAAWhvH,EAAKmF,EAAQtV,EAAQ3V,GACvC,OAAO+0I,GAAWrB,EAAYzoH,EAAQnF,EAAI9lB,OAAS2V,GAASmQ,EAAKnQ,EAAQ3V,GAG3E,SAASg1I,EAAYlvH,EAAKmF,EAAQtV,EAAQ3V,GACxC,OAAO+0I,GAAWE,EAAahqH,GAASnF,EAAKnQ,EAAQ3V,GAGvD,SAASk1I,EAAapvH,EAAKmF,EAAQtV,EAAQ3V,GACzC,OAAOg1I,EAAWlvH,EAAKmF,EAAQtV,EAAQ3V,GAGzC,SAASm1I,EAAarvH,EAAKmF,EAAQtV,EAAQ3V,GACzC,OAAO+0I,GAAWpB,EAAc1oH,GAASnF,EAAKnQ,EAAQ3V,GAGxD,SAASo1I,EAAWtvH,EAAKmF,EAAQtV,EAAQ3V,GACvC,OAAO+0I,GAAWM,EAAepqH,EAAQnF,EAAI9lB,OAAS2V,GAASmQ,EAAKnQ,EAAQ3V,GAkF9E,SAASi0I,EAAanuH,EAAKrf,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQof,EAAI9lB,OACtBiyI,EAAO5sI,cAAcygB,GAErBmsH,EAAO5sI,cAAcygB,EAAIxmB,MAAMmH,EAAOC,IAIjD,SAASotI,EAAWhuH,EAAKrf,EAAOC,GAC9BA,EAAMc,KAAK8C,IAAIwb,EAAI9lB,OAAQ0G,GAC3B,IAAI4uI,EAAM,GAENv1I,EAAI0G,EACR,MAAO1G,EAAI2G,EAAK,CACd,IAQM6uI,EAAYC,EAAWC,EAAYC,EARrCC,EAAY7vH,EAAI/lB,GAChB61I,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAI51I,EAAI81I,GAAoBnvI,EAG1B,OAAQmvI,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHJ,EAAazvH,EAAI/lB,EAAI,GACO,OAAV,IAAbw1I,KACHG,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,EACzCG,EAAgB,MAClBE,EAAYF,IAGhB,MACF,KAAK,EACHH,EAAazvH,EAAI/lB,EAAI,GACrBy1I,EAAY1vH,EAAI/lB,EAAI,GACQ,OAAV,IAAbw1I,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,IAGhB,MACF,KAAK,EACHH,EAAazvH,EAAI/lB,EAAI,GACrBy1I,EAAY1vH,EAAI/lB,EAAI,GACpB01I,EAAa3vH,EAAI/lB,EAAI,GACO,OAAV,IAAbw1I,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CE,EAAYF,IAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbN,EAAI31I,KAAKi2I,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBN,EAAI31I,KAAKi2I,GACT71I,GAAK81I,EAGP,OAAOC,EAAsBR,GA98B/B9wI,EAAQ+mB,OAASA,EACjB/mB,EAAQgvI,WAAaA,EACrBhvI,EAAQuxI,kBAAoB,GA0B5BxqH,EAAO+mH,yBAAqDhxI,IAA/B00I,EAAO1D,oBAChC0D,EAAO1D,oBACPH,IAKJ3tI,EAAQ6tI,WAAaA,IAkErB9mH,EAAO0qH,SAAW,KAGlB1qH,EAAO2qH,SAAW,SAAU/vI,GAE1B,OADAA,EAAIjB,UAAYqmB,EAAOzmB,UAChBqB,GA2BTolB,EAAOC,KAAO,SAAUhsB,EAAOkzI,EAAkB1yI,GAC/C,OAAOwrB,EAAK,KAAMhsB,EAAOkzI,EAAkB1yI,IAGzCurB,EAAO+mH,sBACT/mH,EAAOzmB,UAAUI,UAAYO,WAAWX,UACxCymB,EAAOrmB,UAAYO,WACG,qBAAXmsF,QAA0BA,OAAOukD,SACxC5qH,EAAOqmE,OAAOukD,WAAa5qH,GAE7BxmB,OAAO6lB,eAAeW,EAAQqmE,OAAOukD,QAAS,CAC5C32I,MAAO,KACPolC,cAAc,KAiCpBrZ,EAAOynH,MAAQ,SAAUl5G,EAAMwrB,EAAM2tF,GACnC,OAAOD,EAAM,KAAMl5G,EAAMwrB,EAAM2tF,IAiBjC1nH,EAAOonH,YAAc,SAAU74G,GAC7B,OAAO64G,EAAY,KAAM74G,IAK3BvO,EAAO6qH,gBAAkB,SAAUt8G,GACjC,OAAO64G,EAAY,KAAM74G,IAiH3BvO,EAAO+nH,SAAW,SAAmBz5H,GACnC,QAAe,MAALA,IAAaA,EAAEw8H,YAG3B9qH,EAAO+qH,QAAU,SAAkB5iI,EAAGmG,GACpC,IAAK0R,EAAO+nH,SAAS5/H,KAAO6X,EAAO+nH,SAASz5H,GAC1C,MAAM,IAAIyqB,UAAU,6BAGtB,GAAI5wB,IAAMmG,EAAG,OAAO,EAKpB,IAHA,IAAIwb,EAAI3hB,EAAE1T,OACNs1B,EAAIzb,EAAE7Z,OAEDD,EAAI,EAAG2F,EAAM8B,KAAK8C,IAAI+qB,EAAGC,GAAIv1B,EAAI2F,IAAO3F,EAC/C,GAAI2T,EAAE3T,KAAO8Z,EAAE9Z,GAAI,CACjBs1B,EAAI3hB,EAAE3T,GACNu1B,EAAIzb,EAAE9Z,GACN,MAIJ,OAAIs1B,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGT9J,EAAO4nH,WAAa,SAAqBF,GACvC,OAAQzkI,OAAOykI,GAAU1zI,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbgsB,EAAO3hB,OAAS,SAAiBmY,EAAM/hB,GACrC,IAAKN,EAAQqiB,GACX,MAAM,IAAIuiB,UAAU,+CAGtB,GAAoB,IAAhBviB,EAAK/hB,OACP,OAAOurB,EAAOynH,MAAM,GAGtB,IAAIjzI,EACJ,QAAeuB,IAAXtB,EAEF,IADAA,EAAS,EACJD,EAAI,EAAGA,EAAIgiB,EAAK/hB,SAAUD,EAC7BC,GAAU+hB,EAAKhiB,GAAGC,OAItB,IAAI0L,EAAS6f,EAAOonH,YAAY3yI,GAC5Bu2I,EAAM,EACV,IAAKx2I,EAAI,EAAGA,EAAIgiB,EAAK/hB,SAAUD,EAAG,CAChC,IAAI+lB,EAAM/D,EAAKhiB,GACf,IAAKwrB,EAAO+nH,SAASxtH,GACnB,MAAM,IAAIwe,UAAU,+CAEtBxe,EAAItW,KAAK9D,EAAQ6qI,GACjBA,GAAOzwH,EAAI9lB,OAEb,OAAO0L,GA8CT6f,EAAOpmB,WAAaA,EA0EpBomB,EAAOzmB,UAAUuxI,WAAY,EAQ7B9qH,EAAOzmB,UAAU0xI,OAAS,WACxB,IAAI9wI,EAAMsC,KAAKhI,OACf,GAAI0F,EAAM,IAAM,EACd,MAAM,IAAI+sI,WAAW,6CAEvB,IAAK,IAAI1yI,EAAI,EAAGA,EAAI2F,EAAK3F,GAAK,EAC5Bkb,EAAKjT,KAAMjI,EAAGA,EAAI,GAEpB,OAAOiI,MAGTujB,EAAOzmB,UAAU2xI,OAAS,WACxB,IAAI/wI,EAAMsC,KAAKhI,OACf,GAAI0F,EAAM,IAAM,EACd,MAAM,IAAI+sI,WAAW,6CAEvB,IAAK,IAAI1yI,EAAI,EAAGA,EAAI2F,EAAK3F,GAAK,EAC5Bkb,EAAKjT,KAAMjI,EAAGA,EAAI,GAClBkb,EAAKjT,KAAMjI,EAAI,EAAGA,EAAI,GAExB,OAAOiI,MAGTujB,EAAOzmB,UAAU4xI,OAAS,WACxB,IAAIhxI,EAAMsC,KAAKhI,OACf,GAAI0F,EAAM,IAAM,EACd,MAAM,IAAI+sI,WAAW,6CAEvB,IAAK,IAAI1yI,EAAI,EAAGA,EAAI2F,EAAK3F,GAAK,EAC5Bkb,EAAKjT,KAAMjI,EAAGA,EAAI,GAClBkb,EAAKjT,KAAMjI,EAAI,EAAGA,EAAI,GACtBkb,EAAKjT,KAAMjI,EAAI,EAAGA,EAAI,GACtBkb,EAAKjT,KAAMjI,EAAI,EAAGA,EAAI,GAExB,OAAOiI,MAGTujB,EAAOzmB,UAAUgI,SAAW,WAC1B,IAAI9M,EAAuB,EAAdgI,KAAKhI,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArB4R,UAAU5R,OAAqB8zI,EAAU9rI,KAAM,EAAGhI,GAC/C4zI,EAAa/pI,MAAM7B,KAAM4J,YAGlC2Z,EAAOzmB,UAAU6xI,OAAS,SAAiB98H,GACzC,IAAK0R,EAAO+nH,SAASz5H,GAAI,MAAM,IAAIyqB,UAAU,6BAC7C,OAAIt8B,OAAS6R,GACsB,IAA5B0R,EAAO+qH,QAAQtuI,KAAM6R,IAG9B0R,EAAOzmB,UAAUkzH,QAAU,WACzB,IAAIj4F,EAAM,GACN9H,EAAMzzB,EAAQuxI,kBAKlB,OAJI/tI,KAAKhI,OAAS,IAChB+/B,EAAM/3B,KAAK8E,SAAS,MAAO,EAAGmrB,GAAKxJ,MAAM,SAAS7nB,KAAK,KACnDoB,KAAKhI,OAASi4B,IAAK8H,GAAO,UAEzB,WAAaA,EAAM,KAG5BxU,EAAOzmB,UAAUwxI,QAAU,SAAkBhlI,EAAQ7K,EAAOC,EAAKkwI,EAAWC,GAC1E,IAAKtrH,EAAO+nH,SAAShiI,GACnB,MAAM,IAAIgzB,UAAU,6BAgBtB,QAbchjC,IAAVmF,IACFA,EAAQ,QAEEnF,IAARoF,IACFA,EAAM4K,EAASA,EAAOtR,OAAS,QAEfsB,IAAds1I,IACFA,EAAY,QAEEt1I,IAAZu1I,IACFA,EAAU7uI,KAAKhI,QAGbyG,EAAQ,GAAKC,EAAM4K,EAAOtR,QAAU42I,EAAY,GAAKC,EAAU7uI,KAAKhI,OACtE,MAAM,IAAIyyI,WAAW,sBAGvB,GAAImE,GAAaC,GAAWpwI,GAASC,EACnC,OAAO,EAET,GAAIkwI,GAAaC,EACf,OAAQ,EAEV,GAAIpwI,GAASC,EACX,OAAO,EAQT,GALAD,KAAW,EACXC,KAAS,EACTkwI,KAAe,EACfC,KAAa,EAET7uI,OAASsJ,EAAQ,OAAO,EAS5B,IAPA,IAAI+jB,EAAIwhH,EAAUD,EACdthH,EAAI5uB,EAAMD,EACVf,EAAM8B,KAAK8C,IAAI+qB,EAAGC,GAElBwhH,EAAW9uI,KAAK1I,MAAMs3I,EAAWC,GACjCE,EAAazlI,EAAOhS,MAAMmH,EAAOC,GAE5B3G,EAAI,EAAGA,EAAI2F,IAAO3F,EACzB,GAAI+2I,EAAS/2I,KAAOg3I,EAAWh3I,GAAI,CACjCs1B,EAAIyhH,EAAS/2I,GACbu1B,EAAIyhH,EAAWh3I,GACf,MAIJ,OAAIs1B,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA6HT9J,EAAOzmB,UAAUkyI,SAAW,SAAmBzqG,EAAK5gC,EAAYsnI,GAC9D,OAAoD,IAA7CjrI,KAAK5I,QAAQmtC,EAAK5gC,EAAYsnI,IAGvC1nH,EAAOzmB,UAAU1F,QAAU,SAAkBmtC,EAAK5gC,EAAYsnI,GAC5D,OAAOkB,EAAqBnsI,KAAMukC,EAAK5gC,EAAYsnI,GAAU,IAG/D1nH,EAAOzmB,UAAUuvI,YAAc,SAAsB9nG,EAAK5gC,EAAYsnI,GACpE,OAAOkB,EAAqBnsI,KAAMukC,EAAK5gC,EAAYsnI,GAAU,IAkD/D1nH,EAAOzmB,UAAU2nB,MAAQ,SAAgBxB,EAAQtV,EAAQ3V,EAAQizI,GAE/D,QAAe3xI,IAAXqU,EACFs9H,EAAW,OACXjzI,EAASgI,KAAKhI,OACd2V,EAAS,OAEJ,QAAerU,IAAXtB,GAA0C,kBAAX2V,EACxCs9H,EAAWt9H,EACX3V,EAASgI,KAAKhI,OACd2V,EAAS,MAEJ,KAAIpL,SAASoL,GAWlB,MAAM,IAAIhV,MACR,2EAXFgV,GAAkB,EACdpL,SAASvK,IACXA,GAAkB,OACDsB,IAAb2xI,IAAwBA,EAAW,UAEvCA,EAAWjzI,EACXA,OAASsB,GASb,IAAIszI,EAAY5sI,KAAKhI,OAAS2V,EAG9B,SAFerU,IAAXtB,GAAwBA,EAAS40I,KAAW50I,EAAS40I,GAEpD3pH,EAAOjrB,OAAS,IAAMA,EAAS,GAAK2V,EAAS,IAAOA,EAAS3N,KAAKhI,OACrE,MAAM,IAAIyyI,WAAW,0CAGlBQ,IAAUA,EAAW,QAG1B,IADA,IAAIQ,GAAc,IAEhB,OAAQR,GACN,IAAK,MACH,OAAO0B,EAAS3sI,KAAMijB,EAAQtV,EAAQ3V,GAExC,IAAK,OACL,IAAK,QACH,OAAO80I,EAAU9sI,KAAMijB,EAAQtV,EAAQ3V,GAEzC,IAAK,QACH,OAAOg1I,EAAWhtI,KAAMijB,EAAQtV,EAAQ3V,GAE1C,IAAK,SACL,IAAK,SACH,OAAOk1I,EAAYltI,KAAMijB,EAAQtV,EAAQ3V,GAE3C,IAAK,SAEH,OAAOm1I,EAAYntI,KAAMijB,EAAQtV,EAAQ3V,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOo1I,EAAUptI,KAAMijB,EAAQtV,EAAQ3V,GAEzC,QACE,GAAIyzI,EAAa,MAAM,IAAInvG,UAAU,qBAAuB2uG,GAC5DA,GAAY,GAAKA,GAAU1zI,cAC3Bk0I,GAAc,IAKtBloH,EAAOzmB,UAAUgnF,OAAS,WACxB,MAAO,CACLnkF,KAAM,SACN9E,KAAMpD,MAAMqF,UAAUxF,MAAMyI,KAAKC,KAAKupF,MAAQvpF,KAAM,KAwFxD,IAAIivI,EAAuB,KAE3B,SAASnB,EAAuBoB,GAC9B,IAAIxxI,EAAMwxI,EAAWl3I,OACrB,GAAI0F,GAAOuxI,EACT,OAAOzoI,OAAO+L,aAAa1Q,MAAM2E,OAAQ0oI,GAI3C,IAAI5B,EAAM,GACNv1I,EAAI,EACR,MAAOA,EAAI2F,EACT4vI,GAAO9mI,OAAO+L,aAAa1Q,MACzB2E,OACA0oI,EAAW53I,MAAMS,EAAGA,GAAKk3I,IAG7B,OAAO3B,EAGT,SAASvB,EAAYjuH,EAAKrf,EAAOC,GAC/B,IAAI+zC,EAAM,GACV/zC,EAAMc,KAAK8C,IAAIwb,EAAI9lB,OAAQ0G,GAE3B,IAAK,IAAI3G,EAAI0G,EAAO1G,EAAI2G,IAAO3G,EAC7B06C,GAAOjsC,OAAO+L,aAAsB,IAATuL,EAAI/lB,IAEjC,OAAO06C,EAGT,SAASu5F,EAAaluH,EAAKrf,EAAOC,GAChC,IAAI+zC,EAAM,GACV/zC,EAAMc,KAAK8C,IAAIwb,EAAI9lB,OAAQ0G,GAE3B,IAAK,IAAI3G,EAAI0G,EAAO1G,EAAI2G,IAAO3G,EAC7B06C,GAAOjsC,OAAO+L,aAAauL,EAAI/lB,IAEjC,OAAO06C,EAGT,SAASo5F,EAAU/tH,EAAKrf,EAAOC,GAC7B,IAAIhB,EAAMogB,EAAI9lB,SAETyG,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMhB,KAAKgB,EAAMhB,GAGxC,IADA,IAAIghC,EAAM,GACD3mC,EAAI0G,EAAO1G,EAAI2G,IAAO3G,EAC7B2mC,GAAOywG,EAAMrxH,EAAI/lB,IAEnB,OAAO2mC,EAGT,SAASwtG,EAAcpuH,EAAKrf,EAAOC,GAGjC,IAFA,IAAIwiC,EAAQpjB,EAAIxmB,MAAMmH,EAAOC,GACzB4uI,EAAM,GACDv1I,EAAI,EAAGA,EAAImpC,EAAMlpC,OAAQD,GAAK,EACrCu1I,GAAO9mI,OAAO+L,aAAa2uB,EAAMnpC,GAAoB,IAAfmpC,EAAMnpC,EAAI,IAElD,OAAOu1I,EA0CT,SAAS8B,EAAazhI,EAAQujD,EAAKl5D,GACjC,GAAK2V,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI88H,WAAW,sBAC3D,GAAI98H,EAASujD,EAAMl5D,EAAQ,MAAM,IAAIyyI,WAAW,yCA+JlD,SAAS4E,EAAUvxH,EAAKtmB,EAAOmW,EAAQujD,EAAKjhC,EAAK3tB,GAC/C,IAAKihB,EAAO+nH,SAASxtH,GAAM,MAAM,IAAIwe,UAAU,+CAC/C,GAAI9kC,EAAQy4B,GAAOz4B,EAAQ8K,EAAK,MAAM,IAAImoI,WAAW,qCACrD,GAAI98H,EAASujD,EAAMpzC,EAAI9lB,OAAQ,MAAM,IAAIyyI,WAAW,sBAkDtD,SAAS6E,EAAmBxxH,EAAKtmB,EAAOmW,EAAQ4hI,GAC1C/3I,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIO,EAAI,EAAGimC,EAAIx+B,KAAK8C,IAAIwb,EAAI9lB,OAAS2V,EAAQ,GAAI5V,EAAIimC,IAAKjmC,EAC7D+lB,EAAInQ,EAAS5V,IAAMP,EAAS,KAAS,GAAK+3I,EAAex3I,EAAI,EAAIA,MAClC,GAA5Bw3I,EAAex3I,EAAI,EAAIA,GA8B9B,SAASy3I,EAAmB1xH,EAAKtmB,EAAOmW,EAAQ4hI,GAC1C/3I,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIO,EAAI,EAAGimC,EAAIx+B,KAAK8C,IAAIwb,EAAI9lB,OAAS2V,EAAQ,GAAI5V,EAAIimC,IAAKjmC,EAC7D+lB,EAAInQ,EAAS5V,GAAMP,IAAuC,GAA5B+3I,EAAex3I,EAAI,EAAIA,GAAU,IAmJnE,SAAS03I,EAAc3xH,EAAKtmB,EAAOmW,EAAQujD,EAAKjhC,EAAK3tB,GACnD,GAAIqL,EAASujD,EAAMpzC,EAAI9lB,OAAQ,MAAM,IAAIyyI,WAAW,sBACpD,GAAI98H,EAAS,EAAG,MAAM,IAAI88H,WAAW,sBAGvC,SAASiF,EAAY5xH,EAAKtmB,EAAOmW,EAAQ4hI,EAAcI,GAKrD,OAJKA,GACHF,EAAa3xH,EAAKtmB,EAAOmW,EAAQ,EAAG,sBAAyB,sBAE/Du8H,EAAQzlH,MAAM3G,EAAKtmB,EAAOmW,EAAQ4hI,EAAc,GAAI,GAC7C5hI,EAAS,EAWlB,SAASiiI,EAAa9xH,EAAKtmB,EAAOmW,EAAQ4hI,EAAcI,GAKtD,OAJKA,GACHF,EAAa3xH,EAAKtmB,EAAOmW,EAAQ,EAAG,uBAA0B,uBAEhEu8H,EAAQzlH,MAAM3G,EAAKtmB,EAAOmW,EAAQ4hI,EAAc,GAAI,GAC7C5hI,EAAS,EA/clB4V,EAAOzmB,UAAUxF,MAAQ,SAAgBmH,EAAOC,GAC9C,IAoBImxI,EApBAnyI,EAAMsC,KAAKhI,OAqBf,GApBAyG,IAAUA,EACVC,OAAcpF,IAARoF,EAAoBhB,IAAQgB,EAE9BD,EAAQ,GACVA,GAASf,EACLe,EAAQ,IAAGA,EAAQ,IACdA,EAAQf,IACjBe,EAAQf,GAGNgB,EAAM,GACRA,GAAOhB,EACHgB,EAAM,IAAGA,EAAM,IACVA,EAAMhB,IACfgB,EAAMhB,GAGJgB,EAAMD,IAAOC,EAAMD,GAGnB8kB,EAAO+mH,oBACTuF,EAAS7vI,KAAKwD,SAAS/E,EAAOC,GAC9BmxI,EAAO3yI,UAAYqmB,EAAOzmB,cACrB,CACL,IAAIgzI,EAAWpxI,EAAMD,EACrBoxI,EAAS,IAAItsH,EAAOusH,OAAUx2I,GAC9B,IAAK,IAAIvB,EAAI,EAAGA,EAAI+3I,IAAY/3I,EAC9B83I,EAAO93I,GAAKiI,KAAKjI,EAAI0G,GAIzB,OAAOoxI,GAWTtsH,EAAOzmB,UAAUizI,WAAa,SAAqBpiI,EAAQxQ,EAAYwyI,GACrEhiI,GAAkB,EAClBxQ,GAA0B,EACrBwyI,GAAUP,EAAYzhI,EAAQxQ,EAAY6C,KAAKhI,QAEpD,IAAIusC,EAAMvkC,KAAK2N,GACXqiI,EAAM,EACNj4I,EAAI,EACR,QAASA,EAAIoF,IAAe6yI,GAAO,KACjCzrG,GAAOvkC,KAAK2N,EAAS5V,GAAKi4I,EAG5B,OAAOzrG,GAGThhB,EAAOzmB,UAAUmzI,WAAa,SAAqBtiI,EAAQxQ,EAAYwyI,GACrEhiI,GAAkB,EAClBxQ,GAA0B,EACrBwyI,GACHP,EAAYzhI,EAAQxQ,EAAY6C,KAAKhI,QAGvC,IAAIusC,EAAMvkC,KAAK2N,IAAWxQ,GACtB6yI,EAAM,EACV,MAAO7yI,EAAa,IAAM6yI,GAAO,KAC/BzrG,GAAOvkC,KAAK2N,IAAWxQ,GAAc6yI,EAGvC,OAAOzrG,GAGThhB,EAAOzmB,UAAUozI,UAAY,SAAoBviI,EAAQgiI,GAEvD,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCgI,KAAK2N,IAGd4V,EAAOzmB,UAAUqzI,aAAe,SAAuBxiI,EAAQgiI,GAE7D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCgI,KAAK2N,GAAW3N,KAAK2N,EAAS,IAAM,GAG7C4V,EAAOzmB,UAAU2vI,aAAe,SAAuB9+H,EAAQgiI,GAE7D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACnCgI,KAAK2N,IAAW,EAAK3N,KAAK2N,EAAS,IAG7C4V,EAAOzmB,UAAUszI,aAAe,SAAuBziI,EAAQgiI,GAG7D,OAFKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,SAElCgI,KAAK2N,GACT3N,KAAK2N,EAAS,IAAM,EACpB3N,KAAK2N,EAAS,IAAM,IACD,SAAnB3N,KAAK2N,EAAS,IAGrB4V,EAAOzmB,UAAUuzI,aAAe,SAAuB1iI,EAAQgiI,GAG7D,OAFKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QAEpB,SAAfgI,KAAK2N,IACT3N,KAAK2N,EAAS,IAAM,GACrB3N,KAAK2N,EAAS,IAAM,EACrB3N,KAAK2N,EAAS,KAGlB4V,EAAOzmB,UAAUwzI,UAAY,SAAoB3iI,EAAQxQ,EAAYwyI,GACnEhiI,GAAkB,EAClBxQ,GAA0B,EACrBwyI,GAAUP,EAAYzhI,EAAQxQ,EAAY6C,KAAKhI,QAEpD,IAAIusC,EAAMvkC,KAAK2N,GACXqiI,EAAM,EACNj4I,EAAI,EACR,QAASA,EAAIoF,IAAe6yI,GAAO,KACjCzrG,GAAOvkC,KAAK2N,EAAS5V,GAAKi4I,EAM5B,OAJAA,GAAO,IAEHzrG,GAAOyrG,IAAKzrG,GAAO/kC,KAAK4C,IAAI,EAAG,EAAIjF,IAEhConC,GAGThhB,EAAOzmB,UAAUyzI,UAAY,SAAoB5iI,EAAQxQ,EAAYwyI,GACnEhiI,GAAkB,EAClBxQ,GAA0B,EACrBwyI,GAAUP,EAAYzhI,EAAQxQ,EAAY6C,KAAKhI,QAEpD,IAAID,EAAIoF,EACJ6yI,EAAM,EACNzrG,EAAMvkC,KAAK2N,IAAW5V,GAC1B,MAAOA,EAAI,IAAMi4I,GAAO,KACtBzrG,GAAOvkC,KAAK2N,IAAW5V,GAAKi4I,EAM9B,OAJAA,GAAO,IAEHzrG,GAAOyrG,IAAKzrG,GAAO/kC,KAAK4C,IAAI,EAAG,EAAIjF,IAEhConC,GAGThhB,EAAOzmB,UAAU0zI,SAAW,SAAmB7iI,EAAQgiI,GAErD,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACtB,IAAfgI,KAAK2N,IAC0B,GAA5B,IAAO3N,KAAK2N,GAAU,GADK3N,KAAK2N,IAI3C4V,EAAOzmB,UAAU2zI,YAAc,SAAsB9iI,EAAQgiI,GACtDA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QAC3C,IAAIusC,EAAMvkC,KAAK2N,GAAW3N,KAAK2N,EAAS,IAAM,EAC9C,OAAc,MAAN42B,EAAsB,WAANA,EAAmBA,GAG7ChhB,EAAOzmB,UAAU4zI,YAAc,SAAsB/iI,EAAQgiI,GACtDA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QAC3C,IAAIusC,EAAMvkC,KAAK2N,EAAS,GAAM3N,KAAK2N,IAAW,EAC9C,OAAc,MAAN42B,EAAsB,WAANA,EAAmBA,GAG7ChhB,EAAOzmB,UAAU6zI,YAAc,SAAsBhjI,EAAQgiI,GAG3D,OAFKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QAEnCgI,KAAK2N,GACV3N,KAAK2N,EAAS,IAAM,EACpB3N,KAAK2N,EAAS,IAAM,GACpB3N,KAAK2N,EAAS,IAAM,IAGzB4V,EAAOzmB,UAAU8zI,YAAc,SAAsBjjI,EAAQgiI,GAG3D,OAFKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QAEnCgI,KAAK2N,IAAW,GACrB3N,KAAK2N,EAAS,IAAM,GACpB3N,KAAK2N,EAAS,IAAM,EACpB3N,KAAK2N,EAAS,IAGnB4V,EAAOzmB,UAAU+zI,YAAc,SAAsBljI,EAAQgiI,GAE3D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCkyI,EAAQpmH,KAAK9jB,KAAM2N,GAAQ,EAAM,GAAI,IAG9C4V,EAAOzmB,UAAUg0I,YAAc,SAAsBnjI,EAAQgiI,GAE3D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCkyI,EAAQpmH,KAAK9jB,KAAM2N,GAAQ,EAAO,GAAI,IAG/C4V,EAAOzmB,UAAUi0I,aAAe,SAAuBpjI,EAAQgiI,GAE7D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCkyI,EAAQpmH,KAAK9jB,KAAM2N,GAAQ,EAAM,GAAI,IAG9C4V,EAAOzmB,UAAUk0I,aAAe,SAAuBrjI,EAAQgiI,GAE7D,OADKA,GAAUP,EAAYzhI,EAAQ,EAAG3N,KAAKhI,QACpCkyI,EAAQpmH,KAAK9jB,KAAM2N,GAAQ,EAAO,GAAI,IAS/C4V,EAAOzmB,UAAUm0I,YAAc,SAAsBz5I,EAAOmW,EAAQxQ,EAAYwyI,GAI9E,GAHAn4I,GAASA,EACTmW,GAAkB,EAClBxQ,GAA0B,GACrBwyI,EAAU,CACb,IAAIuB,EAAW1xI,KAAK4C,IAAI,EAAG,EAAIjF,GAAc,EAC7CkyI,EAASrvI,KAAMxI,EAAOmW,EAAQxQ,EAAY+zI,EAAU,GAGtD,IAAIlB,EAAM,EACNj4I,EAAI,EACRiI,KAAK2N,GAAkB,IAARnW,EACf,QAASO,EAAIoF,IAAe6yI,GAAO,KACjChwI,KAAK2N,EAAS5V,GAAMP,EAAQw4I,EAAO,IAGrC,OAAOriI,EAASxQ,GAGlBomB,EAAOzmB,UAAUq0I,YAAc,SAAsB35I,EAAOmW,EAAQxQ,EAAYwyI,GAI9E,GAHAn4I,GAASA,EACTmW,GAAkB,EAClBxQ,GAA0B,GACrBwyI,EAAU,CACb,IAAIuB,EAAW1xI,KAAK4C,IAAI,EAAG,EAAIjF,GAAc,EAC7CkyI,EAASrvI,KAAMxI,EAAOmW,EAAQxQ,EAAY+zI,EAAU,GAGtD,IAAIn5I,EAAIoF,EAAa,EACjB6yI,EAAM,EACVhwI,KAAK2N,EAAS5V,GAAa,IAARP,EACnB,QAASO,GAAK,IAAMi4I,GAAO,KACzBhwI,KAAK2N,EAAS5V,GAAMP,EAAQw4I,EAAO,IAGrC,OAAOriI,EAASxQ,GAGlBomB,EAAOzmB,UAAUs0I,WAAa,SAAqB55I,EAAOmW,EAAQgiI,GAMhE,OALAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,IAAM,GACjD4V,EAAO+mH,sBAAqB9yI,EAAQgI,KAAKolB,MAAMptB,IACpDwI,KAAK2N,GAAmB,IAARnW,EACTmW,EAAS,GAWlB4V,EAAOzmB,UAAUu0I,cAAgB,SAAwB75I,EAAOmW,EAAQgiI,GAUtE,OATAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,MAAQ,GACpD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAmB,IAARnW,EAChBwI,KAAK2N,EAAS,GAAMnW,IAAU,GAE9B83I,EAAkBtvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAUw0I,cAAgB,SAAwB95I,EAAOmW,EAAQgiI,GAUtE,OATAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,MAAQ,GACpD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAWnW,IAAU,EAC1BwI,KAAK2N,EAAS,GAAc,IAARnW,GAEpB83I,EAAkBtvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAUlB4V,EAAOzmB,UAAUy0I,cAAgB,SAAwB/5I,EAAOmW,EAAQgiI,GAYtE,OAXAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,WAAY,GACxD4V,EAAO+mH,qBACTtqI,KAAK2N,EAAS,GAAMnW,IAAU,GAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,GAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,EAC9BwI,KAAK2N,GAAmB,IAARnW,GAEhBg4I,EAAkBxvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAU00I,cAAgB,SAAwBh6I,EAAOmW,EAAQgiI,GAYtE,OAXAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,WAAY,GACxD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAWnW,IAAU,GAC1BwI,KAAK2N,EAAS,GAAMnW,IAAU,GAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,EAC9BwI,KAAK2N,EAAS,GAAc,IAARnW,GAEpBg4I,EAAkBxvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAU20I,WAAa,SAAqBj6I,EAAOmW,EAAQxQ,EAAYwyI,GAG5E,GAFAn4I,GAASA,EACTmW,GAAkB,GACbgiI,EAAU,CACb,IAAI+B,EAAQlyI,KAAK4C,IAAI,EAAG,EAAIjF,EAAa,GAEzCkyI,EAASrvI,KAAMxI,EAAOmW,EAAQxQ,EAAYu0I,EAAQ,GAAIA,GAGxD,IAAI35I,EAAI,EACJi4I,EAAM,EACNtxH,EAAM,EACV1e,KAAK2N,GAAkB,IAARnW,EACf,QAASO,EAAIoF,IAAe6yI,GAAO,KAC7Bx4I,EAAQ,GAAa,IAARknB,GAAsC,IAAzB1e,KAAK2N,EAAS5V,EAAI,KAC9C2mB,EAAM,GAER1e,KAAK2N,EAAS5V,IAAOP,EAAQw4I,GAAQ,GAAKtxH,EAAM,IAGlD,OAAO/Q,EAASxQ,GAGlBomB,EAAOzmB,UAAU60I,WAAa,SAAqBn6I,EAAOmW,EAAQxQ,EAAYwyI,GAG5E,GAFAn4I,GAASA,EACTmW,GAAkB,GACbgiI,EAAU,CACb,IAAI+B,EAAQlyI,KAAK4C,IAAI,EAAG,EAAIjF,EAAa,GAEzCkyI,EAASrvI,KAAMxI,EAAOmW,EAAQxQ,EAAYu0I,EAAQ,GAAIA,GAGxD,IAAI35I,EAAIoF,EAAa,EACjB6yI,EAAM,EACNtxH,EAAM,EACV1e,KAAK2N,EAAS5V,GAAa,IAARP,EACnB,QAASO,GAAK,IAAMi4I,GAAO,KACrBx4I,EAAQ,GAAa,IAARknB,GAAsC,IAAzB1e,KAAK2N,EAAS5V,EAAI,KAC9C2mB,EAAM,GAER1e,KAAK2N,EAAS5V,IAAOP,EAAQw4I,GAAQ,GAAKtxH,EAAM,IAGlD,OAAO/Q,EAASxQ,GAGlBomB,EAAOzmB,UAAU80I,UAAY,SAAoBp6I,EAAOmW,EAAQgiI,GAO9D,OANAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,KAAO,KAClD4V,EAAO+mH,sBAAqB9yI,EAAQgI,KAAKolB,MAAMptB,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCwI,KAAK2N,GAAmB,IAARnW,EACTmW,EAAS,GAGlB4V,EAAOzmB,UAAU+0I,aAAe,SAAuBr6I,EAAOmW,EAAQgiI,GAUpE,OATAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,OAAS,OACrD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAmB,IAARnW,EAChBwI,KAAK2N,EAAS,GAAMnW,IAAU,GAE9B83I,EAAkBtvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAUg1I,aAAe,SAAuBt6I,EAAOmW,EAAQgiI,GAUpE,OATAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,OAAS,OACrD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAWnW,IAAU,EAC1BwI,KAAK2N,EAAS,GAAc,IAARnW,GAEpB83I,EAAkBtvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAUi1I,aAAe,SAAuBv6I,EAAOmW,EAAQgiI,GAYpE,OAXAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,YAAa,YACzD4V,EAAO+mH,qBACTtqI,KAAK2N,GAAmB,IAARnW,EAChBwI,KAAK2N,EAAS,GAAMnW,IAAU,EAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,GAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,IAE9Bg4I,EAAkBxvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAGlB4V,EAAOzmB,UAAUk1I,aAAe,SAAuBx6I,EAAOmW,EAAQgiI,GAapE,OAZAn4I,GAASA,EACTmW,GAAkB,EACbgiI,GAAUN,EAASrvI,KAAMxI,EAAOmW,EAAQ,EAAG,YAAa,YACzDnW,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxC+rB,EAAO+mH,qBACTtqI,KAAK2N,GAAWnW,IAAU,GAC1BwI,KAAK2N,EAAS,GAAMnW,IAAU,GAC9BwI,KAAK2N,EAAS,GAAMnW,IAAU,EAC9BwI,KAAK2N,EAAS,GAAc,IAARnW,GAEpBg4I,EAAkBxvI,KAAMxI,EAAOmW,GAAQ,GAElCA,EAAS,GAgBlB4V,EAAOzmB,UAAUm1I,aAAe,SAAuBz6I,EAAOmW,EAAQgiI,GACpE,OAAOD,EAAW1vI,KAAMxI,EAAOmW,GAAQ,EAAMgiI,IAG/CpsH,EAAOzmB,UAAUo1I,aAAe,SAAuB16I,EAAOmW,EAAQgiI,GACpE,OAAOD,EAAW1vI,KAAMxI,EAAOmW,GAAQ,EAAOgiI,IAWhDpsH,EAAOzmB,UAAUq1I,cAAgB,SAAwB36I,EAAOmW,EAAQgiI,GACtE,OAAOC,EAAY5vI,KAAMxI,EAAOmW,GAAQ,EAAMgiI,IAGhDpsH,EAAOzmB,UAAUs1I,cAAgB,SAAwB56I,EAAOmW,EAAQgiI,GACtE,OAAOC,EAAY5vI,KAAMxI,EAAOmW,GAAQ,EAAOgiI,IAIjDpsH,EAAOzmB,UAAU0K,KAAO,SAAe8B,EAAQ+oI,EAAa5zI,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMsB,KAAKhI,QAC9Bq6I,GAAe/oI,EAAOtR,SAAQq6I,EAAc/oI,EAAOtR,QAClDq6I,IAAaA,EAAc,GAC5B3zI,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB6K,EAAOtR,QAAgC,IAAhBgI,KAAKhI,OAAc,OAAO,EAGrD,GAAIq6I,EAAc,EAChB,MAAM,IAAI5H,WAAW,6BAEvB,GAAIhsI,EAAQ,GAAKA,GAASuB,KAAKhI,OAAQ,MAAM,IAAIyyI,WAAW,6BAC5D,GAAI/rI,EAAM,EAAG,MAAM,IAAI+rI,WAAW,2BAG9B/rI,EAAMsB,KAAKhI,SAAQ0G,EAAMsB,KAAKhI,QAC9BsR,EAAOtR,OAASq6I,EAAc3zI,EAAMD,IACtCC,EAAM4K,EAAOtR,OAASq6I,EAAc5zI,GAGtC,IACI1G,EADA2F,EAAMgB,EAAMD,EAGhB,GAAIuB,OAASsJ,GAAU7K,EAAQ4zI,GAAeA,EAAc3zI,EAE1D,IAAK3G,EAAI2F,EAAM,EAAG3F,GAAK,IAAKA,EAC1BuR,EAAOvR,EAAIs6I,GAAeryI,KAAKjI,EAAI0G,QAEhC,GAAIf,EAAM,MAAS6lB,EAAO+mH,oBAE/B,IAAKvyI,EAAI,EAAGA,EAAI2F,IAAO3F,EACrBuR,EAAOvR,EAAIs6I,GAAeryI,KAAKjI,EAAI0G,QAGrChB,WAAWX,UAAUkmB,IAAIjjB,KACvBuJ,EACAtJ,KAAKwD,SAAS/E,EAAOA,EAAQf,GAC7B20I,GAIJ,OAAO30I,GAOT6lB,EAAOzmB,UAAUwgD,KAAO,SAAe/Y,EAAK9lC,EAAOC,EAAKusI,GAEtD,GAAmB,kBAAR1mG,EAAkB,CAS3B,GARqB,kBAAV9lC,GACTwsI,EAAWxsI,EACXA,EAAQ,EACRC,EAAMsB,KAAKhI,QACa,kBAAR0G,IAChBusI,EAAWvsI,EACXA,EAAMsB,KAAKhI,QAEM,IAAfusC,EAAIvsC,OAAc,CACpB,IAAI6D,EAAO0oC,EAAI5mC,WAAW,GACtB9B,EAAO,MACT0oC,EAAM1oC,GAGV,QAAiBvC,IAAb2xI,GAA8C,kBAAbA,EACnC,MAAM,IAAI3uG,UAAU,6BAEtB,GAAwB,kBAAb2uG,IAA0B1nH,EAAO4nH,WAAWF,GACrD,MAAM,IAAI3uG,UAAU,qBAAuB2uG,OAErB,kBAAR1mG,IAChBA,GAAY,KAId,GAAI9lC,EAAQ,GAAKuB,KAAKhI,OAASyG,GAASuB,KAAKhI,OAAS0G,EACpD,MAAM,IAAI+rI,WAAW,sBAGvB,GAAI/rI,GAAOD,EACT,OAAOuB,KAQT,IAAIjI,EACJ,GANA0G,KAAkB,EAClBC,OAAcpF,IAARoF,EAAoBsB,KAAKhI,OAAS0G,IAAQ,EAE3C6lC,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKxsC,EAAI0G,EAAO1G,EAAI2G,IAAO3G,EACzBiI,KAAKjI,GAAKwsC,MAEP,CACL,IAAIrD,EAAQ3d,EAAO+nH,SAAS/mG,GACxBA,EACAmnG,EAAY,IAAInoH,EAAOghB,EAAK0mG,GAAUnmI,YACtCpH,EAAMwjC,EAAMlpC,OAChB,IAAKD,EAAI,EAAGA,EAAI2G,EAAMD,IAAS1G,EAC7BiI,KAAKjI,EAAI0G,GAASyiC,EAAMnpC,EAAI2F,GAIhC,OAAOsC,MAMT,IAAIsyI,EAAoB,qBAExB,SAASC,EAAax6G,GAIpB,GAFAA,EAAMy6G,EAAWz6G,GAAKxzB,QAAQ+tI,EAAmB,IAE7Cv6G,EAAI//B,OAAS,EAAG,MAAO,GAE3B,MAAO+/B,EAAI//B,OAAS,IAAM,EACxB+/B,GAAY,IAEd,OAAOA,EAGT,SAASy6G,EAAYz6G,GACnB,OAAIA,EAAIhhC,KAAaghC,EAAIhhC,OAClBghC,EAAIxzB,QAAQ,aAAc,IAGnC,SAAS4qI,EAAOnwH,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEla,SAAS,IAC7Bka,EAAEla,SAAS,IAGpB,SAAS4mI,EAAazoH,EAAQwvH,GAE5B,IAAI7E,EADJ6E,EAAQA,GAASpwI,IAMjB,IAJA,IAAIrK,EAASirB,EAAOjrB,OAChB06I,EAAgB,KAChBxxG,EAAQ,GAEHnpC,EAAI,EAAGA,EAAIC,IAAUD,EAAG,CAI/B,GAHA61I,EAAY3qH,EAAOtlB,WAAW5F,GAG1B61I,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAK8E,EAAe,CAElB,GAAI9E,EAAY,MAAQ,EAEjB6E,GAAS,IAAM,GAAGvxG,EAAMvpC,KAAK,IAAM,IAAM,KAC9C,SACK,GAAII,EAAI,IAAMC,EAAQ,EAEtBy6I,GAAS,IAAM,GAAGvxG,EAAMvpC,KAAK,IAAM,IAAM,KAC9C,SAIF+6I,EAAgB9E,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjB6E,GAAS,IAAM,GAAGvxG,EAAMvpC,KAAK,IAAM,IAAM,KAC9C+6I,EAAgB9E,EAChB,SAIFA,EAAkE,OAArD8E,EAAgB,OAAU,GAAK9E,EAAY,YAC/C8E,IAEJD,GAAS,IAAM,GAAGvxG,EAAMvpC,KAAK,IAAM,IAAM,KAMhD,GAHA+6I,EAAgB,KAGZ9E,EAAY,IAAM,CACpB,IAAK6E,GAAS,GAAK,EAAG,MACtBvxG,EAAMvpC,KAAKi2I,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAK6E,GAAS,GAAK,EAAG,MACtBvxG,EAAMvpC,KACJi2I,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAK6E,GAAS,GAAK,EAAG,MACtBvxG,EAAMvpC,KACJi2I,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAIj1I,MAAM,sBARhB,IAAK85I,GAAS,GAAK,EAAG,MACtBvxG,EAAMvpC,KACJi2I,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAO1sG,EAGT,SAAS+rG,EAAcl1G,GAErB,IADA,IAAI46G,EAAY,GACP56I,EAAI,EAAGA,EAAIggC,EAAI//B,SAAUD,EAEhC46I,EAAUh7I,KAAyB,IAApBogC,EAAIp6B,WAAW5F,IAEhC,OAAO46I,EAGT,SAAStF,EAAgBt1G,EAAK06G,GAG5B,IAFA,IAAIr3H,EAAGw3H,EAAIC,EACPF,EAAY,GACP56I,EAAI,EAAGA,EAAIggC,EAAI//B,SAAUD,EAAG,CACnC,IAAK06I,GAAS,GAAK,EAAG,MAEtBr3H,EAAI2c,EAAIp6B,WAAW5F,GACnB66I,EAAKx3H,GAAK,EACVy3H,EAAKz3H,EAAI,IACTu3H,EAAUh7I,KAAKk7I,GACfF,EAAUh7I,KAAKi7I,GAGjB,OAAOD,EAGT,SAAShH,EAAe5zG,GACtB,OAAOkyG,EAAO7sI,YAAYm1I,EAAYx6G,IAGxC,SAASg1G,GAAY91H,EAAK67H,EAAKnlI,EAAQ3V,GACrC,IAAK,IAAID,EAAI,EAAGA,EAAIC,IAAUD,EAAG,CAC/B,GAAKA,EAAI4V,GAAUmlI,EAAI96I,QAAYD,GAAKkf,EAAIjf,OAAS,MACrD86I,EAAI/6I,EAAI4V,GAAUsJ,EAAIlf,GAExB,OAAOA,EAGT,SAASwzI,GAAOhnG,GACd,OAAOA,IAAQA,K,4CC3vDjB,kBAGI8xD,EADkB,qBAAX5/F,OACDA,OACmB,qBAAXu3I,EACRA,EACiB,qBAATvoH,KACRA,KAEA,GAGVlpB,EAAOC,QAAU65F,I,yCCZjB,SAAS7wE,EAAuBC,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EAGTlpB,EAAOC,QAAUgpB,G,qBCRjB,IAAIutH,EAAU,EAAQ,QAElBC,EAAwB,EAAQ,QAEpC,SAASC,EAA2BxtH,EAAM1lB,GACxC,OAAIA,GAA2B,WAAlBgzI,EAAQhzI,IAAsC,oBAATA,EAI3CizI,EAAsBvtH,GAHpB1lB,EAMXxD,EAAOC,QAAUy2I,G,qBCMjB,IAAItvG,EAAW,EAAQ,QAEnBuvG,EAAan2I,OAAOC,QAAU,WAChC,SAASm2I,KACT,OAAO,SAASpjI,GACd,GAAyB,IAArBnG,UAAU5R,OACZ,MAAM,IAAIW,MAAM,kDAGlB,OADAw6I,EAAEr2I,UAAYiT,EACP,IAAIojI,GAPmB,GAelC,SAASC,EAAaC,EAAW95H,GAC/BvZ,KAAKiK,KAAO,eACZjK,KAAKnE,KAAOw3I,EAAUx3I,KACtBmE,KAAKuZ,QAAUA,GAAW85H,EAAU95H,QAkBtC,SAAS+5H,EAAeC,GAEtB,SAASC,EAAen7E,EAAGn0C,EAAGZ,EAAGmwH,GAC/B,OAAiB,MAAL,EAAJp7E,GAA0B,IAAL,EAAJn0C,IAAmB,EAAJZ,IAAc,EAAJmwH,GAAS,IAG7D,IAAIvvH,EAAIqvH,EAAM9sH,MAAM,wCACpB,OAAKvC,EAIDA,EAAE,GAEGsvH,EAAetvH,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAG3f,QAAQ,IAAK,IAAK2f,EAAE,IAClDA,EAAE,GAAK,GAGTsvH,EAAetvH,EAAE,GAAIA,EAAE,GAAI,EAAIA,EAAE,IAGjCsvH,EAAe,EAAGtvH,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAZhC,KAkBX,SAASwvH,IACP1zI,KAAK81B,OAASo9G,EAAW,MAwD3B,SAASS,EAAaJ,EAAOh7I,EAAUq7I,EAAeC,GACpD,IAAIhgB,EAASggB,EAAaN,EAAMv8I,MAAM68I,GAAc,CAACN,GACrD,IAAK,IAAIx7I,KAAK87H,EACZ,GAAyB,kBAAdA,EAAO97H,GAAlB,CAGA,IAAI+7I,EAAKjgB,EAAO97H,GAAGf,MAAM48I,GACzB,GAAkB,IAAdE,EAAG97I,OAAP,CAGA,IAAIk1B,EAAI4mH,EAAG,GACP70H,EAAI60H,EAAG,GACXv7I,EAAS20B,EAAGjO,KAIhB,SAAS80H,EAASR,EAAO53F,EAAKq4F,GAE5B,IAAIC,EAASV,EAEb,SAASW,IACP,IAAIC,EAAKb,EAAeC,GACxB,GAAW,OAAPY,EACF,MAAM,IAAIf,EAAaA,EAAagB,OAAOC,aACrB,wBAA0BJ,GAIlD,OADAV,EAAQA,EAAMhvI,QAAQ,iBAAkB,IACjC4vI,EAIT,SAASG,EAAmBf,EAAO53F,GACjC,IAAI8J,EAAW,IAAIiuF,EAEnBC,EAAaJ,GAAO,SAAUrmH,EAAGjO,GAC/B,OAAQiO,GACR,IAAK,SAEH,IAAK,IAAIn1B,EAAIi8I,EAAWh8I,OAAS,EAAGD,GAAK,EAAGA,IAC1C,GAAIi8I,EAAWj8I,GAAGwJ,KAAO0d,EAAG,CAC1BwmC,EAASziC,IAAIkK,EAAG8mH,EAAWj8I,GAAGw8I,QAC9B,MAGJ,MACF,IAAK,WACH9uF,EAAS+uF,IAAItnH,EAAGjO,EAAG,CAAC,KAAM,OAC1B,MACF,IAAK,OACH,IAAIw1H,EAAOx1H,EAAEjoB,MAAM,KACf09I,EAAQD,EAAK,GACjBhvF,EAASkvF,QAAQznH,EAAGwnH,GACpBjvF,EAASwW,QAAQ/uC,EAAGwnH,IAASjvF,EAASziC,IAAI,eAAe,GACzDyiC,EAAS+uF,IAAItnH,EAAGwnH,EAAO,CAAC,SACJ,IAAhBD,EAAKz8I,QACPytD,EAAS+uF,IAAI,YAAaC,EAAK,GAAI,CAAC,QAAS,SAAU,QAEzD,MACF,IAAK,WACHA,EAAOx1H,EAAEjoB,MAAM,KACfyuD,EAASwW,QAAQ/uC,EAAGunH,EAAK,IACL,IAAhBA,EAAKz8I,QACPytD,EAAS+uF,IAAI,gBAAiBC,EAAK,GAAI,CAAC,QAAS,SAAU,QAE7D,MACF,IAAK,OACHhvF,EAASwW,QAAQ/uC,EAAGjO,GACpB,MACF,IAAK,QACHwmC,EAAS+uF,IAAItnH,EAAGjO,EAAG,CAAC,QAAS,SAAU,MAAO,OAAQ,UACtD,SAED,IAAK,MAGR08B,EAAI44F,OAAS9uF,EAAS3iC,IAAI,SAAU,MACpC64B,EAAI8e,SAAWhV,EAAS3iC,IAAI,WAAY,IACxC,IACE64B,EAAIn1B,KAAOi/B,EAAS3iC,IAAI,OAAQ,QAChC,MAAOlpB,IACT+hD,EAAIi5F,UAAYnvF,EAAS3iC,IAAI,YAAa,SAC1C64B,EAAIk5F,YAAcpvF,EAAS3iC,IAAI,eAAe,GAC9C64B,EAAI7pB,KAAO2zB,EAAS3iC,IAAI,OAAQ,KAEhC,IACE64B,EAAIuzD,MAAQzpD,EAAS3iC,IAAI,QAAS,UAClC,MAAOlpB,GACP+hD,EAAIuzD,MAAQzpD,EAAS3iC,IAAI,QAAS,UAEpC,IACE64B,EAAI91C,SAAW4/C,EAAS3iC,IAAI,WAAY,QACxC,MAAOlpB,GACP+hD,EAAI91C,SAAW4/C,EAAS3iC,IAAI,WAAY,CACtCrkB,MAAO,EACP8nC,KAAM,EACNuuG,OAAQ,GACR7oC,OAAQ,GACRvtG,IAAK,IACLm+D,MAAO,KACNlhB,EAAIuzD,OAITvzD,EAAIo5F,cAAgBtvF,EAAS3iC,IAAI,gBAAiB,CAChDrkB,MAAO,QACP8nC,KAAM,QACNuuG,OAAQ,SACR7oC,OAAQ,SACRvtG,IAAK,MACLm+D,MAAO,OACNlhB,EAAIuzD,OAGT,SAAS8lC,IACPzB,EAAQA,EAAMhvI,QAAQ,OAAQ,IAOhC,GAHAywI,IACAr5F,EAAIj7C,UAAYwzI,IAChBc,IAC2B,WAAvBzB,EAAMltI,OAAO,EAAG,GAClB,MAAM,IAAI+sI,EAAaA,EAAagB,OAAOC,aACpB,qEACAJ,GAEzBV,EAAQA,EAAMltI,OAAO,GACrB2uI,IACAr5F,EAAIC,QAAUs4F,IAGdc,IACAV,EAAmBf,EAAO53F,GAxO5By3F,EAAat2I,UAAYo2I,EAAWv6I,MAAMmE,WAC1Cs2I,EAAat2I,UAAUG,YAAcm2I,EAGrCA,EAAagB,OAAS,CACpBa,aAAc,CACZp5I,KAAM,EACN0d,QAAS,+BAEX86H,aAAc,CACZx4I,KAAM,EACN0d,QAAS,0BAmCbm6H,EAAS52I,UAAY,CAEnBkmB,IAAK,SAASkK,EAAGjO,GACVjf,KAAK8iB,IAAIoK,IAAY,KAANjO,IAClBjf,KAAK81B,OAAO5I,GAAKjO,IAQrB6D,IAAK,SAASoK,EAAGgoH,EAAMC,GACrB,OAAIA,EACKn1I,KAAKwlC,IAAItY,GAAKltB,KAAK81B,OAAO5I,GAAKgoH,EAAKC,GAEtCn1I,KAAKwlC,IAAItY,GAAKltB,KAAK81B,OAAO5I,GAAKgoH,GAGxC1vG,IAAK,SAAStY,GACZ,OAAOA,KAAKltB,KAAK81B,QAGnB0+G,IAAK,SAAStnH,EAAGjO,EAAGvT,GAClB,IAAK,IAAIsT,EAAI,EAAGA,EAAItT,EAAE1T,SAAUgnB,EAC9B,GAAIC,IAAMvT,EAAEsT,GAAI,CACdhf,KAAKgjB,IAAIkK,EAAGjO,GACZ,QAKN01H,QAAS,SAASznH,EAAGjO,GACf,UAAU3a,KAAK2a,IACjBjf,KAAKgjB,IAAIkK,EAAG9F,SAASnI,EAAG,MAI5Bg9C,QAAS,SAAS/uC,EAAGjO,GAEnB,SAASA,EAAEwH,MAAM,8BACfxH,EAAIiI,WAAWjI,GACXA,GAAK,GAAKA,GAAK,QACjBjf,KAAKgjB,IAAIkK,EAAGjO,IACL,KAiJf,IAAIm2H,EAAmBzxG,EAAS7iB,cAAc,YAE1Cu0H,EAAW,CACbj6H,EAAG,OACHrjB,EAAG,IACH8Z,EAAG,IACHyjI,EAAG,IACHC,KAAM,OACN7wH,GAAI,KACJzF,EAAG,OACH1Y,KAAM,QAKJivI,EAAsB,CACxBC,MAAO,sBACPC,KAAM,kBACNC,KAAM,oBACNC,IAAK,kBACLC,OAAQ,oBACRC,QAAS,oBACTC,KAAM,kBACNC,MAAO,iBAGLC,EAAiB,CACnBh3H,EAAG,QACH1Y,KAAM,QAGJ2vI,EAAe,CACjBxxH,GAAI,QAIN,SAASyxH,EAAa1/I,EAAQ88I,GAC5B,SAAS6C,IAEP,IAAK7C,EACH,OAAO,KAIT,SAAS8C,EAAQv/I,GAEf,OADAy8I,EAAQA,EAAMltI,OAAOvP,EAAOkB,QACrBlB,EAGT,IAAIotB,EAAIqvH,EAAM9sH,MAAM,uBAGpB,OAAO4vH,EAAQnyH,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAGjC,SAASm/E,EAAS//E,GAIhB,OAHA8xH,EAAiBtxF,UAAYxgC,EAC7BA,EAAI8xH,EAAiBv9G,YACrBu9G,EAAiBv9G,YAAc,GACxBvU,EAGT,SAASgzH,EAAUvtI,EAAS4uB,GAC1B,OAAQu+G,EAAav+G,EAAQ1vB,YACtBiuI,EAAav+G,EAAQ1vB,aAAec,EAAQd,UAIrD,SAAS6Y,EAAcnhB,EAAM42I,GAC3B,IAAIvtI,EAAUqsI,EAAS11I,GACvB,IAAKqJ,EACH,OAAO,KAET,IAAI2uB,EAAUlhC,EAAOktC,SAAS7iB,cAAc9X,GACxCiB,EAAOgsI,EAAet2I,GAI1B,OAHIsK,GAAQssI,IACV5+G,EAAQ1tB,GAAQssI,EAAWx/I,QAEtB4gC,EAGT,IAEIrgB,EAFAk/H,EAAU//I,EAAOktC,SAAS7iB,cAAc,OACxC/X,EAAUytI,EAEVC,EAAW,GAEf,MAA6B,QAArBn/H,EAAI8+H,KACV,GAAa,MAAT9+H,EAAE,GA8DNvO,EAAQnC,YAAYnQ,EAAOktC,SAAS55B,eAAes5F,EAAS/rF,SA9D5D,CACE,GAAa,MAATA,EAAE,GAAY,CAEZm/H,EAASz+I,QACTy+I,EAASA,EAASz+I,OAAS,KAAOsf,EAAEjR,OAAO,GAAG9B,QAAQ,IAAK,MAC7DkyI,EAASn+F,MACTvvC,EAAUA,EAAQE,YAGpB,SAEF,IACInD,EADAquI,EAAKb,EAAeh8H,EAAEjR,OAAO,EAAGiR,EAAEtf,OAAS,IAE/C,GAAIm8I,EAAI,CAENruI,EAAOrP,EAAOktC,SAASn6B,4BAA4B,YAAa2qI,GAChEprI,EAAQnC,YAAYd,GACpB,SAEF,IAAIoe,EAAI5M,EAAEmP,MAAM,oDAEhB,IAAKvC,EACH,SAIF,GADApe,EAAOgb,EAAcoD,EAAE,GAAIA,EAAE,KACxBpe,EACH,SAIF,IAAKwwI,EAAUvtI,EAASjD,GACtB,SAGF,GAAIoe,EAAE,GAAI,CACR,IAAIwyH,EAAUxyH,EAAE,GAAGltB,MAAM,KAEzB0/I,EAAQz/I,SAAQ,SAAS0/I,GACvB,IAAIC,EAAU,OAAOtyI,KAAKqyI,GAEtBE,EAAYD,EAAUD,EAAGr/I,MAAM,GAAKq/I,EAExC,GAAInB,EAAoBr9I,eAAe0+I,GAAY,CACjD,IAAIvyG,EAAWsyG,EAAU,mBAAqB,QAC1CE,EAAYtB,EAAoBqB,GAEpC/wI,EAAKwjC,MAAMhF,GAAYwyG,MAI3BhxI,EAAK29B,UAAYizG,EAAQ93I,KAAK,KAIhC63I,EAAS9+I,KAAKusB,EAAE,IAChBnb,EAAQnC,YAAYd,GACpBiD,EAAUjD,EAQd,OAAO0wI,EAQT,IAAIO,EAAkB,CAAC,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAC9E,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MACxE,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAO,MAAQ,CAAC,KAAQ,MACzD,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC/D,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,OAAU,CAAC,MAAS,OAClE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OACtE,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QACtE,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,QAAU,UAExE,SAASC,EAAgBlrG,GACvB,IAAK,IAAI/zC,EAAI,EAAGA,EAAIg/I,EAAgB/+I,OAAQD,IAAK,CAC/C,IAAIoiI,EAAe4c,EAAgBh/I,GACnC,GAAI+zC,GAAYquF,EAAa,IAAMruF,GAAYquF,EAAa,GAC1D,OAAO,EAIX,OAAO,EAGT,SAAS8c,EAAcphF,GACrB,IAEI/pB,EAFAorG,EAAY,GACZ9jI,EAAO,GAGX,IAAKyiD,IAAWA,EAAO95C,WACrB,MAAO,MAGT,SAASo7H,EAAUD,EAAWpxI,GAC5B,IAAK,IAAI/N,EAAI+N,EAAKiW,WAAW/jB,OAAS,EAAGD,GAAK,EAAGA,IAC/Cm/I,EAAUv/I,KAAKmO,EAAKiW,WAAWhkB,IAInC,SAASq/I,EAAaF,GACpB,IAAKA,IAAcA,EAAUl/I,OAC3B,OAAO,KAGT,IAAI8N,EAAOoxI,EAAU5+F,MACjBllC,EAAOtN,EAAK+xB,aAAe/xB,EAAK4+B,UACpC,GAAItxB,EAAM,CAGR,IAAI8Q,EAAI9Q,EAAKqT,MAAM,cACnB,OAAIvC,GACFgzH,EAAUl/I,OAAS,EACZksB,EAAE,IAEJ9Q,EAET,MAAqB,SAAjBtN,EAAKkD,QACAouI,EAAaF,GAElBpxI,EAAKiW,YACPo7H,EAAUD,EAAWpxI,GACdsxI,EAAaF,SAFtB,EAMFC,EAAUD,EAAWrhF,GACrB,MAAQziD,EAAOgkI,EAAaF,GAC1B,IAAK,IAAIn/I,EAAI,EAAGA,EAAIqb,EAAKpb,OAAQD,IAE/B,GADA+zC,EAAW14B,EAAKzV,WAAW5F,GACvBi/I,EAAgBlrG,GAClB,MAAO,MAIb,MAAO,MAGT,SAASurG,EAAe17F,GACtB,GAAwB,kBAAbA,EAAIn1B,OACVm1B,EAAIk5F,aAAgBl5F,EAAIn1B,MAAQ,GAAKm1B,EAAIn1B,MAAQ,KACpD,OAAOm1B,EAAIn1B,KAEb,IAAKm1B,EAAI53C,QAAU43C,EAAI53C,MAAMuzI,gBACxB37F,EAAI53C,MAAMuzI,cAAcC,aAC3B,OAAQ,EAKV,IAHA,IAAIxzI,EAAQ43C,EAAI53C,MACZ+wD,EAAY/wD,EAAMuzI,cAClBl1H,EAAQ,EACHrqB,EAAI,EAAGA,EAAI+8D,EAAU98D,QAAU88D,EAAU/8D,KAAOgM,EAAOhM,IACpC,YAAtB+8D,EAAU/8D,GAAG4tD,MACfvjC,IAGJ,OAAkB,IAATA,EAGX,SAASo1H,KAoBT,SAASC,EAAYhhJ,EAAQklD,EAAK+7F,GAChCF,EAASz3I,KAAKC,MACdA,KAAK27C,IAAMA,EAIX37C,KAAK61D,OAASsgF,EAAa1/I,EAAQklD,EAAIvoC,MACvC,IAAIukI,EAAS,CACXzjF,MAAO,yBACP8B,gBAAkB,qBAClBnwD,SAAU,WACV0gC,KAAM,EACNs2B,MAAO,EACPr2B,IAAK,EACLgwB,OAAQ,EACRohF,QAAS,SACTC,YAA8B,KAAjBl8F,EAAI8e,SAAkB,gBACiB,OAAjB9e,EAAI8e,SAAoB,cACA,cAC3Dq9E,YAAa,aAGf93I,KAAK+3I,YAAYJ,EAAQ33I,KAAK61D,QAK9B71D,KAAK0jD,IAAMjtD,EAAOktC,SAAS7iB,cAAc,OACzC62H,EAAS,CACPp4I,UAAW03I,EAAcj3I,KAAK61D,QAC9BgiF,YAA8B,KAAjBl8F,EAAI8e,SAAkB,gBACiB,OAAjB9e,EAAI8e,SAAoB,cACA,cAC3Dq9E,YAAa,YACbE,UAAyB,WAAdr8F,EAAIuzD,MAAqB,SAAWvzD,EAAIuzD,MACnD+oC,KAAMP,EAAaO,KACnBC,WAAY,WACZryI,SAAU,YAGZ7F,KAAK+3I,YAAYJ,GACjB33I,KAAK0jD,IAAI98C,YAAY5G,KAAK61D,QAK1B,IAAIsiF,EAAU,EACd,OAAQx8F,EAAIo5F,eACZ,IAAK,QACHoD,EAAUx8F,EAAI91C,SACd,MACF,IAAK,SACHsyI,EAAUx8F,EAAI91C,SAAY81C,EAAI7pB,KAAO,EACrC,MACF,IAAK,MACHqmH,EAAUx8F,EAAI91C,SAAW81C,EAAI7pB,KAC7B,MAMmB,KAAjB6pB,EAAI8e,SACNz6D,KAAK+3I,YAAY,CACfxxG,KAAOvmC,KAAKo4I,YAAYD,EAAS,KACjCrwH,MAAO9nB,KAAKo4I,YAAYz8F,EAAI7pB,KAAM,OAMpC9xB,KAAK+3I,YAAY,CACfvxG,IAAKxmC,KAAKo4I,YAAYD,EAAS,KAC/BpwH,OAAQ/nB,KAAKo4I,YAAYz8F,EAAI7pB,KAAM,OAIvC9xB,KAAKq4I,KAAO,SAAS/xG,GACnBtmC,KAAK+3I,YAAY,CACfvxG,IAAKxmC,KAAKo4I,YAAY9xG,EAAIE,IAAK,MAC/BgwB,OAAQx2D,KAAKo4I,YAAY9xG,EAAIkwB,OAAQ,MACrCjwB,KAAMvmC,KAAKo4I,YAAY9xG,EAAIC,KAAM,MACjCs2B,MAAO78D,KAAKo4I,YAAY9xG,EAAIu2B,MAAO,MACnC90C,OAAQ/nB,KAAKo4I,YAAY9xG,EAAIve,OAAQ,MACrCD,MAAO9nB,KAAKo4I,YAAY9xG,EAAIxe,MAAO,SAUzC,SAASwwH,EAAYpgJ,GAKnB,IAAIqgJ,EAAIxwH,EAAQD,EAAO0e,EACvB,GAAItuC,EAAIwrD,IAAK,CACX37B,EAAS7vB,EAAIwrD,IAAIrc,aACjBvf,EAAQ5vB,EAAIwrD,IAAIvc,YAChBX,EAAMtuC,EAAIwrD,IAAI80F,UAEd,IAAIC,GAASA,EAAQvgJ,EAAIwrD,IAAI3nC,cAAgB08H,EAAQA,EAAM,KAC/CA,EAAMC,gBAAkBD,EAAMC,iBAC1CxgJ,EAAMA,EAAIwrD,IAAIvd,wBAKdoyG,EAAKE,EAAQj5I,KAAKywB,IAAKwoH,EAAM,IAAMA,EAAM,GAAG1wH,QAAW,EAAG7vB,EAAI6vB,OAAS0wH,EAAMzgJ,QAChE,EAGfgI,KAAKumC,KAAOruC,EAAIquC,KAChBvmC,KAAK68D,MAAQ3kE,EAAI2kE,MACjB78D,KAAKwmC,IAAMtuC,EAAIsuC,KAAOA,EACtBxmC,KAAK+nB,OAAS7vB,EAAI6vB,QAAUA,EAC5B/nB,KAAKw2D,OAASt+D,EAAIs+D,QAAWhwB,GAAOtuC,EAAI6vB,QAAUA,GAClD/nB,KAAK8nB,MAAQ5vB,EAAI4vB,OAASA,EAC1B9nB,KAAK24I,gBAAoBr/I,IAAPi/I,EAAmBA,EAAKrgJ,EAAIygJ,WAsHhD,SAASC,EAAsBniJ,EAAQoiJ,EAAUC,EAAcC,GAO7D,SAASC,EAAiBnnI,EAAGonI,GAK3B,IAJA,IAAIC,EACAC,EAAoB,IAAIb,EAAYzmI,GACpCunI,EAAa,EAERrhJ,EAAI,EAAGA,EAAIkhJ,EAAKjhJ,OAAQD,IAAK,CACpC,MAAO8Z,EAAEwnI,qBAAqBP,EAAcG,EAAKlhJ,KACzC8Z,EAAEynI,OAAOR,IAAiBjnI,EAAE0nI,YAAYR,GAC9ClnI,EAAEwmI,KAAKY,EAAKlhJ,IAId,GAAI8Z,EAAEynI,OAAOR,GACX,OAAOjnI,EAET,IAAI0E,EAAI1E,EAAE2nI,oBAAoBV,GAG1BM,EAAa7iI,IACf2iI,EAAe,IAAIZ,EAAYzmI,GAC/BunI,EAAa7iI,GAGf1E,EAAI,IAAIymI,EAAYa,GAEtB,OAAOD,GAAgBC,EAGzB,IAAIM,EAAc,IAAInB,EAAYO,GAC9Bl9F,EAAMk9F,EAASl9F,IACf+9F,EAAUrC,EAAe17F,GACzBs9F,EAAO,GAGX,GAAIt9F,EAAIk5F,YAAa,CACnB,IAAI/iH,EACJ,OAAQ6pB,EAAI8e,UACZ,IAAK,GACHw+E,EAAO,CAAE,KAAM,MACfnnH,EAAO,SACP,MACF,IAAK,KACHmnH,EAAO,CAAE,KAAM,MACfnnH,EAAO,QACP,MACF,IAAK,KACHmnH,EAAO,CAAE,KAAM,MACfnnH,EAAO,QACP,MAGF,IAAIgP,EAAO24G,EAAYd,WACnB9yI,EAAWi7B,EAAOthC,KAAKwnC,MAAM0yG,GAC7BC,EAAcb,EAAahnH,GAAQgP,EACnC84G,EAAcX,EAAK,GAKnBz5I,KAAKC,IAAIoG,GAAY8zI,IACvB9zI,EAAWA,EAAW,GAAK,EAAI,EAC/BA,GAAYrG,KAAKuvB,KAAK4qH,EAAc74G,GAAQA,GAO1C44G,EAAU,IACZ7zI,GAA6B,KAAjB81C,EAAI8e,SAAkBq+E,EAAa/wH,OAAS+wH,EAAahxH,MACrEmxH,EAAOA,EAAKhjI,WAKdwjI,EAAYpB,KAAKuB,EAAa/zI,OAEzB,CAEL,IAAIg0I,EAAwBJ,EAAYd,WAAaG,EAAa/wH,OAAU,IAE5E,OAAQ4zB,EAAIi5F,WACZ,IAAK,SACH8E,GAAYG,EAAuB,EACnC,MACF,IAAK,MACHH,GAAWG,EACX,MAIF,OAAQl+F,EAAI8e,UACZ,IAAK,GACHo+E,EAASd,YAAY,CACnBvxG,IAAKqyG,EAAST,YAAYsB,EAAS,OAErC,MACF,IAAK,KACHb,EAASd,YAAY,CACnBxxG,KAAMsyG,EAAST,YAAYsB,EAAS,OAEtC,MACF,IAAK,KACHb,EAASd,YAAY,CACnBl7E,MAAOg8E,EAAST,YAAYsB,EAAS,OAEvC,MAGFT,EAAO,CAAE,KAAM,KAAM,KAAM,MAI3BQ,EAAc,IAAInB,EAAYO,GAGhC,IAAIK,EAAeF,EAAiBS,EAAaR,GACjDJ,EAASR,KAAKa,EAAaY,kBAAkBhB,IAG/C,SAAS/sI,KA9XTyrI,EAAS16I,UAAUi7I,YAAc,SAASJ,EAAQj0F,GAEhD,IAAK,IAAIzgB,KADTygB,EAAMA,GAAO1jD,KAAK0jD,IACDi0F,EACXA,EAAOx/I,eAAe8qC,KACxBygB,EAAIpa,MAAMrG,GAAQ00G,EAAO10G,KAK/Bu0G,EAAS16I,UAAUs7I,YAAc,SAAS7zG,EAAKw1G,GAC7C,OAAe,IAARx1G,EAAY,EAAIA,EAAMw1G,GA6F/BtC,EAAY36I,UAAYo2I,EAAWsE,EAAS16I,WAC5C26I,EAAY36I,UAAUG,YAAcw6I,EAuCpCa,EAAYx7I,UAAUu7I,KAAO,SAASY,EAAMe,GAE1C,OADAA,OAAoB1gJ,IAAX0gJ,EAAuBA,EAASh6I,KAAK24I,WACtCM,GACR,IAAK,KACHj5I,KAAKumC,MAAQyzG,EACbh6I,KAAK68D,OAASm9E,EACd,MACF,IAAK,KACHh6I,KAAKumC,MAAQyzG,EACbh6I,KAAK68D,OAASm9E,EACd,MACF,IAAK,KACHh6I,KAAKwmC,KAAOwzG,EACZh6I,KAAKw2D,QAAUwjF,EACf,MACF,IAAK,KACHh6I,KAAKwmC,KAAOwzG,EACZh6I,KAAKw2D,QAAUwjF,EACf,QAKJ1B,EAAYx7I,UAAUm9I,SAAW,SAASr7G,GACxC,OAAO5+B,KAAKumC,KAAO3H,EAAGi+B,OACf78D,KAAK68D,MAAQj+B,EAAG2H,MAChBvmC,KAAKwmC,IAAM5H,EAAG43B,QACdx2D,KAAKw2D,OAAS53B,EAAG4H,KAI1B8xG,EAAYx7I,UAAUy8I,YAAc,SAASx2I,GAC3C,IAAK,IAAIhL,EAAI,EAAGA,EAAIgL,EAAM/K,OAAQD,IAChC,GAAIiI,KAAKi6I,SAASl3I,EAAMhL,IACtB,OAAO,EAGX,OAAO,GAITugJ,EAAYx7I,UAAUw8I,OAAS,SAAS1lC,GACtC,OAAO5zG,KAAKwmC,KAAOotE,EAAUptE,KACtBxmC,KAAKw2D,QAAUo9C,EAAUp9C,QACzBx2D,KAAKumC,MAAQqtE,EAAUrtE,MACvBvmC,KAAK68D,OAAS+2C,EAAU/2C,OAOjCy7E,EAAYx7I,UAAUu8I,qBAAuB,SAASzlC,EAAWqlC,GAC/D,OAAQA,GACR,IAAK,KACH,OAAOj5I,KAAKumC,KAAOqtE,EAAUrtE,KAC/B,IAAK,KACH,OAAOvmC,KAAK68D,MAAQ+2C,EAAU/2C,MAChC,IAAK,KACH,OAAO78D,KAAKwmC,IAAMotE,EAAUptE,IAC9B,IAAK,KACH,OAAOxmC,KAAKw2D,OAASo9C,EAAUp9C,SAMnC8hF,EAAYx7I,UAAU08I,oBAAsB,SAAS56G,GACnD,IAAIvR,EAAI7tB,KAAKywB,IAAI,EAAGzwB,KAAK8C,IAAItC,KAAK68D,MAAOj+B,EAAGi+B,OAASr9D,KAAKywB,IAAIjwB,KAAKumC,KAAM3H,EAAG2H,OACxEjZ,EAAI9tB,KAAKywB,IAAI,EAAGzwB,KAAK8C,IAAItC,KAAKw2D,OAAQ53B,EAAG43B,QAAUh3D,KAAKywB,IAAIjwB,KAAKwmC,IAAK5H,EAAG4H,MACzE0zG,EAAgB7sH,EAAIC,EACxB,OAAO4sH,GAAiBl6I,KAAK+nB,OAAS/nB,KAAK8nB,QAO7CwwH,EAAYx7I,UAAUg9I,kBAAoB,SAASx6I,GACjD,MAAO,CACLknC,IAAKxmC,KAAKwmC,IAAMlnC,EAAUknC,IAC1BgwB,OAAQl3D,EAAUk3D,OAASx2D,KAAKw2D,OAChCjwB,KAAMvmC,KAAKumC,KAAOjnC,EAAUinC,KAC5Bs2B,MAAOv9D,EAAUu9D,MAAQ78D,KAAK68D,MAC9B90C,OAAQ/nB,KAAK+nB,OACbD,MAAO9nB,KAAK8nB,QAMhBwwH,EAAY6B,qBAAuB,SAASjiJ,GAC1C,IAAI6vB,EAAS7vB,EAAIwrD,IAAMxrD,EAAIwrD,IAAIrc,aAAenvC,EAAI8Q,QAAU9Q,EAAImvC,aAAe,EAC3Evf,EAAQ5vB,EAAIwrD,IAAMxrD,EAAIwrD,IAAIvc,YAAcjvC,EAAI8Q,QAAU9Q,EAAIivC,YAAc,EACxEX,EAAMtuC,EAAIwrD,IAAMxrD,EAAIwrD,IAAI80F,UAAYtgJ,EAAI8Q,QAAU9Q,EAAIsgJ,UAAY,EAEtEtgJ,EAAMA,EAAIwrD,IAAMxrD,EAAIwrD,IAAIvd,wBACVjuC,EAAI8Q,QAAU9Q,EAAIiuC,wBAA0BjuC,EAC1D,IAAIu6C,EAAM,CACRlM,KAAMruC,EAAIquC,KACVs2B,MAAO3kE,EAAI2kE,MACXr2B,IAAKtuC,EAAIsuC,KAAOA,EAChBze,OAAQ7vB,EAAI6vB,QAAUA,EACtByuC,OAAQt+D,EAAIs+D,QAAWhwB,GAAOtuC,EAAI6vB,QAAUA,GAC5CD,MAAO5vB,EAAI4vB,OAASA,GAEtB,OAAO2qB,GA0IT1mC,EAAO84C,cAAgB,WACrB,MAAO,CACLgzD,OAAQ,SAASh9G,GACf,IAAKA,EACH,MAAO,GAET,GAAoB,kBAATA,EACT,MAAM,IAAIlC,MAAM,iCAElB,OAAOwqG,mBAAmBi3C,mBAAmBv/I,OAKnDkR,EAAOi+H,oBAAsB,SAASvzI,EAAQ4jJ,GAC5C,OAAK5jJ,GAAW4jJ,EAGTlE,EAAa1/I,EAAQ4jJ,GAFnB,MAKX,IAAIC,EAAoB,IACpBC,EAAa,aACbC,EAAyB,OAK7BzuI,EAAOmpD,YAAc,SAASz+D,EAAQilD,EAAM++F,GAC1C,IAAKhkJ,IAAWilD,IAAS++F,EACvB,OAAO,KAIT,MAAOA,EAAQn/H,WACbm/H,EAAQh+H,YAAYg+H,EAAQn/H,YAG9B,IAAIo/H,EAAgBjkJ,EAAOktC,SAAS7iB,cAAc,OAYlD,SAAS65H,EAAcj/F,GACrB,IAAK,IAAI3jD,EAAI,EAAGA,EAAI2jD,EAAK1jD,OAAQD,IAC/B,GAAI2jD,EAAK3jD,GAAG+wI,eAAiBptF,EAAK3jD,GAAG+9D,aACnC,OAAO,EAGX,OAAO,EAIT,GArBA4kF,EAAcpxG,MAAMzjC,SAAW,WAC/B60I,EAAcpxG,MAAM/C,KAAO,IAC3Bm0G,EAAcpxG,MAAMuzB,MAAQ,IAC5B69E,EAAcpxG,MAAM9C,IAAM,IAC1Bk0G,EAAcpxG,MAAMktB,OAAS,IAC7BkkF,EAAcpxG,MAAMsxG,OAASJ,EAC7BC,EAAQ7zI,YAAY8zI,GAefC,EAAcj/F,GAAnB,CAOA,IAAIq9F,EAAe,GACfD,EAAeR,EAAY6B,qBAAqBO,GAChDnkF,EAAW/2D,KAAKwnC,MAAM8xG,EAAa/wH,OAASuyH,EAAoB,KAAO,IACvE5C,EAAe,CACjBO,KAAM1hF,EAAW,MAAQgkF,IAG3B,WAGE,IAFA,IAAI1B,EAAUl9F,EAEL5jD,EAAI,EAAGA,EAAI2jD,EAAK1jD,OAAQD,IAC/B4jD,EAAMD,EAAK3jD,GAGX8gJ,EAAW,IAAIpB,EAAYhhJ,EAAQklD,EAAK+7F,GACxCgD,EAAc9zI,YAAYiyI,EAASn1F,KAGnCk1F,EAAsBniJ,EAAQoiJ,EAAUC,EAAcC,GAItDp9F,EAAIma,aAAe+iF,EAASn1F,IAE5Bq1F,EAAaphJ,KAAK2gJ,EAAY6B,qBAAqBtB,KAjBvD,QAbE,IAAK,IAAI9gJ,EAAI,EAAGA,EAAI2jD,EAAK1jD,OAAQD,IAC/B2iJ,EAAc9zI,YAAY80C,EAAK3jD,GAAG+9D,eAkCxC/pD,EAAOid,OAAS,SAASvyB,EAAQqV,EAAO4iH,GACjCA,IACHA,EAAU5iH,EACVA,EAAQ,IAELA,IACHA,EAAQ,IAGV9L,KAAKvJ,OAASA,EACduJ,KAAK8L,MAAQA,EACb9L,KAAK2vC,MAAQ,UACb3vC,KAAK0D,OAAS,GACd1D,KAAK0uH,QAAUA,GAAW,IAAIE,YAAY,QAC1C5uH,KAAKg0I,WAAa,IAGpBjoI,EAAOid,OAAOlsB,UAAY,CAGxB+9I,mBAAoB,SAASjhJ,GAC3B,KAAIA,aAAaw5I,GAGf,MAAMx5I,EAFNoG,KAAKglD,gBAAkBhlD,KAAKglD,eAAeprD,IAK/CD,MAAO,SAAUkB,GACf,IAAI4qB,EAAOzlB,KAUX,SAAS86I,IACP,IAAIp3I,EAAS+hB,EAAK/hB,OACd6qI,EAAM,EACV,MAAOA,EAAM7qI,EAAO1L,QAA0B,OAAhB0L,EAAO6qI,IAAiC,OAAhB7qI,EAAO6qI,KACzDA,EAEJ,IAAI/nH,EAAO9iB,EAAO2C,OAAO,EAAGkoI,GAS5B,MAPoB,OAAhB7qI,EAAO6qI,MACPA,EAEgB,OAAhB7qI,EAAO6qI,MACPA,EAEJ9oH,EAAK/hB,OAASA,EAAO2C,OAAOkoI,GACrB/nH,EAIT,SAASu0H,EAAYxH,GACnB,IAAI9tF,EAAW,IAAIiuF,EAsCnB,GApCAC,EAAaJ,GAAO,SAAUrmH,EAAGjO,GAC/B,OAAQiO,GACR,IAAK,KACHu4B,EAASziC,IAAIkK,EAAGjO,GAChB,MACF,IAAK,QACHwmC,EAASwW,QAAQ/uC,EAAGjO,GACpB,MACF,IAAK,QACHwmC,EAASkvF,QAAQznH,EAAGjO,GACpB,MACF,IAAK,eACL,IAAK,iBACH,IAAI+7H,EAAK/7H,EAAEjoB,MAAM,KACjB,GAAkB,IAAdgkJ,EAAGhjJ,OACL,MAIF,IAAIijJ,EAAS,IAAIvH,EAGjB,GAFAuH,EAAOh/E,QAAQ,IAAK++E,EAAG,IACvBC,EAAOh/E,QAAQ,IAAK++E,EAAG,KAClBC,EAAOz1G,IAAI,OAASy1G,EAAOz1G,IAAI,KAClC,MAEFigB,EAASziC,IAAIkK,EAAI,IAAK+tH,EAAOn4H,IAAI,MACjC2iC,EAASziC,IAAIkK,EAAI,IAAK+tH,EAAOn4H,IAAI,MACjC,MACF,IAAK,SACH2iC,EAAS+uF,IAAItnH,EAAGjO,EAAG,CAAC,OACpB,SAED,IAAK,MAIJwmC,EAASjgB,IAAI,MAAO,CACtB,IAAI+uG,EAAS,IAAK9uH,EAAK3Z,MAAMG,WAAawZ,EAAKhvB,OAAOwV,WACtDsoI,EAAOzsH,MAAQ29B,EAAS3iC,IAAI,QAAS,KACrCyxH,EAAO2G,MAAQz1F,EAAS3iC,IAAI,QAAS,GACrCyxH,EAAO4G,cAAgB11F,EAAS3iC,IAAI,gBAAiB,GACrDyxH,EAAO6G,cAAgB31F,EAAS3iC,IAAI,gBAAiB,KACrDyxH,EAAO8G,gBAAkB51F,EAAS3iC,IAAI,kBAAmB,GACzDyxH,EAAO+G,gBAAkB71F,EAAS3iC,IAAI,kBAAmB,KACzDyxH,EAAOgH,OAAS91F,EAAS3iC,IAAI,SAAU,IAEvC2C,EAAK+1H,UAAY/1H,EAAK+1H,SAASjH,GAG/B9uH,EAAKuuH,WAAWr8I,KAAK,CACnB4J,GAAIkkD,EAAS3iC,IAAI,MACjByxH,OAAQA,KAQd,SAASkH,EAAkBlI,GACzB,IAAI9tF,EAAW,IAAIiuF,EAEnBC,EAAaJ,GAAO,SAASrmH,EAAGjO,GAC9B,OAAOiO,GACP,IAAK,QACHu4B,EAASkvF,QAAQznH,EAAI,IAAKjO,GAC1B,MACF,IAAK,OACHwmC,EAASziC,IAAIkK,EAAI,IAAKomH,EAAer0H,IACrC,SAED,SAAU,KAEbwG,EAAKupG,gBAAkBvpG,EAAKupG,eAAe,CACzC,OAAUvpE,EAAS3iC,IAAI,UACvB,MAAS2iC,EAAS3iC,IAAI,WAK1B,SAAS44H,EAAYnI,GACfA,EAAM9sH,MAAM,mBAEdktH,EAAaJ,GAAO,SAASrmH,EAAGjO,GAC9B,OAAOiO,GACP,IAAK,kBACHuuH,EAAkBx8H,GAClB,SAED,KAEH00H,EAAaJ,GAAO,SAAUrmH,EAAGjO,GAC/B,OAAQiO,GACR,IAAK,SAEH6tH,EAAY97H,GACZ,SAED,KA7HHpkB,IAEF4qB,EAAK/hB,QAAU+hB,EAAKipG,QAAQ7W,OAAOh9G,EAAM,CAAC2a,QAAQ,KAiIpD,IACE,IAAIgR,EACJ,GAAmB,YAAff,EAAKkqB,MAAqB,CAE5B,IAAK,UAAUrrC,KAAKmhB,EAAK/hB,QACvB,OAAO1D,KAGTwmB,EAAOs0H,IAEP,IAAI52H,EAAIsC,EAAKC,MAAM,sBACnB,IAAKvC,IAAMA,EAAE,GACX,MAAM,IAAIkvH,EAAaA,EAAagB,OAAOa,cAG7CxvH,EAAKkqB,MAAQ,SAGf,IAAIgsG,GAAuB,EAC3B,MAAOl2H,EAAK/hB,OAAQ,CAElB,IAAK,UAAUY,KAAKmhB,EAAK/hB,QACvB,OAAO1D,KAST,OANK27I,EAGHA,GAAuB,EAFvBn1H,EAAOs0H,IAKDr1H,EAAKkqB,OACb,IAAK,SAEC,IAAIrrC,KAAKkiB,GACXk1H,EAAYl1H,GACFA,IAEVf,EAAKkqB,MAAQ,MAEf,SACF,IAAK,OAEEnpB,IACHf,EAAKkqB,MAAQ,MAEf,SACF,IAAK,KAEH,GAAI,iBAAiBrrC,KAAKkiB,GAAO,CAC/Bf,EAAKkqB,MAAQ,OACb,MAGF,IAAKnpB,EACH,SAEFf,EAAKk2B,IAAM,IAAKl2B,EAAK3Z,MAAME,QAAUyZ,EAAKhvB,OAAOuV,QAAQ,EAAG,EAAG,IAE/D,IACEyZ,EAAKk2B,IAAIuzD,MAAQ,SACjB,MAAOt1G,GACP6rB,EAAKk2B,IAAIuzD,MAAQ,SAInB,GAFAzpF,EAAKkqB,MAAQ,OAEgB,IAAzBnpB,EAAKpvB,QAAQ,UAAe,CAC9BquB,EAAKk2B,IAAIp6C,GAAKilB,EACd,SAIJ,IAAK,MAEH,IACEutH,EAASvtH,EAAMf,EAAKk2B,IAAKl2B,EAAKuuH,YAC9B,MAAOp6I,GACP6rB,EAAKo1H,mBAAmBjhJ,GAExB6rB,EAAKk2B,IAAM,KACXl2B,EAAKkqB,MAAQ,SACb,SAEFlqB,EAAKkqB,MAAQ,UACb,SACF,IAAK,UACH,IAAIisG,GAAwC,IAAzBp1H,EAAKpvB,QAAQ,UAKhC,IAAKovB,GAAQo1H,IAAiBD,GAAuB,GAAO,CAE1Dl2H,EAAKs/B,OAASt/B,EAAKs/B,MAAMt/B,EAAKk2B,KAC9Bl2B,EAAKk2B,IAAM,KACXl2B,EAAKkqB,MAAQ,KACb,SAEElqB,EAAKk2B,IAAIvoC,OACXqS,EAAKk2B,IAAIvoC,MAAQ,MAEnBqS,EAAKk2B,IAAIvoC,MAAQoT,EAAKjiB,QAAQ,UAAW,MAAMA,QAAQ,SAAU,MACjE,SACF,IAAK,SAEEiiB,IACHf,EAAKkqB,MAAQ,MAEf,WAGJ,MAAO/1C,GACP6rB,EAAKo1H,mBAAmBjhJ,GAGL,YAAf6rB,EAAKkqB,OAAuBlqB,EAAKk2B,KAAOl2B,EAAKs/B,OAC/Ct/B,EAAKs/B,MAAMt/B,EAAKk2B,KAElBl2B,EAAKk2B,IAAM,KAGXl2B,EAAKkqB,MAAuB,YAAflqB,EAAKkqB,MAAsB,YAAc,SAExD,OAAO3vC,MAETK,MAAO,WACL,IAAIolB,EAAOzlB,KACX,IAWE,GATAylB,EAAK/hB,QAAU+hB,EAAKipG,QAAQ7W,UAExBpyF,EAAKk2B,KAAsB,WAAfl2B,EAAKkqB,SACnBlqB,EAAK/hB,QAAU,OACf+hB,EAAK9rB,SAKY,YAAf8rB,EAAKkqB,MACP,MAAM,IAAIyjG,EAAaA,EAAagB,OAAOa,cAE7C,MAAMr7I,GACN6rB,EAAKo1H,mBAAmBjhJ,GAG1B,OADA6rB,EAAKw/B,SAAWx/B,EAAKw/B,UACdjlD,OAIXzD,EAAOC,QAAUuP,G,mBCl0CjB,SAASgnI,EAAQ76I,GAaf,MAVsB,oBAAX0xF,QAAoD,kBAApBA,OAAO9xF,SAChDyE,EAAOC,QAAUu2I,EAAU,SAAiB76I,GAC1C,cAAcA,GAGhBqE,EAAOC,QAAUu2I,EAAU,SAAiB76I,GAC1C,OAAOA,GAAyB,oBAAX0xF,QAAyB1xF,EAAI+E,cAAgB2sF,QAAU1xF,IAAQ0xF,OAAO9sF,UAAY,gBAAkB5E,GAItH66I,EAAQ76I,GAGjBqE,EAAOC,QAAUu2I,G,sBCdjB,SAAWhzH,GACT,IAAI87H,EAAY,+FACZC,EAAsB,mBACtBC,EAAkB,oBAClBC,EAAsB,wCAEtBtlI,EAAa,CAOfI,iBAAkB,SAAU6xE,EAASC,EAAa58C,GAKhD,GAJAA,EAAOA,GAAQ,GAEf28C,EAAUA,EAAQ5xF,OAClB6xF,EAAcA,EAAY7xF,QACrB6xF,EAAa,CAIhB,IAAK58C,EAAKiwG,gBACR,OAAOtzD,EAET,IAAIuzD,EAAwBxlI,EAAWylI,SAASxzD,GAChD,IAAKuzD,EACH,MAAM,IAAIvjJ,MAAM,mCAKlB,OAHAujJ,EAAsBj4F,KAAOvtC,EAAW0lI,cACtCF,EAAsBj4F,MAEjBvtC,EAAW2lI,kBAAkBH,GAEtC,IAAII,EAAgB5lI,EAAWylI,SAASvzD,GACxC,IAAK0zD,EACH,MAAM,IAAI3jJ,MAAM,uCAElB,GAAI2jJ,EAAcC,OAGhB,OAAKvwG,EAAKiwG,iBAGVK,EAAcr4F,KAAOvtC,EAAW0lI,cAAcE,EAAcr4F,MACrDvtC,EAAW2lI,kBAAkBC,IAH3B1zD,EAKX,IAAI4zD,EAAY9lI,EAAWylI,SAASxzD,GACpC,IAAK6zD,EACH,MAAM,IAAI7jJ,MAAM,mCAElB,IAAK6jJ,EAAUC,QAAUD,EAAUv4F,MAA8B,MAAtBu4F,EAAUv4F,KAAK,GAAY,CAGpE,IAAIE,EAAY23F,EAAoB11H,KAAKo2H,EAAUv4F,MACnDu4F,EAAUC,OAASt4F,EAAU,GAC7Bq4F,EAAUv4F,KAAOE,EAAU,GAEzBq4F,EAAUC,SAAWD,EAAUv4F,OACjCu4F,EAAUv4F,KAAO,KAEnB,IAAIy4F,EAAa,CAGfH,OAAQC,EAAUD,OAClBE,OAAQH,EAAcG,OACtBx4F,KAAM,KACNzrD,OAAQ8jJ,EAAc9jJ,OACtBmkJ,MAAOL,EAAcK,MACrBl7I,SAAU66I,EAAc76I,UAE1B,IAAK66I,EAAcG,SAIjBC,EAAWD,OAASD,EAAUC,OAGA,MAA1BH,EAAcr4F,KAAK,IACrB,GAAKq4F,EAAcr4F,KAgBZ,CAKL,IAAI24F,EAAcJ,EAAUv4F,KACxB44F,EACFD,EAAYv6H,UAAU,EAAGu6H,EAAYvQ,YAAY,KAAO,GACxDiQ,EAAcr4F,KAChBy4F,EAAWz4F,KAAOvtC,EAAW0lI,cAAcS,QAtB3CH,EAAWz4F,KAAOu4F,EAAUv4F,KAIvBq4F,EAAc9jJ,SACjBkkJ,EAAWlkJ,OAASgkJ,EAAUhkJ,OAIzB8jJ,EAAcK,QACjBD,EAAWC,MAAQH,EAAUG,QAqBvC,OALwB,OAApBD,EAAWz4F,OACby4F,EAAWz4F,KAAOjY,EAAKiwG,gBACnBvlI,EAAW0lI,cAAcE,EAAcr4F,MACvCq4F,EAAcr4F,MAEbvtC,EAAW2lI,kBAAkBK,IAEtCP,SAAU,SAAU5hJ,GAClB,IAAIuE,EAAQ+8I,EAAUz1H,KAAK7rB,GAC3B,OAAKuE,EAGE,CACLy9I,OAAQz9I,EAAM,IAAM,GACpB29I,OAAQ39I,EAAM,IAAM,GACpBmlD,KAAMnlD,EAAM,IAAM,GAClBtG,OAAQsG,EAAM,IAAM,GACpB69I,MAAO79I,EAAM,IAAM,GACnB2C,SAAU3C,EAAM,IAAM,IARf,MAWXs9I,cAAe,SAAUn4F,GAOvBA,EAAOA,EAAKjtD,MAAM,IAAIif,UAAUrX,KAAK,IAAI2F,QAAQw3I,EAAiB,IASlE,MACE93F,EAAKjsD,UAAYisD,EAAOA,EAAK1/C,QAAQy3I,EAAqB,KAAKhkJ,QAEjE,OAAOisD,EAAKjtD,MAAM,IAAIif,UAAUrX,KAAK,KAEvCy9I,kBAAmB,SAAUv9I,GAC3B,OACEA,EAAMy9I,OACNz9I,EAAM29I,OACN39I,EAAMmlD,KACNnlD,EAAMtG,OACNsG,EAAM69I,MACN79I,EAAM2C,WAMVlF,EAAOC,QAAUka,GAnKrB,I,mBCCA,IAAIomI,EAAgB,mJAChBC,EAAW,IAAI72H,OAAO,aAAa42H,EAAc/1I,OAAOzP,MAAM,GAAG,GAAG,0CACpE0lJ,EAAiB,IAAI92H,OAAO,IAAI42H,EAAc/1I,OAAOg2I,EAASh2I,OAAO,QAAS+1I,EAAc/1I,OAAOg2I,EAASh2I,OAAO,QAMnHk2I,EAAQ,EACRC,EAAS,EACTC,EAAa,EACbC,EAAO,EACPC,EAAsB,EACtBC,EAAa,EACbC,EAAc,EACdC,EAAc,EAElB,SAASt2I,KAcT,SAASvN,EAAMoN,EAAO02I,EAAiBp2I,EAAUlC,EAAWE,GAC3D,SAASq4I,EAAkB7hJ,GAG1B,GAAIA,EAAO,MAAQ,CAClBA,GAAQ,MACR,IAAI8hJ,EAAa,OAAU9hJ,GAAQ,IAChC+hJ,EAAa,OAAiB,KAAP/hJ,GAE1B,OAAO2K,OAAO+L,aAAaorI,EAAYC,GAEvC,OAAOp3I,OAAO+L,aAAa1W,GAG7B,SAASgiJ,EAAenyI,GACvB,IAAIwhB,EAAIxhB,EAAEpU,MAAM,GAAG,GACnB,OAAG41B,KAAK7lB,EACAA,EAAU6lB,GACO,MAAhBA,EAAEwnD,OAAO,GACVgpE,EAAkBt2H,SAAS8F,EAAE7mB,OAAO,GAAG9B,QAAQ,IAAI,SAE1Dc,EAAaqC,MAAM,oBAAoBgE,GAChCA,GAGT,SAASoyI,EAAWp/I,GACnB,GAAGA,EAAID,EAAM,CACZ,IAAIs/I,EAAKh3I,EAAOsb,UAAU5jB,EAAMC,GAAK6F,QAAQ,WAAWs5I,GACxD74I,GAASa,EAASpH,GAClB0G,EAAWwE,WAAWo0I,EAAG,EAAEr/I,EAAID,GAC/BA,EAAQC,GAGV,SAASmH,EAAS0Q,EAAE2N,GACnB,MAAM3N,GAAGynI,IAAY95H,EAAI+5H,EAAY73H,KAAKrf,IACzCm3I,EAAYh6H,EAAE/sB,MACd6mJ,EAAUE,EAAYh6H,EAAE,GAAGlsB,OAC3BgN,EAAQe,aAGTf,EAAQgB,aAAeuQ,EAAE2nI,EAAU,EAEpC,IAAIA,EAAY,EACZF,EAAU,EACVC,EAAc,sBACdj5I,EAAUG,EAAWH,QAErBm5I,EAAa,CAAC,CAACC,aAAaX,IAC5BY,EAAW,GACX5/I,EAAQ,EACZ,MAAM,EAAK,CACV,IACC,IAAI6/I,EAAWv3I,EAAO3P,QAAQ,IAAIqH,GAClC,GAAG6/I,EAAS,EAAE,CACb,IAAIv3I,EAAOV,OAAO5H,GAAOgoB,MAAM,SAAS,CACvC,IAAI5f,EAAM1B,EAAW0B,IACduM,EAAOvM,EAAIkD,eAAehD,EAAOV,OAAO5H,IAC5CoI,EAAID,YAAYwM,GAChBjO,EAAWwB,eAAiByM,EAEhC,OAKD,OAHGkrI,EAAS7/I,GACXq/I,EAAWQ,GAELv3I,EAAO2tE,OAAO4pE,EAAS,IAC9B,IAAK,IACJ,IAAI5/I,EAAMqI,EAAO3P,QAAQ,IAAIknJ,EAAS,GAClCt1I,EAAUjC,EAAOsb,UAAUi8H,EAAS,EAAE5/I,GACtCkrE,EAASu0E,EAAW7lG,MACrB55C,EAAI,GAEAsK,EAAUjC,EAAOsb,UAAUi8H,EAAS,GAAG/5I,QAAQ,UAAU,IAEzDc,EAAaqC,MAAM,iBAAiBsB,EAAQ,oBAAoB4gE,EAAO5gE,SACvEtK,EAAM4/I,EAAS,EAAEt1I,EAAQhR,QACjBgR,EAAQyd,MAAM,SACtBzd,EAAUA,EAAQzE,QAAQ,UAAU,IACpCc,EAAaqC,MAAM,iBAAiBsB,EAAQ,uBAC5CtK,EAAM4/I,EAAS,EAAEt1I,EAAQhR,QAIhC,IAAIumJ,EAAa30E,EAAO20E,WACpBC,EAAW50E,EAAO5gE,SAAWA,EAC7By1I,EAAoBD,GAAY50E,EAAO5gE,SAAS4gE,EAAO5gE,QAAQzR,eAAiByR,EAAQzR,cACtF,GAAGknJ,EAAkB,CAE1B,GADMt5I,EAAW2D,WAAW8gE,EAAOvxE,IAAIuxE,EAAO3hE,UAAUe,GACrDu1I,EACF,IAAI,IAAIp1I,KAAUo1I,EACjBp5I,EAAWiE,iBAAiBD,GAG1Bq1I,GACMn5I,EAAa6F,WAAW,iBAAiBlC,EAAQ,2CAA2C4gE,EAAO5gE,cAGvGm1I,EAAWxmJ,KAAKiyE,GAGvBlrE,IACA,MAED,IAAK,IACJsG,GAASa,EAASy4I,GAClB5/I,EAAMggJ,EAAiB33I,EAAOu3I,EAASn5I,GACvC,MACD,IAAK,IACJH,GAASa,EAASy4I,GAClB5/I,EAAMigJ,EAAS53I,EAAOu3I,EAASn5I,EAAWE,GAC1C,MACD,QACCL,GAASa,EAASy4I,GAClB,IAAIl2I,EAAK,IAAIw2I,EACTR,EAAeD,EAAWA,EAAWnmJ,OAAO,GAAGomJ,aAG/C1gJ,GADAgB,EAAMmgJ,EAAsB93I,EAAOu3I,EAASl2I,EAAGg2I,EAAaP,EAAex4I,GACrE+C,EAAGpQ,QASb,IANIoQ,EAAG02I,QAAUC,EAAch4I,EAAOrI,EAAI0J,EAAGY,QAAQq1I,KACpDj2I,EAAG02I,QAAS,EACRz3I,EAAUE,MACblC,EAAa0F,QAAQ,2BAGpB/F,GAAWtH,EAAI,CAGjB,IAFA,IAAIshJ,EAAWC,EAAYj6I,EAAQ,IAE3BjN,EAAI,EAAEA,EAAE2F,EAAI3F,IAAI,CACvB,IAAI2T,EAAItD,EAAGrQ,GACX8N,EAAS6F,EAAEiC,QACXjC,EAAE1G,QAAUi6I,EAAYj6I,EAAQ,IAGjCG,EAAWH,QAAUg6I,EAClBv4I,EAAc2B,EAAGjD,EAAWi5I,IAC9BD,EAAWxmJ,KAAKyQ,GAEjBjD,EAAWH,QAAUA,OAElByB,EAAc2B,EAAGjD,EAAWi5I,IAC9BD,EAAWxmJ,KAAKyQ,GAMJ,iCAAXA,EAAG/P,KAA2C+P,EAAG02I,OAGnDpgJ,IAFAA,EAAMwgJ,EAAwBn4I,EAAOrI,EAAI0J,EAAGY,QAAQ60I,EAAe14I,IAKrE,MAAMvL,GACNyL,EAAaqC,MAAM,wBAAwB9N,GAE3C8E,GAAO,EAGLA,EAAID,EACNA,EAAQC,EAGRo/I,EAAWt+I,KAAKywB,IAAIquH,EAAS7/I,GAAO,IAIvC,SAASwgJ,EAAYxL,EAAEn8H,GAGtB,OAFAA,EAAEvR,WAAa0tI,EAAE1tI,WACjBuR,EAAEtR,aAAeytI,EAAEztI,aACZsR,EAOR,SAASunI,EAAsB93I,EAAOtI,EAAM2J,EAAGg2I,EAAaP,EAAex4I,GAC1E,IAAIm/B,EAEAjuB,IAAM9X,EACN6kB,EAAI25H,EACR,MAAM,EAAK,CACV,IAAI7hI,EAAIrU,EAAO2tE,OAAOn+D,GACtB,OAAO6E,GACP,IAAK,IACJ,GAAGkI,IAAM45H,EACR14G,EAAWz9B,EAAOzP,MAAMmH,EAAM8X,GAC9B+M,EAAI85H,MACC,IAAG95H,IAAM65H,EAId,MAAM,IAAIxkJ,MAAM,uCAHhB2qB,EAAI85H,EAKL,MACD,IAAK,IACL,IAAK,IACJ,GAAG95H,IAAM85H,GAAQ95H,IAAM45H,EACrB,CAOD,GANG55H,IAAM45H,IACR73I,EAAa0F,QAAQ,kCACrBy5B,EAAWz9B,EAAOzP,MAAMmH,EAAM8X,IAE/B9X,EAAQ8X,EAAE,EACVA,EAAIxP,EAAO3P,QAAQgkB,EAAE3c,KAClB8X,EAAE,GAMJ,MAAM,IAAI5d,MAAM,2BAA4ByiB,EAAE,WAL9C5jB,EAAQuP,EAAOzP,MAAMmH,EAAM8X,GAAGhS,QAAQ,WAAWs5I,GACjDz1I,EAAG88B,IAAIV,EAAShtC,EAAMiH,EAAM,GAC5B6kB,EAAIg6H,MAKA,IAAGh6H,GAAK+5H,EAUb,MAAM,IAAI1kJ,MAAM,kCAThBnB,EAAQuP,EAAOzP,MAAMmH,EAAM8X,GAAGhS,QAAQ,WAAWs5I,GAEjDz1I,EAAG88B,IAAIV,EAAShtC,EAAMiH,GAEtB4G,EAAa0F,QAAQ,cAAcy5B,EAAS,uBAAuBppB,EAAE,OACrE3c,EAAQ8X,EAAE,EACV+M,EAAIg6H,EAKL,MACD,IAAK,IACJ,OAAOh6H,GACP,KAAK25H,EACJ70I,EAAG+2I,WAAWp4I,EAAOzP,MAAMmH,EAAM8X,IAClC,KAAK+mI,EACL,KAAKC,EACL,KAAKC,EACJl6H,EAAGk6H,EACHp1I,EAAG02I,QAAS,EACb,KAAKzB,EACL,KAAKH,EACL,KAAKC,EACJ,MAED,QACC,MAAM,IAAIxkJ,MAAM,qCAEjB,MACD,IAAK,GAMJ,OAJA0M,EAAaqC,MAAM,2BAChB4b,GAAK25H,GACP70I,EAAG+2I,WAAWp4I,EAAOzP,MAAMmH,EAAM8X,IAE3BA,EACR,IAAK,IACJ,OAAO+M,GACP,KAAK25H,EACJ70I,EAAG+2I,WAAWp4I,EAAOzP,MAAMmH,EAAM8X,IAClC,KAAK+mI,EACL,KAAKC,EACL,KAAKC,EACJ,MACD,KAAKH,EACL,KAAKH,EACJ1lJ,EAAQuP,EAAOzP,MAAMmH,EAAM8X,GACJ,MAApB/e,EAAMF,OAAO,KACf8Q,EAAG02I,QAAU,EACbtnJ,EAAQA,EAAMF,MAAM,GAAG,IAEzB,KAAK6lJ,EACD75H,IAAM65H,IACR3lJ,EAAQgtC,GAENlhB,GAAK+5H,GACPh4I,EAAa0F,QAAQ,cAAcvT,EAAM,sBACzC4Q,EAAG88B,IAAIV,EAAShtC,EAAM+M,QAAQ,WAAWs5I,GAAgBp/I,KAEjC,iCAArB2/I,EAAa,KAA2C5mJ,EAAMivB,MAAM,qCACtEphB,EAAa0F,QAAQ,cAAcvT,EAAM,qBAAqBA,EAAM,eAErE4Q,EAAG88B,IAAI1tC,EAAMA,EAAMiH,IAEpB,MACD,KAAK2+I,EACJ,MAAM,IAAIzkJ,MAAM,4BAGjB,OAAO4d,EAER,IAAK,IACJ6E,EAAI,IACL,QACC,GAAGA,GAAI,IACN,OAAOkI,GACP,KAAK25H,EACJ70I,EAAG+2I,WAAWp4I,EAAOzP,MAAMmH,EAAM8X,IACjC+M,EAAIi6H,EACJ,MACD,KAAKL,EACJ14G,EAAWz9B,EAAOzP,MAAMmH,EAAM8X,GAC9B+M,EAAI65H,EACJ,MACD,KAAKE,EACJ,IAAI7lJ,EAAQuP,EAAOzP,MAAMmH,EAAM8X,GAAGhS,QAAQ,WAAWs5I,GACrDx4I,EAAa0F,QAAQ,cAAcvT,EAAM,sBACzC4Q,EAAG88B,IAAIV,EAAShtC,EAAMiH,GACvB,KAAK6+I,EACJh6H,EAAIi6H,EACJ,WAWD,OAAOj6H,GAIP,KAAK65H,EACW/0I,EAAGY,QACM,iCAArBo1I,EAAa,KAA2C55G,EAAS/d,MAAM,qCACzEphB,EAAa0F,QAAQ,cAAcy5B,EAAS,qBAAqBA,EAAS,gBAE3Ep8B,EAAG88B,IAAIV,EAASA,EAAS/lC,GACzBA,EAAQ8X,EACR+M,EAAI45H,EACJ,MACD,KAAKI,EACJj4I,EAAa0F,QAAQ,+BAA+By5B,EAAS,OAC9D,KAAK+4G,EACJj6H,EAAI45H,EACJz+I,EAAQ8X,EACR,MACD,KAAK6mI,EACJ95H,EAAI+5H,EACJ5+I,EAAQ8X,EACR,MACD,KAAKinI,EACJ,MAAM,IAAI7kJ,MAAM,+DAKnB4d,KAMF,SAAS9P,EAAc2B,EAAGjD,EAAWi5I,GACpC,IAAIp1I,EAAUZ,EAAGY,QACbu1I,EAAa,KAEbxmJ,EAAIqQ,EAAGpQ,OACX,MAAMD,IAAI,CACT,IAAI2T,EAAItD,EAAGrQ,GACPmQ,EAAQwD,EAAExD,MACV1Q,EAAQkU,EAAElU,MACV4nJ,EAAMl3I,EAAM9Q,QAAQ,KACxB,GAAGgoJ,EAAI,EACN,IAAIj2I,EAASuC,EAAEvC,OAASjB,EAAM5Q,MAAM,EAAE8nJ,GAClCn3I,EAAYC,EAAM5Q,MAAM8nJ,EAAI,GAC5BC,EAAsB,UAAXl2I,GAAsBlB,OAErCA,EAAYC,EACZiB,EAAS,KACTk2I,EAAqB,UAAVn3I,GAAqB,GAGjCwD,EAAEzD,UAAYA,GAEE,IAAbo3I,IACe,MAAdd,IACFA,EAAa,GAEbe,EAAMlB,EAAaA,EAAa,KAGjCA,EAAaiB,GAAYd,EAAWc,GAAY7nJ,EAChDkU,EAAErT,IAAM,gCACR8M,EAAW+D,mBAAmBm2I,EAAU7nJ,IAGtCO,EAAIqQ,EAAGpQ,OACX,MAAMD,IAAI,CACT2T,EAAItD,EAAGrQ,GACHoR,EAASuC,EAAEvC,OACZA,IACY,QAAXA,IACFuC,EAAErT,IAAM,wCACM,UAAX8Q,IACHuC,EAAErT,IAAM+lJ,EAAaj1I,GAAU,MAM9Bi2I,EAAMp2I,EAAQ5R,QAAQ,KACvBgoJ,EAAI,GACNj2I,EAASf,EAAGe,OAASH,EAAQ1R,MAAM,EAAE8nJ,GACrCn3I,EAAYG,EAAGH,UAAYe,EAAQ1R,MAAM8nJ,EAAI,KAE7Cj2I,EAAS,KACTlB,EAAYG,EAAGH,UAAYe,GAG5B,IAAIyS,EAAKrT,EAAG/P,IAAM+lJ,EAAaj1I,GAAU,IAIzC,GAHAhE,EAAW4C,aAAa0T,EAAGxT,EAAUe,EAAQZ,IAG1CA,EAAG02I,OAWL,OAHA12I,EAAGg2I,aAAeA,EAClBh2I,EAAGm2I,WAAaA,GAET,EATP,GADAp5I,EAAW2D,WAAW2S,EAAGxT,EAAUe,GAChCu1I,EACF,IAAIp1I,KAAUo1I,EACbp5I,EAAWiE,iBAAiBD,GAUhC,SAAS+1I,EAAwBn4I,EAAOw4I,EAAWv2I,EAAQ60I,EAAe14I,GACzE,GAAG,yBAAyBb,KAAK0E,GAAS,CACzC,IAAIw2I,EAAcz4I,EAAO3P,QAAQ,KAAK4R,EAAQ,IAAIu2I,GAC9CnsI,EAAOrM,EAAOsb,UAAUk9H,EAAW,EAAEC,GACzC,GAAG,OAAOl7I,KAAK8O,GACd,MAAG,YAAY9O,KAAK0E,IAGlB7D,EAAWwE,WAAWyJ,EAAK,EAAEA,EAAKpb,QAE3BwnJ,IAGRpsI,EAAOA,EAAK7O,QAAQ,WAAWs5I,GAC/B14I,EAAWwE,WAAWyJ,EAAK,EAAEA,EAAKpb,QAC3BwnJ,GAKV,OAAOD,EAAW,EAEnB,SAASR,EAAch4I,EAAOw4I,EAAWv2I,EAAQq1I,GAEhD,IAAI9P,EAAM8P,EAASr1I,GASnB,OARU,MAAPulI,IAEFA,EAAOxnI,EAAOslI,YAAY,KAAKrjI,EAAQ,KACpCulI,EAAIgR,IACNhR,EAAMxnI,EAAOslI,YAAY,KAAKrjI,IAE/Bq1I,EAASr1I,GAAUulI,GAEbA,EAAIgR,EAGZ,SAASD,EAAMv4I,EAAOuC,GACrB,IAAI,IAAI0V,KAAKjY,EAAQuC,EAAO0V,GAAKjY,EAAOiY,GAEzC,SAAS2/H,EAAS53I,EAAOtI,EAAM0G,EAAWE,GACzC,IAAI+W,EAAMrV,EAAO2tE,OAAOj2E,EAAM,GAC9B,OAAO2d,GACP,IAAK,IACJ,GAAgC,MAA7BrV,EAAO2tE,OAAOj2E,EAAQ,GAAW,CACnC,IAAIC,EAAMqI,EAAO3P,QAAQ,SAAMqH,EAAM,GAErC,OAAGC,EAAID,GACN0G,EAAWiF,QAAQrD,EAAOtI,EAAM,EAAEC,EAAID,EAAM,GACrCC,EAAI,IAEX2G,EAAaqC,MAAM,qBACX,GAIT,OAAQ,EAEV,QACC,GAA+B,UAA5BX,EAAOV,OAAO5H,EAAM,EAAE,GAAe,CACnCC,EAAMqI,EAAO3P,QAAQ,MAAMqH,EAAM,GAIrC,OAHA0G,EAAWoF,aACXpF,EAAWwE,WAAW5C,EAAOtI,EAAM,EAAEC,EAAID,EAAM,GAC/C0G,EAAWqF,WACJ9L,EAAI,EAIZ,IAAI+gJ,EAASzoJ,EAAM+P,EAAOtI,GACtBf,EAAM+hJ,EAAOznJ,OACjB,GAAG0F,EAAI,GAAK,YAAY4G,KAAKm7I,EAAO,GAAG,IAAI,CAC1C,IAAIx1I,EAAOw1I,EAAO,GAAG,GACjBjhI,EAAQ9gB,EAAI,GAAK,YAAY4G,KAAKm7I,EAAO,GAAG,KAAOA,EAAO,GAAG,GAC7DhhI,EAAQ/gB,EAAI,GAAK+hJ,EAAO,GAAG,GAC3BC,EAAYD,EAAO/hJ,EAAI,GAK3B,OAJAyH,EAAWsF,SAASR,EAAKuU,GAASA,EAAMja,QAAQ,kBAAkB,MAChEka,GAASA,EAAMla,QAAQ,kBAAkB,OAC3CY,EAAWw6I,SAEJD,EAAUvoJ,MAAMuoJ,EAAU,GAAG1nJ,QAGtC,OAAQ,EAKT,SAAS0mJ,EAAiB33I,EAAOtI,EAAM0G,GACtC,IAAIzG,EAAMqI,EAAO3P,QAAQ,KAAKqH,GAC9B,GAAGC,EAAI,CACN,IAAI+nB,EAAQ1f,EAAOsb,UAAU5jB,EAAMC,GAAK+nB,MAAM,8BAC9C,GAAGA,EAAM,CACEA,EAAM,GAAGzuB,OAEnB,OADAmN,EAAWkE,sBAAsBod,EAAM,GAAIA,EAAM,IAC1C/nB,EAAI,EAEX,OAAQ,EAGV,OAAQ,EAMT,SAASkgJ,EAAkB73I,IAqC3B,SAAS64I,EAAYC,EAAK/7G,GAEzB,OADA+7G,EAAK3iJ,UAAY4mC,EACV+7G,EAcR,SAAS7oJ,EAAM+P,EAAOtI,GACrB,IAAIgoB,EACA3I,EAAM,GACNgiI,EAAM,6CACVA,EAAIhlI,UAAYrc,EAChBqhJ,EAAI15H,KAAKrf,GACT,MAAM0f,EAAQq5H,EAAI15H,KAAKrf,GAEtB,GADA+W,EAAInmB,KAAK8uB,GACNA,EAAM,GAAG,OAAO3I,EA3lBrB5W,EAAUpK,UAAY,CACrBnD,MAAM,SAASoN,EAAOI,EAAaE,GAClC,IAAIlC,EAAanF,KAAKmF,WACtBA,EAAWwC,gBACX23I,EAAMn4I,EAAcA,EAAe,IACnCxN,EAAMoN,EAAOI,EAAaE,EACxBlC,EAAWnF,KAAKqF,cAClBF,EAAW+E,gBA0hBb00I,EAAkB9hJ,UAAY,CAC7BqiJ,WAAW,SAASn2I,GACnB,IAAIg0I,EAAe14I,KAAK0E,GACvB,MAAM,IAAIrQ,MAAM,mBAAmBqQ,GAEpChJ,KAAKgJ,QAAUA,GAEhBk8B,IAAI,SAASh9B,EAAM1Q,EAAMmW,GACxB,IAAIqvI,EAAe14I,KAAK4D,GACvB,MAAM,IAAIvP,MAAM,qBAAqBuP,GAEtClI,KAAKA,KAAKhI,UAAY,CAACkQ,MAAMA,EAAM1Q,MAAMA,EAAMmW,OAAOA,IAEvD3V,OAAO,EACP+nJ,aAAa,SAAShoJ,GAAG,OAAOiI,KAAKjI,GAAGkQ,WACxCU,WAAW,SAAS5Q,GAAG,OAAOiI,KAAKjI,GAAGiN,SACtCyD,SAAS,SAAS1Q,GAAG,OAAOiI,KAAKjI,GAAGmQ,OACpCI,OAAO,SAASvQ,GAAG,OAAOiI,KAAKjI,GAAGM,KAClCkQ,SAAS,SAASxQ,GAAG,OAAOiI,KAAKjI,GAAGP,QAoBhCooJ,EAAY,GAAGA,EAAY9iJ,qBAAsB8iJ,IACrDA,EAAc,SAASC,EAAK/7G,GAC3B,SAASvtB,KAGT,IAAIutB,KAFJvtB,EAAEzZ,UAAYgnC,EACdvtB,EAAI,IAAIA,EACMspI,EACbtpI,EAAEutB,GAAU+7G,EAAK/7G,GAElB,OAAOvtB,IAgBT/Z,EAAQ0K,UAAYA,G,sBCvnBpB,kBAGImvF,EADkB,qBAAX5/F,OACDA,OACmB,qBAAXu3I,EACRA,EACiB,qBAATvoH,KACRA,KAEA,GAGVlpB,EAAOC,QAAU65F,I,wDCFjB,IAAIhpF,EAAc,EAAQ,QACtBhO,EAAiB,EAAQ,QAAwCA,eACjEqnI,EAAQ,GACZA,EAAMyN,GAAK,EAAQ,SACnBzN,EAAMl2E,IAAM,EAAQ,QACpB,IAAIzjD,EAAmB,EAAQ,QAAkBA,iBAG/Cy3F,EAAqB,IACrBC,EAAY,GAMVu7C,EAAY,SAAS9+G,EAAOikE,GAC9B,IAGE53F,EAAQ5N,EAFRiyB,EAAa,EACbK,EAAWuyE,EAGb,MAAOvyE,EAAWiP,EAAM/jC,WAEtB,GAAI+jC,EAAMtP,KAAgB6yE,GAAavjE,EAAMjP,KAAcwyE,EAiC3D7yE,IACAK,QAlCA,CAKE,OAHA1kB,EAAS2zB,EAAM19B,SAASouB,EAAYK,GACpCtyB,EAAO+mI,EAAMyN,GAAG5wI,UAAUgK,EAAQ43F,EAAI33F,KAE9B7N,GACN,IAAK,MACEwlG,EAAI33F,MACP23F,EAAI33F,IAAMk5H,EAAMyN,GAAGtmI,SAASN,IAE9B,MACF,IAAK,MACE43F,EAAInmE,QACPmmE,EAAInmE,MAAQ0nG,EAAMyN,GAAGpmI,SAASR,IAEhC,MACF,QACE,MAIJ,GAAI43F,EAAI33F,KAAO23F,EAAInmE,MACjB,OAGFpN,GAAc4yE,EACdvyE,GAAYuyE,IAgBdy7C,EAAiB,SAAS/+G,EAAOikE,EAAKruG,GACxC,IAGEyW,EAAQ5N,EAAMugJ,EAASpyI,EAAM0lG,EAF7B5hF,EAAa,EACbK,EAAWuyE,EAGT27C,GAAU,EAGd,MAAOluH,GAAYiP,EAAM/jC,WAEvB,GAAI+jC,EAAMtP,KAAgB6yE,GACrBvjE,EAAMjP,KAAcwyE,GAAaxyE,IAAaiP,EAAM/jC,WAkCzDy0B,IACAK,QApCA,CAME,OAHA1kB,EAAS2zB,EAAM19B,SAASouB,EAAYK,GACpCtyB,EAAO+mI,EAAMyN,GAAG5wI,UAAUgK,EAAQ43F,EAAI33F,KAE9B7N,GACN,IAAK,MACHugJ,EAAUxZ,EAAMyN,GAAG9lI,aAAad,EAAQ43F,EAAInmE,OAC5ClxB,EAAO44H,EAAMyN,GAAG1mI,+BAA+BF,GAC/B,UAAZ2yI,GAAuBpyI,IACzB0lG,EAASkzB,EAAMyN,GAAG1lI,aAAalB,GAC3BimG,IACFA,EAAO7zG,KAAO,QACd7I,EAAOk+B,MAAMr9B,KAAK67G,GAClB2sC,GAAU,IAGd,MACF,QACE,MAGJ,GAAIA,EACF,MAGFvuH,GAAc4yE,EACdvyE,GAAYuyE,EAYhBvyE,EAAWiP,EAAM/jC,WACjBy0B,EAAaK,EAAWuyE,EACxB27C,GAAU,EACV,MAAOvuH,GAAc,EAEnB,GAAIsP,EAAMtP,KAAgB6yE,GACrBvjE,EAAMjP,KAAcwyE,GAAaxyE,IAAaiP,EAAM/jC,WAkCzDy0B,IACAK,QApCA,CAME,OAHA1kB,EAAS2zB,EAAM19B,SAASouB,EAAYK,GACpCtyB,EAAO+mI,EAAMyN,GAAG5wI,UAAUgK,EAAQ43F,EAAI33F,KAE9B7N,GACN,IAAK,MACHugJ,EAAUxZ,EAAMyN,GAAG9lI,aAAad,EAAQ43F,EAAInmE,OAC5ClxB,EAAO44H,EAAMyN,GAAG1mI,+BAA+BF,GAC/B,UAAZ2yI,GAAuBpyI,IACzB0lG,EAASkzB,EAAMyN,GAAG1lI,aAAalB,GAC3BimG,IACFA,EAAO7zG,KAAO,QACd7I,EAAOk+B,MAAMr9B,KAAK67G,GAClB2sC,GAAU,IAGd,MACF,QACE,MAGJ,GAAIA,EACF,MAGFvuH,GAAc4yE,EACdvyE,GAAYuyE,IAiBd47C,EAAiB,SAASl/G,EAAOikE,EAAKruG,GACxC,IAGEyW,EAAQ5N,EAAMugJ,EAASpyI,EAAM0lG,EAAQxe,EAAOj9F,EAAG4W,EAF/CijB,EAAa,EACbK,EAAWuyE,EAGT27C,GAAU,EAEVjiD,EAAe,CACjBrjG,KAAM,GACNi3B,KAAM,GAIR,MAAOG,EAAWiP,EAAM/jC,WAEtB,GAAI+jC,EAAMtP,KAAgB6yE,GAAavjE,EAAMjP,KAAcwyE,EAwE3D7yE,IACAK,QAzEA,CAKE,OAHA1kB,EAAS2zB,EAAM19B,SAASouB,EAAYK,GACpCtyB,EAAO+mI,EAAMyN,GAAG5wI,UAAUgK,EAAQ43F,EAAI33F,KAE9B7N,GACN,IAAK,MAGH,GAFAugJ,EAAUxZ,EAAMyN,GAAG9lI,aAAad,EAAQ43F,EAAInmE,OAC5ClxB,EAAO44H,EAAMyN,GAAG1mI,+BAA+BF,GAC/B,UAAZ2yI,IACEpyI,IAASqyI,IACX3sC,EAASkzB,EAAMyN,GAAG1lI,aAAalB,GAC3BimG,IACFA,EAAO7zG,KAAO,QACd7I,EAAO4wD,MAAM/vD,KAAK67G,GAClB2sC,GAAU,KAGTrpJ,EAAOupJ,eAAe,CACzB,GAAIvyI,GACwB,IAAtBowF,EAAapsE,KAAY,CAC3BkjE,EAAQ,IAAIv3F,WAAWygG,EAAapsE,MACpC/5B,EAAI,EACJ,MAAOmmG,EAAarjG,KAAK7C,OACvB2W,EAAMuvF,EAAarjG,KAAK+kC,QACxBo1D,EAAMhyE,IAAIrU,EAAK5W,GACfA,GAAK4W,EAAIxR,WAEX,GAAIupI,EAAMyN,GAAGtlI,4BAA4BmmF,GAAQ,CAC/C,IAAIqrD,EAAgB3Z,EAAMyN,GAAG1lI,aAAaumF,GAKtCqrD,GACFvpJ,EAAOupJ,cAAgBA,EACvBvpJ,EAAOupJ,cAAc1gJ,KAAO,SAG5BqL,QAAQC,KACN,+RAQNizF,EAAapsE,KAAO,EAGxBosE,EAAarjG,KAAKlD,KAAK4V,GACvB2wF,EAAapsE,MAAQvkB,EAAOpQ,WAGhC,MACF,QACE,MAGJ,GAAIgjJ,GAAWrpJ,EAAOupJ,cACpB,MAGFzuH,GAAc4yE,EACdvyE,GAAYuyE,EAYhBvyE,EAAWiP,EAAM/jC,WACjBy0B,EAAaK,EAAWuyE,EACxB27C,GAAU,EACV,MAAOvuH,GAAc,EAEnB,GAAIsP,EAAMtP,KAAgB6yE,GAAavjE,EAAMjP,KAAcwyE,EAkC3D7yE,IACAK,QAnCA,CAKE,OAHA1kB,EAAS2zB,EAAM19B,SAASouB,EAAYK,GACpCtyB,EAAO+mI,EAAMyN,GAAG5wI,UAAUgK,EAAQ43F,EAAI33F,KAE9B7N,GACN,IAAK,MACHugJ,EAAUxZ,EAAMyN,GAAG9lI,aAAad,EAAQ43F,EAAInmE,OAC5ClxB,EAAO44H,EAAMyN,GAAG1mI,+BAA+BF,GAC/B,UAAZ2yI,GAAuBpyI,IACvB0lG,EAASkzB,EAAMyN,GAAG1lI,aAAalB,GAC3BimG,IACFA,EAAO7zG,KAAO,QACd7I,EAAO4wD,MAAM/vD,KAAK67G,GAClB2sC,GAAU,IAGhB,MACF,QACE,MAGJ,GAAIA,EACF,MAGFvuH,GAAc4yE,EACdvyE,GAAYuyE,IAgBd87C,EAAmB,SAASnpH,EAAaopH,GAC3C,GAAIppH,EAAYnC,OAASmC,EAAYnC,MAAMh9B,OAAQ,CACjD,IAAIwoJ,EAAqBD,EACS,qBAAvBC,IACTA,EAAqBrpH,EAAYnC,MAAM,GAAG90B,KAE5Ci3B,EAAYnC,MAAM/9B,SAAQ,SAASuqC,GACjCA,EAAKthC,IAAMb,EAAemiC,EAAKthC,IAAKsgJ,GACpCh/G,EAAKrhC,IAAMd,EAAemiC,EAAKrhC,IAAKqgJ,GAEpCh/G,EAAKorF,QAAUprF,EAAKthC,IAAM6M,EAC1By0B,EAAKkrF,QAAUlrF,EAAKrhC,IAAM4M,KAI9B,GAAIoqB,EAAYuwB,OAASvwB,EAAYuwB,MAAM1vD,OAAQ,CACjD,IAAIyoJ,EAAqBF,EAWzB,GAVkC,qBAAvBE,IACTA,EAAqBtpH,EAAYuwB,MAAM,GAAGxnD,KAE5Ci3B,EAAYuwB,MAAMzwD,SAAQ,SAASuqC,GACjCA,EAAKthC,IAAMb,EAAemiC,EAAKthC,IAAKugJ,GACpCj/G,EAAKrhC,IAAMd,EAAemiC,EAAKrhC,IAAKsgJ,GAEpCj/G,EAAKorF,QAAUprF,EAAKthC,IAAM6M,EAC1By0B,EAAKkrF,QAAUlrF,EAAKrhC,IAAM4M,KAExBoqB,EAAYkpH,cAAe,CAC7B,IAAIrrD,EAAQ79D,EAAYkpH,cACxBrrD,EAAM90F,IAAMb,EAAe21F,EAAM90F,IAAKugJ,GACtCzrD,EAAM70F,IAAMd,EAAe21F,EAAM70F,IAAKsgJ,GAEtCzrD,EAAM43B,QAAU53B,EAAM90F,IAAM6M,EAC5BioF,EAAM03B,QAAU13B,EAAM90F,IAAM6M,KAQ9B2zI,EAAc,SAASx/G,GACzB,IAOE3zB,EANA4yI,GAAU,EACVQ,EAAa,EACb1zI,EAAa,KACbC,EAAY,KACZ62F,EAAY,EACZ6H,EAAY,EAGd,MAAO1qE,EAAMlpC,OAAS4zG,GAAa,EAAG,CACpC,IAAIjsG,EAAO+mI,EAAMl2E,IAAIjtD,UAAU29B,EAAO0qE,GACtC,OAAQjsG,GACN,IAAK,iBAGH,GAAIuhC,EAAMlpC,OAAS4zG,EAAY,GAAI,CACjCu0C,GAAU,EACV,MAOF,GAJAp8C,EAAY2iC,EAAMl2E,IAAIk7C,gBAAgBxqE,EAAO0qE,GAIzC7H,EAAY7iE,EAAMlpC,OAAQ,CAC5BmoJ,GAAU,EACV,MAEgB,OAAdjzI,IACFK,EAAS2zB,EAAM19B,SAASooG,EAAWA,EAAY7H,GAC/C72F,EAAYw5H,EAAMl2E,IAAI47C,kBAAkB7+F,IAE1Cq+F,GAAa7H,EACb,MACF,IAAK,QAGH,GAAI7iE,EAAMlpC,OAAS4zG,EAAY,EAAG,CAChCu0C,GAAU,EACV,MAOF,GAJAp8C,EAAY2iC,EAAMl2E,IAAIu7C,cAAc7qE,EAAO0qE,GAIvC7H,EAAY7iE,EAAMlpC,OAAQ,CAC5BmoJ,GAAU,EACV,MAEiB,OAAflzI,IACFM,EAAS2zB,EAAM19B,SAASooG,EAAWA,EAAY7H,GAC/C92F,EAAay5H,EAAMl2E,IAAI27C,gBAAgB5+F,IAEzCozI,IACA/0C,GAAa7H,EACb,MACF,QACE6H,IACA,MAEJ,GAAIu0C,EACF,OAAO,KAGX,GAAmB,OAAflzI,GAAqC,OAAdC,EACzB,OAAO,KAGT,IAAI0zI,EAAiB7zI,EAAmBE,EAEpCnW,EAAS,CACXk+B,MAAO,CACL,CACEr1B,KAAM,QACNO,IAAKgN,EACL/M,IAAK+M,GAEP,CACEvN,KAAM,QACNO,IAAKgN,EAA0B,KAAbyzI,EAAoBC,EACtCzgJ,IAAK+M,EAA0B,KAAbyzI,EAAoBC,KAK5C,OAAO9pJ,GAQL+pJ,EAAa,SAAS3/G,GACxB,IAAIikE,EAAM,CACR33F,IAAK,KACLwxB,MAAO,MAGLloC,EAAS,GAIb,IAAK,IAAI0W,KAFTwyI,EAAU9+G,EAAOikE,GAEDA,EAAInmE,MAClB,GAAImmE,EAAInmE,MAAM7mC,eAAeqV,GAAM,CACjC,IAAI7N,EAAOwlG,EAAInmE,MAAMxxB,GACrB,OAAQ7N,GACN,KAAK0N,EAAYiB,iBACfxX,EAAO4wD,MAAQ,GACf04F,EAAel/G,EAAOikE,EAAKruG,GACC,IAAxBA,EAAO4wD,MAAM1vD,eACRlB,EAAO4wD,MAEhB,MACF,KAAKr6C,EAAYkB,iBACfzX,EAAOk+B,MAAQ,GACfirH,EAAe/+G,EAAOikE,EAAKruG,GACC,IAAxBA,EAAOk+B,MAAMh9B,eACRlB,EAAOk+B,MAEhB,MACF,QACE,OAIR,OAAOl+B,GAWLk5H,EAAU,SAAS9uF,EAAOq/G,GAC5B,IAEIzpJ,EAFAgqJ,EAAYpa,EAAMl2E,IAAI86C,gBAAgBpqE,GAU1C,OALEpqC,EADEgqJ,EACOJ,EAAYx/G,GAEZ2/G,EAAW3/G,GAGjBpqC,IAAYA,EAAOk+B,OAAUl+B,EAAO4wD,QAIzC44F,EAAiBxpJ,EAAQypJ,GAElBzpJ,GALE,MAQXyF,EAAOC,QAAU,CACfwzH,QAASA,EACTiwB,eAAgBA,I,kCCpflB,IAAIjvI,EAAiC,EACjCoxF,EAAqB,IAUrBvxF,EAAW,SAASqwB,GACtB,IACEnpC,EAAI,EACJjB,EAAS,CACPia,aAAc,EACdsxF,YAAa,GAEftxF,EAAc,EACdsxF,EAAc,EAGhB,MAAOtqG,EAAImpC,EAAM/jC,WAAY,CAE3B,GAAI+jC,EAAMnpC,KAAOqqG,EACf,MAIF,MAAoB,MAAblhE,EAAMnpC,GACXgZ,GAAe,IACfhZ,IAEFgZ,GAAemwB,EAAMnpC,KAGrB,MAAoB,MAAbmpC,EAAMnpC,GACXsqG,GAAe,IACftqG,IAMF,GAJAsqG,GAAenhE,EAAMnpC,MAIhBjB,EAAOkkG,SAAWjqF,IAAgBC,EAAgC,CACrEla,EAAOia,YAAcA,EACrBja,EAAOurG,YAAcA,EACrBvrG,EAAOkkG,QAAU95D,EAAM19B,SAASzL,EAAGA,EAAIsqG,GACvC,MAIFtqG,GAAKsqG,EACLtxF,EAAc,EACdsxF,EAAc,EAGhB,OAAOvrG,GAILma,EAAgB,SAASR,GAG3B,OAAuB,MAAnBA,EAAIuqF,QAAQ,GACP,KAIwC,MAA3CvqF,EAAIuqF,QAAQ,IAAM,EAAKvqF,EAAIuqF,QAAQ,IAChC,KAOmC,SAHxCx0F,OAAO+L,aAAa9B,EAAIuqF,QAAQ,GACZvqF,EAAIuqF,QAAQ,GACZvqF,EAAIuqF,QAAQ,GACZvqF,EAAIuqF,QAAQ,IAC3B,KAIc,IAAnBvqF,EAAIuqF,QAAQ,GACP,KAKFvqF,EAAIuqF,QAAQx3F,SAAS,EAAGiN,EAAIuqF,QAAQhjG,OAAS,IAIlDqZ,EAAsB,SAASlR,EAAKuQ,GACtC,IAAkB3Y,EAAGqqB,EAAOzU,EAAQ9S,EAAhCg5F,EAAU,GAGd,KAAoB,GAAdnjF,EAAS,IACb,OAAOmjF,EAKT,IADAzxE,EAAsB,GAAd1R,EAAS,GACZ3Y,EAAI,EAAGA,EAAIqqB,EAAOrqB,IACrB4V,EAAa,EAAJ5V,EACT8C,EAAO,CACL8E,KAA6B,EAAvB+Q,EAAS/C,EAAS,GACxBxN,IAAKA,GAIoB,EAAvBuQ,EAAS/C,EAAS,KACpB9S,EAAKuX,OAAU1B,EAAS/C,EAAS,IAAM,EAAK+C,EAAS/C,EAAS,GAC9DkmF,EAAQl8F,KAAKkD,IAGjB,OAAOg5F,GAGLyO,EAAkC,SAASznG,GAC3C,IAIE0nG,EAAWC,EAHXxqG,EAAS6C,EAAKsC,WACdslG,EAAoC,GACpC1qG,EAAI,EAIN,MAAOA,EAAIC,EAAS,EACF,IAAZ6C,EAAK9C,IAA4B,IAAhB8C,EAAK9C,EAAI,IAA4B,IAAhB8C,EAAK9C,EAAI,IACjD0qG,EAAkC9qG,KAAKI,EAAI,GAC3CA,GAAK,GAELA,IAMJ,GAAiD,IAA7C0qG,EAAkCzqG,OACpC,OAAO6C,EAIT0nG,EAAYvqG,EAASyqG,EAAkCzqG,OACvDwqG,EAAU,IAAI/kG,WAAW8kG,GACzB,IAAIG,EAAc,EAElB,IAAK3qG,EAAI,EAAGA,EAAIwqG,EAAWG,IAAe3qG,IACpC2qG,IAAgBD,EAAkC,KAEpDC,IAEAD,EAAkC7iE,SAEpC4iE,EAAQzqG,GAAK8C,EAAK6nG,GAGpB,OAAOF,GAIXjmG,EAAOC,QAAU,CACfqU,SAAUA,EACVI,cAAeA,EACfI,oBAAqBA,EACrBixF,gCAAiCA,EACjCtxF,+BAAgCA,I,mBC7KlC,SAAS+6B,EAAQg1G,GAEf,GAAIA,GAAe,kBAAoBA,EAAa,CAClD,IAAIC,EAAaD,EAAYl1G,OAASk1G,EAAYh1G,SAAWg1G,EAAYj1G,SACrEk1G,IAAYD,EAAcC,GAIhC,GAAI,kBAAoBD,EAAa,OAAO/tG,EAAM+tG,GAGlD,IAAIE,EAASz6I,OAAOu6I,GAGhBG,EAAgBxiF,EAAMuiF,EAAO1pJ,eACjC,GAAI2pJ,EAAe,OAAOA,EAGtBA,EAAgBC,EAAQF,EAAO1pJ,eACnC,OAAI2pJ,IAGkB,IAAlBD,EAAOjpJ,OAAqBipJ,EAAOtjJ,WAAW,QAAlD,GAaFouC,EAAQ+S,WAAa,SAAoBtuC,EAAO4wI,GAC9C,GAAI5wI,GAAS,kBAAoBA,EAAO,CACtC,IAAIu7B,EAAUv7B,EAAMq7B,OAASr7B,EAAMu7B,SAAWv7B,EAAMs7B,SACpD,GAAgB,OAAZC,QAAgCzyC,IAAZyyC,EAAyB,OAAO,EACxD,GAA0B,kBAAfq1G,EAAyB,CAElC,IAAIF,EAAgBxiF,EAAM0iF,EAAW7pJ,eACrC,GAAI2pJ,EAAiB,OAAOA,IAAkBn1G,EAG1Cm1G,EAAgBC,EAAQC,EAAW7pJ,eACvC,GAAI2pJ,EAAiB,OAAOA,IAAkBn1G,OACzC,GAA0B,kBAAfq1G,EAChB,OAAOA,IAAer1G,EAExB,OAAO,IAIXvvC,EAAUD,EAAOC,QAAUuvC,EAQ3B,IAAI2yB,EAAQliE,EAAQX,KAAOW,EAAQkiE,MAAQ,CACzC,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,KAAQ,GACR,IAAO,GACP,cAAe,GACf,YAAa,GACb,IAAO,GACP,MAAS,GACT,UAAW,GACX,YAAa,GACb,IAAO,GACP,KAAQ,GACR,KAAQ,GACR,GAAM,GACN,MAAS,GACT,KAAQ,GACR,OAAU,GACV,OAAU,GACV,QAAW,GACX,eAAgB,GAChB,gBAAiB,GACjB,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,WAAY,IACZ,cAAe,IACf,cAAe,IACf,gBAAiB,IACjB,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KAKHyiF,EAAU3kJ,EAAQ2kJ,QAAU,CAC9B,QAAW,GACX,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAO,GACP,QAAW,GACX,OAAU,GACV,MAAS,GACT,MAAS,GACT,KAAQ,GACR,OAAU,GACV,OAAU,GACV,IAAO,GACP,SAAY,GACZ,KAAQ,GACR,KAAQ,GACR,IAAO,GACP,IAAO,GACP,IAAO;;;;AAQT,IAAKppJ,EAAI,GAAIA,EAAI,IAAKA,IAAK2mE,EAAMl4D,OAAO+L,aAAaxa,IAAMA,EAAI,GAG/D,IAAK,IAAIA,EAAI,GAAIA,EAAI,GAAIA,IAAK2mE,EAAM3mE,EAAI,IAAMA,EAG9C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK2mE,EAAM,IAAI3mE,GAAKA,EAAI,IAG5C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK2mE,EAAM,UAAU3mE,GAAKA,EAAI,GAQlD,IAAIi7C,EAAQx2C,EAAQw2C,MAAQx2C,EAAQ2qB,MAAQ,GAG5C,IAAKpvB,KAAK2mE,EAAO1rB,EAAM0rB,EAAM3mE,IAAMA,EAGnC,IAAK,IAAIspJ,KAASF,EAChBziF,EAAM2iF,GAASF,EAAQE,I,mBC7KzB,IAAIv8I,EAAW,GAAGA,SAElBvI,EAAOC,QAAU/E,MAAMC,SAAW,SAAUyG,GAC1C,MAA6B,kBAAtB2G,EAAS/E,KAAK5B,K,sBCHvB,gBAIImjJ,EAJJ,2BACsB,qBAAX7qJ,OAAyBA,OAAS,GACzC8qJ,EAAS,EAAQ,GAIG,qBAAb59G,SACP29G,EAAQ39G,UAER29G,EAAQE,EAAS,6BAEZF,IACDA,EAAQE,EAAS,6BAA+BD,IAIxDhlJ,EAAOC,QAAU8kJ,I,yCCAjB,IAAIG,EAAgB,CAClB,IAAI,EACJ,IAAM,GAGR,SAASC,EAAkBlqJ,GACzB,GAAqB,kBAAVA,EACT,OAAO,EAET,IAAI+jJ,EAASkG,EAAcjqJ,EAAMD,eACjC,QAAOgkJ,GAAS/jJ,EAAMD,cAGxB,SAASoqJ,EAAoBnqJ,GAC3B,MAAwB,kBAAVA,GAAuBA,GAAS,GAAKA,GAAS,IAI9D,SAASyU,IACP,IAAI8sE,EAAS,IACT6oE,EAAS,EACTC,EAAiB,EACjBC,EAAiB,IACjBC,EAAmB,EACnBC,EAAmB,IACnBC,EAAU,GAEdllJ,OAAOy/B,iBAAiBx8B,KAAM,CAC5B,MAAS,CACP28B,YAAY,EACZ7Z,IAAK,WACH,OAAOi2D,GAET/1D,IAAK,SAASxrB,GACZ,IAAKmqJ,EAAoBnqJ,GACvB,MAAM,IAAImB,MAAM,oCAElBogF,EAASvhF,IAGb,MAAS,CACPmlC,YAAY,EACZ7Z,IAAK,WACH,OAAO8+H,GAET5+H,IAAK,SAASxrB,GACZ,GAAqB,kBAAVA,EACT,MAAM,IAAI8kC,UAAU,kCAEtBslH,EAASpqJ,IAGb,cAAiB,CACfmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOg/H,GAET9+H,IAAK,SAASxrB,GACZ,IAAKmqJ,EAAoBnqJ,GACvB,MAAM,IAAImB,MAAM,4CAElBmpJ,EAAiBtqJ,IAGrB,cAAiB,CACfmlC,YAAY,EACZ7Z,IAAK,WACH,OAAO++H,GAET7+H,IAAK,SAASxrB,GACZ,IAAImqJ,EAAoBnqJ,GACtB,MAAM,IAAImB,MAAM,4CAElBkpJ,EAAiBrqJ,IAGrB,gBAAmB,CACjBmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOk/H,GAETh/H,IAAK,SAASxrB,GACZ,IAAKmqJ,EAAoBnqJ,GACvB,MAAM,IAAImB,MAAM,8CAElBqpJ,EAAmBxqJ,IAGvB,gBAAmB,CACjBmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOi/H,GAET/+H,IAAK,SAASxrB,GACZ,IAAKmqJ,EAAoBnqJ,GACvB,MAAM,IAAImB,MAAM,8CAElBopJ,EAAmBvqJ,IAGvB,OAAU,CACRmlC,YAAY,EACZ7Z,IAAK,WACH,OAAOm/H,GAETj/H,IAAK,SAASxrB,GACZ,IAAIqyI,EAAU6X,EAAkBlqJ,IAEhB,IAAZqyI,EACF7+H,QAAQC,KAAK,uDAEbg3I,EAAUpY,MAOpBttI,EAAOC,QAAUyP,G,kCC5HjB,IAAIy6F,EAA4B,CAC9B,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,IACA,MAGE4E,EAAkB,SAASzwG,GAC7B,OAAKA,EAAK,KAAO,IAAI8C,WAAW,IAC3B9C,EAAK,KAAO,IAAI8C,WAAW,IAC3B9C,EAAK,KAAO,IAAI8C,WAAW,IAM9B2lG,EAAuB,SAASzoG,GAClC,OAAQA,EAAK,IAAM,GACVA,EAAK,IAAM,GACXA,EAAK,IAAM,EACXA,EAAK,IAKZooG,EAAgB,SAAS/hE,EAAOziC,EAAOC,GACzC,IAAI3G,EAAGjB,EAAS,GAChB,IAAKiB,EAAI0G,EAAO1G,EAAI2G,EAAK3G,IACvBjB,GAAU,KAAO,KAAOoqC,EAAMnpC,GAAG+M,SAAS,KAAKxN,OAAO,GAExD,OAAOR,GAKLssG,EAAgB,SAASliE,EAAOziC,EAAOC,GACzC,OAAO2kG,SAASJ,EAAc/hE,EAAOziC,EAAOC,KAG1CgtG,EAAkB,SAASC,EAAQC,GACrC,IACEC,EAAcF,EAAOC,EAAY,IAAM,GACzBD,EAAOC,EAAY,IAAM,GACzBD,EAAOC,EAAY,IAAM,EACzBD,EAAOC,EAAY,GACjCpQ,EAAQmQ,EAAOC,EAAY,GAC3BE,GAAyB,GAARtQ,IAAe,EAElC,OAAIsQ,EACKD,EAAa,GAEfA,EAAa,IAGlBE,EAAgB,SAASJ,EAAQC,GACnC,IACEI,GAAoC,IAAxBL,EAAOC,EAAY,KAAc,EAC7CK,EAASN,EAAOC,EAAY,IAAM,EAClCM,EAAkC,KAAxBP,EAAOC,EAAY,GAE/B,OAAQM,EAAUD,EAAUD,GAG1BzoG,EAAY,SAASooG,EAAQC,GAC/B,OAAKD,EAAOC,KAAe,IAAIjuG,WAAW,IACrCguG,EAAOC,EAAY,KAAO,IAAIjuG,WAAW,IACzCguG,EAAOC,EAAY,KAAO,IAAIjuG,WAAW,GACrC,kBACuB,EAApBguG,EAAOC,IAC4B,OAAV,IAAxBD,EAAOC,EAAY,IACvB,QAEF,MAGLO,EAAkB,SAAS5+F,GAC7B,IAAIxV,EAAI,EAER,MAAOA,EAAI,EAAIwV,EAAOvV,OAAQ,CAC5B,GAAkB,MAAduV,EAAOxV,IAA0C,OAAV,IAAhBwV,EAAOxV,EAAI,IAMtC,OAAO2uG,GAA2C,GAAhBn5F,EAAOxV,EAAI,MAAe,GAH1DA,IAMJ,OAAO,MAGLq0G,EAAoB,SAAS7+F,GAC/B,IAAIu2F,EAAYC,EAAW/O,EAAOgP,EAGlCF,EAAa,GACG,GAAZv2F,EAAO,KAETu2F,GAAc,EACdA,GAAcR,EAAqB/1F,EAAO/J,SAAS,GAAI,MAKzD,EAAG,CAGD,GADAugG,EAAYT,EAAqB/1F,EAAO/J,SAASsgG,EAAa,EAAGA,EAAa,IAC1EC,EAAY,EACd,OAAO,KAOT,GALAC,EAAcx9F,OAAO+L,aAAahF,EAAOu2F,GACPv2F,EAAOu2F,EAAa,GACpBv2F,EAAOu2F,EAAa,GACpBv2F,EAAOu2F,EAAa,IAElC,SAAhBE,EAAwB,CAC1BhP,EAAQznF,EAAO/J,SAASsgG,EAAa,GAAIA,EAAaC,EAAY,IAElE,IAAK,IAAIhsG,EAAI,EAAGA,EAAIi9F,EAAM73F,WAAYpF,IACpC,GAAiB,IAAbi9F,EAAMj9F,GAAU,CAClB,IAAI4rG,EAAQP,EAAcpO,EAAO,EAAGj9F,GACpC,GAAc,iDAAV4rG,EAA0D,CAC5D,IAAIp/E,EAAIywE,EAAMxxF,SAASzL,EAAI,GACvB+5B,GAAgB,EAAPvN,EAAE,KAAe,GAClBA,EAAE,IAAO,GACTA,EAAE,IAAM,GACRA,EAAE,IAAM,EACRA,EAAE,KAAO,EAIrB,OAHAuN,GAAQ,EACRA,GAAe,EAAPvN,EAAE,GAEHuN,EAET,OAKNgyE,GAAc,GACdA,GAAcC,QACPD,EAAav2F,EAAOpQ,YAC7B,OAAO,MAGTZ,EAAOC,QAAU,CACf8uG,gBAAiBA,EACjBI,gBAAiBA,EACjBK,cAAeA,EACfxoG,UAAWA,EACX4oG,gBAAiBA,EACjBC,kBAAmBA","file":"js/chunk-a15c876e.c5a74681.js","sourcesContent":["\"use strict\";\nvar window = require(\"global/window\")\nvar _extends = require(\"@babel/runtime/helpers/extends\");\nvar isFunction = require('is-function');\n\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function(row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (Array.isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n });\n\n return result;\n};\n\nmodule.exports = createXHR\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = _extends({}, options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n if(typeof options.callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n\n var called = false\n var callback = function cbOnce(err, response, body){\n if(!called){\n called = true\n options.callback(err, response, body)\n }\n }\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0)\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else {\n body = xhr.responseText || getXml(xhr)\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n return callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n return callback(err, response, response.body)\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n if (\"json\" in options && options.json !== false) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json === true ? body : options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.onabort = function(){\n aborted = true;\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n if (aborted) return\n aborted = true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n xhr.send(body || null)\n\n return xhr\n\n\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML\n }\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\"\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML\n }\n } catch (e) {}\n\n return null\n}\n\nfunction noop() {}\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Accepts program elementary stream (PES) data events and corrects\n * decode and presentation time stamps to account for a rollover\n * of the 33 bit value.\n */\n\n'use strict';\n\nvar Stream = require('../utils/stream');\n\nvar MAX_TS = 8589934592;\n\nvar RO_THRESH = 4294967296;\n\nvar TYPE_SHARED = 'shared';\n\nvar handleRollover = function(value, reference) {\n var direction = 1;\n\n if (value > reference) {\n // If the current timestamp value is greater than our reference timestamp and we detect a\n // timestamp rollover, this means the roll over is happening in the opposite direction.\n // Example scenario: Enter a long stream/video just after a rollover occurred. The reference\n // point will be set to a small number, e.g. 1. The user then seeks backwards over the\n // rollover point. In loading this segment, the timestamp values will be very large,\n // e.g. 2^33 - 1. Since this comes before the data we loaded previously, we want to adjust\n // the time stamp to be `value - 2^33`.\n direction = -1;\n }\n\n // Note: A seek forwards or back that is greater than the RO_THRESH (2^32, ~13 hours) will\n // cause an incorrect adjustment.\n while (Math.abs(reference - value) > RO_THRESH) {\n value += (direction * MAX_TS);\n }\n\n return value;\n};\n\nvar TimestampRolloverStream = function(type) {\n var lastDTS, referenceDTS;\n\n TimestampRolloverStream.prototype.init.call(this);\n\n // The \"shared\" type is used in cases where a stream will contain muxed\n // video and audio. We could use `undefined` here, but having a string\n // makes debugging a little clearer.\n this.type_ = type || TYPE_SHARED;\n\n this.push = function(data) {\n\n // Any \"shared\" rollover streams will accept _all_ data. Otherwise,\n // streams will only accept data that matches their type.\n if (this.type_ !== TYPE_SHARED && data.type !== this.type_) {\n return;\n }\n\n if (referenceDTS === undefined) {\n referenceDTS = data.dts;\n }\n\n data.dts = handleRollover(data.dts, referenceDTS);\n data.pts = handleRollover(data.pts, referenceDTS);\n\n lastDTS = data.dts;\n\n this.trigger('data', data);\n };\n\n this.flush = function() {\n referenceDTS = lastDTS;\n this.trigger('done');\n };\n\n this.endTimeline = function() {\n this.flush();\n this.trigger('endedtimeline');\n };\n\n this.discontinuity = function() {\n referenceDTS = void 0;\n lastDTS = void 0;\n };\n\n this.reset = function() {\n this.discontinuity();\n this.trigger('reset');\n };\n};\n\nTimestampRolloverStream.prototype = new Stream();\n\nmodule.exports = {\n TimestampRolloverStream: TimestampRolloverStream,\n handleRollover: handleRollover\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about MP4s.\n */\n'use strict';\n\nvar toUnsigned = require('../utils/bin').toUnsigned;\nvar toHexString = require('../utils/bin').toHexString;\nvar mp4Inspector = require('../tools/mp4-inspector.js');\nvar timescale, startTime, compositionStartTime, getVideoTrackIds, getTracks;\n\n/**\n * Parses an MP4 initialization segment and extracts the timescale\n * values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * ```\n * @param init {Uint8Array} the bytes of the init segment\n * @return {object} a hash of track ids to timescale values or null if\n * the init segment is malformed.\n */\ntimescale = function(init) {\n var\n result = {},\n traks = mp4Inspector.findBox(init, ['moov', 'trak']);\n\n // mdhd timescale\n return traks.reduce(function(result, trak) {\n var tkhd, version, index, id, mdhd;\n\n tkhd = mp4Inspector.findBox(trak, ['tkhd'])[0];\n if (!tkhd) {\n return null;\n }\n version = tkhd[0];\n index = version === 0 ? 12 : 20;\n id = toUnsigned(tkhd[index] << 24 |\n tkhd[index + 1] << 16 |\n tkhd[index + 2] << 8 |\n tkhd[index + 3]);\n\n mdhd = mp4Inspector.findBox(trak, ['mdia', 'mdhd'])[0];\n if (!mdhd) {\n return null;\n }\n version = mdhd[0];\n index = version === 0 ? 12 : 20;\n result[id] = toUnsigned(mdhd[index] << 24 |\n mdhd[index + 1] << 16 |\n mdhd[index + 2] << 8 |\n mdhd[index + 3]);\n return result;\n }, result);\n};\n\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param timescale {object} a hash of track ids to timescale values.\n * @return {number} the earliest base media decode start time for the\n * fragment, in seconds\n */\nstartTime = function(timescale, fragment) {\n var trafs, baseTimes, result;\n\n // we need info from two childrend of each track fragment box\n trafs = mp4Inspector.findBox(fragment, ['moof', 'traf']);\n\n // determine the start times for each track\n baseTimes = [].concat.apply([], trafs.map(function(traf) {\n return mp4Inspector.findBox(traf, ['tfhd']).map(function(tfhd) {\n var id, scale, baseTime;\n\n // get the track id from the tfhd\n id = toUnsigned(tfhd[4] << 24 |\n tfhd[5] << 16 |\n tfhd[6] << 8 |\n tfhd[7]);\n // assume a 90kHz clock if no timescale was specified\n scale = timescale[id] || 90e3;\n\n // get the base media decode time from the tfdt\n baseTime = mp4Inspector.findBox(traf, ['tfdt']).map(function(tfdt) {\n var version, result;\n\n version = tfdt[0];\n result = toUnsigned(tfdt[4] << 24 |\n tfdt[5] << 16 |\n tfdt[6] << 8 |\n tfdt[7]);\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += toUnsigned(tfdt[8] << 24 |\n tfdt[9] << 16 |\n tfdt[10] << 8 |\n tfdt[11]);\n }\n return result;\n })[0];\n baseTime = baseTime || Infinity;\n\n // convert base time to seconds\n return baseTime / scale;\n });\n }));\n\n // return the minimum\n result = Math.min.apply(null, baseTimes);\n return isFinite(result) ? result : 0;\n};\n\n/**\n * Determine the composition start, in seconds, for an MP4\n * fragment.\n *\n * The composition start time of a fragment can be calculated using the base\n * media decode time, composition time offset, and timescale, as follows:\n *\n * compositionStartTime = (baseMediaDecodeTime + compositionTimeOffset) / timescale\n *\n * All of the aforementioned information is contained within a media fragment's\n * `traf` box, except for timescale info, which comes from the initialization\n * segment, so a track id (also contained within a `traf`) is also necessary to\n * associate it with a timescale\n *\n *\n * @param timescales {object} - a hash of track ids to timescale values.\n * @param fragment {Unit8Array} - the bytes of a media segment\n * @return {number} the composition start time for the fragment, in seconds\n **/\ncompositionStartTime = function(timescales, fragment) {\n var trafBoxes = mp4Inspector.findBox(fragment, ['moof', 'traf']);\n var baseMediaDecodeTime = 0;\n var compositionTimeOffset = 0;\n var trackId;\n\n if (trafBoxes && trafBoxes.length) {\n // The spec states that track run samples contained within a `traf` box are contiguous, but\n // it does not explicitly state whether the `traf` boxes themselves are contiguous.\n // We will assume that they are, so we only need the first to calculate start time.\n var parsedTraf = mp4Inspector.parseTraf(trafBoxes[0]);\n\n for (var i = 0; i < parsedTraf.boxes.length; i++) {\n if (parsedTraf.boxes[i].type === 'tfhd') {\n trackId = parsedTraf.boxes[i].trackId;\n } else if (parsedTraf.boxes[i].type === 'tfdt') {\n baseMediaDecodeTime = parsedTraf.boxes[i].baseMediaDecodeTime;\n } else if (parsedTraf.boxes[i].type === 'trun' && parsedTraf.boxes[i].samples.length) {\n compositionTimeOffset = parsedTraf.boxes[i].samples[0].compositionTimeOffset || 0;\n }\n }\n }\n\n // Get timescale for this specific track. Assume a 90kHz clock if no timescale was\n // specified.\n var timescale = timescales[trackId] || 90e3;\n\n // return the composition start time, in seconds\n return (baseMediaDecodeTime + compositionTimeOffset) / timescale;\n};\n\n/**\n * Find the trackIds of the video tracks in this source.\n * Found by parsing the Handler Reference and Track Header Boxes:\n * moov > trak > mdia > hdlr\n * moov > trak > tkhd\n *\n * @param {Uint8Array} init - The bytes of the init segment for this source\n * @return {Number[]} A list of trackIds\n *\n * @see ISO-BMFF-12/2015, Section 8.4.3\n **/\ngetVideoTrackIds = function(init) {\n var traks = mp4Inspector.findBox(init, ['moov', 'trak']);\n var videoTrackIds = [];\n\n traks.forEach(function(trak) {\n var hdlrs = mp4Inspector.findBox(trak, ['mdia', 'hdlr']);\n var tkhds = mp4Inspector.findBox(trak, ['tkhd']);\n\n hdlrs.forEach(function(hdlr, index) {\n var handlerType = mp4Inspector.parseType(hdlr.subarray(8, 12));\n var tkhd = tkhds[index];\n var view;\n var version;\n var trackId;\n\n if (handlerType === 'vide') {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n version = view.getUint8(0);\n trackId = (version === 0) ? view.getUint32(12) : view.getUint32(20);\n\n videoTrackIds.push(trackId);\n }\n });\n });\n\n return videoTrackIds;\n};\n\n/**\n * Get all the video, audio, and hint tracks from a non fragmented\n * mp4 segment\n */\ngetTracks = function(init) {\n var traks = mp4Inspector.findBox(init, ['moov', 'trak']);\n var tracks = [];\n\n traks.forEach(function(trak) {\n var track = {};\n var tkhd = mp4Inspector.findBox(trak, ['tkhd'])[0];\n var view, version;\n\n // id\n if (tkhd) {\n view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n version = view.getUint8(0);\n\n track.id = (version === 0) ? view.getUint32(12) : view.getUint32(20);\n }\n\n var hdlr = mp4Inspector.findBox(trak, ['mdia', 'hdlr'])[0];\n\n // type\n if (hdlr) {\n var type = mp4Inspector.parseType(hdlr.subarray(8, 12));\n\n if (type === 'vide') {\n track.type = 'video';\n } else if (type === 'soun') {\n track.type = 'audio';\n } else {\n track.type = type;\n }\n }\n\n\n // codec\n var stsd = mp4Inspector.findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n\n if (stsd) {\n var sampleDescriptions = stsd.subarray(8);\n // gives the codec type string\n track.codec = mp4Inspector.parseType(sampleDescriptions.subarray(4, 8));\n\n var codecBox = mp4Inspector.findBox(sampleDescriptions, [track.codec])[0];\n var codecConfig, codecConfigType;\n\n if (codecBox) {\n // https://tools.ietf.org/html/rfc6381#section-3.3\n if ((/^[a-z]vc[1-9]$/i).test(track.codec)) {\n // we don't need anything but the \"config\" parameter of the\n // avc1 codecBox\n codecConfig = codecBox.subarray(78);\n codecConfigType = mp4Inspector.parseType(codecConfig.subarray(4, 8));\n\n if (codecConfigType === 'avcC' && codecConfig.length > 11) {\n track.codec += '.';\n\n // left padded with zeroes for single digit hex\n // profile idc\n track.codec += toHexString(codecConfig[9]);\n // the byte containing the constraint_set flags\n track.codec += toHexString(codecConfig[10]);\n // level idc\n track.codec += toHexString(codecConfig[11]);\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'avc1.4d400d';\n }\n } else if ((/^mp4[a,v]$/i).test(track.codec)) {\n // we do not need anything but the streamDescriptor of the mp4a codecBox\n codecConfig = codecBox.subarray(28);\n codecConfigType = mp4Inspector.parseType(codecConfig.subarray(4, 8));\n\n if (codecConfigType === 'esds' && codecConfig.length > 20 && codecConfig[19] !== 0) {\n track.codec += '.' + toHexString(codecConfig[19]);\n // this value is only a single digit\n track.codec += '.' + toHexString((codecConfig[20] >>> 2) & 0x3f).replace(/^0/, '');\n } else {\n // TODO: show a warning that we couldn't parse the codec\n // and are using the default\n track.codec = 'mp4a.40.2';\n }\n } else {\n // TODO: show a warning? for unknown codec type\n }\n }\n }\n\n var mdhd = mp4Inspector.findBox(trak, ['mdia', 'mdhd'])[0];\n\n if (mdhd && tkhd) {\n var index = version === 0 ? 12 : 20;\n\n track.timescale = toUnsigned(mdhd[index] << 24 |\n mdhd[index + 1] << 16 |\n mdhd[index + 2] << 8 |\n mdhd[index + 3]);\n }\n\n tracks.push(track);\n });\n\n return tracks;\n};\n\nmodule.exports = {\n // export mp4 inspector's findBox and parseType for backwards compatibility\n findBox: mp4Inspector.findBox,\n parseType: mp4Inspector.parseType,\n timescale: timescale,\n startTime: startTime,\n compositionStartTime: compositionStartTime,\n videoTrackIds: getVideoTrackIds,\n tracks: getTracks\n};\n","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","function DOMParser(options){\r\n\tthis.options = options ||{locator:{}};\r\n\t\r\n}\r\nDOMParser.prototype.parseFromString = function(source,mimeType){\r\n\tvar options = this.options;\r\n\tvar sax = new XMLReader();\r\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\r\n\tvar errorHandler = options.errorHandler;\r\n\tvar locator = options.locator;\r\n\tvar defaultNSMap = options.xmlns||{};\r\n\tvar entityMap = {'lt':'<','gt':'>','amp':'&','quot':'\"','apos':\"'\"}\r\n\tif(locator){\r\n\t\tdomBuilder.setDocumentLocator(locator)\r\n\t}\r\n\t\r\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\r\n\tsax.domBuilder = options.domBuilder || domBuilder;\r\n\tif(/\\/x?html?$/.test(mimeType)){\r\n\t\tentityMap.nbsp = '\\xa0';\r\n\t\tentityMap.copy = '\\xa9';\r\n\t\tdefaultNSMap['']= 'http://www.w3.org/1999/xhtml';\r\n\t}\r\n\tdefaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';\r\n\tif(source){\r\n\t\tsax.parse(source,defaultNSMap,entityMap);\r\n\t}else{\r\n\t\tsax.errorHandler.error(\"invalid doc source\");\r\n\t}\r\n\treturn domBuilder.doc;\r\n}\r\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\r\n\tif(!errorImpl){\r\n\t\tif(domBuilder instanceof DOMHandler){\r\n\t\t\treturn domBuilder;\r\n\t\t}\r\n\t\terrorImpl = domBuilder ;\r\n\t}\r\n\tvar errorHandler = {}\r\n\tvar isCallback = errorImpl instanceof Function;\r\n\tlocator = locator||{}\r\n\tfunction build(key){\r\n\t\tvar fn = errorImpl[key];\r\n\t\tif(!fn && isCallback){\r\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\r\n\t\t}\r\n\t\terrorHandler[key] = fn && function(msg){\r\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\r\n\t\t}||function(){};\r\n\t}\r\n\tbuild('warning');\r\n\tbuild('error');\r\n\tbuild('fatalError');\r\n\treturn errorHandler;\r\n}\r\n\r\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\r\n/**\r\n * +ContentHandler+ErrorHandler\r\n * +LexicalHandler+EntityResolver2\r\n * -DeclHandler-DTDHandler \r\n * \r\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\r\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\r\n */\r\nfunction DOMHandler() {\r\n this.cdata = false;\r\n}\r\nfunction position(locator,node){\r\n\tnode.lineNumber = locator.lineNumber;\r\n\tnode.columnNumber = locator.columnNumber;\r\n}\r\n/**\r\n * @see org.xml.sax.ContentHandler#startDocument\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\r\n */ \r\nDOMHandler.prototype = {\r\n\tstartDocument : function() {\r\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\r\n \tif (this.locator) {\r\n \tthis.doc.documentURI = this.locator.systemId;\r\n \t}\r\n\t},\r\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\r\n\t\tvar doc = this.doc;\r\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\r\n\t var len = attrs.length;\r\n\t appendElement(this, el);\r\n\t this.currentElement = el;\r\n\t \r\n\t\tthis.locator && position(this.locator,el)\r\n\t for (var i = 0 ; i < len; i++) {\r\n\t var namespaceURI = attrs.getURI(i);\r\n\t var value = attrs.getValue(i);\r\n\t var qName = attrs.getQName(i);\r\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\r\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\r\n\t\t\tattr.value = attr.nodeValue = value;\r\n\t\t\tel.setAttributeNode(attr)\r\n\t }\r\n\t},\r\n\tendElement:function(namespaceURI, localName, qName) {\r\n\t\tvar current = this.currentElement\r\n\t\tvar tagName = current.tagName;\r\n\t\tthis.currentElement = current.parentNode;\r\n\t},\r\n\tstartPrefixMapping:function(prefix, uri) {\r\n\t},\r\n\tendPrefixMapping:function(prefix) {\r\n\t},\r\n\tprocessingInstruction:function(target, data) {\r\n\t var ins = this.doc.createProcessingInstruction(target, data);\r\n\t this.locator && position(this.locator,ins)\r\n\t appendElement(this, ins);\r\n\t},\r\n\tignorableWhitespace:function(ch, start, length) {\r\n\t},\r\n\tcharacters:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t\t//console.log(chars)\r\n\t\tif(chars){\r\n\t\t\tif (this.cdata) {\r\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\r\n\t\t\t} else {\r\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\r\n\t\t\t}\r\n\t\t\tif(this.currentElement){\r\n\t\t\t\tthis.currentElement.appendChild(charNode);\r\n\t\t\t}else if(/^\\s*$/.test(chars)){\r\n\t\t\t\tthis.doc.appendChild(charNode);\r\n\t\t\t\t//process xml\r\n\t\t\t}\r\n\t\t\tthis.locator && position(this.locator,charNode)\r\n\t\t}\r\n\t},\r\n\tskippedEntity:function(name) {\r\n\t},\r\n\tendDocument:function() {\r\n\t\tthis.doc.normalize();\r\n\t},\r\n\tsetDocumentLocator:function (locator) {\r\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\r\n\t \tlocator.lineNumber = 0;\r\n\t }\r\n\t},\r\n\t//LexicalHandler\r\n\tcomment:function(chars, start, length) {\r\n\t\tchars = _toString.apply(this,arguments)\r\n\t var comm = this.doc.createComment(chars);\r\n\t this.locator && position(this.locator,comm)\r\n\t appendElement(this, comm);\r\n\t},\r\n\t\r\n\tstartCDATA:function() {\r\n\t //used in characters() methods\r\n\t this.cdata = true;\r\n\t},\r\n\tendCDATA:function() {\r\n\t this.cdata = false;\r\n\t},\r\n\t\r\n\tstartDTD:function(name, publicId, systemId) {\r\n\t\tvar impl = this.doc.implementation;\r\n\t if (impl && impl.createDocumentType) {\r\n\t var dt = impl.createDocumentType(name, publicId, systemId);\r\n\t this.locator && position(this.locator,dt)\r\n\t appendElement(this, dt);\r\n\t }\r\n\t},\r\n\t/**\r\n\t * @see org.xml.sax.ErrorHandler\r\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\r\n\t */\r\n\twarning:function(error) {\r\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\r\n\t},\r\n\terror:function(error) {\r\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\r\n\t},\r\n\tfatalError:function(error) {\r\n\t\tconsole.error('[xmldom fatalError]\\t'+error,_locator(this.locator));\r\n\t throw error;\r\n\t}\r\n}\r\nfunction _locator(l){\r\n\tif(l){\r\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\r\n\t}\r\n}\r\nfunction _toString(chars,start,length){\r\n\tif(typeof chars == 'string'){\r\n\t\treturn chars.substr(start,length)\r\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\r\n\t\tif(chars.length >= start+length || start){\r\n\t\t\treturn new java.lang.String(chars,start,length)+'';\r\n\t\t}\r\n\t\treturn chars;\r\n\t}\r\n}\r\n\r\n/*\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\r\n * used method of org.xml.sax.ext.LexicalHandler:\r\n * #comment(chars, start, length)\r\n * #startCDATA()\r\n * #endCDATA()\r\n * #startDTD(name, publicId, systemId)\r\n *\r\n *\r\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\r\n * #endDTD()\r\n * #startEntity(name)\r\n * #endEntity(name)\r\n *\r\n *\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\r\n * IGNORED method of org.xml.sax.ext.DeclHandler\r\n * \t#attributeDecl(eName, aName, type, mode, value)\r\n * #elementDecl(name, model)\r\n * #externalEntityDecl(name, publicId, systemId)\r\n * #internalEntityDecl(name, value)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\r\n * IGNORED method of org.xml.sax.EntityResolver2\r\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\r\n * #resolveEntity(publicId, systemId)\r\n * #getExternalSubset(name, baseURI)\r\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\r\n * IGNORED method of org.xml.sax.DTDHandler\r\n * #notationDecl(name, publicId, systemId) {};\r\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\r\n */\r\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\r\n\tDOMHandler.prototype[key] = function(){return null}\r\n})\r\n\r\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\r\nfunction appendElement (hander,node) {\r\n if (!hander.currentElement) {\r\n hander.doc.appendChild(node);\r\n } else {\r\n hander.currentElement.appendChild(node);\r\n }\r\n}//appendChild and setAttributeNS are preformance key\r\n\r\n//if(typeof require == 'function'){\r\n\tvar XMLReader = require('./sax').XMLReader;\r\n\tvar DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;\r\n\texports.XMLSerializer = require('./dom').XMLSerializer ;\r\n\texports.DOMParser = DOMParser;\r\n//}\r\n","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Utilities to detect basic properties and metadata about TS Segments.\n */\n'use strict';\n\nvar StreamTypes = require('./stream-types.js');\n\nvar parsePid = function(packet) {\n var pid = packet[1] & 0x1f;\n pid <<= 8;\n pid |= packet[2];\n return pid;\n};\n\nvar parsePayloadUnitStartIndicator = function(packet) {\n return !!(packet[1] & 0x40);\n};\n\nvar parseAdaptionField = function(packet) {\n var offset = 0;\n // if an adaption field is present, its length is specified by the\n // fifth byte of the TS packet header. The adaptation field is\n // used to add stuffing to PES packets that don't fill a complete\n // TS packet, and to specify some forms of timing and control data\n // that we do not currently use.\n if (((packet[3] & 0x30) >>> 4) > 0x01) {\n offset += packet[4] + 1;\n }\n return offset;\n};\n\nvar parseType = function(packet, pmtPid) {\n var pid = parsePid(packet);\n if (pid === 0) {\n return 'pat';\n } else if (pid === pmtPid) {\n return 'pmt';\n } else if (pmtPid) {\n return 'pes';\n }\n return null;\n};\n\nvar parsePat = function(packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n var offset = 4 + parseAdaptionField(packet);\n\n if (pusi) {\n offset += packet[offset] + 1;\n }\n\n return (packet[offset + 10] & 0x1f) << 8 | packet[offset + 11];\n};\n\nvar parsePmt = function(packet) {\n var programMapTable = {};\n var pusi = parsePayloadUnitStartIndicator(packet);\n var payloadOffset = 4 + parseAdaptionField(packet);\n\n if (pusi) {\n payloadOffset += packet[payloadOffset] + 1;\n }\n\n // PMTs can be sent ahead of the time when they should actually\n // take effect. We don't believe this should ever be the case\n // for HLS but we'll ignore \"forward\" PMT declarations if we see\n // them. Future PMT declarations have the current_next_indicator\n // set to zero.\n if (!(packet[payloadOffset + 5] & 0x01)) {\n return;\n }\n\n var sectionLength, tableEnd, programInfoLength;\n // the mapping table ends at the end of the current section\n sectionLength = (packet[payloadOffset + 1] & 0x0f) << 8 | packet[payloadOffset + 2];\n tableEnd = 3 + sectionLength - 4;\n\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n programInfoLength = (packet[payloadOffset + 10] & 0x0f) << 8 | packet[payloadOffset + 11];\n\n // advance the offset to the first entry in the mapping table\n var offset = 12 + programInfoLength;\n while (offset < tableEnd) {\n var i = payloadOffset + offset;\n // add an entry that maps the elementary_pid to the stream_type\n programMapTable[(packet[i + 1] & 0x1F) << 8 | packet[i + 2]] = packet[i];\n\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += ((packet[i + 3] & 0x0F) << 8 | packet[i + 4]) + 5;\n }\n return programMapTable;\n};\n\nvar parsePesType = function(packet, programMapTable) {\n var pid = parsePid(packet);\n var type = programMapTable[pid];\n switch (type) {\n case StreamTypes.H264_STREAM_TYPE:\n return 'video';\n case StreamTypes.ADTS_STREAM_TYPE:\n return 'audio';\n case StreamTypes.METADATA_STREAM_TYPE:\n return 'timed-metadata';\n default:\n return null;\n }\n};\n\nvar parsePesTime = function(packet) {\n var pusi = parsePayloadUnitStartIndicator(packet);\n if (!pusi) {\n return null;\n }\n\n var offset = 4 + parseAdaptionField(packet);\n\n if (offset >= packet.byteLength) {\n // From the H 222.0 MPEG-TS spec\n // \"For transport stream packets carrying PES packets, stuffing is needed when there\n // is insufficient PES packet data to completely fill the transport stream packet\n // payload bytes. Stuffing is accomplished by defining an adaptation field longer than\n // the sum of the lengths of the data elements in it, so that the payload bytes\n // remaining after the adaptation field exactly accommodates the available PES packet\n // data.\"\n //\n // If the offset is >= the length of the packet, then the packet contains no data\n // and instead is just adaption field stuffing bytes\n return null;\n }\n\n var pes = null;\n var ptsDtsFlags;\n\n // PES packets may be annotated with a PTS value, or a PTS value\n // and a DTS value. Determine what combination of values is\n // available to work with.\n ptsDtsFlags = packet[offset + 7];\n\n // PTS and DTS are normally stored as a 33-bit number. Javascript\n // performs all bitwise operations on 32-bit integers but javascript\n // supports a much greater range (52-bits) of integer using standard\n // mathematical operations.\n // We construct a 31-bit value using bitwise operators over the 31\n // most significant bits and then multiply by 4 (equal to a left-shift\n // of 2) before we add the final 2 least significant bits of the\n // timestamp (equal to an OR.)\n if (ptsDtsFlags & 0xC0) {\n pes = {};\n // the PTS and DTS are not written out directly. For information\n // on how they are encoded, see\n // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n pes.pts = (packet[offset + 9] & 0x0E) << 27 |\n (packet[offset + 10] & 0xFF) << 20 |\n (packet[offset + 11] & 0xFE) << 12 |\n (packet[offset + 12] & 0xFF) << 5 |\n (packet[offset + 13] & 0xFE) >>> 3;\n pes.pts *= 4; // Left shift by 2\n pes.pts += (packet[offset + 13] & 0x06) >>> 1; // OR by the two LSBs\n pes.dts = pes.pts;\n if (ptsDtsFlags & 0x40) {\n pes.dts = (packet[offset + 14] & 0x0E) << 27 |\n (packet[offset + 15] & 0xFF) << 20 |\n (packet[offset + 16] & 0xFE) << 12 |\n (packet[offset + 17] & 0xFF) << 5 |\n (packet[offset + 18] & 0xFE) >>> 3;\n pes.dts *= 4; // Left shift by 2\n pes.dts += (packet[offset + 18] & 0x06) >>> 1; // OR by the two LSBs\n }\n }\n return pes;\n};\n\nvar parseNalUnitType = function(type) {\n switch (type) {\n case 0x05:\n return 'slice_layer_without_partitioning_rbsp_idr';\n case 0x06:\n return 'sei_rbsp';\n case 0x07:\n return 'seq_parameter_set_rbsp';\n case 0x08:\n return 'pic_parameter_set_rbsp';\n case 0x09:\n return 'access_unit_delimiter_rbsp';\n default:\n return null;\n }\n};\n\nvar videoPacketContainsKeyFrame = function(packet) {\n var offset = 4 + parseAdaptionField(packet);\n var frameBuffer = packet.subarray(offset);\n var frameI = 0;\n var frameSyncPoint = 0;\n var foundKeyFrame = false;\n var nalType;\n\n // advance the sync point to a NAL start, if necessary\n for (; frameSyncPoint < frameBuffer.byteLength - 3; frameSyncPoint++) {\n if (frameBuffer[frameSyncPoint + 2] === 1) {\n // the sync point is properly aligned\n frameI = frameSyncPoint + 5;\n break;\n }\n }\n\n while (frameI < frameBuffer.byteLength) {\n // look at the current byte to determine if we've hit the end of\n // a NAL unit boundary\n switch (frameBuffer[frameI]) {\n case 0:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0) {\n frameI += 2;\n break;\n } else if (frameBuffer[frameI - 2] !== 0) {\n frameI++;\n break;\n }\n\n if (frameSyncPoint + 3 !== frameI - 2) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n }\n\n // drop trailing zeroes\n do {\n frameI++;\n } while (frameBuffer[frameI] !== 1 && frameI < frameBuffer.length);\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n case 1:\n // skip past non-sync sequences\n if (frameBuffer[frameI - 1] !== 0 ||\n frameBuffer[frameI - 2] !== 0) {\n frameI += 3;\n break;\n }\n\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n frameSyncPoint = frameI - 2;\n frameI += 3;\n break;\n default:\n // the current byte isn't a one or zero, so it cannot be part\n // of a sync sequence\n frameI += 3;\n break;\n }\n }\n frameBuffer = frameBuffer.subarray(frameSyncPoint);\n frameI -= frameSyncPoint;\n frameSyncPoint = 0;\n // parse the final nal\n if (frameBuffer && frameBuffer.byteLength > 3) {\n nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f);\n if (nalType === 'slice_layer_without_partitioning_rbsp_idr') {\n foundKeyFrame = true;\n }\n }\n\n return foundKeyFrame;\n};\n\n\nmodule.exports = {\n parseType: parseType,\n parsePat: parsePat,\n parsePmt: parsePmt,\n parsePayloadUnitStartIndicator: parsePayloadUnitStartIndicator,\n parsePesType: parsePesType,\n parsePesTime: parsePesTime,\n videoPacketContainsKeyFrame: videoPacketContainsKeyFrame\n};\n","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * A lightweight readable stream implemention that handles event dispatching.\n * Objects that inherit from streams should call init in their constructors.\n */\n'use strict';\n\nvar Stream = function() {\n this.init = function() {\n var listeners = {};\n /**\n * Add a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} the callback to be invoked when an event of\n * the specified type occurs\n */\n this.on = function(type, listener) {\n if (!listeners[type]) {\n listeners[type] = [];\n }\n listeners[type] = listeners[type].concat(listener);\n };\n /**\n * Remove a listener for a specified event type.\n * @param type {string} the event name\n * @param listener {function} a function previously registered for this\n * type of event through `on`\n */\n this.off = function(type, listener) {\n var index;\n if (!listeners[type]) {\n return false;\n }\n index = listeners[type].indexOf(listener);\n listeners[type] = listeners[type].slice();\n listeners[type].splice(index, 1);\n return index > -1;\n };\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n * @param type {string} the event name\n */\n this.trigger = function(type) {\n var callbacks, i, length, args;\n callbacks = listeners[type];\n if (!callbacks) {\n return;\n }\n // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n if (arguments.length === 2) {\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n args = [];\n i = arguments.length;\n for (i = 1; i < arguments.length; ++i) {\n args.push(arguments[i]);\n }\n length = callbacks.length;\n for (i = 0; i < length; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n };\n /**\n * Destroys the stream and cleans up.\n */\n this.dispose = function() {\n listeners = {};\n };\n };\n};\n\n/**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n * @param destination {stream} the stream that will receive all `data` events\n * @param autoFlush {boolean} if false, we will not call `flush` on the destination\n * when the current stream emits a 'done' event\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\nStream.prototype.pipe = function(destination) {\n this.on('data', function(data) {\n destination.push(data);\n });\n\n this.on('done', function(flushSource) {\n destination.flush(flushSource);\n });\n\n this.on('partialdone', function(flushSource) {\n destination.partialFlush(flushSource);\n });\n\n this.on('endedtimeline', function(flushSource) {\n destination.endTimeline(flushSource);\n });\n\n this.on('reset', function(flushSource) {\n destination.reset(flushSource);\n });\n\n return destination;\n};\n\n// Default stream functions that are expected to be overridden to perform\n// actual work. These are provided by the prototype as a sort of no-op\n// implementation so that we don't have to check for their existence in the\n// `pipe` function above.\nStream.prototype.push = function(data) {\n this.trigger('data', data);\n};\n\nStream.prototype.flush = function(flushSource) {\n this.trigger('done', flushSource);\n};\n\nStream.prototype.partialFlush = function(flushSource) {\n this.trigger('partialdone', flushSource);\n};\n\nStream.prototype.endTimeline = function(flushSource) {\n this.trigger('endedtimeline', flushSource);\n};\n\nStream.prototype.reset = function(flushSource) {\n this.trigger('reset', flushSource);\n};\n\nmodule.exports = Stream;\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _extends() {\n module.exports = _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 return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n *\n * Reads in-band caption information from a video elementary\n * stream. Captions must follow the CEA-708 standard for injection\n * into an MPEG-2 transport streams.\n * @see https://en.wikipedia.org/wiki/CEA-708\n * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf\n */\n\n'use strict';\n\n// -----------------\n// Link To Transport\n// -----------------\n\nvar Stream = require('../utils/stream');\nvar cea708Parser = require('../tools/caption-packet-parser');\n\nvar CaptionStream = function() {\n\n CaptionStream.prototype.init.call(this);\n\n this.captionPackets_ = [];\n\n this.ccStreams_ = [\n new Cea608Stream(0, 0), // eslint-disable-line no-use-before-define\n new Cea608Stream(0, 1), // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 0), // eslint-disable-line no-use-before-define\n new Cea608Stream(1, 1) // eslint-disable-line no-use-before-define\n ];\n\n this.reset();\n\n // forward data and done events from CCs to this CaptionStream\n this.ccStreams_.forEach(function(cc) {\n cc.on('data', this.trigger.bind(this, 'data'));\n cc.on('partialdone', this.trigger.bind(this, 'partialdone'));\n cc.on('done', this.trigger.bind(this, 'done'));\n }, this);\n\n};\n\nCaptionStream.prototype = new Stream();\nCaptionStream.prototype.push = function(event) {\n var sei, userData, newCaptionPackets;\n\n // only examine SEI NALs\n if (event.nalUnitType !== 'sei_rbsp') {\n return;\n }\n\n // parse the sei\n sei = cea708Parser.parseSei(event.escapedRBSP);\n\n // ignore everything but user_data_registered_itu_t_t35\n if (sei.payloadType !== cea708Parser.USER_DATA_REGISTERED_ITU_T_T35) {\n return;\n }\n\n // parse out the user data payload\n userData = cea708Parser.parseUserData(sei);\n\n // ignore unrecognized userData\n if (!userData) {\n return;\n }\n\n // Sometimes, the same segment # will be downloaded twice. To stop the\n // caption data from being processed twice, we track the latest dts we've\n // received and ignore everything with a dts before that. However, since\n // data for a specific dts can be split across packets on either side of\n // a segment boundary, we need to make sure we *don't* ignore the packets\n // from the *next* segment that have dts === this.latestDts_. By constantly\n // tracking the number of packets received with dts === this.latestDts_, we\n // know how many should be ignored once we start receiving duplicates.\n if (event.dts < this.latestDts_) {\n // We've started getting older data, so set the flag.\n this.ignoreNextEqualDts_ = true;\n return;\n } else if ((event.dts === this.latestDts_) && (this.ignoreNextEqualDts_)) {\n this.numSameDts_--;\n if (!this.numSameDts_) {\n // We've received the last duplicate packet, time to start processing again\n this.ignoreNextEqualDts_ = false;\n }\n return;\n }\n\n // parse out CC data packets and save them for later\n newCaptionPackets = cea708Parser.parseCaptionPackets(event.pts, userData);\n this.captionPackets_ = this.captionPackets_.concat(newCaptionPackets);\n if (this.latestDts_ !== event.dts) {\n this.numSameDts_ = 0;\n }\n this.numSameDts_++;\n this.latestDts_ = event.dts;\n};\n\nCaptionStream.prototype.flushCCStreams = function(flushType) {\n this.ccStreams_.forEach(function(cc) {\n return flushType === 'flush' ? cc.flush() : cc.partialFlush();\n }, this);\n};\n\nCaptionStream.prototype.flushStream = function(flushType) {\n // make sure we actually parsed captions before proceeding\n if (!this.captionPackets_.length) {\n this.flushCCStreams(flushType);\n return;\n }\n\n // In Chrome, the Array#sort function is not stable so add a\n // presortIndex that we can use to ensure we get a stable-sort\n this.captionPackets_.forEach(function(elem, idx) {\n elem.presortIndex = idx;\n });\n\n // sort caption byte-pairs based on their PTS values\n this.captionPackets_.sort(function(a, b) {\n if (a.pts === b.pts) {\n return a.presortIndex - b.presortIndex;\n }\n return a.pts - b.pts;\n });\n\n this.captionPackets_.forEach(function(packet) {\n if (packet.type < 2) {\n // Dispatch packet to the right Cea608Stream\n this.dispatchCea608Packet(packet);\n }\n // this is where an 'else' would go for a dispatching packets\n // to a theoretical Cea708Stream that handles SERVICEn data\n }, this);\n\n this.captionPackets_.length = 0;\n this.flushCCStreams(flushType);\n};\n\nCaptionStream.prototype.flush = function() {\n return this.flushStream('flush');\n};\n\n// Only called if handling partial data\nCaptionStream.prototype.partialFlush = function() {\n return this.flushStream('partialFlush');\n};\n\nCaptionStream.prototype.reset = function() {\n this.latestDts_ = null;\n this.ignoreNextEqualDts_ = false;\n this.numSameDts_ = 0;\n this.activeCea608Channel_ = [null, null];\n this.ccStreams_.forEach(function(ccStream) {\n ccStream.reset();\n });\n};\n\n// From the CEA-608 spec:\n/*\n * When XDS sub-packets are interleaved with other services, the end of each sub-packet shall be followed\n * by a control pair to change to a different service. When any of the control codes from 0x10 to 0x1F is\n * used to begin a control code pair, it indicates the return to captioning or Text data. The control code pair\n * and subsequent data should then be processed according to the FCC rules. It may be necessary for the\n * line 21 data encoder to automatically insert a control code pair (i.e. RCL, RU2, RU3, RU4, RDC, or RTD)\n * to switch to captioning or Text.\n*/\n// With that in mind, we ignore any data between an XDS control code and a\n// subsequent closed-captioning control code.\nCaptionStream.prototype.dispatchCea608Packet = function(packet) {\n // NOTE: packet.type is the CEA608 field\n if (this.setsTextOrXDSActive(packet)) {\n this.activeCea608Channel_[packet.type] = null;\n } else if (this.setsChannel1Active(packet)) {\n this.activeCea608Channel_[packet.type] = 0;\n } else if (this.setsChannel2Active(packet)) {\n this.activeCea608Channel_[packet.type] = 1;\n }\n if (this.activeCea608Channel_[packet.type] === null) {\n // If we haven't received anything to set the active channel, or the\n // packets are Text/XDS data, discard the data; we don't want jumbled\n // captions\n return;\n }\n this.ccStreams_[(packet.type << 1) + this.activeCea608Channel_[packet.type]].push(packet);\n};\n\nCaptionStream.prototype.setsChannel1Active = function(packet) {\n return ((packet.ccData & 0x7800) === 0x1000);\n};\nCaptionStream.prototype.setsChannel2Active = function(packet) {\n return ((packet.ccData & 0x7800) === 0x1800);\n};\nCaptionStream.prototype.setsTextOrXDSActive = function(packet) {\n return ((packet.ccData & 0x7100) === 0x0100) ||\n ((packet.ccData & 0x78fe) === 0x102a) ||\n ((packet.ccData & 0x78fe) === 0x182a);\n};\n\n// ----------------------\n// Session to Application\n// ----------------------\n\n// This hash maps non-ASCII, special, and extended character codes to their\n// proper Unicode equivalent. The first keys that are only a single byte\n// are the non-standard ASCII characters, which simply map the CEA608 byte\n// to the standard ASCII/Unicode. The two-byte keys that follow are the CEA608\n// character codes, but have their MSB bitmasked with 0x03 so that a lookup\n// can be performed regardless of the field and data channel on which the\n// character code was received.\nvar CHARACTER_TRANSLATION = {\n 0x2a: 0xe1, // á\n 0x5c: 0xe9, // é\n 0x5e: 0xed, // í\n 0x5f: 0xf3, // ó\n 0x60: 0xfa, // ú\n 0x7b: 0xe7, // ç\n 0x7c: 0xf7, // ÷\n 0x7d: 0xd1, // Ñ\n 0x7e: 0xf1, // ñ\n 0x7f: 0x2588, // █\n 0x0130: 0xae, // ®\n 0x0131: 0xb0, // °\n 0x0132: 0xbd, // ½\n 0x0133: 0xbf, // ¿\n 0x0134: 0x2122, // ™\n 0x0135: 0xa2, // ¢\n 0x0136: 0xa3, // £\n 0x0137: 0x266a, // ♪\n 0x0138: 0xe0, // à\n 0x0139: 0xa0, //\n 0x013a: 0xe8, // è\n 0x013b: 0xe2, // â\n 0x013c: 0xea, // ê\n 0x013d: 0xee, // î\n 0x013e: 0xf4, // ô\n 0x013f: 0xfb, // û\n 0x0220: 0xc1, // Á\n 0x0221: 0xc9, // É\n 0x0222: 0xd3, // Ó\n 0x0223: 0xda, // Ú\n 0x0224: 0xdc, // Ü\n 0x0225: 0xfc, // ü\n 0x0226: 0x2018, // ‘\n 0x0227: 0xa1, // ¡\n 0x0228: 0x2a, // *\n 0x0229: 0x27, // '\n 0x022a: 0x2014, // —\n 0x022b: 0xa9, // ©\n 0x022c: 0x2120, // ℠\n 0x022d: 0x2022, // •\n 0x022e: 0x201c, // “\n 0x022f: 0x201d, // ”\n 0x0230: 0xc0, // À\n 0x0231: 0xc2, // Â\n 0x0232: 0xc7, // Ç\n 0x0233: 0xc8, // È\n 0x0234: 0xca, // Ê\n 0x0235: 0xcb, // Ë\n 0x0236: 0xeb, // ë\n 0x0237: 0xce, // Î\n 0x0238: 0xcf, // Ï\n 0x0239: 0xef, // ï\n 0x023a: 0xd4, // Ô\n 0x023b: 0xd9, // Ù\n 0x023c: 0xf9, // ù\n 0x023d: 0xdb, // Û\n 0x023e: 0xab, // «\n 0x023f: 0xbb, // »\n 0x0320: 0xc3, // Ã\n 0x0321: 0xe3, // ã\n 0x0322: 0xcd, // Í\n 0x0323: 0xcc, // Ì\n 0x0324: 0xec, // ì\n 0x0325: 0xd2, // Ò\n 0x0326: 0xf2, // ò\n 0x0327: 0xd5, // Õ\n 0x0328: 0xf5, // õ\n 0x0329: 0x7b, // {\n 0x032a: 0x7d, // }\n 0x032b: 0x5c, // \\\n 0x032c: 0x5e, // ^\n 0x032d: 0x5f, // _\n 0x032e: 0x7c, // |\n 0x032f: 0x7e, // ~\n 0x0330: 0xc4, // Ä\n 0x0331: 0xe4, // ä\n 0x0332: 0xd6, // Ö\n 0x0333: 0xf6, // ö\n 0x0334: 0xdf, // ß\n 0x0335: 0xa5, // ¥\n 0x0336: 0xa4, // ¤\n 0x0337: 0x2502, // │\n 0x0338: 0xc5, // Å\n 0x0339: 0xe5, // å\n 0x033a: 0xd8, // Ø\n 0x033b: 0xf8, // ø\n 0x033c: 0x250c, // ┌\n 0x033d: 0x2510, // ┐\n 0x033e: 0x2514, // └\n 0x033f: 0x2518 // ┘\n};\n\nvar getCharFromCode = function(code) {\n if (code === null) {\n return '';\n }\n code = CHARACTER_TRANSLATION[code] || code;\n return String.fromCharCode(code);\n};\n\n// the index of the last row in a CEA-608 display buffer\nvar BOTTOM_ROW = 14;\n\n// This array is used for mapping PACs -> row #, since there's no way of\n// getting it through bit logic.\nvar ROWS = [0x1100, 0x1120, 0x1200, 0x1220, 0x1500, 0x1520, 0x1600, 0x1620,\n 0x1700, 0x1720, 0x1000, 0x1300, 0x1320, 0x1400, 0x1420];\n\n// CEA-608 captions are rendered onto a 34x15 matrix of character\n// cells. The \"bottom\" row is the last element in the outer array.\nvar createDisplayBuffer = function() {\n var result = [], i = BOTTOM_ROW + 1;\n while (i--) {\n result.push('');\n }\n return result;\n};\n\nvar Cea608Stream = function(field, dataChannel) {\n Cea608Stream.prototype.init.call(this);\n\n this.field_ = field || 0;\n this.dataChannel_ = dataChannel || 0;\n\n this.name_ = 'CC' + (((this.field_ << 1) | this.dataChannel_) + 1);\n\n this.setConstants();\n this.reset();\n\n this.push = function(packet) {\n var data, swap, char0, char1, text;\n // remove the parity bits\n data = packet.ccData & 0x7f7f;\n\n // ignore duplicate control codes; the spec demands they're sent twice\n if (data === this.lastControlCode_) {\n this.lastControlCode_ = null;\n return;\n }\n\n // Store control codes\n if ((data & 0xf000) === 0x1000) {\n this.lastControlCode_ = data;\n } else if (data !== this.PADDING_) {\n this.lastControlCode_ = null;\n }\n\n char0 = data >>> 8;\n char1 = data & 0xff;\n\n if (data === this.PADDING_) {\n return;\n\n } else if (data === this.RESUME_CAPTION_LOADING_) {\n this.mode_ = 'popOn';\n\n } else if (data === this.END_OF_CAPTION_) {\n // If an EOC is received while in paint-on mode, the displayed caption\n // text should be swapped to non-displayed memory as if it was a pop-on\n // caption. Because of that, we should explicitly switch back to pop-on\n // mode\n this.mode_ = 'popOn';\n this.clearFormatting(packet.pts);\n // if a caption was being displayed, it's gone now\n this.flushDisplayed(packet.pts);\n\n // flip memory\n swap = this.displayed_;\n this.displayed_ = this.nonDisplayed_;\n this.nonDisplayed_ = swap;\n\n // start measuring the time to display the caption\n this.startPts_ = packet.pts;\n\n } else if (data === this.ROLL_UP_2_ROWS_) {\n this.rollUpRows_ = 2;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_3_ROWS_) {\n this.rollUpRows_ = 3;\n this.setRollUp(packet.pts);\n } else if (data === this.ROLL_UP_4_ROWS_) {\n this.rollUpRows_ = 4;\n this.setRollUp(packet.pts);\n } else if (data === this.CARRIAGE_RETURN_) {\n this.clearFormatting(packet.pts);\n this.flushDisplayed(packet.pts);\n this.shiftRowsUp_();\n this.startPts_ = packet.pts;\n\n } else if (data === this.BACKSPACE_) {\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1);\n } else {\n this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);\n }\n } else if (data === this.ERASE_DISPLAYED_MEMORY_) {\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n } else if (data === this.ERASE_NON_DISPLAYED_MEMORY_) {\n this.nonDisplayed_ = createDisplayBuffer();\n\n } else if (data === this.RESUME_DIRECT_CAPTIONING_) {\n if (this.mode_ !== 'paintOn') {\n // NOTE: This should be removed when proper caption positioning is\n // implemented\n this.flushDisplayed(packet.pts);\n this.displayed_ = createDisplayBuffer();\n }\n this.mode_ = 'paintOn';\n this.startPts_ = packet.pts;\n\n // Append special characters to caption text\n } else if (this.isSpecialCharacter(char0, char1)) {\n // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++;\n\n // Append extended characters to caption text\n } else if (this.isExtCharacter(char0, char1)) {\n // Extended characters always follow their \"non-extended\" equivalents.\n // IE if a \"è\" is desired, you'll always receive \"eè\"; non-compliant\n // decoders are supposed to drop the \"è\", while compliant decoders\n // backspace the \"e\" and insert \"è\".\n\n // Delete the previous character\n if (this.mode_ === 'popOn') {\n this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1);\n } else {\n this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);\n }\n\n // Bitmask char0 so that we can apply character transformations\n // regardless of field and data channel.\n // Then byte-shift to the left and OR with char1 so we can pass the\n // entire character code to `getCharFromCode`.\n char0 = (char0 & 0x03) << 8;\n text = getCharFromCode(char0 | char1);\n this[this.mode_](packet.pts, text);\n this.column_++;\n\n // Process mid-row codes\n } else if (this.isMidRowCode(char0, char1)) {\n // Attributes are not additive, so clear all formatting\n this.clearFormatting(packet.pts);\n\n // According to the standard, mid-row codes\n // should be replaced with spaces, so add one now\n this[this.mode_](packet.pts, ' ');\n this.column_++;\n\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n\n if ((char1 & 0x1) === 0x1) {\n this.addFormatting(packet.pts, ['u']);\n }\n\n // Detect offset control codes and adjust cursor\n } else if (this.isOffsetControlCode(char0, char1)) {\n // Cursor position is set by indent PAC (see below) in 4-column\n // increments, with an additional offset code of 1-3 to reach any\n // of the 32 columns specified by CEA-608. So all we need to do\n // here is increment the column cursor by the given offset.\n this.column_ += (char1 & 0x03);\n\n // Detect PACs (Preamble Address Codes)\n } else if (this.isPAC(char0, char1)) {\n\n // There's no logic for PAC -> row mapping, so we have to just\n // find the row code in an array and use its index :(\n var row = ROWS.indexOf(data & 0x1f20);\n\n // Configure the caption window if we're in roll-up mode\n if (this.mode_ === 'rollUp') {\n // This implies that the base row is incorrectly set.\n // As per the recommendation in CEA-608(Base Row Implementation), defer to the number\n // of roll-up rows set.\n if (row - this.rollUpRows_ + 1 < 0) {\n row = this.rollUpRows_ - 1;\n }\n\n this.setRollUp(packet.pts, row);\n }\n\n if (row !== this.row_) {\n // formatting is only persistent for current row\n this.clearFormatting(packet.pts);\n this.row_ = row;\n }\n // All PACs can apply underline, so detect and apply\n // (All odd-numbered second bytes set underline)\n if ((char1 & 0x1) && (this.formatting_.indexOf('u') === -1)) {\n this.addFormatting(packet.pts, ['u']);\n }\n\n if ((data & 0x10) === 0x10) {\n // We've got an indent level code. Each successive even number\n // increments the column cursor by 4, so we can get the desired\n // column position by bit-shifting to the right (to get n/2)\n // and multiplying by 4.\n this.column_ = ((data & 0xe) >> 1) * 4;\n }\n\n if (this.isColorPAC(char1)) {\n // it's a color code, though we only support white, which\n // can be either normal or italicized. white italics can be\n // either 0x4e or 0x6e depending on the row, so we just\n // bitwise-and with 0xe to see if italics should be turned on\n if ((char1 & 0xe) === 0xe) {\n this.addFormatting(packet.pts, ['i']);\n }\n }\n\n // We have a normal character in char0, and possibly one in char1\n } else if (this.isNormalChar(char0)) {\n if (char1 === 0x00) {\n char1 = null;\n }\n text = getCharFromCode(char0);\n text += getCharFromCode(char1);\n this[this.mode_](packet.pts, text);\n this.column_ += text.length;\n\n } // finish data processing\n\n };\n};\nCea608Stream.prototype = new Stream();\n// Trigger a cue point that captures the current state of the\n// display buffer\nCea608Stream.prototype.flushDisplayed = function(pts) {\n var content = this.displayed_\n // remove spaces from the start and end of the string\n .map(function(row) {\n try {\n return row.trim();\n } catch (e) {\n // Ordinarily, this shouldn't happen. However, caption\n // parsing errors should not throw exceptions and\n // break playback.\n // eslint-disable-next-line no-console\n console.error('Skipping malformed caption.');\n return '';\n }\n })\n // combine all text rows to display in one cue\n .join('\\n')\n // and remove blank rows from the start and end, but not the middle\n .replace(/^\\n+|\\n+$/g, '');\n\n if (content.length) {\n this.trigger('data', {\n startPts: this.startPts_,\n endPts: pts,\n text: content,\n stream: this.name_\n });\n }\n};\n\n/**\n * Zero out the data, used for startup and on seek\n */\nCea608Stream.prototype.reset = function() {\n this.mode_ = 'popOn';\n // When in roll-up mode, the index of the last row that will\n // actually display captions. If a caption is shifted to a row\n // with a lower index than this, it is cleared from the display\n // buffer\n this.topRow_ = 0;\n this.startPts_ = 0;\n this.displayed_ = createDisplayBuffer();\n this.nonDisplayed_ = createDisplayBuffer();\n this.lastControlCode_ = null;\n\n // Track row and column for proper line-breaking and spacing\n this.column_ = 0;\n this.row_ = BOTTOM_ROW;\n this.rollUpRows_ = 2;\n\n // This variable holds currently-applied formatting\n this.formatting_ = [];\n};\n\n/**\n * Sets up control code and related constants for this instance\n */\nCea608Stream.prototype.setConstants = function() {\n // The following attributes have these uses:\n // ext_ : char0 for mid-row codes, and the base for extended\n // chars (ext_+0, ext_+1, and ext_+2 are char0s for\n // extended codes)\n // control_: char0 for control codes, except byte-shifted to the\n // left so that we can do this.control_ | CONTROL_CODE\n // offset_: char0 for tab offset codes\n //\n // It's also worth noting that control codes, and _only_ control codes,\n // differ between field 1 and field2. Field 2 control codes are always\n // their field 1 value plus 1. That's why there's the \"| field\" on the\n // control value.\n if (this.dataChannel_ === 0) {\n this.BASE_ = 0x10;\n this.EXT_ = 0x11;\n this.CONTROL_ = (0x14 | this.field_) << 8;\n this.OFFSET_ = 0x17;\n } else if (this.dataChannel_ === 1) {\n this.BASE_ = 0x18;\n this.EXT_ = 0x19;\n this.CONTROL_ = (0x1c | this.field_) << 8;\n this.OFFSET_ = 0x1f;\n }\n\n // Constants for the LSByte command codes recognized by Cea608Stream. This\n // list is not exhaustive. For a more comprehensive listing and semantics see\n // http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf\n // Padding\n this.PADDING_ = 0x0000;\n // Pop-on Mode\n this.RESUME_CAPTION_LOADING_ = this.CONTROL_ | 0x20;\n this.END_OF_CAPTION_ = this.CONTROL_ | 0x2f;\n // Roll-up Mode\n this.ROLL_UP_2_ROWS_ = this.CONTROL_ | 0x25;\n this.ROLL_UP_3_ROWS_ = this.CONTROL_ | 0x26;\n this.ROLL_UP_4_ROWS_ = this.CONTROL_ | 0x27;\n this.CARRIAGE_RETURN_ = this.CONTROL_ | 0x2d;\n // paint-on mode\n this.RESUME_DIRECT_CAPTIONING_ = this.CONTROL_ | 0x29;\n // Erasure\n this.BACKSPACE_ = this.CONTROL_ | 0x21;\n this.ERASE_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2c;\n this.ERASE_NON_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2e;\n};\n\n/**\n * Detects if the 2-byte packet data is a special character\n *\n * Special characters have a second byte in the range 0x30 to 0x3f,\n * with the first byte being 0x11 (for data channel 1) or 0x19 (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an special character\n */\nCea608Stream.prototype.isSpecialCharacter = function(char0, char1) {\n return (char0 === this.EXT_ && char1 >= 0x30 && char1 <= 0x3f);\n};\n\n/**\n * Detects if the 2-byte packet data is an extended character\n *\n * Extended characters have a second byte in the range 0x20 to 0x3f,\n * with the first byte being 0x12 or 0x13 (for data channel 1) or\n * 0x1a or 0x1b (for data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an extended character\n */\nCea608Stream.prototype.isExtCharacter = function(char0, char1) {\n return ((char0 === (this.EXT_ + 1) || char0 === (this.EXT_ + 2)) &&\n (char1 >= 0x20 && char1 <= 0x3f));\n};\n\n/**\n * Detects if the 2-byte packet is a mid-row code\n *\n * Mid-row codes have a second byte in the range 0x20 to 0x2f, with\n * the first byte being 0x11 (for data channel 1) or 0x19 (for data\n * channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a mid-row code\n */\nCea608Stream.prototype.isMidRowCode = function(char0, char1) {\n return (char0 === this.EXT_ && (char1 >= 0x20 && char1 <= 0x2f));\n};\n\n/**\n * Detects if the 2-byte packet is an offset control code\n *\n * Offset control codes have a second byte in the range 0x21 to 0x23,\n * with the first byte being 0x17 (for data channel 1) or 0x1f (for\n * data channel 2).\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are an offset control code\n */\nCea608Stream.prototype.isOffsetControlCode = function(char0, char1) {\n return (char0 === this.OFFSET_ && (char1 >= 0x21 && char1 <= 0x23));\n};\n\n/**\n * Detects if the 2-byte packet is a Preamble Address Code\n *\n * PACs have a first byte in the range 0x10 to 0x17 (for data channel 1)\n * or 0x18 to 0x1f (for data channel 2), with the second byte in the\n * range 0x40 to 0x7f.\n *\n * @param {Integer} char0 The first byte\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the 2 bytes are a PAC\n */\nCea608Stream.prototype.isPAC = function(char0, char1) {\n return (char0 >= this.BASE_ && char0 < (this.BASE_ + 8) &&\n (char1 >= 0x40 && char1 <= 0x7f));\n};\n\n/**\n * Detects if a packet's second byte is in the range of a PAC color code\n *\n * PAC color codes have the second byte be in the range 0x40 to 0x4f, or\n * 0x60 to 0x6f.\n *\n * @param {Integer} char1 The second byte\n * @return {Boolean} Whether the byte is a color PAC\n */\nCea608Stream.prototype.isColorPAC = function(char1) {\n return ((char1 >= 0x40 && char1 <= 0x4f) || (char1 >= 0x60 && char1 <= 0x7f));\n};\n\n/**\n * Detects if a single byte is in the range of a normal character\n *\n * Normal text bytes are in the range 0x20 to 0x7f.\n *\n * @param {Integer} char The byte\n * @return {Boolean} Whether the byte is a normal character\n */\nCea608Stream.prototype.isNormalChar = function(char) {\n return (char >= 0x20 && char <= 0x7f);\n};\n\n/**\n * Configures roll-up\n *\n * @param {Integer} pts Current PTS\n * @param {Integer} newBaseRow Used by PACs to slide the current window to\n * a new position\n */\nCea608Stream.prototype.setRollUp = function(pts, newBaseRow) {\n // Reset the base row to the bottom row when switching modes\n if (this.mode_ !== 'rollUp') {\n this.row_ = BOTTOM_ROW;\n this.mode_ = 'rollUp';\n // Spec says to wipe memories when switching to roll-up\n this.flushDisplayed(pts);\n this.nonDisplayed_ = createDisplayBuffer();\n this.displayed_ = createDisplayBuffer();\n }\n\n if (newBaseRow !== undefined && newBaseRow !== this.row_) {\n // move currently displayed captions (up or down) to the new base row\n for (var i = 0; i < this.rollUpRows_; i++) {\n this.displayed_[newBaseRow - i] = this.displayed_[this.row_ - i];\n this.displayed_[this.row_ - i] = '';\n }\n }\n\n if (newBaseRow === undefined) {\n newBaseRow = this.row_;\n }\n\n this.topRow_ = newBaseRow - this.rollUpRows_ + 1;\n};\n\n// Adds the opening HTML tag for the passed character to the caption text,\n// and keeps track of it for later closing\nCea608Stream.prototype.addFormatting = function(pts, format) {\n this.formatting_ = this.formatting_.concat(format);\n var text = format.reduce(function(text, format) {\n return text + '<' + format + '>';\n }, '');\n this[this.mode_](pts, text);\n};\n\n// Adds HTML closing tags for current formatting to caption text and\n// clears remembered formatting\nCea608Stream.prototype.clearFormatting = function(pts) {\n if (!this.formatting_.length) {\n return;\n }\n var text = this.formatting_.reverse().reduce(function(text, format) {\n return text + '' + format + '>';\n }, '');\n this.formatting_ = [];\n this[this.mode_](pts, text);\n};\n\n// Mode Implementations\nCea608Stream.prototype.popOn = function(pts, text) {\n var baseRow = this.nonDisplayed_[this.row_];\n\n // buffer characters\n baseRow += text;\n this.nonDisplayed_[this.row_] = baseRow;\n};\n\nCea608Stream.prototype.rollUp = function(pts, text) {\n var baseRow = this.displayed_[this.row_];\n\n baseRow += text;\n this.displayed_[this.row_] = baseRow;\n\n};\n\nCea608Stream.prototype.shiftRowsUp_ = function() {\n var i;\n // clear out inactive rows\n for (i = 0; i < this.topRow_; i++) {\n this.displayed_[i] = '';\n }\n for (i = this.row_ + 1; i < BOTTOM_ROW + 1; i++) {\n this.displayed_[i] = '';\n }\n // shift displayed rows up\n for (i = this.topRow_; i < this.row_; i++) {\n this.displayed_[i] = this.displayed_[i + 1];\n }\n // clear out the bottom row\n this.displayed_[this.row_] = '';\n};\n\nCea608Stream.prototype.paintOn = function(pts, text) {\n var baseRow = this.displayed_[this.row_];\n\n baseRow += text;\n this.displayed_[this.row_] = baseRow;\n};\n\n// exports\nmodule.exports = {\n CaptionStream: CaptionStream,\n Cea608Stream: Cea608Stream\n};\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar URLToolkit = _interopDefault(require('url-toolkit'));\nvar window = _interopDefault(require('global/window'));\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if the base URL is relative then combine with the current location\n\n\n if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nmodule.exports = resolveUrl;\n","/*\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n */\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tdest[p] = src[p];\n\t}\n}\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(Object.create){\n\t\tvar ppt = Object.create(Super.prototype)\n\t\tpt.__proto__ = ppt;\n\t}\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknow Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\nvar htmlns = 'http://www.w3.org/1999/xhtml' ;\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0, \n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long \n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index. \n\t */\n\titem: function(index) {\n\t\treturn this[index] || null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t\t\n\t\t\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\t\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n/**\n * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490\n */\nfunction DOMImplementation(/* Object */ features) {\n\tthis._features = {};\n\tif (features) {\n\t\tfor (var feature in features) {\n\t\t\t this._features = features[feature];\n\t\t}\n\t}\n};\n\nDOMImplementation.prototype = {\n\thasFeature: function(/* string */ feature, /* string */ version) {\n\t\tvar versions = this._features[feature.toLowerCase()];\n\t\tif (versions && (!version || version in versions)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype;\n\t\tif(doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif(qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI,qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId;\n\t\tnode.systemId = systemId;\n\t\t// Introduced in DOM Level 2:\n\t\t//readonly attribute DOMString internalSubset;\n\t\t\n\t\t//TODO:..\n\t\t// readonly attribute NamedNodeMap entities;\n\t\t// readonly attribute NamedNodeMap notations;\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises \n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises \n\t\tthis.insertBefore(newChild,oldChild);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n \t\t\t\tif(map[n] == namespaceURI){\n \t\t\t\t\treturn n;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(prefix in map){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n ''+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n}\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns == 'http://www.w3.org/2000/xmlns/'){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns == 'http://www.w3.org/2000/xmlns/'){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\nfunction _onUpdateChild(doc,el,newChild){\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif(newChild){\n\t\t\tcs[cs.length++] = newChild;\n\t\t}else{\n\t\t\t//console.log(1)\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile(child){\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild =child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t}\n\t}\n}\n\n/**\n * attributes;\n * children;\n * \n * writeable properties:\n * nodeValue,Attr:value,CharacterData:data\n * prefix\n */\nfunction _removeChild(parentNode,child){\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif(previous){\n\t\tprevious.nextSibling = next;\n\t}else{\n\t\tparentNode.firstChild = next\n\t}\n\tif(next){\n\t\tnext.previousSibling = previous;\n\t}else{\n\t\tparentNode.lastChild = previous;\n\t}\n\t_onUpdateChild(parentNode.ownerDocument,parentNode);\n\treturn child;\n}\n/**\n * preformance key(refChild == null)\n */\nfunction _insertBefore(parentNode,newChild,nextChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tcp.removeChild(newChild);//remove and update\n\t}\n\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = newChild.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn newChild;\n\t\t}\n\t\tvar newLast = newChild.lastChild;\n\t}else{\n\t\tnewFirst = newLast = newChild;\n\t}\n\tvar pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = nextChild;\n\t\n\t\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparentNode.firstChild = newFirst;\n\t}\n\tif(nextChild == null){\n\t\tparentNode.lastChild = newLast;\n\t}else{\n\t\tnextChild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parentNode;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parentNode.ownerDocument||parentNode,parentNode);\n\t//console.log(parentNode.lastChild.nextSibling == null)\n\tif (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnewChild.firstChild = newChild.lastChild = null;\n\t}\n\treturn newChild;\n}\nfunction _appendSingleChild(parentNode,newChild){\n\tvar cp = newChild.parentNode;\n\tif(cp){\n\t\tvar pre = parentNode.lastChild;\n\t\tcp.removeChild(newChild);//remove and update\n\t\tvar pre = parentNode.lastChild;\n\t}\n\tvar pre = parentNode.lastChild;\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = pre;\n\tnewChild.nextSibling = null;\n\tif(pre){\n\t\tpre.nextSibling = newChild;\n\t}else{\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument,parentNode,newChild);\n\treturn newChild;\n\t//console.log(\"__aa\",parentNode.lastChild.nextSibling == null)\n}\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\t\n\tinsertBefore : function(newChild, refChild){//raises \n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\tif(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t\t\n\t\treturn _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\t\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.target = target;\n\t\tnode.nodeValue= node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\t\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\t\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\t\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t\t\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\t\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9?this.documentElement:this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\t\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\nfunction needNamespaceDefine(node,isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix||'';\n\tvar uri = node.namespaceURI;\n\tif (!prefix && !uri){\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === \"http://www.w3.org/XML/1998/namespace\" \n\t\t|| uri == 'http://www.w3.org/2000/xmlns/'){\n\t\treturn false;\n\t}\n\t\n\tvar i = visibleNamespaces.length \n\t//console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces)\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\t//console.log(node.nodeType,node.tagName,ns.prefix,prefix)\n\t\tif (ns.prefix == prefix){\n\t\t\treturn ns.namespace != uri;\n\t\t}\n\t}\n\t//console.log(isHTML,uri,prefix=='')\n\t//if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){\n\t//\treturn false;\n\t//}\n\t//node.flag = '11111'\n\t//console.error(3,true,node.flag,node.prefix,node.namespaceURI)\n\treturn true;\n}\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tif (!visibleNamespaces) visibleNamespaces = [];\n\t\tvar startVisibleNamespaces = visibleNamespaces.length;\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\t\t\n\t\tisHTML = (htmlns === node.namespaceURI) ||isHTML \n\t\tbuf.push('<',nodeName);\n\t\t\n\t\t\n\t\t\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('',nodeName,'>');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn buf.push(' ',node.name,'=\"',node.value.replace(/[<&\"]/g,_xmlEncoder),'\"');\n\tcase TEXT_NODE:\n\t\treturn buf.push(node.data.replace(/[<&]/g,_xmlEncoder));\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM \"',sysid,'\">');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\",node.target,\" \",node.data,\"?>\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i>> 0;\n};\n\nvar toHexString = function(value) {\n return ('00' + value.toString(16)).slice(-2);\n};\n\nmodule.exports = {\n toUnsigned: toUnsigned,\n toHexString: toHexString\n};\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */\n'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar window = _interopDefault(require('global/window'));\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}\n\nmodule.exports = decodeB64ToUint8Array;\n","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('video',{ref:\"videoPlayer\",staticClass:\"video-js\",attrs:{\"data-setup\":\"{\\\"liveui\\\": true}\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*! @name m3u8-parser @version 4.4.0 @license Apache-2.0 */\nimport window from 'global/window';\n\nfunction _extends() {\n _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 return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implementation that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream =\n/*#__PURE__*/\nfunction () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n var i;\n var length;\n var args;\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n length = callbacks.length;\n\n for (i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n args = Array.prototype.slice.call(arguments, 1);\n length = callbacks.length;\n\n for (i = 0; i < length; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream =\n/*#__PURE__*/\nfunction (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream =\n/*#__PURE__*/\nfunction (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'totalduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'byterange'\n };\n\n if (match[1]) {\n event.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n event.offset = parseInt(match[2], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n var _attributes$BYTERANGE = attributes.BYTERANGE.split('@'),\n length = _attributes$BYTERANGE[0],\n offset = _attributes$BYTERANGE[1];\n\n event.byterange = {};\n\n if (length) {\n event.byterange.length = parseInt(length, 10);\n }\n\n if (offset) {\n event.byterange.offset = parseInt(offset, 10);\n }\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nfunction decodeB64ToUint8Array(b64Text) {\n var decodedString = window.atob(b64Text || '');\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}\n\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\nvar Parser =\n/*#__PURE__*/\nfunction (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // update the manifest with the m3u8 entry from the parse stream\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n this.trigger('info', {\n message: 'defaulting offset to zero'\n });\n entry.offset = 0;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = {\n 'com.widevine.alpha': {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n }\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n },\n totalduration: function totalduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid total duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.totalDuration = entry.duration;\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","/*! @name mpd-parser @version 0.10.0 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/dist/resolve-url';\nimport window from 'global/window';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/dist/decode-b64-to-uint8-array';\nimport { DOMParser } from 'xmldom';\n\nvar version = \"0.10.0\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-');\n var startRange = parseInt(ranges[0], 10);\n var endRange = parseInt(ranges[1], 10); // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n segment.byterange = {\n length: endRange - startRange + 1,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange = byterange.offset + byterange.length - 1;\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration;\n return {\n start: 0,\n end: Math.ceil(sourceDuration / (duration / timescale))\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number, index) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodIndex = attributes.periodIndex,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodIndex,\n time: index * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var _attributes$type = attributes.type,\n type = _attributes$type === void 0 ? 'static' : _attributes$type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // final segment may be less than full segment duration\n\n segments[index].duration = sourceDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration / timescale;\n segment.timeline = 0;\n } // This is used for mediaSequence\n\n\n segment.number = 0;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSegmentsToPlaylist = function addSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial master manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = []; // firstOffset is the offset from the end of the sidx box\n\n var startIndex = sidxEnd + sidx.firstOffset;\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = startIndex + size - 1;\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n // this is used in parseByDuration\n periodIndex: timeline,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n startIndex += size;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || ''); // Periods after first\n\n if (acc[name]) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments); // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n } else {\n // first Period\n acc[name] = playlist;\n }\n\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments, 'discontinuity');\n return playlist;\n });\n};\n\nvar addSegmentInfoFromSidx = function addSegmentInfoFromSidx(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n var playlist = playlists[i];\n\n if (!playlist.sidx) {\n continue;\n }\n\n var sidxKey = playlist.sidx.uri + '-' + byteRangeToString(playlist.sidx.byterange);\n var sidxMatch = sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (playlist.sidx && sidxMatch) {\n addSegmentsToPlaylist(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n }\n\n return playlists;\n};\n\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _attributes2;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n return {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = 'main';\n\n if (language) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n } // skip if we already have the highest quality audio for a language\n\n\n if (a[label] && a[label].playlists[0].attributes.BANDWIDTH > playlist.attributes.bandwidth) {\n return a;\n }\n\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: addSegmentInfoFromSidx([formatAudioPlaylist(playlist)], sidxMapping),\n uri: ''\n };\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text'; // skip if we already have subtitles\n\n if (a[label]) {\n return a;\n }\n\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: addSegmentInfoFromSidx([formatVttPlaylist(playlist)], sidxMapping),\n uri: ''\n };\n return a;\n }, {});\n};\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes3;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx;\n var playlist = {\n attributes: (_attributes3 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes3['PROGRAM-ID'] = 1, _attributes3),\n uri: '',\n endList: (attributes.type || 'static') === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\nvar toM3u8 = function toM3u8(dashPlaylists, sidxMapping) {\n var _mediaGroups;\n\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all master attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n _dashPlaylists$0$attr2 = _dashPlaylists$0$attr.type,\n type = _dashPlaylists$0$attr2 === void 0 ? 'static' : _dashPlaylists$0$attr2,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n _dashPlaylists$0$attr3 = _dashPlaylists$0$attr.minimumUpdatePeriod,\n minimumUpdatePeriod = _dashPlaylists$0$attr3 === void 0 ? 0 : _dashPlaylists$0$attr3;\n\n var videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.contentType === 'video';\n };\n\n var audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.contentType === 'audio';\n };\n\n var vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n };\n\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = dashPlaylists.filter(vttOnly);\n var master = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSegmentInfoFromSidx(videoPlaylists, sidxMapping),\n minimumUpdatePeriod: minimumUpdatePeriod * 1000\n };\n\n if (type === 'dynamic') {\n master.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n if (audioPlaylists.length) {\n master.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists, sidxMapping);\n }\n\n if (vttPlaylists.length) {\n master.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists, sidxMapping);\n }\n\n return master;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var _attributes$type = attributes.type,\n type = _attributes$type === void 0 ? 'static' : _attributes$type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodIndex;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodIndex\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues);\n return {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number\n };\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index];\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.timeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The aprsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} timeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n timeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node);\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n var psshBuffer = pssh && decodeB64ToUint8Array(pssh);\n acc[keySystem].pssh = psshBuffer;\n }\n }\n\n return acc;\n }, {});\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Maps an Period node to a list of Representation inforamtion objects for all\n * AdaptationSet nodes contained within the Period\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {Node} period\n * Period node from the mpd\n * @param {number} periodIndex\n * Index of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period, 'BaseURL'));\n var periodAtt = parseAttributes(period);\n var parsedPeriodId = parseInt(periodAtt.id, 10); // fallback to mapping index if Period@id is not a number\n\n var periodIndex = window.isNaN(parsedPeriodId) ? index : parsedPeriodId;\n var periodAttributes = merge(mpdAttributes, {\n periodIndex: periodIndex\n });\n var adaptationSets = findChildren(period, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periods = findChildren(mpd, 'Period');\n\n if (!periods.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL'));\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n return flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)));\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml = parser.parseFromString(manifestString, 'application/xml');\n var mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n return toM3u8(toPlaylists(inheritAttributes(stringToMpdXml(manifestString), options)), options.sidxMapping);\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","/*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */\n/*\n * pkcs7.pad\n * https://github.com/brightcove/pkcs7\n *\n * Copyright (c) 2014 Brightcove\n * Licensed under the apache2 license.\n */\nvar PADDING;\n/**\n * Returns a new Uint8Array that is padded with PKCS#7 padding.\n *\n * @param plaintext {Uint8Array} the input bytes before encryption\n * @return {Uint8Array} the padded bytes\n * @see http://tools.ietf.org/html/rfc5652\n */\n\nfunction pad(plaintext) {\n var padding = PADDING[plaintext.byteLength % 16 || 0];\n var result = new Uint8Array(plaintext.byteLength + padding.length);\n result.set(plaintext);\n result.set(padding, plaintext.byteLength);\n return result;\n} // pre-define the padding values\n\nPADDING = [[16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16], [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15], [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14], [13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13], [12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12], [11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11], [10, 10, 10, 10, 10, 10, 10, 10, 10, 10], [9, 9, 9, 9, 9, 9, 9, 9, 9], [8, 8, 8, 8, 8, 8, 8, 8], [7, 7, 7, 7, 7, 7, 7], [6, 6, 6, 6, 6, 6], [5, 5, 5, 5, 5], [4, 4, 4, 4], [3, 3, 3], [2, 2], [1]];\n\n/**\n * Returns the subarray of a Uint8Array without PKCS#7 padding.\n *\n * @param padded {Uint8Array} unencrypted bytes that have been padded\n * @return {Uint8Array} the unpadded bytes\n * @see http://tools.ietf.org/html/rfc5652\n */\nfunction unpad(padded) {\n return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]);\n}\n\nvar version = \"1.0.4\";\n\nexport { version as VERSION, pad, unpad };\n","import { unpad } from 'pkcs7';\n\nvar classCallCheck = function (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\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * @file aes.js\n *\n * This file contains an adaptation of the AES decryption algorithm\n * from the Standford Javascript Cryptography Library. That work is\n * covered by the following copyright and permissions notice:\n *\n * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\n\n/**\n * Expand the S-box tables.\n *\n * @private\n */\nvar precompute = function precompute() {\n var tables = [[[], [], [], [], []], [[], [], [], [], []]];\n var encTable = tables[0];\n var decTable = tables[1];\n var sbox = encTable[4];\n var sboxInv = decTable[4];\n var i = void 0;\n var x = void 0;\n var xInv = void 0;\n var d = [];\n var th = [];\n var x2 = void 0;\n var x4 = void 0;\n var x8 = void 0;\n var s = void 0;\n var tEnc = void 0;\n var tDec = void 0;\n\n // Compute double and third tables\n for (i = 0; i < 256; i++) {\n th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;\n }\n\n for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n // Compute sbox\n s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n s = s >> 8 ^ s & 255 ^ 99;\n sbox[x] = s;\n sboxInv[s] = x;\n\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n tEnc = d[s] * 0x101 ^ s * 0x1010100;\n\n for (i = 0; i < 4; i++) {\n encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;\n }\n }\n\n // Compactify. Considerable speedup on Firefox.\n for (i = 0; i < 5; i++) {\n encTable[i] = encTable[i].slice(0);\n decTable[i] = decTable[i].slice(0);\n }\n return tables;\n};\nvar aesTables = null;\n\n/**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @class AES\n * @param key {Array} The key as an array of 4, 6 or 8 words.\n */\n\nvar AES = function () {\n function AES(key) {\n classCallCheck(this, AES);\n\n /**\n * The expanded S-box and inverse S-box tables. These will be computed\n * on the client so that we don't have to send them down the wire.\n *\n * There are two tables, _tables[0] is for encryption and\n * _tables[1] is for decryption.\n *\n * The first 4 sub-tables are the expanded S-box with MixColumns. The\n * last (_tables[01][4]) is the S-box itself.\n *\n * @private\n */\n // if we have yet to precompute the S-box tables\n // do so now\n if (!aesTables) {\n aesTables = precompute();\n }\n // then make a copy of that object for use\n this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]];\n var i = void 0;\n var j = void 0;\n var tmp = void 0;\n var encKey = void 0;\n var decKey = void 0;\n var sbox = this._tables[0][4];\n var decTable = this._tables[1];\n var keyLen = key.length;\n var rcon = 1;\n\n if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n throw new Error('Invalid aes key size');\n }\n\n encKey = key.slice(0);\n decKey = [];\n this._key = [encKey, decKey];\n\n // schedule encryption keys\n for (i = keyLen; i < 4 * keyLen + 28; i++) {\n tmp = encKey[i - 1];\n\n // apply sbox\n if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) {\n tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255];\n\n // shift rows and add rcon\n if (i % keyLen === 0) {\n tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;\n rcon = rcon << 1 ^ (rcon >> 7) * 283;\n }\n }\n\n encKey[i] = encKey[i - keyLen] ^ tmp;\n }\n\n // schedule decryption keys\n for (j = 0; i; j++, i--) {\n tmp = encKey[j & 3 ? i : i - 4];\n if (i <= 4 || j < 4) {\n decKey[j] = tmp;\n } else {\n decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]];\n }\n }\n }\n\n /**\n * Decrypt 16 bytes, specified as four 32-bit words.\n *\n * @param {Number} encrypted0 the first word to decrypt\n * @param {Number} encrypted1 the second word to decrypt\n * @param {Number} encrypted2 the third word to decrypt\n * @param {Number} encrypted3 the fourth word to decrypt\n * @param {Int32Array} out the array to write the decrypted words\n * into\n * @param {Number} offset the offset into the output array to start\n * writing results\n * @return {Array} The plaintext.\n */\n\n\n AES.prototype.decrypt = function decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) {\n var key = this._key[1];\n // state variables a,b,c,d are loaded with pre-whitened data\n var a = encrypted0 ^ key[0];\n var b = encrypted3 ^ key[1];\n var c = encrypted2 ^ key[2];\n var d = encrypted1 ^ key[3];\n var a2 = void 0;\n var b2 = void 0;\n var c2 = void 0;\n\n // key.length === 2 ?\n var nInnerRounds = key.length / 4 - 2;\n var i = void 0;\n var kIndex = 4;\n var table = this._tables[1];\n\n // load up the tables\n var table0 = table[0];\n var table1 = table[1];\n var table2 = table[2];\n var table3 = table[3];\n var sbox = table[4];\n\n // Inner rounds. Cribbed from OpenSSL.\n for (i = 0; i < nInnerRounds; i++) {\n a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex];\n b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1];\n c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2];\n d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3];\n kIndex += 4;\n a = a2;b = b2;c = c2;\n }\n\n // Last round.\n for (i = 0; i < 4; i++) {\n out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++];\n a2 = a;a = b;b = c;c = d;d = a2;\n }\n };\n\n return AES;\n}();\n\n/**\n * @file stream.js\n */\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = function () {\n function Stream() {\n classCallCheck(this, Stream);\n\n this.listeners = {};\n }\n\n /**\n * Add a listener for a specified event type.\n *\n * @param {String} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n Stream.prototype.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n this.listeners[type].push(listener);\n };\n\n /**\n * Remove a listener for a specified event type.\n *\n * @param {String} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {Boolean} if we could turn it off or not\n */\n\n\n Stream.prototype.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener);\n\n this.listeners[type].splice(index, 1);\n return index > -1;\n };\n\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {String} type the event name\n */\n\n\n Stream.prototype.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n }\n\n // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n };\n\n /**\n * Destroys the stream and cleans up.\n */\n\n\n Stream.prototype.dispose = function dispose() {\n this.listeners = {};\n };\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n\n\n Stream.prototype.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\n/**\n * @file async-stream.js\n */\n/**\n * A wrapper around the Stream class to use setTiemout\n * and run stream \"jobs\" Asynchronously\n *\n * @class AsyncStream\n * @extends Stream\n */\n\nvar AsyncStream = function (_Stream) {\n inherits(AsyncStream, _Stream);\n\n function AsyncStream() {\n classCallCheck(this, AsyncStream);\n\n var _this = possibleConstructorReturn(this, _Stream.call(this, Stream));\n\n _this.jobs = [];\n _this.delay = 1;\n _this.timeout_ = null;\n return _this;\n }\n\n /**\n * process an async job\n *\n * @private\n */\n\n\n AsyncStream.prototype.processJob_ = function processJob_() {\n this.jobs.shift()();\n if (this.jobs.length) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n } else {\n this.timeout_ = null;\n }\n };\n\n /**\n * push a job into the stream\n *\n * @param {Function} job the job to push into the stream\n */\n\n\n AsyncStream.prototype.push = function push(job) {\n this.jobs.push(job);\n if (!this.timeout_) {\n this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay);\n }\n };\n\n return AsyncStream;\n}(Stream);\n\n/**\n * @file decrypter.js\n *\n * An asynchronous implementation of AES-128 CBC decryption with\n * PKCS#7 padding.\n */\n\n/**\n * Convert network-order (big-endian) bytes into their little-endian\n * representation.\n */\nvar ntoh = function ntoh(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n};\n\n/**\n * Decrypt bytes using AES-128 with CBC and PKCS#7 padding.\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * use for the first round of CBC.\n * @return {Uint8Array} the decrypted bytes\n *\n * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard\n * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29\n * @see https://tools.ietf.org/html/rfc2315\n */\nvar decrypt = function decrypt(encrypted, key, initVector) {\n // word-level access to the encrypted bytes\n var encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2);\n\n var decipher = new AES(Array.prototype.slice.call(key));\n\n // byte and word-level access for the decrypted output\n var decrypted = new Uint8Array(encrypted.byteLength);\n var decrypted32 = new Int32Array(decrypted.buffer);\n\n // temporary variables for working with the IV, encrypted, and\n // decrypted data\n var init0 = void 0;\n var init1 = void 0;\n var init2 = void 0;\n var init3 = void 0;\n var encrypted0 = void 0;\n var encrypted1 = void 0;\n var encrypted2 = void 0;\n var encrypted3 = void 0;\n\n // iteration variable\n var wordIx = void 0;\n\n // pull out the words of the IV to ensure we don't modify the\n // passed-in reference and easier access\n init0 = initVector[0];\n init1 = initVector[1];\n init2 = initVector[2];\n init3 = initVector[3];\n\n // decrypt four word sequences, applying cipher-block chaining (CBC)\n // to each decrypted block\n for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) {\n // convert big-endian (network order) words into little-endian\n // (javascript order)\n encrypted0 = ntoh(encrypted32[wordIx]);\n encrypted1 = ntoh(encrypted32[wordIx + 1]);\n encrypted2 = ntoh(encrypted32[wordIx + 2]);\n encrypted3 = ntoh(encrypted32[wordIx + 3]);\n\n // decrypt the block\n decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx);\n\n // XOR with the IV, and restore network byte-order to obtain the\n // plaintext\n decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0);\n decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1);\n decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2);\n decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3);\n\n // setup the IV for the next round\n init0 = encrypted0;\n init1 = encrypted1;\n init2 = encrypted2;\n init3 = encrypted3;\n }\n\n return decrypted;\n};\n\n/**\n * The `Decrypter` class that manages decryption of AES\n * data through `AsyncStream` objects and the `decrypt`\n * function\n *\n * @param {Uint8Array} encrypted the encrypted bytes\n * @param {Uint32Array} key the bytes of the decryption key\n * @param {Uint32Array} initVector the initialization vector (IV) to\n * @param {Function} done the function to run when done\n * @class Decrypter\n */\n\nvar Decrypter = function () {\n function Decrypter(encrypted, key, initVector, done) {\n classCallCheck(this, Decrypter);\n\n var step = Decrypter.STEP;\n var encrypted32 = new Int32Array(encrypted.buffer);\n var decrypted = new Uint8Array(encrypted.byteLength);\n var i = 0;\n\n this.asyncStream_ = new AsyncStream();\n\n // split up the encryption job and do the individual chunks asynchronously\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n for (i = step; i < encrypted32.length; i += step) {\n initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]);\n this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted));\n }\n // invoke the done() callback when everything is finished\n this.asyncStream_.push(function () {\n // remove pkcs#7 padding from the decrypted bytes\n done(null, unpad(decrypted));\n });\n }\n\n /**\n * a getter for step the maximum number of bytes to process at one time\n *\n * @return {Number} the value of step 32000\n */\n\n\n /**\n * @private\n */\n Decrypter.prototype.decryptChunk_ = function decryptChunk_(encrypted, key, initVector, decrypted) {\n return function () {\n var bytes = decrypt(encrypted, key, initVector);\n\n decrypted.set(bytes, encrypted.byteOffset);\n };\n };\n\n createClass(Decrypter, null, [{\n key: 'STEP',\n get: function get$$1() {\n // 4 * 8000;\n return 32000;\n }\n }]);\n return Decrypter;\n}();\n\n/**\n * @file index.js\n *\n * Index module to easily import the primary components of AES-128\n * decryption. Like this:\n *\n * ```js\n * import {Decrypter, decrypt, AsyncStream} from 'aes-decrypter';\n * ```\n */\n\nexport { decrypt, Decrypter, AsyncStream };\n","/**\n * @license\n * Video.js 7.8.4 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window$1 from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport '@babel/runtime/helpers/possibleConstructorReturn';\nimport '@babel/runtime/helpers/getPrototypeOf';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport keycode from 'keycode';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport URLToolkit from 'url-toolkit';\nimport { Parser } from 'm3u8-parser';\nimport { parse, parseUTCTiming } from 'mpd-parser';\nimport mp4Inspector from 'mux.js/lib/tools/mp4-inspector';\nimport mp4probe from 'mux.js/lib/mp4/probe';\nimport CaptionParser from 'mux.js/lib/mp4/caption-parser';\nimport tsInspector from 'mux.js/lib/tools/ts-inspector.js';\nimport { Decrypter, AsyncStream, decrypt } from 'aes-decrypter';\n\nvar version = \"7.8.4\";\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window$1.console) {\n return;\n } // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n\n\n var fn = window$1.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window$1.console.info || window$1.console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n };\n};\n\nfunction createLogger(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log = createLogger('VIDEOJS');\nvar createLogger$1 = log.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window$1.getComputedStyle === 'function') {\n var computedStyleValue = window$1.getComputedStyle(el);\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window$1.document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window$1.parent !== window$1.self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val) {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n var box;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = document.documentElement;\n var body = document.body;\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window$1.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window$1.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop; // Android sometimes returns slightly off decimal values, so need to round\n\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n // Protect against breakage in non-browser environments and check global autoSetup option.\n if (!isReal() || videojs.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n if (vjs) {\n videojs = vjs;\n }\n\n window$1.setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window$1.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window$1.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window$1.performance && window$1.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window$1.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped) {\n var old = event || window$1.event;\n event = {}; // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window$1.performance.now();\n\n var throttled = function throttled() {\n var now = window$1.performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window$1;\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window$1.clearTimeout(oldTimeout);\n var timeout = window$1.setTimeout(function () {\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n */\n\n\nvar validateTarget = function validateTarget(target) {\n if (!target.nodeName && !isEvented(target)) {\n throw new Error('Invalid target; must be a DOM node or evented object.');\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n */\n\n\nvar validateEventType = function validateEventType(type) {\n if (!isValidEventType(type)) {\n throw new Error('Invalid event type; must be a non-empty string or array.');\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n */\n\n\nvar validateListener = function validateListener(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Invalid listener; must be a function.');\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target);\n validateEventType(type);\n validateListener(listener); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n window$1.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase(str1) === toTitleCase(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions(result[key], value);\n });\n });\n return result;\n}\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n var SetSham;\n\n if (!window$1.Set) {\n SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto2 = SetSham.prototype;\n\n _proto2.has = function has(key) {\n return key in this.set_;\n };\n\n _proto2[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto2.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto2.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n }();\n }\n\n this.setTimeoutIds_ = window$1.Set ? new Set() : new SetSham();\n this.setIntervalIds_ = window$1.Set ? new Set() : new SetSham();\n this.rafIds_ = window$1.Set ? new Set() : new SetSham();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready); // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose() {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n if (DomData.has(this.el_)) {\n DomData[\"delete\"](this.el_);\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this.options_.playerOptions; // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n\n var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser.\n event.stopPropagation();\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window$1.performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window$1.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window$1.setTimeout(function () {\n if (_this2.setTimeoutIds_.has(timeoutId)) {\n _this2.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window$1.clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this3 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window$1.requestAnimationFrame(function () {\n if (_this3.rafIds_.has(id)) {\n _this3.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window$1.cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this4 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n _this4[idName].forEach(_this4[cancelName], _this4);\n });\n _this4.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent.prototype.supportsRaf_ = typeof window$1.requestAnimationFrame === 'function' && typeof window$1.cancelAnimationFrame === 'function';\nComponent.registerComponent('Component', Component);\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch);\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n label: options.label || '',\n language: options.language || ''\n };\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n\n return _this;\n }\n\n return Track;\n}(EventTarget);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document.createElement('a');\n a.href = url; // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div;\n\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = \"\";\n a = div.firstChild; // prevent the div from affecting layout\n\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n } // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window$1.location.protocol;\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = document.createElement('div');\n div.innerHTML = \"x\";\n url = div.firstChild.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window$1.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log.error(error);\n });\n\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window$1.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(_assertThisInitialized(_this), function () {\n // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n _this.tech_.ready(function () {\n _this.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n var _this2 = this;\n\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n if (mode !== 'disabled') {\n this.tech_.ready(function () {\n _this2.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n } else {\n this.tech_.off('timeupdate', timeupdateHandler);\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || default_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n\n\n var _proto = TextTrack.prototype;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window$1.vttjs && !(originalCue instanceof window$1.vttjs.VTTCue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link Flash} and {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this; // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/flash player doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window$1.WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to set a poster from a `Tech`.\n *\n * @abstract\n */\n ;\n\n _proto.setPoster = function setPoster() {}\n /**\n * A method to check for the presence of the 'playsinline'