{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/jquery/src/core.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/jquery/src/var/isFunction.js","webpack:///./node_modules/jquery/src/var/document.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jquery/src/selector.js","webpack:///./node_modules/jquery/src/core/init.js","webpack:///./node_modules/jquery/src/data/var/dataPriv.js","webpack:///./node_modules/jquery/src/core/nodeName.js","webpack:///./node_modules/jquery/src/var/rnothtmlwhite.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/jquery/src/var/support.js","webpack:///./node_modules/jquery/src/core/access.js","webpack:///./node_modules/jquery/src/ajax.js","webpack:///./node_modules/codemirror/addon/runmode/runmode.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/jquery/src/core/toType.js","webpack:///./node_modules/jquery/src/traversing.js","webpack:///./node_modules/jquery/src/deferred.js","webpack:///./node_modules/jquery/src/event.js","webpack:///./node_modules/jquery/src/var/arr.js","webpack:///./node_modules/jquery/src/var/isWindow.js","webpack:///./node_modules/jquery/src/core/camelCase.js","webpack:///./node_modules/jquery/src/css.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/jquery/src/var/slice.js","webpack:///./node_modules/jquery/src/var/class2type.js","webpack:///./node_modules/jquery/src/data/var/acceptData.js","webpack:///./node_modules/jquery/src/core/isAttached.js","webpack:///./node_modules/jquery/src/var/documentElement.js","webpack:///./node_modules/jquery/src/manipulation.js","webpack:///./node_modules/jquery/src/var/indexOf.js","webpack:///./node_modules/jquery/src/var/hasOwn.js","webpack:///./node_modules/jquery/src/callbacks.js","webpack:///./node_modules/jquery/src/queue.js","webpack:///./node_modules/jquery/src/effects.js","webpack:///./node_modules/jquery/src/var/rcssNum.js","webpack:///./node_modules/jquery/src/css/var/cssExpand.js","webpack:///./node_modules/jquery/src/var/rcheckableType.js","webpack:///./node_modules/jquery/src/css/var/rnumnonpx.js","webpack:///./node_modules/jquery/src/css/support.js","webpack:///./node_modules/jquery/src/attributes/support.js","webpack:///./node_modules/jquery/src/core/stripAndCollapse.js","webpack:///./node_modules/jquery/src/event/trigger.js","webpack:///./app/javascript/packs/cm.js","webpack:///./node_modules/codemirror/mode/yaml/yaml.js","webpack:///./node_modules/codemirror/mode/javascript/javascript.js","webpack:///./node_modules/codemirror/addon/runmode/colorize.js","webpack:///./app/javascript/packs/peml.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror/addon/mode/simple.js","webpack:///./node_modules/jquery/src/jquery.js","webpack:///./node_modules/jquery/src/var/getProto.js","webpack:///./node_modules/jquery/src/var/flat.js","webpack:///./node_modules/jquery/src/var/push.js","webpack:///./node_modules/jquery/src/var/toString.js","webpack:///./node_modules/jquery/src/var/fnToString.js","webpack:///./node_modules/jquery/src/core/DOMEval.js","webpack:///./node_modules/jquery/src/traversing/var/rneedsContext.js","webpack:///./node_modules/jquery/src/core/var/rsingleTag.js","webpack:///./node_modules/jquery/src/traversing/findFilter.js","webpack:///./node_modules/jquery/src/core/ready.js","webpack:///./node_modules/jquery/src/data/Data.js","webpack:///./node_modules/jquery/src/data/var/dataUser.js","webpack:///./node_modules/jquery/src/var/pnum.js","webpack:///./node_modules/jquery/src/css/var/isHiddenWithinTree.js","webpack:///./node_modules/jquery/src/css/adjustCSS.js","webpack:///./node_modules/jquery/src/manipulation/var/rtagName.js","webpack:///./node_modules/jquery/src/manipulation/var/rscriptType.js","webpack:///./node_modules/jquery/src/manipulation/wrapMap.js","webpack:///./node_modules/jquery/src/manipulation/support.js","webpack:///./node_modules/jquery/src/manipulation/getAll.js","webpack:///./node_modules/jquery/src/manipulation/setGlobalEval.js","webpack:///./node_modules/jquery/src/manipulation/buildFragment.js","webpack:///./node_modules/jquery/src/css/var/getStyles.js","webpack:///./node_modules/jquery/src/css/curCSS.js","webpack:///./node_modules/jquery/src/css/addGetHookIf.js","webpack:///./node_modules/jquery/src/css/finalPropName.js","webpack:///./node_modules/jquery/src/attributes/prop.js","webpack:///./node_modules/jquery/src/ajax/var/nonce.js","webpack:///./node_modules/jquery/src/ajax/var/rquery.js","webpack:///./node_modules/jquery/src/core/parseXML.js","webpack:///./node_modules/jquery/src/serialize.js","webpack:///./node_modules/jquery/src/core/parseHTML.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/jquery/src/var/ObjectFunctionString.js","webpack:///./node_modules/jquery/src/selector-sizzle.js","webpack:///./node_modules/jquery/external/sizzle/dist/sizzle.js","webpack:///./node_modules/jquery/src/traversing/var/dir.js","webpack:///./node_modules/jquery/src/traversing/var/siblings.js","webpack:///./node_modules/jquery/src/deferred/exceptionHook.js","webpack:///./node_modules/jquery/src/core/readyException.js","webpack:///./node_modules/jquery/src/data.js","webpack:///./node_modules/jquery/src/queue/delay.js","webpack:///./node_modules/jquery/src/css/showHide.js","webpack:///./node_modules/jquery/src/css/var/swap.js","webpack:///./node_modules/jquery/src/css/var/rboxStyle.js","webpack:///./node_modules/jquery/src/effects/Tween.js","webpack:///./node_modules/jquery/src/attributes.js","webpack:///./node_modules/jquery/src/attributes/attr.js","webpack:///./node_modules/jquery/src/attributes/classes.js","webpack:///./node_modules/jquery/src/attributes/val.js","webpack:///./node_modules/jquery/src/event/focusin.js","webpack:///./node_modules/jquery/src/event/support.js","webpack:///./node_modules/jquery/src/manipulation/_evalUrl.js","webpack:///./node_modules/jquery/src/ajax/var/location.js","webpack:///./node_modules/jquery/src/wrap.js","webpack:///./node_modules/jquery/src/css/hiddenVisibleSelectors.js","webpack:///./node_modules/jquery/src/ajax/xhr.js","webpack:///./node_modules/jquery/src/ajax/script.js","webpack:///./node_modules/jquery/src/ajax/jsonp.js","webpack:///./node_modules/jquery/src/ajax/load.js","webpack:///./node_modules/jquery/src/core/support.js","webpack:///./node_modules/jquery/src/effects/animatedSelector.js","webpack:///./node_modules/jquery/src/offset.js","webpack:///./node_modules/jquery/src/dimensions.js","webpack:///./node_modules/jquery/src/deprecated.js","webpack:///./node_modules/jquery/src/deprecated/ajax-event-alias.js","webpack:///./node_modules/jquery/src/deprecated/event.js","webpack:///./node_modules/jquery/src/exports/amd.js","webpack:///./node_modules/jquery/src/exports/global.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///(webpack)/buildin/global.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","factory","_typeof","iterator","obj","constructor","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","node","current","className","after","slice","index","length","removeChildren","e","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","content","style","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","a","b","as","split","createRange","start","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","f","args","Array","arguments","apply","copyObj","target","overwrite","prop","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","this","id","time","handler","onTimeout","array","self","Date","setTimeout","set","ms","clearTimeout","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","push","lst","arr","map","out","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","bidiOther","getBidiPartAt","order","sticky","found","cur","bidiOrdering","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","len","types","i$1","prev","type","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","splice","nstart","unshift","reverse","getOrder","line","text","noHandlers","on","emitter","addEventListener","attachEvent","_handlers","concat","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","dependencies","resolveMode","spec","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","Error","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","_lineAtHeight","h","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","_clipPos","last","linelen","clipToLen","clipPosArray","eol","sol","peek","undefined","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","_heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","data","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","_charCoords","_cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","_coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","_startOperation","op","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","_endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","nodeName","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","_replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","_markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","clipPos","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","replaceRange","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","markText","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","145","173","186","187","188","189","190","191","192","219","220","221","222","224","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","charCoords","coordsChar","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","cursorCoords","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","getField","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","_findPosH","origDir","lineDir","moveOnce","boundToLine","astral","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","moveVisually","sawType","getHelper","hitSide","_findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","screenReaderLabelChanged","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","close","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","lineAtHeight","heightAtLine","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","rtlMoveVisually","findPosV","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","startOperation","endOperation","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","version","getProto","_slice","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","DOMEval","toType","jQuery","selector","fn","isArrayLike","jquery","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","elem","eq","even","grep","_elem","odd","copyIsArray","clone","deep","isPlainObject","isArray","expando","random","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","nonce","makeArray","results","inArray","second","matches","callbackExpect","arg","guid","_i","webpackPolyfill","deprecate","paths","item","global","noGlobal","getPrototypeOf","preservedScriptAttributes","noModule","script","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByTagName","qsa","testContext","scope","toSelector","querySelectorAll","qsaError","cacheLength","markFunction","assert","el","addHandle","attrs","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","expr","elements","specified","uniqueSort","duplicates","detectDuplicates","sortStable","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","href","checked","selectedIndex","_matchIndexes","radio","checkbox","password","image","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","_dir","until","truncate","is","_siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","locked","fireWith","fired","Deferred","tuples","_state","_promise","always","deferred","pipe","fns","newDefer","tuple","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","catch","readyWait","wait","readyState","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","_data","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","values","hide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","buildFragment","scripts","ignored","attached","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","_on","one","origFn","leverageNative","notAsync","isTrigger","delegateType","stopImmediatePropagation","trigger","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","writable","load","noBubble","click","beforeunload","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","bubbles","cancelable","changedTouches","eventPhase","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","rnumnonpx","getStyles","opener","swap","rboxStyle","curCSS","computed","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","extra","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","prefix","suffix","expand","expanded","propHooks","run","percent","eased","duration","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","parentOffset","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","$","noConflict","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","config","htmlMode","inText","chain","parser","inBlock","doctype","inTag","quote","closure","baseState","tagName","tagStart","isInAttribute","stringStartCol","terminator","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","textAfter","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","blockCommentStart","blockCommentEnd","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","cx","modespec","ie_lt9","overlayMode","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","overlayToken","cmCfg","modeCfg","htmlModeMissing","highlightFormatting","maxBlockquoteDepth","taskLists","strikethrough","emoji","fencedCodeBlockHighlighting","fencedCodeBlockDefaultMode","tokenTypeOverrides","tokenTypes","header","list1","list2","list3","hr","imageAltText","imageMarker","formatting","linkInline","linkEmail","linkText","linkHref","em","strong","tokenType","hrRE","listRE","taskListRE","atxHeaderRE","allowAtxHeaderWithoutSpace","setextHeaderRE","textRE","fencedCodeRE","linkDefRE","punctuation","switchInline","inline","switchBlock","block","linkTitle","indentedCode","htmlBlock","exit","htmlState","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","firstTokenOnLine","prevLineLineIsEmpty","prevLineIsIndentedCode","prevLineIsHr","prevLineIsList","maxNonCodeIndentation","listStack","lineIndentation","indentationDiff","allowsInlineContinuation","fencedCodeEnd","isHr","getType","setext","listType","taskList","fencedEndRE","localMode","findModeByName","mimes","localState","local","footnoteLink","md_inside","returnType","currListInd","hasExitedList","maxFencedEndInd","taskOpen","taskClosed","listMod","handleText","matchCh","regex","previousFormatting","formattingEscape","atts","substring","leftFlanking","rightFlanking","setEm","setStrong","retType","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","closeBrackets","fold","modeInfo","alias","findModeByMIME","findModeByExtension","findModeByFileName","filename","dot","lastIndexOf","prepareReadOnlyViews","colorize","prepareEditor","cm1","codemirror","autoClearEmptyLines","matchBrackets","clearLineWidgets","editor","forEach","widgetType","pf","keywordRegex","esc","escaped","literal","keyCol","pair","pairStart","inlinePairs","inlineList","lineComment","parserConfig","statementIndent","jsonldMode","jsonld","jsonMode","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","atom","isOperatorChar","isJsonldKeyword","tp","cont","tokenBase","tokenComment","expressionAllowed","inSet","readRegexp","tokenQuasi","lexical","lastType","propertyIsEnumerable","maybeEnd","findFatArrow","fatArrowAt","arrow","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","vars","marked","cc","pass","inList","register","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","lex","poplex","expect","wanted","exp","statement","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","expression","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","targetNoComma","maybeTypeArgs","maybeTarget","continueQuasi","getterSetter","afterprop","maybetype","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","typeprop","functiondecl","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","basecolumn","parseJS","firstChar","isContinuedStatement","doubleIndentSwitch","blockCommentContinue","skipExpression","defaultMode","defineSimpleMode","backdrop","pemlOverlay","delimiter","urlRE","modeConfig","codeDepth","gfmOverlay","codeBlock","ateSpace","difference","gitHubSpice","markdownConfig","ensureState","states","toRegex","caret","flags","ignoreCase","Rule","asToken","tokenFunction","pending","pend","tok","endToken","endScan","curState","rule","enterLocalMode","dedent","pers","persistent","persistentStates","lState","forceEnd","indentFunction","meta","dontIndentStates","rules","dedentIfLineStart","simpleMode","states_","hasIndentation","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","Promise","called","scheduled","functionToCheck","getStyleComputedProperty","element","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","Node","DOCUMENT_POSITION_FOLLOWING","element1root","getScroll","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","instance","Constructor","createClass","defineProperties","descriptor","protoProps","staticProps","_extends","getClientRect","offsets","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","findIndex","enabled","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","passive","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","divider","splitRegex","mergeWithPrevious","reduce","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","_this","Utils","PopperUtils","require","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","cspNonce","Element","csrfParam","csrfToken","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","OPENED","accept","withCredentials","DONE","isCrossDomain","serializeElement","additionalParam","inputs","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","action","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","_sizzle","Turbolinks","supported","pushState","visit","controller","clearCache","setProgressBarDelay","copyObject","ELEMENT_NODE","throttle","u","initEvent","uuid","Location","absoluteURL","requestURL","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isPrefixedBy","isEqualTo","toCacheKey","toJSON","valueOf","_t","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","sent","notifyApplicationBeforeRequestStart","setProgress","requestStarted","lengthComputable","loaded","total","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","requestFinished","ProgressBar","trickle","_t2","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","installStylesheetElement","installProgressElement","startTrickling","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","trickleInterval","BrowserAdapter","showProgressBar","_t3","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","_t4","onPageLoad","onPopState","started","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","outerHTML","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","render","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","_t5","_t6","ErrorRenderer","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","_t7","scrollToElement","scrollToPosition","updatePosition","scrollPositionChanged","SnapshotCache","snapshots","put","write","Visit","performScroll","_t8","adapter","timingMetrics","recordTimingMetric","request","cancelRender","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTime","getTimingMetrics","snapshotCached","frame","_t9","Controller","clickBubbled","clickCaptured","scrollManager","startHistory","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","nodeIsVisitable","currentScript","hasAttribute","sparkMd5","createCommonjsModule","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","lo","hi","rhex","hex","toUtf8","unescape","hexToBinaryString","bytes","SparkMD5","ArrayBuffer","clamp","targetArray","sourceArray","byteLength","Uint8Array","appendBinary","_buff","_length","_hash","buff","_finish","getState","setState","hashBinary","returnUInt8Array","buffer","subarray","utf8Str2ArrayBuffer","md51_array","fileSlice","mozSlice","webkitSlice","FileChecksum","chunkCount","chunkIndex","md5Buffer","fileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","eventInit","toArray$1","BlobRecord","checksum","content_type","byte_size","requestDidLoad","requestDidError","stringify","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","methodName","_len","messages","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","alert","_this2","uploadRequestDidProgress","DirectUploadsController","controllers","createDirectUploadControllers","startNextController","submitButtonsByForm","WeakMap","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","delete","submitForm","ActiveStorage","channels","webpackEmptyContext","req","_defineProperties","_createClass","_defineProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","transitionEndEmulator","Util","TRANSITION_END","triggerTransitionEnd","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","emulateTransitionEnd","NAME","JQUERY_NO_CONFLICT","CLOSE","CLOSED","CLICK_DATA_API","ClassName","Alert","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","JQUERY_NO_CONFLICT$1","ClassName$1","Selector$1","Event$1","FOCUS_BLUR_DATA_API","Button","triggerChangeEvent","addAriaPressed","classList","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","keyboard","slide","pause","DefaultType","Direction","Event$2","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","ClassName$2","Selector$2","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","visibilityState","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","_this3","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","defaultInterval","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","Event$3","SHOW","SHOWN","HIDE","HIDDEN","ClassName$3","Dimension","Selector$3","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","$trigger","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Event$4","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","ClassName$4","Selector$4","AttachmentMap","Default$2","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","hideEvent","_getPlacement","$parentDropdown","_getOffset","popperConfig","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","JQUERY_NO_CONFLICT$5","Default$3","DefaultType$3","Event$5","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","ClassName$5","Selector$5","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","handleUpdate","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","isModalOverflowing","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","scrollbarWidth","_this10","uriAttrs","DefaultWhitelist","br","h1","h2","h3","h4","h5","h6","li","ol","small","sup","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","regExp","attrRegex","allowedAttribute","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","template","fallbackPlacement","sanitize","AttachmentMap$1","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HoverState","Event$6","INSERTED","FOCUSOUT","ClassName$6","Selector$6","Trigger","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","isWithContent","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_handlePopperPlacementChange","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","popperInstance","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","ClassName$7","Selector$7","Event$7","Popover","_Tooltip","subClass","superClass","__proto__","_getContent","CLASS_PREFIX$1","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","Event$8","ACTIVATE","SCROLL","ClassName$8","Selector$8","OffsetMethod","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","JQUERY_NO_CONFLICT$9","Event$9","ClassName$9","Selector$9","Tab","previous","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT$a","Event$a","ClassName$a","DefaultType$7","autohide","Default$7","Selector$a","Toast","withoutTimeout","_close","Scrollspy","Function"],"mappings":"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D,KAAM,UACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,4BACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,QAAS,YACf6yB,KAAM,qBACL,CACD36C,KAAM,eACNugG,MAAO,CAAC,+BAAgC,oBAAqB,uBAC7D3/F,KAAM,eACNknB,IAAK,CAAC,UACNy6E,MAAO,CAAC,SAAU,kBACjB,CACDviG,KAAM,cACN88D,KAAM,qBACNl8D,KAAM,aACNknB,IAAK,CAAC,KAAM,OAAQ,MACpBy6E,MAAO,CAAC,SACP,CACDviG,KAAM,SACN88D,KAAM,6BACNl8D,KAAM,SACNknB,IAAK,CAAC,MAAO,WACZ,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,MAAO,MAAO,QACnB,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,MACN88D,KAAM,WACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,MACN88D,KAAM,mBACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,IACN88D,KAAM,WACNl8D,KAAM,IACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,OACNugG,MAAO,CAAC,mBAAoB,eAC5B3/F,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,OAAQ,UACb,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,UACL,CACDZ,KAAM,aACN88D,KAAM,oBACNl8D,KAAM,aACN+5C,KAAM,gBACL,CACD36C,KAAM,MACN88D,KAAM,sBACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,QAAS,MAAO,SACrB,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,QACL,CACDZ,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,MACN88D,KAAM,kBACNl8D,KAAM,UACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,sBACN88D,KAAM,oBACNl8D,KAAM,eACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,gBACN88D,KAAM,oBACNl8D,KAAM,eACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,OACL,CACDZ,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,WACL,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,OACL,CACDZ,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,QAAS,MAAO,QACrB,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,IAAK,MAAO,MAAO,MAAO,QAC/B,CACD9nB,KAAM,KACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,WACP,CACDviG,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,YACL,CACD9nB,KAAM,2BACN88D,KAAM,aACNl8D,KAAM,MACN+5C,KAAM,wCACL,CACD36C,KAAM,KACN88D,KAAM,YACNl8D,KAAM,KACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,SAAU,UAChB6yB,KAAM,iBACL,CACD36C,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,qBACN88D,KAAM,0BACNl8D,KAAM,mBACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,UACN88D,KAAM,qBACNl8D,KAAM,eACNknB,IAAK,CAAC,QACNy6E,MAAO,CAAC,MAAO,SACd,CACDviG,KAAM,OACN88D,KAAM,YACNl8D,KAAM,YACNknB,IAAK,CAAC,OAAQ,MAAO,aAAc,OACnCy6E,MAAO,CAAC,UACP,CACDviG,KAAM,OACN88D,KAAM,eACNl8D,KAAM,QACL,CACDZ,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,OAAQ,OACdy6E,MAAO,CAAC,SACP,CACDviG,KAAM,OACN88D,KAAM,cACNl8D,KAAM,QACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,oBACN88D,KAAM,oBACNl8D,KAAM,eACNknB,IAAK,CAAC,OACNy6E,MAAO,CAAC,QACP,CACDviG,KAAM,aACNugG,MAAO,CAAC,kBAAmB,kBAAmB,yBAA0B,2BAA4B,0BACpG3/F,KAAM,aACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,aAAc,KAAM,SAC3B,CACDviG,KAAM,OACNugG,MAAO,CAAC,mBAAoB,sBAC5B3/F,KAAM,aACNknB,IAAK,CAAC,OAAQ,OACdy6E,MAAO,CAAC,UACP,CACDviG,KAAM,UACN88D,KAAM,sBACNl8D,KAAM,aACNknB,IAAK,CAAC,UACNy6E,MAAO,CAAC,WACP,CACDviG,KAAM,MACN88D,KAAM,WACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,cACNl8D,KAAM,SACNknB,IAAK,CAAC,KAAM,QAAS,WACpB,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,QACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,MACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,aACN88D,KAAM,oBACNl8D,KAAM,aACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,OACP,CACDviG,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,WACNknB,IAAK,CAAC,WAAY,KAAM,QACvB,CACD9nB,KAAM,OACN88D,KAAM,YACNl8D,KAAM,QACL,CACDZ,KAAM,cACN88D,KAAM,iBACNl8D,KAAM,OACL,CACDZ,KAAM,cACN88D,KAAM,qBACNl8D,KAAM,cACNknB,IAAK,CAAC,IAAK,KAAM,KAAM,QACtB,CACD9nB,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,WACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,eACNl8D,KAAM,OACL,CACDZ,KAAM,OACN88D,KAAM,mBACNl8D,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,OACL,CACDZ,KAAM,QACN88D,KAAM,oBACNl8D,KAAM,QACN+5C,KAAM,mBACL,CACD36C,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,MAAO,QACZ,CACD9nB,KAAM,WACNugG,MAAO,CAAC,wBAAyB,sBAAuB,kBACxD3/F,KAAM,WACNknB,IAAK,CAAC,KAAM,OACX,CACD9nB,KAAM,cACN88D,KAAM,oBACNl8D,KAAM,QACNknB,IAAK,CAAC,KACNy6E,MAAO,CAAC,cAAe,SACtB,CACDviG,KAAM,gBACN88D,KAAM,sBACNl8D,KAAM,QACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,gBAAiB,WACxB,CACDviG,KAAM,QACN88D,KAAM,eACNl8D,KAAM,SACNknB,IAAK,CAAC,KAAM,MAAO,MAAO,QACzB,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,KACN88D,KAAM,YACNl8D,KAAM,KACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,IAAK,QACV,CACD9nB,KAAM,SACN88D,KAAM,OACNl8D,KAAM,QACNknB,IAAK,CAAC,WACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,KAAM,OACX,CACD9nB,KAAM,MACNugG,MAAO,CAAC,aAAc,0BAA2B,gCACjD3/F,KAAM,MACNknB,IAAK,CAAC,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,UAC5C,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,aACN88D,KAAM,aACNl8D,KAAM,OACNknB,IAAK,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAC3C,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,aACN88D,KAAM,eACNl8D,KAAM,OACL,CACDZ,KAAM,aACN88D,KAAM,2BACNl8D,KAAM,aACNknB,IAAK,CAAC,MAAO,OAAQ,SACpB,CACD9nB,KAAM,mBACN88D,KAAM,oBACNl8D,KAAM,aACNknB,IAAK,CAAC,aAAc,MAAO,MAC3By6E,MAAO,CAAC,MAAO,eACd,CACDviG,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,WACNknB,IAAK,CAAC,UACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,QAAS,MAAO,KAAM,OAC5B6yB,KAAM,kBACL,CACD36C,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,IACN88D,KAAM,WACNl8D,KAAM,IACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,IACN88D,KAAM,cACNl8D,KAAM,IACNknB,IAAK,CAAC,IAAK,KACXy6E,MAAO,CAAC,YACP,CACDviG,KAAM,mBACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,OACNy6E,MAAO,CAAC,QACP,CACDviG,KAAM,cACN88D,KAAM,qBACNl8D,KAAM,OACL,CACDZ,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,MACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,QAAS,UAAW,OAAQ,KAAM,QACzC,CACDviG,KAAM,OACN88D,KAAM,iBACNl8D,KAAM,OACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,UACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,MAAO,OACZ,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,MACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,QACNugG,MAAO,CAAC,YAAa,oBACrB3/F,KAAM,QACNknB,IAAK,CAAC,KAAM,MAAO,QACnBy6E,MAAO,CAAC,OAAQ,KAAM,OACtB5nD,KAAM,cACL,CACD36C,KAAM,QACN88D,KAAM,oBACNl8D,KAAM,QACNknB,IAAK,CAAC,MAAO,UACZ,CACD9nB,KAAM,OACNugG,MAAO,CAAC,cAAe,sBACvB3/F,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,YACN88D,KAAM,eACNl8D,KAAM,YACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,QACL,CACDZ,KAAM,MACN88D,KAAM,aACNl8D,KAAM,SACNknB,IAAK,CAAC,MAAO,MAAO,MAAO,cAC1B,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,OACNy6E,MAAO,CAAC,qBACP,CACDviG,KAAM,SACN88D,KAAM,2BACNl8D,KAAM,SACNknB,IAAK,CAAC,KAAM,UACZy6E,MAAO,CAAC,WACP,CACDviG,KAAM,cACN88D,KAAM,qBACNl8D,KAAM,cACN2hG,MAAO,CAAC,QAAS,YAChB,CACDviG,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,gBACNl8D,KAAM,OACL,CACDZ,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,QACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,cACNl8D,KAAM,SACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,UACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,QACL,CACDZ,KAAM,QACN88D,KAAM,eACNl8D,KAAM,OACNknB,IAAK,CAAC,OAAQ,MAAO,OACrBy6E,MAAO,CAAC,QACP,CACDviG,KAAM,gBACN88D,KAAM,uBACNl8D,KAAM,UACNknB,IAAK,CAAC,IAAK,KAAM,QAChB,CACD9nB,KAAM,MACN88D,KAAM,aACNl8D,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,YACL,CACD9nB,KAAM,aACN88D,KAAM,oBACNl8D,KAAM,cACL,CACDZ,KAAM,YACN88D,KAAM,YACNl8D,KAAM,QACL,CACDZ,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,SACL,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,WACL,CACDZ,KAAM,QACN88D,KAAM,aACNl8D,KAAM,QACNknB,IAAK,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAC7C,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,OAAQ,QAAS,WACtB,CACD9nB,KAAM,WACN88D,KAAM,kBACNl8D,KAAM,WACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,SACN88D,KAAM,cACNl8D,KAAM,SACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,aACN88D,KAAM,yBACNl8D,KAAM,aACNknB,IAAK,CAAC,MACNy6E,MAAO,CAAC,OACP,CACDviG,KAAM,iBACN88D,KAAM,sBACNl8D,KAAM,MACNknB,IAAK,CAAC,OACNy6E,MAAO,CAAC,QACP,CACDviG,KAAM,OACN88D,KAAM,cACNl8D,KAAM,QACL,CACDZ,KAAM,UACN88D,KAAM,gBACNl8D,KAAM,SACNknB,IAAK,CAAC,WACL,CACD9nB,KAAM,SACN88D,KAAM,YACNl8D,KAAM,KACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,WACN88D,KAAM,gBACNl8D,KAAM,WACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,WACN88D,KAAM,gBACNl8D,KAAM,WACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,UACN88D,KAAM,iBACNl8D,KAAM,UACNknB,IAAK,CAAC,MACL,CACD9nB,KAAM,OACN88D,KAAM,cACNl8D,KAAM,OACNknB,IAAK,CAAC,MAAO,SACZ,CACD9nB,KAAM,mBACNugG,MAAO,CAAC,eAAgB,cACxB3/F,KAAM,MACNknB,IAAK,CAAC,QACL,CACD9nB,KAAM,MACNugG,MAAO,CAAC,kBAAmB,YAC3B3/F,KAAM,MACNknB,IAAK,CAAC,MAAO,MAAO,MAAO,OAC3By6E,MAAO,CAAC,MAAO,OAAQ,QACtB,CACDviG,KAAM,SACN88D,KAAM,qBACNl8D,KAAM,SACNknB,IAAK,CAAC,KAAM,WACX,CACD9nB,KAAM,QACN88D,KAAM,eACNl8D,KAAM,QACNknB,IAAK,CAAC,OACL,CACD9nB,KAAM,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","file":"js/application-a7716f00127bbf53da5b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 87);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.CodeMirror = factory());\n})(this, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function rmClass(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n var range;\n\n if (document.createRange) {\n range = function range(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function range(node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function selectInput(node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function selectInput(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function selectInput(node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function Delayed() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function toString() {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n } // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n } // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n\n\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n } // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n } // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\n } // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n } // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n } // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n } // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n } // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }(); // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function on(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n } // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200B\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200B\") : elt(\"span\", \"\\xA0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062EA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range;\n\n try {\n range = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range || range.parentElement() != te) {\n return false;\n }\n\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n } // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function StringStream(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function cased(str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function _lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n } // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function _clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = _clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function SavedContext(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function Context(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n }; // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n\n\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function loop(o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) {\n loop(o);\n }\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n } // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function Token(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = _clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n } // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n } // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n } // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n } // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n } // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n } // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n\n\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n } // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n } // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n } // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function _heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n } // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function Line(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n } // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n } // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n\n\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n } // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240D\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n } // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\xA0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n } // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = function loop(i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) {\n loop(i);\n }\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\n }\n } // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n } // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n } // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n } // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n } // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n } // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\n }\n } // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n } // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n\n if (lineObj.widgets) {\n for (var i = 0; i < lineObj.widgets.length; ++i) {\n if (lineObj.widgets[i].above) {\n height += widgetHeight(lineObj.widgets[i]);\n }\n }\n }\n\n return height;\n } // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = _heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function _charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n } // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n\n\n function _cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = _clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = _heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\n };\n } // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function _coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = _lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n } // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= _heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n } // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight;\n box.bottom += widgetHeight;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n } // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = _cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i],\n ltr = part.level != 1;\n return boxIsAfter(_cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n\n if (index > 0) {\n var ltr = part.level != 1;\n\n var start = _cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n } // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n } // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n } // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n\n var coords = _coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\n }\n }\n } // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range = doc.sel.ranges[i];\n\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range.empty();\n\n if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\n function drawSelectionCursor(cm, head, output) {\n var pos = _cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return _charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop];\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range.from(),\n sTo = range.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n\n if (!cm.state.focused) {\n onFocus(cm);\n }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n\n if (cm.state.focused) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n } // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = _lineAtHeight(doc, top),\n to = _lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200B\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n } // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n\n var coords = _cursorCoords(cm, pos);\n\n var endCoords = !end || end == pos ? coords : _cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n } // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n } // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n\n\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n var NativeScrollbars = function NativeScrollbars(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\n\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function NullScrollbars() {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n } // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n\n var nextOpId = 0; // Start a new operation.\n\n function _startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function _endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, _clipPos(doc, op.scrollToPos.from), _clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n _startOperation(cm);\n\n try {\n return f();\n } finally {\n _endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n } // DISPLAY DRAWING\n\n\n var DisplayUpdate = function DisplayUpdate(cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n } // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = _heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n } // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n } // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n } // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n } // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n } // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n } // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n\n\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n } // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n\n\n var Selection = function Selection(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function Range(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n } // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = [];\n this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n } // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n } // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n } // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\n } // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n }\n }\n }\n }\n }\n\n return copy;\n } // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function update(ranges) {\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(_clipPos(doc, ranges[i].anchor), _clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n } // Set a new selection.\n\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return _clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function cancel() {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = _clipPos(doc, from);\n }\n\n if (to) {\n obj.to = _clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n } // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function loop(i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop(i$1);\n if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function _replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n } // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n } // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n } // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function removeInner(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function collapse(lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function insertInner(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function iterN(at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.size;\n },\n removeInner: function removeInner(at, n) {\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function collapse(lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function insertInner(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function maybeSpill() {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function iterN(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function LineWidget(doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (_heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = _heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n\n\n var nextMarkerId = 0;\n\n var TextMarker = function TextMarker(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n _startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n _endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n }; // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\n function _markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, _markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null));\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function SharedTextMarker(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [_markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(_markText(doc, _clipPos(doc, from), _clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = _markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function loop(i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) {\n loop(i);\n }\n }\n\n var nextDocId = 0;\n\n var Doc = function Doc(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function iter(from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function insert(at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function remove(at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function getValue(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function replaceRange(code, from, to, origin) {\n from = _clipPos(this, from);\n to = to ? _clipPos(this, to) : from;\n\n _replaceRange(this, code, from, to, origin);\n },\n getRange: function getRange(from, to, lineSep) {\n var lines = getBetween(this, _clipPos(this, from), _clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function getLine(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function getLineHandle(line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function getLineNumber(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function getLineHandleVisualStart(line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function lineCount() {\n return this.size;\n },\n firstLine: function firstLine() {\n return this.first;\n },\n lastLine: function lastLine() {\n return this.first + this.size - 1;\n },\n clipPos: function clipPos(pos) {\n return _clipPos(this, pos);\n },\n getCursor: function getCursor(start) {\n var range = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\n\n return pos;\n },\n listSelections: function listSelections() {\n return this.sel.ranges;\n },\n somethingSelected: function somethingSelected() {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, _clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, _clipPos(this, anchor), _clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, _clipPos(this, head), other && _clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(_clipPos(this, ranges[i].anchor), _clipPos(this, ranges[i].head));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(_clipPos(this, anchor), _clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function getSelection(lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function getSelections(lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function replaceSelection(code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function setExtending(val) {\n this.extend = val;\n },\n getExtending: function getExtending() {\n return this.extend;\n },\n historySize: function historySize() {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function clearHistory() {\n var this$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function (doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function markClean() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function changeGeneration(forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function isClean(gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function getHistory() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function setHistory(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function lineInfo(line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function removeLineWidget(widget) {\n widget.clear();\n },\n markText: function markText(from, to, options) {\n return _markText(this, _clipPos(this, from), _clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function setBookmark(pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = _clipPos(this, pos);\n return _markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function findMarksAt(pos) {\n pos = _clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function findMarks(from, to, filter) {\n from = _clipPos(this, from);\n to = _clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo;\n });\n return found;\n },\n getAllMarks: function getAllMarks() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function posFromIndex(off) {\n var ch,\n lineNo = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo;\n });\n return _clipPos(this, Pos(lineNo, ch));\n },\n indexFromPos: function indexFromPos(coords) {\n coords = _clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function copy(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function linkedDoc(options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function unlinkDoc(other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function iterLinkedDocs(f) {\n linkedDocs(this, f);\n },\n getMode: function getMode() {\n return this.mode;\n },\n getEditor: function getEditor() {\n return this.cm;\n },\n splitLines: function splitLines(str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function lineSeparator() {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = function markAsReadAndPasteIfAllFilesAreRead() {\n if (++read == n) {\n operation(cm, function () {\n pos = _clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(_clipPos(cm.doc, pos), _clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n\n var readTextFromFile = function readTextFromFile(file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n };\n\n for (var i = 0; i < files.length; i++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n _replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n } // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n }); // When the window loses focus, we want to show the editor as blurred\n\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n }; // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\",\n \"Alt-B\": \"goWordLeft\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\n }\n\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n\n var mv = function mv(pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function getWrappedLineExtent(ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\n\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function searchInVisualLine(partPos, dir, wrappedLineExtent) {\n var getRes = function getRes(ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = dir > 0 == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function singleSelection(cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function killLine(cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function deleteLine(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: _clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function delLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function delWrappedLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function delWrappedLineRight(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function undo(cm) {\n return cm.undo();\n },\n redo: function redo(cm) {\n return cm.redo();\n },\n undoSelection: function undoSelection(cm) {\n return cm.undoSelection();\n },\n redoSelection: function redoSelection(cm) {\n return cm.redoSelection();\n },\n goDocStart: function goDocStart(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function goDocEnd(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function goLineStart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function goLineStartSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function goLineEnd(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function goLineRight(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function goLineLeft(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function goLineLeftSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function goLineUp(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function goLineDown(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function goPageUp(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function goPageDown(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function goCharLeft(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function goCharRight(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function goColumnLeft(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function goColumnRight(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function goWordLeft(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function goGroupRight(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function goGroupLeft(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function goWordRight(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function delCharBefore(cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function delCharAfter(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function delWordBefore(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function delWordAfter(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function delGroupBefore(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function delGroupAfter(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function indentAuto(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function indentMore(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function indentLess(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function insertTab(cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function insertSoftTab(cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function defaultTab(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function transposeChars(cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function newlineAndIndent(cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function openLine(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function toggleOverwrite(cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function PastClick(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n } // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n } // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n\n\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function mouseMove(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function dragStart() {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n return display.input.focus();\n }, 20); // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(_clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n } // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n\n\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = _lineAtHeight(cm.doc, mY);\n\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n } // CONTEXT MENU HANDLING\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function toString() {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\n\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === '' ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n _startOperation(this);\n\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) {\n onFocus(this$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\n\n _endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n } // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function enter(e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function over(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function start(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function leave(e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\n }; // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n _replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n } // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n\n if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function focus() {\n window.focus();\n this.display.input.focus();\n },\n setOption: function setOption(option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function getOption(option) {\n return this.options[option];\n },\n getDoc: function getDoc() {\n return this.doc;\n },\n addKeyMap: function addKeyMap(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function removeKeyMap(map) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (!range.empty()) {\n var from = range.from(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n\n if (i == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function getTokenAt(pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function getLineTokens(line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function getTokenTypeAt(pos) {\n pos = _clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function getModeAt(pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function getHelper(pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function getHelpers(pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function getStateAfter(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function cursorCoords(start, mode) {\n var pos,\n range = this.doc.sel.primary();\n\n if (start == null) {\n pos = range.head;\n } else if (_typeof(start) == \"object\") {\n pos = _clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\n\n return _cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function charCoords(pos, mode) {\n return _charCoords(this, _clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function coordsChar(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return _coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function lineAtHeight(height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return _lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function heightAtLine(line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - _heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function defaultTextHeight() {\n return textHeight(this.display);\n },\n defaultCharWidth: function defaultCharWidth() {\n return charWidth(this.display);\n },\n getViewport: function getViewport() {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function addWidget(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = _cursorCoords(this, _clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function execCommand(cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function findPosH(from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = _findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n return _findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = _findPosH(doc, range.head, dir, unit, false);\n\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function findPosV(from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = _cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = _findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n\n var headPos = _cursorCoords(this$1, range.head, \"div\");\n\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n\n goals.push(headPos.left);\n\n var pos = _findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, _charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function findWordAt(pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function toggleOverwrite(value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function hasFocus() {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function isReadOnly() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function getScrollInfo() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n\n if (!range.to) {\n range.to = range.from;\n }\n\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function interpret(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function operation(f) {\n return runInOp(this, f);\n },\n startOperation: function startOperation() {\n return _startOperation(this);\n },\n endOperation: function endOperation() {\n return _endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function phrase(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function getInputField() {\n return this.display.input.getField();\n },\n getWrapperElement: function getWrapperElement() {\n return this.display.wrapper;\n },\n getScrollerElement: function getScrollerElement() {\n return this.display.scroller;\n },\n getGutterElement: function getGutterElement() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n\n\n function _findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n } // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function _findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = _coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function ContentEditableInput(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n\n return false;\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = document.activeElement == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || document.activeElement != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n\n if (this.selectionInEditor()) {\n this.pollSelection();\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n } // Try to move start of change to start of selection if ambiguous\n\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n _replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function TextareaInput(cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = _cursorCoords(cm, doc.sel.primary().head, \"div\");\n\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n }; // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\n }; // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n } // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200B\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200B\" + (selected ? te.value : \"\");\n te.value = \"\\u21DA\"; // Used to catch context-menu undo\n\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200B\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function poll() {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200B\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function mouseup() {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n } // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n }; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function token(stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.59.4\";\n return CodeMirror;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\ndefine([\"./var/arr\", \"./var/getProto\", \"./var/slice\", \"./var/flat\", \"./var/push\", \"./var/indexOf\", \"./var/class2type\", \"./var/toString\", \"./var/hasOwn\", \"./var/fnToString\", \"./var/ObjectFunctionString\", \"./var/support\", \"./var/isFunction\", \"./var/isWindow\", \"./core/DOMEval\", \"./core/toType\"], function (arr, getProto, _slice, flat, push, indexOf, class2type, toString, hasOwn, fnToString, ObjectFunctionString, support, isFunction, isWindow, DOMEval, toType) {\n \"use strict\";\n\n var version = \"3.6.0\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n return jQuery;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","define(function () {\n \"use strict\";\n\n return function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n});","define(function () {\n \"use strict\";\n\n return window.document;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(obj);\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.6.0\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function funescape(escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ? // Strip the backslash prefix from a non-hex escape sequence\n nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\n }\n }\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\n };\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n\n\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input; // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n\n docElem.appendChild(el).innerHTML = \"\" + \"\"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n\n\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"\" + \"\"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n return a == document ? -1 : b == document ? 1 :\n /* eslint-enable eqeqeq */\n aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :\n /* eslint-enable eqeqeq */\n 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n /* eslint-disable max-len */\n\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n /* eslint-enable max-len */\n };\n },\n \"CHILD\": function CHILD(type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ( // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\n };\n /**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \"\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, _name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function pipe()\n /* fnDone, fnFail, fnProgress */\n {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n _typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n\n return primary.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (#9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces \";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (#13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\", \"
\"],\n col: [2, \"\", \"
\"],\n tr: [2, \"\", \"
\"],\n td: [3, \"\", \"
\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"\"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous, except when they are no-op.\n // So expect focus to be synchronous when the element is already active,\n // and blur to be synchronous when the element is not already active.\n // (focus and blur are always synchronous in other supported browsers,\n // this just defines when we can count on it).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault(); // Support: Chrome 86+\n // In Chrome, if an element having a focusout handler is blurred by\n // clicking outside of it, it invokes the handler synchronously. If\n // that handler calls `.remove()` on the element, the data is cleared,\n // leaving `result` undefined. We need to guard against this.\n\n return result && result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n // Suppress native focus or blur as it's already being fired\n // in leverageNative.\n _default: function _default() {\n return true;\n },\n delegateType: delegateType\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function _remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function htmlPrefilter(html) {\n return html;\n },\n clone: function clone(elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function cleanData(elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function detach(selector) {\n return _remove(this, selector, true);\n },\n remove: function remove(selector) {\n return _remove(this, selector);\n },\n text: function text(value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function append() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function prepend() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function before() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function after() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function empty() {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function clone(dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function html(value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function replaceWith() {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n\n var getStyles = function getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var swap = function swap(elem, options, callback) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.call(elem); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (#8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function boxSizingReliable() {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function pixelBoxStyles() {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function pixelPosition() {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function reliableMarginLeft() {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function scrollboxSize() {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function reliableTrDimensions() {\n var table, tr, trChild, trStyle;\n\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"border:1px solid\"; // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\"; // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is display: block\n // gets around this issue.\n\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n\n return reliableTrDimensionsVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, #12537)\n // .css('--customProperty) (#3144)\n\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name];\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function get() {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n\n if (final) {\n return final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n rcustomProp = /^--/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n if (box === \"margin\") {\n delta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n\n\n if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") || // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" || // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function get(elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"gridArea\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnStart\": true,\n \"gridRow\": true,\n \"gridRowEnd\": true,\n \"gridRowStart\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function style(elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = _typeof(value); // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug #9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (#7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function css(elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function get(elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && ( // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function set(elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function expand(value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function css(name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function init(elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function cur() {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function run(percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function get(tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function set(tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function set(tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function linear(p) {\n return p;\n },\n swing: function swing(p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function tick() {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function createTween(prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function stop(gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function tweener(props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function prefilter(callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && _typeof(speed) === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function fadeTo(speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function animate(prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function doAnimation() {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function stop(type, clearQueue, gotoEnd) {\n var stopQueue = function stopQueue(hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function finish(type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n }; // Based off of the plugin by Clint Helfers, with permission.\n // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function attr(name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function attr(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function set(elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function removeAttr(elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function set(elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function prop(name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function removeProp(name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function prop(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function get(elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n }); // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function get(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function set(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function addClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n removeClass: function removeClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem); // This expression is here for better compressibility (see addClass)\n\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n toggleClass: function toggleClass(value, stateVal) {\n var type = _typeof(value),\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n return this.each(function () {\n var className, i, self, classNames;\n\n if (isValidValue) {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = classesToArray(value);\n\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function hasClass(selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function val(value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function get(elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function get(elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (#2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function set(elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function set(elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n support.focusin = \"onfocusin\" in window;\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function stopPropagationCallback(e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function trigger(event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function simulate(type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function trigger(type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function triggerHandler(type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n }); // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function handler(event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n\n jQuery.event.special[fix] = {\n setup: function setup() {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix);\n\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function teardown() {\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix) - 1;\n\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n\n return xml;\n };\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (_typeof(v) === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function add(key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function serialize() {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function serializeArray() {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes #9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\n }\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function ajaxSetup(target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function ajax(url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (_typeof(url) === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n _statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function getResponseHeader(key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function getAllResponseHeaders() {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function setRequestHeader(name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function overrideMimeType(type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function statusCode(map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n _statusCode[code] = [_statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function abort(statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket #12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // #9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Use a noop converter for missing script but not if jsonp\n\n\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(_statusCode);\n _statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function getJSON(url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function getScript(url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function textScript() {}\n },\n dataFilter: function dataFilter(response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function wrapAll(html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function wrapInner(html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function wrap(html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function unwrap(selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function send(headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n _callback = function callback(type) {\n return function () {\n if (_callback) {\n _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = _callback();\n errorCallback = xhr.onerror = xhr.ontimeout = _callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (_callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n _callback = _callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (_callback) {\n throw e;\n }\n }\n },\n abort: function abort() {\n if (_callback) {\n _callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function textScript(text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, _callback2;\n\n return {\n send: function send(_, complete) {\n script = jQuery(\"